@appolo/data

useful data structures

Usage no npm install needed!

<script type="module">
  import appoloData from 'https://cdn.skypack.dev/@appolo/data';
</script>

README

Appolo Decorators

Build Status Dependencies status NPM version npm Downloads Known Vulnerabilities

useful decorators The cache will remove the oldest used item when reached max capacity

Installation:

npm install appolo-decorators --save

Delay

delay call method by given time in milliseconds

import { delay } from 'appolo-decorators';

class SomeClass {
    @delay(1000)
    method() {
    // ...
    }
}

Cache

cache method results using appolo-cache

options:

  • maxSize - max cache size default 1000

  • maxAge - optional set maximum age in ms of all cache items default unlimited

  • clone - clone the cache result default false

  • interval - set cache refresh interval

  • resolver - function to get the cache key by default the fist argument will be used as the cache key

  • multi - boolean if no resolver defined use all the arguments as key else use the first argument as key default false

  • peek - boolean use peek method instead of get default false

  • refresh - boolean refresh cache on half maxAge expire default false

import { cache } from 'appolo-decorators';

class SomeClass {
    private counter = 0;

    @cache()
    method() {
       return ++this.counter
    }
}

let someClass = new SomeClass();
someClass.method() // 1
someClass.method()// 1

Bind

bind method to class instance

import { bind } from 'appolo-decorators';

class SomeClass {
    @bind
    method() {
    // ...
    }
}

document.body.addEventListener('click', new SomeClass().method);

Debounce

debounce method using lodash debounce

import { debounce } from 'appolo-decorators';

class SomeClass {
    @debounce(1000,{trailing:true})
    method() {
    // ...
    }
}

Throttle

throttle method using lodash debounce

import { throttle } from 'appolo-decorators';

class SomeClass {
    @throttle(1000,{trailing:true})
    method() {
    // ...
    }
}

Memoize

memoize method using lodash debounce

import { memoize } from 'appolo-decorators';

class SomeClass {
    @memoize()
    method() {
    // ...
    }
}

Once

method will be called max n times and return last call result

import { once } from 'appolo-decorators';

class SomeClass {
    @once(2)
    method() {
    // ...
    }
}

Interval

set interval to method once called

import { interval } from 'appolo-decorators';

class SomeClass {
    @interval(100)
    method() {
    // ...
    }
}
//start the interval
new SomeClass().method()

Mixins

add prototype to class

import { mixins } from 'appolo-decorators';

@mixins(EventDispacher)
class SomeClass {

    method() {
    // ...
    }
}
new SomeClass().on("some event")

License

MIT