nhb-toolbox 4.0.40 → 4.0.46
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/cjs/dom/query.js +33 -1
- package/dist/cjs/index.js +14 -6
- package/dist/cjs/object/objectify.js +24 -1
- package/dist/cjs/object/sanitize.js +6 -0
- package/dist/cjs/utils/index.js +54 -1
- package/dist/dts/dom/query.d.ts +16 -1
- package/dist/dts/dom/query.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -4
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/object/objectify.d.ts +10 -0
- package/dist/dts/object/objectify.d.ts.map +1 -1
- package/dist/dts/object/sanitize.d.ts.map +1 -1
- package/dist/dts/utils/index.d.ts +15 -0
- package/dist/dts/utils/index.d.ts.map +1 -1
- package/dist/esm/dom/query.js +31 -0
- package/dist/esm/index.js +4 -4
- package/dist/esm/object/objectify.js +23 -1
- package/dist/esm/object/sanitize.js +6 -0
- package/dist/esm/utils/index.js +52 -1
- package/package.json +1 -1
package/dist/cjs/dom/query.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateQueryParams = void 0;
|
|
3
|
+
exports.parseQueryString = exports.generateQueryParams = void 0;
|
|
4
4
|
exports.getQueryParams = getQueryParams;
|
|
5
5
|
exports.updateQueryParam = updateQueryParam;
|
|
6
6
|
const objectify_1 = require("../object/objectify");
|
|
7
|
+
const sanitize_1 = require("../object/sanitize");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
7
9
|
/**
|
|
8
10
|
* * Utility to generate query parameters from an object.
|
|
9
11
|
*
|
|
@@ -38,6 +40,9 @@ const generateQueryParams = (params = {}) => {
|
|
|
38
40
|
exports.generateQueryParams = generateQueryParams;
|
|
39
41
|
/**
|
|
40
42
|
* * Get query params as standard `JavaScript` Object `Record<string, string>`.
|
|
43
|
+
*
|
|
44
|
+
* - **Note:** *Extracts query parameters from the current URL (window.location.search).*
|
|
45
|
+
*
|
|
41
46
|
* @returns Query string as key-value paired object. `Record<string, string>`.
|
|
42
47
|
*/
|
|
43
48
|
function getQueryParams() {
|
|
@@ -53,3 +58,30 @@ function updateQueryParam(key, value) {
|
|
|
53
58
|
url.searchParams.set(key, value);
|
|
54
59
|
window.history.replaceState({}, '', url.toString());
|
|
55
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Parses a query string (with optional `?` prefix) into an object.
|
|
63
|
+
* Supports multiple values for the same key by returning arrays.
|
|
64
|
+
* Optionally parses primitive string values into actual types (e.g., "1" → 1, "true" → true).
|
|
65
|
+
*
|
|
66
|
+
* - **Note:** *This function does **not** access or depend on `current URL` a.k.a `window.location.search`.*
|
|
67
|
+
*
|
|
68
|
+
* @param query - The query string to parse.
|
|
69
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: true).
|
|
70
|
+
* @returns An object where keys are strings and values can be string, array, number, boolean, or null.
|
|
71
|
+
*/
|
|
72
|
+
const parseQueryString = (query, parsePrimitives = true) => {
|
|
73
|
+
const params = new URLSearchParams(query.startsWith('?') ? query.slice(1) : query);
|
|
74
|
+
const entries = {};
|
|
75
|
+
for (const [key, value] of params.entries()) {
|
|
76
|
+
if (key in entries) {
|
|
77
|
+
const current = entries[key];
|
|
78
|
+
const array = Array.isArray(current) ? [...current, value] : [current, value];
|
|
79
|
+
entries[key] = parsePrimitives ? (0, utils_1.deepParsePrimitives)(array) : array;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
entries[key] = value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return parsePrimitives ? (0, sanitize_1.parseObjectValues)(entries) : entries;
|
|
86
|
+
};
|
|
87
|
+
exports.parseQueryString = parseQueryString;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = exports.getFibonacciSeries = exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.sumOfNumbers = exports.sumNumbers = exports.sumDigits = exports.reverseNumber = exports.getSumOfNumbers = exports.getRandomNumber = exports.getAverageOfNumbers = exports.getAverage = exports.convertToDecimal = exports.calculateLCM = exports.calculateLCD = exports.calculateHCF = exports.calculateGCD = exports.calculateAverage = exports.
|
|
3
|
+
exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = exports.getFibonacciSeries = exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.sumOfNumbers = exports.sumNumbers = exports.sumDigits = exports.reverseNumber = exports.getSumOfNumbers = exports.getRandomNumber = exports.getAverageOfNumbers = exports.getAverage = exports.convertToDecimal = exports.calculateLCM = exports.calculateLCD = exports.calculateHCF = exports.calculateGCD = exports.calculateAverage = exports.wordCount = exports.levenshteinDistance = exports.getLevenshteinDistance = exports.extractNumbersFromString = exports.countWordsInString = exports.countWords = exports.slugifyString = exports.reverseString = exports.replaceAllInString = exports.normalizeString = exports.maskString = exports.formatWithPlural = exports.formatUnitWithPlural = exports.formatNumberWithPluralUnit = exports.extractURLs = exports.extractEmails = exports.convertStringCase = exports.isSnakeCase = exports.isPascalCase = exports.isPalindrome = exports.isKebabCase = exports.isEmojiOnly = exports.isCamelCase = exports.generateAnagrams = exports.truncateString = exports.trimString = exports.generateRandomID = exports.capitalizeString = void 0;
|
|
4
4
|
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.roundToNearestInterval = exports.roundToNearest = exports.roundNumberToNearestInterval = exports.roundNumber = exports.numberToOrdinal = exports.getRandomFloat = exports.getRandomDecimal = exports.getOrdinalNumber = exports.getOrdinal = exports.formatCurrency = exports.convertToOrdinal = exports.convertNumberToOrdinal = exports.convertNumberToCurrency = exports.clampNumber = exports.cardinalToOrdinal = exports.isPrimeNumber = exports.isPrime = exports.getPrimeNumbers = exports.findPrimeNumbers = exports.numberToWords = exports.convertToRomanNumerals = exports.convertNumberToWords = exports.isPerfectSquare = exports.isParOfFibonacciSeries = exports.isParOfFibonacci = exports.isOddNumber = exports.isOdd = exports.isMultiple = exports.isInvalidNumbers = exports.isFibonacci = exports.isEvenNumber = exports.isEven = exports.areInvalidNumbers = exports.getNthFibonacci = exports.getMemoizedFibonacciSeries = void 0;
|
|
5
5
|
exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeStringFromUTC = exports.getMinutesFromUTC = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = exports.convertMinutesToUTCOffset = exports.chronusts = exports.chronusjs = exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.Chronus = exports.Chronos = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeString = exports.isValidTime = exports.isLeapYear = exports.greet = exports.getGreeting = exports.generateGreeting = exports.Colour = exports.Color = exports.convertRgbToRgba = exports.convertRgbToHsl = exports.convertRgbToHex = void 0;
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = void 0;
|
|
6
|
+
exports.getQueryParams = exports.generateQueryParams = exports.formatQueryParams = exports.createQueryParams = exports.remapObjectFields = exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedValues = exports.parseStringifiedPrimitives = exports.parseStringifiedObjectValues = exports.parsePrimitives = exports.parsePrimitiveData = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileList = exports.isFileArray = exports.isCustomFileArray = exports.isCustomFile = exports.serializeForm = exports.parseFormData = exports.createFormData = exports.createControlledFormData = exports.convertIntoFormData = exports.naturalSortForString = exports.naturalSort = exports.compareSorter = exports.compareNaturally = exports.splitArray = exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.getMissingElements = void 0;
|
|
7
|
+
exports.isFunction = exports.isError = exports.isEmptyObjectGuard = exports.isEmptyObject = exports.isDate = exports.isBigInt = exports.isArrayWithLength = exports.isArrayOfType = exports.isArray = exports.doesReturnPromise = exports.isUndefined = exports.isTruthy = exports.isSymbol = exports.isString = exports.isPrimitive = exports.isPositiveInteger = exports.isNumber = exports.isNull = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.isDeepEqual = exports.getStaticMethodsCount = exports.getStaticMethodNames = exports.getInstanceMethodsCount = exports.getInstanceMethodNames = exports.getClassDetails = exports.deepParsePrimitives = exports.debounceAction = exports.countStaticMethods = exports.countInstanceMethods = exports.convertArrayToString = exports.saveToSessionStorage = exports.saveToLocalStorage = exports.removeFromSessionStorage = exports.removeFromLocalStorage = exports.getFromSessionStorage = exports.getFromLocalStorage = exports.toggleFullScreen = exports.smoothScrollTo = exports.copyToClipboard = exports.updateQueryParam = exports.getQueryStringAsObject = exports.queryStringToObject = exports.parseQueryString = void 0;
|
|
8
|
+
exports.isValidURL = exports.isValidEmail = exports.isUUID = exports.isURL = exports.isPhoneNumber = exports.isNumericString = exports.isNodeEnvironment = exports.isNodeENV = exports.isNode = exports.isIPAddress = exports.isExpectedNodeENV = exports.isEnvironment = exports.isEmailArray = exports.isEmail = exports.isDateString = exports.isBrowser = exports.isBase64 = exports.isValidSet = exports.isValidObject = exports.isValidMap = exports.isValidJSON = exports.isValidArray = exports.isSet = exports.isReturningPromise = exports.isRegularExpression = exports.isRegExp = exports.isPromise = exports.isObjectWithKeys = exports.isObjectEmpty = exports.isObject = exports.isNotEmptyObject = exports.isMethodDescriptor = exports.isMethod = exports.isMap = exports.isJSONObject = exports.isJSON = void 0;
|
|
9
9
|
// ! String Utilities
|
|
10
10
|
var basics_1 = require("./string/basics");
|
|
11
11
|
Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
|
|
@@ -34,12 +34,12 @@ Object.defineProperty(exports, "replaceAllInString", { enumerable: true, get: fu
|
|
|
34
34
|
Object.defineProperty(exports, "reverseString", { enumerable: true, get: function () { return convert_1.reverseString; } });
|
|
35
35
|
Object.defineProperty(exports, "slugifyString", { enumerable: true, get: function () { return convert_1.slugifyString; } });
|
|
36
36
|
var utilities_1 = require("./string/utilities");
|
|
37
|
+
Object.defineProperty(exports, "countWords", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
38
|
+
Object.defineProperty(exports, "countWordsInString", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
37
39
|
Object.defineProperty(exports, "extractNumbersFromString", { enumerable: true, get: function () { return utilities_1.extractNumbersFromString; } });
|
|
38
40
|
Object.defineProperty(exports, "getLevenshteinDistance", { enumerable: true, get: function () { return utilities_1.getLevenshteinDistance; } });
|
|
39
41
|
Object.defineProperty(exports, "levenshteinDistance", { enumerable: true, get: function () { return utilities_1.getLevenshteinDistance; } });
|
|
40
|
-
Object.defineProperty(exports, "countWords", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
41
42
|
Object.defineProperty(exports, "wordCount", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
42
|
-
Object.defineProperty(exports, "countWordsInString", { enumerable: true, get: function () { return utilities_1.countWords; } });
|
|
43
43
|
// ! Number Utilities
|
|
44
44
|
var basics_2 = require("./number/basics");
|
|
45
45
|
Object.defineProperty(exports, "calculateAverage", { enumerable: true, get: function () { return basics_2.getAverage; } });
|
|
@@ -225,6 +225,7 @@ Object.defineProperty(exports, "flattenObjectDotNotation", { enumerable: true, g
|
|
|
225
225
|
Object.defineProperty(exports, "flattenObjectKeyValue", { enumerable: true, get: function () { return objectify_1.flattenObjectKeyValue; } });
|
|
226
226
|
Object.defineProperty(exports, "mergeAndFlattenObjects", { enumerable: true, get: function () { return objectify_1.mergeAndFlattenObjects; } });
|
|
227
227
|
Object.defineProperty(exports, "mergeObjects", { enumerable: true, get: function () { return objectify_1.mergeObjects; } });
|
|
228
|
+
Object.defineProperty(exports, "parseJsonToObject", { enumerable: true, get: function () { return objectify_1.parseJsonToObject; } });
|
|
228
229
|
var sanitize_1 = require("./object/sanitize");
|
|
229
230
|
Object.defineProperty(exports, "parseObjectValues", { enumerable: true, get: function () { return sanitize_1.parseObjectValues; } });
|
|
230
231
|
Object.defineProperty(exports, "parsePrimitiveData", { enumerable: true, get: function () { return sanitize_1.parseObjectValues; } });
|
|
@@ -247,6 +248,9 @@ Object.defineProperty(exports, "createQueryParams", { enumerable: true, get: fun
|
|
|
247
248
|
Object.defineProperty(exports, "formatQueryParams", { enumerable: true, get: function () { return query_1.generateQueryParams; } });
|
|
248
249
|
Object.defineProperty(exports, "generateQueryParams", { enumerable: true, get: function () { return query_1.generateQueryParams; } });
|
|
249
250
|
Object.defineProperty(exports, "getQueryParams", { enumerable: true, get: function () { return query_1.getQueryParams; } });
|
|
251
|
+
Object.defineProperty(exports, "parseQueryString", { enumerable: true, get: function () { return query_1.parseQueryString; } });
|
|
252
|
+
Object.defineProperty(exports, "queryStringToObject", { enumerable: true, get: function () { return query_1.parseQueryString; } });
|
|
253
|
+
Object.defineProperty(exports, "getQueryStringAsObject", { enumerable: true, get: function () { return query_1.parseQueryString; } });
|
|
250
254
|
Object.defineProperty(exports, "updateQueryParam", { enumerable: true, get: function () { return query_1.updateQueryParam; } });
|
|
251
255
|
var utils_3 = require("./dom/utils");
|
|
252
256
|
Object.defineProperty(exports, "copyToClipboard", { enumerable: true, get: function () { return utils_3.copyToClipboard; } });
|
|
@@ -265,12 +269,16 @@ Object.defineProperty(exports, "convertArrayToString", { enumerable: true, get:
|
|
|
265
269
|
Object.defineProperty(exports, "countInstanceMethods", { enumerable: true, get: function () { return utils_4.countInstanceMethods; } });
|
|
266
270
|
Object.defineProperty(exports, "countStaticMethods", { enumerable: true, get: function () { return utils_4.countStaticMethods; } });
|
|
267
271
|
Object.defineProperty(exports, "debounceAction", { enumerable: true, get: function () { return utils_4.debounceAction; } });
|
|
272
|
+
Object.defineProperty(exports, "deepParsePrimitives", { enumerable: true, get: function () { return utils_4.deepParsePrimitives; } });
|
|
268
273
|
Object.defineProperty(exports, "getClassDetails", { enumerable: true, get: function () { return utils_4.getClassDetails; } });
|
|
269
274
|
Object.defineProperty(exports, "getInstanceMethodNames", { enumerable: true, get: function () { return utils_4.getInstanceMethodNames; } });
|
|
270
275
|
Object.defineProperty(exports, "getInstanceMethodsCount", { enumerable: true, get: function () { return utils_4.countInstanceMethods; } });
|
|
271
276
|
Object.defineProperty(exports, "getStaticMethodNames", { enumerable: true, get: function () { return utils_4.getStaticMethodNames; } });
|
|
272
277
|
Object.defineProperty(exports, "getStaticMethodsCount", { enumerable: true, get: function () { return utils_4.countStaticMethods; } });
|
|
273
278
|
Object.defineProperty(exports, "isDeepEqual", { enumerable: true, get: function () { return utils_4.isDeepEqual; } });
|
|
279
|
+
Object.defineProperty(exports, "parseJSON", { enumerable: true, get: function () { return utils_4.parseJSON; } });
|
|
280
|
+
Object.defineProperty(exports, "parseJsonDeep", { enumerable: true, get: function () { return utils_4.parseJSON; } });
|
|
281
|
+
Object.defineProperty(exports, "parsePrimitivesDeep", { enumerable: true, get: function () { return utils_4.deepParsePrimitives; } });
|
|
274
282
|
Object.defineProperty(exports, "throttleAction", { enumerable: true, get: function () { return utils_4.throttleAction; } });
|
|
275
283
|
// ! Primitive Type Guards
|
|
276
284
|
var primitives_1 = require("./guards/primitives");
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractUpdatedFields = exports.flattenObjectDotNotation = exports.flattenObjectKeyValue = exports.mergeAndFlattenObjects = exports.mergeObjects = void 0;
|
|
3
|
+
exports.parseJsonToObject = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractUpdatedFields = exports.flattenObjectDotNotation = exports.flattenObjectKeyValue = exports.mergeAndFlattenObjects = exports.mergeObjects = void 0;
|
|
4
4
|
const non_primitives_1 = require("../guards/non-primitives");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
+
const sanitize_1 = require("./sanitize");
|
|
6
7
|
/**
|
|
7
8
|
* * Deeply merge two or more objects using `Map`.
|
|
8
9
|
*
|
|
@@ -213,3 +214,25 @@ const extractUpdatedAndNewFields = (baseObject, updatedObject) => {
|
|
|
213
214
|
return { ...updatedFields, ...newFields };
|
|
214
215
|
};
|
|
215
216
|
exports.extractUpdatedAndNewFields = extractUpdatedAndNewFields;
|
|
217
|
+
/**
|
|
218
|
+
* * Safely parses a JSON string into an object.
|
|
219
|
+
*
|
|
220
|
+
* *Optionally converts stringified primitive values inside the object (e.g., `"0"` → `0`, `"true"` → `true`, `"null"` → `null`).*
|
|
221
|
+
*
|
|
222
|
+
* @param value - The JSON string to parse.
|
|
223
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: `true`).
|
|
224
|
+
* @returns A parsed object with primitive conversions, or an empty object on failure or if the root is not a valid object.
|
|
225
|
+
*/
|
|
226
|
+
const parseJsonToObject = (value, parsePrimitives = true) => {
|
|
227
|
+
try {
|
|
228
|
+
const data = JSON.parse(value);
|
|
229
|
+
if (!(0, non_primitives_1.isObject)(data)) {
|
|
230
|
+
return {};
|
|
231
|
+
}
|
|
232
|
+
return parsePrimitives ? (0, sanitize_1.parseObjectValues)(data) : data;
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
return {};
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
exports.parseJsonToObject = parseJsonToObject;
|
|
@@ -105,6 +105,12 @@ function parseObjectValues(object) {
|
|
|
105
105
|
else if (!isNaN(Number(value))) {
|
|
106
106
|
parsedBody[key] = Number(value);
|
|
107
107
|
}
|
|
108
|
+
else if (value === 'undefined') {
|
|
109
|
+
parsedBody[key] = undefined;
|
|
110
|
+
}
|
|
111
|
+
else if (value === 'null') {
|
|
112
|
+
parsedBody[key] = null;
|
|
113
|
+
}
|
|
108
114
|
else {
|
|
109
115
|
parsedBody[key] = value;
|
|
110
116
|
}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.throttleAction = exports.debounceAction = exports.convertArrayToString = exports.isDeepEqual = void 0;
|
|
3
|
+
exports.parseJSON = exports.throttleAction = exports.debounceAction = exports.convertArrayToString = exports.isDeepEqual = void 0;
|
|
4
4
|
exports.getInstanceMethodNames = getInstanceMethodNames;
|
|
5
5
|
exports.getStaticMethodNames = getStaticMethodNames;
|
|
6
6
|
exports.countInstanceMethods = countInstanceMethods;
|
|
7
7
|
exports.countStaticMethods = countStaticMethods;
|
|
8
8
|
exports.getClassDetails = getClassDetails;
|
|
9
|
+
exports.deepParsePrimitives = deepParsePrimitives;
|
|
9
10
|
const basics_1 = require("../array/basics");
|
|
10
11
|
const sort_1 = require("../array/sort");
|
|
11
12
|
const non_primitives_1 = require("../guards/non-primitives");
|
|
13
|
+
const primitives_1 = require("../guards/primitives");
|
|
14
|
+
const specials_1 = require("../guards/specials");
|
|
12
15
|
/**
|
|
13
16
|
* * Deeply compare two values (arrays, objects, or primitive values).
|
|
14
17
|
*
|
|
@@ -172,3 +175,53 @@ function getClassDetails(cls) {
|
|
|
172
175
|
total: instanceNames.length + staticNames.length,
|
|
173
176
|
};
|
|
174
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* * Parses a JSON string and optionally converts stringified primitives inside objects or arrays.
|
|
180
|
+
*
|
|
181
|
+
* @param value - The JSON string to parse.
|
|
182
|
+
* @param parsePrimitives - Whether to convert stringified primitives (default: `true`).
|
|
183
|
+
* @returns The parsed JSON value with optional primitive parsing.
|
|
184
|
+
*/
|
|
185
|
+
const parseJSON = (value, parsePrimitives = true) => {
|
|
186
|
+
try {
|
|
187
|
+
const parsed = JSON.parse(value);
|
|
188
|
+
return parsePrimitives ? deepParsePrimitives(parsed) : parsed;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return {};
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
exports.parseJSON = parseJSON;
|
|
195
|
+
/**
|
|
196
|
+
* Recursively parses primitive values inside objects and arrays.
|
|
197
|
+
*
|
|
198
|
+
* @param input - Any input value to parse recursively.
|
|
199
|
+
* @returns Input with primitives (strings like "true", "123") converted.
|
|
200
|
+
*/
|
|
201
|
+
function deepParsePrimitives(input) {
|
|
202
|
+
if (Array.isArray(input)) {
|
|
203
|
+
return input.map(deepParsePrimitives);
|
|
204
|
+
}
|
|
205
|
+
if ((0, non_primitives_1.isObject)(input)) {
|
|
206
|
+
const result = {};
|
|
207
|
+
for (const [key, value] of Object.entries(input)) {
|
|
208
|
+
result[key] = deepParsePrimitives(value);
|
|
209
|
+
}
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
if ((0, primitives_1.isString)(input)) {
|
|
213
|
+
if (/^(true|false)$/i.test(input)) {
|
|
214
|
+
return input.toLowerCase() === 'true';
|
|
215
|
+
}
|
|
216
|
+
if ((0, specials_1.isNumericString)(input)) {
|
|
217
|
+
return Number(input);
|
|
218
|
+
}
|
|
219
|
+
if (input === 'null') {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
if (input === 'undefined') {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return input;
|
|
227
|
+
}
|
package/dist/dts/dom/query.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { QueryObject } from '../object/types';
|
|
1
|
+
import type { QueryObject, StrictObject } from '../object/types';
|
|
2
2
|
import type { QueryString } from '../string/types';
|
|
3
3
|
/**
|
|
4
4
|
* * Utility to generate query parameters from an object.
|
|
@@ -16,6 +16,9 @@ import type { QueryString } from '../string/types';
|
|
|
16
16
|
export declare const generateQueryParams: <T extends QueryObject>(params?: T) => QueryString;
|
|
17
17
|
/**
|
|
18
18
|
* * Get query params as standard `JavaScript` Object `Record<string, string>`.
|
|
19
|
+
*
|
|
20
|
+
* - **Note:** *Extracts query parameters from the current URL (window.location.search).*
|
|
21
|
+
*
|
|
19
22
|
* @returns Query string as key-value paired object. `Record<string, string>`.
|
|
20
23
|
*/
|
|
21
24
|
export declare function getQueryParams(): Record<string, string>;
|
|
@@ -25,4 +28,16 @@ export declare function getQueryParams(): Record<string, string>;
|
|
|
25
28
|
* @param value Value to updated against the given key.
|
|
26
29
|
*/
|
|
27
30
|
export declare function updateQueryParam(key: string, value: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Parses a query string (with optional `?` prefix) into an object.
|
|
33
|
+
* Supports multiple values for the same key by returning arrays.
|
|
34
|
+
* Optionally parses primitive string values into actual types (e.g., "1" → 1, "true" → true).
|
|
35
|
+
*
|
|
36
|
+
* - **Note:** *This function does **not** access or depend on `current URL` a.k.a `window.location.search`.*
|
|
37
|
+
*
|
|
38
|
+
* @param query - The query string to parse.
|
|
39
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: true).
|
|
40
|
+
* @returns An object where keys are strings and values can be string, array, number, boolean, or null.
|
|
41
|
+
*/
|
|
42
|
+
export declare const parseQueryString: (query: string, parsePrimitives?: boolean) => StrictObject;
|
|
28
43
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/dom/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/dom/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,WAAW,WAChD,CAAC,KACP,WAkCF,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAI1D;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,UACrB,MAAM,gCAEX,YAqBF,CAAC"}
|
package/dist/dts/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { capitalizeString, generateRandomID, trimString, truncateString, } from
|
|
|
2
2
|
export { generateAnagrams } from './string/anagram';
|
|
3
3
|
export { isCamelCase, isEmojiOnly, isKebabCase, isPalindrome, isPascalCase, isSnakeCase, } from './string/guards';
|
|
4
4
|
export { convertStringCase, extractEmails, extractURLs, formatUnitWithPlural as formatNumberWithPluralUnit, formatUnitWithPlural, formatUnitWithPlural as formatWithPlural, maskString, normalizeString, replaceAllInString, reverseString, slugifyString, } from './string/convert';
|
|
5
|
-
export { extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords
|
|
5
|
+
export { countWords, countWords as countWordsInString, extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords as wordCount, } from './string/utilities';
|
|
6
6
|
export { getAverage as calculateAverage, calculateHCF as calculateGCD, calculateHCF, calculateLCM as calculateLCD, calculateLCM, convertToDecimal, getAverage, getAverage as getAverageOfNumbers, getRandomNumber, sumNumbers as getSumOfNumbers, reverseNumber, sumDigits, sumNumbers, sumNumbers as sumOfNumbers, } from './number/basics';
|
|
7
7
|
export { calculatePercentage } from './number/percent';
|
|
8
8
|
export { fibonacciGenerator, fibonacciGenerator as generateFibonacci, getFibonacciSeries as getFibonacci, getFibonacciSeries as getFibonacciNumbers, getFibonacciSeries, getFibonacciSeriesMemo, getFibonacciSeriesMemo as getMemoizedFibonacci, getFibonacciSeriesMemo as getMemoizedFibonacciSeries, getNthFibonacci, } from './number/fibonacci';
|
|
@@ -28,13 +28,13 @@ export { createControlledFormData as convertIntoFormData, createControlledFormDa
|
|
|
28
28
|
export { parseFormData, serializeForm } from './form/transform';
|
|
29
29
|
export { isCustomFile, isCustomFileArray, isFileArray, isFileList, isFileUpload, isOriginFileObj, isValidFormData, } from './form/guards';
|
|
30
30
|
export { cloneObject, countObjectFields } from './object/basics';
|
|
31
|
-
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, } from './object/objectify';
|
|
31
|
+
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, parseJsonToObject, } from './object/objectify';
|
|
32
32
|
export { parseObjectValues, parseObjectValues as parsePrimitiveData, parseObjectValues as parsePrimitives, parseObjectValues as parseStringifiedObjectValues, parseObjectValues as parseStringifiedPrimitives, parseObjectValues as parseStringifiedValues, sanitizeData, } from './object/sanitize';
|
|
33
33
|
export { convertObjectValues, pickFields, pickObjectFieldsByCondition as pickFieldsByCondition, pickFields as pickObjectFields, pickObjectFieldsByCondition, remapFields, remapFields as remapObjectFields, } from './object/convert';
|
|
34
|
-
export { generateQueryParams as createQueryParams, generateQueryParams as formatQueryParams, generateQueryParams, getQueryParams, updateQueryParam, } from './dom/query';
|
|
34
|
+
export { generateQueryParams as createQueryParams, generateQueryParams as formatQueryParams, generateQueryParams, getQueryParams, parseQueryString, parseQueryString as queryStringToObject, parseQueryString as getQueryStringAsObject, updateQueryParam, } from './dom/query';
|
|
35
35
|
export { copyToClipboard, smoothScrollTo, toggleFullScreen } from './dom/utils';
|
|
36
36
|
export { getFromLocalStorage, getFromSessionStorage, removeFromLocalStorage, removeFromSessionStorage, saveToLocalStorage, saveToSessionStorage, } from './dom/storage';
|
|
37
|
-
export { convertArrayToString, countInstanceMethods, countStaticMethods, debounceAction, getClassDetails, getInstanceMethodNames, countInstanceMethods as getInstanceMethodsCount, getStaticMethodNames, countStaticMethods as getStaticMethodsCount, isDeepEqual, throttleAction, } from './utils';
|
|
37
|
+
export { convertArrayToString, countInstanceMethods, countStaticMethods, debounceAction, deepParsePrimitives, getClassDetails, getInstanceMethodNames, countInstanceMethods as getInstanceMethodsCount, getStaticMethodNames, countStaticMethods as getStaticMethodsCount, isDeepEqual, parseJSON, parseJSON as parseJsonDeep, deepParsePrimitives as parsePrimitivesDeep, throttleAction, } from './utils';
|
|
38
38
|
export { isBoolean, isFalsy, isInteger, isNonEmptyString, isNull, isNumber, isPositiveInteger, isPrimitive, isString, isSymbol, isTruthy, isUndefined, } from './guards/primitives';
|
|
39
39
|
export { isReturningPromise as doesReturnPromise, isArray, isArrayOfType, isValidArray as isArrayWithLength, isBigInt, isDate, isEmptyObject, isEmptyObject as isEmptyObjectGuard, isError, isFunction, isJSON, isJSON as isJSONObject, isMap, isMethodDescriptor as isMethod, isMethodDescriptor, isNotEmptyObject, isObject, isEmptyObject as isObjectEmpty, isObjectWithKeys, isPromise, isRegExp, isRegExp as isRegularExpression, isReturningPromise, isSet, isValidArray, isJSON as isValidJSON, isMap as isValidMap, isNotEmptyObject as isValidObject, isSet as isValidSet, } from './guards/non-primitives';
|
|
40
40
|
export { isBase64, isBrowser, isDateString, isEmail, isEmailArray, isEnvironment, isEnvironment as isExpectedNodeENV, isIPAddress, isNode, isEnvironment as isNodeENV, isEnvironment as isNodeEnvironment, isNumericString, isPhoneNumber, isURL, isUUID, isEmail as isValidEmail, isURL as isValidURL, } from './guards/specials';
|
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,cAAc,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EACN,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,oBAAoB,IAAI,0BAA0B,EAClD,oBAAoB,EACpB,oBAAoB,IAAI,gBAAgB,EACxC,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,aAAa,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACN,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,IAAI,mBAAmB,EAC7C,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,4 +54,14 @@ export declare const extractNewFields: <T extends GenericObject, U extends Gener
|
|
|
54
54
|
* @returns An object containing modified fields and new fields separately.
|
|
55
55
|
*/
|
|
56
56
|
export declare const extractUpdatedAndNewFields: <T extends GenericObject, U extends GenericObject>(baseObject: T, updatedObject: FlattenPartial<T> & FlattenPartial<U>) => FlattenPartial<T> & FlattenPartial<U>;
|
|
57
|
+
/**
|
|
58
|
+
* * Safely parses a JSON string into an object.
|
|
59
|
+
*
|
|
60
|
+
* *Optionally converts stringified primitive values inside the object (e.g., `"0"` → `0`, `"true"` → `true`, `"null"` → `null`).*
|
|
61
|
+
*
|
|
62
|
+
* @param value - The JSON string to parse.
|
|
63
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: `true`).
|
|
64
|
+
* @returns A parsed object with primitive conversions, or an empty object on failure or if the root is not a valid object.
|
|
65
|
+
*/
|
|
66
|
+
export declare const parseJsonToObject: (value: string, parsePrimitives?: boolean) => import("./types").StrictObject;
|
|
57
67
|
//# sourceMappingURL=objectify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectify.d.ts","sourceRoot":"","sources":["../../../src/object/objectify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"objectify.d.ts","sourceRoot":"","sources":["../../../src/object/objectify.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAO,cAAc,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;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,aAAa,UACpD,CAAC,KACP,CAmBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,aAAa,UACvD,CAAC,KACP,aAkCF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,cAC/C,CAAC,iBACE,cAAc,CAAC,CAAC,CAAC,KAC9B,cAAc,CAAC,CAAC,CAwBlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC5B,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,aAAa,cAEX,CAAC,iBACE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,KAClD,cAAc,CAAC,CAAC,CAyBlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACtC,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,aAAa,cAEX,CAAC,iBACE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,KAClD,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAwBtC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,UAAW,MAAM,8DAY9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/object/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAEX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EACnD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,cAAc,CAAC,CAAC,CAAC,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EACnD,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AA4FxD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/object/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAEX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EACnD,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,cAAc,CAAC,CAAC,CAAC,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EACnD,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AA4FxD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAgCrE"}
|
|
@@ -80,4 +80,19 @@ export declare function countStaticMethods(cls: Constructor): number;
|
|
|
80
80
|
* @returns An object containing names and counts of instance and static methods.
|
|
81
81
|
*/
|
|
82
82
|
export declare function getClassDetails(cls: Constructor): ClassDetails;
|
|
83
|
+
/**
|
|
84
|
+
* * Parses a JSON string and optionally converts stringified primitives inside objects or arrays.
|
|
85
|
+
*
|
|
86
|
+
* @param value - The JSON string to parse.
|
|
87
|
+
* @param parsePrimitives - Whether to convert stringified primitives (default: `true`).
|
|
88
|
+
* @returns The parsed JSON value with optional primitive parsing.
|
|
89
|
+
*/
|
|
90
|
+
export declare const parseJSON: (value: string, parsePrimitives?: boolean) => unknown;
|
|
91
|
+
/**
|
|
92
|
+
* Recursively parses primitive values inside objects and arrays.
|
|
93
|
+
*
|
|
94
|
+
* @param input - Any input value to parse recursively.
|
|
95
|
+
* @returns Input with primitives (strings like "true", "123") converted.
|
|
96
|
+
*/
|
|
97
|
+
export declare function deepParsePrimitives(input: unknown): unknown;
|
|
83
98
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACX,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,UAAU,CAAC;AAElB;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAG,OA6B3C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAC9B,CAAC,EAAE,cACC,MAAM,KACf,MAKF,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,YAAY,YAC1C,CAAC,qBAET,SAAS,CAAC,CAAC,CAYb,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,YAAY,YAC1C,CAAC,qBAET,WAAW,CAAC,CAAC,CAWf,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE,CAcjE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE,CAQ/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CAW9D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,MAAM,gCAA2B,OAQjE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkC3D"}
|
package/dist/esm/dom/query.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { flattenObjectKeyValue } from '../object/objectify';
|
|
2
|
+
import { parseObjectValues } from '../object/sanitize';
|
|
3
|
+
import { deepParsePrimitives } from '../utils';
|
|
2
4
|
/**
|
|
3
5
|
* * Utility to generate query parameters from an object.
|
|
4
6
|
*
|
|
@@ -32,6 +34,9 @@ export const generateQueryParams = (params = {}) => {
|
|
|
32
34
|
};
|
|
33
35
|
/**
|
|
34
36
|
* * Get query params as standard `JavaScript` Object `Record<string, string>`.
|
|
37
|
+
*
|
|
38
|
+
* - **Note:** *Extracts query parameters from the current URL (window.location.search).*
|
|
39
|
+
*
|
|
35
40
|
* @returns Query string as key-value paired object. `Record<string, string>`.
|
|
36
41
|
*/
|
|
37
42
|
export function getQueryParams() {
|
|
@@ -47,3 +52,29 @@ export function updateQueryParam(key, value) {
|
|
|
47
52
|
url.searchParams.set(key, value);
|
|
48
53
|
window.history.replaceState({}, '', url.toString());
|
|
49
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Parses a query string (with optional `?` prefix) into an object.
|
|
57
|
+
* Supports multiple values for the same key by returning arrays.
|
|
58
|
+
* Optionally parses primitive string values into actual types (e.g., "1" → 1, "true" → true).
|
|
59
|
+
*
|
|
60
|
+
* - **Note:** *This function does **not** access or depend on `current URL` a.k.a `window.location.search`.*
|
|
61
|
+
*
|
|
62
|
+
* @param query - The query string to parse.
|
|
63
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: true).
|
|
64
|
+
* @returns An object where keys are strings and values can be string, array, number, boolean, or null.
|
|
65
|
+
*/
|
|
66
|
+
export const parseQueryString = (query, parsePrimitives = true) => {
|
|
67
|
+
const params = new URLSearchParams(query.startsWith('?') ? query.slice(1) : query);
|
|
68
|
+
const entries = {};
|
|
69
|
+
for (const [key, value] of params.entries()) {
|
|
70
|
+
if (key in entries) {
|
|
71
|
+
const current = entries[key];
|
|
72
|
+
const array = Array.isArray(current) ? [...current, value] : [current, value];
|
|
73
|
+
entries[key] = parsePrimitives ? deepParsePrimitives(array) : array;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
entries[key] = value;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return parsePrimitives ? parseObjectValues(entries) : entries;
|
|
80
|
+
};
|
package/dist/esm/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { capitalizeString, generateRandomID, trimString, truncateString, } from
|
|
|
3
3
|
export { generateAnagrams } from './string/anagram';
|
|
4
4
|
export { isCamelCase, isEmojiOnly, isKebabCase, isPalindrome, isPascalCase, isSnakeCase, } from './string/guards';
|
|
5
5
|
export { convertStringCase, extractEmails, extractURLs, formatUnitWithPlural as formatNumberWithPluralUnit, formatUnitWithPlural, formatUnitWithPlural as formatWithPlural, maskString, normalizeString, replaceAllInString, reverseString, slugifyString, } from './string/convert';
|
|
6
|
-
export { extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords
|
|
6
|
+
export { countWords, countWords as countWordsInString, extractNumbersFromString, getLevenshteinDistance, getLevenshteinDistance as levenshteinDistance, countWords as wordCount, } from './string/utilities';
|
|
7
7
|
// ! Number Utilities
|
|
8
8
|
export { getAverage as calculateAverage, calculateHCF as calculateGCD, calculateHCF, calculateLCM as calculateLCD, calculateLCM, convertToDecimal, getAverage, getAverage as getAverageOfNumbers, getRandomNumber, sumNumbers as getSumOfNumbers, reverseNumber, sumDigits, sumNumbers, sumNumbers as sumOfNumbers, } from './number/basics';
|
|
9
9
|
export { calculatePercentage } from './number/percent';
|
|
@@ -35,15 +35,15 @@ export { parseFormData, serializeForm } from './form/transform';
|
|
|
35
35
|
export { isCustomFile, isCustomFileArray, isFileArray, isFileList, isFileUpload, isOriginFileObj, isValidFormData, } from './form/guards';
|
|
36
36
|
// ! Object Utilities
|
|
37
37
|
export { cloneObject, countObjectFields } from './object/basics';
|
|
38
|
-
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, } from './object/objectify';
|
|
38
|
+
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, parseJsonToObject, } from './object/objectify';
|
|
39
39
|
export { parseObjectValues, parseObjectValues as parsePrimitiveData, parseObjectValues as parsePrimitives, parseObjectValues as parseStringifiedObjectValues, parseObjectValues as parseStringifiedPrimitives, parseObjectValues as parseStringifiedValues, sanitizeData, } from './object/sanitize';
|
|
40
40
|
export { convertObjectValues, pickFields, pickObjectFieldsByCondition as pickFieldsByCondition, pickFields as pickObjectFields, pickObjectFieldsByCondition, remapFields, remapFields as remapObjectFields, } from './object/convert';
|
|
41
41
|
// ! DOM Utilities
|
|
42
|
-
export { generateQueryParams as createQueryParams, generateQueryParams as formatQueryParams, generateQueryParams, getQueryParams, updateQueryParam, } from './dom/query';
|
|
42
|
+
export { generateQueryParams as createQueryParams, generateQueryParams as formatQueryParams, generateQueryParams, getQueryParams, parseQueryString, parseQueryString as queryStringToObject, parseQueryString as getQueryStringAsObject, updateQueryParam, } from './dom/query';
|
|
43
43
|
export { copyToClipboard, smoothScrollTo, toggleFullScreen } from './dom/utils';
|
|
44
44
|
export { getFromLocalStorage, getFromSessionStorage, removeFromLocalStorage, removeFromSessionStorage, saveToLocalStorage, saveToSessionStorage, } from './dom/storage';
|
|
45
45
|
// ! Other Utilities
|
|
46
|
-
export { convertArrayToString, countInstanceMethods, countStaticMethods, debounceAction, getClassDetails, getInstanceMethodNames, countInstanceMethods as getInstanceMethodsCount, getStaticMethodNames, countStaticMethods as getStaticMethodsCount, isDeepEqual, throttleAction, } from './utils';
|
|
46
|
+
export { convertArrayToString, countInstanceMethods, countStaticMethods, debounceAction, deepParsePrimitives, getClassDetails, getInstanceMethodNames, countInstanceMethods as getInstanceMethodsCount, getStaticMethodNames, countStaticMethods as getStaticMethodsCount, isDeepEqual, parseJSON, parseJSON as parseJsonDeep, deepParsePrimitives as parsePrimitivesDeep, throttleAction, } from './utils';
|
|
47
47
|
// ! Primitive Type Guards
|
|
48
48
|
export { isBoolean, isFalsy, isInteger, isNonEmptyString, isNull, isNumber, isPositiveInteger, isPrimitive, isString, isSymbol, isTruthy, isUndefined, } from './guards/primitives';
|
|
49
49
|
// ! Non-Primitive Type Guards
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { isEmptyObject, isNotEmptyObject } from '../guards/non-primitives';
|
|
1
|
+
import { isEmptyObject, isNotEmptyObject, isObject, } from '../guards/non-primitives';
|
|
2
2
|
import { isDeepEqual } from '../utils';
|
|
3
|
+
import { parseObjectValues } from './sanitize';
|
|
3
4
|
/**
|
|
4
5
|
* * Deeply merge two or more objects using `Map`.
|
|
5
6
|
*
|
|
@@ -203,3 +204,24 @@ export const extractUpdatedAndNewFields = (baseObject, updatedObject) => {
|
|
|
203
204
|
}
|
|
204
205
|
return { ...updatedFields, ...newFields };
|
|
205
206
|
};
|
|
207
|
+
/**
|
|
208
|
+
* * Safely parses a JSON string into an object.
|
|
209
|
+
*
|
|
210
|
+
* *Optionally converts stringified primitive values inside the object (e.g., `"0"` → `0`, `"true"` → `true`, `"null"` → `null`).*
|
|
211
|
+
*
|
|
212
|
+
* @param value - The JSON string to parse.
|
|
213
|
+
* @param parsePrimitives - Whether to convert stringified primitives into real values (default: `true`).
|
|
214
|
+
* @returns A parsed object with primitive conversions, or an empty object on failure or if the root is not a valid object.
|
|
215
|
+
*/
|
|
216
|
+
export const parseJsonToObject = (value, parsePrimitives = true) => {
|
|
217
|
+
try {
|
|
218
|
+
const data = JSON.parse(value);
|
|
219
|
+
if (!isObject(data)) {
|
|
220
|
+
return {};
|
|
221
|
+
}
|
|
222
|
+
return parsePrimitives ? parseObjectValues(data) : data;
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return {};
|
|
226
|
+
}
|
|
227
|
+
};
|
|
@@ -101,6 +101,12 @@ export function parseObjectValues(object) {
|
|
|
101
101
|
else if (!isNaN(Number(value))) {
|
|
102
102
|
parsedBody[key] = Number(value);
|
|
103
103
|
}
|
|
104
|
+
else if (value === 'undefined') {
|
|
105
|
+
parsedBody[key] = undefined;
|
|
106
|
+
}
|
|
107
|
+
else if (value === 'null') {
|
|
108
|
+
parsedBody[key] = null;
|
|
109
|
+
}
|
|
104
110
|
else {
|
|
105
111
|
parsedBody[key] = value;
|
|
106
112
|
}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isInvalidOrEmptyArray } from '../array/basics';
|
|
2
2
|
import { sortAnArray } from '../array/sort';
|
|
3
|
-
import { isMethodDescriptor } from '../guards/non-primitives';
|
|
3
|
+
import { isMethodDescriptor, isObject } from '../guards/non-primitives';
|
|
4
|
+
import { isString } from '../guards/primitives';
|
|
5
|
+
import { isNumericString } from '../guards/specials';
|
|
4
6
|
/**
|
|
5
7
|
* * Deeply compare two values (arrays, objects, or primitive values).
|
|
6
8
|
*
|
|
@@ -160,3 +162,52 @@ export function getClassDetails(cls) {
|
|
|
160
162
|
total: instanceNames.length + staticNames.length,
|
|
161
163
|
};
|
|
162
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* * Parses a JSON string and optionally converts stringified primitives inside objects or arrays.
|
|
167
|
+
*
|
|
168
|
+
* @param value - The JSON string to parse.
|
|
169
|
+
* @param parsePrimitives - Whether to convert stringified primitives (default: `true`).
|
|
170
|
+
* @returns The parsed JSON value with optional primitive parsing.
|
|
171
|
+
*/
|
|
172
|
+
export const parseJSON = (value, parsePrimitives = true) => {
|
|
173
|
+
try {
|
|
174
|
+
const parsed = JSON.parse(value);
|
|
175
|
+
return parsePrimitives ? deepParsePrimitives(parsed) : parsed;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return {};
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* Recursively parses primitive values inside objects and arrays.
|
|
183
|
+
*
|
|
184
|
+
* @param input - Any input value to parse recursively.
|
|
185
|
+
* @returns Input with primitives (strings like "true", "123") converted.
|
|
186
|
+
*/
|
|
187
|
+
export function deepParsePrimitives(input) {
|
|
188
|
+
if (Array.isArray(input)) {
|
|
189
|
+
return input.map(deepParsePrimitives);
|
|
190
|
+
}
|
|
191
|
+
if (isObject(input)) {
|
|
192
|
+
const result = {};
|
|
193
|
+
for (const [key, value] of Object.entries(input)) {
|
|
194
|
+
result[key] = deepParsePrimitives(value);
|
|
195
|
+
}
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
if (isString(input)) {
|
|
199
|
+
if (/^(true|false)$/i.test(input)) {
|
|
200
|
+
return input.toLowerCase() === 'true';
|
|
201
|
+
}
|
|
202
|
+
if (isNumericString(input)) {
|
|
203
|
+
return Number(input);
|
|
204
|
+
}
|
|
205
|
+
if (input === 'null') {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
if (input === 'undefined') {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return input;
|
|
213
|
+
}
|
package/package.json
CHANGED