@bbk47/toolbox 1.0.6 → 1.0.7

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/README.md CHANGED
@@ -13,4 +13,6 @@ A tool library for bbk/abc
13
13
  - md5 encrypt
14
14
  - socks5 addr parse and build
15
15
  - uuid util
16
- - merge object
16
+ - merge function
17
+ - deferred function
18
+ - retry function
@@ -0,0 +1,8 @@
1
+ module.exports = function deferred(){
2
+ const defer = {};
3
+ defer.promise = new Promise((resolve,reject)=>{
4
+ defer.resolve=resolve;
5
+ defer.reject=reject;
6
+ });
7
+ return defer;
8
+ }
package/lib/index.js CHANGED
@@ -3,4 +3,6 @@ exports.logger = require('./logger');
3
3
  exports.md5 = require('./md5');
4
4
  exports.socks5 = require('./socks5');
5
5
  exports.uuid = require('./uuid');
6
- exports.progress = require('./progress');
6
+ exports.retry = require('./retry');
7
+ exports.deferred = require('./deferred');
8
+ exports.merge = require('./merge');
package/lib/logger.js CHANGED
@@ -15,13 +15,10 @@ function getCustomLogger(label, level) {
15
15
  function getter(target, key, handler) {
16
16
  if (levelVal[key].piv <= setPiv) {
17
17
  const colour = levelVal[key].colour;
18
- return function () {
19
- let args = [].slice.call(arguments);
18
+ return function (msg) {
20
19
  let date = dateFormat('yyyy/MM/dd hh:mm:ss', new Date());
21
20
  var prefix = `${date} [${key[0].toUpperCase()}] ${label} `;
22
- // console.log(colour, prefix, msg);
23
- args.unshift(colour,prefix);
24
- console.log.apply(console, args);
21
+ console.log(colour, prefix, msg);
25
22
  };
26
23
  } else {
27
24
  return noop;
package/lib/merge.js CHANGED
@@ -1,29 +1,18 @@
1
- function factory(overide) {
2
- return function assign(target) {
3
- target = target || {};
4
- var args = [].slice.call(arguments, 1);
5
- args.forEach((temp) => {
6
- if (temp) {
7
- Object.keys(temp).forEach((key) => {
8
- if (overide) {
9
- target[key] = temp[key];
10
- } else if (temp[key]) {
11
- target[key] = temp[key];
12
- }
13
- });
14
- }
15
- });
16
- return target;
17
- };
18
- }
19
-
20
1
  function merge(target) {
21
- return factory(false).apply(target, arguments);
2
+ target = target || {};
3
+ var args = [].slice.call(arguments, 1);
4
+ args.forEach((temp) => {
5
+ if (temp) {
6
+ Object.keys(temp).forEach((key) => {
7
+ if (temp[key]) {
8
+ target[key] = temp[key];
9
+ }
10
+ });
11
+ }
12
+ });
13
+ return target;
22
14
  }
23
15
 
24
- function assign(target) {
25
- return factory(true).apply(target, arguments);
26
- }
16
+ module.exports = merge;
27
17
 
28
- exports.objectMerge = merge;
29
- exports.objectAssign = assign;
18
+ // console.log(merge({}, { sss: 123 }, { bb: 456 },{sss:null}));
package/lib/retry.js ADDED
@@ -0,0 +1,25 @@
1
+ var timeoutPromise = (time) =>
2
+ new Promise((resolve) => setTimeout(resolve, time));
3
+
4
+ function retryPromise(fn, opts = {}, errcall) {
5
+ var retryCount = opts.times || 5;
6
+
7
+ function invoker(idx) {
8
+ if (idx >= retryCount) {
9
+ return Promise.reject(
10
+ Error(`expect retryCount ${retryCount} is attached!`)
11
+ );
12
+ }
13
+ return fn.call(null).catch((err) => {
14
+ errcall && errcall(err);
15
+ if (opts.interval) {
16
+ return timeoutPromise(opts.interval).then(() => invoker(idx + 1));
17
+ } else {
18
+ return invoker(idx + 1);
19
+ }
20
+ });
21
+ }
22
+ return invoker(0);
23
+ }
24
+
25
+ module.exports = retryPromise;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bbk47/toolbox",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "toolbox for bbk",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -0,0 +1,24 @@
1
+ const assert = require('assert');
2
+ const deferred = require('../lib/deferred');
3
+ const { describe } = require('mocha');
4
+
5
+ describe('deferred', function () {
6
+ it('test deferred resolve', function () {
7
+ var defer = deferred();
8
+ setTimeout(() => {
9
+ defer.resolve("okok")
10
+ }, 10);
11
+ return defer.promise.then(ret => {
12
+ assert.equal(ret, "okok");
13
+ });
14
+ });
15
+ it('test deferred reject', function () {
16
+ var defer = deferred();
17
+ setTimeout(() => {
18
+ defer.reject("err111");
19
+ }, 10);
20
+ return defer.promise.catch(err => {
21
+ assert.equal(err, "err111")
22
+ });
23
+ });
24
+ });
package/test/merge.js CHANGED
@@ -4,14 +4,8 @@ const { describe } = require('mocha');
4
4
 
5
5
  describe('socks5', function () {
6
6
  it('test object merge', function () {
7
- var obj = merge.objectMerge({ sss: 1 }, { sss: 123 }, { bb: 456 }, { sss: null });
7
+ var obj = merge({ sss: 1 }, { sss: 123 }, { bb: 456 }, { sss: null });
8
8
  assert.equal(obj.sss, 123);
9
9
  assert.equal(obj.bb, 456);
10
10
  });
11
-
12
- it('test object assign', function () {
13
- var obj = merge.objectAssign({ sss: 12 }, { sss: 123 }, { bb: 456 }, { sss: null ,bb:789});
14
- assert.equal(obj.sss, null);
15
- assert.equal(obj.bb, 789);
16
- });
17
11
  });
package/test/retry.js ADDED
@@ -0,0 +1,61 @@
1
+ const assert = require('assert');
2
+ const retry = require('../lib/retry');
3
+ const { describe } = require('mocha');
4
+
5
+ describe('retry', function () {
6
+ it('test retry max count', function () {
7
+ const awaitErrorTask = () => {
8
+ return new Promise((s, reject) => reject('xxxxxx'));
9
+ }
10
+ return retry(awaitErrorTask).then(() => {
11
+ throw Error("unexcept exec");
12
+ }).catch(err => {
13
+ assert.equal("expect retryCount 5 is attached!", err.message);
14
+ });
15
+
16
+ });
17
+
18
+ it('test retry custom max count', function () {
19
+ let maxcount = 10;
20
+ const taskfn = () => {
21
+ return new Promise((s, reject) => reject('err'));
22
+ }
23
+ return retry(taskfn, { times: maxcount }).then(() => {
24
+ throw Error("unexcept exec");
25
+ }).catch(err => {
26
+ assert.equal("expect retryCount 10 is attached!", err.message);
27
+ });
28
+ });
29
+
30
+ it('test retry errorcall', function () {
31
+ let maxcount = 10;
32
+ let start = 0;
33
+ const taskfn = () => {
34
+ start++;
35
+ return new Promise((s, reject) => reject(Error('retryerr:' + start)));
36
+ }
37
+ return retry(taskfn, { times: maxcount }, function (err) {
38
+ assert.equal("retryerr:" + start, err.message);
39
+ }).then(() => {
40
+ throw Error("unexcept exec");
41
+ }).catch(err => {
42
+ assert.equal("expect retryCount 10 is attached!", err.message);
43
+ });
44
+ });
45
+
46
+ it('test retry interval args', function (done) {
47
+ let start = 0;
48
+ const taskfn = () => {
49
+ start++;
50
+ return new Promise((s, reject) => reject(Error('retryerr:' + start)));
51
+ }
52
+ let startTime =Date.now();
53
+ retry(taskfn, { interval: 100 }, function (err) {
54
+ assert.equal("retryerr:" + start, err.message);
55
+ }).catch(err => {
56
+ assert.equal(Date.now()-startTime > 5*100,true);
57
+ assert.equal("expect retryCount 5 is attached!", err.message);
58
+ done();
59
+ });
60
+ });
61
+ });
Binary file
package/lib/progress.js DELETED
@@ -1,34 +0,0 @@
1
- // const chalk = require('chalk');
2
-
3
- var print = {
4
- setFormat: function(fn) {
5
- this.format = fn || ((result) => 'complete.');
6
- },
7
- printStatus(result) {
8
- if (!this.numOfLinesToClear) {
9
- this.numOfLinesToClear = true;
10
- } else {
11
- process.stdout.moveCursor(0, -1);
12
- }
13
- process.stdout.clearLine();
14
- process.stdout.cursorTo(0);
15
- let output = this.format(result);
16
- process.stdout.write(output || 'none');
17
- },
18
- };
19
-
20
- function progress(formatfn) {
21
- var printer = Object.create(print);
22
- printer.setFormat(formatfn);
23
- return printer;
24
- }
25
-
26
- // var printer = progress((result) => {
27
- // return `fetch cve total: ${chalk.cyan(result.total)}, complete:${chalk.green(result.complete)}\n`;
28
- // });
29
-
30
- // for (var i = 0; i < 10000; i++) {
31
- // printer.printStatus({ total: 10000, complete: i });
32
- // }
33
-
34
- module.exports = progress;