Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 061fb20

Browse filesBrowse files
KhafraDevdanielleadams
authored andcommitted
events: add getMaxListeners method
PR-URL: #47039 Reviewed-By: Debadree Chatterjee <debadree333@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent be34777 commit 061fb20
Copy full SHA for 061fb20

File tree

Expand file treeCollapse file tree

3 files changed

+89
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+89
-0
lines changed
Open diff view settings
Collapse file

‎doc/api/events.md‎

Copy file name to clipboardExpand all lines: doc/api/events.md
+52Lines changed: 52 additions & 0 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,58 @@ const { getEventListeners, EventEmitter } = require('node:events');
12661266
}
12671267
```
12681268

1269+
## `events.getMaxListeners(emitterOrTarget)`
1270+
1271+
<!-- YAML
1272+
added: REPLACEME
1273+
-->
1274+
1275+
* `emitterOrTarget` {EventEmitter|EventTarget}
1276+
* Returns: {number}
1277+
1278+
Returns the currently set max amount of listeners.
1279+
1280+
For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on
1281+
the emitter.
1282+
1283+
For `EventTarget`s this is the only way to get the max event listeners for the
1284+
event target. If the number of event handlers on a single EventTarget exceeds
1285+
the max set, the EventTarget will print a warning.
1286+
1287+
```mjs
1288+
import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';
1289+
1290+
{
1291+
const ee = new EventEmitter();
1292+
console.log(getMaxListeners(ee)); // 10
1293+
setMaxListeners(11, ee);
1294+
console.log(getMaxListeners(ee)); // 11
1295+
}
1296+
{
1297+
const et = new EventTarget();
1298+
console.log(getMaxListeners(et)); // 10
1299+
setMaxListeners(11, et);
1300+
console.log(getMaxListeners(et)); // 11
1301+
}
1302+
```
1303+
1304+
```cjs
1305+
const { getMaxListeners, setMaxListeners, EventEmitter } = require('node:events');
1306+
1307+
{
1308+
const ee = new EventEmitter();
1309+
console.log(getMaxListeners(ee)); // 10
1310+
setMaxListeners(11, ee);
1311+
console.log(getMaxListeners(ee)); // 11
1312+
}
1313+
{
1314+
const et = new EventTarget();
1315+
console.log(getMaxListeners(et)); // 10
1316+
setMaxListeners(11, et);
1317+
console.log(getMaxListeners(et)); // 11
1318+
}
1319+
```
1320+
12691321
## `events.once(emitter, name[, options])`
12701322

12711323
<!-- YAML
Collapse file

‎lib/events.js‎

Copy file name to clipboardExpand all lines: lib/events.js
+18Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ module.exports = EventEmitter;
216216
module.exports.once = once;
217217
module.exports.on = on;
218218
module.exports.getEventListeners = getEventListeners;
219+
module.exports.getMaxListeners = getMaxListeners;
219220
// Backwards-compat with node 0.10.x
220221
EventEmitter.EventEmitter = EventEmitter;
221222

@@ -933,6 +934,23 @@ function getEventListeners(emitterOrTarget, type) {
933934
emitterOrTarget);
934935
}
935936

937+
/**
938+
* Returns the max listeners set.
939+
* @param {EventEmitter | EventTarget} emitterOrTarget
940+
* @returns {number}
941+
*/
942+
function getMaxListeners(emitterOrTarget) {
943+
if (typeof emitterOrTarget?.getMaxListeners === 'function') {
944+
return _getMaxListeners(emitterOrTarget);
945+
} else if (emitterOrTarget?.[kMaxEventTargetListeners]) {
946+
return emitterOrTarget[kMaxEventTargetListeners];
947+
}
948+
949+
throw new ERR_INVALID_ARG_TYPE('emitter',
950+
['EventEmitter', 'EventTarget'],
951+
emitterOrTarget);
952+
}
953+
936954
/**
937955
* Creates a `Promise` that is fulfilled when the emitter
938956
* emits the given event.
Collapse file
+19Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('node:assert');
5+
const { getMaxListeners, EventEmitter, defaultMaxListeners, setMaxListeners } = require('node:events');
6+
7+
{
8+
const ee = new EventEmitter();
9+
assert.strictEqual(getMaxListeners(ee), defaultMaxListeners);
10+
setMaxListeners(101, ee);
11+
assert.strictEqual(getMaxListeners(ee), 101);
12+
}
13+
14+
{
15+
const et = new EventTarget();
16+
assert.strictEqual(getMaxListeners(et), defaultMaxListeners);
17+
setMaxListeners(101, et);
18+
assert.strictEqual(getMaxListeners(et), 101);
19+
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.