fauxqs 0.6.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -3
- package/dist/app.d.ts +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +14 -0
- package/dist/app.js.map +1 -1
- package/dist/common/errors.d.ts +2 -2
- package/dist/common/errors.d.ts.map +1 -1
- package/dist/common/errors.js +3 -3
- package/dist/common/errors.js.map +1 -1
- package/dist/localhost.d.ts +40 -0
- package/dist/localhost.d.ts.map +1 -0
- package/dist/localhost.js +72 -0
- package/dist/localhost.js.map +1 -0
- package/dist/s3/actions/createBucket.d.ts +1 -1
- package/dist/s3/actions/deleteObject.d.ts +1 -1
- package/dist/s3/actions/deleteObjects.d.ts +1 -1
- package/dist/s3/actions/getObject.d.ts +1 -1
- package/dist/s3/actions/headBucket.d.ts +1 -1
- package/dist/s3/actions/headObject.d.ts +1 -1
- package/dist/s3/actions/listObjects.d.ts +1 -1
- package/dist/s3/actions/putObject.d.ts +1 -1
- package/dist/s3/s3Router.d.ts +1 -1
- package/dist/s3/s3Store.d.ts +1 -1
- package/dist/sns/actions/confirmSubscription.d.ts +1 -1
- package/dist/sns/actions/createTopic.d.ts +1 -1
- package/dist/sns/actions/createTopic.js +1 -1
- package/dist/sns/actions/createTopic.js.map +1 -1
- package/dist/sns/actions/deleteTopic.d.ts +1 -1
- package/dist/sns/actions/getSubscriptionAttributes.d.ts +1 -1
- package/dist/sns/actions/getSubscriptionAttributes.d.ts.map +1 -1
- package/dist/sns/actions/getSubscriptionAttributes.js +1 -0
- package/dist/sns/actions/getSubscriptionAttributes.js.map +1 -1
- package/dist/sns/actions/getTopicAttributes.d.ts +1 -1
- package/dist/sns/actions/listSubscriptions.d.ts +1 -1
- package/dist/sns/actions/listSubscriptions.js +6 -6
- package/dist/sns/actions/listTopics.d.ts +1 -1
- package/dist/sns/actions/publish.d.ts +2 -2
- package/dist/sns/actions/publish.d.ts.map +1 -1
- package/dist/sns/actions/publish.js +26 -16
- package/dist/sns/actions/publish.js.map +1 -1
- package/dist/sns/actions/setSubscriptionAttributes.d.ts +1 -1
- package/dist/sns/actions/setTopicAttributes.d.ts +1 -1
- package/dist/sns/actions/subscribe.d.ts +1 -1
- package/dist/sns/actions/tagResource.d.ts +1 -1
- package/dist/sns/actions/unsubscribe.d.ts +1 -1
- package/dist/sns/filter.d.ts +6 -1
- package/dist/sns/filter.d.ts.map +1 -1
- package/dist/sns/filter.js +15 -6
- package/dist/sns/filter.js.map +1 -1
- package/dist/sns/snsRouter.d.ts +3 -3
- package/dist/sns/snsRouter.d.ts.map +1 -1
- package/dist/sns/snsRouter.js +1 -1
- 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 +36 -1
- package/dist/sns/snsStore.js.map +1 -1
- package/dist/sqs/actions/changeMessageVisibility.d.ts +1 -1
- package/dist/sqs/actions/changeMessageVisibilityBatch.d.ts +1 -1
- package/dist/sqs/actions/createQueue.d.ts +1 -1
- package/dist/sqs/actions/deleteMessage.d.ts +1 -1
- package/dist/sqs/actions/deleteMessageBatch.d.ts +1 -1
- package/dist/sqs/actions/deleteQueue.d.ts +1 -1
- package/dist/sqs/actions/getQueueAttributes.d.ts +1 -1
- package/dist/sqs/actions/getQueueUrl.d.ts +1 -1
- package/dist/sqs/actions/listQueueTags.d.ts +1 -1
- package/dist/sqs/actions/listQueues.d.ts +1 -1
- package/dist/sqs/actions/purgeQueue.d.ts +1 -1
- package/dist/sqs/actions/receiveMessage.d.ts +1 -1
- package/dist/sqs/actions/receiveMessage.d.ts.map +1 -1
- package/dist/sqs/actions/receiveMessage.js +4 -2
- package/dist/sqs/actions/receiveMessage.js.map +1 -1
- package/dist/sqs/actions/sendMessage.d.ts +1 -1
- package/dist/sqs/actions/sendMessage.d.ts.map +1 -1
- package/dist/sqs/actions/sendMessage.js +5 -4
- package/dist/sqs/actions/sendMessage.js.map +1 -1
- package/dist/sqs/actions/sendMessageBatch.d.ts +1 -1
- package/dist/sqs/actions/sendMessageBatch.d.ts.map +1 -1
- package/dist/sqs/actions/sendMessageBatch.js +5 -4
- package/dist/sqs/actions/sendMessageBatch.js.map +1 -1
- package/dist/sqs/actions/setQueueAttributes.d.ts +1 -1
- package/dist/sqs/actions/tagQueue.d.ts +1 -1
- package/dist/sqs/actions/untagQueue.d.ts +1 -1
- package/dist/sqs/sqsRouter.d.ts +2 -2
- package/dist/sqs/sqsRouter.d.ts.map +1 -1
- package/dist/sqs/sqsRouter.js +1 -1
- package/dist/sqs/sqsRouter.js.map +1 -1
- package/dist/sqs/sqsStore.d.ts +2 -1
- package/dist/sqs/sqsStore.d.ts.map +1 -1
- package/dist/sqs/sqsStore.js +15 -8
- package/dist/sqs/sqsStore.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# fauxqs
|
|
2
2
|
|
|
3
|
-
Local SNS/SQS/S3 emulator for development and testing. Point your `@aws-sdk/client-sqs`, `@aws-sdk/client-sns`, and `@aws-sdk/client-s3` clients at fauxqs instead of real AWS
|
|
3
|
+
Local SNS/SQS/S3 emulator for development and testing. Point your `@aws-sdk/client-sqs`, `@aws-sdk/client-sns`, and `@aws-sdk/client-s3` clients at fauxqs instead of real AWS.
|
|
4
4
|
|
|
5
5
|
All state is in-memory. No persistence, no external storage dependencies.
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ npm install fauxqs
|
|
|
18
18
|
npx fauxqs
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
The server starts on port `4566`
|
|
21
|
+
The server starts on port `4566` and handles SQS, SNS, and S3 on a single endpoint.
|
|
22
22
|
|
|
23
23
|
Override the port with the `FAUXQS_PORT` environment variable:
|
|
24
24
|
|
|
@@ -195,6 +195,8 @@ Returns a mock identity with account `000000000000` and ARN `arn:aws:iam::000000
|
|
|
195
195
|
- **Filter policies** — both `MessageAttributes` and `MessageBody` scope, supporting exact match, prefix, suffix, anything-but, numeric ranges, and exists
|
|
196
196
|
- **Raw message delivery** — configurable per subscription
|
|
197
197
|
- **Message size validation** — rejects messages exceeding 256 KB (262,144 bytes)
|
|
198
|
+
- **Topic idempotency with conflict detection** — `CreateTopic` returns the existing topic when called with the same name and tags, but throws when tags differ
|
|
199
|
+
- **Subscription idempotency with conflict detection** — `Subscribe` returns the existing subscription when the same (topic, protocol, endpoint) combination is used with matching attributes, but throws when attributes differ
|
|
198
200
|
- **Topic and subscription tags**
|
|
199
201
|
- **FIFO topics** — `.fifo` suffix enforcement, `MessageGroupId` and `MessageDeduplicationId` passthrough to SQS subscriptions, content-based deduplication
|
|
200
202
|
- **Batch publish**
|
|
@@ -205,7 +207,70 @@ Returns a mock identity with account `000000000000` and ARN `arn:aws:iam::000000
|
|
|
205
207
|
- **Object operations** — PutObject, GetObject, DeleteObject, HeadObject with ETag, Content-Type, and Last-Modified headers
|
|
206
208
|
- **Bulk delete** — DeleteObjects for batch key deletion
|
|
207
209
|
- **Keys with slashes** — full support for slash-delimited keys (e.g., `path/to/file.txt`)
|
|
208
|
-
- **
|
|
210
|
+
- **Stream uploads** — handles AWS chunked transfer encoding (`Content-Encoding: aws-chunked`) for stream bodies
|
|
211
|
+
- **Path-style and virtual-hosted-style** — both S3 URL styles are supported (see below)
|
|
212
|
+
|
|
213
|
+
### S3 URL styles
|
|
214
|
+
|
|
215
|
+
**Path-style** (recommended for local development):
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
const s3 = new S3Client({
|
|
219
|
+
endpoint: "http://localhost:4566",
|
|
220
|
+
forcePathStyle: true,
|
|
221
|
+
// ...
|
|
222
|
+
});
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Virtual-hosted-style** (bucket name in `Host` header):
|
|
226
|
+
|
|
227
|
+
The server automatically extracts the bucket name from the `Host` header when it contains subdomains (e.g., `my-bucket.s3.localhost:4566`). This is useful for compatibility with libraries that don't set `forcePathStyle: true`.
|
|
228
|
+
|
|
229
|
+
Virtual-hosted-style requires `*.localhost` to resolve to `127.0.0.1`. fauxqs provides two helpers for this — pick whichever fits your use case:
|
|
230
|
+
|
|
231
|
+
#### Option 1: `createLocalhostHandler()` (per-client, no side effects)
|
|
232
|
+
|
|
233
|
+
Creates an HTTP request handler that resolves all hostnames to `127.0.0.1`. Scoped to a single client instance.
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
import { S3Client } from "@aws-sdk/client-s3";
|
|
237
|
+
import { createLocalhostHandler } from "fauxqs";
|
|
238
|
+
|
|
239
|
+
const s3 = new S3Client({
|
|
240
|
+
endpoint: "http://s3.localhost:4566",
|
|
241
|
+
region: "us-east-1",
|
|
242
|
+
credentials: { accessKeyId: "test", secretAccessKey: "test" },
|
|
243
|
+
requestHandler: createLocalhostHandler(),
|
|
244
|
+
// no forcePathStyle needed
|
|
245
|
+
});
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Tradeoffs:** Requires one extra option (`requestHandler`) on each S3 client. Only affects the client it's attached to — safe for production code and tests alike.
|
|
249
|
+
|
|
250
|
+
#### Option 2: `interceptLocalhostDns()` (global, fully transparent)
|
|
251
|
+
|
|
252
|
+
Patches Node.js `dns.lookup` so that any hostname ending in `.localhost` resolves to `127.0.0.1`. No client changes needed.
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
import { interceptLocalhostDns } from "fauxqs";
|
|
256
|
+
|
|
257
|
+
const restore = interceptLocalhostDns();
|
|
258
|
+
|
|
259
|
+
// S3 clients work without forcePathStyle or custom requestHandler
|
|
260
|
+
const s3 = new S3Client({
|
|
261
|
+
endpoint: "http://s3.localhost:4566",
|
|
262
|
+
region: "us-east-1",
|
|
263
|
+
credentials: { accessKeyId: "test", secretAccessKey: "test" },
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// When done (e.g., in afterAll):
|
|
267
|
+
restore();
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
The suffix is configurable: `interceptLocalhostDns("myhost.test")` matches `*.myhost.test`.
|
|
271
|
+
|
|
272
|
+
**Tradeoffs:** Affects all DNS lookups in the process. Best suited for test suites (`beforeAll` / `afterAll`). Not recommended for production code.
|
|
273
|
+
|
|
209
274
|
|
|
210
275
|
## Conventions
|
|
211
276
|
|
package/dist/app.d.ts
CHANGED
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;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAsC9B,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE;;EAyI7F;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;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;CACxB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBxB"}
|
package/dist/app.js
CHANGED
|
@@ -36,11 +36,25 @@ import { tagResource, untagResource, listTagsForResource } from "./sns/actions/t
|
|
|
36
36
|
import { S3Store } from "./s3/s3Store.js";
|
|
37
37
|
import { registerS3Routes } from "./s3/s3Router.js";
|
|
38
38
|
import { getCallerIdentity } from "./sts/getCallerIdentity.js";
|
|
39
|
+
export { createLocalhostHandler, interceptLocalhostDns } from "./localhost.js";
|
|
39
40
|
export function buildApp(options) {
|
|
40
41
|
const app = Fastify({
|
|
41
42
|
logger: options?.logger ?? true,
|
|
42
43
|
bodyLimit: 2 * 1_048_576, // 2 MiB — allow our handlers to validate message size
|
|
43
44
|
forceCloseConnections: true,
|
|
45
|
+
// Support S3 virtual-hosted-style requests: bucket name in Host header (e.g. bucket.localhost:port)
|
|
46
|
+
// Rewrites to path-style (e.g. /bucket/key) before routing.
|
|
47
|
+
rewriteUrl: (req) => {
|
|
48
|
+
const host = req.headers.host ?? "";
|
|
49
|
+
const hostname = host.split(":")[0];
|
|
50
|
+
// No rewrite for plain hostnames (localhost) or IP addresses
|
|
51
|
+
if (!hostname.includes(".") || /^\d+\.\d+\.\d+\.\d+$/.test(hostname)) {
|
|
52
|
+
return req.url ?? "/";
|
|
53
|
+
}
|
|
54
|
+
const dotIndex = hostname.indexOf(".");
|
|
55
|
+
const bucket = hostname.substring(0, dotIndex);
|
|
56
|
+
return `/${bucket}${req.url ?? "/"}`;
|
|
57
|
+
},
|
|
44
58
|
});
|
|
45
59
|
const sqsStore = new SqsStore();
|
|
46
60
|
if (options?.host) {
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/common/errors.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export declare class SnsError extends Error {
|
|
|
18
18
|
export declare class S3Error extends Error {
|
|
19
19
|
readonly code: string;
|
|
20
20
|
readonly statusCode: number;
|
|
21
|
-
readonly resource?: string
|
|
22
|
-
constructor(code: string, message: string, statusCode?: number, resource?: string
|
|
21
|
+
readonly resource?: string;
|
|
22
|
+
constructor(code: string, message: string, statusCode?: number, resource?: string);
|
|
23
23
|
toXml(): string;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAY,EACxB,WAAW,GAAE,OAAc;IAS7B,MAAM;;;;IAON,IAAI,gBAAgB,IAAI,MAAM,CAG7B;CACF;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAY,EACxB,WAAW,GAAE,OAAc;CAQ9B;AAED,qBAAa,OAAQ,SAAQ,KAAK;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,EAAE,QAAQ,CAAC,EAAE,MAAM;IAQtF,KAAK,IAAI,MAAM;CAahB"}
|
package/dist/common/errors.js
CHANGED
|
@@ -5,10 +5,10 @@ export class SqsError extends Error {
|
|
|
5
5
|
senderFault;
|
|
6
6
|
constructor(code, message, statusCode = 400, senderFault = true) {
|
|
7
7
|
super(message);
|
|
8
|
+
this.name = "SqsError";
|
|
8
9
|
this.code = code;
|
|
9
10
|
this.statusCode = statusCode;
|
|
10
11
|
this.senderFault = senderFault;
|
|
11
|
-
this.name = "SqsError";
|
|
12
12
|
}
|
|
13
13
|
toJSON() {
|
|
14
14
|
return {
|
|
@@ -27,10 +27,10 @@ export class SnsError extends Error {
|
|
|
27
27
|
senderFault;
|
|
28
28
|
constructor(code, message, statusCode = 400, senderFault = true) {
|
|
29
29
|
super(message);
|
|
30
|
+
this.name = "SnsError";
|
|
30
31
|
this.code = code;
|
|
31
32
|
this.statusCode = statusCode;
|
|
32
33
|
this.senderFault = senderFault;
|
|
33
|
-
this.name = "SnsError";
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
export class S3Error extends Error {
|
|
@@ -39,10 +39,10 @@ export class S3Error extends Error {
|
|
|
39
39
|
resource;
|
|
40
40
|
constructor(code, message, statusCode = 400, resource) {
|
|
41
41
|
super(message);
|
|
42
|
+
this.name = "S3Error";
|
|
42
43
|
this.code = code;
|
|
43
44
|
this.statusCode = statusCode;
|
|
44
45
|
this.resource = resource;
|
|
45
|
-
this.name = "S3Error";
|
|
46
46
|
}
|
|
47
47
|
toXml() {
|
|
48
48
|
const parts = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,WAAW,CAAU;IAE9B,YACE,IAAY,EACZ,OAAe,EACf,aAAqB,GAAG,EACxB,cAAuB,IAAI;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,qBAAqB,IAAI,CAAC,IAAI,EAAE;YACxC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QACvD,OAAO,0BAA0B,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,WAAW,CAAU;IAE9B,YACE,IAAY,EACZ,OAAe,EACf,aAAqB,GAAG,EACxB,cAAuB,IAAI;QAE3B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,OAAQ,SAAQ,KAAK;IACvB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,QAAQ,CAAU;IAE3B,YAAY,IAAY,EAAE,OAAe,EAAE,aAAqB,GAAG,EAAE,QAAiB;QACpF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,MAAM,KAAK,GAAG;YACZ,wCAAwC;YACxC,SAAS;YACT,WAAW,IAAI,CAAC,IAAI,SAAS;YAC7B,cAAc,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY;SAClD,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { NodeHttpHandler } from "@smithy/node-http-handler";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a pre-configured HTTP request handler that resolves all hostnames
|
|
4
|
+
* to 127.0.0.1. This enables virtual-hosted-style S3 requests (bucket name
|
|
5
|
+
* in Host header) without requiring wildcard DNS or external services.
|
|
6
|
+
*
|
|
7
|
+
* Scoped to a single client instance — no global side effects.
|
|
8
|
+
*
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createLocalhostHandler } from "fauxqs";
|
|
11
|
+
*
|
|
12
|
+
* const s3 = new S3Client({
|
|
13
|
+
* endpoint: `http://s3.localhost:${port}`,
|
|
14
|
+
* requestHandler: createLocalhostHandler(),
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function createLocalhostHandler(): NodeHttpHandler;
|
|
19
|
+
/**
|
|
20
|
+
* Patches the global `dns.lookup` to resolve any hostname ending with the
|
|
21
|
+
* given suffix to 127.0.0.1. Returns a function that restores the original
|
|
22
|
+
* `dns.lookup`.
|
|
23
|
+
*
|
|
24
|
+
* This makes virtual-hosted-style S3 requests work transparently — no client
|
|
25
|
+
* configuration changes needed. However, it affects all DNS lookups in the
|
|
26
|
+
* process, so it is best used in test suites (e.g., `beforeAll` / `afterAll`).
|
|
27
|
+
*
|
|
28
|
+
* @param hostname - Suffix to match (default: `"localhost"`). Any hostname
|
|
29
|
+
* ending with `.${hostname}` will be resolved to 127.0.0.1.
|
|
30
|
+
*
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { interceptLocalhostDns } from "fauxqs";
|
|
33
|
+
*
|
|
34
|
+
* const restore = interceptLocalhostDns();
|
|
35
|
+
* // S3 client works without forcePathStyle or custom requestHandler
|
|
36
|
+
* restore();
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function interceptLocalhostDns(hostname?: string): () => void;
|
|
40
|
+
//# sourceMappingURL=localhost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localhost.d.ts","sourceRoot":"","sources":["../src/localhost.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAUxD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,SAAc,GAAG,MAAM,IAAI,CAqBxE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import dns from "node:dns";
|
|
3
|
+
import { NodeHttpHandler } from "@smithy/node-http-handler";
|
|
4
|
+
const LOCALHOST_RESULT = { address: "127.0.0.1", family: 4 };
|
|
5
|
+
/**
|
|
6
|
+
* Creates a pre-configured HTTP request handler that resolves all hostnames
|
|
7
|
+
* to 127.0.0.1. This enables virtual-hosted-style S3 requests (bucket name
|
|
8
|
+
* in Host header) without requiring wildcard DNS or external services.
|
|
9
|
+
*
|
|
10
|
+
* Scoped to a single client instance — no global side effects.
|
|
11
|
+
*
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { createLocalhostHandler } from "fauxqs";
|
|
14
|
+
*
|
|
15
|
+
* const s3 = new S3Client({
|
|
16
|
+
* endpoint: `http://s3.localhost:${port}`,
|
|
17
|
+
* requestHandler: createLocalhostHandler(),
|
|
18
|
+
* });
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function createLocalhostHandler() {
|
|
22
|
+
const lookup = (_hostname, options, callback) => {
|
|
23
|
+
if (options.all) {
|
|
24
|
+
callback(null, [LOCALHOST_RESULT]);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
callback(null, LOCALHOST_RESULT.address, LOCALHOST_RESULT.family);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
return new NodeHttpHandler({ httpAgent: new http.Agent({ lookup }) });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Patches the global `dns.lookup` to resolve any hostname ending with the
|
|
34
|
+
* given suffix to 127.0.0.1. Returns a function that restores the original
|
|
35
|
+
* `dns.lookup`.
|
|
36
|
+
*
|
|
37
|
+
* This makes virtual-hosted-style S3 requests work transparently — no client
|
|
38
|
+
* configuration changes needed. However, it affects all DNS lookups in the
|
|
39
|
+
* process, so it is best used in test suites (e.g., `beforeAll` / `afterAll`).
|
|
40
|
+
*
|
|
41
|
+
* @param hostname - Suffix to match (default: `"localhost"`). Any hostname
|
|
42
|
+
* ending with `.${hostname}` will be resolved to 127.0.0.1.
|
|
43
|
+
*
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import { interceptLocalhostDns } from "fauxqs";
|
|
46
|
+
*
|
|
47
|
+
* const restore = interceptLocalhostDns();
|
|
48
|
+
* // S3 client works without forcePathStyle or custom requestHandler
|
|
49
|
+
* restore();
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function interceptLocalhostDns(hostname = "localhost") {
|
|
53
|
+
const suffix = `.${hostname}`;
|
|
54
|
+
const original = dns.lookup;
|
|
55
|
+
const patched = (name, options, callback) => {
|
|
56
|
+
if (name.endsWith(suffix)) {
|
|
57
|
+
if (options.all) {
|
|
58
|
+
callback(null, [LOCALHOST_RESULT]);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
callback(null, LOCALHOST_RESULT.address, LOCALHOST_RESULT.family);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
original(name, options, callback);
|
|
66
|
+
};
|
|
67
|
+
dns.lookup = patched;
|
|
68
|
+
return () => {
|
|
69
|
+
dns.lookup = original;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=localhost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localhost.js","sourceRoot":"","sources":["../src/localhost.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,gBAAgB,GAAsB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC9D,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAQ,GAAG,WAAW;IAC1D,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IAE5B,MAAM,OAAO,GAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,QAAQ,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC;YACD,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,GAAG,CAAC,MAAM,GAAG,OAA4B,CAAC;IAE1C,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/s3/s3Router.d.ts
CHANGED
package/dist/s3/s3Store.d.ts
CHANGED
|
@@ -60,7 +60,7 @@ export function createTopic(params, snsStore) {
|
|
|
60
60
|
resolvedAttributes.FifoTopic = "true";
|
|
61
61
|
}
|
|
62
62
|
else if (isFifoAttr && !isFifoName) {
|
|
63
|
-
throw new SnsError("InvalidParameter", "Invalid parameter: Topic
|
|
63
|
+
throw new SnsError("InvalidParameter", "Invalid parameter: Fifo Topic names must end with .fifo suffix");
|
|
64
64
|
}
|
|
65
65
|
if (resolvedAttributes.FifoTopic === "true") {
|
|
66
66
|
if (resolvedAttributes.ContentBasedDeduplication === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTopic.js","sourceRoot":"","sources":["../../../src/sns/actions/createTopic.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"createTopic.js","sourceRoot":"","sources":["../../../src/sns/actions/createTopic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSubscriptionAttributes.d.ts","sourceRoot":"","sources":["../../../src/sns/actions/getSubscriptionAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,QAAQ,GACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"getSubscriptionAttributes.d.ts","sourceRoot":"","sources":["../../../src/sns/actions/getSubscriptionAttributes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAgCR"}
|
|
@@ -17,6 +17,7 @@ export function getSubscriptionAttributes(params, snsStore) {
|
|
|
17
17
|
Owner: "000000000000",
|
|
18
18
|
ConfirmationWasAuthenticated: "true",
|
|
19
19
|
PendingConfirmation: subscription.confirmed ? "false" : "true",
|
|
20
|
+
SubscriptionPrincipal: "arn:aws:iam::000000000000:user/local",
|
|
20
21
|
RawMessageDelivery: subscription.attributes.RawMessageDelivery ?? "false",
|
|
21
22
|
...subscription.attributes,
|
|
22
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSubscriptionAttributes.js","sourceRoot":"","sources":["../../../src/sns/actions/getSubscriptionAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,UAAU,yBAAyB,CACvC,MAA8B,EAC9B,QAAkB;IAElB,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,aAAa,GAA2B;QAC5C,eAAe,EAAE,YAAY,CAAC,GAAG;QACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,KAAK,EAAE,cAAc;QACrB,4BAA4B,EAAE,MAAM;QACpC,mBAAmB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QAC9D,kBAAkB,EAAE,YAAY,CAAC,UAAU,CAAC,kBAAkB,IAAI,OAAO;QACzE,GAAG,YAAY,CAAC,UAAU;KAC3B,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;SAC7C,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,eAAe,SAAS,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAClF;SACA,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,OAAO,kBAAkB,CAAC,2BAA2B,EAAE,eAAe,UAAU,eAAe,CAAC,CAAC;AACnG,CAAC"}
|
|
1
|
+
{"version":3,"file":"getSubscriptionAttributes.js","sourceRoot":"","sources":["../../../src/sns/actions/getSubscriptionAttributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGpE,MAAM,UAAU,yBAAyB,CACvC,MAA8B,EAC9B,QAAkB;IAElB,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/C,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,aAAa,GAA2B;QAC5C,eAAe,EAAE,YAAY,CAAC,GAAG;QACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,KAAK,EAAE,cAAc;QACrB,4BAA4B,EAAE,MAAM;QACpC,mBAAmB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QAC9D,qBAAqB,EAAE,sCAAsC;QAC7D,kBAAkB,EAAE,YAAY,CAAC,UAAU,CAAC,kBAAkB,IAAI,OAAO;QACzE,GAAG,YAAY,CAAC,UAAU;KAC3B,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;SAC7C,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,eAAe,SAAS,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAClF;SACA,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,OAAO,kBAAkB,CAAC,2BAA2B,EAAE,eAAe,UAAU,eAAe,CAAC,CAAC;AACnG,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SnsStore } from "../snsStore.
|
|
1
|
+
import type { SnsStore } from "../snsStore.ts";
|
|
2
2
|
export declare function listSubscriptions(_params: Record<string, string>, snsStore: SnsStore): string;
|
|
3
3
|
export declare function listSubscriptionsByTopic(params: Record<string, string>, snsStore: SnsStore): string;
|
|
4
4
|
//# sourceMappingURL=listSubscriptions.d.ts.map
|
|
@@ -10,12 +10,12 @@ export function listSubscriptionsByTopic(params, snsStore) {
|
|
|
10
10
|
}
|
|
11
11
|
function formatSubscriptionList(action, subscriptions) {
|
|
12
12
|
const membersXml = subscriptions
|
|
13
|
-
.map((s) => `<member>
|
|
14
|
-
<SubscriptionArn>${escapeXml(s.arn)}</SubscriptionArn>
|
|
15
|
-
<TopicArn>${escapeXml(s.topicArn)}</TopicArn>
|
|
16
|
-
<Protocol>${escapeXml(s.protocol)}</Protocol>
|
|
17
|
-
<Endpoint>${escapeXml(s.endpoint)}</Endpoint>
|
|
18
|
-
<Owner>000000000000</Owner>
|
|
13
|
+
.map((s) => `<member>
|
|
14
|
+
<SubscriptionArn>${escapeXml(s.arn)}</SubscriptionArn>
|
|
15
|
+
<TopicArn>${escapeXml(s.topicArn)}</TopicArn>
|
|
16
|
+
<Protocol>${escapeXml(s.protocol)}</Protocol>
|
|
17
|
+
<Endpoint>${escapeXml(s.endpoint)}</Endpoint>
|
|
18
|
+
<Owner>000000000000</Owner>
|
|
19
19
|
</member>`)
|
|
20
20
|
.join("\n ");
|
|
21
21
|
return snsSuccessResponse(action, `<Subscriptions>${membersXml}</Subscriptions>`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SnsStore } from "../snsStore.
|
|
2
|
-
import type { SqsStore } from "../../sqs/sqsStore.
|
|
1
|
+
import type { SnsStore } from "../snsStore.ts";
|
|
2
|
+
import type { SqsStore } from "../../sqs/sqsStore.ts";
|
|
3
3
|
export declare function publish(params: Record<string, string>, snsStore: SnsStore, sqsStore: SqsStore): string;
|
|
4
4
|
export declare function publishBatch(params: Record<string, string>, snsStore: SnsStore, sqsStore: SqsStore): string;
|
|
5
5
|
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/sns/actions/publish.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMtD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/sns/actions/publish.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMtD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CA8IR;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CA2GR"}
|