nhb-toolbox 2.0.1 → 2.0.7
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/object/basics.d.ts +3 -1
- package/dist/object/basics.d.ts.map +1 -1
- package/dist/object/basics.js +10 -4
- package/dist/object/objectify.d.ts +8 -1
- package/dist/object/objectify.d.ts.map +1 -1
- package/dist/object/objectify.js +31 -4
- package/dist/object/types.d.ts +13 -2
- package/dist/object/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export { createOptionsArray, removeDuplicatesFromArray, } from './array/transfor
|
|
|
15
15
|
export { convertIntoFormData, isEmptyFormData } from './form/convert';
|
|
16
16
|
export { createControlledFormData } from './form/transform';
|
|
17
17
|
export { cloneObject, countObjectFields, generateQueryParams, isEmptyObject, isObject, } from './object/basics';
|
|
18
|
-
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields,
|
|
18
|
+
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, } from './object/objectify';
|
|
19
19
|
export { sanitizeData } from './object/sanitize';
|
|
20
20
|
export { convertObjectValues } from './object/convert';
|
|
21
21
|
export { convertArrayToString, isDeepEqual } from './utils';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,cAAc,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACN,2BAA2B,EAC3B,sBAAsB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,YAAY,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EACN,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,QAAQ,GACR,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,cAAc,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACN,2BAA2B,EAC3B,sBAAsB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,OAAO,EACN,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,YAAY,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EACN,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,QAAQ,GACR,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.isDeepEqual = exports.convertArrayToString = exports.convertObjectValues = exports.sanitizeData = exports.mergeObjects = void 0;
|
|
3
|
+
exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.isObject = exports.isEmptyObject = exports.generateQueryParams = exports.countObjectFields = exports.cloneObject = exports.createControlledFormData = exports.isEmptyFormData = exports.convertIntoFormData = exports.removeDuplicatesFromArray = exports.createOptionsArray = exports.sortAnArray = exports.shuffleArray = exports.isValidButEmptyArray = exports.flattenArray = exports.filterArrayOfObjects = exports.Color = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = exports.convertRgbaToHsla = exports.convertRgbaToHex8 = exports.convertHslToRgb = exports.convertHslToHex = exports.convertHslaToRgba = exports.convertHslaToHex8 = exports.convertHexToRgb = exports.convertHexToHsl = exports.convertHex8ToRgba = exports.convertHex8ToHsla = exports.convertColorCode = exports.generateRandomHSLColor = exports.generateRandomColorInHexRGB = exports.getColorForInitial = exports.getNumbersInRange = exports.isPrime = exports.findPrimeNumbers = exports.numberToWords = exports.getRandomNumber = exports.convertToDecimal = exports.convertStringCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = exports.capitalizeString = void 0;
|
|
4
|
+
exports.isDeepEqual = exports.convertArrayToString = exports.convertObjectValues = exports.sanitizeData = exports.mergeObjects = exports.mergeAndFlattenObjects = void 0;
|
|
5
5
|
var basics_1 = require("./string/basics");
|
|
6
6
|
Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
|
|
7
7
|
Object.defineProperty(exports, "generateRandomID", { enumerable: true, get: function () { return basics_1.generateRandomID; } });
|
|
@@ -68,7 +68,8 @@ var objectify_1 = require("./object/objectify");
|
|
|
68
68
|
Object.defineProperty(exports, "extractNewFields", { enumerable: true, get: function () { return objectify_1.extractNewFields; } });
|
|
69
69
|
Object.defineProperty(exports, "extractUpdatedAndNewFields", { enumerable: true, get: function () { return objectify_1.extractUpdatedAndNewFields; } });
|
|
70
70
|
Object.defineProperty(exports, "extractUpdatedFields", { enumerable: true, get: function () { return objectify_1.extractUpdatedFields; } });
|
|
71
|
-
Object.defineProperty(exports, "
|
|
71
|
+
Object.defineProperty(exports, "flattenObjectDotNotation", { enumerable: true, get: function () { return objectify_1.flattenObjectDotNotation; } });
|
|
72
|
+
Object.defineProperty(exports, "flattenObjectKeyValue", { enumerable: true, get: function () { return objectify_1.flattenObjectKeyValue; } });
|
|
72
73
|
Object.defineProperty(exports, "mergeAndFlattenObjects", { enumerable: true, get: function () { return objectify_1.mergeAndFlattenObjects; } });
|
|
73
74
|
Object.defineProperty(exports, "mergeObjects", { enumerable: true, get: function () { return objectify_1.mergeObjects; } });
|
|
74
75
|
var sanitize_1 = require("./object/sanitize");
|
package/dist/object/basics.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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 `
|
|
5
|
+
* @template T - A generic type extending `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
|
*
|
|
@@ -10,6 +10,8 @@ import type { GenericObject, QueryObject } from './types';
|
|
|
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
12
|
* generateQueryParams({ key1: '', key2: null }); // ""
|
|
13
|
+
* generateQueryParams({ key1: true, key2: false }); // "?key1=true&key2=false"
|
|
14
|
+
* generateQueryParams({ filters: { category: 'laptop', price: 1000 } }); // "?category=laptop&price=1000"
|
|
13
15
|
*/
|
|
14
16
|
export declare const generateQueryParams: <T extends QueryObject>(params?: T) => string;
|
|
15
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basics.d.ts","sourceRoot":"","sources":["../../src/object/basics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"basics.d.ts","sourceRoot":"","sources":["../../src/object/basics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,WAChD,CAAC,KACP,MAkCF,CAAC;AACF;;;;;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,QAAQ,SAAU,OAAO,KAAG,OAExC,CAAC"}
|
package/dist/object/basics.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isObject = exports.countObjectFields = exports.isEmptyObject = exports.cloneObject = exports.generateQueryParams = void 0;
|
|
4
|
+
const objectify_1 = require("./objectify");
|
|
4
5
|
/**
|
|
5
6
|
* * Utility to generate query parameters from an object.
|
|
6
7
|
*
|
|
7
|
-
* @template T - A generic type extending `
|
|
8
|
+
* @template T - A generic type extending `QueryObject`.
|
|
8
9
|
* @param params - Object containing query parameters.
|
|
9
10
|
* @returns A query string as a URL-encoded string, e.g., `?key1=value1&key2=value2`.
|
|
10
11
|
*
|
|
@@ -12,9 +13,14 @@ exports.isObject = exports.countObjectFields = exports.isEmptyObject = exports.c
|
|
|
12
13
|
* generateQueryParams({ key1: 'value1', key2: 42 }); // "?key1=value1&key2=42"
|
|
13
14
|
* generateQueryParams({ key1: ['value1', 'value2'], key2: 42 }); // "?key1=value1&key1=value2&key2=42"
|
|
14
15
|
* generateQueryParams({ key1: '', key2: null }); // ""
|
|
16
|
+
* generateQueryParams({ key1: true, key2: false }); // "?key1=true&key2=false"
|
|
17
|
+
* generateQueryParams({ filters: { category: 'laptop', price: 1000 } }); // "?category=laptop&price=1000"
|
|
15
18
|
*/
|
|
16
19
|
const generateQueryParams = (params = {}) => {
|
|
17
|
-
|
|
20
|
+
// Flatten the nested object into key-value pairs
|
|
21
|
+
const flattenedParams = (0, objectify_1.flattenObjectKeyValue)(params);
|
|
22
|
+
// Generate the query string
|
|
23
|
+
const queryParams = Object.entries(flattenedParams)
|
|
18
24
|
.filter(([_, value]) => value !== undefined &&
|
|
19
25
|
value !== null &&
|
|
20
26
|
!(typeof value === 'string' && value.trim() === ''))
|
|
@@ -23,8 +29,8 @@ const generateQueryParams = (params = {}) => {
|
|
|
23
29
|
.filter((v) => v !== undefined &&
|
|
24
30
|
v !== null &&
|
|
25
31
|
!(typeof v === 'string' && v.trim() === ''))
|
|
26
|
-
.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`)
|
|
27
|
-
: `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
|
|
32
|
+
.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(typeof v === 'boolean' ? String(v) : String(v))}`)
|
|
33
|
+
: `${encodeURIComponent(key)}=${encodeURIComponent(typeof value === 'boolean' ? String(value) : String(value))}`)
|
|
28
34
|
.join('&');
|
|
29
35
|
return queryParams ? `?${queryParams}` : '';
|
|
30
36
|
};
|
|
@@ -15,13 +15,20 @@ export declare const mergeObjects: <T extends GenericObject>(...objects: T[]) =>
|
|
|
15
15
|
* @returns Merged object with flattened structure.
|
|
16
16
|
*/
|
|
17
17
|
export declare const mergeAndFlattenObjects: <T extends GenericObject>(...objects: T[]) => GenericObject;
|
|
18
|
+
/**
|
|
19
|
+
* * Flattens a nested object into key-value format.
|
|
20
|
+
*
|
|
21
|
+
* @param object - The `object` to flatten.
|
|
22
|
+
* @returns A `flattened object` in key-value format.
|
|
23
|
+
*/
|
|
24
|
+
export declare const flattenObjectKeyValue: <T extends LooseObject>(object: T) => T;
|
|
18
25
|
/**
|
|
19
26
|
* * Flattens a nested object into a dot notation format.
|
|
20
27
|
*
|
|
21
28
|
* @param object - The `object` to flatten.
|
|
22
29
|
* @returns A `flattened object` with dot notation keys.
|
|
23
30
|
*/
|
|
24
|
-
export declare const
|
|
31
|
+
export declare const flattenObjectDotNotation: <T extends GenericObject>(object: T) => GenericObject;
|
|
25
32
|
/**
|
|
26
33
|
* * Extracts only the fields that have changed between the original and updated object.
|
|
27
34
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectify.d.ts","sourceRoot":"","sources":["../../src/object/objectify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;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,
|
|
1
|
+
{"version":3,"file":"objectify.d.ts","sourceRoot":"","sources":["../../src/object/objectify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;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,qBAAqB,GAAI,CAAC,SAAS,WAAW,UAAU,CAAC,KAAG,CAmBxE,CAAC;AACF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,aAAa,UACvD,CAAC,KACP,aAkCF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,WAAW,cAC7C,CAAC,iBACE,OAAO,CAAC,CAAC,CAAC,KACvB,OAAO,CAAC,CAAC,CAwBX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,WAAW,cACzC,CAAC,iBACE,OAAO,CAAC,CAAC,CAAC,KACvB,OAAO,CAAC,CAAC,CAqBX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,WAAW,cACnD,CAAC,iBACE,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,KACrC,OAAO,CAAC,CAAC,CAAC,GAAG,WAwBf,CAAC"}
|
package/dist/object/objectify.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractUpdatedFields = exports.
|
|
3
|
+
exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractUpdatedFields = exports.flattenObjectDotNotation = exports.flattenObjectKeyValue = exports.mergeAndFlattenObjects = exports.mergeObjects = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const basics_1 = require("./basics");
|
|
6
6
|
/**
|
|
@@ -70,13 +70,37 @@ const mergeAndFlattenObjects = (...objects) => {
|
|
|
70
70
|
return result;
|
|
71
71
|
};
|
|
72
72
|
exports.mergeAndFlattenObjects = mergeAndFlattenObjects;
|
|
73
|
+
/**
|
|
74
|
+
* * Flattens a nested object into key-value format.
|
|
75
|
+
*
|
|
76
|
+
* @param object - The `object` to flatten.
|
|
77
|
+
* @returns A `flattened object` in key-value format.
|
|
78
|
+
*/
|
|
79
|
+
const flattenObjectKeyValue = (object) => {
|
|
80
|
+
const flattened = {};
|
|
81
|
+
for (const [key, value] of Object.entries(object)) {
|
|
82
|
+
if (typeof value === 'object' &&
|
|
83
|
+
value !== null &&
|
|
84
|
+
!Array.isArray(value)) {
|
|
85
|
+
// Recursively flatten nested objects
|
|
86
|
+
const nestedFlattened = (0, exports.flattenObjectKeyValue)(value);
|
|
87
|
+
Object.assign(flattened, nestedFlattened);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Directly assign non-object values
|
|
91
|
+
flattened[key] = value;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return flattened;
|
|
95
|
+
};
|
|
96
|
+
exports.flattenObjectKeyValue = flattenObjectKeyValue;
|
|
73
97
|
/**
|
|
74
98
|
* * Flattens a nested object into a dot notation format.
|
|
75
99
|
*
|
|
76
100
|
* @param object - The `object` to flatten.
|
|
77
101
|
* @returns A `flattened object` with dot notation keys.
|
|
78
102
|
*/
|
|
79
|
-
const
|
|
103
|
+
const flattenObjectDotNotation = (object) => {
|
|
80
104
|
/**
|
|
81
105
|
* * Recursively flattens an object, transforming nested structures into dot-notation keys.
|
|
82
106
|
*
|
|
@@ -89,7 +113,10 @@ const flattenObject = (object) => {
|
|
|
89
113
|
for (const [key, value] of Object.entries(source)) {
|
|
90
114
|
// Construct the dot-notation key
|
|
91
115
|
const newKey = prefix ? `${String(prefix)}.${key}` : key;
|
|
92
|
-
if (value &&
|
|
116
|
+
if (value &&
|
|
117
|
+
typeof value === 'object' &&
|
|
118
|
+
!Array.isArray(value) &&
|
|
119
|
+
value !== null) {
|
|
93
120
|
// Recursively process nested objects
|
|
94
121
|
Object.assign(flattened, _flattenObject(value, newKey));
|
|
95
122
|
}
|
|
@@ -103,7 +130,7 @@ const flattenObject = (object) => {
|
|
|
103
130
|
// Call the recursive function with an empty prefix initially
|
|
104
131
|
return _flattenObject(object);
|
|
105
132
|
};
|
|
106
|
-
exports.
|
|
133
|
+
exports.flattenObjectDotNotation = flattenObjectDotNotation;
|
|
107
134
|
/**
|
|
108
135
|
* * Extracts only the fields that have changed between the original and updated object.
|
|
109
136
|
*
|
package/dist/object/types.d.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import type { Primitive } from '../types';
|
|
1
2
|
/** - Generic object with `unknown` value */
|
|
2
3
|
export type GenericObject = Record<string, unknown>;
|
|
3
4
|
/** - Generic object but with `any` value */
|
|
4
5
|
export type LooseObject = Record<string, any>;
|
|
5
|
-
/**
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* * Represents a value that can be used in a query object.
|
|
8
|
+
* - Can be a primitive, an array of primitives, or a nested query object.
|
|
9
|
+
*/
|
|
10
|
+
export type QueryObjectValue = Primitive | Primitive[] | QueryObject;
|
|
11
|
+
/**
|
|
12
|
+
* * Represents a query object with string keys and `QueryObjectValue` values.
|
|
13
|
+
* - Supports nested objects and arrays.
|
|
14
|
+
*/
|
|
15
|
+
export type QueryObject = {
|
|
16
|
+
[key: string]: QueryObjectValue;
|
|
17
|
+
};
|
|
7
18
|
/** - Dot-notation keys for nested objects */
|
|
8
19
|
export type DotNotationKey<T> = T extends GenericObject ? {
|
|
9
20
|
[K in keyof T & string]: T[K] extends GenericObject ? `${K}` | `${K}.${DotNotationKey<T[K]>}` : `${K}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object/types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,KAAK,KAAK,CAAC,CAAC,IAAI;IAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAEjC,6BAA6B;AAC7B,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AACrC,KAAK,KAAK,CAAC,CAAC,IAAI;IAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAEjC,6BAA6B;AAC7B,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAEzC,+BAA+B;AAC/B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC"}
|
package/package.json
CHANGED