@digicroz/js-kit 1.0.1 → 1.0.4
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/enum/index.cjs +17 -0
- package/dist/enum/index.cjs.map +1 -0
- package/dist/enum/index.d.cts +17 -0
- package/dist/enum/index.d.ts +17 -0
- package/dist/enum/index.js +14 -0
- package/dist/enum/index.js.map +1 -0
- package/dist/index.cjs +36 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +35 -5
- package/dist/index.js.map +1 -1
- package/dist/time/index.cjs +23 -4
- package/dist/time/index.cjs.map +1 -1
- package/dist/time/index.d.cts +12 -2
- package/dist/time/index.d.ts +12 -2
- package/dist/time/index.js +23 -4
- package/dist/time/index.js.map +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +15 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/enum/index.ts
|
|
4
|
+
var parseEnumValue = (enumArray, value) => {
|
|
5
|
+
return enumArray.includes(value) ? value : void 0;
|
|
6
|
+
};
|
|
7
|
+
var requireEnumValue = (enumArray, value) => {
|
|
8
|
+
if (!enumArray.includes(value)) {
|
|
9
|
+
throw new Error(`Invalid enum value: ${value}`);
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.parseEnumValue = parseEnumValue;
|
|
15
|
+
exports.requireEnumValue = requireEnumValue;
|
|
16
|
+
//# sourceMappingURL=index.cjs.map
|
|
17
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/enum/index.ts"],"names":[],"mappings":";;;AAaO,IAAM,cAAA,GAAiB,CAC5B,SAAA,EACA,KAAA,KAC0B;AAC1B,EAAA,OAAO,SAAA,CAAU,QAAA,CAAS,KAAkB,CAAA,GACvC,KAAA,GACD,MAAA;AACN;AAEO,IAAM,gBAAA,GAAmB,CAC9B,SAAA,EACA,KAAA,KACc;AACd,EAAA,IAAI,CAAC,SAAA,CAAU,QAAA,CAAS,KAAkB,CAAA,EAAG;AAC3C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAE,CAAA;AAAA;AAEhD,EAAA,OAAO,KAAA;AACT","file":"index.cjs","sourcesContent":["/**\r\n * Helper function for enum filtering\r\n * Checks if a search value exists in an enum array and returns it with proper typing\r\n * @param enumArray - Array of enum values to search in\r\n * @param searchValue - Value to search for\r\n * @returns The typed enum value if found, undefined otherwise\r\n * @example\r\n * ```ts\r\n * const Status = ['active', 'inactive', 'pending'] as const;\r\n * const result = parseEnumValue(Status, 'active'); // 'active'\r\n * const invalid = parseEnumValue(Status, 'unknown'); // undefined\r\n * ```\r\n */\r\nexport const parseEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] | undefined => {\r\n return enumArray.includes(value as T[number])\r\n ? (value as T[number])\r\n : undefined\r\n}\r\n\r\nexport const requireEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] => {\r\n if (!enumArray.includes(value as T[number])) {\r\n throw new Error(`Invalid enum value: ${value}`)\r\n }\r\n return value as T[number]\r\n}\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper function for enum filtering
|
|
3
|
+
* Checks if a search value exists in an enum array and returns it with proper typing
|
|
4
|
+
* @param enumArray - Array of enum values to search in
|
|
5
|
+
* @param searchValue - Value to search for
|
|
6
|
+
* @returns The typed enum value if found, undefined otherwise
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const Status = ['active', 'inactive', 'pending'] as const;
|
|
10
|
+
* const result = parseEnumValue(Status, 'active'); // 'active'
|
|
11
|
+
* const invalid = parseEnumValue(Status, 'unknown'); // undefined
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare const parseEnumValue: <T extends readonly string[]>(enumArray: T, value: string) => T[number] | undefined;
|
|
15
|
+
declare const requireEnumValue: <T extends readonly string[]>(enumArray: T, value: string) => T[number];
|
|
16
|
+
|
|
17
|
+
export { parseEnumValue, requireEnumValue };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper function for enum filtering
|
|
3
|
+
* Checks if a search value exists in an enum array and returns it with proper typing
|
|
4
|
+
* @param enumArray - Array of enum values to search in
|
|
5
|
+
* @param searchValue - Value to search for
|
|
6
|
+
* @returns The typed enum value if found, undefined otherwise
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const Status = ['active', 'inactive', 'pending'] as const;
|
|
10
|
+
* const result = parseEnumValue(Status, 'active'); // 'active'
|
|
11
|
+
* const invalid = parseEnumValue(Status, 'unknown'); // undefined
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
declare const parseEnumValue: <T extends readonly string[]>(enumArray: T, value: string) => T[number] | undefined;
|
|
15
|
+
declare const requireEnumValue: <T extends readonly string[]>(enumArray: T, value: string) => T[number];
|
|
16
|
+
|
|
17
|
+
export { parseEnumValue, requireEnumValue };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/enum/index.ts
|
|
2
|
+
var parseEnumValue = (enumArray, value) => {
|
|
3
|
+
return enumArray.includes(value) ? value : void 0;
|
|
4
|
+
};
|
|
5
|
+
var requireEnumValue = (enumArray, value) => {
|
|
6
|
+
if (!enumArray.includes(value)) {
|
|
7
|
+
throw new Error(`Invalid enum value: ${value}`);
|
|
8
|
+
}
|
|
9
|
+
return value;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { parseEnumValue, requireEnumValue };
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/enum/index.ts"],"names":[],"mappings":";AAaO,IAAM,cAAA,GAAiB,CAC5B,SAAA,EACA,KAAA,KAC0B;AAC1B,EAAA,OAAO,SAAA,CAAU,QAAA,CAAS,KAAkB,CAAA,GACvC,KAAA,GACD,MAAA;AACN;AAEO,IAAM,gBAAA,GAAmB,CAC9B,SAAA,EACA,KAAA,KACc;AACd,EAAA,IAAI,CAAC,SAAA,CAAU,QAAA,CAAS,KAAkB,CAAA,EAAG;AAC3C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAE,CAAA;AAAA;AAEhD,EAAA,OAAO,KAAA;AACT","file":"index.js","sourcesContent":["/**\r\n * Helper function for enum filtering\r\n * Checks if a search value exists in an enum array and returns it with proper typing\r\n * @param enumArray - Array of enum values to search in\r\n * @param searchValue - Value to search for\r\n * @returns The typed enum value if found, undefined otherwise\r\n * @example\r\n * ```ts\r\n * const Status = ['active', 'inactive', 'pending'] as const;\r\n * const result = parseEnumValue(Status, 'active'); // 'active'\r\n * const invalid = parseEnumValue(Status, 'unknown'); // undefined\r\n * ```\r\n */\r\nexport const parseEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] | undefined => {\r\n return enumArray.includes(value as T[number])\r\n ? (value as T[number])\r\n : undefined\r\n}\r\n\r\nexport const requireEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] => {\r\n if (!enumArray.includes(value as T[number])) {\r\n throw new Error(`Invalid enum value: ${value}`)\r\n }\r\n return value as T[number]\r\n}\r\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -210,11 +210,30 @@ function convertToSeconds(options = {}) {
|
|
|
210
210
|
const SECONDS_PER_YEAR = 60 * 60 * 24 * 365;
|
|
211
211
|
return seconds + minutes * SECONDS_PER_MINUTE + hours * SECONDS_PER_HOUR + days * SECONDS_PER_DAY + months * SECONDS_PER_MONTH + years * SECONDS_PER_YEAR;
|
|
212
212
|
}
|
|
213
|
-
var getUnixTimestampMs = () => {
|
|
214
|
-
|
|
213
|
+
var getUnixTimestampMs = (date) => {
|
|
214
|
+
if (date === void 0) {
|
|
215
|
+
return Date.now();
|
|
216
|
+
}
|
|
217
|
+
if (typeof date === "number") {
|
|
218
|
+
const testDate = new Date(date);
|
|
219
|
+
if (isNaN(testDate.getTime())) {
|
|
220
|
+
throw new Error("Invalid timestamp provided");
|
|
221
|
+
}
|
|
222
|
+
const now = Date.now();
|
|
223
|
+
const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1e3;
|
|
224
|
+
if (date < 0 || date > hundredYearsFromNow) {
|
|
225
|
+
throw new Error("Timestamp is outside valid range");
|
|
226
|
+
}
|
|
227
|
+
return date;
|
|
228
|
+
}
|
|
229
|
+
const dateObj = new Date(date);
|
|
230
|
+
if (isNaN(dateObj.getTime())) {
|
|
231
|
+
throw new Error("Invalid date provided");
|
|
232
|
+
}
|
|
233
|
+
return dateObj.getTime();
|
|
215
234
|
};
|
|
216
|
-
var getUnixTimestamp = () => {
|
|
217
|
-
return Math.floor(getUnixTimestampMs() / 1e3);
|
|
235
|
+
var getUnixTimestamp = (date) => {
|
|
236
|
+
return Math.floor(getUnixTimestampMs(date) / 1e3);
|
|
218
237
|
};
|
|
219
238
|
var getFullYear = (date) => {
|
|
220
239
|
const targetDate = date || /* @__PURE__ */ new Date();
|
|
@@ -264,6 +283,17 @@ function assertBrowserEnvironment() {
|
|
|
264
283
|
}
|
|
265
284
|
}
|
|
266
285
|
|
|
286
|
+
// src/enum/index.ts
|
|
287
|
+
var parseEnumValue = (enumArray, value) => {
|
|
288
|
+
return enumArray.includes(value) ? value : void 0;
|
|
289
|
+
};
|
|
290
|
+
var requireEnumValue = (enumArray, value) => {
|
|
291
|
+
if (!enumArray.includes(value)) {
|
|
292
|
+
throw new Error(`Invalid enum value: ${value}`);
|
|
293
|
+
}
|
|
294
|
+
return value;
|
|
295
|
+
};
|
|
296
|
+
|
|
267
297
|
exports.EnvironmentError = EnvironmentError;
|
|
268
298
|
exports.assertBrowserEnvironment = assertBrowserEnvironment;
|
|
269
299
|
exports.assertNodeEnvironment = assertNodeEnvironment;
|
|
@@ -283,8 +313,10 @@ exports.inRange = inRange;
|
|
|
283
313
|
exports.isBrowserEnvironment = isBrowserEnvironment;
|
|
284
314
|
exports.isNodeEnvironment = isNodeEnvironment;
|
|
285
315
|
exports.isWebWorkerEnvironment = isWebWorkerEnvironment;
|
|
316
|
+
exports.parseEnumValue = parseEnumValue;
|
|
286
317
|
exports.randomNumberWithFixedLength = randomNumberWithFixedLength;
|
|
287
318
|
exports.randomStringWithFixedLength = randomStringWithFixedLength;
|
|
319
|
+
exports.requireEnumValue = requireEnumValue;
|
|
288
320
|
exports.sleep = sleep;
|
|
289
321
|
exports.sleepMinutes = sleepMinutes;
|
|
290
322
|
exports.sleepMs = sleepMs;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/array/index.ts","../src/string/capitalize.ts","../src/string/truncate.ts","../src/string/index.ts","../src/number/index.ts","../src/sleep/index.ts","../src/time/index.ts","../src/utils/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * Splits an array into chunks of a specified size\r\n * @param array - The array to chunk\r\n * @param size - The size of each chunk\r\n * @returns An array of chunks\r\n */\r\nexport function chunk<T>(array: T[], size: number): T[][] {\r\n if (size <= 0) {\r\n throw new Error('Chunk size must be greater than 0');\r\n }\r\n \r\n if (array.length === 0) {\r\n return [];\r\n }\r\n \r\n const chunks: T[][] = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n chunks.push(array.slice(i, i + size));\r\n }\r\n \r\n return chunks;\r\n}\r\n","/**\r\n * Capitalizes the first letter of a string\r\n * @param str - The string to capitalize\r\n * @returns The capitalized string\r\n */\r\nexport function capitalize(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n if (str.length === 0) {\r\n return str;\r\n }\r\n \r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Capitalizes the first letter of each word in a string\r\n * @param str - The string to capitalize\r\n * @returns The string with each word capitalized\r\n */\r\nexport function capitalizeWords(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nexport function convertCamelToNormalCapitalized(\r\n camelCaseString: string\r\n): string {\r\n // Split the camelCase string into words\r\n const words = camelCaseString\r\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\r\n .split(/[\\s_]+/);\r\n\r\n // Capitalize each word\r\n const capitalizedWords = words.map(\r\n (word) => word.charAt(0).toUpperCase() + word.slice(1)\r\n );\r\n\r\n // Join the capitalized words to form the normal capitalized string\r\n const normalCapitalizedString = capitalizedWords.join(\" \");\r\n\r\n return normalCapitalizedString;\r\n}","\r\nexport type TruncateTextOptions = {\r\n text: string;\r\n maxLength?: number;\r\n suffix?: string;\r\n};\r\n\r\nexport function truncateText({\r\n text,\r\n maxLength = 10,\r\n suffix = '...',\r\n}: TruncateTextOptions): string {\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength) + suffix\r\n : text;\r\n}\r\n","\r\nexport * from './capitalize';\r\nexport * from './truncate';\r\n\r\nexport function randomStringWithFixedLength(length: number): string {\r\n if (!Number.isInteger(length) || length <= 0) {\r\n throw new Error(\"Length must be a positive integer.\");\r\n }\r\n\r\n return Array.from({ length }, () => Math.random().toString(36)[2]).join(\"\");\r\n}","/**\r\n * Clamps a number within the inclusive lower and upper bounds\r\n * @param number - The number to clamp\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns The clamped number\r\n */\r\nexport function clamp(number: number, lower: number, upper: number): number {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return Math.min(Math.max(number, lower), upper);\r\n}\r\n\r\n/**\r\n * Checks if a number is within the inclusive range\r\n * @param number - The number to check\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns True if the number is within the range\r\n */\r\nexport function inRange(number: number, lower: number, upper: number): boolean {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return number >= lower && number <= upper;\r\n}\r\n\r\n\r\nexport const convertToInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n\r\n return +parseInt(data);\r\n};\r\n\r\nexport const convertToTwoDecimalInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n return +parseFloat(data).toFixed(2);\r\n};\r\n\r\nexport const randomNumberWithFixedLength = (length: number): number => {\r\n if (length <= 0 || !Number.isInteger(length)) {\r\n throw new Error('Length must be a positive integer.');\r\n }\r\n return Math.floor(\r\n Math.pow(10, length - 1) +\r\n Math.random() * (9 * Math.pow(10, length - 1))\r\n );\r\n};\r\n","type TSleepParams ={\r\n milliseconds?: number;\r\n seconds?: number;\r\n minutes?: number;\r\n until?: {\r\n unixTimestamp?: number;\r\n };\r\n random?:{\r\n milliseconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n seconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n minutes?: {\r\n min: number;\r\n max: number;\r\n }\r\n }\r\n}\r\n\r\ntype TSleepReturn = Promise<void>;\r\n\r\n/**\r\n * Sleep function that supports various delay options\r\n * @param params - Sleep parameters including fixed delays, random delays, or until timestamp\r\n * @returns Promise that resolves after the specified delay\r\n * @throws Error if invalid parameters are provided\r\n */\r\nexport const sleep = (params: TSleepParams): TSleepReturn => {\r\n return new Promise((resolve, reject) => {\r\n let delayMs = 0;\r\n\r\n try {\r\n // Validate input parameters\r\n if (!params || Object.keys(params).length === 0) {\r\n throw new Error('Sleep parameters cannot be empty');\r\n }\r\n\r\n // Handle sleeping until a specific timestamp\r\n if (params.until?.unixTimestamp) {\r\n const now = Date.now();\r\n const targetTime = params.until.unixTimestamp * 1000; // Convert to milliseconds\r\n delayMs = Math.max(0, targetTime - now);\r\n \r\n // If the timestamp is in the past, resolve immediately\r\n if (delayMs === 0) {\r\n resolve();\r\n return;\r\n }\r\n }\r\n // Handle random delays\r\n else if (params.random) {\r\n if (params.random.milliseconds) {\r\n const { min, max } = params.random.milliseconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random milliseconds range');\r\n }\r\n delayMs = Math.random() * (max - min) + min;\r\n } else if (params.random.seconds) {\r\n const { min, max } = params.random.seconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random seconds range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 1000;\r\n } else if (params.random.minutes) {\r\n const { min, max } = params.random.minutes;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random minutes range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 60 * 1000;\r\n } else {\r\n throw new Error('Random delay type must be specified (milliseconds, seconds, or minutes)');\r\n }\r\n }\r\n // Handle fixed delays\r\n else {\r\n if (params.milliseconds !== undefined) {\r\n if (params.milliseconds < 0) {\r\n throw new Error('Milliseconds cannot be negative');\r\n }\r\n delayMs += params.milliseconds;\r\n }\r\n if (params.seconds !== undefined) {\r\n if (params.seconds < 0) {\r\n throw new Error('Seconds cannot be negative');\r\n }\r\n delayMs += params.seconds * 1000;\r\n }\r\n if (params.minutes !== undefined) {\r\n if (params.minutes < 0) {\r\n throw new Error('Minutes cannot be negative');\r\n }\r\n delayMs += params.minutes * 60 * 1000;\r\n }\r\n\r\n // If no valid delay was specified\r\n if (delayMs === 0 && !params.milliseconds && !params.seconds && !params.minutes) {\r\n throw new Error('At least one delay parameter must be specified');\r\n }\r\n }\r\n\r\n // Ensure delay is not too large (prevent potential issues)\r\n const MAX_DELAY = 2147483647; // Maximum value for setTimeout\r\n if (delayMs > MAX_DELAY) {\r\n throw new Error(`Delay too large. Maximum delay is ${MAX_DELAY}ms`);\r\n }\r\n\r\n setTimeout(resolve, Math.floor(delayMs));\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of milliseconds\r\n * @param ms - Number of milliseconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMs = (ms: number): TSleepReturn => {\r\n return sleep({ milliseconds: ms });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of seconds\r\n * @param seconds - Number of seconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepSeconds = (seconds: number): TSleepReturn => {\r\n return sleep({ seconds });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of minutes\r\n * @param minutes - Number of minutes to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMinutes = (minutes: number): TSleepReturn => {\r\n return sleep({ minutes });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep until a specific Unix timestamp\r\n * @param unixTimestamp - Unix timestamp (in seconds) to sleep until\r\n * @returns Promise that resolves at the specified timestamp\r\n */\r\nexport const sleepUntil = (unixTimestamp: number): TSleepReturn => {\r\n return sleep({ until: { unixTimestamp } });\r\n};\r\n\r\n// Export the type definitions for consumers\r\nexport type { TSleepParams, TSleepReturn };","/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\nexport const getUnixTimestampMs = (): number => {\r\n return Date.now()\r\n}\r\n\r\nexport const getUnixTimestamp = (): number => {\r\n return Math.floor(getUnixTimestampMs() / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n","/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return typeof process !== 'undefined' && \r\n process.versions != null && \r\n process.versions.node != null;\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== 'undefined' && \r\n typeof document !== 'undefined';\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return typeof (globalThis as any).importScripts === 'function' && \r\n typeof window === 'undefined';\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): 'node' | 'browser' | 'webworker' | 'unknown' {\r\n if (isNodeEnvironment()) return 'node';\r\n if (isBrowserEnvironment()) return 'browser';\r\n if (isWebWorkerEnvironment()) return 'webworker';\r\n return 'unknown';\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = 'EnvironmentError';\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n 'This functionality requires Node.js environment',\r\n 'node',\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n 'This functionality requires browser environment',\r\n 'browser',\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/array/index.ts","../src/string/capitalize.ts","../src/string/truncate.ts","../src/string/index.ts","../src/number/index.ts","../src/sleep/index.ts","../src/time/index.ts","../src/utils/index.ts","../src/enum/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * Splits an array into chunks of a specified size\r\n * @param array - The array to chunk\r\n * @param size - The size of each chunk\r\n * @returns An array of chunks\r\n */\r\nexport function chunk<T>(array: T[], size: number): T[][] {\r\n if (size <= 0) {\r\n throw new Error('Chunk size must be greater than 0');\r\n }\r\n \r\n if (array.length === 0) {\r\n return [];\r\n }\r\n \r\n const chunks: T[][] = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n chunks.push(array.slice(i, i + size));\r\n }\r\n \r\n return chunks;\r\n}\r\n","/**\r\n * Capitalizes the first letter of a string\r\n * @param str - The string to capitalize\r\n * @returns The capitalized string\r\n */\r\nexport function capitalize(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n if (str.length === 0) {\r\n return str;\r\n }\r\n \r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Capitalizes the first letter of each word in a string\r\n * @param str - The string to capitalize\r\n * @returns The string with each word capitalized\r\n */\r\nexport function capitalizeWords(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nexport function convertCamelToNormalCapitalized(\r\n camelCaseString: string\r\n): string {\r\n // Split the camelCase string into words\r\n const words = camelCaseString\r\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\r\n .split(/[\\s_]+/);\r\n\r\n // Capitalize each word\r\n const capitalizedWords = words.map(\r\n (word) => word.charAt(0).toUpperCase() + word.slice(1)\r\n );\r\n\r\n // Join the capitalized words to form the normal capitalized string\r\n const normalCapitalizedString = capitalizedWords.join(\" \");\r\n\r\n return normalCapitalizedString;\r\n}","\r\nexport type TruncateTextOptions = {\r\n text: string;\r\n maxLength?: number;\r\n suffix?: string;\r\n};\r\n\r\nexport function truncateText({\r\n text,\r\n maxLength = 10,\r\n suffix = '...',\r\n}: TruncateTextOptions): string {\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength) + suffix\r\n : text;\r\n}\r\n","\r\nexport * from './capitalize';\r\nexport * from './truncate';\r\n\r\nexport function randomStringWithFixedLength(length: number): string {\r\n if (!Number.isInteger(length) || length <= 0) {\r\n throw new Error(\"Length must be a positive integer.\");\r\n }\r\n\r\n return Array.from({ length }, () => Math.random().toString(36)[2]).join(\"\");\r\n}","/**\r\n * Clamps a number within the inclusive lower and upper bounds\r\n * @param number - The number to clamp\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns The clamped number\r\n */\r\nexport function clamp(number: number, lower: number, upper: number): number {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return Math.min(Math.max(number, lower), upper);\r\n}\r\n\r\n/**\r\n * Checks if a number is within the inclusive range\r\n * @param number - The number to check\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns True if the number is within the range\r\n */\r\nexport function inRange(number: number, lower: number, upper: number): boolean {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return number >= lower && number <= upper;\r\n}\r\n\r\n\r\nexport const convertToInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n\r\n return +parseInt(data);\r\n};\r\n\r\nexport const convertToTwoDecimalInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n return +parseFloat(data).toFixed(2);\r\n};\r\n\r\nexport const randomNumberWithFixedLength = (length: number): number => {\r\n if (length <= 0 || !Number.isInteger(length)) {\r\n throw new Error('Length must be a positive integer.');\r\n }\r\n return Math.floor(\r\n Math.pow(10, length - 1) +\r\n Math.random() * (9 * Math.pow(10, length - 1))\r\n );\r\n};\r\n","type TSleepParams ={\r\n milliseconds?: number;\r\n seconds?: number;\r\n minutes?: number;\r\n until?: {\r\n unixTimestamp?: number;\r\n };\r\n random?:{\r\n milliseconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n seconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n minutes?: {\r\n min: number;\r\n max: number;\r\n }\r\n }\r\n}\r\n\r\ntype TSleepReturn = Promise<void>;\r\n\r\n/**\r\n * Sleep function that supports various delay options\r\n * @param params - Sleep parameters including fixed delays, random delays, or until timestamp\r\n * @returns Promise that resolves after the specified delay\r\n * @throws Error if invalid parameters are provided\r\n */\r\nexport const sleep = (params: TSleepParams): TSleepReturn => {\r\n return new Promise((resolve, reject) => {\r\n let delayMs = 0;\r\n\r\n try {\r\n // Validate input parameters\r\n if (!params || Object.keys(params).length === 0) {\r\n throw new Error('Sleep parameters cannot be empty');\r\n }\r\n\r\n // Handle sleeping until a specific timestamp\r\n if (params.until?.unixTimestamp) {\r\n const now = Date.now();\r\n const targetTime = params.until.unixTimestamp * 1000; // Convert to milliseconds\r\n delayMs = Math.max(0, targetTime - now);\r\n \r\n // If the timestamp is in the past, resolve immediately\r\n if (delayMs === 0) {\r\n resolve();\r\n return;\r\n }\r\n }\r\n // Handle random delays\r\n else if (params.random) {\r\n if (params.random.milliseconds) {\r\n const { min, max } = params.random.milliseconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random milliseconds range');\r\n }\r\n delayMs = Math.random() * (max - min) + min;\r\n } else if (params.random.seconds) {\r\n const { min, max } = params.random.seconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random seconds range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 1000;\r\n } else if (params.random.minutes) {\r\n const { min, max } = params.random.minutes;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random minutes range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 60 * 1000;\r\n } else {\r\n throw new Error('Random delay type must be specified (milliseconds, seconds, or minutes)');\r\n }\r\n }\r\n // Handle fixed delays\r\n else {\r\n if (params.milliseconds !== undefined) {\r\n if (params.milliseconds < 0) {\r\n throw new Error('Milliseconds cannot be negative');\r\n }\r\n delayMs += params.milliseconds;\r\n }\r\n if (params.seconds !== undefined) {\r\n if (params.seconds < 0) {\r\n throw new Error('Seconds cannot be negative');\r\n }\r\n delayMs += params.seconds * 1000;\r\n }\r\n if (params.minutes !== undefined) {\r\n if (params.minutes < 0) {\r\n throw new Error('Minutes cannot be negative');\r\n }\r\n delayMs += params.minutes * 60 * 1000;\r\n }\r\n\r\n // If no valid delay was specified\r\n if (delayMs === 0 && !params.milliseconds && !params.seconds && !params.minutes) {\r\n throw new Error('At least one delay parameter must be specified');\r\n }\r\n }\r\n\r\n // Ensure delay is not too large (prevent potential issues)\r\n const MAX_DELAY = 2147483647; // Maximum value for setTimeout\r\n if (delayMs > MAX_DELAY) {\r\n throw new Error(`Delay too large. Maximum delay is ${MAX_DELAY}ms`);\r\n }\r\n\r\n setTimeout(resolve, Math.floor(delayMs));\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of milliseconds\r\n * @param ms - Number of milliseconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMs = (ms: number): TSleepReturn => {\r\n return sleep({ milliseconds: ms });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of seconds\r\n * @param seconds - Number of seconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepSeconds = (seconds: number): TSleepReturn => {\r\n return sleep({ seconds });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of minutes\r\n * @param minutes - Number of minutes to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMinutes = (minutes: number): TSleepReturn => {\r\n return sleep({ minutes });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep until a specific Unix timestamp\r\n * @param unixTimestamp - Unix timestamp (in seconds) to sleep until\r\n * @returns Promise that resolves at the specified timestamp\r\n */\r\nexport const sleepUntil = (unixTimestamp: number): TSleepReturn => {\r\n return sleep({ until: { unixTimestamp } });\r\n};\r\n\r\n// Export the type definitions for consumers\r\nexport type { TSleepParams, TSleepReturn };","/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in milliseconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in milliseconds\r\n */\r\nexport const getUnixTimestampMs = (date?: Date | string | number): number => {\r\n if (date === undefined) {\r\n return Date.now()\r\n }\r\n\r\n if (typeof date === \"number\") {\r\n const testDate = new Date(date)\r\n if (isNaN(testDate.getTime())) {\r\n throw new Error(\"Invalid timestamp provided\")\r\n }\r\n\r\n // Timestamps should be positive and not too far in the future\r\n const now = Date.now()\r\n const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1000 // 100 years\r\n\r\n if (date < 0 || date > hundredYearsFromNow) {\r\n throw new Error(\"Timestamp is outside valid range\")\r\n }\r\n\r\n return date\r\n }\r\n\r\n const dateObj = new Date(date)\r\n\r\n if (isNaN(dateObj.getTime())) {\r\n throw new Error(\"Invalid date provided\")\r\n }\r\n\r\n return dateObj.getTime()\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in seconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in seconds\r\n */\r\nexport const getUnixTimestamp = (date?: Date | string | number): number => {\r\n return Math.floor(getUnixTimestampMs(date) / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n","/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return (\r\n typeof process !== \"undefined\" &&\r\n process.versions != null &&\r\n process.versions.node != null\r\n );\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return (\r\n typeof (globalThis as any).importScripts === \"function\" &&\r\n typeof window === \"undefined\"\r\n );\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): \"node\" | \"browser\" | \"webworker\" | \"unknown\" {\r\n if (isNodeEnvironment()) return \"node\";\r\n if (isBrowserEnvironment()) return \"browser\";\r\n if (isWebWorkerEnvironment()) return \"webworker\";\r\n return \"unknown\";\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = \"EnvironmentError\";\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires Node.js environment\",\r\n \"node\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires browser environment\",\r\n \"browser\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n","/**\r\n * Helper function for enum filtering\r\n * Checks if a search value exists in an enum array and returns it with proper typing\r\n * @param enumArray - Array of enum values to search in\r\n * @param searchValue - Value to search for\r\n * @returns The typed enum value if found, undefined otherwise\r\n * @example\r\n * ```ts\r\n * const Status = ['active', 'inactive', 'pending'] as const;\r\n * const result = parseEnumValue(Status, 'active'); // 'active'\r\n * const invalid = parseEnumValue(Status, 'unknown'); // undefined\r\n * ```\r\n */\r\nexport const parseEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] | undefined => {\r\n return enumArray.includes(value as T[number])\r\n ? (value as T[number])\r\n : undefined\r\n}\r\n\r\nexport const requireEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] => {\r\n if (!enumArray.includes(value as T[number])) {\r\n throw new Error(`Invalid enum value: ${value}`)\r\n }\r\n return value as T[number]\r\n}\r\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -5,5 +5,6 @@ export { TSleepParams, TSleepReturn, sleep, sleepMinutes, sleepMs, sleepSeconds,
|
|
|
5
5
|
export { convertToSeconds, getFullYear, getUnixTimestamp, getUnixTimestampMs } from './time/index.cjs';
|
|
6
6
|
export { EnvironmentError, assertBrowserEnvironment, assertNodeEnvironment, getEnvironment, isBrowserEnvironment, isNodeEnvironment, isWebWorkerEnvironment } from './utils/index.cjs';
|
|
7
7
|
export { Prettify } from './types/index.cjs';
|
|
8
|
+
export { parseEnumValue, requireEnumValue } from './enum/index.cjs';
|
|
8
9
|
export { capitalize, capitalizeWords, convertCamelToNormalCapitalized } from './string/capitalize.cjs';
|
|
9
10
|
export { TruncateTextOptions, truncateText } from './string/truncate.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ export { TSleepParams, TSleepReturn, sleep, sleepMinutes, sleepMs, sleepSeconds,
|
|
|
5
5
|
export { convertToSeconds, getFullYear, getUnixTimestamp, getUnixTimestampMs } from './time/index.js';
|
|
6
6
|
export { EnvironmentError, assertBrowserEnvironment, assertNodeEnvironment, getEnvironment, isBrowserEnvironment, isNodeEnvironment, isWebWorkerEnvironment } from './utils/index.js';
|
|
7
7
|
export { Prettify } from './types/index.js';
|
|
8
|
+
export { parseEnumValue, requireEnumValue } from './enum/index.js';
|
|
8
9
|
export { capitalize, capitalizeWords, convertCamelToNormalCapitalized } from './string/capitalize.js';
|
|
9
10
|
export { TruncateTextOptions, truncateText } from './string/truncate.js';
|
package/dist/index.js
CHANGED
|
@@ -208,11 +208,30 @@ function convertToSeconds(options = {}) {
|
|
|
208
208
|
const SECONDS_PER_YEAR = 60 * 60 * 24 * 365;
|
|
209
209
|
return seconds + minutes * SECONDS_PER_MINUTE + hours * SECONDS_PER_HOUR + days * SECONDS_PER_DAY + months * SECONDS_PER_MONTH + years * SECONDS_PER_YEAR;
|
|
210
210
|
}
|
|
211
|
-
var getUnixTimestampMs = () => {
|
|
212
|
-
|
|
211
|
+
var getUnixTimestampMs = (date) => {
|
|
212
|
+
if (date === void 0) {
|
|
213
|
+
return Date.now();
|
|
214
|
+
}
|
|
215
|
+
if (typeof date === "number") {
|
|
216
|
+
const testDate = new Date(date);
|
|
217
|
+
if (isNaN(testDate.getTime())) {
|
|
218
|
+
throw new Error("Invalid timestamp provided");
|
|
219
|
+
}
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1e3;
|
|
222
|
+
if (date < 0 || date > hundredYearsFromNow) {
|
|
223
|
+
throw new Error("Timestamp is outside valid range");
|
|
224
|
+
}
|
|
225
|
+
return date;
|
|
226
|
+
}
|
|
227
|
+
const dateObj = new Date(date);
|
|
228
|
+
if (isNaN(dateObj.getTime())) {
|
|
229
|
+
throw new Error("Invalid date provided");
|
|
230
|
+
}
|
|
231
|
+
return dateObj.getTime();
|
|
213
232
|
};
|
|
214
|
-
var getUnixTimestamp = () => {
|
|
215
|
-
return Math.floor(getUnixTimestampMs() / 1e3);
|
|
233
|
+
var getUnixTimestamp = (date) => {
|
|
234
|
+
return Math.floor(getUnixTimestampMs(date) / 1e3);
|
|
216
235
|
};
|
|
217
236
|
var getFullYear = (date) => {
|
|
218
237
|
const targetDate = date || /* @__PURE__ */ new Date();
|
|
@@ -262,6 +281,17 @@ function assertBrowserEnvironment() {
|
|
|
262
281
|
}
|
|
263
282
|
}
|
|
264
283
|
|
|
265
|
-
|
|
284
|
+
// src/enum/index.ts
|
|
285
|
+
var parseEnumValue = (enumArray, value) => {
|
|
286
|
+
return enumArray.includes(value) ? value : void 0;
|
|
287
|
+
};
|
|
288
|
+
var requireEnumValue = (enumArray, value) => {
|
|
289
|
+
if (!enumArray.includes(value)) {
|
|
290
|
+
throw new Error(`Invalid enum value: ${value}`);
|
|
291
|
+
}
|
|
292
|
+
return value;
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
export { EnvironmentError, assertBrowserEnvironment, assertNodeEnvironment, capitalize, capitalizeWords, chunk, clamp, convertCamelToNormalCapitalized, convertToInt, convertToSeconds, convertToTwoDecimalInt, getEnvironment, getFullYear, getUnixTimestamp, getUnixTimestampMs, inRange, isBrowserEnvironment, isNodeEnvironment, isWebWorkerEnvironment, parseEnumValue, randomNumberWithFixedLength, randomStringWithFixedLength, requireEnumValue, sleep, sleepMinutes, sleepMs, sleepSeconds, sleepUntil, truncateText };
|
|
266
296
|
//# sourceMappingURL=index.js.map
|
|
267
297
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/array/index.ts","../src/string/capitalize.ts","../src/string/truncate.ts","../src/string/index.ts","../src/number/index.ts","../src/sleep/index.ts","../src/time/index.ts","../src/utils/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Splits an array into chunks of a specified size\r\n * @param array - The array to chunk\r\n * @param size - The size of each chunk\r\n * @returns An array of chunks\r\n */\r\nexport function chunk<T>(array: T[], size: number): T[][] {\r\n if (size <= 0) {\r\n throw new Error('Chunk size must be greater than 0');\r\n }\r\n \r\n if (array.length === 0) {\r\n return [];\r\n }\r\n \r\n const chunks: T[][] = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n chunks.push(array.slice(i, i + size));\r\n }\r\n \r\n return chunks;\r\n}\r\n","/**\r\n * Capitalizes the first letter of a string\r\n * @param str - The string to capitalize\r\n * @returns The capitalized string\r\n */\r\nexport function capitalize(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n if (str.length === 0) {\r\n return str;\r\n }\r\n \r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Capitalizes the first letter of each word in a string\r\n * @param str - The string to capitalize\r\n * @returns The string with each word capitalized\r\n */\r\nexport function capitalizeWords(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nexport function convertCamelToNormalCapitalized(\r\n camelCaseString: string\r\n): string {\r\n // Split the camelCase string into words\r\n const words = camelCaseString\r\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\r\n .split(/[\\s_]+/);\r\n\r\n // Capitalize each word\r\n const capitalizedWords = words.map(\r\n (word) => word.charAt(0).toUpperCase() + word.slice(1)\r\n );\r\n\r\n // Join the capitalized words to form the normal capitalized string\r\n const normalCapitalizedString = capitalizedWords.join(\" \");\r\n\r\n return normalCapitalizedString;\r\n}","\r\nexport type TruncateTextOptions = {\r\n text: string;\r\n maxLength?: number;\r\n suffix?: string;\r\n};\r\n\r\nexport function truncateText({\r\n text,\r\n maxLength = 10,\r\n suffix = '...',\r\n}: TruncateTextOptions): string {\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength) + suffix\r\n : text;\r\n}\r\n","\r\nexport * from './capitalize';\r\nexport * from './truncate';\r\n\r\nexport function randomStringWithFixedLength(length: number): string {\r\n if (!Number.isInteger(length) || length <= 0) {\r\n throw new Error(\"Length must be a positive integer.\");\r\n }\r\n\r\n return Array.from({ length }, () => Math.random().toString(36)[2]).join(\"\");\r\n}","/**\r\n * Clamps a number within the inclusive lower and upper bounds\r\n * @param number - The number to clamp\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns The clamped number\r\n */\r\nexport function clamp(number: number, lower: number, upper: number): number {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return Math.min(Math.max(number, lower), upper);\r\n}\r\n\r\n/**\r\n * Checks if a number is within the inclusive range\r\n * @param number - The number to check\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns True if the number is within the range\r\n */\r\nexport function inRange(number: number, lower: number, upper: number): boolean {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return number >= lower && number <= upper;\r\n}\r\n\r\n\r\nexport const convertToInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n\r\n return +parseInt(data);\r\n};\r\n\r\nexport const convertToTwoDecimalInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n return +parseFloat(data).toFixed(2);\r\n};\r\n\r\nexport const randomNumberWithFixedLength = (length: number): number => {\r\n if (length <= 0 || !Number.isInteger(length)) {\r\n throw new Error('Length must be a positive integer.');\r\n }\r\n return Math.floor(\r\n Math.pow(10, length - 1) +\r\n Math.random() * (9 * Math.pow(10, length - 1))\r\n );\r\n};\r\n","type TSleepParams ={\r\n milliseconds?: number;\r\n seconds?: number;\r\n minutes?: number;\r\n until?: {\r\n unixTimestamp?: number;\r\n };\r\n random?:{\r\n milliseconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n seconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n minutes?: {\r\n min: number;\r\n max: number;\r\n }\r\n }\r\n}\r\n\r\ntype TSleepReturn = Promise<void>;\r\n\r\n/**\r\n * Sleep function that supports various delay options\r\n * @param params - Sleep parameters including fixed delays, random delays, or until timestamp\r\n * @returns Promise that resolves after the specified delay\r\n * @throws Error if invalid parameters are provided\r\n */\r\nexport const sleep = (params: TSleepParams): TSleepReturn => {\r\n return new Promise((resolve, reject) => {\r\n let delayMs = 0;\r\n\r\n try {\r\n // Validate input parameters\r\n if (!params || Object.keys(params).length === 0) {\r\n throw new Error('Sleep parameters cannot be empty');\r\n }\r\n\r\n // Handle sleeping until a specific timestamp\r\n if (params.until?.unixTimestamp) {\r\n const now = Date.now();\r\n const targetTime = params.until.unixTimestamp * 1000; // Convert to milliseconds\r\n delayMs = Math.max(0, targetTime - now);\r\n \r\n // If the timestamp is in the past, resolve immediately\r\n if (delayMs === 0) {\r\n resolve();\r\n return;\r\n }\r\n }\r\n // Handle random delays\r\n else if (params.random) {\r\n if (params.random.milliseconds) {\r\n const { min, max } = params.random.milliseconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random milliseconds range');\r\n }\r\n delayMs = Math.random() * (max - min) + min;\r\n } else if (params.random.seconds) {\r\n const { min, max } = params.random.seconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random seconds range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 1000;\r\n } else if (params.random.minutes) {\r\n const { min, max } = params.random.minutes;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random minutes range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 60 * 1000;\r\n } else {\r\n throw new Error('Random delay type must be specified (milliseconds, seconds, or minutes)');\r\n }\r\n }\r\n // Handle fixed delays\r\n else {\r\n if (params.milliseconds !== undefined) {\r\n if (params.milliseconds < 0) {\r\n throw new Error('Milliseconds cannot be negative');\r\n }\r\n delayMs += params.milliseconds;\r\n }\r\n if (params.seconds !== undefined) {\r\n if (params.seconds < 0) {\r\n throw new Error('Seconds cannot be negative');\r\n }\r\n delayMs += params.seconds * 1000;\r\n }\r\n if (params.minutes !== undefined) {\r\n if (params.minutes < 0) {\r\n throw new Error('Minutes cannot be negative');\r\n }\r\n delayMs += params.minutes * 60 * 1000;\r\n }\r\n\r\n // If no valid delay was specified\r\n if (delayMs === 0 && !params.milliseconds && !params.seconds && !params.minutes) {\r\n throw new Error('At least one delay parameter must be specified');\r\n }\r\n }\r\n\r\n // Ensure delay is not too large (prevent potential issues)\r\n const MAX_DELAY = 2147483647; // Maximum value for setTimeout\r\n if (delayMs > MAX_DELAY) {\r\n throw new Error(`Delay too large. Maximum delay is ${MAX_DELAY}ms`);\r\n }\r\n\r\n setTimeout(resolve, Math.floor(delayMs));\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of milliseconds\r\n * @param ms - Number of milliseconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMs = (ms: number): TSleepReturn => {\r\n return sleep({ milliseconds: ms });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of seconds\r\n * @param seconds - Number of seconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepSeconds = (seconds: number): TSleepReturn => {\r\n return sleep({ seconds });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of minutes\r\n * @param minutes - Number of minutes to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMinutes = (minutes: number): TSleepReturn => {\r\n return sleep({ minutes });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep until a specific Unix timestamp\r\n * @param unixTimestamp - Unix timestamp (in seconds) to sleep until\r\n * @returns Promise that resolves at the specified timestamp\r\n */\r\nexport const sleepUntil = (unixTimestamp: number): TSleepReturn => {\r\n return sleep({ until: { unixTimestamp } });\r\n};\r\n\r\n// Export the type definitions for consumers\r\nexport type { TSleepParams, TSleepReturn };","/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\nexport const getUnixTimestampMs = (): number => {\r\n return Date.now()\r\n}\r\n\r\nexport const getUnixTimestamp = (): number => {\r\n return Math.floor(getUnixTimestampMs() / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n","/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return typeof process !== 'undefined' && \r\n process.versions != null && \r\n process.versions.node != null;\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== 'undefined' && \r\n typeof document !== 'undefined';\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return typeof (globalThis as any).importScripts === 'function' && \r\n typeof window === 'undefined';\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): 'node' | 'browser' | 'webworker' | 'unknown' {\r\n if (isNodeEnvironment()) return 'node';\r\n if (isBrowserEnvironment()) return 'browser';\r\n if (isWebWorkerEnvironment()) return 'webworker';\r\n return 'unknown';\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = 'EnvironmentError';\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n 'This functionality requires Node.js environment',\r\n 'node',\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n 'This functionality requires browser environment',\r\n 'browser',\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/array/index.ts","../src/string/capitalize.ts","../src/string/truncate.ts","../src/string/index.ts","../src/number/index.ts","../src/sleep/index.ts","../src/time/index.ts","../src/utils/index.ts","../src/enum/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * Splits an array into chunks of a specified size\r\n * @param array - The array to chunk\r\n * @param size - The size of each chunk\r\n * @returns An array of chunks\r\n */\r\nexport function chunk<T>(array: T[], size: number): T[][] {\r\n if (size <= 0) {\r\n throw new Error('Chunk size must be greater than 0');\r\n }\r\n \r\n if (array.length === 0) {\r\n return [];\r\n }\r\n \r\n const chunks: T[][] = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n chunks.push(array.slice(i, i + size));\r\n }\r\n \r\n return chunks;\r\n}\r\n","/**\r\n * Capitalizes the first letter of a string\r\n * @param str - The string to capitalize\r\n * @returns The capitalized string\r\n */\r\nexport function capitalize(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n if (str.length === 0) {\r\n return str;\r\n }\r\n \r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\n/**\r\n * Capitalizes the first letter of each word in a string\r\n * @param str - The string to capitalize\r\n * @returns The string with each word capitalized\r\n */\r\nexport function capitalizeWords(str: string): string {\r\n if (typeof str !== 'string') {\r\n throw new Error('Input must be a string');\r\n }\r\n \r\n return str.replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nexport function convertCamelToNormalCapitalized(\r\n camelCaseString: string\r\n): string {\r\n // Split the camelCase string into words\r\n const words = camelCaseString\r\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\r\n .split(/[\\s_]+/);\r\n\r\n // Capitalize each word\r\n const capitalizedWords = words.map(\r\n (word) => word.charAt(0).toUpperCase() + word.slice(1)\r\n );\r\n\r\n // Join the capitalized words to form the normal capitalized string\r\n const normalCapitalizedString = capitalizedWords.join(\" \");\r\n\r\n return normalCapitalizedString;\r\n}","\r\nexport type TruncateTextOptions = {\r\n text: string;\r\n maxLength?: number;\r\n suffix?: string;\r\n};\r\n\r\nexport function truncateText({\r\n text,\r\n maxLength = 10,\r\n suffix = '...',\r\n}: TruncateTextOptions): string {\r\n return text.length > maxLength\r\n ? text.substring(0, maxLength) + suffix\r\n : text;\r\n}\r\n","\r\nexport * from './capitalize';\r\nexport * from './truncate';\r\n\r\nexport function randomStringWithFixedLength(length: number): string {\r\n if (!Number.isInteger(length) || length <= 0) {\r\n throw new Error(\"Length must be a positive integer.\");\r\n }\r\n\r\n return Array.from({ length }, () => Math.random().toString(36)[2]).join(\"\");\r\n}","/**\r\n * Clamps a number within the inclusive lower and upper bounds\r\n * @param number - The number to clamp\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns The clamped number\r\n */\r\nexport function clamp(number: number, lower: number, upper: number): number {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return Math.min(Math.max(number, lower), upper);\r\n}\r\n\r\n/**\r\n * Checks if a number is within the inclusive range\r\n * @param number - The number to check\r\n * @param lower - The lower bound\r\n * @param upper - The upper bound\r\n * @returns True if the number is within the range\r\n */\r\nexport function inRange(number: number, lower: number, upper: number): boolean {\r\n if (typeof number !== 'number' || typeof lower !== 'number' || typeof upper !== 'number') {\r\n throw new Error('All arguments must be numbers');\r\n }\r\n \r\n if (lower > upper) {\r\n throw new Error('Lower bound must be less than or equal to upper bound');\r\n }\r\n \r\n return number >= lower && number <= upper;\r\n}\r\n\r\n\r\nexport const convertToInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n\r\n return +parseInt(data);\r\n};\r\n\r\nexport const convertToTwoDecimalInt = (data: any): number => {\r\n if (isNaN(data)) {\r\n throw new Error('Invalid input: not a number');\r\n }\r\n if (data === null || data === undefined) {\r\n throw new Error('Invalid input: null or undefined');\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = data + '';\r\n }\r\n return +parseFloat(data).toFixed(2);\r\n};\r\n\r\nexport const randomNumberWithFixedLength = (length: number): number => {\r\n if (length <= 0 || !Number.isInteger(length)) {\r\n throw new Error('Length must be a positive integer.');\r\n }\r\n return Math.floor(\r\n Math.pow(10, length - 1) +\r\n Math.random() * (9 * Math.pow(10, length - 1))\r\n );\r\n};\r\n","type TSleepParams ={\r\n milliseconds?: number;\r\n seconds?: number;\r\n minutes?: number;\r\n until?: {\r\n unixTimestamp?: number;\r\n };\r\n random?:{\r\n milliseconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n seconds?: {\r\n min: number;\r\n max: number;\r\n }\r\n minutes?: {\r\n min: number;\r\n max: number;\r\n }\r\n }\r\n}\r\n\r\ntype TSleepReturn = Promise<void>;\r\n\r\n/**\r\n * Sleep function that supports various delay options\r\n * @param params - Sleep parameters including fixed delays, random delays, or until timestamp\r\n * @returns Promise that resolves after the specified delay\r\n * @throws Error if invalid parameters are provided\r\n */\r\nexport const sleep = (params: TSleepParams): TSleepReturn => {\r\n return new Promise((resolve, reject) => {\r\n let delayMs = 0;\r\n\r\n try {\r\n // Validate input parameters\r\n if (!params || Object.keys(params).length === 0) {\r\n throw new Error('Sleep parameters cannot be empty');\r\n }\r\n\r\n // Handle sleeping until a specific timestamp\r\n if (params.until?.unixTimestamp) {\r\n const now = Date.now();\r\n const targetTime = params.until.unixTimestamp * 1000; // Convert to milliseconds\r\n delayMs = Math.max(0, targetTime - now);\r\n \r\n // If the timestamp is in the past, resolve immediately\r\n if (delayMs === 0) {\r\n resolve();\r\n return;\r\n }\r\n }\r\n // Handle random delays\r\n else if (params.random) {\r\n if (params.random.milliseconds) {\r\n const { min, max } = params.random.milliseconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random milliseconds range');\r\n }\r\n delayMs = Math.random() * (max - min) + min;\r\n } else if (params.random.seconds) {\r\n const { min, max } = params.random.seconds;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random seconds range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 1000;\r\n } else if (params.random.minutes) {\r\n const { min, max } = params.random.minutes;\r\n if (min < 0 || max < 0 || min > max) {\r\n throw new Error('Invalid random minutes range');\r\n }\r\n delayMs = (Math.random() * (max - min) + min) * 60 * 1000;\r\n } else {\r\n throw new Error('Random delay type must be specified (milliseconds, seconds, or minutes)');\r\n }\r\n }\r\n // Handle fixed delays\r\n else {\r\n if (params.milliseconds !== undefined) {\r\n if (params.milliseconds < 0) {\r\n throw new Error('Milliseconds cannot be negative');\r\n }\r\n delayMs += params.milliseconds;\r\n }\r\n if (params.seconds !== undefined) {\r\n if (params.seconds < 0) {\r\n throw new Error('Seconds cannot be negative');\r\n }\r\n delayMs += params.seconds * 1000;\r\n }\r\n if (params.minutes !== undefined) {\r\n if (params.minutes < 0) {\r\n throw new Error('Minutes cannot be negative');\r\n }\r\n delayMs += params.minutes * 60 * 1000;\r\n }\r\n\r\n // If no valid delay was specified\r\n if (delayMs === 0 && !params.milliseconds && !params.seconds && !params.minutes) {\r\n throw new Error('At least one delay parameter must be specified');\r\n }\r\n }\r\n\r\n // Ensure delay is not too large (prevent potential issues)\r\n const MAX_DELAY = 2147483647; // Maximum value for setTimeout\r\n if (delayMs > MAX_DELAY) {\r\n throw new Error(`Delay too large. Maximum delay is ${MAX_DELAY}ms`);\r\n }\r\n\r\n setTimeout(resolve, Math.floor(delayMs));\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of milliseconds\r\n * @param ms - Number of milliseconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMs = (ms: number): TSleepReturn => {\r\n return sleep({ milliseconds: ms });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of seconds\r\n * @param seconds - Number of seconds to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepSeconds = (seconds: number): TSleepReturn => {\r\n return sleep({ seconds });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep for a specific number of minutes\r\n * @param minutes - Number of minutes to sleep\r\n * @returns Promise that resolves after the specified delay\r\n */\r\nexport const sleepMinutes = (minutes: number): TSleepReturn => {\r\n return sleep({ minutes });\r\n};\r\n\r\n/**\r\n * Convenience function to sleep until a specific Unix timestamp\r\n * @param unixTimestamp - Unix timestamp (in seconds) to sleep until\r\n * @returns Promise that resolves at the specified timestamp\r\n */\r\nexport const sleepUntil = (unixTimestamp: number): TSleepReturn => {\r\n return sleep({ until: { unixTimestamp } });\r\n};\r\n\r\n// Export the type definitions for consumers\r\nexport type { TSleepParams, TSleepReturn };","/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in milliseconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in milliseconds\r\n */\r\nexport const getUnixTimestampMs = (date?: Date | string | number): number => {\r\n if (date === undefined) {\r\n return Date.now()\r\n }\r\n\r\n if (typeof date === \"number\") {\r\n const testDate = new Date(date)\r\n if (isNaN(testDate.getTime())) {\r\n throw new Error(\"Invalid timestamp provided\")\r\n }\r\n\r\n // Timestamps should be positive and not too far in the future\r\n const now = Date.now()\r\n const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1000 // 100 years\r\n\r\n if (date < 0 || date > hundredYearsFromNow) {\r\n throw new Error(\"Timestamp is outside valid range\")\r\n }\r\n\r\n return date\r\n }\r\n\r\n const dateObj = new Date(date)\r\n\r\n if (isNaN(dateObj.getTime())) {\r\n throw new Error(\"Invalid date provided\")\r\n }\r\n\r\n return dateObj.getTime()\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in seconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in seconds\r\n */\r\nexport const getUnixTimestamp = (date?: Date | string | number): number => {\r\n return Math.floor(getUnixTimestampMs(date) / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n","/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return (\r\n typeof process !== \"undefined\" &&\r\n process.versions != null &&\r\n process.versions.node != null\r\n );\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return (\r\n typeof (globalThis as any).importScripts === \"function\" &&\r\n typeof window === \"undefined\"\r\n );\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): \"node\" | \"browser\" | \"webworker\" | \"unknown\" {\r\n if (isNodeEnvironment()) return \"node\";\r\n if (isBrowserEnvironment()) return \"browser\";\r\n if (isWebWorkerEnvironment()) return \"webworker\";\r\n return \"unknown\";\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = \"EnvironmentError\";\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires Node.js environment\",\r\n \"node\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires browser environment\",\r\n \"browser\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n","/**\r\n * Helper function for enum filtering\r\n * Checks if a search value exists in an enum array and returns it with proper typing\r\n * @param enumArray - Array of enum values to search in\r\n * @param searchValue - Value to search for\r\n * @returns The typed enum value if found, undefined otherwise\r\n * @example\r\n * ```ts\r\n * const Status = ['active', 'inactive', 'pending'] as const;\r\n * const result = parseEnumValue(Status, 'active'); // 'active'\r\n * const invalid = parseEnumValue(Status, 'unknown'); // undefined\r\n * ```\r\n */\r\nexport const parseEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] | undefined => {\r\n return enumArray.includes(value as T[number])\r\n ? (value as T[number])\r\n : undefined\r\n}\r\n\r\nexport const requireEnumValue = <T extends readonly string[]>(\r\n enumArray: T,\r\n value: string\r\n): T[number] => {\r\n if (!enumArray.includes(value as T[number])) {\r\n throw new Error(`Invalid enum value: ${value}`)\r\n }\r\n return value as T[number]\r\n}\r\n"]}
|
package/dist/time/index.cjs
CHANGED
|
@@ -17,11 +17,30 @@ function convertToSeconds(options = {}) {
|
|
|
17
17
|
const SECONDS_PER_YEAR = 60 * 60 * 24 * 365;
|
|
18
18
|
return seconds + minutes * SECONDS_PER_MINUTE + hours * SECONDS_PER_HOUR + days * SECONDS_PER_DAY + months * SECONDS_PER_MONTH + years * SECONDS_PER_YEAR;
|
|
19
19
|
}
|
|
20
|
-
var getUnixTimestampMs = () => {
|
|
21
|
-
|
|
20
|
+
var getUnixTimestampMs = (date) => {
|
|
21
|
+
if (date === void 0) {
|
|
22
|
+
return Date.now();
|
|
23
|
+
}
|
|
24
|
+
if (typeof date === "number") {
|
|
25
|
+
const testDate = new Date(date);
|
|
26
|
+
if (isNaN(testDate.getTime())) {
|
|
27
|
+
throw new Error("Invalid timestamp provided");
|
|
28
|
+
}
|
|
29
|
+
const now = Date.now();
|
|
30
|
+
const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1e3;
|
|
31
|
+
if (date < 0 || date > hundredYearsFromNow) {
|
|
32
|
+
throw new Error("Timestamp is outside valid range");
|
|
33
|
+
}
|
|
34
|
+
return date;
|
|
35
|
+
}
|
|
36
|
+
const dateObj = new Date(date);
|
|
37
|
+
if (isNaN(dateObj.getTime())) {
|
|
38
|
+
throw new Error("Invalid date provided");
|
|
39
|
+
}
|
|
40
|
+
return dateObj.getTime();
|
|
22
41
|
};
|
|
23
|
-
var getUnixTimestamp = () => {
|
|
24
|
-
return Math.floor(getUnixTimestampMs() / 1e3);
|
|
42
|
+
var getUnixTimestamp = (date) => {
|
|
43
|
+
return Math.floor(getUnixTimestampMs(date) / 1e3);
|
|
25
44
|
};
|
|
26
45
|
var getFullYear = (date) => {
|
|
27
46
|
const targetDate = date || /* @__PURE__ */ new Date();
|
package/dist/time/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/time/index.ts"],"names":[],"mappings":";;;AAWO,SAAS,gBAAA,CACd,OAAA,GAOI,EAAC,EACG;AACR,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,CAAA;AAAA,IACV,OAAA,GAAU,CAAA;AAAA,IACV,KAAA,GAAQ,CAAA;AAAA,IACR,IAAA,GAAO,CAAA;AAAA,IACP,MAAA,GAAS,CAAA;AAAA,IACT,KAAA,GAAQ;AAAA,GACV,GAAI,OAAA;AAGJ,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,EAAA,MAAM,mBAAmB,EAAA,GAAK,EAAA;AAC9B,EAAA,MAAM,eAAA,GAAkB,KAAK,EAAA,GAAK,EAAA;AAClC,EAAA,MAAM,iBAAA,GAAoB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAExC,EAAA,OACE,OAAA,GACA,UAAU,kBAAA,GACV,KAAA,GAAQ,mBACR,IAAA,GAAO,eAAA,GACP,MAAA,GAAS,iBAAA,GACT,KAAA,GAAQ,gBAAA;AAEZ;
|
|
1
|
+
{"version":3,"sources":["../../src/time/index.ts"],"names":[],"mappings":";;;AAWO,SAAS,gBAAA,CACd,OAAA,GAOI,EAAC,EACG;AACR,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,CAAA;AAAA,IACV,OAAA,GAAU,CAAA;AAAA,IACV,KAAA,GAAQ,CAAA;AAAA,IACR,IAAA,GAAO,CAAA;AAAA,IACP,MAAA,GAAS,CAAA;AAAA,IACT,KAAA,GAAQ;AAAA,GACV,GAAI,OAAA;AAGJ,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,EAAA,MAAM,mBAAmB,EAAA,GAAK,EAAA;AAC9B,EAAA,MAAM,eAAA,GAAkB,KAAK,EAAA,GAAK,EAAA;AAClC,EAAA,MAAM,iBAAA,GAAoB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAExC,EAAA,OACE,OAAA,GACA,UAAU,kBAAA,GACV,KAAA,GAAQ,mBACR,IAAA,GAAO,eAAA,GACP,MAAA,GAAS,iBAAA,GACT,KAAA,GAAQ,gBAAA;AAEZ;AAOO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAA0C;AAC3E,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,OAAO,KAAK,GAAA,EAAI;AAAA;AAGlB,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,QAAA,GAAW,IAAI,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,OAAA,EAAS,CAAA,EAAG;AAC7B,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA;AAI9C,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,IAAA,MAAM,sBAAsB,GAAA,GAAM,GAAA,GAAM,GAAA,GAAM,EAAA,GAAK,KAAK,EAAA,GAAK,GAAA;AAE7D,IAAA,IAAI,IAAA,GAAO,CAAA,IAAK,IAAA,GAAO,mBAAA,EAAqB;AAC1C,MAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA;AAGpD,IAAA,OAAO,IAAA;AAAA;AAGT,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAI,CAAA;AAE7B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAG;AAC5B,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA;AAGzC,EAAA,OAAO,QAAQ,OAAA,EAAQ;AACzB;AAOO,IAAM,gBAAA,GAAmB,CAAC,IAAA,KAA0C;AACzE,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmB,IAAI,IAAI,GAAI,CAAA;AACnD;AAOO,IAAM,WAAA,GAAc,CAAC,IAAA,KAAwB;AAClD,EAAA,MAAM,UAAA,GAAa,IAAA,oBAAQ,IAAI,IAAA,EAAK;AACpC,EAAA,OAAO,WAAW,WAAA,EAAY;AAChC","file":"index.cjs","sourcesContent":["/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in milliseconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in milliseconds\r\n */\r\nexport const getUnixTimestampMs = (date?: Date | string | number): number => {\r\n if (date === undefined) {\r\n return Date.now()\r\n }\r\n\r\n if (typeof date === \"number\") {\r\n const testDate = new Date(date)\r\n if (isNaN(testDate.getTime())) {\r\n throw new Error(\"Invalid timestamp provided\")\r\n }\r\n\r\n // Timestamps should be positive and not too far in the future\r\n const now = Date.now()\r\n const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1000 // 100 years\r\n\r\n if (date < 0 || date > hundredYearsFromNow) {\r\n throw new Error(\"Timestamp is outside valid range\")\r\n }\r\n\r\n return date\r\n }\r\n\r\n const dateObj = new Date(date)\r\n\r\n if (isNaN(dateObj.getTime())) {\r\n throw new Error(\"Invalid date provided\")\r\n }\r\n\r\n return dateObj.getTime()\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in seconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in seconds\r\n */\r\nexport const getUnixTimestamp = (date?: Date | string | number): number => {\r\n return Math.floor(getUnixTimestampMs(date) / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n"]}
|
package/dist/time/index.d.cts
CHANGED
|
@@ -17,8 +17,18 @@ declare function convertToSeconds(options?: {
|
|
|
17
17
|
months?: number;
|
|
18
18
|
years?: number;
|
|
19
19
|
}): number;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Gets Unix timestamp in milliseconds
|
|
22
|
+
* @param date - Optional Date object, date string, or timestamp. If not provided, uses current date
|
|
23
|
+
* @returns Unix timestamp in milliseconds
|
|
24
|
+
*/
|
|
25
|
+
declare const getUnixTimestampMs: (date?: Date | string | number) => number;
|
|
26
|
+
/**
|
|
27
|
+
* Gets Unix timestamp in seconds
|
|
28
|
+
* @param date - Optional Date object, date string, or timestamp. If not provided, uses current date
|
|
29
|
+
* @returns Unix timestamp in seconds
|
|
30
|
+
*/
|
|
31
|
+
declare const getUnixTimestamp: (date?: Date | string | number) => number;
|
|
22
32
|
/**
|
|
23
33
|
* Gets the full year from a Date object or the current date
|
|
24
34
|
* @param date - Optional Date object. If not provided, uses current date
|
package/dist/time/index.d.ts
CHANGED
|
@@ -17,8 +17,18 @@ declare function convertToSeconds(options?: {
|
|
|
17
17
|
months?: number;
|
|
18
18
|
years?: number;
|
|
19
19
|
}): number;
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Gets Unix timestamp in milliseconds
|
|
22
|
+
* @param date - Optional Date object, date string, or timestamp. If not provided, uses current date
|
|
23
|
+
* @returns Unix timestamp in milliseconds
|
|
24
|
+
*/
|
|
25
|
+
declare const getUnixTimestampMs: (date?: Date | string | number) => number;
|
|
26
|
+
/**
|
|
27
|
+
* Gets Unix timestamp in seconds
|
|
28
|
+
* @param date - Optional Date object, date string, or timestamp. If not provided, uses current date
|
|
29
|
+
* @returns Unix timestamp in seconds
|
|
30
|
+
*/
|
|
31
|
+
declare const getUnixTimestamp: (date?: Date | string | number) => number;
|
|
22
32
|
/**
|
|
23
33
|
* Gets the full year from a Date object or the current date
|
|
24
34
|
* @param date - Optional Date object. If not provided, uses current date
|
package/dist/time/index.js
CHANGED
|
@@ -15,11 +15,30 @@ function convertToSeconds(options = {}) {
|
|
|
15
15
|
const SECONDS_PER_YEAR = 60 * 60 * 24 * 365;
|
|
16
16
|
return seconds + minutes * SECONDS_PER_MINUTE + hours * SECONDS_PER_HOUR + days * SECONDS_PER_DAY + months * SECONDS_PER_MONTH + years * SECONDS_PER_YEAR;
|
|
17
17
|
}
|
|
18
|
-
var getUnixTimestampMs = () => {
|
|
19
|
-
|
|
18
|
+
var getUnixTimestampMs = (date) => {
|
|
19
|
+
if (date === void 0) {
|
|
20
|
+
return Date.now();
|
|
21
|
+
}
|
|
22
|
+
if (typeof date === "number") {
|
|
23
|
+
const testDate = new Date(date);
|
|
24
|
+
if (isNaN(testDate.getTime())) {
|
|
25
|
+
throw new Error("Invalid timestamp provided");
|
|
26
|
+
}
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1e3;
|
|
29
|
+
if (date < 0 || date > hundredYearsFromNow) {
|
|
30
|
+
throw new Error("Timestamp is outside valid range");
|
|
31
|
+
}
|
|
32
|
+
return date;
|
|
33
|
+
}
|
|
34
|
+
const dateObj = new Date(date);
|
|
35
|
+
if (isNaN(dateObj.getTime())) {
|
|
36
|
+
throw new Error("Invalid date provided");
|
|
37
|
+
}
|
|
38
|
+
return dateObj.getTime();
|
|
20
39
|
};
|
|
21
|
-
var getUnixTimestamp = () => {
|
|
22
|
-
return Math.floor(getUnixTimestampMs() / 1e3);
|
|
40
|
+
var getUnixTimestamp = (date) => {
|
|
41
|
+
return Math.floor(getUnixTimestampMs(date) / 1e3);
|
|
23
42
|
};
|
|
24
43
|
var getFullYear = (date) => {
|
|
25
44
|
const targetDate = date || /* @__PURE__ */ new Date();
|
package/dist/time/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/time/index.ts"],"names":[],"mappings":";AAWO,SAAS,gBAAA,CACd,OAAA,GAOI,EAAC,EACG;AACR,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,CAAA;AAAA,IACV,OAAA,GAAU,CAAA;AAAA,IACV,KAAA,GAAQ,CAAA;AAAA,IACR,IAAA,GAAO,CAAA;AAAA,IACP,MAAA,GAAS,CAAA;AAAA,IACT,KAAA,GAAQ;AAAA,GACV,GAAI,OAAA;AAGJ,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,EAAA,MAAM,mBAAmB,EAAA,GAAK,EAAA;AAC9B,EAAA,MAAM,eAAA,GAAkB,KAAK,EAAA,GAAK,EAAA;AAClC,EAAA,MAAM,iBAAA,GAAoB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAExC,EAAA,OACE,OAAA,GACA,UAAU,kBAAA,GACV,KAAA,GAAQ,mBACR,IAAA,GAAO,eAAA,GACP,MAAA,GAAS,iBAAA,GACT,KAAA,GAAQ,gBAAA;AAEZ;
|
|
1
|
+
{"version":3,"sources":["../../src/time/index.ts"],"names":[],"mappings":";AAWO,SAAS,gBAAA,CACd,OAAA,GAOI,EAAC,EACG;AACR,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,CAAA;AAAA,IACV,OAAA,GAAU,CAAA;AAAA,IACV,KAAA,GAAQ,CAAA;AAAA,IACR,IAAA,GAAO,CAAA;AAAA,IACP,MAAA,GAAS,CAAA;AAAA,IACT,KAAA,GAAQ;AAAA,GACV,GAAI,OAAA;AAGJ,EAAA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,EAAA,MAAM,mBAAmB,EAAA,GAAK,EAAA;AAC9B,EAAA,MAAM,eAAA,GAAkB,KAAK,EAAA,GAAK,EAAA;AAClC,EAAA,MAAM,iBAAA,GAAoB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,GAAA;AAExC,EAAA,OACE,OAAA,GACA,UAAU,kBAAA,GACV,KAAA,GAAQ,mBACR,IAAA,GAAO,eAAA,GACP,MAAA,GAAS,iBAAA,GACT,KAAA,GAAQ,gBAAA;AAEZ;AAOO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAA0C;AAC3E,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,OAAO,KAAK,GAAA,EAAI;AAAA;AAGlB,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,QAAA,GAAW,IAAI,IAAA,CAAK,IAAI,CAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,OAAA,EAAS,CAAA,EAAG;AAC7B,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA;AAI9C,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,IAAA,MAAM,sBAAsB,GAAA,GAAM,GAAA,GAAM,GAAA,GAAM,EAAA,GAAK,KAAK,EAAA,GAAK,GAAA;AAE7D,IAAA,IAAI,IAAA,GAAO,CAAA,IAAK,IAAA,GAAO,mBAAA,EAAqB;AAC1C,MAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA;AAGpD,IAAA,OAAO,IAAA;AAAA;AAGT,EAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,IAAI,CAAA;AAE7B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAG;AAC5B,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA;AAGzC,EAAA,OAAO,QAAQ,OAAA,EAAQ;AACzB;AAOO,IAAM,gBAAA,GAAmB,CAAC,IAAA,KAA0C;AACzE,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,kBAAA,CAAmB,IAAI,IAAI,GAAI,CAAA;AACnD;AAOO,IAAM,WAAA,GAAc,CAAC,IAAA,KAAwB;AAClD,EAAA,MAAM,UAAA,GAAa,IAAA,oBAAQ,IAAI,IAAA,EAAK;AACpC,EAAA,OAAO,WAAW,WAAA,EAAY;AAChC","file":"index.js","sourcesContent":["/**\r\n * Converts various time units to total seconds\r\n * @param options - Object containing optional time units\r\n * @param options.seconds - Number of seconds (default: 0)\r\n * @param options.minutes - Number of minutes (default: 0)\r\n * @param options.hours - Number of hours (default: 0)\r\n * @param options.days - Number of days (default: 0)\r\n * @param options.months - Number of months (default: 0, assumes 30 days per month)\r\n * @param options.years - Number of years (default: 0, assumes 365 days per year)\r\n * @returns Total time in seconds\r\n */\r\nexport function convertToSeconds(\r\n options: {\r\n seconds?: number\r\n minutes?: number\r\n hours?: number\r\n days?: number\r\n months?: number\r\n years?: number\r\n } = {}\r\n): number {\r\n const {\r\n seconds = 0,\r\n minutes = 0,\r\n hours = 0,\r\n days = 0,\r\n months = 0,\r\n years = 0,\r\n } = options\r\n\r\n // Time conversion constants\r\n const SECONDS_PER_MINUTE = 60\r\n const SECONDS_PER_HOUR = 60 * 60\r\n const SECONDS_PER_DAY = 60 * 60 * 24\r\n const SECONDS_PER_MONTH = 60 * 60 * 24 * 30 // Assuming 30 days per month\r\n const SECONDS_PER_YEAR = 60 * 60 * 24 * 365 // Assuming 365 days per year\r\n\r\n return (\r\n seconds +\r\n minutes * SECONDS_PER_MINUTE +\r\n hours * SECONDS_PER_HOUR +\r\n days * SECONDS_PER_DAY +\r\n months * SECONDS_PER_MONTH +\r\n years * SECONDS_PER_YEAR\r\n )\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in milliseconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in milliseconds\r\n */\r\nexport const getUnixTimestampMs = (date?: Date | string | number): number => {\r\n if (date === undefined) {\r\n return Date.now()\r\n }\r\n\r\n if (typeof date === \"number\") {\r\n const testDate = new Date(date)\r\n if (isNaN(testDate.getTime())) {\r\n throw new Error(\"Invalid timestamp provided\")\r\n }\r\n\r\n // Timestamps should be positive and not too far in the future\r\n const now = Date.now()\r\n const hundredYearsFromNow = now + 100 * 365 * 24 * 60 * 60 * 1000 // 100 years\r\n\r\n if (date < 0 || date > hundredYearsFromNow) {\r\n throw new Error(\"Timestamp is outside valid range\")\r\n }\r\n\r\n return date\r\n }\r\n\r\n const dateObj = new Date(date)\r\n\r\n if (isNaN(dateObj.getTime())) {\r\n throw new Error(\"Invalid date provided\")\r\n }\r\n\r\n return dateObj.getTime()\r\n}\r\n\r\n/**\r\n * Gets Unix timestamp in seconds\r\n * @param date - Optional Date object, date string, or timestamp. If not provided, uses current date\r\n * @returns Unix timestamp in seconds\r\n */\r\nexport const getUnixTimestamp = (date?: Date | string | number): number => {\r\n return Math.floor(getUnixTimestampMs(date) / 1000)\r\n}\r\n\r\n/**\r\n * Gets the full year from a Date object or the current date\r\n * @param date - Optional Date object. If not provided, uses current date\r\n * @returns The full year (4 digits)\r\n */\r\nexport const getFullYear = (date?: Date): number => {\r\n const targetDate = date || new Date()\r\n return targetDate.getFullYear()\r\n}\r\n"]}
|
package/dist/utils/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAQO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAQO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,OACE,OAAO,YAAY,WAAA,IACnB,OAAA,CAAQ,YAAY,IAAA,IACpB,OAAA,CAAQ,SAAS,IAAA,IAAQ,IAAA;AAE7B;AAMO,SAAS,oBAAA,GAAgC;AAC9C,EAAA,OAAO,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,QAAA,KAAa,WAAA;AAC9D;AAMO,SAAS,sBAAA,GAAkC;AAChD,EAAA,OACE,OAAQ,UAAA,CAAmB,aAAA,KAAkB,UAAA,IAC7C,OAAO,MAAA,KAAW,WAAA;AAEtB;AAMO,SAAS,cAAA,GAA+D;AAC7E,EAAA,IAAI,iBAAA,IAAqB,OAAO,MAAA;AAChC,EAAA,IAAI,oBAAA,IAAwB,OAAO,SAAA;AACnC,EAAA,IAAI,sBAAA,IAA0B,OAAO,WAAA;AACrC,EAAA,OAAO,SAAA;AACT;AAKO,IAAM,gBAAA,GAAN,cAA+B,KAAA,CAAM;AAAA,EAC1C,WAAA,CACE,OAAA,EACgB,mBAAA,EACA,kBAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,mBAAA,GAAA,mBAAA;AACA,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA;AAEhB;AAMO,SAAS,qBAAA,GAA8B;AAC5C,EAAA,IAAI,CAAC,mBAAkB,EAAG;AACxB,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,iDAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAe,KACjB;AAAA;AAEJ;AAMO,SAAS,wBAAA,GAAiC;AAC/C,EAAA,IAAI,CAAC,sBAAqB,EAAG;AAC3B,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,iDAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAe,KACjB;AAAA;AAEJ","file":"index.cjs","sourcesContent":["/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return (\r\n typeof process !== \"undefined\" &&\r\n process.versions != null &&\r\n process.versions.node != null\r\n );\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return (\r\n typeof (globalThis as any).importScripts === \"function\" &&\r\n typeof window === \"undefined\"\r\n );\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): \"node\" | \"browser\" | \"webworker\" | \"unknown\" {\r\n if (isNodeEnvironment()) return \"node\";\r\n if (isBrowserEnvironment()) return \"browser\";\r\n if (isWebWorkerEnvironment()) return \"webworker\";\r\n return \"unknown\";\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = \"EnvironmentError\";\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires Node.js environment\",\r\n \"node\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires browser environment\",\r\n \"browser\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n"]}
|
package/dist/utils/index.d.cts
CHANGED
|
@@ -20,7 +20,7 @@ declare function isWebWorkerEnvironment(): boolean;
|
|
|
20
20
|
* Gets the current runtime environment
|
|
21
21
|
* @returns 'node' | 'browser' | 'webworker' | 'unknown'
|
|
22
22
|
*/
|
|
23
|
-
declare function getEnvironment():
|
|
23
|
+
declare function getEnvironment(): "node" | "browser" | "webworker" | "unknown";
|
|
24
24
|
/**
|
|
25
25
|
* Error thrown when functionality is not supported in the current environment
|
|
26
26
|
*/
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ declare function isWebWorkerEnvironment(): boolean;
|
|
|
20
20
|
* Gets the current runtime environment
|
|
21
21
|
* @returns 'node' | 'browser' | 'webworker' | 'unknown'
|
|
22
22
|
*/
|
|
23
|
-
declare function getEnvironment():
|
|
23
|
+
declare function getEnvironment(): "node" | "browser" | "webworker" | "unknown";
|
|
24
24
|
/**
|
|
25
25
|
* Error thrown when functionality is not supported in the current environment
|
|
26
26
|
*/
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAQO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAQO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,OACE,OAAO,YAAY,WAAA,IACnB,OAAA,CAAQ,YAAY,IAAA,IACpB,OAAA,CAAQ,SAAS,IAAA,IAAQ,IAAA;AAE7B;AAMO,SAAS,oBAAA,GAAgC;AAC9C,EAAA,OAAO,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,QAAA,KAAa,WAAA;AAC9D;AAMO,SAAS,sBAAA,GAAkC;AAChD,EAAA,OACE,OAAQ,UAAA,CAAmB,aAAA,KAAkB,UAAA,IAC7C,OAAO,MAAA,KAAW,WAAA;AAEtB;AAMO,SAAS,cAAA,GAA+D;AAC7E,EAAA,IAAI,iBAAA,IAAqB,OAAO,MAAA;AAChC,EAAA,IAAI,oBAAA,IAAwB,OAAO,SAAA;AACnC,EAAA,IAAI,sBAAA,IAA0B,OAAO,WAAA;AACrC,EAAA,OAAO,SAAA;AACT;AAKO,IAAM,gBAAA,GAAN,cAA+B,KAAA,CAAM;AAAA,EAC1C,WAAA,CACE,OAAA,EACgB,mBAAA,EACA,kBAAA,EAChB;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHG,IAAA,IAAA,CAAA,mBAAA,GAAA,mBAAA;AACA,IAAA,IAAA,CAAA,kBAAA,GAAA,kBAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AAAA;AAEhB;AAMO,SAAS,qBAAA,GAA8B;AAC5C,EAAA,IAAI,CAAC,mBAAkB,EAAG;AACxB,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,iDAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAe,KACjB;AAAA;AAEJ;AAMO,SAAS,wBAAA,GAAiC;AAC/C,EAAA,IAAI,CAAC,sBAAqB,EAAG;AAC3B,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,iDAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAe,KACjB;AAAA;AAEJ","file":"index.js","sourcesContent":["/**\r\n * Environment detection utilities\r\n */\r\n\r\n/**\r\n * Determines if the current environment is Node.js\r\n * @returns true if running in Node.js, false otherwise\r\n */\r\nexport function isNodeEnvironment(): boolean {\r\n return (\r\n typeof process !== \"undefined\" &&\r\n process.versions != null &&\r\n process.versions.node != null\r\n );\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a browser\r\n * @returns true if running in a browser, false otherwise\r\n */\r\nexport function isBrowserEnvironment(): boolean {\r\n return typeof window !== \"undefined\" && typeof document !== \"undefined\";\r\n}\r\n\r\n/**\r\n * Determines if the current environment is a web worker\r\n * @returns true if running in a web worker, false otherwise\r\n */\r\nexport function isWebWorkerEnvironment(): boolean {\r\n return (\r\n typeof (globalThis as any).importScripts === \"function\" &&\r\n typeof window === \"undefined\"\r\n );\r\n}\r\n\r\n/**\r\n * Gets the current runtime environment\r\n * @returns 'node' | 'browser' | 'webworker' | 'unknown'\r\n */\r\nexport function getEnvironment(): \"node\" | \"browser\" | \"webworker\" | \"unknown\" {\r\n if (isNodeEnvironment()) return \"node\";\r\n if (isBrowserEnvironment()) return \"browser\";\r\n if (isWebWorkerEnvironment()) return \"webworker\";\r\n return \"unknown\";\r\n}\r\n\r\n/**\r\n * Error thrown when functionality is not supported in the current environment\r\n */\r\nexport class EnvironmentError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly requiredEnvironment: string,\r\n public readonly currentEnvironment: string\r\n ) {\r\n super(message);\r\n this.name = \"EnvironmentError\";\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is Node.js\r\n * @throws {EnvironmentError} if not running in Node.js\r\n */\r\nexport function assertNodeEnvironment(): void {\r\n if (!isNodeEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires Node.js environment\",\r\n \"node\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Asserts that the current environment is a browser\r\n * @throws {EnvironmentError} if not running in a browser\r\n */\r\nexport function assertBrowserEnvironment(): void {\r\n if (!isBrowserEnvironment()) {\r\n throw new EnvironmentError(\r\n \"This functionality requires browser environment\",\r\n \"browser\",\r\n getEnvironment()\r\n );\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digicroz/js-kit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Modern TypeScript utility library with tree-shaking support - Array, String, Number, Sleep, and Time utilities for JavaScript and TypeScript projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -56,6 +56,9 @@
|
|
|
56
56
|
],
|
|
57
57
|
"types": [
|
|
58
58
|
"./dist/types/index.d.ts"
|
|
59
|
+
],
|
|
60
|
+
"enum": [
|
|
61
|
+
"./dist/enum/index.d.ts"
|
|
59
62
|
]
|
|
60
63
|
}
|
|
61
64
|
},
|
|
@@ -125,6 +128,14 @@
|
|
|
125
128
|
"import": "./dist/types/index.js",
|
|
126
129
|
"default": "./dist/types/index.js",
|
|
127
130
|
"require": "./dist/types/index.cjs"
|
|
131
|
+
},
|
|
132
|
+
"./enum": {
|
|
133
|
+
"types": "./dist/enum/index.d.ts",
|
|
134
|
+
"react-native": "./dist/enum/index.js",
|
|
135
|
+
"module": "./dist/enum/index.js",
|
|
136
|
+
"import": "./dist/enum/index.js",
|
|
137
|
+
"default": "./dist/enum/index.js",
|
|
138
|
+
"require": "./dist/enum/index.cjs"
|
|
128
139
|
}
|
|
129
140
|
},
|
|
130
141
|
"files": [
|
|
@@ -164,5 +175,8 @@
|
|
|
164
175
|
"@types/node": "^24.3.0",
|
|
165
176
|
"tsup": "^8.5.0",
|
|
166
177
|
"typescript": "^5.4.0"
|
|
178
|
+
},
|
|
179
|
+
"dependencies": {
|
|
180
|
+
"ulidx": "^2.4.1"
|
|
167
181
|
}
|
|
168
182
|
}
|