aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/dispatcher/dispatcher.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/undici/lib/dispatcher/dispatcher.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/undici/lib/dispatcher/dispatcher.js')
-rw-r--r--vanilla/node_modules/undici/lib/dispatcher/dispatcher.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/dispatcher/dispatcher.js b/vanilla/node_modules/undici/lib/dispatcher/dispatcher.js
new file mode 100644
index 0000000..824dfb6
--- /dev/null
+++ b/vanilla/node_modules/undici/lib/dispatcher/dispatcher.js
@@ -0,0 +1,48 @@
+'use strict'
+const EventEmitter = require('node:events')
+const WrapHandler = require('../handler/wrap-handler')
+
+const wrapInterceptor = (dispatch) => (opts, handler) => dispatch(opts, WrapHandler.wrap(handler))
+
+class Dispatcher extends EventEmitter {
+ dispatch () {
+ throw new Error('not implemented')
+ }
+
+ close () {
+ throw new Error('not implemented')
+ }
+
+ destroy () {
+ throw new Error('not implemented')
+ }
+
+ compose (...args) {
+ // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...
+ const interceptors = Array.isArray(args[0]) ? args[0] : args
+ let dispatch = this.dispatch.bind(this)
+
+ for (const interceptor of interceptors) {
+ if (interceptor == null) {
+ continue
+ }
+
+ if (typeof interceptor !== 'function') {
+ throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)
+ }
+
+ dispatch = interceptor(dispatch)
+ dispatch = wrapInterceptor(dispatch)
+
+ if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {
+ throw new TypeError('invalid interceptor')
+ }
+ }
+
+ return new Proxy(this, {
+ get: (target, key) => key === 'dispatch' ? dispatch : target[key]
+ })
+ }
+}
+
+module.exports = Dispatcher