node-easywechat 2.9.3 → 2.9.6

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 ADDED
@@ -0,0 +1,187 @@
1
+ # CHANGELOG
2
+
3
+
4
+ ## v2.9.6 (2022-04-25)
5
+
6
+ - Docs: 更新企业微信支付证书说明
7
+
8
+ ## v2.9.5 (2022-04-23)
9
+
10
+ - Fix: 修复企业微信获取注册定制化URL接口未自动获取到注册码的问题
11
+ - Fix: 修复企业微信扫码授权登录回调配置项错误的问题 (#19)
12
+
13
+ ## v2.9.4 (2022-04-22)
14
+
15
+ - Fix: 修复开放平台、企业微信开放平台获取授权AccessToken异常的问题 (#18)
16
+
17
+ ## v2.9.3 (2022-03-25)
18
+
19
+ - Fix: 修复发送图文客服消息失败的问题 (#17)
20
+
21
+ ## v2.9.2 (2022-03-23)
22
+
23
+ - Feat: 新增企业微信客户群「加入群聊」管理相关接口
24
+ - Feat: 新增物流服务退货相关接口
25
+ - Feat: 新增获取订单列表接口
26
+ - Feat: 新增小程序绑定、解绑物流账号接口
27
+ - Feat: 增加查询openAPI调用次数
28
+
29
+ - Docs: 移除api文档
30
+
31
+ ## v2.9.1 (2022-02-09)
32
+
33
+ ## v2.9.0 (2022-01-28)
34
+
35
+ - Feat: 新增企业微信开放平台
36
+
37
+ - Fix: 修复开放平台构建移动端授权链接的方法
38
+ - Fix: 调整消息通知处理类的方法作用域
39
+
40
+ ## v2.8.3 (2022-01-20)
41
+
42
+ - Feat: 小程序新增自定义版交易组件及开放接口
43
+
44
+ ## v2.8.2 (2022-01-12)
45
+
46
+ - Feat: 企业微信朋友圈优化相关接口
47
+ - Feat: 企业微信增加上传附件资源接口
48
+ - Feat: 新增企业微信客服相关接口
49
+ - Feat: 优化企业微信群聊数据统计相关接口
50
+ - Feat: 优化客户联系「联系我」相关接口
51
+ - Feat: 完善企业互联相关接口
52
+ - Feat: 新增应用工作台相关接口
53
+
54
+ ## v2.8.1 (2022-01-07)
55
+
56
+ - Feat: 增加获取小程序短链接功能
57
+ - Feat: 新增企业微信客户id转换相关接口
58
+
59
+ ## v2.8.0 (2022-01-06)
60
+
61
+ - Feat: 新增小程序获取用户手机号功能
62
+ - Feat: 微信支付jssdk增加生成联系人配置和小程序红包配置
63
+ - Feat: 增加小程序联盟定向计划推广接口
64
+ - Feat: 企业微信新增群发相关接口
65
+ - Feat: 新增小程序链接模块
66
+ - Feat: 企业微信获取客户群详情增加need_name参数
67
+
68
+ - Fix: 修复批量获取客户详情参数错误
69
+
70
+ ## v2.7.2 (2021-10-01)
71
+
72
+ - Fix: 修复自动回复消息格式异常的问题 (#13)
73
+
74
+ ## v2.7.1 (2021-09-08)
75
+
76
+ ## v2.7.0 (2021-08-31)
77
+
78
+ - Feat: 新增小微商户相关接口
79
+
80
+ - Fix: 重命名RSA加密解密文件
81
+ - Fix: 移除无效文件
82
+ - Fix: 封装构建xml的方法
83
+
84
+ ## v2.6.10 (2021-08-03)
85
+
86
+ - Fix: 配置项中增加debug参数,以控制是否显示日志 (#12)
87
+
88
+ ## v2.6.9 (2021-07-29)
89
+
90
+ - Feat: 新增获取所有绑定的物流账号
91
+
92
+ - Fix: 修复提现到零钱时签名错误的问题 (#10)
93
+
94
+ ## v2.6.8 (2021-07-13)
95
+
96
+ - Feat: 新增发送小程序红包接口
97
+ - Feat: 补全客户联系相关接口
98
+
99
+ ## v2.6.7 (2021-07-02)
100
+
101
+ - Feat: 新增获取小程序启动性能,运行性能等数据的接口
102
+ - Feat: 增加小程序联盟查询联盟精选商品接口
103
+ - Feat: 增加开放平台小程序代码模板template_type参数
104
+
105
+ - Fix: 修复小程序风控接口请求异常的问题
106
+ - Fix: 修复获取资源时错误信息的反馈异常的问题
107
+ - Fix: 企业微信新增上传永久图片、获取高清语音素材接口
108
+
109
+ ## v2.6.6 (2021-06-01)
110
+
111
+ - Feat: 新增消息类型interactive_taskcard和update_taskcard
112
+
113
+ ## v2.6.5 (2021-05-21)
114
+
115
+ - Fix: 添加markdown和miniprogram_notice两种消息类型 (#9)
116
+
117
+ ## v2.6.4 (2021-05-20)
118
+
119
+ - Fix: 修复获取企业微信accesstoken异常的问题
120
+
121
+ ## v2.6.3 (2021-05-19)
122
+
123
+ - Feat: 新增公众号订阅消息功能
124
+
125
+ - Fix: 增加小程序订阅消息的小程序类型参数,默认正式版
126
+
127
+ ## v2.6.2 (2021-04-28)
128
+
129
+ - Feat: 新增小程序联盟相关接口
130
+ - Feat: 新增入群欢迎语素材管理
131
+ - Feat: 完善OCR识别相关接口
132
+
133
+ ## v2.6.1 (2021-04-13)
134
+
135
+ - Feat: 增加声明配置项的方法
136
+
137
+ - Fix: 取消企业微信中消息回复时media_id的必填设置
138
+
139
+ ## v2.6.0 (2021-03-22)
140
+
141
+ - Feat: 新增小程序直播相关接口
142
+ - Feat: 新增小程序风险控制相关接口
143
+ - Feat: 新增小程序scheme码相关接口
144
+ - Feat: 移除EasyWechat.Message
145
+ - Feat: 网页授权模块改用node-socialite
146
+ - Feat: 将request模块替换为axios
147
+ - Feat: 添加企业微信模块
148
+ - Feat: 完善企业微信接口
149
+ - Feat: 新增企业微信的网页授权功能
150
+ - Feat: 添加小程序相关接口
151
+ - Feat: 注册已添加的企业微信接口
152
+ - Feat: 新增企业微信群机器人接口
153
+ - Feat: 新增企业微信日程管理接口
154
+ - Feat: 增加企业微信的服务端消息处理功能
155
+ - Feat: 增加企业微信回话内容模块
156
+ - Feat: 增加企业微信的消息处理功能
157
+ - Feat: 增加企业微信的用户管理、用户标签管理
158
+
159
+ - Fix: 取消发送企业微信新客户欢迎语时的media_id必填限制
160
+ - Fix: 修复变量错误的问题
161
+ - Fix: 修复企业微信消息继承类错误的问题
162
+ - Fix: 修复网页授权的功能,提升各模块的兼容性
163
+ - Fix: OAuth支持设置code和AccessToken
164
+ - Fix: 修复类名错误
165
+ - Fix: 调整变量类型
166
+ - Fix: 调整公众号服务端判断是否为接口验证请求的逻辑
167
+ - Fix: 优化微信支付的一些小问题
168
+ - Fix: 补充微信支付的沙盒模式参数
169
+ - Fix: 修复支付时签约的接口地址异常问题
170
+ - Fix: 修复非签约时统一下单接口地址有误的问题 #6
171
+ - Fix: 修复微信支付通知中,业务逻辑有异常时无法返回正确结果的问题
172
+ - Fix: 优化AES加密解密方法
173
+ - Fix: 增加支持设置xml格式的request内容
174
+ - Fix: 修复存在默认值导致读取请求内容异常的情况 #5
175
+ - Fix: 当请求url包含域名时,则忽略base_url
176
+ - Fix: 避免变量冲突导致异常
177
+ - Fix: 修复无法合并类实例对象的问题
178
+ - Fix: 移除merge依赖包
179
+
180
+ - Docs: 修改注释
181
+
182
+ - Perf: 优化服务端通知的回调函数提醒
183
+ - Perf: 优化文件缓存操作类
184
+ - Perf: 优化返回this的类型推导
185
+ - Perf: 调整测试用例框架结构,完善测试用例中的类型推导
186
+ - Perf: 调整总对象实现方式,优化服务类型推导
187
+ - Perf: 增加配置类型声明、精简代码(如去除“* as”、配置项改为".xx"方式)
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  ## EasyWechat for Node.js
3
3
 
4
- [![Build Status](https://app.travis-ci.com/hpyer/node-easywechat.svg?branch=develop)](https://app.travis-ci.com/hpyer/node-easywechat) [![npm](https://img.shields.io/npm/v/node-easywechat.svg)](https://www.npmjs.com/package/node-easywechat) [![License](https://img.shields.io/npm/l/node-easywechat.svg)](LICENSE)
4
+ [![Build Status](https://app.travis-ci.com/hpyer/node-easywechat.svg?branch=2.x)](https://app.travis-ci.com/hpyer/node-easywechat) [![npm](https://img.shields.io/npm/v/node-easywechat.svg)](https://www.npmjs.com/package/node-easywechat) [![License](https://img.shields.io/npm/l/node-easywechat.svg)](LICENSE)
5
5
 
6
6
  **注:2.x分支针对 EasyWechat 的 5.x版本(由于4.x与5.x的结构基本一致,就不升级大版本了)。**
7
7
 
@@ -107,8 +107,8 @@ let app = EasyWechat.Factory.getInstance('OficialAccount', {
107
107
  key: 'key-for-signature',
108
108
  // 默认回调地址,也可以在下单时单独设置来覆盖它,完整URL,不带参数
109
109
  notify_url: 'http://xxx.com/pay/notify',
110
- // 证书地址,Node.js 只需要 .pfx 证书文件即可
111
- cert_path: 'path/to/your/cert.pfx', // XXX: 绝对路径!!!!
110
+ // 证书地址,Node.js 只需要 apiclient_cert.p12 证书文件即可
111
+ cert_path: 'path/to/your/apiclient_cert.p12', // XXX: 绝对路径!!!!
112
112
  }
113
113
  ```
114
114
 
@@ -143,8 +143,8 @@ let app = EasyWechat.Factory.getInstance('OficialAccount', {
143
143
  key: 'key-for-signature',
144
144
  // V3版本签名密钥
145
145
  apiv3_key: 'apiv3_key-for-signature',
146
- // 证书地址,Node.js 只需要 .pfx 证书文件即可
147
- cert_path: 'path/to/your/cert.pfx', // XXX: 绝对路径!!!!
146
+ // 证书地址,Node.js 只需要 apiclient_cert.p12 证书文件即可
147
+ cert_path: 'path/to/your/apiclient_cert.p12', // XXX: 绝对路径!!!!
148
148
 
149
149
  // 以下两项配置在获取证书接口时可为空,在调用入驻接口前请先调用获取证书接口获取以下两项配置,如果获取过证书可以直接在这里配置,也可参照本文档获取平台证书章节中示例
150
150
  // serial_no: '获取证书接口获取到的平台证书序列号',
@@ -25,11 +25,11 @@ export declare class AccessToken {
25
25
  * 授权的作用域
26
26
  */
27
27
  scope: string;
28
- constructor(info?: object);
28
+ constructor(info?: object, keysMap?: Record<string, string>);
29
29
  /**
30
30
  * 获取access_token
31
31
  */
32
- getToken(): string | Promise<string>;
32
+ getToken(): string;
33
33
  /**
34
34
  * 获取access_token
35
35
  */
@@ -57,23 +57,30 @@ declare abstract class BaseAccessToken implements HttpMixin {
57
57
  protected queryName: string;
58
58
  protected tokenKey: string;
59
59
  protected endpointToGetToken: string;
60
+ protected cachePrefix: string;
60
61
  protected app: BaseApplication;
61
62
  constructor(app: BaseApplication);
62
63
  protected getCredentials(): Promise<object>;
63
64
  getEndpoint(): Promise<string>;
64
65
  getCacheKey(): Promise<string>;
65
- requestToken(credentials: object): Promise<any>;
66
+ requestToken(credentials: object): Promise<Record<string, any>>;
66
67
  /**
67
68
  * 获取Token
68
69
  * @param refresh 为true时表示强制刷新
69
70
  */
70
71
  getToken(refresh?: boolean): Promise<AccessToken>;
72
+ /**
73
+ * 包装为授权后的 AccessToken 对象
74
+ * @param token 接口返回的数据
75
+ * @returns
76
+ */
77
+ protected warpAccessToken(token: Record<string, any>): AccessToken;
71
78
  /**
72
79
  * 设置Token
73
- * @param access_token AccessToken
80
+ * @param access_token Record<string, any>
74
81
  * @param expires_in 有效时间,单位:秒
75
82
  */
76
- setToken(access_token: string, expires_in?: number): Promise<this>;
83
+ setToken(token: Record<string, any>, expires_in?: number): Promise<this>;
77
84
  /**
78
85
  * 刷新Token
79
86
  */
@@ -19,7 +19,7 @@ const Utils_1 = require("./Utils");
19
19
  * 授权后的AccessToken对象
20
20
  */
21
21
  class AccessToken {
22
- constructor(info = null) {
22
+ constructor(info = null, keysMap = {}) {
23
23
  /**
24
24
  * 网页授权接口调用凭证
25
25
  */
@@ -41,11 +41,15 @@ class AccessToken {
41
41
  */
42
42
  this.scope = null;
43
43
  if (info) {
44
- this.access_token = info['access_token'] || info['accessToken'] || '';
45
- this.expires_in = info['expires_in'] || info['expiresIn'] || 0;
46
- this.refresh_token = info['refresh_token'] || info['refreshToken'] || '';
47
- this.openid = info['openid'] || '';
48
- this.scope = info['scope'] || '';
44
+ Object.keys(info).map(key => {
45
+ this[key] = info[key] || info[(0, Utils_1.strCamel)(key)] || '';
46
+ });
47
+ if (keysMap) {
48
+ Object.keys(keysMap).map(key => {
49
+ let mapKey = keysMap[key];
50
+ this[key] = info[mapKey] || info[(0, Utils_1.strCamel)(mapKey)] || '';
51
+ });
52
+ }
49
53
  }
50
54
  }
51
55
  /**
@@ -94,6 +98,7 @@ class BaseAccessToken {
94
98
  this.queryName = '';
95
99
  this.tokenKey = 'access_token';
96
100
  this.endpointToGetToken = '';
101
+ this.cachePrefix = 'easywechat.kernel.access_token.';
97
102
  this.app = null;
98
103
  this.app = app;
99
104
  }
@@ -112,7 +117,7 @@ class BaseAccessToken {
112
117
  }
113
118
  getCacheKey() {
114
119
  return __awaiter(this, void 0, void 0, function* () {
115
- return 'easywechat.kernel.access_token.' + (0, Utils_1.createHash)(JSON.stringify(yield this.getCredentials()), 'md5');
120
+ return this.cachePrefix + (0, Utils_1.createHash)(JSON.stringify(yield this.getCredentials()), 'md5');
116
121
  });
117
122
  }
118
123
  requestToken(credentials) {
@@ -143,23 +148,34 @@ class BaseAccessToken {
143
148
  if (!refresh && (yield cache.has(cacheKey))) {
144
149
  let token = yield cache.get(cacheKey);
145
150
  if (token)
146
- return new AccessToken(token);
151
+ return this.warpAccessToken(token);
147
152
  }
148
153
  let res = yield this.requestToken(yield this.getCredentials());
154
+ if (res.errcode) {
155
+ throw new Error(res.errmsg);
156
+ }
149
157
  yield this.setToken(res, res.expires_in || 7200);
150
- return res;
158
+ return this.warpAccessToken(res);
151
159
  });
152
160
  }
161
+ /**
162
+ * 包装为授权后的 AccessToken 对象
163
+ * @param token 接口返回的数据
164
+ * @returns
165
+ */
166
+ warpAccessToken(token) {
167
+ return new AccessToken(token);
168
+ }
153
169
  /**
154
170
  * 设置Token
155
- * @param access_token AccessToken
171
+ * @param access_token Record<string, any>
156
172
  * @param expires_in 有效时间,单位:秒
157
173
  */
158
- setToken(access_token, expires_in = 7200) {
174
+ setToken(token, expires_in = 7200) {
159
175
  return __awaiter(this, void 0, void 0, function* () {
160
176
  let cacheKey = yield this.getCacheKey();
161
177
  let cache = this.app.getCache();
162
- yield cache.set(cacheKey, access_token, expires_in);
178
+ yield cache.set(cacheKey, token, expires_in);
163
179
  if (!cache.has(cacheKey)) {
164
180
  throw new Error('Failed to cache access token.');
165
181
  }
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -98,7 +98,7 @@ export declare interface EasyWechatConfig {
98
98
  */
99
99
  sub_mch_id?: string;
100
100
  /**
101
- * pfx 证书路径(敏感接口(如退款、发送红包等)需要)
101
+ * apiclient_cert.p12 证书文件路径(敏感接口(如退款、发送红包等)需要)
102
102
  * @scope Payment | MicroMerchant
103
103
  */
104
104
  cert_path?: string;
@@ -52,37 +52,37 @@ export default class OpenPlatform extends BaseApplication {
52
52
  * 使用授权码换取接口调用凭据和授权信息
53
53
  * @param authCode 授权码, 会在授权成功的回调返回给第三方平台
54
54
  */
55
- handleAuthorize(): Promise<any>;
55
+ handleAuthorize(...arg: any[]): Promise<any>;
56
56
  /**
57
57
  * 获取授权方的帐号基本信息
58
58
  * @param appId 授权方app_id
59
59
  */
60
- getAuthorizer(): Promise<any>;
60
+ getAuthorizer(...arg: any[]): Promise<any>;
61
61
  /**
62
62
  * 设置授权方的选项信息
63
63
  * @param appId 授权方app_id
64
64
  * @param name 选项名称
65
65
  */
66
- getAuthorizerOption(): Promise<any>;
66
+ getAuthorizerOption(...arg: any[]): Promise<any>;
67
67
  /**
68
68
  * 设置授权方的选项信息
69
69
  * @param appId 授权方app_id
70
70
  * @param name 选项名称
71
71
  * @param value 选项值
72
72
  */
73
- setAuthorizerOption(): Promise<any>;
73
+ setAuthorizerOption(...arg: any[]): Promise<any>;
74
74
  /**
75
75
  * 获取已授权的授权方列表
76
76
  * @param offset 起始位置,从0开始
77
77
  * @param count 获取记录数,最大500
78
78
  */
79
- getAuthorizers(): Promise<any>;
79
+ getAuthorizers(...arg: any[]): Promise<any>;
80
80
  /**
81
81
  * 获取预授权码
82
82
  */
83
- createPreAuthorizationCode(): Promise<any>;
83
+ createPreAuthorizationCode(...arg: any[]): Promise<any>;
84
84
  /**
85
85
  * 清零调用次数
86
86
  */
87
- clearQuota(): Promise<any>;
87
+ clearQuota(...arg: any[]): Promise<any>;
88
88
  }
@@ -171,23 +171,23 @@ class OpenPlatform extends BaseApplication_1.default {
171
171
  * 使用授权码换取接口调用凭据和授权信息
172
172
  * @param authCode 授权码, 会在授权成功的回调返回给第三方平台
173
173
  */
174
- handleAuthorize() {
175
- return this.base.handleAuthorize.apply(this.base, arguments);
174
+ handleAuthorize(...arg) {
175
+ return this.base.handleAuthorize.apply(this.base, arg);
176
176
  }
177
177
  /**
178
178
  * 获取授权方的帐号基本信息
179
179
  * @param appId 授权方app_id
180
180
  */
181
- getAuthorizer() {
182
- return this.base.getAuthorizer.apply(this.base, arguments);
181
+ getAuthorizer(...arg) {
182
+ return this.base.getAuthorizer.apply(this.base, arg);
183
183
  }
184
184
  /**
185
185
  * 设置授权方的选项信息
186
186
  * @param appId 授权方app_id
187
187
  * @param name 选项名称
188
188
  */
189
- getAuthorizerOption() {
190
- return this.base.getAuthorizerOption.apply(this.base, arguments);
189
+ getAuthorizerOption(...arg) {
190
+ return this.base.getAuthorizerOption.apply(this.base, arg);
191
191
  }
192
192
  /**
193
193
  * 设置授权方的选项信息
@@ -195,28 +195,28 @@ class OpenPlatform extends BaseApplication_1.default {
195
195
  * @param name 选项名称
196
196
  * @param value 选项值
197
197
  */
198
- setAuthorizerOption() {
199
- return this.base.setAuthorizerOption.apply(this.base, arguments);
198
+ setAuthorizerOption(...arg) {
199
+ return this.base.setAuthorizerOption.apply(this.base, arg);
200
200
  }
201
201
  /**
202
202
  * 获取已授权的授权方列表
203
203
  * @param offset 起始位置,从0开始
204
204
  * @param count 获取记录数,最大500
205
205
  */
206
- getAuthorizers() {
207
- return this.base.getAuthorizers.apply(this.base, arguments);
206
+ getAuthorizers(...arg) {
207
+ return this.base.getAuthorizers.apply(this.base, arg);
208
208
  }
209
209
  /**
210
210
  * 获取预授权码
211
211
  */
212
- createPreAuthorizationCode() {
213
- return this.base.createPreAuthorizationCode.apply(this.base, arguments);
212
+ createPreAuthorizationCode(...arg) {
213
+ return this.base.createPreAuthorizationCode.apply(this.base, arg);
214
214
  }
215
215
  /**
216
216
  * 清零调用次数
217
217
  */
218
- clearQuota() {
219
- return this.base.clearQuota.apply(this.base, arguments);
218
+ clearQuota(...arg) {
219
+ return this.base.clearQuota.apply(this.base, arg);
220
220
  }
221
221
  }
222
222
  exports.default = OpenPlatform;
@@ -1,7 +1,8 @@
1
- import BaseAccessToken from '../../Core/BaseAccessToken';
2
- export default class AccessToken extends BaseAccessToken {
1
+ import BaseAccessToken, { AccessToken } from '../../Core/BaseAccessToken';
2
+ export default class AuthAccessToken extends BaseAccessToken {
3
3
  protected requestMethod: string;
4
4
  protected tokenKey: string;
5
5
  protected endpointToGetToken: string;
6
+ protected warpAccessToken(token: Record<string, any>): AccessToken;
6
7
  protected getCredentials(): Promise<object>;
7
8
  }
@@ -1,4 +1,27 @@
1
1
  'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,18 +31,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
34
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const BaseAccessToken_1 = __importDefault(require("../../Core/BaseAccessToken"));
16
- class AccessToken extends BaseAccessToken_1.default {
35
+ const BaseAccessToken_1 = __importStar(require("../../Core/BaseAccessToken"));
36
+ class AuthAccessToken extends BaseAccessToken_1.default {
17
37
  constructor() {
18
38
  super(...arguments);
19
39
  this.requestMethod = 'POST';
20
40
  this.tokenKey = 'component_access_token';
21
41
  this.endpointToGetToken = 'cgi-bin/component/api_component_token';
22
42
  }
43
+ warpAccessToken(token) {
44
+ return new BaseAccessToken_1.AccessToken(token, {
45
+ access_token: 'component_access_token',
46
+ });
47
+ }
23
48
  getCredentials() {
24
49
  return __awaiter(this, void 0, void 0, function* () {
25
50
  return {
@@ -30,4 +55,4 @@ class AccessToken extends BaseAccessToken_1.default {
30
55
  });
31
56
  }
32
57
  }
33
- exports.default = AccessToken;
58
+ exports.default = AuthAccessToken;
@@ -1,12 +1,13 @@
1
- import BaseAccessToken from '../../../Core/BaseAccessToken';
1
+ import BaseAccessToken, { AccessToken } from '../../../Core/BaseAccessToken';
2
2
  import OpenPlatformApplication from '../../Application';
3
3
  import BaseApplicatioin from '../../../Core/BaseApplication';
4
- export default class AccessToken extends BaseAccessToken {
4
+ export default class AuthAccessToken extends BaseAccessToken {
5
5
  protected requestMethod: string;
6
6
  protected queryName: string;
7
7
  protected tokenKey: string;
8
8
  protected component: OpenPlatformApplication;
9
9
  constructor(app: BaseApplicatioin, component: OpenPlatformApplication);
10
+ protected warpAccessToken(token: Record<string, any>): AccessToken;
10
11
  protected getCredentials(): Promise<object>;
11
12
  getEndpoint(): Promise<string>;
12
13
  }
@@ -1,4 +1,27 @@
1
1
  'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,13 +31,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
34
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const BaseAccessToken_1 = __importDefault(require("../../../Core/BaseAccessToken"));
35
+ const BaseAccessToken_1 = __importStar(require("../../../Core/BaseAccessToken"));
16
36
  const Utils_1 = require("../../../Core/Utils");
17
- class AccessToken extends BaseAccessToken_1.default {
37
+ class AuthAccessToken extends BaseAccessToken_1.default {
18
38
  constructor(app, component) {
19
39
  super(app);
20
40
  this.requestMethod = 'POST';
@@ -23,6 +43,12 @@ class AccessToken extends BaseAccessToken_1.default {
23
43
  this.component = null;
24
44
  this.component = component;
25
45
  }
46
+ warpAccessToken(token) {
47
+ return new BaseAccessToken_1.AccessToken(token, {
48
+ access_token: 'authorizer_access_token',
49
+ refresh_token: 'authorizer_refresh_token',
50
+ });
51
+ }
26
52
  getCredentials() {
27
53
  return __awaiter(this, void 0, void 0, function* () {
28
54
  return {
@@ -40,4 +66,4 @@ class AccessToken extends BaseAccessToken_1.default {
40
66
  });
41
67
  }
42
68
  }
43
- exports.default = AccessToken;
69
+ exports.default = AuthAccessToken;
@@ -17,10 +17,9 @@ class MiniProgram extends Application_1.default {
17
17
  this.account = null;
18
18
  this.setting = null;
19
19
  this.tester = null;
20
- this.registerProviders();
21
20
  }
22
21
  registerProviders() {
23
- this.registerCommonProviders();
22
+ super.registerProviders();
24
23
  this.offsetSet('code', function (app) {
25
24
  return new CodeClient_1.default(app);
26
25
  });
@@ -9,10 +9,9 @@ class OfficialAccount extends Application_1.default {
9
9
  constructor(config = {}, prepends = {}, id = null) {
10
10
  super(config, prepends, id);
11
11
  this.mini_program = null;
12
- this.registerProviders();
13
12
  }
14
13
  registerProviders() {
15
- this.registerCommonProviders();
14
+ super.registerProviders();
16
15
  this.offsetSet('mini_program', function (app) {
17
16
  return new MiniProgramClient_1.default(app);
18
17
  });
@@ -1,8 +1,9 @@
1
- import BaseAccessToken from '../../Core/BaseAccessToken';
1
+ import BaseAccessToken, { AccessToken } from '../../Core/BaseAccessToken';
2
2
  export default class ProviderAccessToken extends BaseAccessToken {
3
3
  protected requestMethod: string;
4
4
  protected tokenKey: string;
5
5
  protected endpointToGetToken: string;
6
6
  protected cachePrefix: string;
7
+ protected warpAccessToken(token: Record<string, any>): AccessToken;
7
8
  protected getCredentials(): Promise<object>;
8
9
  }
@@ -1,4 +1,27 @@
1
1
  'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,11 +31,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
34
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const BaseAccessToken_1 = __importDefault(require("../../Core/BaseAccessToken"));
35
+ const BaseAccessToken_1 = __importStar(require("../../Core/BaseAccessToken"));
16
36
  class ProviderAccessToken extends BaseAccessToken_1.default {
17
37
  constructor() {
18
38
  super(...arguments);
@@ -21,6 +41,11 @@ class ProviderAccessToken extends BaseAccessToken_1.default {
21
41
  this.endpointToGetToken = 'cgi-bin/service/get_provider_token';
22
42
  this.cachePrefix = 'easywechat.kernel.provider_access_token.';
23
43
  }
44
+ warpAccessToken(token) {
45
+ return new BaseAccessToken_1.AccessToken(token, {
46
+ access_token: 'provider_access_token',
47
+ });
48
+ }
24
49
  getCredentials() {
25
50
  return __awaiter(this, void 0, void 0, function* () {
26
51
  return {
@@ -1,8 +1,9 @@
1
- import BaseAccessToken from '../../Core/BaseAccessToken';
1
+ import BaseAccessToken, { AccessToken } from '../../Core/BaseAccessToken';
2
2
  export default class SuiteAccessToken extends BaseAccessToken {
3
3
  protected requestMethod: string;
4
4
  protected tokenKey: string;
5
5
  protected endpointToGetToken: string;
6
6
  protected cachePrefix: string;
7
+ protected warpAccessToken(token: Record<string, any>): AccessToken;
7
8
  protected getCredentials(): Promise<object>;
8
9
  }
@@ -1,4 +1,27 @@
1
1
  'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,11 +31,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
34
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const BaseAccessToken_1 = __importDefault(require("../../Core/BaseAccessToken"));
35
+ const BaseAccessToken_1 = __importStar(require("../../Core/BaseAccessToken"));
16
36
  class SuiteAccessToken extends BaseAccessToken_1.default {
17
37
  constructor() {
18
38
  super(...arguments);
@@ -21,6 +41,11 @@ class SuiteAccessToken extends BaseAccessToken_1.default {
21
41
  this.endpointToGetToken = 'cgi-bin/service/get_suite_token';
22
42
  this.cachePrefix = 'easywechat.kernel.suite_access_token.';
23
43
  }
44
+ warpAccessToken(token) {
45
+ return new BaseAccessToken_1.AccessToken(token, {
46
+ access_token: 'suite_access_token',
47
+ });
48
+ }
24
49
  getCredentials() {
25
50
  return __awaiter(this, void 0, void 0, function* () {
26
51
  return {
@@ -28,7 +28,7 @@ class ProviderClient extends BaseClient_1.default {
28
28
  */
29
29
  getLoginUrl(redirectUri = '', userType = 'admin', state = '') {
30
30
  if (!redirectUri)
31
- redirectUri = this.app.config.redirect_uri_install;
31
+ redirectUri = this.app.config.redirect_uri_single;
32
32
  if (!state)
33
33
  state = (0, Utils_1.randomString)(32);
34
34
  let params = {
@@ -62,6 +62,7 @@ class ProviderClient extends BaseClient_1.default {
62
62
  if (!response || response.errcode || !response['register_code']) {
63
63
  throw new Error('Fail to get register code');
64
64
  }
65
+ registerCode = response['register_code'];
65
66
  }
66
67
  let params = {
67
68
  register_code: registerCode,
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "node-easywechat",
3
- "version": "2.9.3",
3
+ "version": "2.9.6",
4
4
  "description": "EasyWechat SDK for Node.js (NOT OFFICIAL)",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
+ "release": "npx package-release",
7
8
  "build": "rm -rf dist && npx tsc",
8
9
  "test": "npx mocha ./test/**/*.js"
9
10
  },
@@ -18,17 +19,18 @@
18
19
  "author": "Hpyer",
19
20
  "license": "MIT",
20
21
  "devDependencies": {
21
- "@types/node": "^17.0.8",
22
- "mocha": "^9.2.0",
22
+ "@types/node": "^17.0.23",
23
+ "mocha": "^9.2.2",
24
+ "package-release": "^1.0.2",
23
25
  "sinon": "^12.0.1",
24
- "typescript": "^4.5.4"
26
+ "typescript": "^4.6.3"
25
27
  },
26
28
  "dependencies": {
27
- "axios": "^0.24.0",
29
+ "axios": "^0.26.1",
28
30
  "form-data": "^4.0.0",
29
- "node-socialite": "^1.2.5",
30
- "qs": "^6.10.2",
31
- "raw-body": "^2.4.2",
31
+ "node-socialite": "^1.2.6",
32
+ "qs": "^6.10.3",
33
+ "raw-body": "^2.5.1",
32
34
  "xml2js": "^0.4.23"
33
35
  }
34
36
  }