PHP 8.2.30
Preview: memoize.js Size: 3.00 KB
/home/byroehnu/.trash/node_modules11/async/memoize.js

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.default = memoize;

var _setImmediate = require('./internal/setImmediate.js');

var _setImmediate2 = _interopRequireDefault(_setImmediate);

var _initialParams = require('./internal/initialParams.js');

var _initialParams2 = _interopRequireDefault(_initialParams);

var _wrapAsync = require('./internal/wrapAsync.js');

var _wrapAsync2 = _interopRequireDefault(_wrapAsync);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/**
 * Caches the results of an async function. When creating a hash to store
 * function results against, the callback is omitted from the hash and an
 * optional hash function can be used.
 *
 * **Note: if the async function errs, the result will not be cached and
 * subsequent calls will call the wrapped function.**
 *
 * If no hash function is specified, the first argument is used as a hash key,
 * which may work reasonably if it is a string or a data type that converts to a
 * distinct string. Note that objects and arrays will not behave reasonably.
 * Neither will cases where the other arguments are significant. In such cases,
 * specify your own hash function.
 *
 * The cache of results is exposed as the `memo` property of the function
 * returned by `memoize`.
 *
 * @name memoize
 * @static
 * @memberOf module:Utils
 * @method
 * @category Util
 * @param {AsyncFunction} fn - The async function to proxy and cache results from.
 * @param {Function} hasher - An optional function for generating a custom hash
 * for storing results. It has all the arguments applied to it apart from the
 * callback, and must be synchronous.
 * @returns {AsyncFunction} a memoized version of `fn`
 * @example
 *
 * var slow_fn = function(name, callback) {
 *     // do something
 *     callback(null, result);
 * };
 * var fn = async.memoize(slow_fn);
 *
 * // fn can now be used as if it were slow_fn
 * fn('some name', function() {
 *     // callback
 * });
 */
function memoize(fn, hasher = v => v) {
    var memo = Object.create(null);
    var queues = Object.create(null);
    var _fn = (0, _wrapAsync2.default)(fn);
    var memoized = (0, _initialParams2.default)((args, callback) => {
        var key = hasher(...args);
        if (key in memo) {
            (0, _setImmediate2.default)(() => callback(null, ...memo[key]));
        } else if (key in queues) {
            queues[key].push(callback);
        } else {
            queues[key] = [callback];
            _fn(...args, (err, ...resultArgs) => {
                // #1465 don't memoize if an error occurred
                if (!err) {
                    memo[key] = resultArgs;
                }
                var q = queues[key];
                delete queues[key];
                for (var i = 0, l = q.length; i < l; i++) {
                    q[i](err, ...resultArgs);
                }
            });
        }
    });
    memoized.memo = memo;
    memoized.unmemoized = fn;
    return memoized;
}
module.exports = exports.default;

Directory Contents

Dirs: 2 × Files: 109

