aboutsummaryrefslogtreecommitdiff
path: root/bench/emitter/implementations.mjs
blob: 2050ac38e01bb8d07a88ab523f987fe8e7343bca (plain) (blame)
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
import EventEmitter3 from "eventemitter3";
import { group } from "mitata";
import EventEmitterNative from "node:events";

export const implementations = [
  {
    EventEmitter: EventEmitterNative,
    name: process.isBun ? (EventEmitterNative.init ? "bun" : "C++") : "node:events",
    monkey: true,
  },
  // { EventEmitter: EventEmitter3, name: "EventEmitter3" },
].filter(Boolean);

for (const impl of implementations) {
  impl.EventEmitter?.setMaxListeners?.(Infinity);
}

export function groupForEmitter(name, cb) {
  if (implementations.length === 1) {
    return cb({
      ...implementations[0],
      name: `${name}: ${implementations[0].name}`,
    });
  } else {
    return group(name, () => {
      for (let impl of implementations) {
        cb(impl);
      }
    });
  }
}