New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@github/memoize

Package Overview
Dependencies
Maintainers
17
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@github/memoize

A simple Memoize helper, with TypeScript decorator support!

latest
Source
npmnpm
Version
1.1.5
Version published
Weekly downloads
8.8K
-33.18%
Maintainers
17
Weekly downloads
 
Created
Source

memoize

This is a package which provides a memoize function, as well as a TypeScript decorator which will memoize a class method.

Usage

import memoize from '@github/memoize'

const fn = memoize(function doExpensiveStuff() {
  // Here's where you do expensive stuff!
})

const other = memoize(function doExpensiveStuff() {}, { 
  cache: new Map(), // pass your own cache implementation
  hash: JSON.stringify // pass your own hashing implementation
})

Options:

  • hash?: (...args: A) => unknown Provides a single value to use as the Key for the memoization. Defaults to JSON.stringify (ish).
  • cache?: Map<unknown, R> The Cache implementation to provide. Must be a Map or Map-alike. Defaults to a Map. Useful for replacing the cache with an LRU cache or similar.

TypeScript Decorators Support!

This package also includes a decorator module which can be used to provide TypeScript Decorator annotations to functions.

Here's an example, showing what you need to do:

import memoize from '@github/memoize/decorator'
//                                  ^ note: add `/decorator` to the import to get decorators

class MyClass {
  @memoize() // Memoize the method below
  doThings() {
  }
}

const cache = new Map()
class MyClass {
  @memoize({ cache }) // Pass options just like the memoize function
  doThings() {
  }
}

Why not just use package X?

Many memoize implementations exist. This one provides all of the utility we need at GitHub and nothing more. We've used a few various implementations in the past, here are some good ones:

Development

npm install
npm test

License

Distributed under the MIT license. See LICENSE for details.

FAQs

Package last updated on 15 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts