'use strict';

// In case of breaking changes, increase the version
// number to avoid conflicts.
const globalOrigin = Symbol.for('undici.globalOrigin.1');

function getGlobalOrigin() {
  return globalThis[globalOrigin];
}

function setGlobalOrigin(newOrigin) {
  if (newOrigin === undefined) {
    Object.defineProperty(globalThis, globalOrigin, {
      value: undefined,
      writable: true,
      enumerable: false,
      configurable: false,
    });

    return;
  }

  const parsedURL = new URL(newOrigin);

  if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {
    throw new TypeError(
      `Only http & https urls are allowed, received ${parsedURL.protocol}`
    );
  }

  Object.defineProperty(globalThis, globalOrigin, {
    value: parsedURL,
    writable: true,
    enumerable: false,
    configurable: false,
  });
}

module.exports = {
  getGlobalOrigin,
  setGlobalOrigin,
};