aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/global.js
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/undici/lib/global.js')
-rw-r--r--vanilla/node_modules/undici/lib/global.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/global.js b/vanilla/node_modules/undici/lib/global.js
new file mode 100644
index 0000000..b61d779
--- /dev/null
+++ b/vanilla/node_modules/undici/lib/global.js
@@ -0,0 +1,50 @@
+'use strict'
+
+// We include a version number for the Dispatcher API. In case of breaking changes,
+// this version number must be increased to avoid conflicts.
+const globalDispatcher = Symbol.for('undici.globalDispatcher.1')
+const { InvalidArgumentError } = require('./core/errors')
+const Agent = require('./dispatcher/agent')
+
+if (getGlobalDispatcher() === undefined) {
+ setGlobalDispatcher(new Agent())
+}
+
+function setGlobalDispatcher (agent) {
+ if (!agent || typeof agent.dispatch !== 'function') {
+ throw new InvalidArgumentError('Argument agent must implement Agent')
+ }
+ Object.defineProperty(globalThis, globalDispatcher, {
+ value: agent,
+ writable: true,
+ enumerable: false,
+ configurable: false
+ })
+}
+
+function getGlobalDispatcher () {
+ return globalThis[globalDispatcher]
+}
+
+// These are the globals that can be installed by undici.install().
+// Not exported by index.js to avoid use outside of this module.
+const installedExports = /** @type {const} */ (
+ [
+ 'fetch',
+ 'Headers',
+ 'Response',
+ 'Request',
+ 'FormData',
+ 'WebSocket',
+ 'CloseEvent',
+ 'ErrorEvent',
+ 'MessageEvent',
+ 'EventSource'
+ ]
+)
+
+module.exports = {
+ setGlobalDispatcher,
+ getGlobalDispatcher,
+ installedExports
+}