node-easywechat 3.7.0 → 3.7.2

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +7 -3
  3. package/dist/Channel/Application.js +1 -1
  4. package/dist/Core/Cache/FileCache.js +46 -63
  5. package/dist/Core/Contracts/AccessTokenInterface.js +2 -15
  6. package/dist/Core/Contracts/CacheInterface.js +4 -21
  7. package/dist/Core/Contracts/RefreshableAccessTokenInterface.js +1 -12
  8. package/dist/Core/Contracts/ServerInterface.js +1 -12
  9. package/dist/Core/Http/ServerRequest.js +34 -49
  10. package/dist/Core/HttpClient/AccessTokenAwareClient.js +6 -17
  11. package/dist/Core/HttpClient/Contracts/HttpClientInterface.js +1 -12
  12. package/dist/Core/HttpClient/HttpClient.js +74 -85
  13. package/dist/Core/HttpClient/HttpClientResponse.js +35 -50
  14. package/dist/Core/HttpClient/Mixins/HttpClientMethodsMixin.js +34 -59
  15. package/dist/Core/HttpClient/Mixins/PresetMixin.js +8 -11
  16. package/dist/Core/Message.js +20 -31
  17. package/dist/Core/Mixins/DecryptMessageMixin.js +13 -24
  18. package/dist/Core/Mixins/HandlersMixin.js +18 -31
  19. package/dist/Core/Mixins/ResponseMessageMixin.js +31 -44
  20. package/dist/Core/Support/Utils.js +8 -19
  21. package/dist/MiniApp/Application.js +1 -1
  22. package/dist/MiniApp/Utils.js +13 -24
  23. package/dist/OfficialAccount/AccessToken.js +42 -59
  24. package/dist/OfficialAccount/Application.js +1 -1
  25. package/dist/OfficialAccount/JsApiTicket.js +31 -44
  26. package/dist/OfficialAccount/Server.d.ts +6 -0
  27. package/dist/OfficialAccount/Server.js +39 -42
  28. package/dist/OfficialAccount/Utils.js +6 -17
  29. package/dist/OpenPlatform/Application.js +62 -86
  30. package/dist/OpenPlatform/Authorizer/MiniApp/Utils.js +14 -25
  31. package/dist/OpenPlatform/AuthorizerAccessToken.js +6 -19
  32. package/dist/OpenPlatform/ComponentAccessToken.js +27 -42
  33. package/dist/OpenPlatform/Server.d.ts +1 -1
  34. package/dist/OpenPlatform/Server.js +34 -56
  35. package/dist/OpenPlatform/VerifyTicket.js +14 -27
  36. package/dist/OpenWork/Application.js +61 -84
  37. package/dist/OpenWork/AuthorizerAccessToken.js +32 -47
  38. package/dist/OpenWork/JsApiTicket.js +64 -81
  39. package/dist/OpenWork/ProviderAccessToken.js +26 -41
  40. package/dist/OpenWork/Server.js +54 -95
  41. package/dist/OpenWork/SuiteAccessToken.js +27 -42
  42. package/dist/OpenWork/SuiteTicket.js +14 -27
  43. package/dist/Pay/Application.js +1 -2
  44. package/dist/Pay/Client.js +63 -77
  45. package/dist/Pay/LegacySignature.js +2 -3
  46. package/dist/Pay/Merchant.js +36 -52
  47. package/dist/Pay/Server.js +55 -70
  48. package/dist/Pay/Utils.js +13 -26
  49. package/dist/Pay/Validator.js +28 -39
  50. package/dist/Work/AccessToken.js +26 -41
  51. package/dist/Work/Application.js +21 -32
  52. package/dist/Work/JsApiTicket.js +60 -77
  53. package/dist/Work/Server.js +51 -87
  54. package/dist/Work/Utils.js +12 -25
  55. package/package.json +1 -1
  56. package/tsconfig.json +2 -2
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -26,22 +17,21 @@ class Server extends ServerInterface_1.default {
26
17
  * 服务端消息处理
27
18
  * @returns
28
19
  */
29
- serve() {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- var _a, _b, _c;
32
- let query = this.request.getQueryParams();
33
- if (!!query['echostr']) {
34
- let echostr = this.providerEncryptor.decrypt(query['echostr'], (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['nonce']) !== null && _b !== void 0 ? _b : '', (_c = query['timestamp']) !== null && _c !== void 0 ? _c : '');
35
- return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
36
- }
37
- let message = yield this.getRequestMessage(this.request);
20
+ async serve() {
21
+ let query = this.request.getQueryParams();
22
+ if (!!query['echostr']) {
23
+ let echostr = this.providerEncryptor.decrypt(query['echostr'], query['msg_signature'] ?? '', query['nonce'] ?? '', query['timestamp'] ?? '');
24
+ return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
25
+ }
26
+ let message = await this.getRequestMessage(this.request);
27
+ if (this.encryptor && query['msg_signature']) {
38
28
  this.prepend(this.decryptRequestMessage(query));
39
- let response = yield this.handle(new Response_1.default(200, {}, 'success'), message);
40
- if (!(response instanceof Response_1.default)) {
41
- response = yield this.transformToReply(response, message, this.encryptor);
42
- }
43
- return response;
44
- });
29
+ }
30
+ let response = await this.handle(new Response_1.default(200, {}, 'success'), message);
31
+ if (!(response instanceof Response_1.default)) {
32
+ response = await this.transformToReply(response, message, this.encryptor);
33
+ }
34
+ return response;
45
35
  }
