mirror of https://github.com/jkjoy/sunpeiwen.git
49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
|
'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 &&
|
||
|
typeof newOrigin !== 'string' &&
|
||
|
!(newOrigin instanceof URL)
|
||
|
) {
|
||
|
throw new Error('Invalid base url')
|
||
|
}
|
||
|
|
||
|
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
|
||
|
}
|