Completed
Push — master ( cdadad...8d09a6 )
by Dimas
36:02 queued 17:12
created

libs/typings/node/cluster.d.ts   F

Complexity

Total Complexity 106
Complexity/F 1

Size

Lines of Code 263
Function Count 106

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 225
dl 0
loc 263
rs 2
c 0
b 0
f 0
wmc 106
mnd 0
bc 0
fnc 106
bpm 0
cpm 1
noi 0

28 Functions

Rating   Name   Duplication   Size   Complexity  
A cluster.d.ts ➔ addListener 0 12 1
A Worker.prependOnceListener 0 2 1
A Worker.send 0 1 1
A Worker.addListener 0 11 1
A cluster.d.ts ➔ listenerCount 0 1 1
A Worker.isConnected 0 1 1
A cluster.d.ts ➔ removeAllListeners 0 1 1
A cluster.d.ts ➔ prependListener 0 2 1
A cluster.d.ts ➔ emit 0 2 1
A Worker.once 0 2 1
A cluster.d.ts ➔ setupMaster 0 1 1
A Worker.on 0 2 1
A cluster.d.ts ➔ fork 0 1 1
A cluster.d.ts ➔ removeListener 0 2 1
A Worker.prependListener 0 2 1
A cluster.d.ts ➔ getMaxListeners 0 1 1
A cluster.d.ts ➔ once 0 2 1
A Worker.emit 0 2 1
A cluster.d.ts ➔ disconnect 0 2 1
A cluster.d.ts ➔ on 0 2 1
A cluster.d.ts ➔ eventNames 0 2 1
A cluster.d.ts ➔ listeners 0 1 1
A Worker.isDead 0 1 1
A Worker.destroy 0 1 1
A Worker.kill 0 1 1
A cluster.d.ts ➔ setMaxListeners 0 1 1
A cluster.d.ts ➔ prependOnceListener 0 2 1
A Worker.disconnect 0 1 1

How to fix   Complexity   

Complexity

