topkat-utils 1.2.41 → 1.2.43

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/.eslintrc CHANGED
@@ -1,4 +1,5 @@
1
1
  {
2
+ "parser": "@typescript-eslint/parser",
2
3
  "env": {
3
4
  "es6": true,
4
5
  "node": true,
@@ -6,7 +7,8 @@
6
7
  "browser": true
7
8
  },
8
9
  "extends": [
9
- "eslint:recommended"
10
+ "eslint:recommended",
11
+ "plugin:@typescript-eslint/recommended"
10
12
  ],
11
13
  "parserOptions": {
12
14
  "ecmaVersion": 2018,
@@ -42,6 +44,15 @@
42
44
  {
43
45
  "allowSingleLine": true
44
46
  }
45
- ]
47
+ ],
48
+ "@typescript-eslint/indent": [
49
+ "warn",
50
+ 4
51
+ ],
52
+ "@typescript-eslint/no-explicit-any": 0,
53
+ "@typescript-eslint/no-unused-vars": 1,
54
+ "@typescript-eslint/no-empty-function": 1,
55
+ "@typescript-eslint/triple-slash-reference": 0,
56
+ "@typescript-eslint/ban-types": 0
46
57
  }
47
58
  }
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### v1.2.43
2
+ * FIX recursiveGenericFunctionSync returning bad address (starting with a point)
3
+
4
+ ### v1.2.42
5
+ * add nbOccurenceInString and fix some types
6
+
1
7
  ### v1.2.41
2
8
  * improving types for object helpers
3
9
 
package/README.md CHANGED
@@ -6,10 +6,11 @@ It's strength is that it has a straight functional naming and is fast and lightw
6
6
 