46
36
  withDefaultSuiteTicketHandler(handler) {
47
37
  this.defaultSuiteTicketHandler = function () {
@@ -57,10 +47,8 @@ class Server extends ServerInterface_1.default {
57
47
  if (this.defaultSuiteTicketHandler) {
58
48
  this.withoutHandler(this.defaultSuiteTicketHandler);
59
49
  }
60
- return this.with(function (message, next) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- return message.InfoType === 'suite_ticket' ? handler(message, next) : next(message);
63
- });
50
+ return this.with(async function (message, next) {
51
+ return message.InfoType === 'suite_ticket' ? handler(message, next) : next(message);
64
52
  });
65
53
  }
66
54
  /**
@@ -68,10 +56,8 @@ class Server extends ServerInterface_1.default {
68
56
  * @param handler
69
57
  */
70
58
  handleAuthCreated(handler) {
71
- return this.with(function (message, next) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return message.InfoType === 'create_auth' ? handler(message, next) : next(message);
74
- });
59
+ return this.with(async function (message, next) {
60
+ return message.InfoType === 'create_auth' ? handler(message, next) : next(message);
75
61
  });
76
62
  }
77
63
  /**
@@ -79,10 +65,8 @@ class Server extends ServerInterface_1.default {
79
65
  * @param handler
80
66
  */
81
67
  handleAuthUpdated(handler) {
82
- return this.with(function (message, next) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- return message.InfoType === 'change_auth' ? handler(message, next) : next(message);
85
- });
68
+ return this.with(async function (message, next) {
69
+ return message.InfoType === 'change_auth' ? handler(message, next) : next(message);
86
70
  });
87
71
  }
88
72
  /**
@@ -90,10 +74,8 @@ class Server extends ServerInterface_1.default {
90
74
  * @param handler
91
75
  */
