Events & Hooks
Event system for reacting to pool changes.
on()
Registers an event handler.
typescript
pool.on(event: string, handler: Function): voidParameters:
event- Event namehandler- Handler function
Available Events:
add- Fired when an entry is addedbatchAdd- Fired when multiple entries are addedget- Fired when an entry is retrievedset- Fired when an entry is updatedremove- Fired when an entry is removedbatchRemove- Fired when multiple entries are removedbeforeSelect- Fired before query selectionafterSelect- Fired after query selection
Example:
typescript
pool.on('add', (entry: PoolEntry<User>) => {
console.log(`User ${entry.data.name} added`);
});
pool.on('get', (entry: PoolEntry<Proxy>) => {
entry.meta.usedCount++;
entry.meta.lastUsed = new Date();
});off()
Unregisters an event handler.
typescript
pool.off(event: string, handler: Function): voidParameters:
event- Event namehandler- Handler function to remove
Example:
typescript
const handler = (entry) => console.log(entry);
pool.on('add', handler);
pool.off('add', handler);wrap()
Wraps a method with custom behavior.
typescript
pool.wrap<K extends keyof Pool<T>>(
method: K,
wrapper: (original: Function, ...args: any[]) => any
): voidParameters:
method- Method name to wrapwrapper- Wrapper function
Example:
typescript
// Add logging to the add method
pool.wrap('add', (original, data, meta) => {
console.log(`Adding: ${data.name}`);
const result = original(data, meta);
console.log(`Added successfully`);
return result;
});
pool.add({ id: '1', name: 'Alice' });
// Logs:
// Adding: Alice
// Added successfully