prime-sdk 1.5.1 → 2.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/dist/app.module.js +10 -10
- package/dist/app.module.js.map +1 -1
- package/dist/external/aws/sqs/sqs.service.d.ts +4 -1
- package/dist/external/aws/sqs/sqs.service.js +13 -1
- package/dist/external/aws/sqs/sqs.service.js.map +1 -1
- package/dist/lib/queue/interfaces/queue.interface.d.ts +3 -1
- package/dist/lib/queue/interfaces/queue.interface.js.map +1 -1
- package/dist/lib/queue/queue.d.ts +5 -3
- package/dist/lib/queue/queue.js +17 -6
- package/dist/lib/queue/queue.js.map +1 -1
- package/dist/lib/queue/types/queue.type.d.ts +3 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/app.module.ts +10 -10
- package/src/external/aws/sqs/sqs.service.ts +17 -1
- package/src/lib/queue/interfaces/queue.interface.ts +2 -1
- package/src/lib/queue/queue.ts +24 -6
- package/src/lib/queue/types/queue.type.ts +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prime-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "swiss army knife",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
"@aws-sdk/client-sns": "^3.572.0",
|
|
29
29
|
"@aws-sdk/client-sqs": "^3.569.0",
|
|
30
30
|
"@aws-sdk/s3-request-presigner": "^3.572.0",
|
|
31
|
-
"@nestjs/common": "^
|
|
32
|
-
"@nestjs/config": "^
|
|
33
|
-
"@nestjs/core": "^
|
|
34
|
-
"@nestjs/platform-express": "^
|
|
31
|
+
"@nestjs/common": "^11.0.20",
|
|
32
|
+
"@nestjs/config": "^4.0.2",
|
|
33
|
+
"@nestjs/core": "^11.0.12",
|
|
34
|
+
"@nestjs/platform-express": "^11.0.12",
|
|
35
35
|
"ioredis": "^5.4.1",
|
|
36
36
|
"reflect-metadata": "^0.2.0",
|
|
37
37
|
"rxjs": "^7.8.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@nestjs/cli": "^
|
|
41
|
-
"@nestjs/schematics": "^
|
|
42
|
-
"@nestjs/testing": "^
|
|
40
|
+
"@nestjs/cli": "^11.0.5",
|
|
41
|
+
"@nestjs/schematics": "^11.0.2",
|
|
42
|
+
"@nestjs/testing": "^11.0.12",
|
|
43
43
|
"@types/express": "^4.17.17",
|
|
44
44
|
"@types/jest": "^29.5.2",
|
|
45
45
|
"@types/node": "^20.3.1",
|
package/src/app.module.ts
CHANGED
|
@@ -15,40 +15,40 @@ import { Cache } from './lib/cache/cache';
|
|
|
15
15
|
imports: [
|
|
16
16
|
QueueModule.forRoot({
|
|
17
17
|
credentials: {
|
|
18
|
-
accessKeyId: '
|
|
19
|
-
secretAccessKey: '
|
|
18
|
+
accessKeyId: '',
|
|
19
|
+
secretAccessKey: '',
|
|
20
20
|
},
|
|
21
21
|
endpoint: 'http://localhost:4566/',
|
|
22
22
|
region: 'us-east-1',
|
|
23
23
|
}),
|
|
24
24
|
StorageModule.forRoot({
|
|
25
25
|
credentials: {
|
|
26
|
-
accessKeyId: '
|
|
27
|
-
secretAccessKey: '
|
|
26
|
+
accessKeyId: '',
|
|
27
|
+
secretAccessKey: '',
|
|
28
28
|
},
|
|
29
29
|
endpoint: 'http://localhost:4566/sample-bucket',
|
|
30
30
|
region: 'us-east-1',
|
|
31
31
|
}),
|
|
32
32
|
EventModule.forRoot({
|
|
33
33
|
credentials: {
|
|
34
|
-
accessKeyId: '
|
|
35
|
-
secretAccessKey: '
|
|
34
|
+
accessKeyId: '',
|
|
35
|
+
secretAccessKey: '',
|
|
36
36
|
},
|
|
37
37
|
endpoint: 'http://localhost:4566/',
|
|
38
38
|
region: 'us-east-1',
|
|
39
39
|
}),
|
|
40
40
|
CryptoModule.forRoot({
|
|
41
41
|
credentials: {
|
|
42
|
-
accessKeyId: '
|
|
43
|
-
secretAccessKey: '
|
|
42
|
+
accessKeyId: '',
|
|
43
|
+
secretAccessKey: '',
|
|
44
44
|
},
|
|
45
45
|
endpoint: 'http://localhost:4566/',
|
|
46
46
|
region: 'us-east-1',
|
|
47
47
|
}),
|
|
48
48
|
EmailModule.forRoot({
|
|
49
49
|
credentials: {
|
|
50
|
-
accessKeyId: '
|
|
51
|
-
secretAccessKey: '
|
|
50
|
+
accessKeyId: '',
|
|
51
|
+
secretAccessKey: '',
|
|
52
52
|
},
|
|
53
53
|
endpoint: 'http://localhost:4566/',
|
|
54
54
|
region: 'us-east-1',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeleteMessageCommand,
|
|
3
|
+
QueueAttributeName,
|
|
3
4
|
ReceiveMessageCommand,
|
|
4
5
|
ReceiveMessageResult,
|
|
5
6
|
SQSClient,
|
|
@@ -12,13 +13,15 @@ export class Sqs implements IQueue {
|
|
|
12
13
|
private queueUrl: string;
|
|
13
14
|
private bulk: number;
|
|
14
15
|
private waitTimeSeconds: number;
|
|
16
|
+
private attributeNames: Array<QueueAttributeName> = [QueueAttributeName.All];
|
|
15
17
|
|
|
16
18
|
constructor(@Inject('CONNECTION_SQS') private readonly client: SQSClient) {}
|
|
17
19
|
|
|
18
|
-
setup({ waitTimeSeconds, bulk, queueUrl }) {
|
|
20
|
+
setup({ waitTimeSeconds, bulk, queueUrl, attributeNames }) {
|
|
19
21
|
this.waitTimeSeconds = waitTimeSeconds;
|
|
20
22
|
this.bulk = bulk;
|
|
21
23
|
this.queueUrl = queueUrl;
|
|
24
|
+
this.attributeNames = attributeNames;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
async sendCommand(
|
|
@@ -39,6 +42,19 @@ export class Sqs implements IQueue {
|
|
|
39
42
|
return (await this.sendCommand(command)) as ReceiveMessageResult;
|
|
40
43
|
}
|
|
41
44
|
|
|
45
|
+
async receiveMessagesV2(): Promise<ReceiveMessageResult> {
|
|
46
|
+
const input = {
|
|
47
|
+
QueueUrl: this.queueUrl,
|
|
48
|
+
AttributeNames: this.attributeNames,
|
|
49
|
+
MaxNumberOfMessages: this.bulk,
|
|
50
|
+
WaitTimeSeconds: this.waitTimeSeconds,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const command = new ReceiveMessageCommand(input);
|
|
54
|
+
|
|
55
|
+
return (await this.sendCommand(command)) as ReceiveMessageResult;
|
|
56
|
+
}
|
|
57
|
+
|
|
42
58
|
async deleteMessage(receiptHandle): Promise<unknown> {
|
|
43
59
|
const deleteCommand = new DeleteMessageCommand({
|
|
44
60
|
QueueUrl: this.queueUrl,
|
|
@@ -3,7 +3,8 @@ import { Message, ReceiveMessageResult } from '@aws-sdk/client-sqs';
|
|
|
3
3
|
export interface IQueue {
|
|
4
4
|
deleteMessage(message: Array<Message> | Message): Promise<unknown>;
|
|
5
5
|
receiveMessages(): Promise<ReceiveMessageResult>;
|
|
6
|
-
|
|
6
|
+
receiveMessagesV2(): Promise<ReceiveMessageResult>;
|
|
7
|
+
setup({ waitTimeSeconds, bulk, queueUrl, attributeNames }): void;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
export const IQueue = Symbol('IQueue');
|
package/src/lib/queue/queue.ts
CHANGED
|
@@ -2,7 +2,11 @@ import { Inject, Injectable } from '@nestjs/common';
|
|
|
2
2
|
import { QueueConfig } from './types/queue.type';
|
|
3
3
|
import { IConsumer } from './interfaces/consumer.interface';
|
|
4
4
|
import { IQueue } from './interfaces/queue.interface';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Message,
|
|
7
|
+
QueueAttributeName,
|
|
8
|
+
ReceiveMessageResult,
|
|
9
|
+
} from '@aws-sdk/client-sqs';
|
|
6
10
|
|
|
7
11
|
@Injectable()
|
|
8
12
|
export class Queue {
|
|
@@ -16,6 +20,10 @@ export class Queue {
|
|
|
16
20
|
|
|
17
21
|
private waitTimeSeconds: number = 20;
|
|
18
22
|
|
|
23
|
+
private attributeNames: Array<QueueAttributeName> = [QueueAttributeName.All];
|
|
24
|
+
|
|
25
|
+
private version: number = 1;
|
|
26
|
+
|
|
19
27
|
constructor(@Inject(IQueue) private readonly broker: IQueue) {}
|
|
20
28
|
|
|
21
29
|
async handler({
|
|
@@ -23,26 +31,32 @@ export class Queue {
|
|
|
23
31
|
context = null,
|
|
24
32
|
bulk = 1,
|
|
25
33
|
waitTimeSeconds = 20,
|
|
34
|
+
attributeNames = [QueueAttributeName.All],
|
|
35
|
+
version = 1,
|
|
26
36
|
}: QueueConfig): Promise<void> {
|
|
27
37
|
this.queueUrl = QueueUrl;
|
|
28
38
|
this.bulk = bulk;
|
|
29
39
|
this.context = context;
|
|
30
40
|
this.waitTimeSeconds = waitTimeSeconds;
|
|
41
|
+
this.attributeNames = attributeNames;
|
|
42
|
+
this.version = version;
|
|
31
43
|
|
|
32
44
|
this.broker.setup({
|
|
33
45
|
waitTimeSeconds: this.waitTimeSeconds,
|
|
34
46
|
bulk: this.bulk,
|
|
35
47
|
queueUrl: this.queueUrl,
|
|
48
|
+
attributeNames: this.attributeNames,
|
|
36
49
|
});
|
|
37
50
|
|
|
38
51
|
while (!this.inWork) {
|
|
39
|
-
await this.run();
|
|
52
|
+
await this.run(version);
|
|
40
53
|
}
|
|
41
54
|
}
|
|
42
55
|
|
|
43
|
-
async run() {
|
|
56
|
+
async run(version: number) {
|
|
44
57
|
this.inWork = true;
|
|
45
|
-
|
|
58
|
+
|
|
59
|
+
const response = await this.receiveMessages(version);
|
|
46
60
|
|
|
47
61
|
try {
|
|
48
62
|
if (this.bulk === 1) {
|
|
@@ -70,8 +84,12 @@ export class Queue {
|
|
|
70
84
|
this.inWork = false;
|
|
71
85
|
}
|
|
72
86
|
|
|
73
|
-
async receiveMessages(): Promise<ReceiveMessageResult> {
|
|
74
|
-
|
|
87
|
+
async receiveMessages(version: number): Promise<ReceiveMessageResult> {
|
|
88
|
+
if (version === 1) {
|
|
89
|
+
return await this.broker.receiveMessages();
|
|
90
|
+
} else if (version === 2) {
|
|
91
|
+
return await this.broker.receiveMessagesV2();
|
|
92
|
+
}
|
|
75
93
|
}
|
|
76
94
|
|
|
77
95
|
async deleteMessage(receiptHandle): Promise<unknown> {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { QueueAttributeName } from '@aws-sdk/client-sqs';
|
|
1
2
|
import { IConsumer } from '../interfaces/consumer.interface';
|
|
2
3
|
|
|
3
4
|
export type QueueConfig = {
|
|
@@ -5,4 +6,6 @@ export type QueueConfig = {
|
|
|
5
6
|
context: IConsumer;
|
|
6
7
|
bulk: number;
|
|
7
8
|
waitTimeSeconds?: number;
|
|
9
|
+
attributeNames?: Array<QueueAttributeName>;
|
|
10
|
+
version?: number;
|
|
8
11
|
};
|