2.0.0 • Published 5 years ago

cached-functions-js v2.0.0

Weekly downloads
40
License
MIT
Repository
github
Last release
5 years ago

cached-functions-js

Summary

This library caches and maps your parameters to a return value.

It does this by hashing your parameters.

It has typescript typings!!

The hashing function used is xxhash.

how to use

create a cached member method in typescript(the object in the decorator is optional):

import {Cached} from 'cached-function-js'
class Abc {
        aVal = 2

        @Cached({hashingStrategy: new MyOwnHashingStrat(), valueMappingStrategy: new MyOwnMapper()})
        myFun(a: number, b: string) {
            return a.toString() + b + this.aVal.toString()
        }
    }

Create a simple cached function following the "memoized function" pattern:

import {cachedFunction} from 'cached-function-js'

const myFunc = cachedFunction((someObject, someNumber) => {
    return someVeryExpensiveComputation(someObject, someNumber)
})

Parameters are not necessary:

import {cachedFunction} from 'cached-function-js'

const myFunc = cachedFunction(() => {
    return someVeryExpensiveComputation()
})

You can use this library to add member methods to classes or objects:

import {cachedFunction} from 'cached-function-js'

export class MyClass{
    myFunc = cachedFunction(() => {
        return someVeryExpensiveComputation()
    })
}
import {cachedFunction} from 'cached-function-js'

export class MyClass{
    public myFunc = cachedFunction(() => {
        return someVeryExpensiveComputation()
    })
}

You can provide your own strategies in the options object, all of them are optional though.

If you write your own (and use typescript) please use the ValueMappingStrategy, HashStrategy interfaces for your own convenience.

import {cachedFunction} from 'cached-function-js'

const myFunc = cachedFunction((someObject: any, someNumber: any) => {
    return someVeryExpensiveComputation(someObject, someNumber)
}, {hashingStrategy: new MyOwnHashingStrat(), valueMappingStrategy: new MyOwnMapper()})

Changelog

2.0.0 - 2015-12-03

Added

  • Support for UMD, ES6 and CommonJS(CJS) modules using RollupJS
  • Now supports browsers because of UMD support

Removed

  • Symbols as they are supported from es6 onward

Changed

  • changed target from es6 to es5
2.0.0

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago