topkat-utils 1.1.13 → 1.2.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/CHANGELOG.md +4 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/src/array-utils.d.ts +56 -0
- package/dist/src/array-utils.js +160 -0
- package/dist/src/array-utils.js.map +1 -0
- package/dist/src/clean-stack-trace.d.ts +1 -0
- package/dist/src/clean-stack-trace.js +46 -0
- package/dist/src/clean-stack-trace.js.map +1 -0
- package/dist/src/config.d.ts +44 -0
- package/dist/src/config.js +66 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/date-utils.d.ts +100 -0
- package/dist/src/date-utils.js +407 -0
- package/dist/src/date-utils.js.map +1 -0
- package/dist/src/env-utils.d.ts +8 -0
- package/dist/src/env-utils.js +38 -0
- package/dist/src/env-utils.js.map +1 -0
- package/dist/src/error-utils.d.ts +29 -0
- package/dist/src/error-utils.js +202 -0
- package/dist/src/error-utils.js.map +1 -0
- package/dist/src/is-empty.d.ts +1 -0
- package/dist/src/is-empty.js +13 -0
- package/dist/src/is-empty.js.map +1 -0
- package/dist/src/is-object.d.ts +2 -0
- package/dist/src/is-object.js +7 -0
- package/dist/src/is-object.js.map +1 -0
- package/dist/src/isset.d.ts +1 -0
- package/dist/src/isset.js +12 -0
- package/dist/src/isset.js.map +1 -0
- package/dist/src/logger-utils.d.ts +76 -0
- package/dist/src/logger-utils.js +484 -0
- package/dist/src/logger-utils.js.map +1 -0
- package/dist/src/loop-utils.d.ts +40 -0
- package/dist/src/loop-utils.js +182 -0
- package/dist/src/loop-utils.js.map +1 -0
- package/dist/src/math-utils.d.ts +23 -0
- package/dist/src/math-utils.js +59 -0
- package/dist/src/math-utils.js.map +1 -0
- package/dist/src/mongo-utils.d.ts +11 -0
- package/dist/src/mongo-utils.js +63 -0
- package/dist/src/mongo-utils.js.map +1 -0
- package/dist/src/object-utils.d.ts +96 -0
- package/dist/src/object-utils.js +409 -0
- package/dist/src/object-utils.js.map +1 -0
- package/dist/src/private/config.d.ts +44 -0
- package/dist/src/private/config.js +66 -0
- package/dist/src/private/config.js.map +1 -0
- package/dist/src/private/error-handler.d.ts +10 -0
- package/dist/src/private/error-handler.js +46 -0
- package/dist/src/private/error-handler.js.map +1 -0
- package/dist/src/private/types.d.ts +5 -0
- package/dist/src/private/types.js +3 -0
- package/dist/src/private/types.js.map +1 -0
- package/dist/src/regexp-utils.d.ts +12 -0
- package/dist/src/regexp-utils.js +45 -0
- package/dist/src/regexp-utils.js.map +1 -0
- package/dist/src/remove-circular-json-stringify.d.ts +1 -0
- package/dist/src/remove-circular-json-stringify.js +21 -0
- package/dist/src/remove-circular-json-stringify.js.map +1 -0
- package/dist/src/string-utils.d.ts +77 -0
- package/dist/src/string-utils.js +267 -0
- package/dist/src/string-utils.js.map +1 -0
- package/dist/src/tests-utils.d.ts +21 -0
- package/dist/src/tests-utils.js +80 -0
- package/dist/src/tests-utils.js.map +1 -0
- package/dist/src/timer-utils.d.ts +16 -0
- package/dist/src/timer-utils.js +146 -0
- package/dist/src/timer-utils.js.map +1 -0
- package/dist/src/transaction-utils.d.ts +14 -0
- package/dist/src/transaction-utils.js +157 -0
- package/dist/src/transaction-utils.js.map +1 -0
- package/dist/src/types.d.ts +5 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/validation-utils.d.ts +80 -0
- package/dist/src/validation-utils.js +249 -0
- package/dist/src/validation-utils.js.map +1 -0
- package/dist/src/wtf-utils.d.ts +7 -0
- package/dist/src/wtf-utils.js +88 -0
- package/dist/src/wtf-utils.js.map +1 -0
- package/index.ts +1 -1
- package/package.json +1 -1
- package/src/clean-stack-trace.ts +40 -0
- package/src/config.ts +1 -1
- package/src/date-utils.ts +5 -5
- package/src/error-utils.ts +86 -44
- package/src/logger-utils.ts +2 -2
- package/src/loop-utils.ts +1 -1
- package/src/object-utils.ts +6 -6
- package/src/string-utils.ts +1 -1
- package/src/tests-utils.ts +2 -2
- package/src/timer-utils.ts +2 -2
- package/src/{private/types.ts → types.ts} +0 -0
- package/src/validation-utils.ts +8 -8
- package/src/private/error-handler.ts +0 -21
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allMatches = exports.firstMatch = exports.escapeRegexp = void 0;
|
|
4
|
+
//----------------------------------------
|
|
5
|
+
// REGEXP UTILS
|
|
6
|
+
//----------------------------------------
|
|
7
|
+
var logger_utils_1 = require("./logger-utils");
|
|
8
|
+
function escapeRegexp(str, config) {
|
|
9
|
+
if (config === void 0) { config = {}; }
|
|
10
|
+
var _a = config.parseStarChar, parseStarChar = _a === void 0 ? false : _a;
|
|
11
|
+
if (parseStarChar)
|
|
12
|
+
return str.replace(/[-[\]{}()+?.,\\^$|#\s]/g, '\\$&').replace(/\*/g, '.*');
|
|
13
|
+
else
|
|
14
|
+
return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
15
|
+
}
|
|
16
|
+
exports.escapeRegexp = escapeRegexp;
|
|
17
|
+
/** Get first match of the first capturing group of regexp
|
|
18
|
+
* Eg: const basePath = firstMatch(apiFile, /basePath = '(.*?)'/); will get what is inside quotes
|
|
19
|
+
*/
|
|
20
|
+
function firstMatch(str, regExp) { return (str.match(regExp) || [])[1]; }
|
|
21
|
+
exports.firstMatch = firstMatch;
|
|
22
|
+
/** Get all matches from regexp with g flag
|
|
23
|
+
* Eg: [ [full, match1, m2], [f, m1, m2]... ]
|
|
24
|
+
* NOTE: the G flag will be appended to regexp
|
|
25
|
+
*/
|
|
26
|
+
function allMatches(str, reg) {
|
|
27
|
+
var i = 0;
|
|
28
|
+
var matches;
|
|
29
|
+
var arr = [];
|
|
30
|
+
if (typeof str !== 'string')
|
|
31
|
+
logger_utils_1.C.error('Not a string provided as first argument for allMatches()');
|
|
32
|
+
else {
|
|
33
|
+
reg = new RegExp(reg, 'g');
|
|
34
|
+
while ((matches = reg.exec(str))) {
|
|
35
|
+
arr.push(matches);
|
|
36
|
+
if (i++ > 99) {
|
|
37
|
+
logger_utils_1.C.error('error', 'Please provide the G flag in regexp for allMatches');
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return arr;
|
|
43
|
+
}
|
|
44
|
+
exports.allMatches = allMatches;
|
|
45
|
+
//# sourceMappingURL=regexp-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regexp-utils.js","sourceRoot":"","sources":["../../src/regexp-utils.ts"],"names":[],"mappings":";;;AAAA,0CAA0C;AAC1C,eAAe;AACf,0CAA0C;AAC1C,+CAAkC;AAElC,SAAgB,YAAY,CAAC,GAAW,EAAE,MAAwC;IAAxC,uBAAA,EAAA,WAAwC;IACtE,IAAA,KAA0B,MAAM,cAAX,EAArB,aAAa,mBAAG,KAAK,KAAA,CAAW;IACxC,IAAI,aAAa;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;;QACxF,OAAO,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAC/D,CAAC;AAJD,oCAIC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,MAAc,IAAwB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;AAAnH,gCAAmH;AAEnH;;;GAGG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,GAAW;IAC/C,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,OAAO,CAAA;IACX,IAAM,GAAG,GAAG,EAAE,CAAA;IACd,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,gBAAC,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAA;SAC3F;QACD,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1B,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACjB,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE;gBACV,gBAAC,CAAC,KAAK,CAAC,OAAO,EAAE,oDAAoD,CAAC,CAAA;gBACtE,MAAK;aACR;SACJ;KACJ;IACD,OAAO,GAAG,CAAA;AACd,CAAC;AAhBD,gCAgBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function removeCircularJSONstringify(object: any, indent?: number): string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeCircularJSONstringify = void 0;
|
|
4
|
+
function removeCircularJSONstringify(object, indent) {
|
|
5
|
+
if (indent === void 0) { indent = 2; }
|
|
6
|
+
var getCircularReplacer = function () {
|
|
7
|
+
var seen = new WeakSet();
|
|
8
|
+
return function (key, value) {
|
|
9
|
+
if (typeof value === 'object' && value !== null) {
|
|
10
|
+
if (seen.has(value)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
seen.add(value);
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
return JSON.stringify(object, getCircularReplacer(), indent);
|
|
19
|
+
}
|
|
20
|
+
exports.removeCircularJSONstringify = removeCircularJSONstringify;
|
|
21
|
+
//# sourceMappingURL=remove-circular-json-stringify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-circular-json-stringify.js","sourceRoot":"","sources":["../../src/remove-circular-json-stringify.ts"],"names":[],"mappings":";;;AACA,SAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAU;IAAV,uBAAA,EAAA,UAAU;IAC1D,IAAM,mBAAmB,GAAG;QACxB,IAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAA;QAC1B,OAAO,UAAC,GAAG,EAAE,KAAK;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBACjB,OAAM;iBACT;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;aAClB;YACD,OAAO,KAAK,CAAA;QAChB,CAAC,CAAA;IACL,CAAC,CAAA;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,CAAA;AAChE,CAAC;AAfD,kEAeC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ObjectGeneric } from "./types";
|
|
2
|
+
/**Eg: camelCase */
|
|
3
|
+
export declare function camelCase(...wordBits: any[]): string;
|
|
4
|
+
/**Eg: snake_case
|
|
5
|
+
* trimmed but not lowerCased
|
|
6
|
+
*/
|
|
7
|
+
export declare function snakeCase(...wordBits: any[]): string;
|
|
8
|
+
/**Eg: kebab-case
|
|
9
|
+
* trimmed AND lowerCased
|
|
10
|
+
* undefined, null... => ''
|
|
11
|
+
*/
|
|
12
|
+
export declare function kebabCase(...wordBits: any[]): string;
|
|
13
|
+
/**Eg: PascalCase undefined, null... => '' */
|
|
14
|
+
export declare function pascalCase(...wordBits: any[]): string;
|
|
15
|
+
/**Eg: Titlecase undefined, null... => '' */
|
|
16
|
+
export declare function titleCase(...wordBits: any[]): string;
|
|
17
|
+
/**Eg: UPPERCASE undefined, null... => '' */
|
|
18
|
+
export declare function upperCase(...wordBits: any[]): string;
|
|
19
|
+
/**Eg: lowercase undefined, null... => '' */
|
|
20
|
+
export declare function lowerCase(...wordBits: any[]): string;
|
|
21
|
+
export declare function capitalize1st(str?: string): string;
|
|
22
|
+
export declare function camelCaseToWords(str: any): any;
|
|
23
|
+
/** GIVEN A STRING '{ blah;2}, ['nested,(what,ever)']' AND A SEPARATOR ",""
|
|
24
|
+
* This will return the content separated by first level of separators
|
|
25
|
+
* @return ["{ blah;2}", "['nested,(what,ever)']"]
|
|
26
|
+
*/
|
|
27
|
+
export declare function getValuesBetweenSeparator(str: string, separator: string, removeTrailingSpaces?: boolean): any;
|
|
28
|
+
/** GIVEN A STRING "a: [ 'str', /[^]]/, '[aa]]]str', () => [ nestedArray ] ], b: ['arr']"
|
|
29
|
+
* @return matching: [ "'str', /[^]]/, '[aa]]]str', () => [ nestedArray ]", "'arr'" ], between: [ "a:", ", b: " ]
|
|
30
|
+
* @param str base string
|
|
31
|
+
* @param openingOrSeparator opening character OR separator if closing not set
|
|
32
|
+
* @param closing
|
|
33
|
+
* @param ignoreBetweenOpen default ['\'', '`', '"', '/'], when reaching an opening char, it will ignore all until it find the corresponding closing char
|
|
34
|
+
* @param ignoreBetweenClose default ['\'', '`', '"', '/'] list of corresponding closing chars
|
|
35
|
+
*/
|
|
36
|
+
export declare function getValuesBetweenStrings(str: string, openingOrSeparator: any, closing: any, ignoreBetweenOpen?: string[], ignoreBetweenClose?: string[], removeTrailingSpaces?: boolean): {
|
|
37
|
+
inner: any;
|
|
38
|
+
outer: any;
|
|
39
|
+
};
|
|
40
|
+
/** Remove accentued character from string and eventually special chars and numbers
|
|
41
|
+
* @param {String} str input string
|
|
42
|
+
* @param {Object} config { removeSpecialChars: false, removeNumbers: false, removeSpaces: false }
|
|
43
|
+
* @returns String with all accentued char replaced by their non accentued version + config formattting
|
|
44
|
+
*/
|
|
45
|
+
export declare function convertAccentedCharacters(str: any, config?: {
|
|
46
|
+
removeNumbers?: boolean;
|
|
47
|
+
removeSpecialChars?: boolean;
|
|
48
|
+
removeSpaces?: boolean;
|
|
49
|
+
}): any;
|
|
50
|
+
/** minLength 8 if unique
|
|
51
|
+
* @param {Number} length default: 20
|
|
52
|
+
* @param {Boolean} unique default: true. Generate a real unique token base on the date. min length will be min 8 in this case
|
|
53
|
+
* @param {string} mode one of ['alphanumeric', 'hexadecimal']
|
|
54
|
+
* NOTE: to generate a mongoDB Random Id, use the params: 24, true, 'hexadecimal'
|
|
55
|
+
*/
|
|
56
|
+
export declare function generateToken(length?: number, unique?: boolean, mode?: 'alphanumeric' | 'hexadecimal'): any;
|
|
57
|
+
export declare function generateObjectId(): any;
|
|
58
|
+
/** Useful to join differents bits of url with normalizing slashes
|
|
59
|
+
* * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2/
|
|
60
|
+
* * urlPathJoin('http:/', 'kikou.lol') => https://www.kikou.lol
|
|
61
|
+
*/
|
|
62
|
+
export declare function urlPathJoin(...bits: string[]): string;
|
|
63
|
+
export declare type MiniTemplaterOptions = {
|
|
64
|
+
valueWhenNotSet?: string;
|
|
65
|
+
regexp?: RegExp;
|
|
66
|
+
valueWhenContentUndefined?: string;
|
|
67
|
+
};
|
|
68
|
+
/** Replace variables in a string like: `Hello {{userName}}!`
|
|
69
|
+
* @param {String} content
|
|
70
|
+
* @param {Object} varz object with key => value === toReplace => replacer
|
|
71
|
+
* @param {Object} options
|
|
72
|
+
* * valueWhenNotSet => replacer for undefined values. Default: ''
|
|
73
|
+
* * regexp => must be 'g' and first capturing group matching the value to replace. Default: /{{\s*([^}]*)\s*}}/g
|
|
74
|
+
*/
|
|
75
|
+
export declare function miniTemplater(content: string, varz: ObjectGeneric, options?: MiniTemplaterOptions): string;
|
|
76
|
+
/** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
|
|
77
|
+
export declare function cln(val: any, replacerInCaseItIsUndefinNaN?: string): any;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.cln = exports.miniTemplater = exports.urlPathJoin = exports.generateObjectId = exports.generateToken = exports.convertAccentedCharacters = exports.getValuesBetweenStrings = exports.getValuesBetweenSeparator = exports.camelCaseToWords = exports.capitalize1st = exports.lowerCase = exports.upperCase = exports.titleCase = exports.pascalCase = exports.kebabCase = exports.snakeCase = exports.camelCase = void 0;
|
|
15
|
+
//----------------------------------------
|
|
16
|
+
// STRING UTILS
|
|
17
|
+
//----------------------------------------
|
|
18
|
+
var error_utils_1 = require("./error-utils");
|
|
19
|
+
var isset_1 = require("./isset");
|
|
20
|
+
/**Eg: camelCase */
|
|
21
|
+
function camelCase() {
|
|
22
|
+
var wordBits = [];
|
|
23
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
24
|
+
wordBits[_i] = arguments[_i];
|
|
25
|
+
}
|
|
26
|
+
return wordBits.filter(function (e) { return e; }).map(function (w, i) { return i === 0 ? w : capitalize1st(w); }).join('');
|
|
27
|
+
}
|
|
28
|
+
exports.camelCase = camelCase;
|
|
29
|
+
/**Eg: snake_case
|
|
30
|
+
* trimmed but not lowerCased
|
|
31
|
+
*/
|
|
32
|
+
function snakeCase() {
|
|
33
|
+
var wordBits = [];
|
|
34
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
35
|
+
wordBits[_i] = arguments[_i];
|
|
36
|
+
}
|
|
37
|
+
return wordBits.filter(function (e) { return e; }).map(function (w) { return w.trim(); }).join('_');
|
|
38
|
+
}
|
|
39
|
+
exports.snakeCase = snakeCase;
|
|
40
|
+
/**Eg: kebab-case
|
|
41
|
+
* trimmed AND lowerCased
|
|
42
|
+
* undefined, null... => ''
|
|
43
|
+
*/
|
|
44
|
+
function kebabCase() {
|
|
45
|
+
var wordBits = [];
|
|
46
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
47
|
+
wordBits[_i] = arguments[_i];
|
|
48
|
+
}
|
|
49
|
+
return wordBits.filter(function (e) { return e; }).map(function (w) { return w.trim().toLowerCase(); }).join('-');
|
|
50
|
+
}
|
|
51
|
+
exports.kebabCase = kebabCase;
|
|
52
|
+
/**Eg: PascalCase undefined, null... => '' */
|
|
53
|
+
function pascalCase() {
|
|
54
|
+
var wordBits = [];
|
|
55
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
56
|
+
wordBits[_i] = arguments[_i];
|
|
57
|
+
}
|
|
58
|
+
return wordBits.filter(function (e) { return e; }).map(function (w, i) { return capitalize1st(w); }).join('');
|
|
59
|
+
}
|
|
60
|
+
exports.pascalCase = pascalCase;
|
|
61
|
+
/**Eg: Titlecase undefined, null... => '' */
|
|
62
|
+
function titleCase() {
|
|
63
|
+
var wordBits = [];
|
|
64
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
65
|
+
wordBits[_i] = arguments[_i];
|
|
66
|
+
}
|
|
67
|
+
return capitalize1st(wordBits.filter(function (e) { return e; }).map(function (w) { return w.trim(); }).join(''));
|
|
68
|
+
}
|
|
69
|
+
exports.titleCase = titleCase;
|
|
70
|
+
/**Eg: UPPERCASE undefined, null... => '' */
|
|
71
|
+
function upperCase() {
|
|
72
|
+
var wordBits = [];
|
|
73
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
74
|
+
wordBits[_i] = arguments[_i];
|
|
75
|
+
}
|
|
76
|
+
return wordBits.filter(function (e) { return e; }).map(function (w) { return w.trim().toUpperCase(); }).join('');
|
|
77
|
+
}
|
|
78
|
+
exports.upperCase = upperCase;
|
|
79
|
+
/**Eg: lowercase undefined, null... => '' */
|
|
80
|
+
function lowerCase() {
|
|
81
|
+
var wordBits = [];
|
|
82
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
83
|
+
wordBits[_i] = arguments[_i];
|
|
84
|
+
}
|
|
85
|
+
return wordBits.filter(function (e) { return e; }).map(function (w) { return w.trim().toLowerCase(); }).join('');
|
|
86
|
+
}
|
|
87
|
+
exports.lowerCase = lowerCase;
|
|
88
|
+
function capitalize1st(str) {
|
|
89
|
+
if (str === void 0) { str = ''; }
|
|
90
|
+
return str[0].toUpperCase() + str.slice(1);
|
|
91
|
+
}
|
|
92
|
+
exports.capitalize1st = capitalize1st;
|
|
93
|
+
function camelCaseToWords(str) {
|
|
94
|
+
return str ? str.trim().replace(/([A-Z])/g, '-$1').toLowerCase().split('-') : [];
|
|
95
|
+
}
|
|
96
|
+
exports.camelCaseToWords = camelCaseToWords;
|
|
97
|
+
/** GIVEN A STRING '{ blah;2}, ['nested,(what,ever)']' AND A SEPARATOR ",""
|
|
98
|
+
* This will return the content separated by first level of separators
|
|
99
|
+
* @return ["{ blah;2}", "['nested,(what,ever)']"]
|
|
100
|
+
*/
|
|
101
|
+
function getValuesBetweenSeparator(str, separator, removeTrailingSpaces) {
|
|
102
|
+
if (removeTrailingSpaces === void 0) { removeTrailingSpaces = true; }
|
|
103
|
+
(0, error_utils_1.err500IfEmptyOrNotSet)({ separator: separator, str: str });
|
|
104
|
+
var outer = getValuesBetweenStrings(str, separator, undefined, undefined, undefined, removeTrailingSpaces).outer;
|
|
105
|
+
return outer;
|
|
106
|
+
}
|
|
107
|
+
exports.getValuesBetweenSeparator = getValuesBetweenSeparator;
|
|
108
|
+
/** GIVEN A STRING "a: [ 'str', /[^]]/, '[aa]]]str', () => [ nestedArray ] ], b: ['arr']"
|
|
109
|
+
* @return matching: [ "'str', /[^]]/, '[aa]]]str', () => [ nestedArray ]", "'arr'" ], between: [ "a:", ", b: " ]
|
|
110
|
+
* @param str base string
|
|
111
|
+
* @param openingOrSeparator opening character OR separator if closing not set
|
|
112
|
+
* @param closing
|
|
113
|
+
* @param ignoreBetweenOpen default ['\'', '`', '"', '/'], when reaching an opening char, it will ignore all until it find the corresponding closing char
|
|
114
|
+
* @param ignoreBetweenClose default ['\'', '`', '"', '/'] list of corresponding closing chars
|
|
115
|
+
*/
|
|
116
|
+
function getValuesBetweenStrings(str, openingOrSeparator, closing, ignoreBetweenOpen, ignoreBetweenClose, removeTrailingSpaces) {
|
|
117
|
+
if (ignoreBetweenOpen === void 0) { ignoreBetweenOpen = ['\'', '`', '"', '/']; }
|
|
118
|
+
if (ignoreBetweenClose === void 0) { ignoreBetweenClose = ['\'', '`', '"', '/']; }
|
|
119
|
+
if (removeTrailingSpaces === void 0) { removeTrailingSpaces = true; }
|
|
120
|
+
(0, error_utils_1.err500IfEmptyOrNotSet)({ openingOrSeparator: openingOrSeparator, str: str });
|
|
121
|
+
str = str.replace(/<</g, '§§"').replace(/>>/g, '"§§');
|
|
122
|
+
var arrayValues = [];
|
|
123
|
+
var betweenArray = [];
|
|
124
|
+
var level = 0;
|
|
125
|
+
var ignoreUntil = false;
|
|
126
|
+
var actualValue = '';
|
|
127
|
+
var precedingChar = '';
|
|
128
|
+
var separatorMode = false;
|
|
129
|
+
if (!closing)
|
|
130
|
+
separatorMode = true;
|
|
131
|
+
var separator = separatorMode ? openingOrSeparator : false;
|
|
132
|
+
var openingChars = separatorMode ? ['(', '{', '['] : [openingOrSeparator];
|
|
133
|
+
var closingChars = separatorMode ? [')', '}', ']'] : [closing];
|
|
134
|
+
var pushActualValue = function () {
|
|
135
|
+
if (level === 0)
|
|
136
|
+
betweenArray.push(removeTrailingSpaces ? actualValue.replace(/(?:^\s+|\s+$)/g, '') : actualValue);
|
|
137
|
+
else
|
|
138
|
+
arrayValues.push(removeTrailingSpaces ? actualValue.replace(/(?:^\s+|\s+$)/g, '') : actualValue);
|
|
139
|
+
actualValue = '';
|
|
140
|
+
};
|
|
141
|
+
str.split('').forEach(function (char) {
|
|
142
|
+
// handle unwanted nested structure like characters in a strings that may be a unmatched closing / opening character
|
|
143
|
+
// Eg: {'azer}aze'}
|
|
144
|
+
if (ignoreUntil && char === ignoreUntil && precedingChar !== '\\')
|
|
145
|
+
ignoreUntil = false;
|
|
146
|
+
else if (ignoreUntil && char !== ignoreUntil)
|
|
147
|
+
true;
|
|
148
|
+
else if (ignoreBetweenOpen.includes(char)) {
|
|
149
|
+
var indexChar = ignoreBetweenOpen.findIndex(function (char2) { return char2 === char; });
|
|
150
|
+
ignoreUntil = ignoreBetweenClose[indexChar];
|
|
151
|
+
}
|
|
152
|
+
else if (openingChars.includes(char)) {
|
|
153
|
+
// handle nested structures
|
|
154
|
+
if (!separatorMode && level === 0)
|
|
155
|
+
pushActualValue();
|
|
156
|
+
level++;
|
|
157
|
+
if (!separatorMode)
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
else if (closingChars.includes(char)) {
|
|
161
|
+
// handle nested structures
|
|
162
|
+
if (!separatorMode && level === 1)
|
|
163
|
+
pushActualValue();
|
|
164
|
+
level--;
|
|
165
|
+
}
|
|
166
|
+
else if (separatorMode && level === 0 && char === separator) {
|
|
167
|
+
// SEPARATOR MODE
|
|
168
|
+
pushActualValue();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
actualValue += char;
|
|
172
|
+
precedingChar = char;
|
|
173
|
+
});
|
|
174
|
+
pushActualValue();
|
|
175
|
+
var replaceValz = function (arr) { return arr.map(function (v) { return v.replace(/§§"/g, '<<').replace(/"§§/g, '>>'); }).filter(function (v) { return v; }); };
|
|
176
|
+
return { inner: replaceValz(arrayValues), outer: replaceValz(betweenArray) };
|
|
177
|
+
}
|
|
178
|
+
exports.getValuesBetweenStrings = getValuesBetweenStrings;
|
|
179
|
+
/** Remove accentued character from string and eventually special chars and numbers
|
|
180
|
+
* @param {String} str input string
|
|
181
|
+
* @param {Object} config { removeSpecialChars: false, removeNumbers: false, removeSpaces: false }
|
|
182
|
+
* @returns String with all accentued char replaced by their non accentued version + config formattting
|
|
183
|
+
*/
|
|
184
|
+
function convertAccentedCharacters(str, config) {
|
|
185
|
+
if (config === void 0) { config = {}; }
|
|
186
|
+
var output = str
|
|
187
|
+
.replace(/[àáâãäå]/g, 'a')
|
|
188
|
+
.replace(/ç/g, 'c')
|
|
189
|
+
.replace(/[èéêë]/g, 'e')
|
|
190
|
+
.replace(/[ìíîï]/g, 'i')
|
|
191
|
+
.replace(/[ôö]/g, 'o')
|
|
192
|
+
.replace(/[ùúû]/g, 'u')
|
|
193
|
+
.replace(/(^\s*|\s*$)/g, '');
|
|
194
|
+
if (config.removeNumbers === true)
|
|
195
|
+
output = output.replace(/\d+/g, '');
|
|
196
|
+
if (config.removeSpecialChars === true)
|
|
197
|
+
output = output.replace(/[^A-Za-z0-9 ]/g, '');
|
|
198
|
+
if (config.removeSpaces === true)
|
|
199
|
+
output = output.replace(/\s+/g, '');
|
|
200
|
+
return output;
|
|
201
|
+
}
|
|
202
|
+
exports.convertAccentedCharacters = convertAccentedCharacters;
|
|
203
|
+
var generatedTokens = []; // cache to avoid collision
|
|
204
|
+
var lastTs = new Date().getTime();
|
|
205
|
+
/** minLength 8 if unique
|
|
206
|
+
* @param {Number} length default: 20
|
|
207
|
+
* @param {Boolean} unique default: true. Generate a real unique token base on the date. min length will be min 8 in this case
|
|
208
|
+
* @param {string} mode one of ['alphanumeric', 'hexadecimal']
|
|
209
|
+
* NOTE: to generate a mongoDB Random Id, use the params: 24, true, 'hexadecimal'
|
|
210
|
+
*/
|
|
211
|
+
function generateToken(length, unique, mode) {
|
|
212
|
+
if (length === void 0) { length = 20; }
|
|
213
|
+
if (unique === void 0) { unique = true; }
|
|
214
|
+
if (mode === void 0) { mode = 'alphanumeric'; }
|
|
215
|
+
var charConvNumeric = mode === 'alphanumeric' ? 36 : 16;
|
|
216
|
+
if (unique && length < 8)
|
|
217
|
+
length = 8;
|
|
218
|
+
var token;
|
|
219
|
+
var tokenTs;
|
|
220
|
+
do {
|
|
221
|
+
tokenTs = (new Date()).getTime();
|
|
222
|
+
token = unique ? tokenTs.toString(charConvNumeric) : '';
|
|
223
|
+
while (token.length < length)
|
|
224
|
+
token += Math.random().toString(charConvNumeric).substr(2, 1); // char alphaNumeric aléatoire
|
|
225
|
+
} while (generatedTokens.includes(token));
|
|
226
|
+
if (lastTs < tokenTs)
|
|
227
|
+
generatedTokens = []; // reset generated token on new timestamp because cannot collide
|
|
228
|
+
generatedTokens.push(token);
|
|
229
|
+
return token;
|
|
230
|
+
}
|
|
231
|
+
exports.generateToken = generateToken;
|
|
232
|
+
function generateObjectId() {
|
|
233
|
+
return generateToken(24, true, 'hexadecimal');
|
|
234
|
+
}
|
|
235
|
+
exports.generateObjectId = generateObjectId;
|
|
236
|
+
/** Useful to join differents bits of url with normalizing slashes
|
|
237
|
+
* * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2/
|
|
238
|
+
* * urlPathJoin('http:/', 'kikou.lol') => https://www.kikou.lol
|
|
239
|
+
*/
|
|
240
|
+
function urlPathJoin() {
|
|
241
|
+
var bits = [];
|
|
242
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
243
|
+
bits[_i] = arguments[_i];
|
|
244
|
+
}
|
|
245
|
+
return bits.join('/').replace(/\/+/g, '/').replace(/(https?:)\/\/?/, '$1//');
|
|
246
|
+
}
|
|
247
|
+
exports.urlPathJoin = urlPathJoin;
|
|
248
|
+
/** Replace variables in a string like: `Hello {{userName}}!`
|
|
249
|
+
* @param {String} content
|
|
250
|
+
* @param {Object} varz object with key => value === toReplace => replacer
|
|
251
|
+
* @param {Object} options
|
|
252
|
+
* * valueWhenNotSet => replacer for undefined values. Default: ''
|
|
253
|
+
* * regexp => must be 'g' and first capturing group matching the value to replace. Default: /{{\s*([^}]*)\s*}}/g
|
|
254
|
+
*/
|
|
255
|
+
function miniTemplater(content, varz, options) {
|
|
256
|
+
if (options === void 0) { options = {}; }
|
|
257
|
+
options = __assign({ valueWhenNotSet: '', regexp: /{{\s*([^}]*)\s*}}/g, valueWhenContentUndefined: '' }, options);
|
|
258
|
+
return (0, isset_1.isset)(content) ? content.replace(options.regexp, function (m, $1) { return (0, isset_1.isset)(varz[$1]) ? varz[$1] : options.valueWhenNotSet; }) : options.valueWhenContentUndefined;
|
|
259
|
+
}
|
|
260
|
+
exports.miniTemplater = miniTemplater;
|
|
261
|
+
/** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
|
|
262
|
+
function cln(val, replacerInCaseItIsUndefinNaN) {
|
|
263
|
+
if (replacerInCaseItIsUndefinNaN === void 0) { replacerInCaseItIsUndefinNaN = '-'; }
|
|
264
|
+
return ['undefined', undefined, 'indéfini', 'NaN', NaN, Infinity, null].includes(val) ? replacerInCaseItIsUndefinNaN : val;
|
|
265
|
+
}
|
|
266
|
+
exports.cln = cln;
|
|
267
|
+
//# sourceMappingURL=string-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/string-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ValidatorObject } from "./validation-utils";
|
|
2
|
+
import { Override } from "./types";
|
|
3
|
+
export declare const restTestMini: {
|
|
4
|
+
throwOnErr: boolean;
|
|
5
|
+
reset(throwOnErr?: boolean): void;
|
|
6
|
+
newErr(err: any): void;
|
|
7
|
+
printStats(): void;
|
|
8
|
+
nbSuccess: number;
|
|
9
|
+
nbError: number;
|
|
10
|
+
lastErrors: any[];
|
|
11
|
+
};
|
|
12
|
+
/** if validatorObject param is not set then it will consider checking that the value is set
|
|
13
|
+
*
|
|
14
|
+
* @param description
|
|
15
|
+
* @param value
|
|
16
|
+
* @param validatorObject
|
|
17
|
+
*/
|
|
18
|
+
export declare function assert(description: string, value: any, validatorObject?: Override<ValidatorObject, {
|
|
19
|
+
value?: never;
|
|
20
|
+
name?: never;
|
|
21
|
+
}> | number | boolean | string): void;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assert = exports.restTestMini = void 0;
|
|
4
|
+
//----------------------------------------
|
|
5
|
+
// TESTS UTILS
|
|
6
|
+
//----------------------------------------
|
|
7
|
+
var logger_utils_1 = require("./logger-utils");
|
|
8
|
+
var isset_1 = require("./isset");
|
|
9
|
+
var validation_utils_1 = require("./validation-utils");
|
|
10
|
+
var is_object_1 = require("./is-object");
|
|
11
|
+
exports.restTestMini = {
|
|
12
|
+
throwOnErr: false,
|
|
13
|
+
reset: function (throwOnErr) {
|
|
14
|
+
if (throwOnErr === void 0) { throwOnErr = false; }
|
|
15
|
+
exports.restTestMini.nbSuccess = 0;
|
|
16
|
+
exports.restTestMini.nbError = 0;
|
|
17
|
+
exports.restTestMini.lastErrors = [];
|
|
18
|
+
exports.restTestMini.throwOnErr = throwOnErr;
|
|
19
|
+
},
|
|
20
|
+
newErr: function (err) {
|
|
21
|
+
exports.restTestMini.nbError++;
|
|
22
|
+
exports.restTestMini.lastErrors.push(err);
|
|
23
|
+
if (exports.restTestMini.throwOnErr)
|
|
24
|
+
throw new Error(err);
|
|
25
|
+
else
|
|
26
|
+
logger_utils_1.C.error(false, err);
|
|
27
|
+
},
|
|
28
|
+
printStats: function () {
|
|
29
|
+
// TODO print last errz
|
|
30
|
+
logger_utils_1.C.info("ERRORS RESUME =========");
|
|
31
|
+
if (exports.restTestMini.lastErrors.length)
|
|
32
|
+
logger_utils_1.C.log('\n\n\n');
|
|
33
|
+
for (var _i = 0, _a = exports.restTestMini.lastErrors; _i < _a.length; _i++) {
|
|
34
|
+
var lastErr = _a[_i];
|
|
35
|
+
logger_utils_1.C.error(false, lastErr);
|
|
36
|
+
}
|
|
37
|
+
logger_utils_1.C.log('\n\n\n');
|
|
38
|
+
logger_utils_1.C.info("STATS =========");
|
|
39
|
+
logger_utils_1.C.info("Total: ".concat(exports.restTestMini.nbSuccess + exports.restTestMini.nbError));
|
|
40
|
+
logger_utils_1.C.success("Success: ".concat(exports.restTestMini.nbSuccess));
|
|
41
|
+
logger_utils_1.C.error(false, " Errors: ".concat(exports.restTestMini.nbError));
|
|
42
|
+
},
|
|
43
|
+
nbSuccess: 0,
|
|
44
|
+
nbError: 0,
|
|
45
|
+
lastErrors: []
|
|
46
|
+
};
|
|
47
|
+
/** if validatorObject param is not set then it will consider checking that the value is set
|
|
48
|
+
*
|
|
49
|
+
* @param description
|
|
50
|
+
* @param value
|
|
51
|
+
* @param validatorObject
|
|
52
|
+
*/
|
|
53
|
+
function assert(description, value, validatorObject) {
|
|
54
|
+
try {
|
|
55
|
+
var validatorObjReal = {
|
|
56
|
+
value: value,
|
|
57
|
+
name: description,
|
|
58
|
+
};
|
|
59
|
+
if ((0, is_object_1.isObject)(validatorObject))
|
|
60
|
+
Object.assign(validatorObjReal, validatorObject);
|
|
61
|
+
else if ((0, isset_1.isset)(validatorObject))
|
|
62
|
+
validatorObjReal.eq = validatorObject;
|
|
63
|
+
var issetCheck = !(0, isset_1.isset)(validatorObjReal); // isEmpty()
|
|
64
|
+
var _a = (0, validation_utils_1.validatorReturnErrArray)(validatorObjReal), errMsg = _a[0], extraInfos = _a[1];
|
|
65
|
+
var msg2 = description + " ".concat(issetCheck ? 'isset' : "".concat(JSON.stringify(validatorObject)));
|
|
66
|
+
if ((0, isset_1.isset)(errMsg)) {
|
|
67
|
+
var err = msg2 + "\n ".concat(errMsg, "\n ").concat(JSON.stringify(extraInfos));
|
|
68
|
+
exports.restTestMini.newErr(err);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
exports.restTestMini.nbSuccess++;
|
|
72
|
+
logger_utils_1.C.success(msg2);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
exports.restTestMini.newErr(err);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.assert = assert;
|
|
80
|
+
//# sourceMappingURL=tests-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tests-utils.js","sourceRoot":"","sources":["../../src/tests-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare function timeout(ms: any, fn?: () => void): Promise<void>;
|
|
2
|
+
export declare function runAsync(callback: any, milliseconds$?: number): Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {Function} callback function that shall return ===true asynchronously
|
|
6
|
+
* @param {Number} timeoutSec default:10; general timeout in seconds
|
|
7
|
+
* @param {Boolean|String} errorAfterNSeconds default:true output an error in case of timeout, can be the displayed error message
|
|
8
|
+
* @param {*} cliOutput write a cli progress to show that a process is running
|
|
9
|
+
*/
|
|
10
|
+
export declare function waitUntilTrue(callback: any, timeoutSec?: number, errorAfterNSeconds?: boolean, cliOutput?: boolean): Promise<void>;
|
|
11
|
+
/** Allow to perform an action in a delayed loop, useful for example to avoid reaching limits on servers. This function can be securely called multiple times.
|
|
12
|
+
* @param {Function} callback
|
|
13
|
+
* @param {Number} time default: 500ms;
|
|
14
|
+
* @param {Function} errorCallback default: e => C.error(e)
|
|
15
|
+
*/
|
|
16
|
+
export declare function executeInDelayedLoop(callback: any, time?: number, errorCallback?: (e: any) => any): Promise<void>;
|