melperjs 7.1.0 → 8.0.0
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 +86 -80
- package/{cjs → lib/cjs}/index.js +34 -25
- package/{cjs → lib/cjs}/node.js +4 -5
- package/lib/esm/index.js +248 -0
- package/lib/esm/node.js +138 -0
- package/package.json +16 -13
- package/.babelrc +0 -52
- package/cjs/index.js.map +0 -1
- package/cjs/node.js.map +0 -1
- package/mjs/index.js +0 -199
- package/mjs/index.js.map +0 -1
- package/mjs/node.js +0 -133
- package/mjs/node.js.map +0 -1
- package/src/index.js +0 -259
- package/src/node.js +0 -155
- package/test/script.js +0 -82
- /package/{LISENCE → LICENSE} +0 -0
- /package/{cjs → lib/cjs}/package.json +0 -0
package/README.md
CHANGED
|
@@ -13,90 +13,96 @@ npm i melperjs
|
|
|
13
13
|
## Usage
|
|
14
14
|
|
|
15
15
|
```javascript
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
// const helper = require("melperjs");
|
|
17
|
+
// const nodeHelper = require("melperjs/node");
|
|
18
|
+
// const axios = require("axios");
|
|
19
|
+
import * as helper from "melperjs";
|
|
20
|
+
import * as nodeHelper from "melperjs/node";
|
|
21
|
+
import axios from "axios";
|
|
22
22
|
|
|
23
|
-
(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
2.line
|
|
23
|
+
console.log(helper.CONSTANTS);
|
|
24
|
+
console.log(helper.Exception("something went wrong", {status: 400}, "bad request error"));
|
|
25
|
+
console.log(helper.time());
|
|
26
|
+
await helper.sleepMs(1000);
|
|
27
|
+
console.log(helper.time());
|
|
28
|
+
await helper.sleep(1);
|
|
29
|
+
console.log(helper.time());
|
|
30
|
+
try {
|
|
31
|
+
await helper.promiseTimeout(1000, helper.sleepMs(2000));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
console.error(e.message);
|
|
34
|
+
console.log("Timeout, Internal Error ?", helper.isIntlError(e));
|
|
35
|
+
}
|
|
36
|
+
console.log(helper.splitClear(`
|
|
37
|
+
2.satır
|
|
39
38
|
|
|
40
|
-
4.
|
|
39
|
+
4.satır
|
|
41
40
|
`))
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
41
|
+
console.log(helper.findKeyNode("c", {
|
|
42
|
+
a: {
|
|
43
|
+
b: {
|
|
44
|
+
x: 1,
|
|
45
|
+
y: 2,
|
|
46
|
+
c: {
|
|
47
|
+
d: true
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
console.log("'' empty ?", helper.checkEmpty(''));
|
|
53
|
+
console.log("1 empty ?", helper.checkEmpty(1));
|
|
54
|
+
console.log("0 empty ?", helper.checkEmpty(1));
|
|
55
|
+
console.log("[] empty ?", helper.checkEmpty([]));
|
|
56
|
+
console.log(helper.pascalCase("pascal case"));
|
|
57
|
+
console.log(helper.titleCase("THIS mUsT be Title"));
|
|
58
|
+
console.log(helper.objectStringify({
|
|
59
|
+
a: "hello",
|
|
60
|
+
b: 1,
|
|
61
|
+
c: undefined,
|
|
62
|
+
d: null,
|
|
63
|
+
e: {
|
|
64
|
+
ea: 2
|
|
65
|
+
},
|
|
66
|
+
f: [3, 4, 5],
|
|
67
|
+
g: false
|
|
68
|
+
}));
|
|
69
|
+
console.log(helper.limitString("LONG TEXT", 7));
|
|
70
|
+
console.log(helper.safeString("<strong>SAFE TEXT</strong>"));
|
|
71
|
+
console.log(helper.randomString(32, true, true));
|
|
72
|
+
console.log(helper.randomHex(8));
|
|
73
|
+
console.log(helper.randomInteger(100, 1000));
|
|
74
|
+
console.log(helper.randomUuid(true));
|
|
75
|
+
console.log(helper.randomWeighted({strongProbability: 1000, lowProbability: 1}));
|
|
76
|
+
console.log(nodeHelper.tokenString(32, true, true));
|
|
77
|
+
console.log(nodeHelper.tokenHex(8));
|
|
78
|
+
console.log(nodeHelper.tokenUuid(true));
|
|
79
|
+
console.log(nodeHelper.tokenWeighted({strongProbability: 1000, lowProbability: 1}));
|
|
80
|
+
console.log(nodeHelper.md5("data"));
|
|
81
|
+
const password = nodeHelper.hashBcrypt("plain", "encryptionKey");
|
|
82
|
+
console.log(password)
|
|
83
|
+
console.log("passwordHash verified ?", nodeHelper.verifyBcrypt("plain", password, "encryptionKey"));
|
|
84
|
+
const cookies = helper.cookieDict(await axios.get("https://google.com"));
|
|
85
|
+
console.log(cookies);
|
|
86
|
+
console.log(helper.cookieHeader(cookies));
|
|
87
|
+
const proxy = nodeHelper.formatProxy("127.0.0.1:8080:id:pw-{SESSION}");
|
|
88
|
+
console.log(proxy);
|
|
89
|
+
console.log(nodeHelper.proxyObject(proxy));
|
|
90
|
+
console.log(nodeHelper.proxyValue(proxy));
|
|
91
|
+
console.log(nodeHelper.serverIp());
|
|
92
|
+
console.log("HTTP CODE: 400 (Bad Request) ?", helper.isIntlHttpCode(401));
|
|
93
|
+
console.log("HTTP CODE: 407 (Failed Proxy Auth) ?", helper.isIntlHttpCode(407));
|
|
94
|
+
nodeHelper.createNumDir("test");
|
|
95
|
+
console.log("VERSIONED BY .GIT", "v" + nodeHelper.getVersion());
|
|
96
|
+
await helper.forever(1000, async () => {
|
|
97
|
+
await helper.sleep(1);
|
|
98
|
+
console.log("Do something!")
|
|
99
|
+
}, (e) => {
|
|
100
|
+
console.error("Error!", e);
|
|
101
|
+
return 5000
|
|
102
|
+
}, () => {
|
|
103
|
+
console.log("Run this process forever!")
|
|
104
|
+
}
|
|
105
|
+
);
|
|
100
106
|
|
|
101
107
|
/*
|
|
102
108
|
{
|
|
@@ -172,4 +178,4 @@ VERSIONED BY .GIT v2310.15182
|
|
|
172
178
|
|
|
173
179
|
## License
|
|
174
180
|
|
|
175
|
-
The MIT License (MIT). Please see [License File](
|
|
181
|
+
The MIT License (MIT). Please see [License File](LICENSE) for more information.
|
package/{cjs → lib/cjs}/index.js
RENAMED
|
@@ -9,10 +9,10 @@ exports.checkEmpty = checkEmpty;
|
|
|
9
9
|
exports.cookieDict = cookieDict;
|
|
10
10
|
exports.cookieHeader = cookieHeader;
|
|
11
11
|
exports.findKeyNode = findKeyNode;
|
|
12
|
+
exports.forever = forever;
|
|
12
13
|
exports.isIntlError = isIntlError;
|
|
13
14
|
exports.isIntlHttpCode = isIntlHttpCode;
|
|
14
15
|
exports.limitString = limitString;
|
|
15
|
-
exports.lowerCaseFirst = lowerCaseFirst;
|
|
16
16
|
exports.objectStringify = objectStringify;
|
|
17
17
|
exports.pascalCase = pascalCase;
|
|
18
18
|
exports.promiseTimeout = promiseTimeout;
|
|
@@ -27,11 +27,10 @@ exports.sleepMs = sleepMs;
|
|
|
27
27
|
exports.splitClear = splitClear;
|
|
28
28
|
exports.time = time;
|
|
29
29
|
exports.titleCase = titleCase;
|
|
30
|
-
exports.upperCaseFirst = upperCaseFirst;
|
|
31
30
|
var _xss = _interopRequireDefault(require("xss"));
|
|
32
31
|
var _setCookieParser = _interopRequireDefault(require("set-cookie-parser"));
|
|
33
32
|
var _camelCase = _interopRequireDefault(require("lodash/camelCase.js"));
|
|
34
|
-
var
|
|
33
|
+
var _upperFirst = _interopRequireDefault(require("lodash/upperFirst.js"));
|
|
35
34
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty.js"));
|
|
36
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
36
|
const CONSTANTS = exports.CONSTANTS = {
|
|
@@ -41,12 +40,32 @@ const CONSTANTS = exports.CONSTANTS = {
|
|
|
41
40
|
NUMBERS: "0123456789"
|
|
42
41
|
};
|
|
43
42
|
function Exception(message, response = {}, name = null) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
class ExceptionClass extends Error {
|
|
44
|
+
constructor(message, response, name) {
|
|
45
|
+
super(message);
|
|
46
|
+
response.status = response.status || 400;
|
|
47
|
+
this.response = response;
|
|
48
|
+
this.name = name ? pascalCase(name) : "Exception";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return new ExceptionClass(message, response, name);
|
|
52
|
+
}
|
|
53
|
+
async function forever(cooldown, onSuccess, onError = null, onCompleted = null) {
|
|
54
|
+
const checkCooldown = value => value && !isNaN(value) && value > 0;
|
|
55
|
+
if (!checkCooldown(cooldown)) throw new Error("Cooldown must be a positive number");
|
|
56
|
+
while (true) {
|
|
57
|
+
try {
|
|
58
|
+
const value = await onSuccess();
|
|
59
|
+
if (checkCooldown(value)) cooldown = value;
|
|
60
|
+
} catch (e) {
|
|
61
|
+
const value = onError && (await onError(e));
|
|
62
|
+
if (checkCooldown(value)) cooldown = value;
|
|
63
|
+
} finally {
|
|
64
|
+
const value = onCompleted && (await onCompleted());
|
|
65
|
+
if (checkCooldown(value)) cooldown = value;
|
|
66
|
+
await sleepMs(cooldown);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
50
69
|
}
|
|
51
70
|
function time() {
|
|
52
71
|
return Math.floor(Date.now() / 1000);
|
|
@@ -71,7 +90,8 @@ function promiseTimeout(milliseconds, promise) {
|
|
|
71
90
|
});
|
|
72
91
|
});
|
|
73
92
|
}
|
|
74
|
-
function splitClear(rawText, separator =
|
|
93
|
+
function splitClear(rawText, separator = null) {
|
|
94
|
+
separator = separator ?? /\r?\n/;
|
|
75
95
|
return rawText.split(separator).map(item => item.trim()).filter(item => !(0, _isEmpty.default)(item));
|
|
76
96
|
}
|
|
77
97
|
function findKeyNode(key, node, pair = null) {
|
|
@@ -94,22 +114,12 @@ function checkEmpty(value) {
|
|
|
94
114
|
return (0, _isEmpty.default)(value);
|
|
95
115
|
}
|
|
96
116
|
}
|
|
97
|
-
function upperCaseFirst(str) {
|
|
98
|
-
str = str || "";
|
|
99
|
-
if (str.length < 1) return "";
|
|
100
|
-
return str[0].toUpperCase() + str.slice(1);
|
|
101
|
-
}
|
|
102
|
-
function lowerCaseFirst(str) {
|
|
103
|
-
str = str || "";
|
|
104
|
-
if (str.length < 1) return "";
|
|
105
|
-
return str[0].toLowerCase() + str.slice(1);
|
|
106
|
-
}
|
|
107
117
|
function pascalCase(str) {
|
|
108
|
-
return
|
|
118
|
+
return (0, _upperFirst.default)((0, _camelCase.default)(str));
|
|
109
119
|
}
|
|
110
120
|
function titleCase(str) {
|
|
111
121
|
str = str || "";
|
|
112
|
-
return str.
|
|
122
|
+
return str.replace(/\b\w/g, char => char.toUpperCase());
|
|
113
123
|
}
|
|
114
124
|
function objectStringify(obj) {
|
|
115
125
|
for (let key in obj) {
|
|
@@ -222,9 +232,8 @@ function cookieHeader(cookieDict) {
|
|
|
222
232
|
return Object.entries(cookieDict).map(([key, value]) => `${key}=${value}`).join(';');
|
|
223
233
|
}
|
|
224
234
|
function isIntlHttpCode(httpCode) {
|
|
225
|
-
return httpCode === undefined || httpCode === null || httpCode === 0 || httpCode === 100 || httpCode === 402 || httpCode === 407 || 460 <= httpCode && httpCode < 470 || 500 <= httpCode;
|
|
235
|
+
return httpCode === undefined || httpCode === null || isNaN(httpCode) || httpCode === 0 || httpCode === 100 || httpCode === 402 || httpCode === 407 || 460 <= httpCode && httpCode < 470 || 500 <= httpCode;
|
|
226
236
|
}
|
|
227
237
|
function isIntlError(e) {
|
|
228
238
|
return e?.message?.toLowerCase?.()?.includes?.("timeout") || e?.message?.toLowerCase?.()?.includes?.("aborted") || e?.message?.toLowerCase?.()?.includes?.("tls connection") || e?.message?.toLowerCase?.()?.includes?.("socket hang") || isIntlHttpCode(e?.response?.status);
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=index.js.map
|
|
239
|
+
}
|
package/{cjs → lib/cjs}/node.js
RENAMED
|
@@ -21,7 +21,7 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
21
21
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
22
22
|
var _os = require("os");
|
|
23
23
|
var _child_process = require("child_process");
|
|
24
|
-
var
|
|
24
|
+
var _bcryptjs = _interopRequireDefault(require("bcryptjs"));
|
|
25
25
|
var _index = require("./index.js");
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
function tokenString(length, useNumbers = true, useUppercase = false) {
|
|
@@ -92,10 +92,10 @@ function md5(data) {
|
|
|
92
92
|
return _crypto.default.createHash('md5').update(data).digest("hex");
|
|
93
93
|
}
|
|
94
94
|
function hashBcrypt(plainText, encryptionKey = "") {
|
|
95
|
-
return
|
|
95
|
+
return _bcryptjs.default.hashSync(plainText + encryptionKey, _bcryptjs.default.genSaltSync(10));
|
|
96
96
|
}
|
|
97
97
|
function verifyBcrypt(plainText, hash, encryptionKey = "") {
|
|
98
|
-
return
|
|
98
|
+
return _bcryptjs.default.compareSync(plainText + encryptionKey, hash);
|
|
99
99
|
}
|
|
100
100
|
function formatProxy(proxy, protocol = "http") {
|
|
101
101
|
proxy = proxy.trim();
|
|
@@ -148,5 +148,4 @@ function proxyValue(proxies) {
|
|
|
148
148
|
proxy = formatProxy(proxy);
|
|
149
149
|
proxy = proxy.replace("{SESSION}", tokenHex(8));
|
|
150
150
|
return proxy || null;
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=node.js.map
|
|
151
|
+
}
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
3
|
+
import xss from "xss";
|
|
4
|
+
import setCookieParser from "set-cookie-parser";
|
|
5
|
+
import camelCase from "lodash/camelCase.js";
|
|
6
|
+
import upperFirst from "lodash/upperFirst.js";
|
|
7
|
+
import isEmpty from "lodash/isEmpty.js";
|
|
8
|
+
export var CONSTANTS = {
|
|
9
|
+
LOWER_CASE: "abcdefghijklmnopqrstuvwxyz",
|
|
10
|
+
UPPER_CASE: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
11
|
+
HEXADECIMAL: "0123456789abcdef",
|
|
12
|
+
NUMBERS: "0123456789"
|
|
13
|
+
};
|
|
14
|
+
export function Exception(message) {
|
|
15
|
+
var response = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
16
|
+
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
17
|
+
class ExceptionClass extends Error {
|
|
18
|
+
constructor(message, response, name) {
|
|
19
|
+
super(message);
|
|
20
|
+
response.status = response.status || 400;
|
|
21
|
+
this.response = response;
|
|
22
|
+
this.name = name ? pascalCase(name) : "Exception";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return new ExceptionClass(message, response, name);
|
|
26
|
+
}
|
|
27
|
+
export function forever(_x, _x2) {
|
|
28
|
+
return _forever.apply(this, arguments);
|
|
29
|
+
}
|
|
30
|
+
function _forever() {
|
|
31
|
+
_forever = _asyncToGenerator(function* (cooldown, onSuccess) {
|
|
32
|
+
var onError = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
33
|
+
var onCompleted = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
34
|
+
var checkCooldown = value => value && !isNaN(value) && value > 0;
|
|
35
|
+
if (!checkCooldown(cooldown)) throw new Error("Cooldown must be a positive number");
|
|
36
|
+
while (true) {
|
|
37
|
+
try {
|
|
38
|
+
var value = yield onSuccess();
|
|
39
|
+
if (checkCooldown(value)) cooldown = value;
|
|
40
|
+
} catch (e) {
|
|
41
|
+
var _value = onError && (yield onError(e));
|
|
42
|
+
if (checkCooldown(_value)) cooldown = _value;
|
|
43
|
+
} finally {
|
|
44
|
+
var _value2 = onCompleted && (yield onCompleted());
|
|
45
|
+
if (checkCooldown(_value2)) cooldown = _value2;
|
|
46
|
+
yield sleepMs(cooldown);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return _forever.apply(this, arguments);
|
|
51
|
+
}
|
|
52
|
+
export function time() {
|
|
53
|
+
return Math.floor(Date.now() / 1000);
|
|
54
|
+
}
|
|
55
|
+
export function sleepMs(_x3) {
|
|
56
|
+
return _sleepMs.apply(this, arguments);
|
|
57
|
+
}
|
|
58
|
+
function _sleepMs() {
|
|
59
|
+
_sleepMs = _asyncToGenerator(function* (milliseconds) {
|
|
60
|
+
return new Promise(resolve => setTimeout(resolve, milliseconds));
|
|
61
|
+
});
|
|
62
|
+
return _sleepMs.apply(this, arguments);
|
|
63
|
+
}
|
|
64
|
+
export function sleep(_x4) {
|
|
65
|
+
return _sleep.apply(this, arguments);
|
|
66
|
+
}
|
|
67
|
+
function _sleep() {
|
|
68
|
+
_sleep = _asyncToGenerator(function* (seconds) {
|
|
69
|
+
return yield sleepMs(seconds * 1000);
|
|
70
|
+
});
|
|
71
|
+
return _sleep.apply(this, arguments);
|
|
72
|
+
}
|
|
73
|
+
export function promiseTimeout(milliseconds, promise) {
|
|
74
|
+
return new Promise((resolve, reject) => {
|
|
75
|
+
var timer = setTimeout(() => {
|
|
76
|
+
reject(new Error('Promise timed out after ' + milliseconds + 'ms'));
|
|
77
|
+
}, milliseconds);
|
|
78
|
+
promise.then(value => {
|
|
79
|
+
clearTimeout(timer);
|
|
80
|
+
resolve(value);
|
|
81
|
+
}).catch(reason => {
|
|
82
|
+
clearTimeout(timer);
|
|
83
|
+
reject(reason);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
export function splitClear(rawText) {
|
|
88
|
+
var _separator;
|
|
89
|
+
var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
90
|
+
separator = (_separator = separator) !== null && _separator !== void 0 ? _separator : /\r?\n/;
|
|
91
|
+
return rawText.split(separator).map(item => item.trim()).filter(item => !isEmpty(item));
|
|
92
|
+
}
|
|
93
|
+
export function findKeyNode(key, node) {
|
|
94
|
+
var pair = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
95
|
+
if (node && node.hasOwnProperty(key) && (pair ? node[key] === pair : true)) {
|
|
96
|
+
return node;
|
|
97
|
+
} else if (typeof node === 'object') {
|
|
98
|
+
for (var index in node) {
|
|
99
|
+
var result = findKeyNode(key, node[index], pair);
|
|
100
|
+
if (result) {
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
export function checkEmpty(value) {
|
|
108
|
+
if (typeof value === "number") {
|
|
109
|
+
return value === 0;
|
|
110
|
+
} else {
|
|
111
|
+
return isEmpty(value);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export function pascalCase(str) {
|
|
115
|
+
return upperFirst(camelCase(str));
|
|
116
|
+
}
|
|
117
|
+
export function titleCase(str) {
|
|
118
|
+
str = str || "";
|
|
119
|
+
return str.replace(/\b\w/g, char => char.toUpperCase());
|
|
120
|
+
}
|
|
121
|
+
export function objectStringify(obj) {
|
|
122
|
+
for (var key in obj) {
|
|
123
|
+
if (obj.hasOwnProperty(key)) {
|
|
124
|
+
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
125
|
+
objectStringify(obj[key]);
|
|
126
|
+
} else {
|
|
127
|
+
var _obj$key;
|
|
128
|
+
if ((_obj$key = obj[key]) !== null && _obj$key !== void 0 && _obj$key.toString) {
|
|
129
|
+
obj[key] = obj[key].toString();
|
|
130
|
+
} else {
|
|
131
|
+
obj[key] = String(obj[key]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return obj;
|
|
137
|
+
}
|
|
138
|
+
export function limitString(str) {
|
|
139
|
+
var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 35;
|
|
140
|
+
var omission = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "...";
|
|
141
|
+
str = str || "";
|
|
142
|
+
if (str.length <= limit) {
|
|
143
|
+
return str;
|
|
144
|
+
} else {
|
|
145
|
+
return str.substring(0, limit - omission.length) + omission;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export function safeString(str) {
|
|
149
|
+
str = str || "";
|
|
150
|
+
return xss(str, {
|
|
151
|
+
whiteList: {},
|
|
152
|
+
stripIgnoreTag: true,
|
|
153
|
+
stripIgnoreTagBody: ["script"]
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
export function randomString(length) {
|
|
157
|
+
var useNumbers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
158
|
+
var useUppercase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
159
|
+
var characters = CONSTANTS.LOWER_CASE;
|
|
160
|
+
if (useUppercase) characters += CONSTANTS.UPPER_CASE;
|
|
161
|
+
if (useNumbers) characters += CONSTANTS.NUMBERS;
|
|
162
|
+
var randomString = '';
|
|
163
|
+
for (var i = 0; i < length; i++) {
|
|
164
|
+
var randomIndex = Math.floor(Math.random() * characters.length);
|
|
165
|
+
randomString += characters[randomIndex];
|
|
166
|
+
}
|
|
167
|
+
return randomString;
|
|
168
|
+
}
|
|
169
|
+
export function randomHex(length) {
|
|
170
|
+
var result = '';
|
|
171
|
+
for (var i = 0; i < length; i++) {
|
|
172
|
+
var randomIndex = Math.floor(Math.random() * CONSTANTS.HEXADECIMAL.length);
|
|
173
|
+
result += CONSTANTS.HEXADECIMAL[randomIndex];
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
export function randomInteger(min, max, callback) {
|
|
178
|
+
var minNotSpecified = typeof max === 'undefined' || typeof max === 'function';
|
|
179
|
+
if (minNotSpecified) {
|
|
180
|
+
callback = max;
|
|
181
|
+
max = min;
|
|
182
|
+
min = 0;
|
|
183
|
+
}
|
|
184
|
+
var isSync = typeof callback === 'undefined';
|
|
185
|
+
if (typeof min !== 'number' || typeof max !== 'number') {
|
|
186
|
+
throw new Error('min and max must be numerical values');
|
|
187
|
+
}
|
|
188
|
+
if (max <= min) {
|
|
189
|
+
throw new Error('max must be greater than min');
|
|
190
|
+
}
|
|
191
|
+
var randomNumber = Math.floor(Math.random() * (max - min)) + min;
|
|
192
|
+
if (isSync) {
|
|
193
|
+
return randomNumber;
|
|
194
|
+
} else {
|
|
195
|
+
if (typeof callback !== 'function') {
|
|
196
|
+
throw new Error('callback must be a function');
|
|
197
|
+
}
|
|
198
|
+
callback(randomNumber);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export function randomUuid() {
|
|
202
|
+
var useDashes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
203
|
+
var d = Date.now();
|
|
204
|
+
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
205
|
+
var r = (d + Math.random() * 16) % 16 | 0;
|
|
206
|
+
d = Math.floor(d / 16);
|
|
207
|
+
return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);
|
|
208
|
+
});
|
|
209
|
+
return useDashes ? uuid : uuid.replaceAll("-", "");
|
|
210
|
+
}
|
|
211
|
+
export function randomWeighted(dict) {
|
|
212
|
+
var randomFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : totalWeight => Math.random() * totalWeight;
|
|
213
|
+
var elements = Object.keys(dict);
|
|
214
|
+
var weights = Object.values(dict);
|
|
215
|
+
var totalWeight = weights.reduce((sum, weight) => sum + weight, 0);
|
|
216
|
+
var randomNum = randomFunc(totalWeight);
|
|
217
|
+
var weightSum = 0;
|
|
218
|
+
for (var i = 0; i < elements.length; i++) {
|
|
219
|
+
weightSum += weights[i];
|
|
220
|
+
if (randomNum <= weightSum) {
|
|
221
|
+
return elements[i];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
export function cookieDict(res) {
|
|
226
|
+
var decodeValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
227
|
+
var dict = {};
|
|
228
|
+
var cookies = setCookieParser.parse(res, {
|
|
229
|
+
decodeValues: decodeValues
|
|
230
|
+
});
|
|
231
|
+
for (var cookie of cookies) {
|
|
232
|
+
dict[cookie.name] = cookie.value;
|
|
233
|
+
}
|
|
234
|
+
return dict;
|
|
235
|
+
}
|
|
236
|
+
export function cookieHeader(cookieDict) {
|
|
237
|
+
return Object.entries(cookieDict).map(_ref => {
|
|
238
|
+
var [key, value] = _ref;
|
|
239
|
+
return "".concat(key, "=").concat(value);
|
|
240
|
+
}).join(';');
|
|
241
|
+
}
|
|
242
|
+
export function isIntlHttpCode(httpCode) {
|
|
243
|
+
return httpCode === undefined || httpCode === null || isNaN(httpCode) || httpCode === 0 || httpCode === 100 || httpCode === 402 || httpCode === 407 || 460 <= httpCode && httpCode < 470 || 500 <= httpCode;
|
|
244
|
+
}
|
|
245
|
+
export function isIntlError(e) {
|
|
246
|
+
var _e$message, _e$message$toLowerCas, _e$message$toLowerCas2, _e$message2, _e$message2$toLowerCa, _e$message2$toLowerCa2, _e$message3, _e$message3$toLowerCa, _e$message3$toLowerCa2, _e$message4, _e$message4$toLowerCa, _e$message4$toLowerCa2, _e$response;
|
|
247
|
+
return (e === null || e === void 0 || (_e$message = e.message) === null || _e$message === void 0 || (_e$message$toLowerCas = _e$message.toLowerCase) === null || _e$message$toLowerCas === void 0 || (_e$message$toLowerCas = _e$message$toLowerCas.call(_e$message)) === null || _e$message$toLowerCas === void 0 || (_e$message$toLowerCas2 = _e$message$toLowerCas.includes) === null || _e$message$toLowerCas2 === void 0 ? void 0 : _e$message$toLowerCas2.call(_e$message$toLowerCas, "timeout")) || (e === null || e === void 0 || (_e$message2 = e.message) === null || _e$message2 === void 0 || (_e$message2$toLowerCa = _e$message2.toLowerCase) === null || _e$message2$toLowerCa === void 0 || (_e$message2$toLowerCa = _e$message2$toLowerCa.call(_e$message2)) === null || _e$message2$toLowerCa === void 0 || (_e$message2$toLowerCa2 = _e$message2$toLowerCa.includes) === null || _e$message2$toLowerCa2 === void 0 ? void 0 : _e$message2$toLowerCa2.call(_e$message2$toLowerCa, "aborted")) || (e === null || e === void 0 || (_e$message3 = e.message) === null || _e$message3 === void 0 || (_e$message3$toLowerCa = _e$message3.toLowerCase) === null || _e$message3$toLowerCa === void 0 || (_e$message3$toLowerCa = _e$message3$toLowerCa.call(_e$message3)) === null || _e$message3$toLowerCa === void 0 || (_e$message3$toLowerCa2 = _e$message3$toLowerCa.includes) === null || _e$message3$toLowerCa2 === void 0 ? void 0 : _e$message3$toLowerCa2.call(_e$message3$toLowerCa, "tls connection")) || (e === null || e === void 0 || (_e$message4 = e.message) === null || _e$message4 === void 0 || (_e$message4$toLowerCa = _e$message4.toLowerCase) === null || _e$message4$toLowerCa === void 0 || (_e$message4$toLowerCa = _e$message4$toLowerCa.call(_e$message4)) === null || _e$message4$toLowerCa === void 0 || (_e$message4$toLowerCa2 = _e$message4$toLowerCa.includes) === null || _e$message4$toLowerCa2 === void 0 ? void 0 : _e$message4$toLowerCa2.call(_e$message4$toLowerCa, "socket hang")) || isIntlHttpCode(e === null || e === void 0 || (_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status);
|
|
248
|
+
}
|