Skip to content

Commit 8be82b7

Browse files
committed
Remove use of emits for node client.
1 parent 905b593 commit 8be82b7

File tree

1 file changed

+76
-34
lines changed

1 file changed

+76
-34
lines changed

packages/sdk/server-node/src/LDClientNode.ts

Lines changed: 76 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,51 +7,22 @@ import {
77
internal,
88
LDClientImpl,
99
LDPluginEnvironmentMetadata,
10-
Platform,
1110
SafeLogger,
1211
TypeValidators,
1312
} from '@launchdarkly/js-server-sdk-common';
14-
import { LDClientCallbacks } from '@launchdarkly/js-server-sdk-common/dist/LDClientImpl';
15-
import { ServerInternalOptions } from '@launchdarkly/js-server-sdk-common/dist/options/ServerInternalOptions';
1613

1714
import { BigSegmentStoreStatusProvider, LDClient } from './api';
1815
import { LDOptions } from './api/LDOptions';
1916
import { LDPlugin } from './api/LDPlugin';
2017
import BigSegmentStoreStatusProviderNode from './BigSegmentsStoreStatusProviderNode';
21-
import { Emits } from './Emits';
2218
import NodePlatform from './platform/NodePlatform';
2319

24-
/**
25-
* @internal
26-
* Extend the base client implementation with an event emitter.
27-
*
28-
* The LDClientNode implementation must satisfy the LDClient interface,
29-
* which is why we extend the base client implementation with an event emitter
30-
* and then inherit from that. This adds everything we need to the implementation
31-
* to comply with the interface.
32-
*
33-
* This allows re-use of the `Emits` mixin for this and big segments.
34-
*/
35-
class ClientBaseWithEmitter extends LDClientImpl {
36-
emitter: EventEmitter;
37-
38-
constructor(
39-
sdkKey: string,
40-
platform: Platform,
41-
options: LDOptions,
42-
callbacks: LDClientCallbacks,
43-
internalOptions?: ServerInternalOptions,
44-
) {
45-
super(sdkKey, platform, options, callbacks, internalOptions);
46-
this.emitter = new EventEmitter();
47-
}
48-
}
49-
5020
/**
5121
* @ignore
5222
*/
53-
class LDClientNode extends Emits(ClientBaseWithEmitter) implements LDClient {
23+
class LDClientNode extends LDClientImpl implements LDClient {
5424
bigSegmentStoreStatusProvider: BigSegmentStoreStatusProvider;
25+
emitter: EventEmitter;
5526

5627
constructor(sdkKey: string, options: LDOptions) {
5728
const fallbackLogger = new BasicLogger({
@@ -109,16 +80,87 @@ class LDClientNode extends Emits(ClientBaseWithEmitter) implements LDClient {
10980
internal.safeGetHooks(logger, environmentMetadata, plugins),
11081
},
11182
);
112-
// TODO: It would be good if we could re-arrange this emitter situation so we don't have to
113-
// create two emitters. It isn't harmful, but it isn't ideal.
114-
this.emitter = emitter;
11583

84+
this.emitter = emitter;
11685
this.bigSegmentStoreStatusProvider = new BigSegmentStoreStatusProviderNode(
11786
this.bigSegmentStatusProviderInternal,
11887
) as BigSegmentStoreStatusProvider;
11988

12089
internal.safeRegisterPlugins(logger, this.environmentMetadata, this, plugins);
12190
}
91+
92+
// #region: EventEmitter
93+
94+
on(eventName: string | symbol, listener: (...args: any[]) => void): this {
95+
this.emitter.on(eventName, listener);
96+
return this;
97+
}
98+
99+
addListener(eventName: string | symbol, listener: (...args: any[]) => void): this {
100+
this.emitter.addListener(eventName, listener);
101+
return this;
102+
}
103+
104+
once(eventName: string | symbol, listener: (...args: any[]) => void): this {
105+
this.emitter.once(eventName, listener);
106+
return this;
107+
}
108+
109+
removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this {
110+
this.emitter.removeListener(eventName, listener);
111+
return this;
112+
}
113+
114+
off(eventName: string | symbol, listener: (...args: any) => void): this {
115+
this.emitter.off(eventName, listener);
116+
return this;
117+
}
118+
119+
removeAllListeners(event?: string | symbol): this {
120+
this.emitter.removeAllListeners(event);
121+
return this;
122+
}
123+
124+
setMaxListeners(n: number): this {
125+
this.emitter.setMaxListeners(n);
126+
return this;
127+
}
128+
129+
getMaxListeners(): number {
130+
return this.emitter.getMaxListeners();
131+
}
132+
133+
listeners(eventName: string | symbol): Function[] {
134+
return this.emitter.listeners(eventName);
135+
}
136+
137+
rawListeners(eventName: string | symbol): Function[] {
138+
return this.emitter.rawListeners(eventName);
139+
}
140+
141+
emit(eventName: string | symbol, ...args: any[]): boolean {
142+
return this.emitter.emit(eventName, args);
143+
}
144+
145+
listenerCount(eventName: string | symbol): number {
146+
return this.emitter.listenerCount(eventName);
147+
}
148+
149+
prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this {
150+
this.emitter.prependListener(eventName, listener);
151+
return this;
152+
}
153+
154+
prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this {
155+
this.emitter.prependOnceListener(eventName, listener);
156+
return this;
157+
}
158+
159+
eventNames(): (string | symbol)[] {
160+
return this.emitter.eventNames();
161+
}
162+
163+
// #endregion
122164
}
123165

124166
export default LDClientNode;

0 commit comments

Comments
 (0)