node-easywechat 3.7.2 → 3.7.4
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/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/dist/Core/Encryptor.d.ts +0 -1
- package/dist/Core/Http/Contracts/MessageInterface.d.ts +0 -1
- package/dist/Core/Http/Minxins/MessageMixin.d.ts +0 -1
- package/dist/Core/Http/ServerRequest.d.ts +0 -2
- package/dist/Core/Http/ServerRequest.js +1 -0
- package/dist/Core/HttpClient/Mixins/PresetMixin.d.ts +0 -1
- package/dist/Core/Support/AES.d.ts +0 -3
- package/dist/Core/Support/PKCS.d.ts +0 -1
- package/dist/Core/Support/PrivateKey.d.ts +0 -1
- package/dist/Core/Support/PublicKey.d.ts +0 -1
- package/dist/Core/Support/RSA.d.ts +0 -2
- package/dist/Core/Support/Utils.d.ts +0 -4
- package/dist/OfficialAccount/Server.d.ts +1 -1
- package/dist/OfficialAccount/Server.js +3 -2
- package/dist/OpenPlatform/Server.d.ts +1 -1
- package/dist/OpenPlatform/Server.js +3 -2
- package/dist/OpenWork/Encryptor.d.ts +0 -1
- package/dist/OpenWork/Server.d.ts +1 -1
- package/dist/OpenWork/Server.js +3 -2
- package/dist/OpenWork/SuiteEncryptor.d.ts +0 -1
- package/dist/Pay/Client.d.ts +0 -2
- package/dist/Pay/Encryptor.d.ts +0 -1
- package/dist/Work/Encryptor.d.ts +0 -1
- package/dist/Work/Server.d.ts +1 -1
- package/dist/Work/Server.js +3 -2
- package/dist/index.js +21 -21
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -292,7 +292,7 @@ client.setLogger((...args) => {
|
|
|
292
292
|
|
|
293
293
|
#### 缓存模块
|
|
294
294
|
|
|
295
|
-
框架默认使用文件缓存读取到的 `access_token` 等值,如需要改用其他缓存方式(如:redis),请实现接口 `CacheInterface` 并通过 `app.
|
|
295
|
+
框架默认使用文件缓存读取到的 `access_token` 等值,如需要改用其他缓存方式(如:redis),请实现接口 `CacheInterface` 并通过 `app.setCache` 方法进行模块替换。
|
|
296
296
|
|
|
297
297
|
```js
|
|
298
298
|
const { OfficialAccount, CacheInterface } = require('node-easywechat');
|
|
@@ -337,7 +337,7 @@ let app = new OfficialAccount({
|
|
|
337
337
|
});
|
|
338
338
|
|
|
339
339
|
// 替换缓存实例
|
|
340
|
-
app.
|
|
340
|
+
app.setCache(new RedisCacher(new Redis));
|
|
341
341
|
```
|
|
342
342
|
|
|
343
343
|
#### 请求模块
|
package/dist/Core/Encryptor.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ declare class Server extends ServerInterface {
|
|
|
33
33
|
* @returns
|
|
34
34
|
*/
|
|
35
35
|
getRequestMessage(request?: ServerRequestInterface): Promise<Message>;
|
|
36
|
-
protected decryptRequestMessage(
|
|
36
|
+
protected decryptRequestMessage(): ServerHandlerClosure<Message>;
|
|
37
37
|
/**
|
|
38
38
|
* 获取解密后的消息
|
|
39
39
|
* @param request 未设置该参数时,则从当前服务端收到的请求中获取
|
|
@@ -23,7 +23,7 @@ class Server extends ServerInterface_1.default {
|
|
|
23
23
|
}
|
|
24
24
|
let message = await this.getRequestMessage(this.request);
|
|
25
25
|
if (this.encryptor && query['msg_signature']) {
|
|
26
|
-
this.prepend(this.decryptRequestMessage(
|
|
26
|
+
this.prepend(this.decryptRequestMessage());
|
|
27
27
|
}
|
|
28
28
|
let response = await this.handle(new Response_1.default(200, {}, 'success'), message);
|
|
29
29
|
if (!(response instanceof Response_1.default)) {
|
|
@@ -64,8 +64,9 @@ class Server extends ServerInterface_1.default {
|
|
|
64
64
|
getRequestMessage(request = null) {
|
|
65
65
|
return Message_1.default.createFromRequest(request || this.request);
|
|
66
66
|
}
|
|
67
|
-
decryptRequestMessage(
|
|
67
|
+
decryptRequestMessage() {
|
|
68
68
|
return async (message, next) => {
|
|
69
|
+
let query = this.request.getQueryParams();
|
|
69
70
|
message = await this.decryptMessage(message, this.encryptor, query['msg_signature'] || '', query['timestamp'] || '', query['nonce'] || '');
|
|
70
71
|
return next(message);
|
|
71
72
|
};
|
|
@@ -50,7 +50,7 @@ declare class Server extends ServerInterface {
|
|
|
50
50
|
* @returns
|
|
51
51
|
*/
|
|
52
52
|
handleThirdFastRegister(handler: ServerHandlerClosure<Message>): this;
|
|
53
|
-
protected decryptRequestMessage(
|
|
53
|
+
protected decryptRequestMessage(): ServerHandlerClosure<Message>;
|
|
54
54
|
/**
|
|
55
55
|
* 获取来自微信服务器的推送消息
|
|
56
56
|
* @param request 未设置该参数时,则从当前服务端收到的请求中获取
|
|
@@ -24,7 +24,7 @@ class Server extends ServerInterface_1.default {
|
|
|
24
24
|
}
|
|
25
25
|
let message = await this.getRequestMessage(this.request);
|
|
26
26
|
if (this.encryptor && query['msg_signature']) {
|
|
27
|
-
this.prepend(this.decryptRequestMessage(
|
|
27
|
+
this.prepend(this.decryptRequestMessage());
|
|
28
28
|
}
|
|
29
29
|
let response = await this.handle(new Response_1.default(200, {}, 'success'), message);
|
|
30
30
|
if (!(response instanceof Response_1.default)) {
|
|
@@ -96,8 +96,9 @@ class Server extends ServerInterface_1.default {
|
|
|
96
96
|
return message.InfoType === 'notify_third_fasteregister' ? handler(message, next) : next(message);
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
-
decryptRequestMessage(
|
|
99
|
+
decryptRequestMessage() {
|
|
100
100
|
return async (message, next) => {
|
|
101
|
+
let query = this.request.getQueryParams();
|
|
101
102
|
message = await this.decryptMessage(message, this.encryptor, query['msg_signature'] || '', query['timestamp'] || '', query['nonce'] || '');
|
|
102
103
|
return next(message);
|
|
103
104
|
};
|
|
@@ -92,7 +92,7 @@ declare class Server extends ServerInterface {
|
|
|
92
92
|
* @returns
|
|
93
93
|
*/
|
|
94
94
|
getRequestMessage(request?: ServerRequestInterface): Promise<Message>;
|
|
95
|
-
protected decryptRequestMessage(
|
|
95
|
+
protected decryptRequestMessage(): ServerHandlerClosure<Message>;
|
|
96
96
|
/**
|
|
97
97
|
* 获取解密后的消息
|
|
98
98
|
* @param request 未设置该参数时,则从当前服务端收到的请求中获取
|
package/dist/OpenWork/Server.js
CHANGED
|
@@ -25,7 +25,7 @@ class Server extends ServerInterface_1.default {
|
|
|
25
25
|
}
|
|
26
26
|
let message = await this.getRequestMessage(this.request);
|
|
27
27
|
if (this.encryptor && query['msg_signature']) {
|
|
28
|
-
this.prepend(this.decryptRequestMessage(
|
|
28
|
+
this.prepend(this.decryptRequestMessage());
|
|
29
29
|
}
|
|
30
30
|
let response = await this.handle(new Response_1.default(200, {}, 'success'), message);
|
|
31
31
|
if (!(response instanceof Response_1.default)) {
|
|
@@ -176,8 +176,9 @@ class Server extends ServerInterface_1.default {
|
|
|
176
176
|
getRequestMessage(request = null) {
|
|
177
177
|
return Message_1.default.createFromRequest(request ?? this.request);
|
|
178
178
|
}
|
|
179
|
-
decryptRequestMessage(
|
|
179
|
+
decryptRequestMessage() {
|
|
180
180
|
return async (message, next) => {
|
|
181
|
+
let query = this.request.getQueryParams();
|
|
181
182
|
message = await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
|
|
182
183
|
return next(message);
|
|
183
184
|
};
|
package/dist/Pay/Client.d.ts
CHANGED
package/dist/Pay/Encryptor.d.ts
CHANGED
package/dist/Work/Encryptor.d.ts
CHANGED
package/dist/Work/Server.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ declare class Server extends ServerInterface {
|
|
|
79
79
|
*/
|
|
80
80
|
getRequestMessage(request?: ServerRequestInterface): Promise<Message>;
|
|
81
81
|
protected validateUrl(): (message: Message, next: ServerHandlerClosure) => Promise<Response>;
|
|
82
|
-
protected decryptRequestMessage(
|
|
82
|
+
protected decryptRequestMessage(): ServerHandlerClosure;
|
|
83
83
|
/**
|
|
84
84
|
* 获取解密后的消息
|
|
85
85
|
* @param request 未设置该参数时,则从当前服务端收到的请求中获取
|
package/dist/Work/Server.js
CHANGED
|
@@ -23,7 +23,7 @@ class Server extends ServerInterface_1.default {
|
|
|
23
23
|
}
|
|
24
24
|
let message = await this.getRequestMessage(this.request);
|
|
25
25
|
if (this.encryptor && query['msg_signature']) {
|
|
26
|
-
this.prepend(this.decryptRequestMessage(
|
|
26
|
+
this.prepend(this.decryptRequestMessage());
|
|
27
27
|
}
|
|
28
28
|
let response = await this.handle(new Response_1.default(200, {}, 'SUCCESS'), message);
|
|
29
29
|
if (!(response instanceof Response_1.default)) {
|
|
@@ -151,8 +151,9 @@ class Server extends ServerInterface_1.default {
|
|
|
151
151
|
return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
|
-
decryptRequestMessage(
|
|
154
|
+
decryptRequestMessage() {
|
|
155
155
|
return async (message, next) => {
|
|
156
|
+
let query = this.request.getQueryParams();
|
|
156
157
|
message = await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
|
|
157
158
|
return next(message);
|
|
158
159
|
};
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.FormData = exports.PrivateKey = exports.PublicKey = exports.ServerRequest = exports.CacheInterface = exports.Channel = exports.OpenWork = exports.Work = exports.OpenPlatform = exports.Pay = exports.MiniApp = exports.OfficialAccount = void 0;
|
|
7
|
+
exports.defineOfficialAccountConfig = defineOfficialAccountConfig;
|
|
8
|
+
exports.defineMiniAppConfig = defineMiniAppConfig;
|
|
9
|
+
exports.definePayConfig = definePayConfig;
|
|
10
|
+
exports.defineOpenPlatformConfig = defineOpenPlatformConfig;
|
|
11
|
+
exports.defineWorkConfig = defineWorkConfig;
|
|
12
|
+
exports.defineOpenWorkConfig = defineOpenWorkConfig;
|
|
13
|
+
exports.defineChannelConfig = defineChannelConfig;
|
|
14
|
+
exports.defineLogHandler = defineLogHandler;
|
|
15
|
+
exports.defineOfficeAccountServerHandler = defineOfficeAccountServerHandler;
|
|
16
|
+
exports.defineMiniAppServerHandler = defineMiniAppServerHandler;
|
|
17
|
+
exports.defineWorkServerHandler = defineWorkServerHandler;
|
|
18
|
+
exports.defineOpenPlatformServerHandler = defineOpenPlatformServerHandler;
|
|
19
|
+
exports.defineOpenWorkServerHandler = defineOpenWorkServerHandler;
|
|
20
|
+
exports.defineChannelServerHandler = defineChannelServerHandler;
|
|
21
|
+
exports.defineHttpClientFailureJudgeClosure = defineHttpClientFailureJudgeClosure;
|
|
22
|
+
exports.definePaymentFailHandler = definePaymentFailHandler;
|
|
23
|
+
exports.definePaymentAlertHandler = definePaymentAlertHandler;
|
|
24
|
+
exports.definePaymentPaidHandler = definePaymentPaidHandler;
|
|
25
|
+
exports.definePaymentRefundedHandler = definePaymentRefundedHandler;
|
|
26
|
+
exports.definePaymentScannedHandler = definePaymentScannedHandler;
|
|
7
27
|
const Application_1 = __importDefault(require("./OfficialAccount/Application"));
|
|
8
28
|
exports.OfficialAccount = Application_1.default;
|
|
9
29
|
const Application_2 = __importDefault(require("./MiniApp/Application"));
|
|
@@ -35,7 +55,6 @@ Object.defineProperty(exports, "PrivateKey", { enumerable: true, get: function (
|
|
|
35
55
|
function defineOfficialAccountConfig(config) {
|
|
36
56
|
return config;
|
|
37
57
|
}
|
|
38
|
-
exports.defineOfficialAccountConfig = defineOfficialAccountConfig;
|
|
39
58
|
/**
|
|
40
59
|
* 定义小程序配置
|
|
41
60
|
* @param config
|
|
@@ -43,7 +62,6 @@ exports.defineOfficialAccountConfig = defineOfficialAccountConfig;
|
|
|
43
62
|
function defineMiniAppConfig(config) {
|
|
44
63
|
return config;
|
|
45
64
|
}
|
|
46
|
-
exports.defineMiniAppConfig = defineMiniAppConfig;
|
|
47
65
|
/**
|
|
48
66
|
* 定义支付配置
|
|
49
67
|
* @param config
|
|
@@ -51,7 +69,6 @@ exports.defineMiniAppConfig = defineMiniAppConfig;
|
|
|
51
69
|
function definePayConfig(config) {
|
|
52
70
|
return config;
|
|
53
71
|
}
|
|
54
|
-
exports.definePayConfig = definePayConfig;
|
|
55
72
|
/**
|
|
56
73
|
* 定义开放平台配置
|
|
57
74
|
* @param config
|
|
@@ -59,7 +76,6 @@ exports.definePayConfig = definePayConfig;
|
|
|
59
76
|
function defineOpenPlatformConfig(config) {
|
|
60
77
|
return config;
|
|
61
78
|
}
|
|
62
|
-
exports.defineOpenPlatformConfig = defineOpenPlatformConfig;
|
|
63
79
|
/**
|
|
64
80
|
* 定义企业微信配置
|
|
65
81
|
* @param config
|
|
@@ -67,7 +83,6 @@ exports.defineOpenPlatformConfig = defineOpenPlatformConfig;
|
|
|
67
83
|
function defineWorkConfig(config) {
|
|
68
84
|
return config;
|
|
69
85
|
}
|
|
70
|
-
exports.defineWorkConfig = defineWorkConfig;
|
|
71
86
|
/**
|
|
72
87
|
* 定义企业微信开放平台配置
|
|
73
88
|
* @param config
|
|
@@ -75,7 +90,6 @@ exports.defineWorkConfig = defineWorkConfig;
|
|
|
75
90
|
function defineOpenWorkConfig(config) {
|
|
76
91
|
return config;
|
|
77
92
|
}
|
|
78
|
-
exports.defineOpenWorkConfig = defineOpenWorkConfig;
|
|
79
93
|
/**
|
|
80
94
|
* 定义视频号配置
|
|
81
95
|
* @param config
|
|
@@ -83,7 +97,6 @@ exports.defineOpenWorkConfig = defineOpenWorkConfig;
|
|
|
83
97
|
function defineChannelConfig(config) {
|
|
84
98
|
return config;
|
|
85
99
|
}
|
|
86
|
-
exports.defineChannelConfig = defineChannelConfig;
|
|
87
100
|
/**
|
|
88
101
|
* 定义日志处理函数
|
|
89
102
|
* @param func
|
|
@@ -91,7 +104,6 @@ exports.defineChannelConfig = defineChannelConfig;
|
|
|
91
104
|
function defineLogHandler(func) {
|
|
92
105
|
return func;
|
|
93
106
|
}
|
|
94
|
-
exports.defineLogHandler = defineLogHandler;
|
|
95
107
|
/**
|
|
96
108
|
* 定义公众号服务端消息处理函数
|
|
97
109
|
* @param func
|
|
@@ -99,7 +111,6 @@ exports.defineLogHandler = defineLogHandler;
|
|
|
99
111
|
function defineOfficeAccountServerHandler(func) {
|
|
100
112
|
return func;
|
|
101
113
|
}
|
|
102
|
-
exports.defineOfficeAccountServerHandler = defineOfficeAccountServerHandler;
|
|
103
114
|
/**
|
|
104
115
|
* 定义小程序服务端消息处理函数
|
|
105
116
|
* @param func
|
|
@@ -107,7 +118,6 @@ exports.defineOfficeAccountServerHandler = defineOfficeAccountServerHandler;
|
|
|
107
118
|
function defineMiniAppServerHandler(func) {
|
|
108
119
|
return func;
|
|
109
120
|
}
|
|
110
|
-
exports.defineMiniAppServerHandler = defineMiniAppServerHandler;
|
|
111
121
|
/**
|
|
112
122
|
* 定义企业微信服务端消息处理函数
|
|
113
123
|
* @param func
|
|
@@ -115,7 +125,6 @@ exports.defineMiniAppServerHandler = defineMiniAppServerHandler;
|
|
|
115
125
|
function defineWorkServerHandler(func) {
|
|
116
126
|
return func;
|
|
117
127
|
}
|
|
118
|
-
exports.defineWorkServerHandler = defineWorkServerHandler;
|
|
119
128
|
/**
|
|
120
129
|
* 定义开放平台服务端消息处理函数
|
|
121
130
|
* @param func
|
|
@@ -123,7 +132,6 @@ exports.defineWorkServerHandler = defineWorkServerHandler;
|
|
|
123
132
|
function defineOpenPlatformServerHandler(func) {
|
|
124
133
|
return func;
|
|
125
134
|
}
|
|
126
|
-
exports.defineOpenPlatformServerHandler = defineOpenPlatformServerHandler;
|
|
127
135
|
/**
|
|
128
136
|
* 定义企业微信开放平台服务端消息处理函数
|
|
129
137
|
* @param func
|
|
@@ -131,7 +139,6 @@ exports.defineOpenPlatformServerHandler = defineOpenPlatformServerHandler;
|
|
|
131
139
|
function defineOpenWorkServerHandler(func) {
|
|
132
140
|
return func;
|
|
133
141
|
}
|
|
134
|
-
exports.defineOpenWorkServerHandler = defineOpenWorkServerHandler;
|
|
135
142
|
/**
|
|
136
143
|
* 定义视频号服务端消息处理函数
|
|
137
144
|
* @param func
|
|
@@ -139,7 +146,6 @@ exports.defineOpenWorkServerHandler = defineOpenWorkServerHandler;
|
|
|
139
146
|
function defineChannelServerHandler(func) {
|
|
140
147
|
return func;
|
|
141
148
|
}
|
|
142
|
-
exports.defineChannelServerHandler = defineChannelServerHandler;
|
|
143
149
|
/**
|
|
144
150
|
* 定义HttpClient错误判定回调
|
|
145
151
|
* @param func
|
|
@@ -147,7 +153,6 @@ exports.defineChannelServerHandler = defineChannelServerHandler;
|
|
|
147
153
|
function defineHttpClientFailureJudgeClosure(func) {
|
|
148
154
|
return func;
|
|
149
155
|
}
|
|
150
|
-
exports.defineHttpClientFailureJudgeClosure = defineHttpClientFailureJudgeClosure;
|
|
151
156
|
/**
|
|
152
157
|
* 定义支付通知错误处理函数
|
|
153
158
|
* @param func
|
|
@@ -155,7 +160,6 @@ exports.defineHttpClientFailureJudgeClosure = defineHttpClientFailureJudgeClosur
|
|
|
155
160
|
function definePaymentFailHandler(func) {
|
|
156
161
|
return func;
|
|
157
162
|
}
|
|
158
|
-
exports.definePaymentFailHandler = definePaymentFailHandler;
|
|
159
163
|
/**
|
|
160
164
|
* 定义支付业务错误处理函数
|
|
161
165
|
* @param func
|
|
@@ -163,7 +167,6 @@ exports.definePaymentFailHandler = definePaymentFailHandler;
|
|
|
163
167
|
function definePaymentAlertHandler(func) {
|
|
164
168
|
return func;
|
|
165
169
|
}
|
|
166
|
-
exports.definePaymentAlertHandler = definePaymentAlertHandler;
|
|
167
170
|
/**
|
|
168
171
|
* 定义支付结果处理回调函数
|
|
169
172
|
* @param func
|
|
@@ -171,7 +174,6 @@ exports.definePaymentAlertHandler = definePaymentAlertHandler;
|
|
|
171
174
|
function definePaymentPaidHandler(func) {
|
|
172
175
|
return func;
|
|
173
176
|
}
|
|
174
|
-
exports.definePaymentPaidHandler = definePaymentPaidHandler;
|
|
175
177
|
/**
|
|
176
178
|
* 定义退款结果处理回调函数
|
|
177
179
|
* @param func
|
|
@@ -179,7 +181,6 @@ exports.definePaymentPaidHandler = definePaymentPaidHandler;
|
|
|
179
181
|
function definePaymentRefundedHandler(func) {
|
|
180
182
|
return func;
|
|
181
183
|
}
|
|
182
|
-
exports.definePaymentRefundedHandler = definePaymentRefundedHandler;
|
|
183
184
|
/**
|
|
184
185
|
* 定义扫码支付结果处理回调函数
|
|
185
186
|
* @param func
|
|
@@ -187,4 +188,3 @@ exports.definePaymentRefundedHandler = definePaymentRefundedHandler;
|
|
|
187
188
|
function definePaymentScannedHandler(func) {
|
|
188
189
|
return func;
|
|
189
190
|
}
|
|
190
|
-
exports.definePaymentScannedHandler = definePaymentScannedHandler;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-easywechat",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.4",
|
|
4
4
|
"description": "EasyWechat SDK for Node.js (NOT OFFICIAL)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
"node": ">=15.6.0"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@types/node": "^20.
|
|
25
|
+
"@types/node": "^20.14.15",
|
|
26
26
|
"axios-mock-adapter": "^1.22.0",
|
|
27
27
|
"mocha": "^9.2.2",
|
|
28
28
|
"package-release": "^1.0.3",
|
|
29
|
-
"typescript": "^5.4
|
|
29
|
+
"typescript": "^5.5.4"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"axios": "^1.
|
|
33
|
-
"axios-retry": "^4.
|
|
32
|
+
"axios": "^1.7.4",
|
|
33
|
+
"axios-retry": "^4.5.0",
|
|
34
34
|
"form-data": "^4.0.0",
|
|
35
35
|
"merge": "^2.1.1",
|
|
36
36
|
"node-socialite": "^1.4.1",
|
|
37
|
-
"qs": "^6.
|
|
37
|
+
"qs": "^6.13.0",
|
|
38
38
|
"raw-body": "^2.5.2",
|
|
39
39
|
"xml2js": "^0.6.2"
|
|
40
40
|
}
|