7
7
  ``` javascript
8
8
  const topkatUtils = {
9
- isset, // most useful check undefined or null values but not falsey
9
+ isset, // check undefined or null values but not falsey
10
10
  random, // random number between two values
11
11
  cln, // clean string for print. Eg: undefined, null, NaN => '-'
12
12
  pad, // simple padStart for numbers
13
+ isObject, // check is value is a "straight" object (not null, not date, not an array, not undefined...)
13
14
  /** return the number or the closest number of the range
14
15
  * * nb min max => returns
15
16
  * * 7 5 10 => 7 // in the range
@@ -26,13 +27,14 @@ const topkatUtils = {
26
27
  sortUrlsByDeepnessInArrayOrObject,
27
28
  // like nodeJs path.join() but for urls
28
29
  urlPathJoin,
29
- // miniTemplater(`Hello {{template}}`, {template: 'John'}) => `Hello John`
30
+ // miniTemplater(`Hello {{name}}`, { name: 'John' }) => `Hello John`
30
31
  miniTemplater,
31
- // is number between
32
32
  asArray,
33
33
  compareArrays,
34
+ // is number between
34
35
  isBetween,
35
36
  simpleObjectMaskOrSelect,
37
+ // get the environment variables (Eg. NODE_ENV) with parsed values ("true" => true, "4" => 4). On env variables all values are strings
36
38
  ENV,
37
39
  parseBool,
38
40
 
@@ -98,6 +100,7 @@ const topkatUtils = {
98
100
  upperCase,
99
101
  capitalize1st,
100
102
  camelCaseToWords,
103
+ nbOccurenceInString,
101
104
 
102
105
  firstMatch,
103
106
  allMatches,
@@ -1,7 +1,7 @@
1
1
  /** Parse one dimention object undefined, true, false, null represented as string will be converted to primitives */
2
2
  export declare function parseEnv(env: any): {};
3
- /** READ ONLY, output a parsed version of process.env
4
- * use it like ENV().myVar
3
+ /** READ ONLY, get the environment variables (Eg. NODE_ENV) with parsed values ("true" => true, "4" => 4, "null" => null). On env variables all values are strings
4
+ * use it like ENV().NODE_ENV
5
5
  */
6
6
  export declare function ENV(): {
7
7
  [key: string]: any;
@@ -23,8 +23,8 @@ function parseEnv(env) {
23
23
  return newEnv;
24
24
  }
25
25
  exports.parseEnv = parseEnv;
26
- /** READ ONLY, output a parsed version of process.env
27
- * use it like ENV().myVar
26
+ /** READ ONLY, get the environment variables (Eg. NODE_ENV) with parsed values ("true" => true, "4" => 4, "null" => null). On env variables all values are strings
27
+ * use it like ENV().NODE_ENV
28
28
  */
29
29
  function ENV() {
30
30
  const throwErr = () => { throw new Error('Please use process.env to write to env'); };
@@ -1,4 +1,4 @@
1
- import { ObjectGeneric } from "./types";
1
+ import { ObjectGeneric } from './types';
2
2
  export declare function forI<T extends any[] | any>(nbIterations: number, callback: (number: number, previousValue: any, arrayOfPreviousValues: any[]) => T): T[];
3
3
  export declare function forIasync<T extends any[] | any>(nbIterations: number, callback: (number: any) => T): Promise<T[]>;
4
4
  export type RecursiveCallback = (item: any, addr: string, lastElementKey: string | number, parent: ObjectGeneric | any[]) => false | any;
@@ -40,16 +40,15 @@ async function recursiveGenericFunction(item, callback, config = {}, addr$ = '',
40
40
  if (!techFieldToAvoidCircularDependency.includes(item)) {
41
41
  const result = addr$ === '' ? true : await callback(item, addr$, lastElementKey, parent);
42
42
  if (result !== false) {
43
- const addr = addr$ ? addr$ : '';
44
43
  if (Array.isArray(item)) {
45
44
  if ((config === null || config === void 0 ? void 0 : config.disableCircularDependencyRemoval) !== true)
46
45
  techFieldToAvoidCircularDependency.push(item);
47
- await Promise.all(item.map((e, i) => recursiveGenericFunction(e, callback, config, addr + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)));
46
+ await Promise.all(item.map((e, i) => recursiveGenericFunction(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)));
48
47
  }
49
48
  else if ((0, is_object_1.isObject)(item)) {
50
49
  if ((config === null || config === void 0 ? void 0 : config.disableCircularDependencyRemoval) !== true)
51
50
  techFieldToAvoidCircularDependency.push(item);
52
- await Promise.all(Object.entries(item).map(([key, val]) => recursiveGenericFunction(val, callback, config, addr + '.' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)));
51
+ await Promise.all(Object.entries(item).map(([key, val]) => recursiveGenericFunction(val, callback, config, addr$ ? addr$ + '.' : '' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)));
53
52
  }
54
53
  }
55
54
  }
@@ -77,16 +76,15 @@ function recursiveGenericFunctionSync(item, callback, config = {}, addr$ = '', l
77
76
  if (!techFieldToAvoidCircularDependency.includes(item)) {
78
77
  const result = addr$ === '' ? true : callback(item, addr$, lastElementKey, parent);
79
78
  if (result !== false) {
80
- const addr = addr$ ? addr$ : '';
81
79
  if (Array.isArray(item)) {
82
80
  if ((config === null || config === void 0 ? void 0 : config.disableCircularDependencyRemoval) !== true)
83
81
  techFieldToAvoidCircularDependency.push(item); // do not up one level
84
- item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr + '[' + i + ']', i, item, techFieldToAvoidCircularDependency));
82
+ item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency));
85
83
  }
86
84
  else if ((0, is_object_1.isObject)(item)) {
87
85
  if ((config === null || config === void 0 ? void 0 : config.disableCircularDependencyRemoval) !== true)
88
86
  techFieldToAvoidCircularDependency.push(item);
89
- Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, addr + '.' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency));
87
+ Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, addr$ ? addr$ + '.' : '' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency));
90
88
  }
91
89
  }
92
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loop-utils.js","sourceRoot":"","sources":["../../src/loop-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-utils.js","sourceRoot":"","sources":["../../src/loop-utils.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,23 @@
1
1
  import { ObjectGeneric } from "./types";
2
2
  /**Eg: camelCase */
3
- export declare function camelCase(wordBits: string[]): string;
4
- export declare function camelCase(...wordBits: string[]): string;
3
+ export declare function camelCase(...wordBits: string[] | [string[]]): string;
5
4
  /**Eg: snake_case
6
5
  * trimmed but not lowerCased
7
6
  */
8
- export declare function snakeCase(wordBits: string[]): string;
9
- export declare function snakeCase(...wordBits: string[]): string;
7
+ export declare function snakeCase(...wordBits: string[] | [string[]]): string;
10
8
  /**Eg: kebab-case
11
9
  * trimmed AND lowerCased
12
10
  * undefined, null... => ''
13
11
  */
14
- export declare function kebabCase(wordBits: string[]): string;
15
- export declare function kebabCase(...wordBits: string[]): string;
12
+ export declare function kebabCase(...wordBits: string[] | [string[]]): string;
16
13
  /**Eg: PascalCase undefined, null... => '' */
17
- export declare function pascalCase(wordBits: string[]): string;
18
- export declare function pascalCase(...wordBits: string[]): string;
14
+ export declare function pascalCase(...wordBits: string[] | [string[]]): string;
19
15
  /**Eg: Titlecase undefined, null... => '' */
20
- export declare function titleCase(wordBits: string[]): string;
21
- export declare function titleCase(...wordBits: string[]): string;
16
+ export declare function titleCase(...wordBits: string[] | [string[]]): string;
22
17
  /**Eg: UPPERCASE undefined, null... => '' */
23
- export declare function upperCase(wordBits: string[]): string;
24
- export declare function upperCase(...wordBits: string[]): string;
18
+ export declare function upperCase(...wordBits: string[] | [string[]]): string;
25
19
  /**Eg: lowercase undefined, null... => '' */
26
- export declare function lowerCase(wordBits: string[]): string;
27
- export declare function lowerCase(...wordBits: string[]): string;
20
+ export declare function lowerCase(...wordBits: string[] | [string[]]): string;
28
21
  export declare function capitalize1st(str?: string): string;
29
22
  export declare function camelCaseToWords(str: string): string[];
30
23
  /** GIVEN A STRING '{ blah;2}, ['nested,(what,ever)']' AND A SEPARATOR ",""
@@ -63,11 +56,11 @@ export declare function convertAccentedCharacters(str: string, config?: {
63
56
  export declare function generateToken(length?: number, unique?: boolean, mode?: 'alphanumeric' | 'hexadecimal'): any;
64
57
  export declare function generateObjectId(): any;
65
58
  /** Useful to join differents bits of url with normalizing slashes
66
- * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2/
59
+ * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2
67
60
  * * urlPathJoin('http:/', 'kikou.lol') => https://www.kikou.lol
68
61
  */
69
62
  export declare function urlPathJoin(...bits: string[]): string;
70
- /** file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
63
+ /** @deprecated use urlPathJoin instead // file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
71
64
  export declare function pathJoinSafe(...pathBits: string[]): string;
72
65
  export type MiniTemplaterOptions = {
73
66
  valueWhenNotSet: string;
@@ -84,3 +77,4 @@ export type MiniTemplaterOptions = {
84
77
  export declare function miniTemplater(content: string, varz: ObjectGeneric, options?: Partial<MiniTemplaterOptions>): string;
85
78
  /** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
86
79
  export declare function cln(val: any, replacerInCaseItIsUndefinNaN?: string): any;
80
+ export declare function nbOccurenceInString(baseString: string, searchedString: string, allowOverlapping?: boolean): number;
@@ -1,42 +1,54 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cln = exports.miniTemplater = exports.pathJoinSafe = 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;
3
+ exports.nbOccurenceInString = exports.cln = exports.miniTemplater = exports.pathJoinSafe = 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;
4
4
  //----------------------------------------
5
5
  // STRING UTILS
6
6
  //----------------------------------------
7
7
  const error_utils_1 = require("./error-utils");
8
8
  const isset_1 = require("./isset");
9
- const getWordBits = wb => Array.isArray(wb[0]) ? wb[0] : wb;
9
+ const getWordBits = (wb) => Array.isArray(wb[0]) ? wb[0] : wb;
10
+ /**Eg: camelCase */
10
11
  function camelCase(...wordBits) {
11
12
  const wordBitsReal = getWordBits(wordBits);
12
13
  return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w : capitalize1st(w)).join('');
13
14
  }
14
15
  exports.camelCase = camelCase;
16
+ /**Eg: snake_case
17
+ * trimmed but not lowerCased
18
+ */
15
19
  function snakeCase(...wordBits) {
16
20
  const wordBitsReal = getWordBits(wordBits);
17
21
  return wordBitsReal.filter(e => e).map(w => w.trim()).join('_');
18
22
  }
19
23
  exports.snakeCase = snakeCase;
24
+ /**Eg: kebab-case
25
+ * trimmed AND lowerCased
26
+ * undefined, null... => ''
27
+ */
20
28
  function kebabCase(...wordBits) {
21
29
  const wordBitsReal = getWordBits(wordBits);
22
30
  return wordBitsReal.filter(e => e).map(w => w.trim().toLowerCase()).join('-');
23
31
  }
24
32
  exports.kebabCase = kebabCase;
33
+ /**Eg: PascalCase undefined, null... => '' */
25
34
  function pascalCase(...wordBits) {
26
35
  const wordBitsReal = getWordBits(wordBits);
27
36
  return wordBitsReal.filter(e => e).map((w, i) => capitalize1st(w)).join('');
28
37
  }
29
38
  exports.pascalCase = pascalCase;
39
+ /**Eg: Titlecase undefined, null... => '' */
30
40
  function titleCase(...wordBits) {
31
41
  const wordBitsReal = getWordBits(wordBits);
32
42
  return capitalize1st(wordBitsReal.filter(e => e).map(w => w.trim()).join(''));
33
43
  }
34
44
  exports.titleCase = titleCase;
45
+ /**Eg: UPPERCASE undefined, null... => '' */
35
46
  function upperCase(...wordBits) {
36
47
  const wordBitsReal = getWordBits(wordBits);
37
48
  return wordBitsReal.filter(e => e).map(w => w.trim().toUpperCase()).join('');
38
49
  }
39
50
  exports.upperCase = upperCase;
51
+ /**Eg: lowercase undefined, null... => '' */
40
52
  function lowerCase(...wordBits) {
41
53
  const wordBitsReal = getWordBits(wordBits);
42
54
  return wordBitsReal.filter(e => e).map(w => w.trim().toLowerCase()).join('');
@@ -186,16 +198,23 @@ function generateObjectId() {
186
198
  }
187
199
  exports.generateObjectId = generateObjectId;
188
200
  /** Useful to join differents bits of url with normalizing slashes
189
- * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2/
201
+ * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2
190
202
  * * urlPathJoin('http:/', 'kikou.lol') => https://www.kikou.lol
191
203
  */
192
204
  function urlPathJoin(...bits) {
193
- return bits.join('/').replace(/\/+/g, '/').replace(/(https?:)\/\/?/, '$1//');
205
+ return bits
206
+ .join('/')
207
+ .replace(/\/+/g, '/') // replace double slash
208
+ .replace(/(^\/|\/$)/g, '') // remove starting and trailing slash
209
+ .replace(/(https?:)\/\/?/, '$1//'); // make sure there is 2 slashes after http(s)
194
210
  }
195
211
  exports.urlPathJoin = urlPathJoin;
196
- /** file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
212
+ /** @deprecated use urlPathJoin instead // file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
197
213
  function pathJoinSafe(...pathBits) {
198
- return pathBits.join('/').replace(/\/+/g, '/').replace(/(^\/|\/$)/g, '');
214
+ return pathBits
215
+ .join('/')
216
+ .replace(/\/+/g, '/') // replace double slash
217
+ .replace(/(^\/|\/$)/g, ''); // remove starting and trailing slash
199
218
  }
200
219
  exports.pathJoinSafe = pathJoinSafe;
201
220
  /** Replace variables in a string like: `Hello {{userName}}!`
@@ -213,4 +232,22 @@ exports.miniTemplater = miniTemplater;
213
232
  /** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
214
233
  function cln(val, replacerInCaseItIsUndefinNaN = '-') { return ['undefined', undefined, 'indéfini', 'NaN', NaN, Infinity, null].includes(val) ? replacerInCaseItIsUndefinNaN : val; }
215
234
  exports.cln = cln;
235
+ function nbOccurenceInString(baseString, searchedString, allowOverlapping = false) {
236
+ if (searchedString.length === 0)
237
+ return baseString.length + 1;
238
+ let n = 0;
239
+ let pos = 0;
240
+ let step = allowOverlapping ? 1 : searchedString.length;
241
+ while (true) {
242
+ pos = baseString.indexOf(searchedString, pos);
243
+ if (pos >= 0) {
244
+ ++n;
245
+ pos += step;
246
+ }
247
+ else
248
+ break;
249
+ }
250
+ return n;
251
+ }
252
+ exports.nbOccurenceInString = nbOccurenceInString;
216
253
  //# sourceMappingURL=string-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/string-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/string-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "topkat-utils",
3
- "version": "1.2.41",
3
+ "version": "1.2.43",
4
4
  "type": "commonjs",
5
5
  "types": "index.ts",
6
6
  "main": "dist",
@@ -22,6 +22,8 @@
22
22
  "@types/node": "^18.11.18",
23
23
  "bump-simple": "^1.0.0",
24
24
  "eslint": "^8.0.0",
25
- "typescript": "^4.9.5"
25
+ "typescript": "^4.9.5",
26
+ "@typescript-eslint/eslint-plugin": "latest",
27
+ "@typescript-eslint/parser": "latest"
26
28
  }
27
29
  }
package/src/env-utils.ts CHANGED
@@ -16,8 +16,8 @@ export function parseEnv(env) {
16
16
  return newEnv
17
17
  }
18
18
 
19
- /** READ ONLY, output a parsed version of process.env
20
- * use it like ENV().myVar
19
+ /** READ ONLY, get the environment variables (Eg. NODE_ENV) with parsed values ("true" => true, "4" => 4, "null" => null). On env variables all values are strings
20
+ * use it like ENV().NODE_ENV
21
21
  */
22
22
  export function ENV(): { [key: string]: any } {
23
23
  const throwErr = () => { throw new Error('Please use process.env to write to env') }
package/src/loop-utils.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  //----------------------------------------
2
2
  // LOOP UTILS
3
3
  //----------------------------------------
4
- import { ObjectGeneric } from "./types"
5
- import { err500IfNotSet } from "./error-utils"
6
- import { isObject } from "./is-object"
4
+ import { ObjectGeneric } from './types'
5
+ import { err500IfNotSet } from './error-utils'
6
+ import { isObject } from './is-object'
7
7
 
8
8
  export function forI<T extends any[] | any>(nbIterations: number, callback: (number: number, previousValue, arrayOfPreviousValues: any[]) => T): T[] {
9
9
  const results: any[] = []
@@ -48,16 +48,15 @@ export async function recursiveGenericFunction(item: ObjectGeneric | any[], call
48
48
  const result = addr$ === '' ? true : await callback(item, addr$, lastElementKey, parent)
49
49
 
50
50
  if (result !== false) {
51
- const addr = addr$ ? addr$ : ''
52
51
  if (Array.isArray(item)) {
53
52
  if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item)
54
53
  await Promise.all(item.map(
55
- (e, i) => recursiveGenericFunction(e, callback, config, addr + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)
54
+ (e, i) => recursiveGenericFunction(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency)
56
55
  ))
57
56
  } else if (isObject(item)) {
58
57
  if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item)
59
58
  await Promise.all(Object.entries(item).map(
60
- ([key, val]) => recursiveGenericFunction(val, callback, config, addr + '.' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)
59
+ ([key, val]) => recursiveGenericFunction(val, callback, config, addr$ ? addr$ + '.' : '' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency)
61
60
  ))
62
61
  }
63
62
  }
@@ -88,13 +87,12 @@ export function recursiveGenericFunctionSync(item: ObjectGeneric | any[], callba
88
87
  const result = addr$ === '' ? true : callback(item, addr$, lastElementKey, parent)
89
88
 
90
89
  if (result !== false) {
91
- const addr = addr$ ? addr$ : ''
92
90
  if (Array.isArray(item)) {
93
91
  if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item) // do not up one level
94
- item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr + '[' + i + ']', i, item, techFieldToAvoidCircularDependency))
92
+ item.forEach((e, i) => recursiveGenericFunctionSync(e, callback, config, addr$ + '[' + i + ']', i, item, techFieldToAvoidCircularDependency))
95
93
  } else if (isObject(item)) {
96
94
  if (config?.disableCircularDependencyRemoval !== true) techFieldToAvoidCircularDependency.push(item)
97
- Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, addr + '.' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency))
95
+ Object.entries(item).forEach(([key, val]) => recursiveGenericFunctionSync(val, callback, config, addr$ ? addr$ + '.' : '' + key.replace(/\./g, '%'), key, item, techFieldToAvoidCircularDependency))
98
96
  }
99
97
  }
100
98
  }
@@ -5,12 +5,10 @@ import { err500IfEmptyOrNotSet } from "./error-utils"
5
5
  import { ObjectGeneric } from "./types"
6
6
  import { isset } from "./isset"
7
7
 
8
- const getWordBits = wb => Array.isArray(wb[0]) ? wb[0] : wb
8
+ const getWordBits = (wb: string[] | [string[]]): string[] => Array.isArray(wb[0]) ? wb[0] : wb as any
9
9
 
10
10
  /**Eg: camelCase */
11
- export function camelCase(wordBits: string[]): string
12
- export function camelCase(...wordBits: string[]): string
13
- export function camelCase(...wordBits): string {
11
+ export function camelCase(...wordBits: string[] | [string[]]): string {
14
12
  const wordBitsReal = getWordBits(wordBits)
15
13
  return wordBitsReal.filter(e => e).map((w, i) => i === 0 ? w : capitalize1st(w)).join('')
16
14
  }
@@ -18,9 +16,7 @@ export function camelCase(...wordBits): string {
18
16
  /**Eg: snake_case
19
17
  * trimmed but not lowerCased
20
18
  */
21
- export function snakeCase(wordBits: string[]): string
22
- export function snakeCase(...wordBits: string[]): string
23
- export function snakeCase(...wordBits): string {
19
+ export function snakeCase(...wordBits: string[] | [string[]]): string {
24
20
  const wordBitsReal = getWordBits(wordBits)
25
21
  return wordBitsReal.filter(e => e).map(w => w.trim()).join('_')
26
22
  }
@@ -28,40 +24,30 @@ export function snakeCase(...wordBits): string {
28
24
  * trimmed AND lowerCased
29
25
  * undefined, null... => ''
30
26
  */
31
- export function kebabCase(wordBits: string[]): string
32
- export function kebabCase(...wordBits: string[]): string
33
- export function kebabCase(...wordBits): string {
27
+ export function kebabCase(...wordBits: string[] | [string[]]): string {
34
28
  const wordBitsReal = getWordBits(wordBits)
35
29
  return wordBitsReal.filter(e => e).map(w => w.trim().toLowerCase()).join('-')
36
30
  }
37
31
  /**Eg: PascalCase undefined, null... => '' */
38
- export function pascalCase(wordBits: string[]): string
39
- export function pascalCase(...wordBits: string[]): string
40
- export function pascalCase(...wordBits): string {
32
+ export function pascalCase(...wordBits: string[] | [string[]]): string {
41
33
  const wordBitsReal = getWordBits(wordBits)
42
34
  return wordBitsReal.filter(e => e).map((w, i) => capitalize1st(w)).join('')
43
35
  }
44
36
 
45
37
  /**Eg: Titlecase undefined, null... => '' */
46
- export function titleCase(wordBits: string[]): string
47
- export function titleCase(...wordBits: string[]): string
48
- export function titleCase(...wordBits): string {
38
+ export function titleCase(...wordBits: string[] | [string[]]): string {
49
39
  const wordBitsReal = getWordBits(wordBits)
50
40
  return capitalize1st(wordBitsReal.filter(e => e).map(w => w.trim()).join(''))
51
41
  }
52
42
 
53
43
  /**Eg: UPPERCASE undefined, null... => '' */
54
- export function upperCase(wordBits: string[]): string
55
- export function upperCase(...wordBits: string[]): string
56
- export function upperCase(...wordBits): string {
44
+ export function upperCase(...wordBits: string[] | [string[]]): string {
57
45
  const wordBitsReal = getWordBits(wordBits)
58
46
  return wordBitsReal.filter(e => e).map(w => w.trim().toUpperCase()).join('')
59
47
  }
60
48
 
61
49
  /**Eg: lowercase undefined, null... => '' */
62
- export function lowerCase(wordBits: string[]): string
63
- export function lowerCase(...wordBits: string[]): string
64
- export function lowerCase(...wordBits): string {
50
+ export function lowerCase(...wordBits: string[] | [string[]]): string {
65
51
  const wordBitsReal = getWordBits(wordBits)
66
52
  return wordBitsReal.filter(e => e).map(w => w.trim().toLowerCase()).join('')
67
53
  }
@@ -205,16 +191,23 @@ export function generateObjectId() {
205
191
 
206
192
 
207
193
  /** Useful to join differents bits of url with normalizing slashes
208
- * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2/
194
+ * * urlPathJoin('https://', 'www.kikou.lol/', '/user', '//2//') => https://www.kikou.lol/user/2
209
195
  * * urlPathJoin('http:/', 'kikou.lol') => https://www.kikou.lol
210
196
  */
211
197
  export function urlPathJoin(...bits: string[]) {
212
- return bits.join('/').replace(/\/+/g, '/').replace(/(https?:)\/\/?/, '$1//')
198
+ return bits
199
+ .join('/')
200
+ .replace(/\/+/g, '/') // replace double slash
201
+ .replace(/(^\/|\/$)/g, '') // remove starting and trailing slash
202
+ .replace(/(https?:)\/\/?/, '$1//') // make sure there is 2 slashes after http(s)
213
203
  }
214
204
 
215
- /** file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
205
+ /** @deprecated use urlPathJoin instead // file path using ONLY SLASH and not antislash on windows. Remove also starting and trailing slashes */
216
206
  export function pathJoinSafe(...pathBits: string[]) {
217
- return pathBits.join('/').replace(/\/+/g, '/').replace(/(^\/|\/$)/g, '')
207
+ return pathBits
208
+ .join('/')
209
+ .replace(/\/+/g, '/') // replace double slash
210
+ .replace(/(^\/|\/$)/g, '') // remove starting and trailing slash
218
211
  }
219
212
 
220
213
 
@@ -242,4 +235,22 @@ export function miniTemplater(content: string, varz: ObjectGeneric, options: Par
242
235
 
243
236
 
244
237
  /** Clean output for outside world. All undefined / null / NaN / Infinity values are changed to '-' */
245
- export function cln(val, replacerInCaseItIsUndefinNaN = '-') { return ['undefined', undefined, 'indéfini', 'NaN', NaN, Infinity, null].includes(val) ? replacerInCaseItIsUndefinNaN : val }
238
+ export function cln(val, replacerInCaseItIsUndefinNaN = '-') { return ['undefined', undefined, 'indéfini', 'NaN', NaN, Infinity, null].includes(val) ? replacerInCaseItIsUndefinNaN : val }
239
+
240
+ export function nbOccurenceInString(baseString: string, searchedString:string, allowOverlapping: boolean = false) {
241
+
242
+ if (searchedString.length === 0) return baseString.length + 1
243
+
244
+ let n = 0
245
+ let pos = 0
246
+ let step = allowOverlapping ? 1 : searchedString.length
247
+
248
+ while (true) {
249
+ pos = baseString.indexOf(searchedString, pos);
250
+ if (pos >= 0) {
251
+ ++n;
252
+ pos += step;
253
+ } else break;
254
+ }
255
+ return n;
256
+ }