Name Size Perms Modified Actions
dist DIR
- drwxr-xr-x 2026-02-21 00:54:22
Edit Download
internal DIR
- drwxr-xr-x 2026-02-21 00:54:22
Edit Download
3.48 KB lrw-r--r-- 2026-02-21 00:53:20
Edit Download
1.71 KB lrw-r--r-- 2026-02-21 00:53:22
Edit Download
1.61 KB lrw-r--r-- 2026-02-21 00:53:22
Edit Download
3.71 KB lrw-r--r-- 2026-02-21 00:53:24
Edit Download
1.74 KB lrw-r--r-- 2026-02-21 00:53:24
Edit Download
1.64 KB lrw-r--r-- 2026-02-21 00:53:28
Edit Download
217 B lrw-r--r-- 2026-02-21 00:53:28
Edit Download
1.94 KB lrw-r--r-- 2026-02-21 00:53:30
Edit Download
1.27 KB lrw-r--r-- 2026-02-21 00:53:34
Edit Download
3.67 KB lrw-r--r-- 2026-02-21 00:53:38
Edit Download
11.58 KB lrw-r--r-- 2026-02-21 00:53:40
Edit Download
6.93 KB lrw-r--r-- 2026-02-21 00:53:42
Edit Download
239 B lrw-r--r-- 2026-02-21 00:54:22
Edit Download
2.68 KB lrw-r--r-- 2026-02-21 00:53:44
Edit Download
3.27 KB lrw-r--r-- 2026-02-21 00:53:44
Edit Download
32.70 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download
1.53 KB lrw-r--r-- 2026-02-21 00:53:46
Edit Download
3.57 KB lrw-r--r-- 2026-02-21 00:53:46
Edit Download
2.04 KB lrw-r--r-- 2026-02-21 00:53:46
Edit Download
1.44 KB lrw-r--r-- 2026-02-21 00:53:48
Edit Download
302 B lrw-r--r-- 2026-02-21 00:53:50
Edit Download
3.17 KB lrw-r--r-- 2026-02-21 00:53:50
Edit Download
1.79 KB lrw-r--r-- 2026-02-21 00:53:50
Edit Download
1.70 KB lrw-r--r-- 2026-02-21 00:53:52
Edit Download
1.27 KB lrw-r--r-- 2026-02-21 00:53:54
Edit Download
2.25 KB lrw-r--r-- 2026-02-21 00:53:54
Edit Download
1.66 KB lrw-r--r-- 2026-02-21 00:53:56
Edit Download
2.25 KB lrw-r--r-- 2026-02-21 00:53:56
Edit Download
2.28 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
3.93 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
1.75 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
5.61 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
1.60 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
1.30 KB lrw-r--r-- 2026-02-21 00:53:58
Edit Download
1.54 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
2.26 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
3.48 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.71 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.61 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
2.83 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.62 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.51 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
3.17 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.79 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
1.70 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
3.57 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
2.04 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
1.44 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
4.76 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
1.47 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
3.93 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
1.75 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
5.61 KB lrw-r--r-- 2026-02-21 00:54:02
Edit Download
1.60 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.30 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.54 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
2.07 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
3.51 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
2.39 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.30 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
19.47 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
4.76 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.04 KB lrw-r--r-- 2026-02-21 00:53:18
Edit Download
1.17 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
4.49 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.58 KB lrw-r--r-- 2026-02-21 00:54:04
Edit Download
1.48 KB lrw-r--r-- 2026-02-21 00:54:06
Edit Download
4.48 KB lrw-r--r-- 2026-02-21 00:54:06
Edit Download
2.07 KB lrw-r--r-- 2026-02-21 00:54:06
Edit Download
1.35 KB lrw-r--r-- 2026-02-21 00:54:06
Edit Download
3.00 KB lrw-r--r-- 2026-02-21 00:54:08
Edit Download
1.44 KB lrw-r--r-- 2026-02-21 00:54:08
Edit Download
2.15 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download
5.44 KB lrw-r--r-- 2026-02-21 00:54:08
Edit Download
1.48 KB lrw-r--r-- 2026-02-21 00:54:08
Edit Download
1.41 KB lrw-r--r-- 2026-02-21 00:54:08
Edit Download
626 B lrw-r--r-- 2026-02-21 00:54:10
Edit Download
2.08 KB lrw-r--r-- 2026-02-21 00:54:10
Edit Download
3.14 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download
4.76 KB lrw-r--r-- 2026-02-21 00:54:10
Edit Download
1.47 KB lrw-r--r-- 2026-02-21 00:54:10
Edit Download
2.21 KB lrw-r--r-- 2026-02-21 00:54:10
Edit Download
2.39 KB lrw-r--r-- 2026-02-21 00:54:10
Edit Download
2.61 KB lrw-r--r-- 2026-02-21 00:54:12
Edit Download
1.54 KB lrw-r--r-- 2026-02-21 00:54:12
Edit Download
1.44 KB lrw-r--r-- 2026-02-21 00:54:12
Edit Download
5.39 KB lrw-r--r-- 2026-02-21 00:54:12
Edit Download
2.48 KB lrw-r--r-- 2026-02-21 00:54:12
Edit Download
2.83 KB lrw-r--r-- 2026-02-21 00:54:14
Edit Download
1.62 KB lrw-r--r-- 2026-02-21 00:54:14
Edit Download
1.51 KB lrw-r--r-- 2026-02-21 00:54:16
Edit Download
2.59 KB lrw-r--r-- 2026-02-21 00:54:16
Edit Download
5.69 KB lrw-r--r-- 2026-02-21 00:54:16
Edit Download
1.36 KB lrw-r--r-- 2026-02-21 00:54:18
Edit Download
3.71 KB lrw-r--r-- 2026-02-21 00:54:18
Edit Download
1.74 KB lrw-r--r-- 2026-02-21 00:54:18
Edit Download
1.64 KB lrw-r--r-- 2026-02-21 00:54:18
Edit Download
6.06 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
2.69 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
1.45 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
1.42 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
1.04 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
5.43 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
2.48 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
665 B lrw-r--r-- 2026-02-21 00:54:20
Edit Download
2.03 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
3.13 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
2.28 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download
3.67 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).