@vates/decorate-with

Creates a decorator from a function wrapper
Install
Installation of the npm package:
> npm install --save @vates/decorate-with
Usage
decorateWith(fn, ...args)
Creates a new (legacy) method decorator from a function decorator, for instance, allows using Lodash's functions as decorators:
import { decorateWith } from '@vates/decorate-with'
class Foo {
@decorateWith(lodash.debounce, 150)
bar() {
}
}
decorateMethodsWith(class, map)
Decorates a number of methods directly, without using the decorator syntax:
import { decorateMethodsWith } from '@vates/decorate-with'
class Foo {
bar() {
}
baz() {
}
}
decorateMethodsWith(Foo, {
bar: lodash.curry,
baz: [lodash.debounce, 150],
})
The decorated class is returned, so you can export it directly.
To apply multiple transforms to a method, you can either call decorateMethodsWith
multiple times or use @vates/compose
:
decorateMethodsWith(Foo, {
bar: compose([
[lodash.debounce, 150]
lodash.curry,
])
})
perInstance(fn, ...args)
Helper to decorate the method by instance instead of for the whole class.
This is often necessary for caching or deduplicating calls.
import { perInstance } from '@vates/decorateWith'
class Foo {
@decorateWith(perInstance, lodash.memoize)
bar() {
}
}
Because it's a normal function, it can also be used with decorateMethodsWith
, with compose
or even by itself.
Contributions
Contributions are very welcomed, either on the documentation or on
the code.
You may:
- report any issue
you've encountered;
- fork and create a pull request.
License
ISC © Vates SAS