@message-queue-toolkit/sns 24.6.1 → 25.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/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/sns/AbstractSnsPublisher.d.ts +2 -1
- package/dist/sns/AbstractSnsPublisher.js +30 -7
- package/dist/sns/AbstractSnsPublisher.js.map +1 -1
- package/dist/sns/AbstractSnsSqsConsumer.d.ts +4 -2
- package/dist/sns/AbstractSnsSqsConsumer.js.map +1 -1
- package/package.json +86 -84
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Igor Savin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -58,6 +58,7 @@ npm install @message-queue-toolkit/sns @message-queue-toolkit/sqs @message-queue
|
|
|
58
58
|
- ✅ **Handler spies** for testing
|
|
59
59
|
- ✅ **Pre-handlers and barriers** for complex message processing
|
|
60
60
|
- ✅ **Cross-account and cross-region publishing**
|
|
61
|
+
- ✅ **Message compression** with zstd via Node.js built-in `zlib` (Node.js >=22.15.0 required)
|
|
61
62
|
|
|
62
63
|
## Core Concepts
|
|
63
64
|
|
|
@@ -683,6 +684,10 @@ await consumer.start()
|
|
|
683
684
|
// Optional - Payload Offloading (same as SQS)
|
|
684
685
|
payloadStoreConfig: { /* ... */ },
|
|
685
686
|
|
|
687
|
+
// Optional - Compression (Node.js >=22.15.0 required)
|
|
688
|
+
codec: MessageCodecEnum.ZSTD, // Compress every outgoing message with zstd
|
|
689
|
+
skipCompressionBelow: 512, // Skip compression for messages smaller than 512 bytes (default: 512)
|
|
690
|
+
|
|
686
691
|
// Optional - Deletion
|
|
687
692
|
deletionConfig: { /* ... */ },
|
|
688
693
|
}
|
|
@@ -740,6 +745,11 @@ SNS consumers use the same options as SQS consumers, plus SNS-specific subscript
|
|
|
740
745
|
concurrentConsumersAmount: 1,
|
|
741
746
|
maxRetryDuration: 345600, // 4 days
|
|
742
747
|
deadLetterQueue: { /* ... */ },
|
|
748
|
+
// SQS ReceiveMessage WaitTimeSeconds, 0–20. Defaults to 20 (full long polling)
|
|
749
|
+
// — cuts empty-receive cost, AWS API churn, and tail latency vs. short polling.
|
|
750
|
+
// Set to 0 to opt into short polling (common in tests asserting on "message
|
|
751
|
+
// was NOT processed", or for niche workloads where per-poll latency dominates).
|
|
752
|
+
consumerPollingWaitTimeSeconds: 20,
|
|
743
753
|
consumerOverrides: { /* ... */ },
|
|
744
754
|
// ... see SQS README for full list
|
|
745
755
|
}
|
|
@@ -1000,6 +1010,7 @@ SNS consumers inherit all advanced features from SQS consumers. See the SQS READ
|
|
|
1000
1010
|
- **[Message Retry Logic](../sqs/README.md#message-retry-logic)** - Exponential backoff and retry limits
|
|
1001
1011
|
- **[Message Deduplication](../sqs/README.md#message-deduplication)** - Publisher and consumer-level deduplication
|
|
1002
1012
|
- **[Payload Offloading](../sqs/README.md#payload-offloading)** - S3 storage for large messages
|
|
1013
|
+
- **[Message Compression](../sqs/README.md#message-compression)** - zstd compression via Node.js built-in `zlib`
|
|
1003
1014
|
- **[Message Handlers](../sqs/README.md#message-handlers)** - Type-safe handler configuration
|
|
1004
1015
|
- **[Pre-handlers and Barriers](../sqs/README.md#pre-handlers-and-barriers)** - Middleware and message dependencies
|
|
1005
1016
|
- **[Handler Spies](../sqs/README.md#handler-spies)** - Testing async message flows
|
|
@@ -52,7 +52,8 @@ export declare abstract class AbstractSnsPublisher<MessagePayloadType extends ob
|
|
|
52
52
|
protected preHandlerBarrier<BarrierOutput>(): Promise<BarrierResult<BarrierOutput>>;
|
|
53
53
|
processMessage(): Promise<Either<'retryLater', 'success'>>;
|
|
54
54
|
protected isDeduplicationEnabledForMessage(message: MessagePayloadType): boolean;
|
|
55
|
-
protected
|
|
55
|
+
protected calculateOutgoingMessageSize(message: MessagePayloadType): number;
|
|
56
|
+
protected sendMessage(payload: MessagePayloadType | OffloadedPayloadPointerPayload, options: SNSMessageOptions, preBuiltBody?: string): Promise<void>;
|
|
56
57
|
/**
|
|
57
58
|
* Resolves FIFO-specific options (MessageGroupId) from the message payload.
|
|
58
59
|
* This must be called BEFORE payload offloading, as the offloaded payload
|
|
@@ -47,14 +47,31 @@ export class AbstractSnsPublisher extends AbstractSnsService {
|
|
|
47
47
|
const messageProcessingStartTimestamp = Date.now();
|
|
48
48
|
const parsedMessage = messageSchemaResult.result.parse(message);
|
|
49
49
|
const topicName = this.locatorConfig?.topicName ?? this.creationConfig?.topic?.Name ?? 'unknown';
|
|
50
|
+
// Fast read-only pre-check: skip compression/offload for messages already known to
|
|
51
|
+
// be duplicates. This does NOT persist a dedup key, so a transient failure in the
|
|
52
|
+
// expensive work below leaves no key behind and the publish stays safely retriable.
|
|
53
|
+
if (await this.isMessageDuplicated(parsedMessage, DeduplicationRequesterEnum.Publisher)) {
|
|
54
|
+
this.handleMessageProcessed({
|
|
55
|
+
message: parsedMessage,
|
|
56
|
+
processingResult: { status: 'published', skippedAsDuplicate: true },
|
|
57
|
+
messageProcessingStartTimestamp,
|
|
58
|
+
queueName: topicName,
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
50
62
|
const updatedMessage = this.updateInternalProperties(message);
|
|
51
63
|
// Resolve FIFO options from original message BEFORE offloading
|
|
52
64
|
// (offloaded payload won't have user fields needed for messageGroupIdField)
|
|
53
65
|
const resolvedOptions = this.resolveFifoOptions(updatedMessage, options);
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
const { payload, preBuiltBody } = await this.prepareOutgoingPayload(updatedMessage);
|
|
67
|
+
// Persist the dedup key only now — immediately before send — so the window in which
|
|
68
|
+
// a stored key plus a failed send could drop the message on retry stays as small as
|
|
69
|
+
// possible and no longer spans compression/offload (a transient failure there leaves
|
|
70
|
+
// no key behind). The pre-check above already skipped the expensive work for the
|
|
71
|
+
// common duplicate case; this check additionally closes the race where a concurrent
|
|
72
|
+
// publish stored the key in the meantime.
|
|
73
|
+
if ((await this.deduplicateMessage(parsedMessage, DeduplicationRequesterEnum.Publisher))
|
|
74
|
+
.isDuplicated) {
|
|
58
75
|
this.handleMessageProcessed({
|
|
59
76
|
message: parsedMessage,
|
|
60
77
|
processingResult: { status: 'published', skippedAsDuplicate: true },
|
|
@@ -63,7 +80,7 @@ export class AbstractSnsPublisher extends AbstractSnsService {
|
|
|
63
80
|
});
|
|
64
81
|
return;
|
|
65
82
|
}
|
|
66
|
-
await this.sendMessage(
|
|
83
|
+
await this.sendMessage(payload, resolvedOptions, preBuiltBody);
|
|
67
84
|
this.handleMessageProcessed({
|
|
68
85
|
message: parsedMessage,
|
|
69
86
|
processingResult: { status: 'published' },
|
|
@@ -108,10 +125,16 @@ export class AbstractSnsPublisher extends AbstractSnsService {
|
|
|
108
125
|
isDeduplicationEnabledForMessage(message) {
|
|
109
126
|
return this.isDeduplicationEnabled && super.isDeduplicationEnabledForMessage(message);
|
|
110
127
|
}
|
|
111
|
-
|
|
128
|
+
calculateOutgoingMessageSize(message) {
|
|
129
|
+
return calculateOutgoingMessageSize(message);
|
|
130
|
+
}
|
|
131
|
+
async sendMessage(payload, options, preBuiltBody) {
|
|
112
132
|
const attributes = resolveOutgoingMessageAttributes(payload);
|
|
133
|
+
// preBuiltBody is set when codec is active and the payload was not offloaded —
|
|
134
|
+
// it contains the already-compressed codec envelope, so we skip re-serialization.
|
|
135
|
+
const body = preBuiltBody ?? JSON.stringify(payload);
|
|
113
136
|
const command = new PublishCommand({
|
|
114
|
-
Message:
|
|
137
|
+
Message: body,
|
|
115
138
|
MessageAttributes: attributes,
|
|
116
139
|
TopicArn: this.topicArn,
|
|
117
140
|
...options,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsPublisher.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsPublisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAGL,0BAA0B,GAO3B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAA;AAE7E,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAO1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AA+C5D,MAAM,OAAgB,oBACpB,SAAQ,kBAA0D;IAGjD,sBAAsB,CAA4C;IAClE,sBAAsB,CAAS;IAC/B,WAAW,CAAS;IACpB,mBAAmB,CAAS;IAC5B,qBAAqB,CAAS;IAEvC,WAAW,CAAgB;IAEnC,YAAY,YAA6B,EAAE,OAAgD;QACzF,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAA;QAClF,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAA;QACpE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;QAC7C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAA;QACtD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAA;IAC5D,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAElB,yCAAyC;QACzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAA;YACnF,IAAI,SAAS,EAAE,CAAC;gBACd,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAA;YACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,+BAA+B,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAClD,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC/D,MAAM,SAAS,GACb,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAA;YAEhF,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAA;YAE7D,+DAA+D;YAC/D,4EAA4E;YAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;YAExE,MAAM,
|
|
1
|
+
{"version":3,"file":"AbstractSnsPublisher.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SNSClient } from '@aws-sdk/client-sns';
|
|
2
2
|
import type { STSClient } from '@aws-sdk/client-sts';
|
|
3
|
+
import type { Either } from '@lokalise/node-core';
|
|
4
|
+
import type { MessageInvalidFormatError, MessageValidationError, ResolvedMessage } from '@message-queue-toolkit/core';
|
|
3
5
|
import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
|
|
4
6
|
import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
|
|
5
7
|
import type { SNSSubscriptionOptions } from '../utils/snsSubscriber.ts';
|
|
@@ -41,6 +43,6 @@ export declare abstract class AbstractSnsSqsConsumer<MessagePayloadSchemas exten
|
|
|
41
43
|
* resources become available.
|
|
42
44
|
*/
|
|
43
45
|
start(): Promise<void>;
|
|
44
|
-
protected resolveMessage(message: SQSMessage):
|
|
45
|
-
protected resolveSchema(messagePayload: MessagePayloadSchemas):
|
|
46
|
+
protected resolveMessage(message: SQSMessage): Either<MessageInvalidFormatError | MessageValidationError, ResolvedMessage>;
|
|
47
|
+
protected resolveSchema(messagePayload: MessagePayloadSchemas): Either<Error, import("zod/v4").ZodType<MessagePayloadSchemas, unknown, import("zod/v4/core").$ZodTypeInternals<MessagePayloadSchemas, unknown>>>;
|
|
46
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,85 +1,87 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
]
|
|
85
|
-
|
|
2
|
+
"name": "@message-queue-toolkit/sns",
|
|
3
|
+
"version": "25.0.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "SNS adapter for message-queue-toolkit",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.0.0"
|
|
9
|
+
},
|
|
10
|
+
"maintainers": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Igor Savin",
|
|
13
|
+
"email": "kibertoad@gmail.com"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": "./dist/index.js",
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@lokalise/node-core": "^14.4.2",
|
|
24
|
+
"sqs-consumer": "^15.0.1"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@aws-sdk/client-sns": "^3.632.0",
|
|
28
|
+
"@aws-sdk/client-sqs": "^3.1034.0",
|
|
29
|
+
"@aws-sdk/client-sts": "^3.632.0",
|
|
30
|
+
"@message-queue-toolkit/core": ">=26.0.0",
|
|
31
|
+
"@message-queue-toolkit/schemas": ">=7.0.0",
|
|
32
|
+
"@message-queue-toolkit/sqs": ">=23.0.0",
|
|
33
|
+
"zod": ">=3.25.76 <5.0.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@aws-sdk/client-s3": "^3.812.0",
|
|
37
|
+
"@aws-sdk/client-sns": "^3.812.0",
|
|
38
|
+
"@aws-sdk/client-sqs": "^3.1034.0",
|
|
39
|
+
"@biomejs/biome": "^2.3.6",
|
|
40
|
+
"@lokalise/biome-config": "^3.1.0",
|
|
41
|
+
"@lokalise/tsconfig": "^3.0.0",
|
|
42
|
+
"@types/node": "^25.0.2",
|
|
43
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
44
|
+
"awilix": "^13.0.3",
|
|
45
|
+
"awilix-manager": "^6.1.0",
|
|
46
|
+
"fauxqs": "^2.0.0",
|
|
47
|
+
"ioredis": "^5.7.0",
|
|
48
|
+
"rimraf": "^6.0.1",
|
|
49
|
+
"typescript": "^5.9.3",
|
|
50
|
+
"vitest": "^4.0.15",
|
|
51
|
+
"zod": "^4.1.13",
|
|
52
|
+
"@message-queue-toolkit/core": "26.0.0",
|
|
53
|
+
"@message-queue-toolkit/s3-payload-store": "3.1.0",
|
|
54
|
+
"@message-queue-toolkit/sqs": "25.0.0",
|
|
55
|
+
"@message-queue-toolkit/redis-message-deduplication-store": "2.2.0"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/kibertoad/message-queue-toolkit",
|
|
58
|
+
"repository": {
|
|
59
|
+
"type": "git",
|
|
60
|
+
"url": "git://github.com/kibertoad/message-queue-toolkit.git"
|
|
61
|
+
},
|
|
62
|
+
"keywords": [
|
|
63
|
+
"message",
|
|
64
|
+
"queue",
|
|
65
|
+
"queues",
|
|
66
|
+
"abstract",
|
|
67
|
+
"common",
|
|
68
|
+
"utils",
|
|
69
|
+
"notification",
|
|
70
|
+
"sns"
|
|
71
|
+
],
|
|
72
|
+
"files": [
|
|
73
|
+
"README.md",
|
|
74
|
+
"LICENSE",
|
|
75
|
+
"dist/*"
|
|
76
|
+
],
|
|
77
|
+
"scripts": {
|
|
78
|
+
"build": "pnpm run clean && tsc --project tsconfig.build.json",
|
|
79
|
+
"clean": "rimraf dist",
|
|
80
|
+
"test": "vitest",
|
|
81
|
+
"test:coverage": "pnpm run test --coverage",
|
|
82
|
+
"lint": "biome check . && tsc",
|
|
83
|
+
"lint:fix": "biome check --write .",
|
|
84
|
+
"docker:start": "docker compose up -d redis && if [ \"$QUEUE_BACKEND\" = \"localstack\" ]; then docker compose up -d --quiet-pull --wait localstack; fi",
|
|
85
|
+
"docker:stop": "docker compose down"
|
|
86
|
+
}
|
|
87
|
+
}
|