nhb-toolbox 1.2.1 → 1.2.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAG,SAAS,CAAC,CAAC,CAAC,EAO5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC9B,CAAC,SAAS,WAAW,EACrB,EAAE,SAAS,MAAM,YACjB,EAAE,SAAS,MAAM,kBAEX,CAAC,EAAE,UACD,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9B,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAE,EAe5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAChD,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,CAAC,EAAE,CAAC;AA+EP;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAC9D,CAAC,EAAE,cACE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAAE,KACvD,CAAC,EAgBH,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAG,SAAS,CAAC,CAAC,CAAC,EAO5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC9B,CAAC,SAAS,WAAW,EACrB,EAAE,SAAS,MAAM,YACjB,EAAE,SAAS,MAAM,kBAEX,CAAC,EAAE,UACD,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9B,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,GAAE,EAe5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;AAE9E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAChD,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,CAAC,EAAE,CAAC;AAiFP;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAC9D,CAAC,EAAE,cACE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAAE,KACvD,CAAC,EAgBH,CAAC"}
@@ -56,20 +56,20 @@ function sortAnArray(array, options) {
56
56
  return array;
57
57
  // Check if the array contains strings
58
58
  if (typeof array[0] === 'string') {
59
- return [...array].sort((a, b) => options?.sortOrder === 'desc'
60
- ? b.localeCompare(a)
59
+ return [...array].sort((a, b) => options?.sortOrder === 'desc' ?
60
+ b.localeCompare(a)
61
61
  : a.localeCompare(b));
62
62
  }
63
63
  // Check if the array contains numbers
64
64
  if (typeof array[0] === 'number') {
65
- return [...array].sort((a, b) => options?.sortOrder === 'desc'
66
- ? b - a
65
+ return [...array].sort((a, b) => options?.sortOrder === 'desc' ?
66
+ b - a
67
67
  : a - b);
68
68
  }
69
69
  // Check if the array contains booleans
70
70
  if (typeof array[0] === 'boolean') {
71
- return [...array].sort((a, b) => options?.sortOrder === 'desc'
72
- ? Number(b) - Number(a)
71
+ return [...array].sort((a, b) => options?.sortOrder === 'desc' ?
72
+ Number(b) - Number(a)
73
73
  : Number(a) - Number(b));
74
74
  }
75
75
  // Handle object arrays
@@ -79,18 +79,18 @@ function sortAnArray(array, options) {
79
79
  const keyA = a[key];
80
80
  const keyB = b[key];
81
81
  if (typeof keyA === 'string' && typeof keyB === 'string') {
82
- return options?.sortOrder === 'desc'
83
- ? keyB.localeCompare(keyA)
82
+ return options?.sortOrder === 'desc' ?
83
+ keyB.localeCompare(keyA)
84
84
  : keyA.localeCompare(keyB);
85
85
  }
86
86
  if (typeof keyA === 'number' && typeof keyB === 'number') {
87
- return options?.sortOrder === 'desc'
88
- ? keyB - keyA
87
+ return options?.sortOrder === 'desc' ?
88
+ keyB - keyA
89
89
  : keyA - keyB;
90
90
  }
91
91
  if (typeof keyA === 'boolean' && typeof keyB === 'boolean') {
92
- return options?.sortOrder === 'desc'
93
- ? Number(keyB) - Number(keyA)
92
+ return options?.sortOrder === 'desc' ?
93
+ Number(keyB) - Number(keyA)
94
94
  : Number(keyA) - Number(keyB);
95
95
  }
96
96
  throw new Error('Cannot compare non-string/non-number/non-boolean properties.');
@@ -1,57 +1,30 @@
1
1
  import type { DotNotationKey, GenericObject, Numberified, Stringified } from './types';
2
- /**
3
- * * Converts the values of specified keys in an object to strings.
4
- * * Supports nested objects using dot-notation keys.
5
- *
6
- * @param data The object to convert.
7
- * @param options Options object specifying the conversion mapping.
8
- * - `keys`: The keys in the object to be converted (dot-notation supported).
9
- * - `convertTo`: Must be "string".
10
- * @returns The modified object with the converted values as strings.
11
- */
12
- export declare function convertObjectValues<T extends GenericObject>(data: T, options: {
13
- keys: DotNotationKey<T>[];
14
- convertTo: 'string';
15
- }): Stringified<T>;
16
2
  /**
17
3
  * * Converts the values of specified keys in an object to numbers.
18
4
  * * Supports nested objects using dot-notation keys.
19
5
  *
20
6
  * @param data The object to convert.
21
7
  * @param options Options object specifying the conversion mapping.
22
- * - `keys`: The keys in the object to be converted (dot-notation supported).
23
- * - `convertTo`: Must be "number".
24
- * @returns The modified object with the converted values as numbers.
25
- */
26
- export declare function convertObjectValues<T extends GenericObject>(data: T, options: {
27
- keys: DotNotationKey<T>[];
28
- convertTo: 'number';
29
- }): Numberified<T>;
30
- /**
31
- * * Converts the values of specified keys in an array of objects to strings.
32
- * * Supports nested objects using dot-notation keys.
33
- *
34
- * @param data The array of objects to convert.
35
- * @param options Options object specifying the conversion mapping.
36
8
  * - `keys`: The keys in the objects to be converted (dot-notation supported).
37
- * - `convertTo`: Must be "string".
38
- * @returns The modified array of objects with the converted values as strings.
9
+ * - `convertTo`: The target type, either `"string"` or `"number"`.
10
+ * @returns The modified object with the converted values as `"string"` or `"number"`.
39
11
  */
40
- export declare function convertObjectValues<T extends GenericObject>(data: T[], options: {
12
+ export declare function convertObjectValues<T extends GenericObject, C extends 'string' | 'number'>(data: T, options: {
41
13
  keys: DotNotationKey<T>[];
42
- convertTo: 'string';
43
- }): Stringified<T>[];
14
+ convertTo: C;
15
+ }): C extends 'string' ? Stringified<T> : C extends 'number' ? Numberified<T> : never;
44
16
  /**
45
- * * Converts the values of specified keys in an array of objects to numbers.
17
+ * * Converts the values of specified keys in an array of objects to numbers or strings.
46
18
  * * Supports nested objects using dot-notation keys.
19
+ *
47
20
  * @param data The array of objects to convert.
48
21
  * @param options Options object specifying the conversion mapping.
49
22
  * - `keys`: The keys in the objects to be converted (dot-notation supported).
50
- * - `convertTo`: Must be "number".
51
- * @returns The modified array of objects with the converted values as numbers.
23
+ * - `convertTo`: The target type, either `"string"` or `"number"`.
24
+ * @returns The modified array of objects with the converted values as `"string"` or `"number"`.
52
25
  */
53
- export declare function convertObjectValues<T extends GenericObject>(data: T[], options: {
26
+ export declare function convertObjectValues<T extends GenericObject, C extends 'string' | 'number'>(data: T[], options: {
54
27
  keys: DotNotationKey<T>[];
55
- convertTo: 'number';
56
- }): Numberified<T>[];
28
+ convertTo: C;
29
+ }): C extends 'string' ? Stringified<T>[] : C extends 'number' ? Numberified<T>[] : never;
57
30
  //# sourceMappingURL=convert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/object/convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAC1D,IAAI,EAAE,CAAC,EACP,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACzD,WAAW,CAAC,CAAC,CAAC,CAAC;AAElB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAC1D,IAAI,EAAE,CAAC,EACP,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACzD,WAAW,CAAC,CAAC,CAAC,CAAC;AAElB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAC1D,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACzD,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EAC1D,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACzD,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/object/convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAClC,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAE7B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,CAAC,CAAA;CAAE,GAClD,CAAC,SAAS,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GACpC,CAAC,SAAS,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GACnC,KAAK,CAAC;AAER;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAClC,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAE7B,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,CAAC,CAAA;CAAE,GAClD,CAAC,SAAS,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GACtC,CAAC,SAAS,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GACrC,KAAK,CAAC"}
@@ -15,8 +15,7 @@ function convertObjectValues(data, options) {
15
15
  const { keys, convertTo } = options;
16
16
  /** * Helper function to determine if value should be preserved. */
17
17
  const _shouldPreserveValue = (value) => convertTo === 'number' &&
18
- typeof value === 'string' &&
19
- isNaN(Number(value));
18
+ (typeof value !== 'string' || isNaN(Number(value)));
20
19
  /** * Helper function to resolve a dot-notation key path and modify the corresponding value in the object. */
21
20
  const _setValueAtPath = (obj, path, convertTo) => {
22
21
  const segments = path.split('.');
@@ -31,7 +30,8 @@ function convertObjectValues(data, options) {
31
30
  current[key] = String(value);
32
31
  }
33
32
  else if (convertTo === 'number' &&
34
- typeof value !== 'number') {
33
+ typeof value !== 'number' &&
34
+ !isNaN(Number(value))) {
35
35
  current[key] = Number(value);
36
36
  }
37
37
  }
@@ -48,15 +48,15 @@ function convertObjectValues(data, options) {
48
48
  return obj;
49
49
  };
50
50
  /** * Recursively process a single object. */
51
- const convertValue = (obj) => {
52
- let newObj = { ...obj };
51
+ const _convertValue = (obj) => {
52
+ let newObj = structuredClone(obj);
53
53
  keys.forEach((key) => {
54
54
  newObj = _setValueAtPath(newObj, key, convertTo);
55
55
  });
56
56
  return newObj;
57
57
  };
58
58
  if (Array.isArray(data)) {
59
- return data.map((d) => convertValue(d));
59
+ return data.map((d) => _convertValue(d));
60
60
  }
61
- return convertValue(data);
61
+ return _convertValue(data);
62
62
  }
@@ -1,16 +1,17 @@
1
- import type { GenericObject } from './types';
1
+ import type { GenericObject, QueryObject } from './types';
2
2
  /**
3
3
  * * Utility to generate query parameters from an object.
4
4
  *
5
- * @template T - A generic type extending `Record<string, string | number | string[] | number[]>`.
5
+ * @template T - A generic type extending `Record<string, string | number | (string | number | null | undefined)[]>` (`QueryObject`).
6
6
  * @param params - Object containing query parameters.
7
7
  * @returns A query string as a URL-encoded string, e.g., `?key1=value1&key2=value2`.
8
8
  *
9
9
  * @example
10
10
  * generateQueryParams({ key1: 'value1', key2: 42 }); // "?key1=value1&key2=42"
11
11
  * generateQueryParams({ key1: ['value1', 'value2'], key2: 42 }); // "?key1=value1&key1=value2&key2=42"
12
+ * generateQueryParams({ key1: '', key2: null }); // ""
12
13
  */
13
- export declare const generateQueryParams: <T extends Record<string, string | number | string[] | number[]>>(params?: T) => string;
14
+ export declare const generateQueryParams: <T extends QueryObject>(params?: T) => string;
14
15
  /**
15
16
  * * Deep clone an object.
16
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,GAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,WAEvD,CAAC,KACP,MAkBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,CAE7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,OAE/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,MAEnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,aAAa,cAAc,CAAC,EAAE,KAAG,CAuCvE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,aAAa,cACjD,CAAC,EAAE,KACb,aAyBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,aAAa,UAC5C,CAAC,KACP,aA6BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OA6B3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,WAChD,CAAC,KACP,MA4BF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,CAE7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,OAE/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,aAAa,OAAO,CAAC,KAAG,MAEnE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,aAAa,cAAc,CAAC,EAAE,KAAG,CAuCvE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,aAAa,cACjD,CAAC,EAAE,KACb,aAyBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,aAAa,UAC5C,CAAC,KACP,aA6BF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OA6B3C,CAAC"}
@@ -4,19 +4,26 @@ exports.isDeepEqual = exports.flattenObject = exports.mergeAndFlattenObjects = e
4
4
  /**
5
5
  * * Utility to generate query parameters from an object.
6
6
  *
7
- * @template T - A generic type extending `Record<string, string | number | string[] | number[]>`.
7
+ * @template T - A generic type extending `Record<string, string | number | (string | number | null | undefined)[]>` (`QueryObject`).
8
8
  * @param params - Object containing query parameters.
9
9
  * @returns A query string as a URL-encoded string, e.g., `?key1=value1&key2=value2`.
10
10
  *
11
11
  * @example
12
12
  * generateQueryParams({ key1: 'value1', key2: 42 }); // "?key1=value1&key2=42"
13
13
  * generateQueryParams({ key1: ['value1', 'value2'], key2: 42 }); // "?key1=value1&key1=value2&key2=42"
14
+ * generateQueryParams({ key1: '', key2: null }); // ""
14
15
  */
15
16
  const generateQueryParams = (params = {}) => {
16
17
  const queryParams = Object.entries(params)
17
- .filter(([_, value]) => value !== undefined && value !== null)
18
- .flatMap(([key, value]) => Array.isArray(value)
19
- ? value.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`)
18
+ .filter(([_, value]) => value !== undefined &&
19
+ value !== null &&
20
+ !(typeof value === 'string' && value.trim() === ''))
21
+ .flatMap(([key, value]) => Array.isArray(value) ?
22
+ value
23
+ .filter((v) => v !== undefined &&
24
+ v !== null &&
25
+ !(typeof v === 'string' && v.trim() === ''))
26
+ .map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`)
20
27
  : `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
21
28
  .join('&');
22
29
  return queryParams ? `?${queryParams}` : '';
@@ -1,5 +1,7 @@
1
1
  /** - Generic object type */
2
2
  export type GenericObject = Record<string, unknown>;
3
+ /** - Query object type `Record<string, string | number | string[] | number[]` */
4
+ export type QueryObject = Record<string, string | number | null | undefined | (string | number | null | undefined)[]>;
3
5
  /** - Dot-notation keys for nested objects */
4
6
  export type DotNotationKey<T> = T extends GenericObject ? {
5
7
  [K in keyof T & string]: T[K] extends GenericObject ? `${K}` | `${K}.${DotNotationKey<T[K]>}` : `${K}`;
@@ -17,11 +19,15 @@ export interface SanitizeOptions<T extends GenericObject> {
17
19
  export type SanitizedData<T> = {
18
20
  [P in keyof T]?: T[P] extends GenericObject ? SanitizedData<T[P]> : T[P];
19
21
  };
20
- /** - Dot-notation keys for nested objects. */
22
+ /**
23
+ * - Dot-notation keys for nested objects.
24
+ * ! Unused
25
+ */
21
26
  export type KeyConversion<T> = T extends GenericObject ? {
22
27
  [K in keyof T & string]: K extends string ? T[K] extends GenericObject ? `${K}` | `${K}.${KeyConversion<T[K]>}` : `${K}` : never;
23
28
  }[keyof T & string] : never;
24
29
  /**
30
+ * ! Unused
25
31
  * * Determines the return type of `convertObjectValues` based on the `ConvertTo` type.
26
32
  * @template T The object type.
27
33
  * @template C The conversion type, either "string" or "number".
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object/types.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,8 @@ const capitalizeString = (string, options) => {
36
36
  return trimmedString
37
37
  .charAt(0)
38
38
  .toUpperCase()
39
- .concat(lowerCaseRest
40
- ? trimmedString.slice(1).toLowerCase()
39
+ .concat(lowerCaseRest ?
40
+ trimmedString.slice(1).toLowerCase()
41
41
  : trimmedString.slice(1));
42
42
  };
43
43
  exports.capitalizeString = capitalizeString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nhb-toolbox",
3
- "version": "1.2.1",
3
+ "version": "1.2.5",
4
4
  "description": "A versatile collection of smart, efficient, and reusable utility functions for everyday development needs.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",