deque-typed
Version:
1 lines • 111 kB
Source Map (JSON)
{"version":3,"sources":["../../src/utils/utils.ts","../../src/data-structures/base/iterable-element-base.ts","../../src/data-structures/base/linear-base.ts","../../src/data-structures/queue/deque.ts","../../src/common/index.ts"],"names":["DFSOperation"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * data-structure-typed\n *\n * @author Pablo Zeng\n * @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>\n * @license MIT License\n */\nimport type { Comparable, ComparablePrimitive, Trampoline, TrampolineThunk } from '../types';\n\n/**\n * The function generates a random UUID (Universally Unique Identifier) in TypeScript.\n * @returns A randomly generated UUID (Universally Unique Identifier) in the format\n * 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' where each 'x' is replaced with a random hexadecimal\n * character.\n */\nexport const uuidV4 = function () {\n return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * The `arrayRemove` function removes elements from an array based on a specified predicate function\n * and returns the removed elements.\n * @param {T[]} array - An array of elements that you want to filter based on the provided predicate\n * function.\n * @param predicate - The `predicate` parameter is a function that takes three arguments:\n * @returns The `arrayRemove` function returns an array containing the elements that satisfy the given\n * `predicate` function.\n */\nexport const arrayRemove = function <T>(array: T[], predicate: (item: T, index: number, array: T[]) => boolean): T[] {\n let i = -1,\n len = array ? array.length : 0;\n const result = [];\n\n while (++i < len) {\n const value = array[i];\n if (predicate(value, i, array)) {\n result.push(value);\n Array.prototype.splice.call(array, i--, 1);\n len--;\n }\n }\n\n return result;\n};\n\n/**\n * The function `getMSB` returns the most significant bit of a given number.\n * @param {number} value - The `value` parameter is a number for which we want to find the position of\n * the Most Significant Bit (MSB). The function `getMSB` takes this number as input and calculates the\n * position of the MSB in its binary representation.\n * @returns The function `getMSB` returns the most significant bit (MSB) of the input `value`. If the\n * input value is less than or equal to 0, it returns 0. Otherwise, it calculates the position of the\n * MSB using the `Math.clz32` function and bitwise left shifts 1 to that position.\n */\nexport const getMSB = (value: number): number => {\n if (value <= 0) {\n return 0;\n }\n return 1 << (31 - Math.clz32(value));\n};\n\n/**\n * The `rangeCheck` function in TypeScript is used to validate if an index is within a specified range\n * and throws a `RangeError` with a custom message if it is out of bounds.\n * @param {number} index - The `index` parameter represents the value that you want to check if it\n * falls within a specified range.\n * @param {number} min - The `min` parameter represents the minimum value that the `index` should be\n * compared against in the `rangeCheck` function.\n * @param {number} max - The `max` parameter in the `rangeCheck` function represents the maximum value\n * that the `index` parameter is allowed to have. If the `index` is greater than this `max` value, a\n * `RangeError` will be thrown.\n * @param [message=Index out of bounds.] - The `message` parameter is a string that represents the\n * error message to be thrown if the index is out of bounds. By default, if no message is provided when\n * calling the `rangeCheck` function, the message \"Index out of bounds.\" will be used.\n */\nexport const rangeCheck = (index: number, min: number, max: number, message = 'Index out of bounds.'): void => {\n if (index < min || index > max) throw new RangeError(message);\n};\n\n/**\n * The function `throwRangeError` throws a RangeError with a custom message if called.\n * @param [message=The value is off-limits.] - The `message` parameter is a string that represents the\n * error message to be displayed when a `RangeError` is thrown. If no message is provided, the default\n * message is 'The value is off-limits.'.\n */\nexport const throwRangeError = (message = 'The value is off-limits.'): void => {\n throw new RangeError(message);\n};\n\n/**\n * The function `isWeakKey` checks if the input is an object or a function in TypeScript.\n * @param {unknown} input - The `input` parameter in the `isWeakKey` function is of type `unknown`,\n * which means it can be any type. The function checks if the `input` is an object (excluding `null`)\n * or a function, and returns a boolean indicating whether the `input` is a weak\n * @returns The function `isWeakKey` returns a boolean value indicating whether the input is an object\n * or a function.\n */\nexport const isWeakKey = (input: unknown): input is object => {\n const inputType = typeof input;\n return (inputType === 'object' && input !== null) || inputType === 'function';\n};\n\n/**\n * The function `calcMinUnitsRequired` calculates the minimum number of units required to accommodate a\n * given total quantity based on a specified unit size.\n * @param {number} totalQuantity - The `totalQuantity` parameter represents the total quantity of items\n * that need to be processed or handled.\n * @param {number} unitSize - The `unitSize` parameter represents the size of each unit or package. It\n * is used in the `calcMinUnitsRequired` function to calculate the minimum number of units required to\n * accommodate a total quantity of items.\n */\nexport const calcMinUnitsRequired = (totalQuantity: number, unitSize: number) =>\n Math.floor((totalQuantity + unitSize - 1) / unitSize);\n\n/**\n * The `roundFixed` function in TypeScript rounds a number to a specified number of decimal places.\n * @param {number} num - The `num` parameter is a number that you want to round to a certain number of\n * decimal places.\n * @param {number} [digit=10] - The `digit` parameter in the `roundFixed` function specifies the number\n * of decimal places to round the number to. By default, it is set to 10 if not provided explicitly.\n * @returns The function `roundFixed` returns a number that is rounded to the specified number of\n * decimal places (default is 10 decimal places).\n */\nexport const roundFixed = (num: number, digit: number = 10) => {\n const multiplier = Math.pow(10, digit);\n return Math.round(num * multiplier) / multiplier;\n};\n\n/**\n * The function `isPrimitiveComparable` checks if a value is a primitive type that can be compared.\n * @param {unknown} value - The `value` parameter in the `isPrimitiveComparable` function is of type\n * `unknown`, which means it can be any type. The function checks if the `value` is a primitive type\n * that can be compared, such as number, bigint, string, or boolean.\n * @returns The function `isPrimitiveComparable` returns a boolean value indicating whether the input\n * `value` is a primitive value that can be compared using standard comparison operators (<, >, <=,\n * >=).\n */\nfunction isPrimitiveComparable(value: unknown): value is ComparablePrimitive {\n const valueType = typeof value;\n if (valueType === 'number') return true;\n // if (valueType === 'number') return !Number.isNaN(value);\n return valueType === 'bigint' || valueType === 'string' || valueType === 'boolean';\n}\n\n/**\n * The function `tryObjectToPrimitive` attempts to convert an object to a comparable primitive value by\n * first checking the `valueOf` method and then the `toString` method.\n * @param {object} obj - The `obj` parameter in the `tryObjectToPrimitive` function is an object that\n * you want to convert to a primitive value. The function attempts to convert the object to a primitive\n * value by first checking if the object has a `valueOf` method. If the `valueOf` method exists, it\n * @returns The function `tryObjectToPrimitive` returns a value of type `ComparablePrimitive` if a\n * primitive comparable value is found within the object, or a string value if the object has a custom\n * `toString` method that does not return `'[object Object]'`. If neither condition is met, the\n * function returns `null`.\n */\nfunction tryObjectToPrimitive(obj: object): ComparablePrimitive | null {\n if (typeof obj.valueOf === 'function') {\n const valueOfResult = obj.valueOf();\n if (valueOfResult !== obj) {\n if (isPrimitiveComparable(valueOfResult)) return valueOfResult;\n if (typeof valueOfResult === 'object' && valueOfResult !== null) return tryObjectToPrimitive(valueOfResult);\n }\n }\n if (typeof obj.toString === 'function') {\n const stringResult = obj.toString();\n if (stringResult !== '[object Object]') return stringResult;\n }\n return null;\n}\n\n/**\n * The function `isComparable` in TypeScript checks if a value is comparable, handling primitive values\n * and objects with optional force comparison.\n * @param {unknown} value - The `value` parameter in the `isComparable` function represents the value\n * that you want to check if it is comparable. It can be of any type (`unknown`), and the function will\n * determine if it is comparable based on certain conditions.\n * @param [isForceObjectComparable=false] - The `isForceObjectComparable` parameter in the\n * `isComparable` function is a boolean flag that determines whether to treat non-primitive values as\n * comparable objects. When set to `true`, it forces the function to consider non-primitive values as\n * comparable objects, regardless of their type.\n * @returns The function `isComparable` returns a boolean value indicating whether the `value` is\n * considered comparable or not.\n */\nexport function isComparable(value: unknown, isForceObjectComparable = false): value is Comparable {\n if (value === null || value === undefined) return false;\n if (isPrimitiveComparable(value)) return true;\n\n if (typeof value !== 'object') return false;\n if (value instanceof Date) return true;\n // if (value instanceof Date) return !Number.isNaN(value.getTime());\n if (isForceObjectComparable) return true;\n const comparableValue = tryObjectToPrimitive(value);\n if (comparableValue === null || comparableValue === undefined) return false;\n return isPrimitiveComparable(comparableValue);\n}\n\n/**\n * Creates a trampoline thunk object.\n *\n * A \"thunk\" is a deferred computation — instead of performing a recursive call immediately,\n * it wraps the next step of the computation in a function. This allows recursive processes\n * to be executed iteratively, preventing stack overflows.\n *\n * @template T - The type of the final computation result.\n * @param computation - A function that, when executed, returns the next trampoline step.\n * @returns A TrampolineThunk object containing the deferred computation.\n */\nexport const makeTrampolineThunk = <T>(computation: () => Trampoline<T>): TrampolineThunk<T> => ({\n isThunk: true, // Marker indicating this is a thunk\n fn: computation // The deferred computation function\n});\n\n/**\n * Type guard to check whether a given value is a TrampolineThunk.\n *\n * This function is used to distinguish between a final computation result (value)\n * and a deferred computation (thunk).\n *\n * @template T - The type of the value being checked.\n * @param value - The value to test.\n * @returns True if the value is a valid TrampolineThunk, false otherwise.\n */\nexport const isTrampolineThunk = <T>(value: Trampoline<T>): value is TrampolineThunk<T> =>\n typeof value === 'object' && // Must be an object\n value !== null && // Must not be null\n 'isThunk' in value && // Must have the 'isThunk' property\n value.isThunk; // The flag must be true\n\n/**\n * Executes a trampoline computation until a final (non-thunk) result is obtained.\n *\n * The trampoline function repeatedly invokes the deferred computations (thunks)\n * in an iterative loop. This avoids deep recursive calls and prevents stack overflow,\n * which is particularly useful for implementing recursion in a stack-safe manner.\n *\n * @template T - The type of the final result.\n * @param initial - The initial Trampoline value or thunk to start execution from.\n * @returns The final result of the computation (a non-thunk value).\n */\nexport function trampoline<T>(initial: Trampoline<T>): T {\n let current = initial; // Start with the initial trampoline value\n while (isTrampolineThunk(current)) {\n // Keep unwrapping while we have thunks\n current = current.fn(); // Execute the deferred function to get the next step\n }\n return current; // Once no thunks remain, return the final result\n}\n\n/**\n * Wraps a recursive function inside a trampoline executor.\n *\n * This function transforms a potentially recursive function (that returns a Trampoline<Result>)\n * into a *stack-safe* function that executes iteratively using the `trampoline` runner.\n *\n * In other words, it allows you to write functions that look recursive,\n * but actually run in constant stack space.\n *\n * @template Args - The tuple type representing the argument list of the original function.\n * @template Result - The final return type after all trampoline steps are resolved.\n *\n * @param fn - A function that performs a single step of computation\n * and returns a Trampoline (either a final value or a deferred thunk).\n *\n * @returns A new function with the same arguments, but which automatically\n * runs the trampoline process and returns the *final result* instead\n * of a Trampoline.\n *\n * @example\n * // Example: Computing factorial in a stack-safe way\n * const factorial = makeTrampoline(function fact(n: number, acc: number = 1): Trampoline<number> {\n * return n === 0\n * ? acc\n * : makeTrampolineThunk(() => fact(n - 1, acc * n));\n * });\n *\n * console.log(factorial(100000)); // Works without stack overflow\n */\nexport function makeTrampoline<Args extends any[], Result>(\n fn: (...args: Args) => Trampoline<Result> // A function that returns a trampoline step\n): (...args: Args) => Result {\n // Return a wrapped function that automatically runs the trampoline execution loop\n return (...args: Args) => trampoline(fn(...args));\n}\n\n/**\n * Executes an asynchronous trampoline computation until a final (non-thunk) result is obtained.\n *\n * This function repeatedly invokes asynchronous deferred computations (thunks)\n * in an iterative loop. Each thunk may return either a Trampoline<T> or a Promise<Trampoline<T>>.\n *\n * It ensures that asynchronous recursive functions can run without growing the call stack,\n * making it suitable for stack-safe async recursion.\n *\n * @template T - The type of the final result.\n * @param initial - The initial Trampoline or Promise of Trampoline to start execution from.\n * @returns A Promise that resolves to the final result (a non-thunk value).\n */\nexport async function asyncTrampoline<T>(initial: Trampoline<T> | Promise<Trampoline<T>>): Promise<T> {\n let current = await initial; // Wait for the initial step to resolve if it's a Promise\n\n // Keep executing thunks until we reach a non-thunk (final) value\n while (isTrampolineThunk(current)) {\n current = await current.fn(); // Execute the thunk function (may be async)\n }\n\n // Once the final value is reached, return it\n return current;\n}\n\n/**\n * Wraps an asynchronous recursive function inside an async trampoline executor.\n *\n * This helper transforms a recursive async function that returns a Trampoline<Result>\n * (or Promise<Trampoline<Result>>) into a *stack-safe* async function that executes\n * iteratively via the `asyncTrampoline` runner.\n *\n * @template Args - The tuple type representing the argument list of the original function.\n * @template Result - The final return type after all async trampoline steps are resolved.\n *\n * @param fn - An async or sync function that performs a single step of computation\n * and returns a Trampoline (either a final value or a deferred thunk).\n *\n * @returns An async function with the same arguments, but which automatically\n * runs the trampoline process and resolves to the *final result*.\n *\n * @example\n * // Example: Async factorial using trampoline\n * const asyncFactorial = makeAsyncTrampoline(async function fact(\n * n: number,\n * acc: number = 1\n * ): Promise<Trampoline<number>> {\n * return n === 0\n * ? acc\n * : makeTrampolineThunk(() => fact(n - 1, acc * n));\n * });\n *\n * asyncFactorial(100000).then(console.log); // Works without stack overflow\n */\nexport function makeAsyncTrampoline<Args extends any[], Result>(\n fn: (...args: Args) => Trampoline<Result> | Promise<Trampoline<Result>>\n): (...args: Args) => Promise<Result> {\n // Return a wrapped async function that runs through the async trampoline loop\n return async (...args: Args): Promise<Result> => {\n return asyncTrampoline(fn(...args));\n };\n}\n","import type { ElementCallback, IterableElementBaseOptions, ReduceElementCallback } from '../../types';\n\n/**\n * Base class that makes a data structure iterable and provides common\n * element-wise utilities (e.g., map/filter/reduce/find).\n *\n * @template E The public element type yielded by the structure.\n * @template R The underlying \"raw\" element type used internally or by converters.\n *\n * @remarks\n * This class implements the JavaScript iteration protocol (via `Symbol.iterator`)\n * and offers array-like helpers with predictable time/space complexity.\n */\nexport abstract class IterableElementBase<E, R> implements Iterable<E> {\n /**\n * Create a new iterable base.\n *\n * @param options Optional behavior overrides. When provided, a `toElementFn`\n * is used to convert a raw element (`R`) into a public element (`E`).\n *\n * @remarks\n * Time O(1), Space O(1).\n */\n protected constructor(options?: IterableElementBaseOptions<E, R>) {\n if (options) {\n const { toElementFn } = options;\n if (typeof toElementFn === 'function') this._toElementFn = toElementFn;\n else if (toElementFn) throw new TypeError('toElementFn must be a function type');\n }\n }\n\n /**\n * The converter used to transform a raw element (`R`) into a public element (`E`).\n *\n * @remarks\n * Time O(1), Space O(1).\n */\n protected _toElementFn?: (rawElement: R) => E;\n\n /**\n * Exposes the current `toElementFn`, if configured.\n *\n * @returns The converter function or `undefined` when not set.\n * @remarks\n * Time O(1), Space O(1).\n */\n get toElementFn(): ((rawElement: R) => E) | undefined {\n return this._toElementFn;\n }\n\n /**\n * Returns an iterator over the structure's elements.\n *\n * @param args Optional iterator arguments forwarded to the internal iterator.\n * @returns An `IterableIterator<E>` that yields the elements in traversal order.\n *\n * @remarks\n * Producing the iterator is O(1); consuming the entire iterator is Time O(n) with O(1) extra space.\n */\n *[Symbol.iterator](...args: unknown[]): IterableIterator<E> {\n yield* this._getIterator(...args);\n }\n\n /**\n * Returns an iterator over the values (alias of the default iterator).\n *\n * @returns An `IterableIterator<E>` over all elements.\n * @remarks\n * Creating the iterator is O(1); full iteration is Time O(n), Space O(1).\n */\n *values(): IterableIterator<E> {\n for (const item of this) yield item;\n }\n\n /**\n * Tests whether all elements satisfy the predicate.\n *\n * @template TReturn\n * @param predicate Function invoked for each element with signature `(value, index, self)`.\n * @param thisArg Optional `this` binding for the predicate.\n * @returns `true` if every element passes; otherwise `false`.\n *\n * @remarks\n * Time O(n) in the worst case; may exit early when the first failure is found. Space O(1).\n */\n every(predicate: ElementCallback<E, R, boolean>, thisArg?: unknown): boolean {\n let index = 0;\n for (const item of this) {\n if (thisArg === undefined) {\n if (!predicate(item, index++, this)) return false;\n } else {\n const fn = predicate as (this: unknown, v: E, i: number, self: