m06_task3.js 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. package/.idea/.name +1 -0
  2. package/.idea/inspectionProfiles/Project_Default.xml +10 -0
  3. package/.idea/jsLibraryMappings.xml +6 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/node_lab_6.iml +12 -0
  6. package/06_task2.html +73 -0
  7. package/06_task2.js +52 -0
  8. package/06_task3.js +3 -0
  9. package/06_task4.js +3 -0
  10. package/m06_task3.js +28 -0
  11. package/package/index.js +28 -0
  12. package/package/node_modules/.package-lock.json +31 -0
  13. package/package/node_modules/@types/node/LICENSE +21 -0
  14. package/package/node_modules/@types/node/README.md +16 -0
  15. package/package/node_modules/@types/node/assert/strict.d.ts +8 -0
  16. package/package/node_modules/@types/node/assert.d.ts +961 -0
  17. package/package/node_modules/@types/node/async_hooks.d.ts +501 -0
  18. package/package/node_modules/@types/node/buffer.d.ts +2258 -0
  19. package/package/node_modules/@types/node/child_process.d.ts +1369 -0
  20. package/package/node_modules/@types/node/cluster.d.ts +410 -0
  21. package/package/node_modules/@types/node/console.d.ts +412 -0
  22. package/package/node_modules/@types/node/constants.d.ts +18 -0
  23. package/package/node_modules/@types/node/crypto.d.ts +3964 -0
  24. package/package/node_modules/@types/node/dgram.d.ts +545 -0
  25. package/package/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
  26. package/package/node_modules/@types/node/dns/promises.d.ts +370 -0
  27. package/package/node_modules/@types/node/dns.d.ts +659 -0
  28. package/package/node_modules/@types/node/dom-events.d.ts +126 -0
  29. package/package/node_modules/@types/node/domain.d.ts +170 -0
  30. package/package/node_modules/@types/node/events.d.ts +678 -0
  31. package/package/node_modules/@types/node/fs/promises.d.ts +1138 -0
  32. package/package/node_modules/@types/node/fs.d.ts +3872 -0
  33. package/package/node_modules/@types/node/globals.d.ts +300 -0
  34. package/package/node_modules/@types/node/globals.global.d.ts +1 -0
  35. package/package/node_modules/@types/node/http.d.ts +1614 -0
  36. package/package/node_modules/@types/node/http2.d.ts +2134 -0
  37. package/package/node_modules/@types/node/https.d.ts +541 -0
  38. package/package/node_modules/@types/node/index.d.ts +133 -0
  39. package/package/node_modules/@types/node/inspector.d.ts +2741 -0
  40. package/package/node_modules/@types/node/module.d.ts +114 -0
  41. package/package/node_modules/@types/node/net.d.ts +869 -0
  42. package/package/node_modules/@types/node/os.d.ts +466 -0
  43. package/package/node_modules/@types/node/package.json +232 -0
  44. package/package/node_modules/@types/node/path.d.ts +191 -0
  45. package/package/node_modules/@types/node/perf_hooks.d.ts +625 -0
  46. package/package/node_modules/@types/node/process.d.ts +1482 -0
  47. package/package/node_modules/@types/node/punycode.d.ts +117 -0
  48. package/package/node_modules/@types/node/querystring.d.ts +131 -0
  49. package/package/node_modules/@types/node/readline/promises.d.ts +143 -0
  50. package/package/node_modules/@types/node/readline.d.ts +653 -0
  51. package/package/node_modules/@types/node/repl.d.ts +424 -0
  52. package/package/node_modules/@types/node/stream/consumers.d.ts +12 -0
  53. package/package/node_modules/@types/node/stream/promises.d.ts +42 -0
  54. package/package/node_modules/@types/node/stream/web.d.ts +330 -0
  55. package/package/node_modules/@types/node/stream.d.ts +1340 -0
  56. package/package/node_modules/@types/node/string_decoder.d.ts +67 -0
  57. package/package/node_modules/@types/node/test.d.ts +314 -0
  58. package/package/node_modules/@types/node/timers/promises.d.ts +68 -0
  59. package/package/node_modules/@types/node/timers.d.ts +94 -0
  60. package/package/node_modules/@types/node/tls.d.ts +1028 -0
  61. package/package/node_modules/@types/node/trace_events.d.ts +171 -0
  62. package/package/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  63. package/package/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
  64. package/package/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
  65. package/package/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
  66. package/package/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
  67. package/package/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
  68. package/package/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  69. package/package/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
  70. package/package/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
  71. package/package/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
  72. package/package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
  73. package/package/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
  74. package/package/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
  75. package/package/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
  76. package/package/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  77. package/package/node_modules/@types/node/ts4.8/events.d.ts +678 -0
  78. package/package/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
  79. package/package/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
  80. package/package/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
  81. package/package/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  82. package/package/node_modules/@types/node/ts4.8/http.d.ts +1614 -0
  83. package/package/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
  84. package/package/node_modules/@types/node/ts4.8/https.d.ts +541 -0
  85. package/package/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  86. package/package/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
  87. package/package/node_modules/@types/node/ts4.8/module.d.ts +114 -0
  88. package/package/node_modules/@types/node/ts4.8/net.d.ts +869 -0
  89. package/package/node_modules/@types/node/ts4.8/os.d.ts +466 -0
  90. package/package/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  91. package/package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
  92. package/package/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
  93. package/package/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  94. package/package/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
  95. package/package/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  96. package/package/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
  97. package/package/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
  98. package/package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  99. package/package/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
  100. package/package/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
  101. package/package/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
  102. package/package/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  103. package/package/node_modules/@types/node/ts4.8/test.d.ts +314 -0
  104. package/package/node_modules/@types/node/ts4.8/timers/promises.d.ts +68 -0
  105. package/package/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
  106. package/package/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
  107. package/package/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  108. package/package/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  109. package/package/node_modules/@types/node/ts4.8/url.d.ts +897 -0
  110. package/package/node_modules/@types/node/ts4.8/util.d.ts +1850 -0
  111. package/package/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
  112. package/package/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
  113. package/package/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  114. package/package/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
  115. package/package/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  116. package/package/node_modules/@types/node/tty.d.ts +206 -0
  117. package/package/node_modules/@types/node/url.d.ts +897 -0
  118. package/package/node_modules/@types/node/util.d.ts +1850 -0
  119. package/package/node_modules/@types/node/v8.d.ts +396 -0
  120. package/package/node_modules/@types/node/vm.d.ts +509 -0
  121. package/package/node_modules/@types/node/wasi.d.ts +158 -0
  122. package/package/node_modules/@types/node/worker_threads.d.ts +689 -0
  123. package/package/node_modules/@types/node/zlib.d.ts +517 -0
  124. package/package/node_modules/@types/nodemailer/LICENSE +21 -0
  125. package/package/node_modules/@types/nodemailer/README.md +16 -0
  126. package/package/node_modules/@types/nodemailer/index.d.ts +83 -0
  127. package/package/node_modules/@types/nodemailer/lib/addressparser/index.d.ts +31 -0
  128. package/package/node_modules/@types/nodemailer/lib/base64/index.d.ts +22 -0
  129. package/package/node_modules/@types/nodemailer/lib/dkim/index.d.ts +45 -0
  130. package/package/node_modules/@types/nodemailer/lib/dkim/message-parser.d.ts +75 -0
  131. package/package/node_modules/@types/nodemailer/lib/dkim/relaxed-body.d.ts +75 -0
  132. package/package/node_modules/@types/nodemailer/lib/dkim/sign.d.ts +11 -0
  133. package/package/node_modules/@types/nodemailer/lib/fetch/cookies.d.ts +54 -0
  134. package/package/node_modules/@types/nodemailer/lib/fetch/index.d.ts +38 -0
  135. package/package/node_modules/@types/nodemailer/lib/json-transport/index.d.ts +50 -0
  136. package/package/node_modules/@types/nodemailer/lib/mail-composer/index.d.ts +25 -0
  137. package/package/node_modules/@types/nodemailer/lib/mailer/index.d.ts +230 -0
  138. package/package/node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts +28 -0
  139. package/package/node_modules/@types/nodemailer/lib/mime-funcs/index.d.ts +87 -0
  140. package/package/node_modules/@types/nodemailer/lib/mime-funcs/mime-types.d.ts +2 -0
  141. package/package/node_modules/@types/nodemailer/lib/mime-node/index.d.ts +137 -0
  142. package/package/node_modules/@types/nodemailer/lib/mime-node/last-newline.d.ts +9 -0
  143. package/package/node_modules/@types/nodemailer/lib/qp/index.d.ts +23 -0
  144. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts +53 -0
  145. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-unix.d.ts +7 -0
  146. package/package/node_modules/@types/nodemailer/lib/sendmail-transport/le-windows.d.ts +7 -0
  147. package/package/node_modules/@types/nodemailer/lib/ses-transport/index.d.ts +136 -0
  148. package/package/node_modules/@types/nodemailer/lib/shared/index.d.ts +51 -0
  149. package/package/node_modules/@types/nodemailer/lib/smtp-connection/data-stream.d.ts +11 -0
  150. package/package/node_modules/@types/nodemailer/lib/smtp-connection/http-proxy-client.d.ts +11 -0
  151. package/package/node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts +254 -0
  152. package/package/node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts +90 -0
  153. package/package/node_modules/@types/nodemailer/lib/smtp-pool/pool-resource.d.ts +66 -0
  154. package/package/node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts +115 -0
  155. package/package/node_modules/@types/nodemailer/lib/stream-transport/index.d.ts +56 -0
  156. package/package/node_modules/@types/nodemailer/lib/well-known/index.d.ts +6 -0
  157. package/package/node_modules/@types/nodemailer/lib/xoauth2/index.d.ts +110 -0
  158. package/package/node_modules/@types/nodemailer/package.json +37 -0
  159. package/package/node_modules/nodemailer/.gitattributes +6 -0
  160. package/package/node_modules/nodemailer/.prettierrc.js +8 -0
  161. package/package/node_modules/nodemailer/CHANGELOG.md +715 -0
  162. package/package/node_modules/nodemailer/CODE_OF_CONDUCT.md +76 -0
  163. package/package/node_modules/nodemailer/CONTRIBUTING.md +67 -0
  164. package/package/node_modules/nodemailer/LICENSE +16 -0
  165. package/package/node_modules/nodemailer/README.md +93 -0
  166. package/package/node_modules/nodemailer/SECURITY.txt +22 -0
  167. package/package/node_modules/nodemailer/lib/addressparser/index.js +313 -0
  168. package/package/node_modules/nodemailer/lib/base64/index.js +142 -0
  169. package/package/node_modules/nodemailer/lib/dkim/index.js +251 -0
  170. package/package/node_modules/nodemailer/lib/dkim/message-parser.js +155 -0
  171. package/package/node_modules/nodemailer/lib/dkim/relaxed-body.js +154 -0
  172. package/package/node_modules/nodemailer/lib/dkim/sign.js +117 -0
  173. package/package/node_modules/nodemailer/lib/fetch/cookies.js +281 -0
  174. package/package/node_modules/nodemailer/lib/fetch/index.js +269 -0
  175. package/package/node_modules/nodemailer/lib/json-transport/index.js +82 -0
  176. package/package/node_modules/nodemailer/lib/mail-composer/index.js +558 -0
  177. package/package/node_modules/nodemailer/lib/mailer/index.js +427 -0
  178. package/package/node_modules/nodemailer/lib/mailer/mail-message.js +315 -0
  179. package/package/node_modules/nodemailer/lib/mime-funcs/index.js +619 -0
  180. package/package/node_modules/nodemailer/lib/mime-funcs/mime-types.js +2102 -0
  181. package/package/node_modules/nodemailer/lib/mime-node/index.js +1290 -0
  182. package/package/node_modules/nodemailer/lib/mime-node/last-newline.js +33 -0
  183. package/package/node_modules/nodemailer/lib/mime-node/le-unix.js +43 -0
  184. package/package/node_modules/nodemailer/lib/mime-node/le-windows.js +52 -0
  185. package/package/node_modules/nodemailer/lib/nodemailer.js +143 -0
  186. package/package/node_modules/nodemailer/lib/qp/index.js +219 -0
  187. package/package/node_modules/nodemailer/lib/sendmail-transport/index.js +210 -0
  188. package/package/node_modules/nodemailer/lib/ses-transport/index.js +349 -0
  189. package/package/node_modules/nodemailer/lib/shared/index.js +639 -0
  190. package/package/node_modules/nodemailer/lib/smtp-connection/data-stream.js +108 -0
  191. package/package/node_modules/nodemailer/lib/smtp-connection/http-proxy-client.js +143 -0
  192. package/package/node_modules/nodemailer/lib/smtp-connection/index.js +1786 -0
  193. package/package/node_modules/nodemailer/lib/smtp-pool/index.js +648 -0
  194. package/package/node_modules/nodemailer/lib/smtp-pool/pool-resource.js +253 -0
  195. package/package/node_modules/nodemailer/lib/smtp-transport/index.js +416 -0
  196. package/package/node_modules/nodemailer/lib/stream-transport/index.js +135 -0
  197. package/package/node_modules/nodemailer/lib/well-known/index.js +47 -0
  198. package/package/node_modules/nodemailer/lib/well-known/services.json +286 -0
  199. package/package/node_modules/nodemailer/lib/xoauth2/index.js +376 -0
  200. package/package/node_modules/nodemailer/package.json +46 -0
  201. package/package/node_modules/nodemailer/postinstall.js +101 -0
  202. package/package/package-lock.json +60 -0
  203. package/package/package.json +6 -0
  204. package/package.json +19 -0
@@ -0,0 +1,678 @@
1
+ /**
2
+ * Much of the Node.js core API is built around an idiomatic asynchronous
3
+ * event-driven architecture in which certain kinds of objects (called "emitters")
4
+ * emit named events that cause `Function` objects ("listeners") to be called.
5
+ *
6
+ * For instance: a `net.Server` object emits an event each time a peer
7
+ * connects to it; a `fs.ReadStream` emits an event when the file is opened;
8
+ * a `stream` emits an event whenever data is available to be read.
9
+ *
10
+ * All objects that emit events are instances of the `EventEmitter` class. These
11
+ * objects expose an `eventEmitter.on()` function that allows one or more
12
+ * functions to be attached to named events emitted by the object. Typically,
13
+ * event names are camel-cased strings but any valid JavaScript property key
14
+ * can be used.
15
+ *
16
+ * When the `EventEmitter` object emits an event, all of the functions attached
17
+ * to that specific event are called _synchronously_. Any values returned by the
18
+ * called listeners are _ignored_ and discarded.
19
+ *
20
+ * The following example shows a simple `EventEmitter` instance with a single
21
+ * listener. The `eventEmitter.on()` method is used to register listeners, while
22
+ * the `eventEmitter.emit()` method is used to trigger the event.
23
+ *
24
+ * ```js
25
+ * const EventEmitter = require('events');
26
+ *
27
+ * class MyEmitter extends EventEmitter {}
28
+ *
29
+ * const myEmitter = new MyEmitter();
30
+ * myEmitter.on('event', () => {
31
+ * console.log('an event occurred!');
32
+ * });
33
+ * myEmitter.emit('event');
34
+ * ```
35
+ * @see [source](https://github.com/nodejs/node/blob/v18.0.0/lib/events.js)
36
+ */
37
+ declare module 'events' {
38
+ // NOTE: This class is in the docs but is **not actually exported** by Node.
39
+ // If https://github.com/nodejs/node/issues/39903 gets resolved and Node
40
+ // actually starts exporting the class, uncomment below.
41
+
42
+ // import { EventListener, EventListenerObject } from '__dom-events';
43
+ // /** The NodeEventTarget is a Node.js-specific extension to EventTarget that emulates a subset of the EventEmitter API. */
44
+ // interface NodeEventTarget extends EventTarget {
45
+ // /**
46
+ // * Node.js-specific extension to the `EventTarget` class that emulates the equivalent `EventEmitter` API.
47
+ // * The only difference between `addListener()` and `addEventListener()` is that addListener() will return a reference to the EventTarget.
48
+ // */
49
+ // addListener(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this;
50
+ // /** Node.js-specific extension to the `EventTarget` class that returns an array of event `type` names for which event listeners are registered. */
51
+ // eventNames(): string[];
52
+ // /** Node.js-specific extension to the `EventTarget` class that returns the number of event listeners registered for the `type`. */
53
+ // listenerCount(type: string): number;
54
+ // /** Node.js-specific alias for `eventTarget.removeListener()`. */
55
+ // off(type: string, listener: EventListener | EventListenerObject): this;
56
+ // /** Node.js-specific alias for `eventTarget.addListener()`. */
57
+ // on(type: string, listener: EventListener | EventListenerObject, options?: { once: boolean }): this;
58
+ // /** Node.js-specific extension to the `EventTarget` class that adds a `once` listener for the given event `type`. This is equivalent to calling `on` with the `once` option set to `true`. */
59
+ // once(type: string, listener: EventListener | EventListenerObject): this;
60
+ // /**
61
+ // * Node.js-specific extension to the `EventTarget` class.
62
+ // * If `type` is specified, removes all registered listeners for `type`,
63
+ // * otherwise removes all registered listeners.
64
+ // */
65
+ // removeAllListeners(type: string): this;
66
+ // /**
67
+ // * Node.js-specific extension to the `EventTarget` class that removes the listener for the given `type`.
68
+ // * The only difference between `removeListener()` and `removeEventListener()` is that `removeListener()` will return a reference to the `EventTarget`.
69
+ // */
70
+ // removeListener(type: string, listener: EventListener | EventListenerObject): this;
71
+ // }
72
+
73
+ interface EventEmitterOptions {
74
+ /**
75
+ * Enables automatic capturing of promise rejection.
76
+ */
77
+ captureRejections?: boolean | undefined;
78
+ }
79
+ // Any EventTarget with a Node-style `once` function
80
+ interface _NodeEventTarget {
81
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
82
+ }
83
+ // Any EventTarget with a DOM-style `addEventListener`
84
+ interface _DOMEventTarget {
85
+ addEventListener(
86
+ eventName: string,
87
+ listener: (...args: any[]) => void,
88
+ opts?: {
89
+ once: boolean;
90
+ }
91
+ ): any;
92
+ }
93
+ interface StaticEventEmitterOptions {
94
+ signal?: AbortSignal | undefined;
95
+ }
96
+ interface EventEmitter extends NodeJS.EventEmitter {}
97
+ /**
98
+ * The `EventEmitter` class is defined and exposed by the `events` module:
99
+ *
100
+ * ```js
101
+ * const EventEmitter = require('events');
102
+ * ```
103
+ *
104
+ * All `EventEmitter`s emit the event `'newListener'` when new listeners are
105
+ * added and `'removeListener'` when existing listeners are removed.
106
+ *
107
+ * It supports the following option:
108
+ * @since v0.1.26
109
+ */
110
+ class EventEmitter {
111
+ constructor(options?: EventEmitterOptions);
112
+ /**
113
+ * Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
114
+ * event or that is rejected if the `EventEmitter` emits `'error'` while waiting.
115
+ * The `Promise` will resolve with an array of all the arguments emitted to the
116
+ * given event.
117
+ *
118
+ * This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event
119
+ * semantics and does not listen to the `'error'` event.
120
+ *
121
+ * ```js
122
+ * const { once, EventEmitter } = require('events');
123
+ *
124
+ * async function run() {
125
+ * const ee = new EventEmitter();
126
+ *
127
+ * process.nextTick(() => {
128
+ * ee.emit('myevent', 42);
129
+ * });
130
+ *
131
+ * const [value] = await once(ee, 'myevent');
132
+ * console.log(value);
133
+ *
134
+ * const err = new Error('kaboom');
135
+ * process.nextTick(() => {
136
+ * ee.emit('error', err);
137
+ * });
138
+ *
139
+ * try {
140
+ * await once(ee, 'myevent');
141
+ * } catch (err) {
142
+ * console.log('error happened', err);
143
+ * }
144
+ * }
145
+ *
146
+ * run();
147
+ * ```
148
+ *
149
+ * The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the
150
+ * '`error'` event itself, then it is treated as any other kind of event without
151
+ * special handling:
152
+ *
153
+ * ```js
154
+ * const { EventEmitter, once } = require('events');
155
+ *
156
+ * const ee = new EventEmitter();
157
+ *
158
+ * once(ee, 'error')
159
+ * .then(([err]) => console.log('ok', err.message))
160
+ * .catch((err) => console.log('error', err.message));
161
+ *
162
+ * ee.emit('error', new Error('boom'));
163
+ *
164
+ * // Prints: ok boom
165
+ * ```
166
+ *
167
+ * An `AbortSignal` can be used to cancel waiting for the event:
168
+ *
169
+ * ```js
170
+ * const { EventEmitter, once } = require('events');
171
+ *
172
+ * const ee = new EventEmitter();
173
+ * const ac = new AbortController();
174
+ *
175
+ * async function foo(emitter, event, signal) {
176
+ * try {
177
+ * await once(emitter, event, { signal });
178
+ * console.log('event emitted!');
179
+ * } catch (error) {
180
+ * if (error.name === 'AbortError') {
181
+ * console.error('Waiting for the event was canceled!');
182
+ * } else {
183
+ * console.error('There was an error', error.message);
184
+ * }
185
+ * }
186
+ * }
187
+ *
188
+ * foo(ee, 'foo', ac.signal);
189
+ * ac.abort(); // Abort waiting for the event
190
+ * ee.emit('foo'); // Prints: Waiting for the event was canceled!
191
+ * ```
192
+ * @since v11.13.0, v10.16.0
193
+ */
194
+ static once(emitter: _NodeEventTarget, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>;
195
+ static once(emitter: _DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>;
196
+ /**
197
+ * ```js
198
+ * const { on, EventEmitter } = require('events');
199
+ *
200
+ * (async () => {
201
+ * const ee = new EventEmitter();
202
+ *
203
+ * // Emit later on
204
+ * process.nextTick(() => {
205
+ * ee.emit('foo', 'bar');
206
+ * ee.emit('foo', 42);
207
+ * });
208
+ *
209
+ * for await (const event of on(ee, 'foo')) {
210
+ * // The execution of this inner block is synchronous and it
211
+ * // processes one event at a time (even with await). Do not use
212
+ * // if concurrent execution is required.
213
+ * console.log(event); // prints ['bar'] [42]
214
+ * }
215
+ * // Unreachable here
216
+ * })();
217
+ * ```
218
+ *
219
+ * Returns an `AsyncIterator` that iterates `eventName` events. It will throw
220
+ * if the `EventEmitter` emits `'error'`. It removes all listeners when
221
+ * exiting the loop. The `value` returned by each iteration is an array
222
+ * composed of the emitted event arguments.
223
+ *
224
+ * An `AbortSignal` can be used to cancel waiting on events:
225
+ *
226
+ * ```js
227
+ * const { on, EventEmitter } = require('events');
228
+ * const ac = new AbortController();
229
+ *
230
+ * (async () => {
231
+ * const ee = new EventEmitter();
232
+ *
233
+ * // Emit later on
234
+ * process.nextTick(() => {
235
+ * ee.emit('foo', 'bar');
236
+ * ee.emit('foo', 42);
237
+ * });
238
+ *
239
+ * for await (const event of on(ee, 'foo', { signal: ac.signal })) {
240
+ * // The execution of this inner block is synchronous and it
241
+ * // processes one event at a time (even with await). Do not use
242
+ * // if concurrent execution is required.
243
+ * console.log(event); // prints ['bar'] [42]
244
+ * }
245
+ * // Unreachable here
246
+ * })();
247
+ *
248
+ * process.nextTick(() => ac.abort());
249
+ * ```
250
+ * @since v13.6.0, v12.16.0
251
+ * @param eventName The name of the event being listened for
252
+ * @return that iterates `eventName` events emitted by the `emitter`
253
+ */
254
+ static on(emitter: NodeJS.EventEmitter, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>;
255
+ /**
256
+ * A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.
257
+ *
258
+ * ```js
259
+ * const { EventEmitter, listenerCount } = require('events');
260
+ * const myEmitter = new EventEmitter();
261
+ * myEmitter.on('event', () => {});
262
+ * myEmitter.on('event', () => {});
263
+ * console.log(listenerCount(myEmitter, 'event'));
264
+ * // Prints: 2
265
+ * ```
266
+ * @since v0.9.12
267
+ * @deprecated Since v3.2.0 - Use `listenerCount` instead.
268
+ * @param emitter The emitter to query
269
+ * @param eventName The event name
270
+ */
271
+ static listenerCount(emitter: NodeJS.EventEmitter, eventName: string | symbol): number;
272
+ /**
273
+ * Returns a copy of the array of listeners for the event named `eventName`.
274
+ *
275
+ * For `EventEmitter`s this behaves exactly the same as calling `.listeners` on
276
+ * the emitter.
277
+ *
278
+ * For `EventTarget`s this is the only way to get the event listeners for the
279
+ * event target. This is useful for debugging and diagnostic purposes.
280
+ *
281
+ * ```js
282
+ * const { getEventListeners, EventEmitter } = require('events');
283
+ *
284
+ * {
285
+ * const ee = new EventEmitter();
286
+ * const listener = () => console.log('Events are fun');
287
+ * ee.on('foo', listener);
288
+ * getEventListeners(ee, 'foo'); // [listener]
289
+ * }
290
+ * {
291
+ * const et = new EventTarget();
292
+ * const listener = () => console.log('Events are fun');
293
+ * et.addEventListener('foo', listener);
294
+ * getEventListeners(et, 'foo'); // [listener]
295
+ * }
296
+ * ```
297
+ * @since v15.2.0, v14.17.0
298
+ */
299
+ static getEventListeners(emitter: _DOMEventTarget | NodeJS.EventEmitter, name: string | symbol): Function[];
300
+ /**
301
+ * ```js
302
+ * const {
303
+ * setMaxListeners,
304
+ * EventEmitter
305
+ * } = require('events');
306
+ *
307
+ * const target = new EventTarget();
308
+ * const emitter = new EventEmitter();
309
+ *
310
+ * setMaxListeners(5, target, emitter);
311
+ * ```
312
+ * @since v15.4.0
313
+ * @param n A non-negative number. The maximum number of listeners per `EventTarget` event.
314
+ * @param eventsTargets Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, `n` is set as the default max for all newly created {EventTarget} and {EventEmitter}
315
+ * objects.
316
+ */
317
+ static setMaxListeners(n?: number, ...eventTargets: Array<_DOMEventTarget | NodeJS.EventEmitter>): void;
318
+ /**
319
+ * This symbol shall be used to install a listener for only monitoring `'error'`
320
+ * events. Listeners installed using this symbol are called before the regular
321
+ * `'error'` listeners are called.
322
+ *
323
+ * Installing a listener using this symbol does not change the behavior once an
324
+ * `'error'` event is emitted, therefore the process will still crash if no
325
+ * regular `'error'` listener is installed.
326
+ */
327
+ static readonly errorMonitor: unique symbol;
328
+ static readonly captureRejectionSymbol: unique symbol;
329
+ /**
330
+ * Sets or gets the default captureRejection value for all emitters.
331
+ */
332
+ // TODO: These should be described using static getter/setter pairs:
333
+ static captureRejections: boolean;
334
+ static defaultMaxListeners: number;
335
+ }
336
+ import internal = require('node:events');
337
+ namespace EventEmitter {
338
+ // Should just be `export { EventEmitter }`, but that doesn't work in TypeScript 3.4
339
+ export { internal as EventEmitter };
340
+ export interface Abortable {
341
+ /**
342
+ * When provided the corresponding `AbortController` can be used to cancel an asynchronous action.
343
+ */
344
+ signal?: AbortSignal | undefined;
345
+ }
346
+ }
347
+ global {
348
+ namespace NodeJS {
349
+ interface EventEmitter {
350
+ /**
351
+ * Alias for `emitter.on(eventName, listener)`.
352
+ * @since v0.1.26
353
+ */
354
+ addListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
355
+ /**
356
+ * Adds the `listener` function to the end of the listeners array for the
357
+ * event named `eventName`. No checks are made to see if the `listener` has
358
+ * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
359
+ * times.
360
+ *
361
+ * ```js
362
+ * server.on('connection', (stream) => {
363
+ * console.log('someone connected!');
364
+ * });
365
+ * ```
366
+ *
367
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
368
+ *
369
+ * By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the
370
+ * event listener to the beginning of the listeners array.
371
+ *
372
+ * ```js
373
+ * const myEE = new EventEmitter();
374
+ * myEE.on('foo', () => console.log('a'));
375
+ * myEE.prependListener('foo', () => console.log('b'));
376
+ * myEE.emit('foo');
377
+ * // Prints:
378
+ * // b
379
+ * // a
380
+ * ```
381
+ * @since v0.1.101
382
+ * @param eventName The name of the event.
383
+ * @param listener The callback function
384
+ */
385
+ on(eventName: string | symbol, listener: (...args: any[]) => void): this;
386
+ /**
387
+ * Adds a **one-time**`listener` function for the event named `eventName`. The
388
+ * next time `eventName` is triggered, this listener is removed and then invoked.
389
+ *
390
+ * ```js
391
+ * server.once('connection', (stream) => {
392
+ * console.log('Ah, we have our first user!');
393
+ * });
394
+ * ```
395
+ *
396
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
397
+ *
398
+ * By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the
399
+ * event listener to the beginning of the listeners array.
400
+ *
401
+ * ```js
402
+ * const myEE = new EventEmitter();
403
+ * myEE.once('foo', () => console.log('a'));
404
+ * myEE.prependOnceListener('foo', () => console.log('b'));
405
+ * myEE.emit('foo');
406
+ * // Prints:
407
+ * // b
408
+ * // a
409
+ * ```
410
+ * @since v0.3.0
411
+ * @param eventName The name of the event.
412
+ * @param listener The callback function
413
+ */
414
+ once(eventName: string | symbol, listener: (...args: any[]) => void): this;
415
+ /**
416
+ * Removes the specified `listener` from the listener array for the event named`eventName`.
417
+ *
418
+ * ```js
419
+ * const callback = (stream) => {
420
+ * console.log('someone connected!');
421
+ * };
422
+ * server.on('connection', callback);
423
+ * // ...
424
+ * server.removeListener('connection', callback);
425
+ * ```
426
+ *
427
+ * `removeListener()` will remove, at most, one instance of a listener from the
428
+ * listener array. If any single listener has been added multiple times to the
429
+ * listener array for the specified `eventName`, then `removeListener()` must be
430
+ * called multiple times to remove each instance.
431
+ *
432
+ * Once an event is emitted, all listeners attached to it at the
433
+ * time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution
434
+ * will not remove them from`emit()` in progress. Subsequent events behave as expected.
435
+ *
436
+ * ```js
437
+ * const myEmitter = new MyEmitter();
438
+ *
439
+ * const callbackA = () => {
440
+ * console.log('A');
441
+ * myEmitter.removeListener('event', callbackB);
442
+ * };
443
+ *
444
+ * const callbackB = () => {
445
+ * console.log('B');
446
+ * };
447
+ *
448
+ * myEmitter.on('event', callbackA);
449
+ *
450
+ * myEmitter.on('event', callbackB);
451
+ *
452
+ * // callbackA removes listener callbackB but it will still be called.
453
+ * // Internal listener array at time of emit [callbackA, callbackB]
454
+ * myEmitter.emit('event');
455
+ * // Prints:
456
+ * // A
457
+ * // B
458
+ *
459
+ * // callbackB is now removed.
460
+ * // Internal listener array [callbackA]
461
+ * myEmitter.emit('event');
462
+ * // Prints:
463
+ * // A
464
+ * ```
465
+ *
466
+ * Because listeners are managed using an internal array, calling this will
467
+ * change the position indices of any listener registered _after_ the listener
468
+ * being removed. This will not impact the order in which listeners are called,
469
+ * but it means that any copies of the listener array as returned by
470
+ * the `emitter.listeners()` method will need to be recreated.
471
+ *
472
+ * When a single function has been added as a handler multiple times for a single
473
+ * event (as in the example below), `removeListener()` will remove the most
474
+ * recently added instance. In the example the `once('ping')`listener is removed:
475
+ *
476
+ * ```js
477
+ * const ee = new EventEmitter();
478
+ *
479
+ * function pong() {
480
+ * console.log('pong');
481
+ * }
482
+ *
483
+ * ee.on('ping', pong);
484
+ * ee.once('ping', pong);
485
+ * ee.removeListener('ping', pong);
486
+ *
487
+ * ee.emit('ping');
488
+ * ee.emit('ping');
489
+ * ```
490
+ *
491
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
492
+ * @since v0.1.26
493
+ */
494
+ removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
495
+ /**
496
+ * Alias for `emitter.removeListener()`.
497
+ * @since v10.0.0
498
+ */
499
+ off(eventName: string | symbol, listener: (...args: any[]) => void): this;
500
+ /**
501
+ * Removes all listeners, or those of the specified `eventName`.
502
+ *
503
+ * It is bad practice to remove listeners added elsewhere in the code,
504
+ * particularly when the `EventEmitter` instance was created by some other
505
+ * component or module (e.g. sockets or file streams).
506
+ *
507
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
508
+ * @since v0.1.26
509
+ */
510
+ removeAllListeners(event?: string | symbol): this;
511
+ /**
512
+ * By default `EventEmitter`s will print a warning if more than `10` listeners are
513
+ * added for a particular event. This is a useful default that helps finding
514
+ * memory leaks. The `emitter.setMaxListeners()` method allows the limit to be
515
+ * modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.
516
+ *
517
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
518
+ * @since v0.3.5
519
+ */
520
+ setMaxListeners(n: number): this;
521
+ /**
522
+ * Returns the current max listener value for the `EventEmitter` which is either
523
+ * set by `emitter.setMaxListeners(n)` or defaults to {@link defaultMaxListeners}.
524
+ * @since v1.0.0
525
+ */
526
+ getMaxListeners(): number;
527
+ /**
528
+ * Returns a copy of the array of listeners for the event named `eventName`.
529
+ *
530
+ * ```js
531
+ * server.on('connection', (stream) => {
532
+ * console.log('someone connected!');
533
+ * });
534
+ * console.log(util.inspect(server.listeners('connection')));
535
+ * // Prints: [ [Function] ]
536
+ * ```
537
+ * @since v0.1.26
538
+ */
539
+ listeners(eventName: string | symbol): Function[];
540
+ /**
541
+ * Returns a copy of the array of listeners for the event named `eventName`,
542
+ * including any wrappers (such as those created by `.once()`).
543
+ *
544
+ * ```js
545
+ * const emitter = new EventEmitter();
546
+ * emitter.once('log', () => console.log('log once'));
547
+ *
548
+ * // Returns a new Array with a function `onceWrapper` which has a property
549
+ * // `listener` which contains the original listener bound above
550
+ * const listeners = emitter.rawListeners('log');
551
+ * const logFnWrapper = listeners[0];
552
+ *
553
+ * // Logs "log once" to the console and does not unbind the `once` event
554
+ * logFnWrapper.listener();
555
+ *
556
+ * // Logs "log once" to the console and removes the listener
557
+ * logFnWrapper();
558
+ *
559
+ * emitter.on('log', () => console.log('log persistently'));
560
+ * // Will return a new Array with a single function bound by `.on()` above
561
+ * const newListeners = emitter.rawListeners('log');
562
+ *
563
+ * // Logs "log persistently" twice
564
+ * newListeners[0]();
565
+ * emitter.emit('log');
566
+ * ```
567
+ * @since v9.4.0
568
+ */
569
+ rawListeners(eventName: string | symbol): Function[];
570
+ /**
571
+ * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
572
+ * to each.
573
+ *
574
+ * Returns `true` if the event had listeners, `false` otherwise.
575
+ *
576
+ * ```js
577
+ * const EventEmitter = require('events');
578
+ * const myEmitter = new EventEmitter();
579
+ *
580
+ * // First listener
581
+ * myEmitter.on('event', function firstListener() {
582
+ * console.log('Helloooo! first listener');
583
+ * });
584
+ * // Second listener
585
+ * myEmitter.on('event', function secondListener(arg1, arg2) {
586
+ * console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
587
+ * });
588
+ * // Third listener
589
+ * myEmitter.on('event', function thirdListener(...args) {
590
+ * const parameters = args.join(', ');
591
+ * console.log(`event with parameters ${parameters} in third listener`);
592
+ * });
593
+ *
594
+ * console.log(myEmitter.listeners('event'));
595
+ *
596
+ * myEmitter.emit('event', 1, 2, 3, 4, 5);
597
+ *
598
+ * // Prints:
599
+ * // [
600
+ * // [Function: firstListener],
601
+ * // [Function: secondListener],
602
+ * // [Function: thirdListener]
603
+ * // ]
604
+ * // Helloooo! first listener
605
+ * // event with parameters 1, 2 in second listener
606
+ * // event with parameters 1, 2, 3, 4, 5 in third listener
607
+ * ```
608
+ * @since v0.1.26
609
+ */
610
+ emit(eventName: string | symbol, ...args: any[]): boolean;
611
+ /**
612
+ * Returns the number of listeners listening to the event named `eventName`.
613
+ * @since v3.2.0
614
+ * @param eventName The name of the event being listened for
615
+ */
616
+ listenerCount(eventName: string | symbol): number;
617
+ /**
618
+ * Adds the `listener` function to the _beginning_ of the listeners array for the
619
+ * event named `eventName`. No checks are made to see if the `listener` has
620
+ * already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
621
+ * times.
622
+ *
623
+ * ```js
624
+ * server.prependListener('connection', (stream) => {
625
+ * console.log('someone connected!');
626
+ * });
627
+ * ```
628
+ *
629
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
630
+ * @since v6.0.0
631
+ * @param eventName The name of the event.
632
+ * @param listener The callback function
633
+ */
634
+ prependListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
635
+ /**
636
+ * Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this
637
+ * listener is removed, and then invoked.
638
+ *
639
+ * ```js
640
+ * server.prependOnceListener('connection', (stream) => {
641
+ * console.log('Ah, we have our first user!');
642
+ * });
643
+ * ```
644
+ *
645
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
646
+ * @since v6.0.0
647
+ * @param eventName The name of the event.
648
+ * @param listener The callback function
649
+ */
650
+ prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
651
+ /**
652
+ * Returns an array listing the events for which the emitter has registered
653
+ * listeners. The values in the array are strings or `Symbol`s.
654
+ *
655
+ * ```js
656
+ * const EventEmitter = require('events');
657
+ * const myEE = new EventEmitter();
658
+ * myEE.on('foo', () => {});
659
+ * myEE.on('bar', () => {});
660
+ *
661
+ * const sym = Symbol('symbol');
662
+ * myEE.on(sym, () => {});
663
+ *
664
+ * console.log(myEE.eventNames());
665
+ * // Prints: [ 'foo', 'bar', Symbol(symbol) ]
666
+ * ```
667
+ * @since v6.0.0
668
+ */
669
+ eventNames(): Array<string | symbol>;
670
+ }
671
+ }
672
+ }
673
+ export = EventEmitter;
674
+ }
675
+ declare module 'node:events' {
676
+ import events = require('events');
677
+ export = events;
678
+ }