@bbk47/toolbox 1.0.4 → 1.0.6-beta.1

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.
Binary file
Binary file
@@ -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,3 +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.retry = require('./retry');
7
+ exports.deferred = require('./deferred');
8
+ exports.merge = require('./merge');
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/lib/uuid.js CHANGED
@@ -1,7 +1,40 @@
1
- const uuid = require('uuid').v4;
1
+ // const uuid = require('uuid').v4;
2
+
3
+ var lut = [];
4
+ for (var i = 0; i < 256; i++) {
5
+ lut[i] = (i < 16 ? '0' : '') + i.toString(16);
6
+ }
7
+ function e7() {
8
+ var d0 = (Math.random() * 0xffffffff) | 0;
9
+ var d1 = (Math.random() * 0xffffffff) | 0;
10
+ var d2 = (Math.random() * 0xffffffff) | 0;
11
+ var d3 = (Math.random() * 0xffffffff) | 0;
12
+ return (
13
+ lut[d0 & 0xff] +
14
+ lut[(d0 >> 8) & 0xff] +
15
+ lut[(d0 >> 16) & 0xff] +
16
+ lut[(d0 >> 24) & 0xff] +
17
+ '-' +
18
+ lut[d1 & 0xff] +
19
+ lut[(d1 >> 8) & 0xff] +
20
+ '-' +
21
+ lut[((d1 >> 16) & 0x0f) | 0x40] +
22
+ lut[(d1 >> 24) & 0xff] +
23
+ '-' +
24
+ lut[(d2 & 0x3f) | 0x80] +
25
+ lut[(d2 >> 8) & 0xff] +
26
+ '-' +
27
+ lut[(d2 >> 16) & 0xff] +
28
+ lut[(d2 >> 24) & 0xff] +
29
+ lut[d3 & 0xff] +
30
+ lut[(d3 >> 8) & 0xff] +
31
+ lut[(d3 >> 16) & 0xff] +
32
+ lut[(d3 >> 24) & 0xff]
33
+ );
34
+ }
2
35
 
3
36
  function getRamdomUUID() {
4
- const id = uuid();
37
+ const id = e7();
5
38
  return id.replace(/-/g, '');
6
39
  }
7
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bbk47/toolbox",
3
- "version": "1.0.4",
3
+ "version": "1.0.6-beta.1",
4
4
  "description": "toolbox for bbk",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -17,8 +17,7 @@
17
17
  },
18
18
  "homepage": "https://github.com/bbk47/toolboxjs#readme",
19
19
  "dependencies": {
20
- "date-format": "^3.0.0",
21
- "uuid": "^8.3.2"
20
+ "date-format": "^3.0.0"
22
21
  },
23
22
  "devDependencies": {
24
23
  "mocha": "^5.2.0"
@@ -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
+ });