tibber-aws 6.3.0 → 7.0.1
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.
|
@@ -3,10 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.QueueSubjectListener = exports.ExponentialRetryPolicy = exports.LinearRetryPolicy = void 0;
|
|
4
4
|
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
5
5
|
const LoggerWrapper_1 = require("../LoggerWrapper");
|
|
6
|
+
const zlib_1 = require("zlib");
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const MESSAGE_ATTRIBUTE_CONTENT_TYPE = 'contentType';
|
|
9
|
+
const COMPRESSTION_METHOD_BROTLI = 'brotli';
|
|
10
|
+
const COMPRESSTION_METHOD_GZIP = 'gzip';
|
|
6
11
|
const LinearRetryPolicy = (attempt, backoffDelaySeconds) => backoffDelaySeconds * attempt;
|
|
7
12
|
exports.LinearRetryPolicy = LinearRetryPolicy;
|
|
8
13
|
const ExponentialRetryPolicy = (attempt, backoffDelaySeconds) => Math.pow(attempt, backoffDelaySeconds);
|
|
9
14
|
exports.ExponentialRetryPolicy = ExponentialRetryPolicy;
|
|
15
|
+
const brotliDecompressAsync = (0, util_1.promisify)(zlib_1.brotliDecompress);
|
|
16
|
+
const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip);
|
|
17
|
+
const decompressBrotli = async (base64Message) => {
|
|
18
|
+
const buffer = Buffer.from(base64Message, 'base64');
|
|
19
|
+
const decompressed = await brotliDecompressAsync(Uint8Array.from(buffer));
|
|
20
|
+
return JSON.parse(decompressed.toString('utf-8'));
|
|
21
|
+
};
|
|
22
|
+
const decompressGzip = async (base64Message) => {
|
|
23
|
+
const buffer = Buffer.from(base64Message, 'base64');
|
|
24
|
+
const decompressed = await gunzipAsync(Uint8Array.from(buffer));
|
|
25
|
+
return JSON.parse(decompressed.toString('utf-8'));
|
|
26
|
+
};
|
|
10
27
|
class QueueSubjectListener {
|
|
11
28
|
queue;
|
|
12
29
|
options;
|
|
@@ -62,16 +79,35 @@ class QueueSubjectListener {
|
|
|
62
79
|
setTimeout(handlerFunc, (receiveTimeout && receiveTimeout()) || 2000);
|
|
63
80
|
return;
|
|
64
81
|
}
|
|
65
|
-
const messages = response.Messages.map(m => {
|
|
82
|
+
const messages = await Promise.all(response.Messages.map(async (m) => {
|
|
66
83
|
if (m.Body === undefined)
|
|
67
84
|
throw Error(`Message with ID '${m.MessageId}' has no Body defined.`);
|
|
68
85
|
const json = JSON.parse(m.Body);
|
|
69
86
|
try {
|
|
87
|
+
const contentType = m.MessageAttributes &&
|
|
88
|
+
m.MessageAttributes[MESSAGE_ATTRIBUTE_CONTENT_TYPE];
|
|
89
|
+
let jsonMessage;
|
|
90
|
+
if (contentType) {
|
|
91
|
+
if (contentType.StringValue === COMPRESSTION_METHOD_BROTLI) {
|
|
92
|
+
this.logger.info(`Message with ID '${m.MessageId}' is compressed with Brotli.`);
|
|
93
|
+
jsonMessage = await decompressBrotli(json.Message);
|
|
94
|
+
}
|
|
95
|
+
else if (contentType.StringValue === COMPRESSTION_METHOD_GZIP) {
|
|
96
|
+
this.logger.info(`Message with ID '${m.MessageId}' is compressed with Gzip.`);
|
|
97
|
+
jsonMessage = await decompressGzip(json.Message);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
jsonMessage = JSON.parse(json.Message);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
jsonMessage = JSON.parse(json.Message);
|
|
105
|
+
}
|
|
70
106
|
return {
|
|
71
107
|
handle: m.ReceiptHandle,
|
|
72
108
|
isValidJson: true,
|
|
73
109
|
message: {
|
|
74
|
-
message:
|
|
110
|
+
message: jsonMessage,
|
|
75
111
|
subject: json.Subject,
|
|
76
112
|
attributes: m.Attributes,
|
|
77
113
|
},
|
|
@@ -85,7 +121,7 @@ class QueueSubjectListener {
|
|
|
85
121
|
message: { subject: 'Delete Me' },
|
|
86
122
|
};
|
|
87
123
|
}
|
|
88
|
-
});
|
|
124
|
+
}));
|
|
89
125
|
cntInFlight += messages.length;
|
|
90
126
|
const promises = messages.map(async (m) => {
|
|
91
127
|
const { message, subject, attributes } = m.message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueSubjectListener.js","sourceRoot":"","sources":["../../../src/queue/QueueSubjectListener.ts"],"names":[],"mappings":";;;AAAA,oDAG6B;AAE7B,oDAA+C;
|
|
1
|
+
{"version":3,"file":"QueueSubjectListener.js","sourceRoot":"","sources":["../../../src/queue/QueueSubjectListener.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -5,6 +5,25 @@ Thie repo is a typescript wrapper around the AWS SDK for Javascript.
|
|
|
5
5
|
- Migrated to aws sdk 3.x
|
|
6
6
|
- Removed ECS Api
|
|
7
7
|
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
### Queue Message Compression Support
|
|
11
|
+
The library now supports automatic decompression of SQS messages compressed with Brotli or GZip. Messages with a `contentType` message attribute set to `brotli` or `gzip` will be automatically decompressed.
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import {QueueSubjectListener, Queue} from 'tibber-aws';
|
|
15
|
+
|
|
16
|
+
const queue = await Queue.createQueue('test-queue');
|
|
17
|
+
const listener = new QueueSubjectListener(queue);
|
|
18
|
+
|
|
19
|
+
listener.onSubject('test', async (message, subject) => {
|
|
20
|
+
// Message is automatically decompressed if compressed
|
|
21
|
+
console.log(message);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
listener.listen();
|
|
25
|
+
```
|
|
26
|
+
|
|
8
27
|
## Usage
|
|
9
28
|
|
|
10
29
|
```
|