hookify-object v0.1.2
hookify-object
Wrap an object with ES6 proxy to add hooks capabilities through an event emitter.
Installation
$ npm install --save hookify-object
Usage
Hookify-object
provides severals hooks for an object :
- Before/after call a method;
- After resolve/reject a promise;
- Before/after set a object property;
- Before/after delete a property.
Example
Here is a basic usage to get the execution time of the object's methods :
const hookify = require('hookify-object')
const obj = {
process () {
/* ... */
},
}
const objWithHooks = hookify(obj)
objWithHooks.hooks.on('beforeCall', (context) => {
const { name } = context
console.time(name)
})
objWithHooks.hooks.on('afterCall', (context) => {
const { name } = context
console.timeEnd(name)
})
objWithHooks.process()
API
hookify(target)
Add hook capabilities to a target object.
Parameters
Name | Type | Default | Description |
---|---|---|---|
target | object | - | The object on which we want to add the hook capabilities |
Return value
Type | Description |
---|---|
Proxy | The hook wrapper of the target object |
Example
const hookify = require('hookify-object')
const obj = {}
const objWithHooks = hookify(obj)
proxy.hooks.on(hookName, handler)
Attach a handler for the hook named hookName
.
Name | Type | Default | Description |
---|---|---|---|
hookName | string | - | The hook's name |
handler | Function | - | The handler function for the specified hook (see bellow) |
handler (context)
Check each hook to know the structure of the context
object.
Name | Type | Default | Description |
---|---|---|---|
context | object | - | Contains the context of the hook |
Hooks list
beforeCall:methodName
Called before calling a method. You can specify a unique method via the methodName
option.
Example
objWithHooks.hooks.on('beforeCall', (context) => {
/* Call before the call of any method */
})
objWithHooks.hooks.on('beforeCall:test', (context) => {
/* Call before the call of the "test" method */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the called method |
params | Array | - | The parameters of the called method |
afterCall:methodName
Called after calling a method. You can specify a unique method via the methodName
option.
Example
objWithHooks.hooks.on('afterCall', (context) => {
/* Call after the call of any method */
})
objWithHooks.hooks.on('afterCall:test', (context) => {
/* Call after the call of the "test" method */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the called method |
params | Array | - | The parameters of the called method |
result | * | - | The returned value of the called method |
afterResolve:methodName
Called when the promise returned by the method has resolved. You can specify a unique method via the methodName
option.
Example
objWithHooks.hooks.on('afterResolve', (context) => {
/* Call after resolve the promise of any method */
})
objWithHooks.hooks.on('afterResolve:testAsync', (context) => {
/* Call after resolve the promise of the "testAsync" method */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the called method |
params | Array | - | The parameters of the called method |
result | * | - | The returned value of the promise |
afterReject:methodName
Called when the promise returned by the method has rejected. You can specify a unique method via the methodName
option.
Example
objWithHooks.hooks.on('afterReject', (context) => {
/* Call after reject the promise of any method */
})
objWithHooks.hooks.on('afterReject:testAsync', (context) => {
/* Call after reject the promise of the "testAsync" method */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the called method |
params | Array | - | The parameters of the called method |
errors | Array | - | The returned errors of the promise |
beforeSet:propertyName
Called before setting a property value. You can specify a unique property via the propertyName
option.
Example
objWithHooks.hooks.on('beforeSet', (context) => {
/* Call before set any property */
})
objWithHooks.hooks.on('beforeSet:value', (context) => {
/* Call before set the property "value" */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the property |
value | * | - | The new value of the property to set |
afterSet:propertyName
Called after setting a property value. You can specify a unique property via the propertyName
option.
Example
objWithHooks.hooks.on('afterSet', (context) => {
/* Call after set any property */
})
objWithHooks.hooks.on('afterSet:value', (context) => {
/* Call after set the property "value" */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the property |
value | * | - | The new value of the property to set |
beforeDelete:propertyName
Called before deleting a property via the delete
instruction. You can specify a unique property via the propertyName
option.
Example
objWithHooks.hooks.on('beforeDelete', (context) => {
/* Call before delete any property */
})
objWithHooks.hooks.on('beforeDelete:value', (context) => {
/* Call before delete the property "value" */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the property |
afterDelete:propertyName
Called after deleting a property via the delete
instruction. You can specify a unique property via the propertyName
option.
Example
objWithHooks.hooks.on('afterDelete', (context) => {
/* Call after delete any property */
})
objWithHooks.hooks.on('afterDelete:value', (context) => {
/* Call after delete the property "value" */
})
context object
Name | Type | Default | Description |
---|---|---|---|
self | object | - | The object wrapped by the hook proxy |
name | string | - | The name of the property |