@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.
- package/bbk47-toolbox-v1.0.6-beta.1.tgz +0 -0
- package/bbk47-toolbox-v1.0.6-beta.2.tgz +0 -0
- package/lib/deferred.js +8 -0
- package/lib/index.js +3 -0
- package/lib/merge.js +14 -25
- package/lib/retry.js +25 -0
- package/lib/uuid.js +35 -2
- package/package.json +2 -3
- package/test/deferred.js +24 -0
- package/test/merge.js +1 -7
- package/test/retry.js +61 -0
|
Binary file
|
|
Binary file
|
package/lib/deferred.js
ADDED
package/lib/index.js
CHANGED
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
|
-
|
|
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
|
-
|
|
25
|
-
return factory(true).apply(target, arguments);
|
|
26
|
-
}
|
|
16
|
+
module.exports = merge;
|
|
27
17
|
|
|
28
|
-
|
|
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 =
|
|
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.
|
|
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"
|
package/test/deferred.js
ADDED
|
@@ -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
|
|
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
|
+
});
|