%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/specpages-backup/node_modules/moize/mjs/
Upload File :
Create Path :
Current File : //www/specpages-backup/node_modules/moize/mjs/index.mjs.map

{"version":3,"file":"moize.esm.js","sources":["../src/constants.ts","../src/utils.ts","../src/maxAge.ts","../src/stats.ts","../src/instance.ts","../src/component.ts","../src/maxArgs.ts","../src/serialize.ts","../src/options.ts","../src/updateCacheForKey.ts","../src/index.ts"],"sourcesContent":["import type { AnyFn, Options } from '../index.d';\n\n/**\n * @private\n *\n * @constant DEFAULT_OPTIONS\n */\nexport const DEFAULT_OPTIONS: Options<AnyFn> = {\n    isDeepEqual: false,\n    isPromise: false,\n    isReact: false,\n    isSerialized: false,\n    isShallowEqual: false,\n    matchesArg: undefined,\n    matchesKey: undefined,\n    maxAge: undefined,\n    maxArgs: undefined,\n    maxSize: 1,\n    onExpire: undefined,\n    profileName: undefined,\n    serializer: undefined,\n    updateCacheForKey: undefined,\n    transformArgs: undefined,\n    updateExpire: false,\n};\n","import { DEFAULT_OPTIONS } from './constants';\n\nimport type {\n    AnyFn,\n    Expiration,\n    IsEqual,\n    IsMatchingKey,\n    Key,\n    Moizeable,\n    Moized,\n    Options,\n} from '../index.d';\n\n/**\n * @private\n *\n * @description\n * method to combine functions and return a single function that fires them all\n *\n * @param functions the functions to compose\n * @returns the composed function\n */\nexport function combine<Args extends any[], Result>(\n    ...functions: Array<(...args: Args) => any>\n): ((...args: Args) => Result) | undefined {\n    return functions.reduce(function (f: any, g: any) {\n        if (typeof f === 'function') {\n            return typeof g === 'function'\n                ? function (this: any) {\n                      f.apply(this, arguments);\n                      g.apply(this, arguments);\n                  }\n                : f;\n        }\n\n        if (typeof g === 'function') {\n            return g;\n        }\n    });\n}\n\n/**\n * @private\n *\n * @description\n * method to compose functions and return a single function\n *\n * @param functions the functions to compose\n * @returns the composed function\n */\nexport function compose<Method>(...functions: Method[]): Method {\n    return functions.reduce(function (f: any, g: any) {\n        if (typeof f === 'function') {\n            return typeof g === 'function'\n                ? function (this: any) {\n                      return f(g.apply(this, arguments));\n                  }\n                : f;\n        }\n\n        if (typeof g === 'function') {\n            return g;\n        }\n    });\n}\n\n/**\n * @private\n *\n * @description\n * find the index of the expiration based on the key\n *\n * @param expirations the list of expirations\n * @param key the key to match\n * @returns the index of the expiration\n */\nexport function findExpirationIndex(expirations: Expiration[], key: Key) {\n    for (let index = 0; index < expirations.length; index++) {\n        if (expirations[index].key === key) {\n            return index;\n        }\n    }\n\n    return -1;\n}\n\n/**\n * @private\n *\n * @description\n * create function that finds the index of the key in the list of cache keys\n *\n * @param isEqual the function to test individual argument equality\n * @param isMatchingKey the function to test full key equality\n * @returns the function that finds the index of the key\n */\nexport function createFindKeyIndex(\n    isEqual: IsEqual,\n    isMatchingKey: IsMatchingKey | undefined\n) {\n    const areKeysEqual: IsMatchingKey =\n        typeof isMatchingKey === 'function'\n            ? isMatchingKey\n            : function (cacheKey: Key, key: Key) {\n                  for (let index = 0; index < key.length; index++) {\n                      if (!isEqual(cacheKey[index], key[index])) {\n                          return false;\n                      }\n                  }\n\n                  return true;\n              };\n\n    return function (keys: Key[], key: Key) {\n        for (let keysIndex = 0; keysIndex < keys.length; keysIndex++) {\n            if (\n                keys[keysIndex].length === key.length &&\n                areKeysEqual(keys[keysIndex], key)\n            ) {\n                return keysIndex;\n            }\n        }\n\n        return -1;\n    };\n}\n\ntype MergedOptions<\n    OriginalOptions extends Options<Moizeable>,\n    NewOptions extends Options<Moizeable>\n> = Omit<OriginalOptions, keyof NewOptions> & NewOptions;\n\n/**\n * @private\n *\n * @description\n * merge two options objects, combining or composing functions as necessary\n *\n * @param originalOptions the options that already exist on the method\n * @param newOptions the new options to merge\n * @returns the merged options\n */\nexport function mergeOptions<\n    OriginalOptions extends Options<Moizeable>,\n    NewOptions extends Options<Moizeable>\n>(\n    originalOptions: OriginalOptions,\n    newOptions: NewOptions | undefined\n): MergedOptions<OriginalOptions, NewOptions> {\n    if (!newOptions || newOptions === DEFAULT_OPTIONS) {\n        return originalOptions as unknown as MergedOptions<\n            OriginalOptions,\n            NewOptions\n        >;\n    }\n\n    return {\n        ...originalOptions,\n        ...newOptions,\n        onCacheAdd: combine(originalOptions.onCacheAdd, newOptions.onCacheAdd),\n        onCacheChange: combine(\n            originalOptions.onCacheChange,\n            newOptions.onCacheChange\n        ),\n        onCacheHit: combine(originalOptions.onCacheHit, newOptions.onCacheHit),\n        transformArgs: compose(\n            originalOptions.transformArgs,\n            newOptions.transformArgs\n        ),\n    };\n}\n\nexport function isMoized(\n    fn: Moizeable | Moized | Options<AnyFn>\n): fn is Moized {\n    return typeof fn === 'function' && (fn as Moizeable).isMoized;\n}\n\nexport function setName(\n    fn: Moized,\n    originalFunctionName: string,\n    profileName: string\n) {\n    try {\n        const name = profileName || originalFunctionName || 'anonymous';\n\n        Object.defineProperty(fn, 'name', {\n            configurable: true,\n            enumerable: false,\n            value: `moized(${name})`,\n            writable: true,\n        });\n    } catch {\n        // For engines where `function.name` is not configurable, do nothing.\n    }\n}\n","import { createFindKeyIndex, findExpirationIndex } from './utils';\n\nimport type {\n    AnyFn,\n    Cache,\n    Expiration,\n    IsEqual,\n    IsMatchingKey,\n    Key,\n    OnCacheOperation,\n    Options,\n} from '../index.d';\n\n/**\n * @private\n *\n * @description\n * clear an active expiration and remove it from the list if applicable\n *\n * @param expirations the list of expirations\n * @param key the key to clear\n * @param shouldRemove should the expiration be removed from the list\n */\nexport function clearExpiration(\n    expirations: Expiration[],\n    key: Key,\n    shouldRemove?: boolean\n) {\n    const expirationIndex = findExpirationIndex(expirations, key);\n\n    if (expirationIndex !== -1) {\n        clearTimeout(expirations[expirationIndex].timeoutId);\n\n        if (shouldRemove) {\n            expirations.splice(expirationIndex, 1);\n        }\n    }\n}\n\n/**\n * @private\n *\n * @description\n * Create the timeout for the given expiration method. If the ability to `unref`\n * exists, then apply it to avoid process locks in NodeJS.\n *\n * @param expirationMethod the method to fire upon expiration\n * @param maxAge the time to expire after\n * @returns the timeout ID\n */\nexport function createTimeout(expirationMethod: () => void, maxAge: number) {\n    const timeoutId = setTimeout(expirationMethod, maxAge);\n\n    if (typeof timeoutId.unref === 'function') {\n        timeoutId.unref();\n    }\n\n    return timeoutId;\n}\n\n/**\n * @private\n *\n * @description\n * create a function that, when an item is added to the cache, adds an expiration for it\n *\n * @param expirations the mutable expirations array\n * @param options the options passed on initialization\n * @param isEqual the function to check argument equality\n * @param isMatchingKey the function to check complete key equality\n * @returns the onCacheAdd function to handle expirations\n */\nexport function createOnCacheAddSetExpiration<MoizeableFn extends AnyFn>(\n    expirations: Expiration[],\n    options: Options<MoizeableFn>,\n    isEqual: IsEqual,\n    isMatchingKey: IsMatchingKey\n): OnCacheOperation<MoizeableFn> {\n    const { maxAge } = options;\n\n    return function onCacheAdd(\n        cache: Cache<MoizeableFn>,\n        moizedOptions: Options<MoizeableFn>,\n        moized: MoizeableFn\n    ) {\n        const key: any = cache.keys[0];\n\n        if (findExpirationIndex(expirations, key) === -1) {\n            const expirationMethod = function () {\n                const findKeyIndex = createFindKeyIndex(isEqual, isMatchingKey);\n\n                const keyIndex: number = findKeyIndex(cache.keys, key);\n                const value: any = cache.values[keyIndex];\n\n                if (~keyIndex) {\n                    cache.keys.splice(keyIndex, 1);\n                    cache.values.splice(keyIndex, 1);\n\n                    if (typeof options.onCacheChange === 'function') {\n                        options.onCacheChange(cache, moizedOptions, moized);\n                    }\n                }\n\n                clearExpiration(expirations, key, true);\n\n                if (\n                    typeof options.onExpire === 'function' &&\n                    options.onExpire(key) === false\n                ) {\n                    cache.keys.unshift(key);\n                    cache.values.unshift(value);\n\n                    onCacheAdd(cache, moizedOptions, moized);\n\n                    if (typeof options.onCacheChange === 'function') {\n                        options.onCacheChange(cache, moizedOptions, moized);\n                    }\n                }\n            };\n\n            expirations.push({\n                expirationMethod,\n                key,\n                timeoutId: createTimeout(expirationMethod, maxAge),\n            });\n        }\n    };\n}\n\n/**\n * @private\n *\n * @description\n * creates a function that, when a cache item is hit, reset the expiration\n *\n * @param expirations the mutable expirations array\n * @param options the options passed on initialization\n * @returns the onCacheAdd function to handle expirations\n */\nexport function createOnCacheHitResetExpiration<MoizeableFn extends AnyFn>(\n    expirations: Expiration[],\n    options: Options<MoizeableFn>\n): OnCacheOperation<MoizeableFn> {\n    return function onCacheHit(cache: Cache<MoizeableFn>) {\n        const key = cache.keys[0];\n        const expirationIndex = findExpirationIndex(expirations, key);\n\n        if (~expirationIndex) {\n            clearExpiration(expirations, key, false);\n\n            expirations[expirationIndex].timeoutId = createTimeout(\n                expirations[expirationIndex].expirationMethod,\n                options.maxAge\n            );\n        }\n    };\n}\n\n/**\n * @private\n *\n * @description\n * get the micro-memoize options specific to the maxAge option\n *\n * @param expirations the expirations for the memoized function\n * @param options the options passed to the moizer\n * @param isEqual the function to test equality of the key on a per-argument basis\n * @param isMatchingKey the function to test equality of the whole key\n * @returns the object of options based on the entries passed\n */\nexport function getMaxAgeOptions<MoizeableFn extends AnyFn>(\n    expirations: Expiration[],\n    options: Options<MoizeableFn>,\n    isEqual: IsEqual,\n    isMatchingKey: IsMatchingKey\n): {\n    onCacheAdd: OnCacheOperation<MoizeableFn> | undefined;\n    onCacheHit: OnCacheOperation<MoizeableFn> | undefined;\n} {\n    const onCacheAdd =\n        typeof options.maxAge === 'number' && isFinite(options.maxAge)\n            ? createOnCacheAddSetExpiration(\n                  expirations,\n                  options,\n                  isEqual,\n                  isMatchingKey\n              )\n            : undefined;\n\n    return {\n        onCacheAdd,\n        onCacheHit:\n            onCacheAdd && options.updateExpire\n                ? createOnCacheHitResetExpiration(expirations, options)\n                : undefined,\n    };\n}\n","import type {\n    GlobalStatsObject,\n    Moizeable,\n    OnCacheOperation,\n    Options,\n    StatsCache,\n    StatsProfile,\n} from '../index.d';\n\nexport const statsCache: StatsCache = {\n    anonymousProfileNameCounter: 1,\n    isCollectingStats: false,\n    profiles: {},\n};\n\nlet hasWarningDisplayed = false;\n\nexport function clearStats(profileName?: string) {\n    if (profileName) {\n        delete statsCache.profiles[profileName];\n    } else {\n        statsCache.profiles = {};\n    }\n}\n\n/**\n * @private\n *\n * @description\n * activate stats collection\n *\n * @param isCollectingStats should stats be collected\n */\nexport function collectStats(isCollectingStats = true) {\n    statsCache.isCollectingStats = isCollectingStats;\n}\n\n/**\n * @private\n *\n * @description\n * create a function that increments the number of calls for the specific profile\n */\nexport function createOnCacheAddIncrementCalls<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n) {\n    const { profileName } = options;\n\n    return function () {\n        if (profileName && !statsCache.profiles[profileName]) {\n            statsCache.profiles[profileName] = {\n                calls: 0,\n                hits: 0,\n            };\n        }\n\n        statsCache.profiles[profileName].calls++;\n    };\n}\n\n/**\n * @private\n *\n * @description\n * create a function that increments the number of calls and cache hits for the specific profile\n */\nexport function createOnCacheHitIncrementCallsAndHits<\n    MoizeableFn extends Moizeable\n>(options: Options<MoizeableFn>) {\n    return function () {\n        const { profiles } = statsCache;\n        const { profileName } = options;\n\n        if (!profiles[profileName]) {\n            profiles[profileName] = {\n                calls: 0,\n                hits: 0,\n            };\n        }\n\n        profiles[profileName].calls++;\n        profiles[profileName].hits++;\n    };\n}\n\n/**\n * @private\n *\n * @description\n * get the profileName for the function when one is not provided\n *\n * @param fn the function to be memoized\n * @returns the derived profileName for the function\n */\nexport function getDefaultProfileName<MoizeableFn extends Moizeable>(\n    fn: MoizeableFn\n) {\n    return (\n        fn.displayName ||\n        fn.name ||\n        `Anonymous ${statsCache.anonymousProfileNameCounter++}`\n    );\n}\n\n/**\n * @private\n *\n * @description\n * get the usage percentage based on the number of hits and total calls\n *\n * @param calls the number of calls made\n * @param hits the number of cache hits when called\n * @returns the usage as a percentage string\n */\nexport function getUsagePercentage(calls: number, hits: number) {\n    return calls ? `${((hits / calls) * 100).toFixed(4)}%` : '0.0000%';\n}\n\n/**\n * @private\n *\n * @description\n * get the statistics for a given method or all methods\n *\n * @param [profileName] the profileName to get the statistics for (get all when not provided)\n * @returns the object with stats information\n */\nexport function getStats(profileName?: string): GlobalStatsObject {\n    if (!statsCache.isCollectingStats && !hasWarningDisplayed) {\n        console.warn(\n            'Stats are not currently being collected, please run \"collectStats\" to enable them.'\n        ); // eslint-disable-line no-console\n\n        hasWarningDisplayed = true;\n    }\n\n    const { profiles } = statsCache;\n\n    if (profileName) {\n        if (!profiles[profileName]) {\n            return {\n                calls: 0,\n                hits: 0,\n                usage: '0.0000%',\n            };\n        }\n\n        const { [profileName]: profile } = profiles;\n\n        return {\n            ...profile,\n            usage: getUsagePercentage(profile.calls, profile.hits),\n        };\n    }\n\n    const completeStats: StatsProfile = Object.keys(statsCache.profiles).reduce(\n        (completeProfiles, profileName) => {\n            completeProfiles.calls += profiles[profileName].calls;\n            completeProfiles.hits += profiles[profileName].hits;\n\n            return completeProfiles;\n        },\n        {\n            calls: 0,\n            hits: 0,\n        }\n    );\n\n    return {\n        ...completeStats,\n        profiles: Object.keys(profiles).reduce(\n            (computedProfiles, profileName) => {\n                computedProfiles[profileName] = getStats(profileName);\n\n                return computedProfiles;\n            },\n            {} as Record<string, StatsProfile>\n        ),\n        usage: getUsagePercentage(completeStats.calls, completeStats.hits),\n    };\n}\n\n/**\n * @private\n *\n * @function getStatsOptions\n *\n * @description\n * get the options specific to storing statistics\n *\n * @param {Options} options the options passed to the moizer\n * @returns {Object} the options specific to keeping stats\n */\nexport function getStatsOptions<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n): {\n    onCacheAdd?: OnCacheOperation<MoizeableFn>;\n    onCacheHit?: OnCacheOperation<MoizeableFn>;\n} {\n    return statsCache.isCollectingStats\n        ? {\n              onCacheAdd: createOnCacheAddIncrementCalls(options),\n              onCacheHit: createOnCacheHitIncrementCallsAndHits(options),\n          }\n        : {};\n}\n","import { clearExpiration } from './maxAge';\nimport { clearStats, getStats } from './stats';\nimport { createFindKeyIndex } from './utils';\n\nimport type {\n    Key,\n    Memoized,\n    Moizeable,\n    MoizeConfiguration,\n    Moized,\n    Options,\n    StatsProfile,\n} from '../index.d';\n\nconst ALWAYS_SKIPPED_PROPERTIES: Record<string, boolean> = {\n    arguments: true,\n    callee: true,\n    caller: true,\n    constructor: true,\n    length: true,\n    name: true,\n    prototype: true,\n};\n\n/**\n * @private\n *\n * @description\n * copy the static properties from the original function to the moized\n * function\n *\n * @param originalFn the function copying from\n * @param newFn the function copying to\n * @param skippedProperties the list of skipped properties, if any\n */\nexport function copyStaticProperties<\n    OriginalMoizeableFn extends Moizeable,\n    NewMoizeableFn extends Moizeable\n>(\n    originalFn: OriginalMoizeableFn,\n    newFn: NewMoizeableFn,\n    skippedProperties: string[] = []\n) {\n    Object.getOwnPropertyNames(originalFn).forEach((property) => {\n        if (\n            !ALWAYS_SKIPPED_PROPERTIES[property] &&\n            skippedProperties.indexOf(property) === -1\n        ) {\n            const descriptor = Object.getOwnPropertyDescriptor(\n                originalFn,\n                property\n            );\n\n            if (descriptor.get || descriptor.set) {\n                Object.defineProperty(newFn, property, descriptor);\n            } else {\n                // @ts-expect-error - properites may not align\n                newFn[property] = originalFn[property];\n            }\n        }\n    });\n}\n\n/**\n * @private\n *\n * @description\n * add methods to the moized fuction object that allow extra features\n *\n * @param memoized the memoized function from micro-memoize\n */\nexport function addInstanceMethods<MoizeableFn extends Moizeable>(\n    memoized: Moizeable,\n    { expirations }: MoizeConfiguration<MoizeableFn>\n) {\n    const { options } = memoized;\n\n    const findKeyIndex = createFindKeyIndex(\n        options.isEqual,\n        options.isMatchingKey\n    );\n\n    const moized = memoized as unknown as Moized<\n        MoizeableFn,\n        Options<MoizeableFn>\n    >;\n\n    moized.clear = function () {\n        const {\n            _microMemoizeOptions: { onCacheChange },\n            cache,\n        } = moized;\n\n        cache.keys.length = 0;\n        cache.values.length = 0;\n\n        if (onCacheChange) {\n            onCacheChange(cache, moized.options, moized);\n        }\n\n        return true;\n    };\n\n    moized.clearStats = function () {\n        clearStats(moized.options.profileName);\n    };\n\n    moized.get = function (key: Key) {\n        const {\n            _microMemoizeOptions: { transformKey },\n            cache,\n        } = moized;\n\n        const cacheKey = transformKey ? transformKey(key) : key;\n        const keyIndex = findKeyIndex(cache.keys, cacheKey);\n\n        return keyIndex !== -1 ? moized.apply(this, key) : undefined;\n    };\n\n    moized.getStats = function (): StatsProfile {\n        return getStats(moized.options.profileName);\n    };\n\n    moized.has = function (key: Key) {\n        const { transformKey } = moized._microMemoizeOptions;\n\n        const cacheKey = transformKey ? transformKey(key) : key;\n\n        return findKeyIndex(moized.cache.keys, cacheKey) !== -1;\n    };\n\n    moized.keys = function () {\n        return moized.cacheSnapshot.keys;\n    };\n\n    moized.remove = function (key: Key) {\n        const {\n            _microMemoizeOptions: { onCacheChange, transformKey },\n            cache,\n        } = moized;\n\n        const keyIndex = findKeyIndex(\n            cache.keys,\n            transformKey ? transformKey(key) : key\n        );\n\n        if (keyIndex === -1) {\n            return false;\n        }\n\n        const existingKey = cache.keys[keyIndex];\n\n        cache.keys.splice(keyIndex, 1);\n        cache.values.splice(keyIndex, 1);\n\n        if (onCacheChange) {\n            onCacheChange(cache, moized.options, moized);\n        }\n\n        clearExpiration(expirations, existingKey, true);\n\n        return true;\n    };\n\n    moized.set = function (key: Key, value: any) {\n        const { _microMemoizeOptions, cache, options } = moized;\n        const { onCacheAdd, onCacheChange, transformKey } =\n            _microMemoizeOptions;\n\n        const cacheKey = transformKey ? transformKey(key) : key;\n        const keyIndex = findKeyIndex(cache.keys, cacheKey);\n\n        if (keyIndex === -1) {\n            const cutoff = options.maxSize - 1;\n\n            if (cache.size > cutoff) {\n                cache.keys.length = cutoff;\n                cache.values.length = cutoff;\n            }\n\n            cache.keys.unshift(cacheKey);\n            cache.values.unshift(value);\n\n            if (options.isPromise) {\n                cache.updateAsyncCache(moized);\n            }\n\n            if (onCacheAdd) {\n                onCacheAdd(cache, options, moized);\n            }\n\n            if (onCacheChange) {\n                onCacheChange(cache, options, moized);\n            }\n        } else {\n            const existingKey = cache.keys[keyIndex];\n\n            cache.values[keyIndex] = value;\n\n            if (keyIndex > 0) {\n                cache.orderByLru(existingKey, value, keyIndex);\n            }\n\n            if (options.isPromise) {\n                cache.updateAsyncCache(moized);\n            }\n\n            if (typeof onCacheChange === 'function') {\n                onCacheChange(cache, options, moized);\n            }\n        }\n    };\n\n    moized.values = function () {\n        return moized.cacheSnapshot.values;\n    };\n}\n\n/**\n * @private\n *\n * @description\n * add propeties to the moized fuction object that surfaces extra information\n *\n * @param memoized the memoized function\n * @param expirations the list of expirations for cache items\n * @param options the options passed to the moizer\n * @param originalFunction the function that is being memoized\n */\nexport function addInstanceProperties<MoizeableFn extends Moizeable>(\n    memoized: Memoized<MoizeableFn>,\n    {\n        expirations,\n        options: moizeOptions,\n        originalFunction,\n    }: MoizeConfiguration<MoizeableFn>\n) {\n    const { options: microMemoizeOptions } = memoized;\n\n    Object.defineProperties(memoized, {\n        _microMemoizeOptions: {\n            configurable: true,\n            get() {\n                return microMemoizeOptions;\n            },\n        },\n\n        cacheSnapshot: {\n            configurable: true,\n            get() {\n                const { cache: currentCache } = memoized;\n\n                return {\n                    keys: currentCache.keys.slice(0),\n                    size: currentCache.size,\n                    values: currentCache.values.slice(0),\n                };\n            },\n        },\n\n        expirations: {\n            configurable: true,\n            get() {\n                return expirations;\n            },\n        },\n\n        expirationsSnapshot: {\n            configurable: true,\n            get() {\n                return expirations.slice(0);\n            },\n        },\n\n        isMoized: {\n            configurable: true,\n            get() {\n                return true;\n            },\n        },\n\n        options: {\n            configurable: true,\n            get() {\n                return moizeOptions;\n            },\n        },\n\n        originalFunction: {\n            configurable: true,\n            get() {\n                return originalFunction;\n            },\n        },\n    });\n\n    const moized = memoized as unknown as Moized<\n        MoizeableFn,\n        Options<MoizeableFn>\n    >;\n\n    copyStaticProperties(originalFunction, moized);\n}\n\n/**\n * @private\n *\n * @description\n * add methods and properties to the memoized function for more features\n *\n * @param memoized the memoized function\n * @param configuration the configuration object for the instance\n * @returns the memoized function passed\n */\nexport function createMoizeInstance<\n    MoizeableFn extends Moizeable,\n    CombinedOptions extends Options<MoizeableFn>\n>(\n    memoized: Memoized<MoizeableFn>,\n    configuration: MoizeConfiguration<MoizeableFn>\n) {\n    addInstanceMethods<MoizeableFn>(memoized, configuration);\n    addInstanceProperties<MoizeableFn>(memoized, configuration);\n\n    return memoized as Moized<MoizeableFn, CombinedOptions>;\n}\n","import { copyStaticProperties } from './instance';\nimport { setName } from './utils';\n\nimport type {\n    Moize,\n    Moized as MoizedFunction,\n    Moizeable,\n    Options,\n} from '../index.d';\n\n// This was stolen from React internals, which allows us to create React elements without needing\n// a dependency on the React library itself.\nconst REACT_ELEMENT_TYPE =\n    typeof Symbol === 'function' && Symbol.for\n        ? Symbol.for('react.element')\n        : 0xeac7;\n\n/**\n * @private\n *\n * @description\n * Create a component that memoizes based on `props` and legacy `context`\n * on a per-instance basis. This requires creating a component class to\n * store the memoized function. The cost is quite low, and avoids the\n * need to have access to the React dependency by basically re-creating\n * the basic essentials for a component class and the results of the\n * `createElement` function.\n *\n * @param moizer the top-level moize method\n * @param fn the component to memoize\n * @param options the memoization options\n * @returns the memoized component\n */\nexport function createMoizedComponent<MoizeableFn extends Moizeable>(\n    moizer: Moize,\n    fn: MoizeableFn,\n    options: Options<MoizeableFn>\n) {\n    /**\n     * This is a hack override setting the necessary options\n     * for a React component to be memoized. In the main `moize`\n     * method, if the `isReact` option is set it is short-circuited\n     * to call this function, and these overrides allow the\n     * necessary transformKey method to be derived.\n     *\n     * The order is based on:\n     * 1) Set the necessary aspects of transformKey for React components.\n     * 2) Allow setting of other options and overrides of those aspects\n     *    if desired (for example, `isDeepEqual` will use deep equality).\n     * 3) Always set `isReact` to false to prevent infinite loop.\n     */\n    const reactMoizer = moizer({\n        maxArgs: 2,\n        isShallowEqual: true,\n        ...options,\n        isReact: false,\n    });\n\n    if (!fn.displayName) {\n        // @ts-ignore - allow setting of displayName\n        fn.displayName = fn.name || 'Component';\n    }\n\n    function Moized<Props extends Record<string, unknown>, Context, Updater>(\n        this: any,\n        props: Props,\n        context: Context,\n        updater: Updater\n    ) {\n        this.props = props;\n        this.context = context;\n        this.updater = updater;\n\n        this.MoizedComponent = reactMoizer(fn);\n    }\n\n    Moized.prototype.isReactComponent = {};\n\n    Moized.prototype.render = function (): ReturnType<MoizeableFn> {\n        return {\n            $$typeof: REACT_ELEMENT_TYPE,\n            type: this.MoizedComponent,\n            props: this.props,\n            ref: null,\n            key: null,\n            _owner: null,\n        } as ReturnType<MoizeableFn>;\n    };\n\n    copyStaticProperties(fn, Moized, ['contextType', 'contextTypes']);\n\n    Moized.displayName = `Moized(${fn.displayName || fn.name || 'Component'})`;\n\n    setName(Moized as MoizedFunction, fn.name, options.profileName);\n\n    return Moized;\n}\n","import type { Key } from '../index.d';\n\nexport function createGetInitialArgs(size: number) {\n    /**\n     * @private\n     *\n     * @description\n     * take the first N number of items from the array (faster than slice)\n     *\n     * @param args the args to take from\n     * @returns the shortened list of args as an array\n     */\n    return function (args: Key): Key {\n        if (size >= args.length) {\n            return args;\n        }\n\n        if (size === 0) {\n            return [];\n        }\n\n        if (size === 1) {\n            return [args[0]];\n        }\n\n        if (size === 2) {\n            return [args[0], args[1]];\n        }\n\n        if (size === 3) {\n            return [args[0], args[1], args[2]];\n        }\n\n        const clone = [];\n\n        for (let index = 0; index < size; index++) {\n            clone[index] = args[index];\n        }\n\n        return clone;\n    };\n}\n","import type { Key, Moizeable, Options } from '../index.d';\n\n/**\n * @function getCutoff\n *\n * @description\n * faster `Array.prototype.indexOf` implementation build for slicing / splicing\n *\n * @param array the array to match the value in\n * @param value the value to match\n * @returns the matching index, or -1\n */\nfunction getCutoff(array: any[], value: any) {\n    const { length } = array;\n\n    for (let index = 0; index < length; ++index) {\n        if (array[index] === value) {\n            return index + 1;\n        }\n    }\n\n    return 0;\n}\n\n/**\n * @private\n *\n * @description\n * custom replacer for the stringify function\n *\n * @returns if function then toString of it, else the value itself\n */\nexport function createDefaultReplacer() {\n    const cache: any[] = [];\n    const keys: string[] = [];\n\n    return function defaultReplacer(key: string, value: any) {\n        const type = typeof value;\n\n        if (type === 'function' || type === 'symbol') {\n            return value.toString();\n        }\n\n        if (typeof value === 'object') {\n            if (cache.length) {\n                const thisCutoff = getCutoff(cache, this);\n\n                if (thisCutoff === 0) {\n                    cache[cache.length] = this;\n                } else {\n                    cache.splice(thisCutoff);\n                    keys.splice(thisCutoff);\n                }\n\n                keys[keys.length] = key;\n\n                const valueCutoff = getCutoff(cache, value);\n\n                if (valueCutoff !== 0) {\n                    return `[ref=${\n                        keys.slice(0, valueCutoff).join('.') || '.'\n                    }]`;\n                }\n            } else {\n                cache[0] = value;\n                keys[0] = key;\n            }\n\n            return value;\n        }\n\n        return '' + value;\n    };\n}\n\n/**\n * @private\n *\n * @description\n * get the stringified version of the argument passed\n *\n * @param arg argument to stringify\n * @returns the stringified argument\n */\nexport function getStringifiedArgument<Type>(arg: Type) {\n    const typeOfArg = typeof arg;\n\n    return arg && (typeOfArg === 'object' || typeOfArg === 'function')\n        ? JSON.stringify(arg, createDefaultReplacer())\n        : arg;\n}\n\n/**\n * @private\n *\n * @description\n * serialize the arguments passed\n *\n * @param options the options passed to the moizer\n * @param options.maxArgs the cap on the number of arguments used in serialization\n * @returns argument serialization method\n */\nexport function defaultArgumentSerializer(args: Key) {\n    let key = '|';\n\n    for (let index = 0; index < args.length; index++) {\n        key += getStringifiedArgument(args[index]) + '|';\n    }\n\n    return [key];\n}\n\n/**\n * @private\n *\n * @description\n * based on the options passed, either use the serializer passed or generate the internal one\n *\n * @param options the options passed to the moized function\n * @returns the function to use in serializing the arguments\n */\nexport function getSerializerFunction<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n) {\n    return typeof options.serializer === 'function'\n        ? options.serializer\n        : defaultArgumentSerializer;\n}\n\n/**\n * @private\n *\n * @description\n * are the serialized keys equal to one another\n *\n * @param cacheKey the cache key to compare\n * @param key the key to test\n * @returns are the keys equal\n */\nexport function getIsSerializedKeyEqual(cacheKey: Key, key: Key) {\n    return cacheKey[0] === key[0];\n}\n","import { deepEqual, sameValueZeroEqual, shallowEqual } from 'fast-equals';\nimport { createGetInitialArgs } from './maxArgs';\nimport { getIsSerializedKeyEqual, getSerializerFunction } from './serialize';\nimport { compose } from './utils';\n\nimport type {\n    Cache,\n    IsEqual,\n    IsMatchingKey,\n    MicroMemoizeOptions,\n    Moizeable,\n    Moized,\n    OnCacheOperation,\n    Options,\n    TransformKey,\n} from '../index.d';\n\nexport function createOnCacheOperation<MoizeableFn extends Moizeable>(\n    fn?: OnCacheOperation<MoizeableFn>\n): OnCacheOperation<MoizeableFn> {\n    if (typeof fn === 'function') {\n        return (\n            _cacheIgnored: Cache<MoizeableFn>,\n            _microMemoizeOptionsIgnored: MicroMemoizeOptions<MoizeableFn>,\n            memoized: Moized\n        ): void => fn(memoized.cache, memoized.options, memoized);\n    }\n}\n\n/**\n * @private\n *\n * @description\n * get the isEqual method passed to micro-memoize\n *\n * @param options the options passed to the moizer\n * @returns the isEqual method to apply\n */\nexport function getIsEqual<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n): IsEqual {\n    return (\n        options.matchesArg ||\n        (options.isDeepEqual && deepEqual) ||\n        (options.isShallowEqual && shallowEqual) ||\n        sameValueZeroEqual\n    );\n}\n\n/**\n * @private\n *\n * @description\n * get the isEqual method passed to micro-memoize\n *\n * @param options the options passed to the moizer\n * @returns the isEqual method to apply\n */\nexport function getIsMatchingKey<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n): IsMatchingKey | undefined {\n    return (\n        options.matchesKey ||\n        (options.isSerialized && getIsSerializedKeyEqual) ||\n        undefined\n    );\n}\n\n/**\n * @private\n *\n * @description\n * get the function that will transform the key based on the arguments passed\n *\n * @param options the options passed to the moizer\n * @returns the function to transform the key with\n */\nexport function getTransformKey<MoizeableFn extends Moizeable>(\n    options: Options<MoizeableFn>\n): TransformKey | undefined {\n    return compose(\n        options.isSerialized && getSerializerFunction(options),\n        typeof options.transformArgs === 'function' && options.transformArgs,\n        typeof options.maxArgs === 'number' &&\n            createGetInitialArgs(options.maxArgs)\n    ) as TransformKey;\n}\n","import { copyStaticProperties } from './instance';\n\nimport type { Moized } from '../index.d';\n\nexport function createRefreshableMoized<MoizedFn extends Moized>(\n    moized: MoizedFn\n) {\n    const {\n        options: { updateCacheForKey },\n    } = moized;\n\n    /**\n     * @private\n     *\n     * @description\n     * Wrapper around already-`moize`d function which will intercept the memoization\n     * and call the underlying function directly with the purpose of updating the cache\n     * for the given key.\n     *\n     * Promise values use a tweak of the logic that exists at cache.updateAsyncCache, which\n     * reverts to the original value if the promise is rejected and there was already a cached\n     * value.\n     */\n    const refreshableMoized = function refreshableMoized(\n        this: any,\n        ...args: Parameters<typeof moized.fn>\n    ) {\n        if (!updateCacheForKey(args)) {\n            return moized.apply(this, args);\n        }\n\n        const result = moized.fn.apply(this, args);\n\n        moized.set(args, result);\n\n        return result;\n    } as typeof moized;\n\n    copyStaticProperties(moized, refreshableMoized);\n\n    return refreshableMoized;\n}\n","import memoize from 'micro-memoize';\nimport { createMoizedComponent } from './component';\nimport { DEFAULT_OPTIONS } from './constants';\nimport { createMoizeInstance } from './instance';\nimport { getMaxAgeOptions } from './maxAge';\nimport {\n    createOnCacheOperation,\n    getIsEqual,\n    getIsMatchingKey,\n    getTransformKey,\n} from './options';\nimport {\n    clearStats,\n    collectStats,\n    getDefaultProfileName,\n    getStats,\n    getStatsOptions,\n    statsCache,\n} from './stats';\nimport { createRefreshableMoized } from './updateCacheForKey';\nimport { combine, compose, isMoized, mergeOptions, setName } from './utils';\n\nimport type {\n    Expiration,\n    IsEqual,\n    IsMatchingKey,\n    MicroMemoizeOptions,\n    Moize,\n    Moizeable,\n    Moized,\n    OnExpire,\n    Options,\n    Serialize,\n    TransformKey,\n    UpdateCacheForKey,\n} from '../index.d';\n\n/**\n * @module moize\n */\n\n/**\n * @description\n * memoize a function based its arguments passed, potentially improving runtime performance\n *\n * @example\n * import moize from 'moize';\n *\n * // standard implementation\n * const fn = (foo, bar) => `${foo} ${bar}`;\n * const memoizedFn = moize(fn);\n *\n * // implementation with options\n * const fn = async (id) => get(`http://foo.com/${id}`);\n * const memoizedFn = moize(fn, {isPromise: true, maxSize: 5});\n *\n * // implementation with convenience methods\n * const Foo = ({foo}) => <div>{foo}</div>;\n * const MemoizedFoo = moize.react(Foo);\n *\n * @param fn the function to memoized, or a list of options when currying\n * @param [options=DEFAULT_OPTIONS] the options to apply\n * @returns the memoized function\n */\nconst moize: Moize = function <\n    MoizeableFn extends Moizeable,\n    PassedOptions extends Options<MoizeableFn>\n>(fn: MoizeableFn | PassedOptions, passedOptions?: PassedOptions) {\n    type CombinedOptions = Omit<Options<MoizeableFn>, keyof PassedOptions> &\n        PassedOptions;\n\n    const options: Options<MoizeableFn> = passedOptions || DEFAULT_OPTIONS;\n\n    if (isMoized(fn)) {\n        const moizeable = fn.originalFunction as MoizeableFn;\n        const mergedOptions = mergeOptions(\n            fn.options,\n            options\n        ) as CombinedOptions;\n\n        return moize<MoizeableFn, CombinedOptions>(moizeable, mergedOptions);\n    }\n\n    if (typeof fn === 'object') {\n        return function <\n            CurriedFn extends Moizeable,\n            CurriedOptions extends Options<CurriedFn>\n        >(\n            curriedFn: CurriedFn | CurriedOptions,\n            curriedOptions: CurriedOptions\n        ) {\n            type CombinedCurriedOptions = Omit<\n                CombinedOptions,\n                keyof CurriedOptions\n            > &\n                CurriedOptions;\n\n            if (typeof curriedFn === 'function') {\n                const mergedOptions = mergeOptions(\n                    fn as CombinedOptions,\n                    curriedOptions\n                ) as CombinedCurriedOptions;\n\n                return moize(curriedFn, mergedOptions);\n            }\n\n            const mergedOptions = mergeOptions(\n                fn as CombinedOptions,\n                curriedFn as CurriedOptions\n            );\n\n            return moize(mergedOptions);\n        };\n    }\n\n    if (options.isReact) {\n        return createMoizedComponent(moize, fn, options);\n    }\n\n    const coalescedOptions: Options<MoizeableFn> = {\n        ...DEFAULT_OPTIONS,\n        ...options,\n        maxAge:\n            typeof options.maxAge === 'number' && options.maxAge >= 0\n                ? options.maxAge\n                : DEFAULT_OPTIONS.maxAge,\n        maxArgs:\n            typeof options.maxArgs === 'number' && options.maxArgs >= 0\n                ? options.maxArgs\n                : DEFAULT_OPTIONS.maxArgs,\n        maxSize:\n            typeof options.maxSize === 'number' && options.maxSize >= 0\n                ? options.maxSize\n                : DEFAULT_OPTIONS.maxSize,\n        profileName: options.profileName || getDefaultProfileName(fn),\n    };\n    const expirations: Array<Expiration> = [];\n\n    const {\n        matchesArg: equalsIgnored,\n        isDeepEqual: isDeepEqualIgnored,\n        isPromise,\n        isReact: isReactIgnored,\n        isSerialized: isSerialzedIgnored,\n        isShallowEqual: isShallowEqualIgnored,\n        matchesKey: matchesKeyIgnored,\n        maxAge: maxAgeIgnored,\n        maxArgs: maxArgsIgnored,\n        maxSize,\n        onCacheAdd,\n        onCacheChange,\n        onCacheHit,\n        onExpire: onExpireIgnored,\n        profileName: profileNameIgnored,\n        serializer: serializerIgnored,\n        updateCacheForKey,\n        transformArgs: transformArgsIgnored,\n        updateExpire: updateExpireIgnored,\n        ...customOptions\n    } = coalescedOptions;\n\n    const isEqual = getIsEqual(coalescedOptions);\n    const isMatchingKey = getIsMatchingKey(coalescedOptions);\n\n    const maxAgeOptions = getMaxAgeOptions(\n        expirations,\n        coalescedOptions,\n        isEqual,\n        isMatchingKey\n    );\n    const statsOptions = getStatsOptions(coalescedOptions);\n\n    const transformKey = getTransformKey(coalescedOptions);\n\n    const microMemoizeOptions: MicroMemoizeOptions<MoizeableFn> = {\n        ...customOptions,\n        isEqual,\n        isMatchingKey,\n        isPromise,\n        maxSize,\n        onCacheAdd: createOnCacheOperation(\n            combine(\n                onCacheAdd,\n                maxAgeOptions.onCacheAdd,\n                statsOptions.onCacheAdd\n            )\n        ),\n        onCacheChange: createOnCacheOperation(onCacheChange),\n        onCacheHit: createOnCacheOperation(\n            combine(\n                onCacheHit,\n                maxAgeOptions.onCacheHit,\n                statsOptions.onCacheHit\n            )\n        ),\n        transformKey,\n    };\n\n    const memoized = memoize(fn, microMemoizeOptions);\n\n    let moized = createMoizeInstance<MoizeableFn, CombinedOptions>(memoized, {\n        expirations,\n        options: coalescedOptions,\n        originalFunction: fn,\n    });\n\n    if (updateCacheForKey) {\n        moized = createRefreshableMoized<typeof moized>(moized);\n    }\n\n    setName(moized, (fn as Moizeable).name, options.profileName);\n\n    return moized;\n};\n\n/**\n * @function\n * @name clearStats\n * @memberof module:moize\n * @alias moize.clearStats\n *\n * @description\n * clear all existing stats stored\n */\nmoize.clearStats = clearStats;\n\n/**\n * @function\n * @name collectStats\n * @memberof module:moize\n * @alias moize.collectStats\n *\n * @description\n * start collecting statistics\n */\nmoize.collectStats = collectStats;\n\n/**\n * @function\n * @name compose\n * @memberof module:moize\n * @alias moize.compose\n *\n * @description\n * method to compose moized methods and return a single moized function\n *\n * @param moized the functions to compose\n * @returns the composed function\n */\nmoize.compose = function (...moized: Moize[]) {\n    return compose<Moize>(...moized) || moize;\n};\n\n/**\n * @function\n * @name deep\n * @memberof module:moize\n * @alias moize.deep\n *\n * @description\n * should deep equality check be used\n *\n * @returns the moizer function\n */\nmoize.deep = moize({ isDeepEqual: true });\n\n/**\n * @function\n * @name getStats\n * @memberof module:moize\n * @alias moize.getStats\n *\n * @description\n * get the statistics of a given profile, or overall usage\n *\n * @returns statistics for a given profile or overall usage\n */\nmoize.getStats = getStats;\n\n/**\n * @function\n * @name infinite\n * @memberof module:moize\n * @alias moize.infinite\n *\n * @description\n * a moized method that will remove all limits from the cache size\n *\n * @returns the moizer function\n */\nmoize.infinite = moize({ maxSize: Infinity });\n\n/**\n * @function\n * @name isCollectingStats\n * @memberof module:moize\n * @alias moize.isCollectingStats\n *\n * @description\n * are stats being collected\n *\n * @returns are stats being collected\n */\nmoize.isCollectingStats = function isCollectingStats(): boolean {\n    return statsCache.isCollectingStats;\n};\n\n/**\n * @function\n * @name isMoized\n * @memberof module:moize\n * @alias moize.isMoized\n *\n * @description\n * is the fn passed a moized function\n *\n * @param fn the object to test\n * @returns is fn a moized function\n */\nmoize.isMoized = function isMoized(fn: any): fn is Moized {\n    return typeof fn === 'function' && !!fn.isMoized;\n};\n\n/**\n * @function\n * @name matchesArg\n * @memberof module:moize\n * @alias moize.matchesArg\n *\n * @description\n * a moized method where the arg matching method is the custom one passed\n *\n * @param keyMatcher the method to compare against those in cache\n * @returns the moizer function\n */\nmoize.matchesArg = function (argMatcher: IsEqual) {\n    return moize({ matchesArg: argMatcher });\n};\n\n/**\n * @function\n * @name matchesKey\n * @memberof module:moize\n * @alias moize.matchesKey\n *\n * @description\n * a moized method where the key matching method is the custom one passed\n *\n * @param keyMatcher the method to compare against those in cache\n * @returns the moizer function\n */\nmoize.matchesKey = function (keyMatcher: IsMatchingKey) {\n    return moize({ matchesKey: keyMatcher });\n};\n\nfunction maxAge<MaxAge extends number>(\n    maxAge: MaxAge\n): Moize<{ maxAge: MaxAge }>;\nfunction maxAge<MaxAge extends number, UpdateExpire extends boolean>(\n    maxAge: MaxAge,\n    expireOptions: UpdateExpire\n): Moize<{ maxAge: MaxAge; updateExpire: UpdateExpire }>;\nfunction maxAge<MaxAge extends number, ExpireHandler extends OnExpire>(\n    maxAge: MaxAge,\n    expireOptions: ExpireHandler\n): Moize<{ maxAge: MaxAge; onExpire: ExpireHandler }>;\nfunction maxAge<\n    MaxAge extends number,\n    ExpireHandler extends OnExpire,\n    ExpireOptions extends {\n        onExpire: ExpireHandler;\n    }\n>(\n    maxAge: MaxAge,\n    expireOptions: ExpireOptions\n): Moize<{ maxAge: MaxAge; onExpire: ExpireOptions['onExpire'] }>;\nfunction maxAge<\n    MaxAge extends number,\n    UpdateExpire extends boolean,\n    ExpireOptions extends {\n        updateExpire: UpdateExpire;\n    }\n>(\n    maxAge: MaxAge,\n    expireOptions: ExpireOptions\n): Moize<{ maxAge: MaxAge; updateExpire: UpdateExpire }>;\nfunction maxAge<\n    MaxAge extends number,\n    ExpireHandler extends OnExpire,\n    UpdateExpire extends boolean,\n    ExpireOptions extends {\n        onExpire: ExpireHandler;\n        updateExpire: UpdateExpire;\n    }\n>(\n    maxAge: MaxAge,\n    expireOptions: ExpireOptions\n): Moize<{\n    maxAge: MaxAge;\n    onExpire: ExpireHandler;\n    updateExpire: UpdateExpire;\n}>;\nfunction maxAge<\n    MaxAge extends number,\n    ExpireHandler extends OnExpire,\n    UpdateExpire extends boolean,\n    ExpireOptions extends {\n        onExpire?: ExpireHandler;\n        updateExpire?: UpdateExpire;\n    }\n>(\n    maxAge: MaxAge,\n    expireOptions?: ExpireHandler | UpdateExpire | ExpireOptions\n) {\n    if (expireOptions === true) {\n        return moize({\n            maxAge,\n            updateExpire: expireOptions,\n        });\n    }\n\n    if (typeof expireOptions === 'object') {\n        const { onExpire, updateExpire } = expireOptions;\n\n        return moize({\n            maxAge,\n            onExpire,\n            updateExpire,\n        });\n    }\n\n    if (typeof expireOptions === 'function') {\n        return moize({\n            maxAge,\n            onExpire: expireOptions,\n            updateExpire: true,\n        });\n    }\n\n    return moize({ maxAge });\n}\n\n/**\n * @function\n * @name maxAge\n * @memberof module:moize\n * @alias moize.maxAge\n *\n * @description\n * a moized method where the age of the cache is limited to the number of milliseconds passed\n *\n * @param maxAge the TTL of the value in cache\n * @returns the moizer function\n */\nmoize.maxAge = maxAge;\n\n/**\n * @function\n * @name maxArgs\n * @memberof module:moize\n * @alias moize.maxArgs\n *\n * @description\n * a moized method where the number of arguments used for determining cache is limited to the value passed\n *\n * @param maxArgs the number of args to base the key on\n * @returns the moizer function\n */\nmoize.maxArgs = function maxArgs(maxArgs: number) {\n    return moize({ maxArgs });\n};\n\n/**\n * @function\n * @name maxSize\n * @memberof module:moize\n * @alias moize.maxSize\n *\n * @description\n * a moized method where the total size of the cache is limited to the value passed\n *\n * @param maxSize the maximum size of the cache\n * @returns the moizer function\n */\nmoize.maxSize = function maxSize(maxSize: number) {\n    return moize({ maxSize });\n};\n\n/**\n * @function\n * @name profile\n * @memberof module:moize\n * @alias moize.profile\n *\n * @description\n * a moized method with a profile name\n *\n * @returns the moizer function\n */\nmoize.profile = function (profileName: string) {\n    return moize({ profileName });\n};\n\n/**\n * @function\n * @name promise\n * @memberof module:moize\n * @alias moize.promise\n *\n * @description\n * a moized method specific to caching resolved promise / async values\n *\n * @returns the moizer function\n */\nmoize.promise = moize({\n    isPromise: true,\n    updateExpire: true,\n});\n\n/**\n * @function\n * @name react\n * @memberof module:moize\n * @alias moize.react\n *\n * @description\n * a moized method specific to caching React element values\n *\n * @returns the moizer function\n */\nmoize.react = moize({ isReact: true });\n\n/**\n * @function\n * @name serialize\n * @memberof module:moize\n * @alias moize.serialize\n *\n * @description\n * a moized method that will serialize the arguments passed to use as the cache key\n *\n * @returns the moizer function\n */\nmoize.serialize = moize({ isSerialized: true });\n\n/**\n * @function\n * @name serializeWith\n * @memberof module:moize\n * @alias moize.serializeWith\n *\n * @description\n * a moized method that will serialize the arguments passed to use as the cache key\n * based on the serializer passed\n *\n * @returns the moizer function\n */\nmoize.serializeWith = function (serializer: Serialize) {\n    return moize({ isSerialized: true, serializer });\n};\n\n/**\n * @function\n * @name shallow\n * @memberof module:moize\n * @alias moize.shallow\n *\n * @description\n * should shallow equality check be used\n *\n * @returns the moizer function\n */\nmoize.shallow = moize({ isShallowEqual: true });\n\n/**\n * @function\n * @name transformArgs\n * @memberof module:moize\n * @alias moize.transformArgs\n *\n * @description\n * transform the args to allow for specific cache key comparison\n *\n * @param transformArgs the args transformer\n * @returns the moizer function\n */\nmoize.transformArgs = <Transformer extends TransformKey>(\n    transformArgs: Transformer\n) => moize({ transformArgs });\n\n/**\n * @function\n * @name updateCacheForKey\n * @memberof module:moize\n * @alias moize.updateCacheForKey\n *\n * @description\n * update the cache for a given key when the method passed returns truthy\n *\n * @param updateCacheForKey the method to determine when to update cache\n * @returns the moizer function\n */\nmoize.updateCacheForKey = <UpdateWhen extends UpdateCacheForKey>(\n    updateCacheForKey: UpdateWhen\n) => moize({ updateCacheForKey });\n\n// Add self-referring `default` property for edge-case cross-compatibility of mixed ESM/CommonJS usage.\n// This property is frozen and non-enumerable to avoid visibility on iteration or accidental overrides.\nObject.defineProperty(moize, 'default', {\n    configurable: false,\n    enumerable: false,\n    value: moize,\n    writable: false,\n});\n\nexport default moize;\n"],"names":["DEFAULT_OPTIONS","isDeepEqual","isPromise","isReact","isSerialized","isShallowEqual","matchesArg","undefined","matchesKey","maxAge","maxArgs","maxSize","onExpire","profileName","serializer","updateCacheForKey","transformArgs","updateExpire","combine","_len","arguments","length","functions","Array","_key","reduce","f","g","apply","compose","_len2","_key2","findExpirationIndex","expirations","key","index","createFindKeyIndex","isEqual","isMatchingKey","areKeysEqual","cacheKey","keys","keysIndex","mergeOptions","originalOptions","newOptions","_extends","onCacheAdd","onCacheChange","onCacheHit","isMoized","fn","setName","originalFunctionName","name","Object","defineProperty","configurable","enumerable","value","writable","_unused","clearExpiration","shouldRemove","expirationIndex","clearTimeout","timeoutId","splice","createTimeout","expirationMethod","setTimeout","unref","createOnCacheAddSetExpiration","options","cache","moizedOptions","moized","findKeyIndex","keyIndex","values","unshift","push","createOnCacheHitResetExpiration","getMaxAgeOptions","isFinite","statsCache","anonymousProfileNameCounter","isCollectingStats","profiles","hasWarningDisplayed","clearStats","collectStats","createOnCacheAddIncrementCalls","calls","hits","createOnCacheHitIncrementCallsAndHits","getDefaultProfileName","displayName","getUsagePercentage","toFixed","getStats","console","warn","usage","profile","completeStats","completeProfiles","computedProfiles","getStatsOptions","ALWAYS_SKIPPED_PROPERTIES","callee","caller","constructor","prototype","copyStaticProperties","originalFn","newFn","skippedProperties","getOwnPropertyNames","forEach","property","indexOf","descriptor","getOwnPropertyDescriptor","get","set","addInstanceMethods","memoized","_ref","clear","_microMemoizeOptions","transformKey","has","cacheSnapshot","remove","_moized$_microMemoize","existingKey","cutoff","size","updateAsyncCache","orderByLru","addInstanceProperties","_ref2","moizeOptions","originalFunction","microMemoizeOptions","defineProperties","currentCache","slice","expirationsSnapshot","createMoizeInstance","configuration","REACT_ELEMENT_TYPE","Symbol","for","createMoizedComponent","moizer","reactMoizer","Moized","props","context","updater","MoizedComponent","isReactComponent","render","$$typeof","type","ref","_owner","createGetInitialArgs","args","clone","getCutoff","array","createDefaultReplacer","defaultReplacer","toString","thisCutoff","valueCutoff","join","getStringifiedArgument","arg","typeOfArg","JSON","stringify","defaultArgumentSerializer","getSerializerFunction","getIsSerializedKeyEqual","createOnCacheOperation","_cacheIgnored","_microMemoizeOptionsIgnored","getIsEqual","deepEqual","shallowEqual","sameValueZeroEqual","getIsMatchingKey","getTransformKey","createRefreshableMoized","refreshableMoized","result","moize","passedOptions","moizeable","mergedOptions","curriedFn","curriedOptions","coalescedOptions","customOptions","_objectWithoutPropertiesLoose","_excluded","maxAgeOptions","statsOptions","memoize","deep","infinite","Infinity","argMatcher","keyMatcher","expireOptions","promise","react","serialize","serializeWith","shallow"],"mappings":"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"}

Zerion Mini Shell 1.0