Complex classes like libs/typings/node/cluster.d.ts often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
declare module "cluster" {
2
    import * as child from "child_process";
3
    import * as events from "events";
4
    import * as net from "net";
5
6
    // interfaces
7
    interface ClusterSettings {
8
        execArgv?: string[]; // default: process.execArgv
9
        exec?: string;
10
        args?: string[];
11
        silent?: boolean;
12
        stdio?: any[];
13
        uid?: number;
14
        gid?: number;
15
        inspectPort?: number | (() => number);
16
    }
17
18
    interface Address {
19
        address: string;
20
        port: number;
21
        addressType: number | "udp4" | "udp6";  // 4, 6, -1, "udp4", "udp6"
22
    }
23
24
    class Worker extends events.EventEmitter {
25
        id: number;
26
        process: child.ChildProcess;
27
        send(message: child.Serializable, sendHandle?: child.SendHandle, callback?: (error: Error | null) => void): boolean;
28
        kill(signal?: string): void;
29
        destroy(signal?: string): void;
30
        disconnect(): void;
31
        isConnected(): boolean;
32
        isDead(): boolean;
33
        exitedAfterDisconnect: boolean;
34
35
        /**
36
         * events.EventEmitter
37
         *   1. disconnect
38
         *   2. error
39
         *   3. exit
40
         *   4. listening
41
         *   5. message
42
         *   6. online
43
         */
44
        addListener(event: string, listener: (...args: any[]) => void): this;
45
        addListener(event: "disconnect", listener: () => void): this;
46
        addListener(event: "error", listener: (error: Error) => void): this;
47
        addListener(event: "exit", listener: (code: number, signal: string) => void): this;
48
        addListener(event: "listening", listener: (address: Address) => void): this;
49
        addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
50
        addListener(event: "online", listener: () => void): this;
51
52
        emit(event: string | symbol, ...args: any[]): boolean;
53
        emit(event: "disconnect"): boolean;
54
        emit(event: "error", error: Error): boolean;
55
        emit(event: "exit", code: number, signal: string): boolean;
56
        emit(event: "listening", address: Address): boolean;
57
        emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
58
        emit(event: "online"): boolean;
59
60
        on(event: string, listener: (...args: any[]) => void): this;
61
        on(event: "disconnect", listener: () => void): this;
62
        on(event: "error", listener: (error: Error) => void): this;
63
        on(event: "exit", listener: (code: number, signal: string) => void): this;
64
        on(event: "listening", listener: (address: Address) => void): this;
65
        on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
66
        on(event: "online", listener: () => void): this;
67
68
        once(event: string, listener: (...args: any[]) => void): this;
69
        once(event: "disconnect", listener: () => void): this;
70
        once(event: "error", listener: (error: Error) => void): this;
71
        once(event: "exit", listener: (code: number, signal: string) => void): this;
72
        once(event: "listening", listener: (address: Address) => void): this;
73
        once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
74
        once(event: "online", listener: () => void): this;
75
76
        prependListener(event: string, listener: (...args: any[]) => void): this;
77
        prependListener(event: "disconnect", listener: () => void): this;
78
        prependListener(event: "error", listener: (error: Error) => void): this;
79
        prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
80
        prependListener(event: "listening", listener: (address: Address) => void): this;
81
        prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
82
        prependListener(event: "online", listener: () => void): this;
83
84
        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
85
        prependOnceListener(event: "disconnect", listener: () => void): this;
86
        prependOnceListener(event: "error", listener: (error: Error) => void): this;
87
        prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
88
        prependOnceListener(event: "listening", listener: (address: Address) => void): this;
89
        prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
90
        prependOnceListener(event: "online", listener: () => void): this;
91
    }
92
93
    interface Cluster extends events.EventEmitter {
94
        Worker: Worker;
95
        disconnect(callback?: () => void): void;
96
        fork(env?: any): Worker;
97
        isMaster: boolean;
98
        isWorker: boolean;
99
        schedulingPolicy: number;
100
        settings: ClusterSettings;
101
        setupMaster(settings?: ClusterSettings): void;
102
        worker?: Worker;
103
        workers?: NodeJS.Dict<Worker>;
104
105
        readonly SCHED_NONE: number;
106
        readonly SCHED_RR: number;
107
108
        /**
109
         * events.EventEmitter
110
         *   1. disconnect
111
         *   2. exit
112
         *   3. fork
113
         *   4. listening
114
         *   5. message
115
         *   6. online
116
         *   7. setup
117
         */
118
        addListener(event: string, listener: (...args: any[]) => void): this;
119
        addListener(event: "disconnect", listener: (worker: Worker) => void): this;
120
        addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
121
        addListener(event: "fork", listener: (worker: Worker) => void): this;
122
        addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
123
        addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
124
        addListener(event: "online", listener: (worker: Worker) => void): this;
125
        addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
126
127
        emit(event: string | symbol, ...args: any[]): boolean;
128
        emit(event: "disconnect", worker: Worker): boolean;
129
        emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
130
        emit(event: "fork", worker: Worker): boolean;
131
        emit(event: "listening", worker: Worker, address: Address): boolean;
132
        emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
133
        emit(event: "online", worker: Worker): boolean;
134
        emit(event: "setup", settings: ClusterSettings): boolean;
135
136
        on(event: string, listener: (...args: any[]) => void): this;
137
        on(event: "disconnect", listener: (worker: Worker) => void): this;
138
        on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
139
        on(event: "fork", listener: (worker: Worker) => void): this;
140
        on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
141
        on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
142
        on(event: "online", listener: (worker: Worker) => void): this;
143
        on(event: "setup", listener: (settings: ClusterSettings) => void): this;
144
145
        once(event: string, listener: (...args: any[]) => void): this;
146
        once(event: "disconnect", listener: (worker: Worker) => void): this;
147
        once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
148
        once(event: "fork", listener: (worker: Worker) => void): this;
149
        once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
150
        once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
151
        once(event: "online", listener: (worker: Worker) => void): this;
152
        once(event: "setup", listener: (settings: ClusterSettings) => void): this;
153
154
        prependListener(event: string, listener: (...args: any[]) => void): this;
155
        prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
156
        prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
157
        prependListener(event: "fork", listener: (worker: Worker) => void): this;
158
        prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
159
        prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
160
        prependListener(event: "online", listener: (worker: Worker) => void): this;
161
        prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
162
163
        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
164
        prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
165
        prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
166
        prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
167
        prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
168
        // the handle is a net.Socket or net.Server object, or undefined.
169
        prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
170
        prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
171
        prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
172
    }
173
174
    const SCHED_NONE: number;
175
    const SCHED_RR: number;
176
177
    function disconnect(callback?: () => void): void;
178
    function fork(env?: any): Worker;
179
    const isMaster: boolean;
180
    const isWorker: boolean;
181
    let schedulingPolicy: number;
182
    const settings: ClusterSettings;
183
    function setupMaster(settings?: ClusterSettings): void;
184
    const worker: Worker;
185
    const workers: NodeJS.Dict<Worker>;
186
187
    /**
188
     * events.EventEmitter
189
     *   1. disconnect
190
     *   2. exit
191
     *   3. fork
192
     *   4. listening
193
     *   5. message
194
     *   6. online
195
     *   7. setup
196
     */
197
    function addListener(event: string, listener: (...args: any[]) => void): Cluster;
198
    function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
199
    function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
200
    function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;
201
    function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
202
     // the handle is a net.Socket or net.Server object, or undefined.
203
    function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
204
    function addListener(event: "online", listener: (worker: Worker) => void): Cluster;
205
    function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
206
207
    function emit(event: string | symbol, ...args: any[]): boolean;
208
    function emit(event: "disconnect", worker: Worker): boolean;
209
    function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
210
    function emit(event: "fork", worker: Worker): boolean;
211
    function emit(event: "listening", worker: Worker, address: Address): boolean;
212
    function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
213
    function emit(event: "online", worker: Worker): boolean;
214
    function emit(event: "setup", settings: ClusterSettings): boolean;
215
216
    function on(event: string, listener: (...args: any[]) => void): Cluster;
217
    function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;
218
    function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
219
    function on(event: "fork", listener: (worker: Worker) => void): Cluster;
220
    function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
221
    function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;  // the handle is a net.Socket or net.Server object, or undefined.
222
    function on(event: "online", listener: (worker: Worker) => void): Cluster;
223
    function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
224
225
    function once(event: string, listener: (...args: any[]) => void): Cluster;
226
    function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;
227
    function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
228
    function once(event: "fork", listener: (worker: Worker) => void): Cluster;
229
    function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
230
    function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;  // the handle is a net.Socket or net.Server object, or undefined.
231
    function once(event: "online", listener: (worker: Worker) => void): Cluster;
232
    function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
233
234
    function removeListener(event: string, listener: (...args: any[]) => void): Cluster;
235
    function removeAllListeners(event?: string): Cluster;
236
    function setMaxListeners(n: number): Cluster;
237
    function getMaxListeners(): number;
238
    function listeners(event: string): Function[];
239
    function listenerCount(type: string): number;
240
241
    function prependListener(event: string, listener: (...args: any[]) => void): Cluster;
242
    function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
243
    function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
244
    function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;
245
    function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
246
     // the handle is a net.Socket or net.Server object, or undefined.
247
    function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
248
    function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;
249
    function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
250
251
    function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;
252
    function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
253
    function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
254
    function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;
255
    function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
256
     // the handle is a net.Socket or net.Server object, or undefined.
257
    function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
258
    function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;
259
    function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
260
261
    function eventNames(): string[];
262
}
263