-
-
Notifications
You must be signed in to change notification settings - Fork 743
/
events.ts
33 lines (25 loc) · 1.24 KB
/
events.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// DO NOT MODIFY - generated from packages/feathers/src/events.ts
import { NextFunction, EventEmitter } from './dependencies.ts';
import { HookContext, FeathersService } from './declarations.ts';
import { getServiceOptions, defaultEventMap } from './service.ts';
export function eventHook (context: HookContext, next: NextFunction) {
const { events } = getServiceOptions((context as any).self);
const defaultEvent = (defaultEventMap as any)[context.method] || null;
context.event = defaultEvent;
return next().then(() => {
// Send the event only if the service does not do so already (indicated in the `events` option)
// This is used for custom events and for client services receiving event from the server
if (typeof context.event === 'string' && !events.includes(context.event)) {
const results = Array.isArray(context.result) ? context.result : [ context.result ];
results.forEach(element => (context as any).self.emit(context.event, element, context));
}
});
}
export function eventMixin<A> (service: FeathersService<A>) {
const isEmitter = typeof service.on === 'function' &&
typeof service.emit === 'function';
if (!isEmitter) {
Object.assign(service, EventEmitter.prototype);
}
return service;
}