92
76
  handleAuthCancelled(handler) {
93
- return this.with(function (message, next) {
94
- return __awaiter(this, void 0, void 0, function* () {
95
- return message.InfoType === 'cancel_auth' ? handler(message, next) : next(message);
96
- });
77
+ return this.with(async function (message, next) {
78
+ return message.InfoType === 'cancel_auth' ? handler(message, next) : next(message);
97
79
  });
98
80
  }
99
81
  /**
@@ -101,10 +83,8 @@ class Server extends ServerInterface_1.default {
101
83
  * @param handler
102
84
  */
103
85
  handleUserCreated(handler) {
104
- return this.with(function (message, next) {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- return message.InfoType === 'change_contact' && message.ChangeType === 'create_user' ? handler(message, next) : next(message);
107
- });
86
+ return this.with(async function (message, next) {
87
+ return message.InfoType === 'change_contact' && message.ChangeType === 'create_user' ? handler(message, next) : next(message);
108
88
  });
109
89
  }
110
90
  /**
@@ -112,10 +92,8 @@ class Server extends ServerInterface_1.default {
112
92
  * @param handler
113
93
  */
114
94
  handleUserUpdated(handler) {
115
- return this.with(function (message, next) {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- return message.InfoType === 'change_contact' && message.ChangeType === 'update_user' ? handler(message, next) : next(message);
118
- });
95
+ return this.with(async function (message, next) {
96
+ return message.InfoType === 'change_contact' && message.ChangeType === 'update_user' ? handler(message, next) : next(message);
119
97
  });
120
98
  }
121
99
  /**
@@ -123,10 +101,8 @@ class Server extends ServerInterface_1.default {
123
101
  * @param handler
124
102
  */
125
103
  handleUserDeleted(handler) {
126
- return this.with(function (message, next) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- return message.InfoType === 'change_contact' && message.ChangeType === 'delete_user' ? handler(message, next) : next(message);
129
- });
104
+ return this.with(async function (message, next) {
105
+ return message.InfoType === 'change_contact' && message.ChangeType === 'delete_user' ? handler(message, next) : next(message);
130
106
  });
131
107
  }
132
108
  /**
@@ -134,10 +110,8 @@ class Server extends ServerInterface_1.default {
134
110
  * @param handler
135
111
  */
136
112
  handlePartyCreated(handler) {
137
- return this.with(function (message, next) {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- return message.InfoType === 'change_contact' && message.ChangeType === 'create_party' ? handler(message, next) : next(message);
140
- });
113
+ return this.with(async function (message, next) {
114
+ return message.InfoType === 'change_contact' && message.ChangeType === 'create_party' ? handler(message, next) : next(message);
141
115
  });
142
116
  }
143
117
  /**
@@ -145,10 +119,8 @@ class Server extends ServerInterface_1.default {
145
119
  * @param handler
146
120
  */
147
121
  handlePartyUpdated(handler) {
148
- return this.with(function (message, next) {
149
- return __awaiter(this, void 0, void 0, function* () {
150
- return message.InfoType === 'change_contact' && message.ChangeType === 'update_party' ? handler(message, next) : next(message);
151
- });
122
+ return this.with(async function (message, next) {
123
+ return message.InfoType === 'change_contact' && message.ChangeType === 'update_party' ? handler(message, next) : next(message);
152
124
  });
153
125
  }
154
126
  /**
@@ -156,10 +128,8 @@ class Server extends ServerInterface_1.default {
156
128
  * @param handler
157
129
  */
158
130
  handlePartyDeleted(handler) {
159
- return this.with(function (message, next) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- return message.InfoType === 'change_contact' && message.ChangeType === 'delete_party' ? handler(message, next) : next(message);
162
- });
131
+ return this.with(async function (message, next) {
132
+ return message.InfoType === 'change_contact' && message.ChangeType === 'delete_party' ? handler(message, next) : next(message);
163
133
  });
164
134
  }
165
135
  /**
@@ -167,10 +137,8 @@ class Server extends ServerInterface_1.default {
167
137
  * @param handler
168
138
  */
169
139
  handleUserTagUpdated(handler) {
170
- return this.with(function (message, next) {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- return message.InfoType === 'change_contact' && message.ChangeType === 'update_tag' ? handler(message, next) : next(message);
173
- });
140
+ return this.with(async function (message, next) {
141
+ return message.InfoType === 'change_contact' && message.ChangeType === 'update_tag' ? handler(message, next) : next(message);
174
142
  });
175
143
  }
176
144
  /**
@@ -178,10 +146,8 @@ class Server extends ServerInterface_1.default {
178
146
  * @param handler
179
147
  */
180
148
  handleShareAgentChanged(handler) {
181
- return this.with(function (message, next) {
182
- return __awaiter(this, void 0, void 0, function* () {
183
- return message.InfoType === 'share_agent_change' ? handler(message, next) : next(message);
184
- });
149
+ return this.with(async function (message, next) {
150
+ return message.InfoType === 'share_agent_change' ? handler(message, next) : next(message);
185
151
  });
186
152
  }
187
153
  /**
@@ -189,10 +155,8 @@ class Server extends ServerInterface_1.default {
189
155
  * @param handler
190
156
  */
191
157
  handleResetPermanentCode(handler) {
192
- return this.with(function (message, next) {
193
- return __awaiter(this, void 0, void 0, function* () {
194
- return message.InfoType === 'reset_permanent_code' ? handler(message, next) : next(message);
195
- });
158
+ return this.with(async function (message, next) {
159
+ return message.InfoType === 'reset_permanent_code' ? handler(message, next) : next(message);
196
160
  });
197
161
  }
198
162
  /**
@@ -200,10 +164,8 @@ class Server extends ServerInterface_1.default {
200
164
  * @param handler
201
165
  */
202
166
  handleChangeAppAdmin(handler) {
203
- return this.with(function (message, next) {
204
- return __awaiter(this, void 0, void 0, function* () {
205
- return message.MsgType === 'event' && message.Event === 'change_app_admin' ? handler(message, next) : next(message);
206
- });
167
+ return this.with(async function (message, next) {
168
+ return message.MsgType === 'event' && message.Event === 'change_app_admin' ? handler(message, next) : next(message);
207
169
  });
208
170
  }
209
171
  /**
@@ -212,30 +174,27 @@ class Server extends ServerInterface_1.default {
212
174
  * @returns
213
175
  */
214
176
  getRequestMessage(request = null) {
215
- return Message_1.default.createFromRequest(request !== null && request !== void 0 ? request : this.request);
177
+ return Message_1.default.createFromRequest(request ?? this.request);
216
178
  }
217
179
  decryptRequestMessage(query) {
218
- return (message, next) => __awaiter(this, void 0, void 0, function* () {
219
- var _a, _b, _c;
220
- if (!this.encryptor)
221
- return null;
222
- yield this.decryptMessage(message, this.encryptor, (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['timestamp']) !== null && _b !== void 0 ? _b : '', (_c = query['nonce']) !== null && _c !== void 0 ? _c : '');
180
+ return async (message, next) => {
181
+ message = await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
223
182
  return next(message);
224
- });
183
+ };
225
184
  }
226
185
  /**
227
186
  * 获取解密后的消息
228
187
  * @param request 未设置该参数时,则从当前服务端收到的请求中获取
229
188
  * @returns
230
189
  */
231
- getDecryptedMessage() {
232
- return __awaiter(this, arguments, void 0, function* (request = null) {
233
- var _a, _b, _c;
234
- request = request !== null && request !== void 0 ? request : this.request;
235
- let message = yield this.getRequestMessage(request);
236
- let query = request.getQueryParams();
237
- return yield this.decryptMessage(message, this.encryptor, (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['timestamp']) !== null && _b !== void 0 ? _b : '', (_c = query['nonce']) !== null && _c !== void 0 ? _c : '');
238
- });
190
+ async getDecryptedMessage(request = null) {
191
+ request = request ?? this.request;
192
+ let message = await this.getRequestMessage(request);
193
+ let query = request.getQueryParams();
194
+ if (!this.encryptor || !query['msg_signature']) {
195
+ return message;
196
+ }
197
+ return await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
239
198
  }
240
199
  }
241
200
  ;
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -45,42 +36,36 @@ class SuiteAccessToken {
45
36
  this.key = key;
46
37
  return this;
47
38
  }
48
- getToken() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- let token = '';
51
- if (this.cache) {
52
- token = yield this.cache.get(this.getKey());
53
- }
54
- if (!!token && typeof token === 'string') {
55
- return token;
56
- }
57
- return this.refresh();
58
- });
39
+ async getToken() {
40
+ let token = '';
41
+ if (this.cache) {
42
+ token = await this.cache.get(this.getKey());
43
+ }
44
+ if (!!token && typeof token === 'string') {
45
+ return token;
46
+ }
47
+ return this.refresh();
59
48
  }
60
- toQuery() {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- return {
63
- suite_access_token: yield this.getToken(),
64
- };
65
- });
49
+ async toQuery() {
50
+ return {
51
+ suite_access_token: await this.getToken(),
52
+ };
66
53
  }
67
- refresh() {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- let response = (yield this.httpClient.request('post', 'cgi-bin/service/get_suite_token', {
70
- json: {
71
- suite_id: this.suiteId,
72
- suite_secret: this.suiteSecret,
73
- suite_ticket: yield this.suiteTicket.getTicket(),
74
- }
75
- })).toObject();
76
- if (!response['suite_access_token']) {
77
- throw new Error('Failed to get suite_access_token: ' + JSON.stringify(response));
78
- }
79
- if (this.cache) {
80
- yield this.cache.set(this.getKey(), response['suite_access_token'], parseInt(response['expires_in']) - 100);
54
+ async refresh() {
55
+ let response = (await this.httpClient.request('post', 'cgi-bin/service/get_suite_token', {
56
+ json: {
57
+ suite_id: this.suiteId,
58
+ suite_secret: this.suiteSecret,
59
+ suite_ticket: await this.suiteTicket.getTicket(),
81
60
  }
82
- return response['suite_access_token'];
83
- });
61
+ })).toObject();
62
+ if (!response['suite_access_token']) {
63
+ throw new Error('Failed to get suite_access_token: ' + JSON.stringify(response));
64
+ }
65
+ if (this.cache) {
66
+ await this.cache.set(this.getKey(), response['suite_access_token'], parseInt(response['expires_in']) - 100);
67
+ }
68
+ return response['suite_access_token'];
84
69
  }
85
70
  }
86
71
  module.exports = SuiteAccessToken;
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  class SuiteTicket {
12
3
  constructor(suiteId, cache = null, key = null) {
13
4
  this.suiteId = suiteId;
@@ -24,25 +15,21 @@ class SuiteTicket {
24
15
  this.key = key;
25
16
  return this;
26
17
  }
27
- setTicket(ticket) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- if (this.cache) {
30
- yield this.cache.set(this.getKey(), ticket, 6000);
31
- }
32
- return this;
33
- });
18
+ async setTicket(ticket) {
19
+ if (this.cache) {
20
+ await this.cache.set(this.getKey(), ticket, 6000);
21
+ }
22
+ return this;
34
23
  }
35
- getTicket() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- let ticket = '';
38
- if (this.cache) {
39
- ticket = yield this.cache.get(this.getKey());
40
- }
41
- if (!ticket || typeof ticket != 'string') {
42
- throw new Error('No suite_ticket found.');
43
- }
44
- return ticket;
45
- });
24
+ async getTicket() {
25
+ let ticket = '';
26
+ if (this.cache) {
27
+ ticket = await this.cache.get(this.getKey());
28
+ }
29
+ if (!ticket || typeof ticket != 'string') {
30
+ throw new Error('No suite_ticket found.');
31
+ }
32
+ return ticket;
46
33
  }
47
34
  }
48
35
  ;
@@ -34,9 +34,8 @@ class Application {
34
34
  }
35
35
  }
