diff options
Diffstat (limited to 'node_modules/mem')
-rw-r--r-- | node_modules/mem/index.js | 55 | ||||
-rw-r--r-- | node_modules/mem/license | 21 | ||||
-rw-r--r-- | node_modules/mem/package.json | 45 | ||||
-rw-r--r-- | node_modules/mem/readme.md | 147 |
4 files changed, 0 insertions, 268 deletions
diff --git a/node_modules/mem/index.js b/node_modules/mem/index.js deleted file mode 100644 index aa5a07398..000000000 --- a/node_modules/mem/index.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; -const mimicFn = require('mimic-fn'); - -const cacheStore = new WeakMap(); - -const defaultCacheKey = function (x) { - if (arguments.length === 1 && (x === null || x === undefined || (typeof x !== 'function' && typeof x !== 'object'))) { - return x; - } - - return JSON.stringify(arguments); -}; - -module.exports = (fn, opts) => { - opts = Object.assign({ - cacheKey: defaultCacheKey, - cache: new Map() - }, opts); - - const memoized = function () { - const cache = cacheStore.get(memoized); - const key = opts.cacheKey.apply(null, arguments); - - if (cache.has(key)) { - const c = cache.get(key); - - if (typeof opts.maxAge !== 'number' || Date.now() < c.maxAge) { - return c.data; - } - } - - const ret = fn.apply(null, arguments); - - cache.set(key, { - data: ret, - maxAge: Date.now() + (opts.maxAge || 0) - }); - - return ret; - }; - - mimicFn(memoized, fn); - - cacheStore.set(memoized, opts.cache); - - return memoized; -}; - -module.exports.clear = fn => { - const cache = cacheStore.get(fn); - - if (cache && typeof cache.clear === 'function') { - cache.clear(); - } -}; diff --git a/node_modules/mem/license b/node_modules/mem/license deleted file mode 100644 index 654d0bfe9..000000000 --- a/node_modules/mem/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/mem/package.json b/node_modules/mem/package.json deleted file mode 100644 index a492892c8..000000000 --- a/node_modules/mem/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "mem", - "version": "1.1.0", - "description": "Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input", - "license": "MIT", - "repository": "sindresorhus/mem", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "engines": { - "node": ">=4" - }, - "scripts": { - "test": "xo && ava" - }, - "files": [ - "index.js" - ], - "keywords": [ - "memoize", - "function", - "mem", - "memoization", - "cache", - "caching", - "optimize", - "performance", - "ttl", - "expire", - "promise" - ], - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "devDependencies": { - "ava": "*", - "delay": "^1.1.0", - "xo": "*" - }, - "xo": { - "esnext": true - } -} diff --git a/node_modules/mem/readme.md b/node_modules/mem/readme.md deleted file mode 100644 index 7ebab84f0..000000000 --- a/node_modules/mem/readme.md +++ /dev/null @@ -1,147 +0,0 @@ -# mem [](https://travis-ci.org/sindresorhus/mem) - -> [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input - - -## Install - -``` -$ npm install --save mem -``` - - -## Usage - -```js -const mem = require('mem'); - -let i = 0; -const counter = () => ++i; -const memoized = mem(counter); - -memoized('foo'); -//=> 1 - -// cached as it's the same arguments -memoized('foo'); -//=> 1 - -// not cached anymore as the arguments changed -memoized('bar'); -//=> 2 - -memoized('bar'); -//=> 2 -``` - -##### Works fine with promise returning functions - -```js -const mem = require('mem'); - -let i = 0; -const counter = () => Promise.resolve(++i); -const memoized = mem(counter); - -memoized().then(a => { - console.log(a); - //=> 1 - - memoized().then(b => { - // the return value didn't increase as it's cached - console.log(b); - //=> 1 - }); -}); -``` - -```js -const mem = require('mem'); -const got = require('got'); -const memGot = mem(got, {maxAge: 1000}); - -memGot('sindresorhus.com').then(() => { - // this call is cached - memGot('sindresorhus.com').then(() => { - setTimeout(() => { - // this call is not cached as the cache has expired - memGot('sindresorhus.com').then(() => {}); - }, 2000); - }); -}); -``` - - -## API - -### mem(fn, [options]) - -#### fn - -Type: `Function` - -Function to be memoized. - -#### options - -##### maxAge - -Type: `number`<br> -Default: `Infinity` - -Milliseconds until the cache expires. - -##### cacheKey - -Type: `Function` - -Determines the cache key for storing the result based on the function arguments. By default, if there's only one argument and it's a [primitive](https://developer.mozilla.org/en-US/docs/Glossary/Primitive), it's used directly as a key, otherwise it's all the function arguments JSON stringified as an array. - -You could for example change it to only cache on the first argument `x => JSON.stringify(x)`. - -##### cache - -Type: `Object`<br> -Default: `new Map()` - -Use a different cache storage. Must implement the following methods: `.has(key)`, `.get(key)`, `.set(key, value)`, and optionally `.clear()`. You could for example use a `WeakMap` instead. - -### mem.clear(fn) - -Clear all cached data of a memoized function. - -#### fn - -Type: `Function` - -Memoized function. - - -## Tips - -### Cache statistics - -If you want to know how many times your cache had a hit or a miss, you can make use of [stats-map](https://github.com/SamVerschueren/stats-map) as a replacement for the default cache. - -#### Example - -```js -const mem = require('mem'); -const StatsMap = require('stats-map'); -const got = require('got'); - -const cache = new StatsMap(); -const memGot = mem(got, {cache}); - -memGot('sindresorhus.com') - .then(() => memGot('sindresorhus.com')) - .then(() => memGot('sindresorhus.com')); - -console.log(cache.stats); -//=> {hits: 2, misses: 1} -``` - - -## License - -MIT © [Sindre Sorhus](https://sindresorhus.com) |