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.
Files changed (97) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/index.d.ts +36 -0
  3. package/dist/index.js +58 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/array-utils.d.ts +56 -0
  6. package/dist/src/array-utils.js +160 -0
  7. package/dist/src/array-utils.js.map +1 -0
  8. package/dist/src/clean-stack-trace.d.ts +1 -0
  9. package/dist/src/clean-stack-trace.js +46 -0
  10. package/dist/src/clean-stack-trace.js.map +1 -0
  11. package/dist/src/config.d.ts +44 -0
  12. package/dist/src/config.js +66 -0
  13. package/dist/src/config.js.map +1 -0
  14. package/dist/src/date-utils.d.ts +100 -0
  15. package/dist/src/date-utils.js +407 -0
  16. package/dist/src/date-utils.js.map +1 -0
  17. package/dist/src/env-utils.d.ts +8 -0
  18. package/dist/src/env-utils.js +38 -0
  19. package/dist/src/env-utils.js.map +1 -0
  20. package/dist/src/error-utils.d.ts +29 -0
  21. package/dist/src/error-utils.js +202 -0
  22. package/dist/src/error-utils.js.map +1 -0
  23. package/dist/src/is-empty.d.ts +1 -0
  24. package/dist/src/is-empty.js +13 -0
  25. package/dist/src/is-empty.js.map +1 -0
  26. package/dist/src/is-object.d.ts +2 -0
  27. package/dist/src/is-object.js +7 -0
  28. package/dist/src/is-object.js.map +1 -0
  29. package/dist/src/isset.d.ts +1 -0
  30. package/dist/src/isset.js +12 -0
  31. package/dist/src/isset.js.map +1 -0
  32. package/dist/src/logger-utils.d.ts +76 -0
  33. package/dist/src/logger-utils.js +484 -0
  34. package/dist/src/logger-utils.js.map +1 -0
  35. package/dist/src/loop-utils.d.ts +40 -0
  36. package/dist/src/loop-utils.js +182 -0
  37. package/dist/src/loop-utils.js.map +1 -0
  38. package/dist/src/math-utils.d.ts +23 -0
  39. package/dist/src/math-utils.js +59 -0
  40. package/dist/src/math-utils.js.map +1 -0
  41. package/dist/src/mongo-utils.d.ts +11 -0
  42. package/dist/src/mongo-utils.js +63 -0
  43. package/dist/src/mongo-utils.js.map +1 -0
  44. package/dist/src/object-utils.d.ts +96 -0
  45. package/dist/src/object-utils.js +409 -0
  46. package/dist/src/object-utils.js.map +1 -0
  47. package/dist/src/private/config.d.ts +44 -0
  48. package/dist/src/private/config.js +66 -0
  49. package/dist/src/private/config.js.map +1 -0
  50. package/dist/src/private/error-handler.d.ts +10 -0
  51. package/dist/src/private/error-handler.js +46 -0
  52. package/dist/src/private/error-handler.js.map +1 -0
  53. package/dist/src/private/types.d.ts +5 -0
  54. package/dist/src/private/types.js +3 -0
  55. package/dist/src/private/types.js.map +1 -0
  56. package/dist/src/regexp-utils.d.ts +12 -0
  57. package/dist/src/regexp-utils.js +45 -0
  58. package/dist/src/regexp-utils.js.map +1 -0
  59. package/dist/src/remove-circular-json-stringify.d.ts +1 -0
  60. package/dist/src/remove-circular-json-stringify.js +21 -0
  61. package/dist/src/remove-circular-json-stringify.js.map +1 -0
  62. package/dist/src/string-utils.d.ts +77 -0
  63. package/dist/src/string-utils.js +267 -0
  64. package/dist/src/string-utils.js.map +1 -0
  65. package/dist/src/tests-utils.d.ts +21 -0
  66. package/dist/src/tests-utils.js +80 -0
  67. package/dist/src/tests-utils.js.map +1 -0
  68. package/dist/src/timer-utils.d.ts +16 -0
  69. package/dist/src/timer-utils.js +146 -0
  70. package/dist/src/timer-utils.js.map +1 -0
  71. package/dist/src/transaction-utils.d.ts +14 -0
  72. package/dist/src/transaction-utils.js +157 -0
  73. package/dist/src/transaction-utils.js.map +1 -0
  74. package/dist/src/types.d.ts +5 -0
  75. package/dist/src/types.js +3 -0
  76. package/dist/src/types.js.map +1 -0
  77. package/dist/src/validation-utils.d.ts +80 -0
  78. package/dist/src/validation-utils.js +249 -0
  79. package/dist/src/validation-utils.js.map +1 -0
  80. package/dist/src/wtf-utils.d.ts +7 -0
  81. package/dist/src/wtf-utils.js +88 -0
  82. package/dist/src/wtf-utils.js.map +1 -0
  83. package/index.ts +1 -1
  84. package/package.json +1 -1
  85. package/src/clean-stack-trace.ts +40 -0
  86. package/src/config.ts +1 -1
  87. package/src/date-utils.ts +5 -5
  88. package/src/error-utils.ts +86 -44
  89. package/src/logger-utils.ts +2 -2
  90. package/src/loop-utils.ts +1 -1
  91. package/src/object-utils.ts +6 -6
  92. package/src/string-utils.ts +1 -1
  93. package/src/tests-utils.ts +2 -2
  94. package/src/timer-utils.ts +2 -2
  95. package/src/{private/types.ts → types.ts} +0 -0
  96. package/src/validation-utils.ts +8 -8
  97. 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>;