apaas-oapi-client 0.1.1 → 0.1.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.
@@ -30,9 +30,6 @@ jobs:
30
30
  - name: Run Tests
31
31
  run: npm test
32
32
 
33
- - name: Debug npm token
34
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc && cat ~/.npmrc
35
-
36
33
  - name: Publish to npm
37
34
  run: npm publish --access public
38
35
  env:
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  var dayjs = require('dayjs');
4
4
  var axios = require('axios');
5
+ var Bottleneck = require('bottleneck');
5
6
 
6
7
  /**
7
8
  * 日志等级枚举
@@ -16,7 +17,32 @@ var LoggerLevel;
16
17
  LoggerLevel[LoggerLevel["trace"] = 5] = "trace";
17
18
  })(LoggerLevel || (LoggerLevel = {}));
18
19
 
19
- const { functionLimiter } = require('./limiter');
20
+ /**
21
+ * 默认 apaas 限流配置
22
+ */
23
+ const apaasLimiterOptions = {
24
+ minTime: 200, // 每秒最多发起 5 个数据库操作
25
+ reservoir: 20, // 最多同时查询 50 个数据库操作
26
+ reservoirRefreshAmount: 20, // 每次查询完毕后,重置为 50 个数据库操作
27
+ reservoirRefreshInterval: 1000 // 重置时间间隔为 1 秒
28
+ };
29
+ /**
30
+ * 创建限流器
31
+ * @param fn 被限流函数
32
+ * @param options 自定义限流配置
33
+ * @returns 包装后的限流函数
34
+ */
35
+ async function functionLimiter(fn, options = {}) {
36
+ const limiter = new Bottleneck({
37
+ minTime: options.minTime || apaasLimiterOptions.minTime,
38
+ reservoir: options.reservoir || apaasLimiterOptions.reservoir,
39
+ reservoirRefreshAmount: options.reservoirRefreshAmount || apaasLimiterOptions.reservoirRefreshAmount,
40
+ reservoirRefreshInterval: options.reservoirRefreshInterval || apaasLimiterOptions.reservoirRefreshInterval
41
+ });
42
+ const wrapped = limiter.wrap(fn);
43
+ return wrapped();
44
+ }
45
+
20
46
  /**
21
47
  * aPaaS OpenAPI 客户端
22
48
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apaas-oapi-client",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
4
4
  "exports": {
5
5
  "./node-sdk": "./dist/index.js",
6
6
  ".": "./dist/index.js"
@@ -11,7 +11,8 @@
11
11
  "scripts": {
12
12
  "build": "rollup -c",
13
13
  "test": "jest",
14
- "dev": "ts-node src/index.ts"
14
+ "dev": "ts-node src/index.ts",
15
+ "release": "npm run build && git add . && git commit -m 'chore(release): publish new version' && npm version patch && git push origin main --follow-tags"
15
16
  },
16
17
  "keywords": [],
17
18
  "author": "",
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import dayjs from 'dayjs';
2
2
  import axios, { AxiosInstance } from 'axios';
3
3
  import { LoggerLevel } from './logger';
4
- const { functionLimiter } = require('./limiter');
4
+ import { functionLimiter } from './limiter';
5
5
 
6
6
  /**
7
7
  * Client 初始化配置