MCPcopy Index your code
hub / github.com/nodejs/node / defineEventHandler

Function defineEventHandler

lib/internal/event_target.js:1134–1179  ·  view source on GitHub ↗
(emitter, name, event = name)

Source from the content-addressed store, hash-verified

1132}
1133
1134function defineEventHandler(emitter, name, event = name) {
1135 // 8.1.5.1 Event handlers - basically `on[eventName]` attributes
1136 const propName = `on${name}`;
1137 function get() {
1138 validateThisInternalField(this, kHandlers, 'EventTarget');
1139 return this[kHandlers]?.get(event)?.handler ?? null;
1140 }
1141 ObjectDefineProperty(get, 'name', {
1142 __proto__: null,
1143 value: `get ${propName}`,
1144 });
1145
1146 function set(value) {
1147 validateThisInternalField(this, kHandlers, 'EventTarget');
1148 let wrappedHandler = this[kHandlers]?.get(event);
1149 if (wrappedHandler) {
1150 if (typeof wrappedHandler.handler === 'function') {
1151 this[kEvents].get(event).size--;
1152 const size = this[kEvents].get(event).size;
1153 this[kRemoveListener](size, event, wrappedHandler.handler, false);
1154 }
1155 wrappedHandler.handler = value;
1156 if (typeof wrappedHandler.handler === 'function') {
1157 this[kEvents].get(event).size++;
1158 const size = this[kEvents].get(event).size;
1159 this[kNewListener](size, event, value, false, false, false, false);
1160 }
1161 } else {
1162 wrappedHandler = makeEventHandler(value);
1163 this.addEventListener(event, wrappedHandler);
1164 }
1165 this[kHandlers].set(event, wrappedHandler);
1166 }
1167 ObjectDefineProperty(set, 'name', {
1168 __proto__: null,
1169 value: `set ${propName}`,
1170 });
1171
1172 ObjectDefineProperty(emitter, propName, {
1173 __proto__: null,
1174 get,
1175 set,
1176 configurable: true,
1177 enumerable: true,
1178 });
1179}
1180
1181module.exports = {
1182 Event,

Callers 4

io.jsFile · 0.85
performance.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…