| '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('./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] |
| } |
| |
| module.exports = { |
| setGlobalDispatcher, |
| getGlobalDispatcher |
| } |