36
36
  getMerchant() {
37
- var _a;
38
37
  if (!this.merchant) {
39
- this.merchant = new Merchant_1.default(this.config.get('mch_id'), this.config.get('private_key'), this.config.get('certificate'), this.config.get('secret_key'), this.config.get('v2_secret_key'), (_a = this.config.get('platform_certs')) !== null && _a !== void 0 ? _a : [], this);
38
+ this.merchant = new Merchant_1.default(this.config.get('mch_id'), this.config.get('private_key'), this.config.get('certificate'), this.config.get('secret_key'), this.config.get('v2_secret_key'), this.config.get('platform_certs') ?? [], this);
40
39
  }
41
40
  return this.merchant;
42
41
  }
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -22,7 +13,6 @@ const LegacySignature_1 = __importDefault(require("./LegacySignature"));
22
13
  const form_data_1 = __importDefault(require("form-data"));
23
14
  class Client {
24
15
  constructor(merchant, client, defaultOptions = {}) {
25
- var _a;
26
16
  this.merchant = merchant;
27
17
  this.throw = true;
28
18
  this.client = null;
@@ -39,7 +29,7 @@ class Client {
39
29
  '/hk/v3/',
40
30
  '/global/v3/',
41
31
  ];
42
- this.throw = !!((_a = defaultOptions['throw']) !== null && _a !== void 0 ? _a : true);
32
+ this.throw = !!(defaultOptions['throw'] ?? true);
43
33
  this.defaultOptions = merge_1.default.recursive(true, this.defaultOptions, defaultOptions);
44
34
  this.client = client || HttpClient_1.default.create();
45
35
  }
@@ -54,51 +44,49 @@ class Client {
54
44
  this.client.setLogger(logger);
55
45
  return this;
56
46
  }
57
- request(method_1, url_1) {
58
- return __awaiter(this, arguments, void 0, function* (method, url, payload = {}) {
59
- if (!payload.headers)
60
- payload.headers = {};
61
- if (!payload.headers['user-agent'] && !payload.headers['User-Agent']) {
62
- payload.headers['user-agent'] = (0, Utils_1.createUserAgent)();
63
- }
64
- if (this.isV3Request(url) && !payload.headers['authorization']) {
65
- if (typeof payload.json !== 'undefined') {
66
- if (typeof payload.json === 'object') {
67
- payload.data = JSON.stringify(payload.json);
68
- }
69
- else if (typeof payload.json === 'string') {
70
- payload.data = payload.json;
71
- }
72
- delete payload.json;
47
+ async request(method, url, payload = {}) {
48
+ if (!payload.headers)
49
+ payload.headers = {};
50
+ if (!payload.headers['user-agent'] && !payload.headers['User-Agent']) {
51
+ payload.headers['user-agent'] = (0, Utils_1.createUserAgent)();
52
+ }
53
+ if (this.isV3Request(url) && !payload.headers['authorization']) {
54
+ if (typeof payload.json !== 'undefined') {
55
+ if (typeof payload.json === 'object') {
56
+ payload.data = JSON.stringify(payload.json);
73
57
  }
74
- payload.headers['authorization'] = this.createSignature(method, url, payload);
75
- }
76
- else {
77
- if (typeof payload.xml !== 'undefined') {
78
- if (typeof payload.xml === 'object') {
79
- payload.xml = (0, Utils_1.buildXml)(this.attachLegacySignature(payload.xml));
80
- }
81
- if (typeof payload.xml !== 'string') {
82
- throw new Error('The `xml` option must be a string or object.');
83
- }
84
- payload.data = payload.xml;
85
- delete payload.xml;
58
+ else if (typeof payload.json === 'string') {
59
+ payload.data = payload.json;
86
60
  }
87
- if (payload.data && typeof payload.data === 'object') {
88
- payload.data = (0, Utils_1.buildXml)(this.attachLegacySignature(payload.data));
61
+ delete payload.json;
62
+ }
63
+ payload.headers['authorization'] = this.createSignature(method, url, payload);
64
+ }
65
+ else {
66
+ if (typeof payload.xml !== 'undefined') {
67
+ if (typeof payload.xml === 'object') {
68
+ payload.xml = (0, Utils_1.buildXml)(this.attachLegacySignature(payload.xml));
89
69
  }
90
- if (!payload.headers['content-type'] && !payload.headers['Content-Type']) {
91
- payload.headers['content-type'] = 'text/xml';
70
+ if (typeof payload.xml !== 'string') {
71
+ throw new Error('The `xml` option must be a string or object.');
92
72
  }
73
+ payload.data = payload.xml;
74
+ delete payload.xml;
93
75
  }
94
- if (this.prependData && Object.keys(this.prependData).length > 0) {
95
- payload.data = Object.assign(Object.assign({}, this.prependData), payload.data);
76
+ if (payload.data && typeof payload.data === 'object') {
77
+ payload.data = (0, Utils_1.buildXml)(this.attachLegacySignature(payload.data));
96
78
  }
97
- if (this.prependHeaders && Object.keys(this.prependHeaders).length > 0) {
98
- payload.headers = Object.assign(Object.assign({}, this.prependHeaders), payload.headers);
79
+ if (!payload.headers['content-type'] && !payload.headers['Content-Type']) {
80
+ payload.headers['content-type'] = 'text/xml';
99
81
  }
100
- return this.client.request(method, (0, Utils_1.ltrim)(url, '\\/+'), payload);
101
- });
82
+ }
83
+ if (this.prependData && Object.keys(this.prependData).length > 0) {
84
+ payload.data = { ...this.prependData, ...payload.data };
85
+ }
86
+ if (this.prependHeaders && Object.keys(this.prependHeaders).length > 0) {
87
+ payload.headers = { ...this.prependHeaders, ...payload.headers };
88
+ }
89
+ return this.client.request(method, (0, Utils_1.ltrim)(url, '\\/+'), payload);
102
90
  }
103
91
  /**
104
92
  * 文件上传
@@ -109,35 +97,33 @@ class Client {
109
97
  * @param filename 文件名,必须以 .jpg、.bmp、.png 为后缀
110
98
  * @returns
111
99
  */
112
- uploadMedia(uri_1, file_1) {
113
- return __awaiter(this, arguments, void 0, function* (uri, file, meta = null, filename = null) {
114
- if (typeof file === 'string') {
115
- file = fs_1.default.readFileSync(file);
116
- }
117
- else if (typeof file !== 'string' && !Buffer.isBuffer(file)) {
118
- file = yield (0, Utils_1.streamToBuffer)(file);
119
- }
120
- filename = filename !== null && filename !== void 0 ? filename : 'file.jpg';
121
- if (!meta) {
122
- meta = {
123
- filename: filename,
124
- sha256: yield (0, Utils_1.createHash)(file, 'sha256'),
125
- };
100
+ async uploadMedia(uri, file, meta = null, filename = null) {
101
+ if (typeof file === 'string') {
102
+ file = fs_1.default.readFileSync(file);
103
+ }
104
+ else if (typeof file !== 'string' && !Buffer.isBuffer(file)) {
105
+ file = await (0, Utils_1.streamToBuffer)(file);
106
+ }
107
+ filename = filename ?? 'file.jpg';
108
+ if (!meta) {
109
+ meta = {
110
+ filename: filename,
111
+ sha256: await (0, Utils_1.createHash)(file, 'sha256'),
112
+ };
113
+ }
114
+ let metaJson = JSON.stringify(meta);
115
+ let formData = new form_data_1.default();
116
+ formData.append('file', file, filename);
117
+ formData.append('meta', metaJson, {
118
+ contentType: 'application/json',
119
+ });
120
+ return this.client.request('POST', (0, Utils_1.ltrim)(uri, '\\/+'), {
121
+ formData,
122
+ headers: {
123
+ 'authorization': this.createSignature('POST', uri, {
124
+ data: metaJson,
125
+ }),
126
126
  }
127
- let metaJson = JSON.stringify(meta);
128
- let formData = new form_data_1.default();
129
- formData.append('file', file, filename);
130
- formData.append('meta', metaJson, {
131
- contentType: 'application/json',
132
- });
133
- return this.client.request('POST', (0, Utils_1.ltrim)(uri, '\\/+'), {
134
- formData,
135
- headers: {
136
- 'authorization': this.createSignature('POST', uri, {
137
- data: metaJson,
138
- }),
139
- }
140
- });
141
127
  });
142
128
  }
143
129
  /**
@@ -14,12 +14,11 @@ class LegacySignature {
14
14
  * @returns
15
15
  */
16
16
  sign(params) {
17
- var _a, _b;
18
17
  let nonce = (0, Utils_1.randomString)();
19
18
  let attributes = (0, merge_1.default)(true, {
20
19
  nonce_str: nonce,
21
- sub_mch_id: (_a = params['sub_mch_id']) !== null && _a !== void 0 ? _a : null,
22
- sub_appid: (_b = params['sub_appid']) !== null && _b !== void 0 ? _b : null,
20
+ sub_mch_id: params['sub_mch_id'] ?? null,
21
+ sub_appid: params['sub_appid'] ?? null,
23
22
  }, params);
24
23
  let signString = '';
25
24
  let sparator = '';