nhb-toolbox 4.20.50 → 4.20.54
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/CHANGELOG.md +10 -0
- package/dist/cjs/date/plugins/greetingPlugin.js +11 -0
- package/dist/cjs/index.js +5 -3
- package/dist/cjs/object/basics.js +5 -0
- package/dist/cjs/object/convert.js +1 -1
- package/dist/dts/date/Chronos.d.ts +1 -1
- package/dist/dts/date/plugins/greetingPlugin.d.ts +18 -0
- package/dist/dts/guards/non-primitives.d.ts +3 -3
- package/dist/dts/index.d.ts +1 -1
- package/dist/dts/object/basics.d.ts +11 -0
- package/dist/dts/object/types.d.ts +1 -0
- package/dist/dts/utils/types.d.ts +2 -1
- package/dist/esm/date/plugins/greetingPlugin.js +7 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/object/basics.js +4 -0
- package/dist/esm/object/convert.js +1 -1
- package/package.json +17 -9
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ All notable changes to the package will be documented here.
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [4.20.54] - 2025-10-02
|
|
10
|
+
|
|
11
|
+
- **Added** new utility `extractObjectKeys` to _extract keys of an object_ with _proper typing_.
|
|
12
|
+
- **Updated** `isObjectWithKeys`: _now properly typed_.
|
|
13
|
+
|
|
14
|
+
## [4.20.52] - 2025-09-26
|
|
15
|
+
|
|
16
|
+
- **Added** new `Chronos` _plugin_ `greetingPlugin` for accessing `getGreeting` method in `Chronos` instances.
|
|
17
|
+
- **Fixed** some _docs and internal type related issues_ in `convertObjectValues` utility.
|
|
18
|
+
|
|
9
19
|
## [4.20.50] - 2025-09-25
|
|
10
20
|
|
|
11
21
|
- **Fixed** _return type_ of `convertObjectValues` utility to correctly reflect the _transformed object structure_ and `keys` option is now _more strict_: **only accepts keys which values are string and/or number** and **the array cannot be left empty**.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.greetingPlugin = void 0;
|
|
4
|
+
const greet_1 = require("../greet");
|
|
5
|
+
const greetingPlugin = (ChronosClass) => {
|
|
6
|
+
ChronosClass.prototype.getGreeting = function (configs) {
|
|
7
|
+
const currentTime = this.formatStrict('HH:mm');
|
|
8
|
+
return (0, greet_1.getGreeting)({ currentTime, ...configs });
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.greetingPlugin = greetingPlugin;
|
package/dist/cjs/index.js
CHANGED
|
@@ -4,9 +4,9 @@ exports.sumDigits = exports.roundToDecimal = exports.roundNumber = exports.rever
|
|
|
4
4
|
exports.convertNumberToCurrency = exports.clampNumber = exports.cardinalToOrdinal = exports.isPrimeNumber = exports.isPrime = exports.getPrimeNumbers = exports.findPrimeNumbers = exports.wordToNumber = exports.wordsToNumber = exports.toRomanNumeral = exports.toRoman = exports.numericToRoman = exports.numberToWordsOrdinal = exports.numberToWords = exports.numberToRoman = exports.integerToRoman = exports.convertWordToNumber = exports.convertWordsToNumber = exports.convertToRomanNumerals = exports.convertNumberToWordsOrdinal = exports.convertNumberToWords = exports.cardinalWordsToOrdinal = exports.isPerfectSquare = exports.isPartOfFibonacciSeries = exports.isPartOfFibonacci = exports.isOddNumber = exports.isOdd = exports.isNumberInvalid = exports.isMultiple = exports.isInvalidNumber = exports.isFibonacci = exports.isEvenNumber = exports.isEven = exports.areNumbersInvalid = exports.areInvalidNumbers = exports.getNthFibonacci = exports.getMemoizedFibonacciSeries = exports.getMemoizedFibonacci = exports.getFibonacciSeriesMemo = exports.getFibonacciSeries = exports.getFibonacciNumbers = exports.getFibonacci = exports.generateFibonacci = exports.fibonacciGenerator = exports.calculatePercentage = exports.UnitConverter = exports.Unit = exports.Currency = exports.sumOfNumbers = exports.sumNumbers = void 0;
|
|
5
5
|
exports.chronus = exports.chronosts = exports.chronosjs = exports.chronos = exports.INTERNALS = exports.Chronus = exports.Chronos = exports.isValidUTCOffSet = exports.isValidUTC = exports.isValidTimeString = exports.isValidTime = exports.isLeapYear = exports.isDateLike = exports.greet = exports.getGreeting = exports.generateGreeting = exports.extractSolidColorValues = exports.extractAlphaColorValues = exports.Colour = 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.roundToNearestInterval = exports.roundToNearest = exports.roundNumberToNearestInterval = exports.numberToOrdinal = exports.normalizeNumber = exports.getRandomFloat = exports.getRandomDecimal = exports.getOrdinalNumber = exports.getOrdinal = exports.formatCurrency = exports.convertToOrdinal = exports.convertNumberToOrdinal = void 0;
|
|
6
6
|
exports.rotateArray = exports.removeDuplicatesFromArray = exports.removeDuplicates = exports.moveArrayElement = exports.groupArrayByProperty = exports.getMissingElements = exports.getDuplicatesFromArray = exports.getDuplicates = exports.findMissingElements = exports.extractMissingElements = exports.extractDuplicatesFromArray = exports.extractDuplicates = exports.createOptionsArray = exports.sortAnArray = exports.Finder = exports.totalDeltaByField = exports.sumFieldDifference = exports.sumByField = exports.groupAndSumByField = exports.groupAndAvgByField = exports.groupAndAverageByField = exports.avgByField = exports.averageByField = exports.shuffleArray = exports.isValidEmptyArray = exports.isInvalidOrEmptyArray = exports.getLastArrayElement = exports.flattenArray = exports.filterArrayOfObjects = exports.minutesToUTCOffset = exports.getTotalMinutesFromUTC = exports.getTotalMinutesFromTime = exports.getTotalMinutes = exports.getTimeStringFromUTC = exports.getTimeFromMinutes = exports.getMinutesFromUTC = exports.getHourMinutesFromMinutes = exports.getCurrentTime = exports.getCurrentDateTime = exports.formatUTCOffset = exports.extractTotalMinutesFromTime = exports.extractTimeStringFromUTC = exports.extractTimeFromUTC = exports.extractMinutesFromUTC = exports.extractHourMinute = exports.convertMinutesToUTCOffset = exports.convertMinutesToTime = exports.convertMinutesToHourMinutes = exports.chronusts = exports.chronusjs = void 0;
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
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.httpStatus = exports.HttpStatus = 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 = exports.isFunction = exports.isError = void 0;
|
|
7
|
+
exports.generateQueryParams = exports.formatQueryParams = exports.createQueryParams = exports.removeObjectFields = exports.removeFields = exports.remapObjectFields = exports.remapFields = exports.pickObjectFieldsByCondition = exports.pickObjectFields = exports.pickFieldsByCondition = exports.pickFields = exports.omitObjectFields = exports.omitFields = exports.deleteObjectFields = exports.deleteFields = exports.convertObjectValues = exports.sanitizeData = exports.parseStringifiedObjectValues = exports.parseObjectValues = exports.parseJsonToObject = exports.mergeObjects = exports.mergeAndFlattenObjects = exports.flattenObjectKeyValue = exports.flattenObjectDotNotation = exports.extractUpdatedFields = exports.extractUpdatedAndNewFields = exports.extractNewFields = exports.extractKeys = exports.extractObjectKeys = exports.countObjectFields = exports.cloneObject = exports.isValidFormData = exports.isOriginFileObj = exports.isFileUpload = exports.isFileOrBlob = 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.splitArrayByProperty = exports.splitArray = void 0;
|
|
8
|
+
exports.isDate = 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.isNormalPrimitive = exports.isNonEmptyString = exports.isInteger = exports.isFalsy = exports.isBoolean = exports.isBigInt = exports.Paginator = exports.throttleAction = exports.parsePrimitivesDeep = exports.parseJsonDeep = exports.parseJSON = exports.joinArrayElements = 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.queryStringToObject = exports.parseQueryString = exports.getQueryStringAsObject = exports.getQueryParams = void 0;
|
|
9
|
+
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.httpStatus = exports.HttpStatus = 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 = exports.isFunction = exports.isError = exports.isEmptyObjectGuard = exports.isEmptyObject = void 0;
|
|
10
10
|
var basics_1 = require("./string/basics");
|
|
11
11
|
Object.defineProperty(exports, "capitalizeString", { enumerable: true, get: function () { return basics_1.capitalizeString; } });
|
|
12
12
|
Object.defineProperty(exports, "generateRandomID", { enumerable: true, get: function () { return basics_1.generateRandomID; } });
|
|
@@ -267,6 +267,8 @@ Object.defineProperty(exports, "isValidFormData", { enumerable: true, get: funct
|
|
|
267
267
|
var basics_4 = require("./object/basics");
|
|
268
268
|
Object.defineProperty(exports, "cloneObject", { enumerable: true, get: function () { return basics_4.cloneObject; } });
|
|
269
269
|
Object.defineProperty(exports, "countObjectFields", { enumerable: true, get: function () { return basics_4.countObjectFields; } });
|
|
270
|
+
Object.defineProperty(exports, "extractObjectKeys", { enumerable: true, get: function () { return basics_4.extractObjectKeys; } });
|
|
271
|
+
Object.defineProperty(exports, "extractKeys", { enumerable: true, get: function () { return basics_4.extractObjectKeys; } });
|
|
270
272
|
var objectify_1 = require("./object/objectify");
|
|
271
273
|
Object.defineProperty(exports, "extractNewFields", { enumerable: true, get: function () { return objectify_1.extractNewFields; } });
|
|
272
274
|
Object.defineProperty(exports, "extractUpdatedAndNewFields", { enumerable: true, get: function () { return objectify_1.extractUpdatedAndNewFields; } });
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.countObjectFields = exports.cloneObject = void 0;
|
|
4
|
+
exports.extractObjectKeys = extractObjectKeys;
|
|
5
|
+
const non_primitives_1 = require("../guards/non-primitives");
|
|
4
6
|
const cloneObject = (obj) => {
|
|
5
7
|
return JSON.parse(JSON.stringify(obj));
|
|
6
8
|
};
|
|
@@ -11,3 +13,6 @@ const countObjectFields = (obj) => {
|
|
|
11
13
|
return 0;
|
|
12
14
|
};
|
|
13
15
|
exports.countObjectFields = countObjectFields;
|
|
16
|
+
function extractObjectKeys(obj) {
|
|
17
|
+
return (0, non_primitives_1.isNotEmptyObject)(obj) ? Object.keys(obj) : [];
|
|
18
|
+
}
|
|
@@ -181,7 +181,7 @@ export declare class Chronos {
|
|
|
181
181
|
* @param locales A locale string, array of locale strings, Intl.Locale object, or array of Intl.Locale objects that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.
|
|
182
182
|
* @param options An object that contains one or more properties that specify comparison options.
|
|
183
183
|
*/
|
|
184
|
-
toLocaleString(locale?: LocaleCode | Intl.Locale |
|
|
184
|
+
toLocaleString(locale?: LocaleCode | Intl.Locale | Array<LocaleCode | Intl.Locale>, options?: Intl.DateTimeFormatOptions): string;
|
|
185
185
|
/** @instance Returns the time value in milliseconds since midnight, January 1, 1970 UTC. */
|
|
186
186
|
getTimeStamp(): number;
|
|
187
187
|
/**
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GreetingConfigs } from '../types';
|
|
2
|
+
type MainChronos = typeof import('../Chronos').Chronos;
|
|
3
|
+
declare module '../Chronos' {
|
|
4
|
+
interface Chronos {
|
|
5
|
+
/**
|
|
6
|
+
* @instance Returns a greeting message based on current instance of `Chronos` time or provided time in the `configs`.
|
|
7
|
+
*
|
|
8
|
+
* @remarks This method internally uses {@link https://toolbox.nazmul-nhb.dev/docs/utilities/date/getGreeting getGreeting} function.
|
|
9
|
+
*
|
|
10
|
+
* @param configs - Configuration options for greeting times and messages.
|
|
11
|
+
* @returns The appropriate greeting message.
|
|
12
|
+
*/
|
|
13
|
+
getGreeting(configs?: GreetingConfigs): string;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** * Plugin to inject `getGreeting` method */
|
|
17
|
+
export declare const greetingPlugin: (ChronosClass: MainChronos) => void;
|
|
18
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GenericObject } from '../object/types';
|
|
2
|
-
import type { AsyncFunction, GenericFn } from '../types/index';
|
|
2
|
+
import type { AsyncFunction, GenericFn, ValidArray } from '../types/index';
|
|
3
3
|
/**
|
|
4
4
|
* * Type guard to check if a value is an array.
|
|
5
5
|
* @param value - The value to check.
|
|
@@ -27,10 +27,10 @@ export declare function isNotEmptyObject(value: unknown): value is GenericObject
|
|
|
27
27
|
/**
|
|
28
28
|
* * Type guard to check if a value is an object with specific keys.
|
|
29
29
|
* @param value - The value to check.
|
|
30
|
-
* @param keys - The
|
|
30
|
+
* @param keys - The list of keys the object should contain.
|
|
31
31
|
* @returns `true` if the value is an object with the specified keys, otherwise `false`.
|
|
32
32
|
*/
|
|
33
|
-
export declare function isObjectWithKeys<
|
|
33
|
+
export declare function isObjectWithKeys<Key extends string>(value: unknown, keys: ValidArray<Key>): value is Record<Key, unknown>;
|
|
34
34
|
/**
|
|
35
35
|
* * Type guard to check if a value is an empty object.
|
|
36
36
|
* @param value - The value to check.
|
package/dist/dts/index.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export { naturalSort as compareNaturally, naturalSort as compareSorter, naturalS
|
|
|
51
51
|
export { createControlledFormData as convertIntoFormData, createControlledFormData, createControlledFormData as createFormData, } from './form/convert';
|
|
52
52
|
export { parseFormData, serializeForm } from './form/transform';
|
|
53
53
|
export { isCustomFile, isCustomFileArray, isFileArray, isFileList, isFileOrBlob, isFileUpload, isOriginFileObj, isValidFormData, } from './form/guards';
|
|
54
|
-
export { cloneObject, countObjectFields } from './object/basics';
|
|
54
|
+
export { cloneObject, countObjectFields, extractObjectKeys, extractObjectKeys as extractKeys, } from './object/basics';
|
|
55
55
|
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, parseJsonToObject, } from './object/objectify';
|
|
56
56
|
export { parseObjectValues, parseObjectValues as parseStringifiedObjectValues, sanitizeData, } from './object/sanitize';
|
|
57
57
|
export { convertObjectValues, deleteFields, deleteFields as deleteObjectFields, deleteFields as omitFields, deleteFields as omitObjectFields, pickFields, pickObjectFieldsByCondition as pickFieldsByCondition, pickFields as pickObjectFields, pickObjectFieldsByCondition, remapFields, remapFields as remapObjectFields, deleteFields as removeFields, deleteFields as removeObjectFields, } from './object/convert';
|
|
@@ -13,3 +13,14 @@ export declare const cloneObject: <T extends GenericObject>(obj: T) => T;
|
|
|
13
13
|
* @returns Number of fields in the object.
|
|
14
14
|
*/
|
|
15
15
|
export declare const countObjectFields: <T extends GenericObject>(obj: T) => number;
|
|
16
|
+
/**
|
|
17
|
+
* * Extracts the keys of an object with proper typing.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* - Internally uses `Object.keys(...)`.
|
|
21
|
+
* - Returns an empty array (`[]`) for an empty object or a non-object value.
|
|
22
|
+
*
|
|
23
|
+
* @param obj The object from which to extract the keys.
|
|
24
|
+
* @returns An array of keys from the specified object.
|
|
25
|
+
*/
|
|
26
|
+
export declare function extractObjectKeys<T extends GenericObject>(obj: T): Array<keyof T>;
|
|
@@ -107,6 +107,7 @@ export interface SanitizeOptions<T> {
|
|
|
107
107
|
*/
|
|
108
108
|
requiredKeys?: '*' | DotNotationKey<T>[];
|
|
109
109
|
}
|
|
110
|
+
/** Options for `convertObjectValues` utility */
|
|
110
111
|
export interface ConvertObjectOptions<T extends GenericObject, Key extends NumericDotKey<T>, C extends 'string' | 'number'> {
|
|
111
112
|
/** Array of keys (properties) to convert to `number` or `string` */
|
|
112
113
|
keys: ValidArray<Key>;
|
|
@@ -283,9 +283,10 @@ export type OneOf<T, U> = (T & Without<U, T>) | (U & Without<T, U>);
|
|
|
283
283
|
* @template T - The type to test.
|
|
284
284
|
*
|
|
285
285
|
* @example
|
|
286
|
-
* type A = IsStrictObject<{}>; //
|
|
286
|
+
* type A = IsStrictObject<{}>; // false
|
|
287
287
|
* type B = IsStrictObject<() => void>; // false
|
|
288
288
|
* type C = IsStrictObject<string>; // false
|
|
289
|
+
* type D = IsStrictObject<{name: string}>; // true
|
|
289
290
|
*/
|
|
290
291
|
export type IsStrictObject<T> = T extends object ? T extends AdvancedTypes ? false : T extends Array<unknown> ? false : true : false;
|
|
291
292
|
/**
|
package/dist/esm/index.js
CHANGED
|
@@ -36,7 +36,7 @@ export { naturalSort as compareNaturally, naturalSort as compareSorter, naturalS
|
|
|
36
36
|
export { createControlledFormData as convertIntoFormData, createControlledFormData, createControlledFormData as createFormData, } from './form/convert.js';
|
|
37
37
|
export { parseFormData, serializeForm } from './form/transform.js';
|
|
38
38
|
export { isCustomFile, isCustomFileArray, isFileArray, isFileList, isFileOrBlob, isFileUpload, isOriginFileObj, isValidFormData, } from './form/guards.js';
|
|
39
|
-
export { cloneObject, countObjectFields } from './object/basics.js';
|
|
39
|
+
export { cloneObject, countObjectFields, extractObjectKeys, extractObjectKeys as extractKeys, } from './object/basics.js';
|
|
40
40
|
export { extractNewFields, extractUpdatedAndNewFields, extractUpdatedFields, flattenObjectDotNotation, flattenObjectKeyValue, mergeAndFlattenObjects, mergeObjects, parseJsonToObject, } from './object/objectify.js';
|
|
41
41
|
export { parseObjectValues, parseObjectValues as parseStringifiedObjectValues, sanitizeData, } from './object/sanitize.js';
|
|
42
42
|
export { convertObjectValues, deleteFields, deleteFields as deleteObjectFields, deleteFields as omitFields, deleteFields as omitObjectFields, pickFields, pickObjectFieldsByCondition as pickFieldsByCondition, pickFields as pickObjectFields, pickObjectFieldsByCondition, remapFields, remapFields as remapObjectFields, deleteFields as removeFields, deleteFields as removeObjectFields, } from './object/convert.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isNotEmptyObject } from '../guards/non-primitives.js';
|
|
1
2
|
export const cloneObject = (obj) => {
|
|
2
3
|
return JSON.parse(JSON.stringify(obj));
|
|
3
4
|
};
|
|
@@ -6,3 +7,6 @@ export const countObjectFields = (obj) => {
|
|
|
6
7
|
return Object.keys(obj)?.length;
|
|
7
8
|
return 0;
|
|
8
9
|
};
|
|
10
|
+
export function extractObjectKeys(obj) {
|
|
11
|
+
return isNotEmptyObject(obj) ? Object.keys(obj) : [];
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nhb-toolbox",
|
|
3
|
-
"version": "4.20.
|
|
3
|
+
"version": "4.20.54",
|
|
4
4
|
"description": "A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -40,21 +40,21 @@
|
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@eslint/js": "^9.36.0",
|
|
42
42
|
"@types/jest": "^30.0.0",
|
|
43
|
-
"@types/node": "^24.
|
|
44
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
45
|
-
"@typescript-eslint/parser": "^8.
|
|
43
|
+
"@types/node": "^24.6.1",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^8.45.0",
|
|
45
|
+
"@typescript-eslint/parser": "^8.45.0",
|
|
46
46
|
"eslint": "^9.36.0",
|
|
47
47
|
"eslint-config-prettier": "^10.1.8",
|
|
48
48
|
"eslint-plugin-prettier": "^5.5.4",
|
|
49
49
|
"globals": "^16.4.0",
|
|
50
50
|
"husky": "^9.1.7",
|
|
51
|
-
"jest": "^30.
|
|
52
|
-
"lint-staged": "^16.2.
|
|
53
|
-
"nhb-scripts": "^1.8.
|
|
51
|
+
"jest": "^30.2.0",
|
|
52
|
+
"lint-staged": "^16.2.3",
|
|
53
|
+
"nhb-scripts": "^1.8.81",
|
|
54
54
|
"prettier": "^3.6.2",
|
|
55
55
|
"ts-jest": "^29.4.4",
|
|
56
|
-
"typescript": "^5.9.
|
|
57
|
-
"typescript-eslint": "^8.
|
|
56
|
+
"typescript": "^5.9.3",
|
|
57
|
+
"typescript-eslint": "^8.45.0"
|
|
58
58
|
},
|
|
59
59
|
"keywords": [
|
|
60
60
|
"toolbox",
|
|
@@ -187,6 +187,11 @@
|
|
|
187
187
|
"import": "./dist/esm/date/plugins/fromNowPlugin.js",
|
|
188
188
|
"require": "./dist/cjs/date/plugins/fromNowPlugin.js"
|
|
189
189
|
},
|
|
190
|
+
"./plugins/greetingPlugin": {
|
|
191
|
+
"types": "./dist/dts/date/plugins/greetingPlugin.d.ts",
|
|
192
|
+
"import": "./dist/esm/date/plugins/greetingPlugin.js",
|
|
193
|
+
"require": "./dist/cjs/date/plugins/greetingPlugin.js"
|
|
194
|
+
},
|
|
190
195
|
"./plugins/palindromePlugin": {
|
|
191
196
|
"types": "./dist/dts/date/plugins/palindromePlugin.d.ts",
|
|
192
197
|
"import": "./dist/esm/date/plugins/palindromePlugin.js",
|
|
@@ -269,6 +274,9 @@
|
|
|
269
274
|
"plugins/fromNowPlugin": [
|
|
270
275
|
"dist/dts/date/plugins/fromNowPlugin.d.ts"
|
|
271
276
|
],
|
|
277
|
+
"plugins/greetingPlugin": [
|
|
278
|
+
"dist/dts/date/plugins/greetingPlugin.d.ts"
|
|
279
|
+
],
|
|
272
280
|
"plugins/palindromePlugin": [
|
|
273
281
|
"dist/dts/date/plugins/palindromePlugin.d.ts"
|
|
274
282
|
],
|