advanced-js-kit
Version:
Modern TypeScript utility library with tree-shaking support - Array, String, Number, Network, Sleep, and JWT utilities for JavaScript and TypeScript projects
1 lines • 23.9 kB
Source Map (JSON)
{"version":3,"sources":["../../src/universal/array/index.ts","../../src/universal/string/capitalize.ts","../../src/universal/string/truncate.ts","../../src/universal/string/index.ts","../../src/universal/number/index.ts","../../src/universal/sleep/index.ts","../../src/universal/time/index.ts","../../src/universal/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(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} = {}): 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\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 * 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"]}