@anchan828/nest-cloud-run-queue-worker 3.1.2 → 3.1.3
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/interfaces.d.ts +10 -0
- package/dist/util.d.ts +5 -2
- package/dist/util.js +29 -16
- package/dist/worker.service.js +6 -2
- package/package.json +3 -3
package/dist/interfaces.d.ts
CHANGED
|
@@ -16,6 +16,13 @@ export interface QueueWorkerModuleOptions extends ModuleOptions {
|
|
|
16
16
|
* @memberof QueueWorkerModuleOptions
|
|
17
17
|
*/
|
|
18
18
|
maxRetryAttempts?: number;
|
|
19
|
+
/**
|
|
20
|
+
* extra config
|
|
21
|
+
*
|
|
22
|
+
* @type {QueueWorkerExtraConfig}
|
|
23
|
+
* @memberof QueueWorkerModuleOptions
|
|
24
|
+
*/
|
|
25
|
+
extraConfig?: QueueWorkerExtraConfig;
|
|
19
26
|
/**
|
|
20
27
|
* Define a Route for the controller.
|
|
21
28
|
* Default: POST /
|
|
@@ -40,6 +47,9 @@ export interface QueueWorkerProcessorMetadata extends QueueWorkerProcessDecorato
|
|
|
40
47
|
processorName: string;
|
|
41
48
|
processor: QueueWorkerProcessor;
|
|
42
49
|
}
|
|
50
|
+
export type QueueWorkerExtraConfig = {
|
|
51
|
+
parseReviver?: (key: string, value: any) => any;
|
|
52
|
+
};
|
|
43
53
|
export interface QueueWorkerDecoratorArgs {
|
|
44
54
|
names: QueueWorkerName[];
|
|
45
55
|
/**
|
package/dist/util.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { QueueWorkerDecodedMessage, QueueWorkerRawMessage } from "./interfaces";
|
|
|
5
5
|
* JSON.parse has receiver for Date.parse.
|
|
6
6
|
* @param json
|
|
7
7
|
*/
|
|
8
|
-
export declare const parseJSON: <T>(json: string) => T;
|
|
8
|
+
export declare const parseJSON: <T>(json: string, reviver?: (key: string, value: any) => any) => T;
|
|
9
9
|
/**
|
|
10
10
|
* sort array by priority prop
|
|
11
11
|
*
|
|
@@ -25,6 +25,9 @@ export declare function sortByPriority<T extends {
|
|
|
25
25
|
* @return {*} {boolean}
|
|
26
26
|
*/
|
|
27
27
|
export declare function isBase64<T = any>(value?: string | null | Message<T>): value is string;
|
|
28
|
-
export declare function decodeMessage<T = any>(message: QueueWorkerRawMessage<T> | Message): QueueWorkerDecodedMessage<T>;
|
|
28
|
+
export declare function decodeMessage<T = any>(message: QueueWorkerRawMessage<T> | Message, reviver?: (key: string, value: any) => any): QueueWorkerDecodedMessage<T>;
|
|
29
29
|
export declare function isDecodedMessage<T = any>(message: QueueWorkerRawMessage<T> | QueueWorkerDecodedMessage<T> | Message<T>): message is QueueWorkerDecodedMessage<T>;
|
|
30
|
+
export declare function isTaskMessage<T>(message?: QueueWorkerRawMessage<T> | Message<T> | null): message is Message<T> & {
|
|
31
|
+
headers?: Record<string, string>;
|
|
32
|
+
};
|
|
30
33
|
export declare function isMessage<T>(message?: QueueWorkerRawMessage<T> | Message<T> | null): message is Message<T>;
|
package/dist/util.js
CHANGED
|
@@ -5,6 +5,7 @@ exports.sortByPriority = sortByPriority;
|
|
|
5
5
|
exports.isBase64 = isBase64;
|
|
6
6
|
exports.decodeMessage = decodeMessage;
|
|
7
7
|
exports.isDecodedMessage = isDecodedMessage;
|
|
8
|
+
exports.isTaskMessage = isTaskMessage;
|
|
8
9
|
exports.isMessage = isMessage;
|
|
9
10
|
const common_1 = require("@nestjs/common");
|
|
10
11
|
const constants_1 = require("./constants");
|
|
@@ -14,18 +15,19 @@ const dateRegExp = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
|
14
15
|
* JSON.parse has receiver for Date.parse.
|
|
15
16
|
* @param json
|
|
16
17
|
*/
|
|
17
|
-
const parseJSON = (json) => {
|
|
18
|
-
return JSON.parse(json, (
|
|
19
|
-
if (typeof value === "string" && value.length === 24 && dateRegExp.test(value)) {
|
|
20
|
-
const date = new Date(value);
|
|
21
|
-
if (+date === +date) {
|
|
22
|
-
return date;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return value;
|
|
26
|
-
});
|
|
18
|
+
const parseJSON = (json, reviver) => {
|
|
19
|
+
return JSON.parse(json, (key, value) => reviver ? reviver(key, parseDate(key, value)) : parseDate(key, value));
|
|
27
20
|
};
|
|
28
21
|
exports.parseJSON = parseJSON;
|
|
22
|
+
function parseDate(key, value) {
|
|
23
|
+
if (typeof value === "string" && value.length === 24 && dateRegExp.test(value)) {
|
|
24
|
+
const date = new Date(value);
|
|
25
|
+
if (+date === +date) {
|
|
26
|
+
return date;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
29
31
|
/**
|
|
30
32
|
* sort array by priority prop
|
|
31
33
|
*
|
|
@@ -62,14 +64,18 @@ function isBase64(value) {
|
|
|
62
64
|
const firstPaddingChar = value.indexOf("=");
|
|
63
65
|
return (firstPaddingChar === -1 || firstPaddingChar === len - 1 || (firstPaddingChar === len - 2 && value[len - 1] === "="));
|
|
64
66
|
}
|
|
65
|
-
function decodeMessage(message) {
|
|
67
|
+
function decodeMessage(message, reviver) {
|
|
66
68
|
let data;
|
|
67
69
|
if (isBase64(message.data)) {
|
|
68
70
|
// pubsub
|
|
69
|
-
data = decodeData(message.data);
|
|
71
|
+
data = decodeData(message.data, reviver);
|
|
72
|
+
}
|
|
73
|
+
else if (isTaskMessage(message)) {
|
|
74
|
+
// tasks
|
|
75
|
+
data = { data: JSON.parse(JSON.stringify(message.data), reviver), name: message.name };
|
|
70
76
|
}
|
|
71
77
|
else {
|
|
72
|
-
//
|
|
78
|
+
// http / raw
|
|
73
79
|
const _message = isMessage(message) ? message : isMessage(message.data) ? message.data : undefined;
|
|
74
80
|
if (!_message) {
|
|
75
81
|
throw new common_1.BadRequestException(constants_1.ERROR_INVALID_MESSAGE_FORMAT);
|
|
@@ -89,12 +95,19 @@ function decodeMessage(message) {
|
|
|
89
95
|
function isDecodedMessage(message) {
|
|
90
96
|
return "raw" in message;
|
|
91
97
|
}
|
|
98
|
+
function isTaskMessage(message) {
|
|
99
|
+
if (!message) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const keys = Object.keys(message);
|
|
103
|
+
return keys.length <= 3 && keys.includes("name") && keys.includes("headers");
|
|
104
|
+
}
|
|
92
105
|
function isMessage(message) {
|
|
93
106
|
if (!message) {
|
|
94
107
|
return false;
|
|
95
108
|
}
|
|
96
109
|
const keys = Object.keys(message);
|
|
97
|
-
return keys.length <=
|
|
110
|
+
return keys.length <= 3 && keys.includes("name");
|
|
98
111
|
}
|
|
99
112
|
function getMessageId(raw) {
|
|
100
113
|
if (!raw) {
|
|
@@ -108,7 +121,7 @@ function getMessageId(raw) {
|
|
|
108
121
|
}
|
|
109
122
|
return "";
|
|
110
123
|
}
|
|
111
|
-
function decodeData(data) {
|
|
124
|
+
function decodeData(data, reviver) {
|
|
112
125
|
if (!data) {
|
|
113
126
|
throw new common_1.BadRequestException(constants_1.ERROR_INVALID_MESSAGE_FORMAT);
|
|
114
127
|
}
|
|
@@ -123,7 +136,7 @@ function decodeData(data) {
|
|
|
123
136
|
}
|
|
124
137
|
try {
|
|
125
138
|
if (typeof data === "string") {
|
|
126
|
-
return (0, exports.parseJSON)(data);
|
|
139
|
+
return (0, exports.parseJSON)(data, reviver);
|
|
127
140
|
}
|
|
128
141
|
return data;
|
|
129
142
|
}
|
package/dist/worker.service.js
CHANGED
|
@@ -38,7 +38,9 @@ let QueueWorkerService = class QueueWorkerService {
|
|
|
38
38
|
_QueueWorkerService__allWorkers.set(this, void 0);
|
|
39
39
|
}
|
|
40
40
|
async execute(meessage) {
|
|
41
|
-
const decodedMessage = (0, util_1.isDecodedMessage)(meessage)
|
|
41
|
+
const decodedMessage = (0, util_1.isDecodedMessage)(meessage)
|
|
42
|
+
? meessage
|
|
43
|
+
: (0, util_1.decodeMessage)(meessage, this.options.extraConfig?.parseReviver);
|
|
42
44
|
if (this.options.throwModuleError && !decodedMessage.data.name) {
|
|
43
45
|
throw new common_1.BadRequestException(constants_1.ERROR_QUEUE_WORKER_NAME_NOT_FOUND);
|
|
44
46
|
}
|
|
@@ -53,7 +55,9 @@ let QueueWorkerService = class QueueWorkerService {
|
|
|
53
55
|
return results;
|
|
54
56
|
}
|
|
55
57
|
getWorkers(meessage) {
|
|
56
|
-
const decodedMessage = (0, util_1.isDecodedMessage)(meessage)
|
|
58
|
+
const decodedMessage = (0, util_1.isDecodedMessage)(meessage)
|
|
59
|
+
? meessage
|
|
60
|
+
: (0, util_1.decodeMessage)(meessage, this.options.extraConfig?.parseReviver);
|
|
57
61
|
if (!decodedMessage.data.name) {
|
|
58
62
|
return [];
|
|
59
63
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anchan828/nest-cloud-run-queue-worker",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.3",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "https://github.com/anchan828/nest-cloud-run-queue/tree/master/packages/worker#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"watch": "tsc -w"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@anchan828/nest-cloud-run-queue-common": "^3.1.
|
|
36
|
+
"@anchan828/nest-cloud-run-queue-common": "^3.1.3"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@nestjs/common": "10.3.10",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
48
|
"packageManager": "npm@10.8.2",
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "c33cfa67028e79e9bf101108d7392e73ba26edca"
|
|
50
50
|
}
|