38 lines
957 B
JavaScript
38 lines
957 B
JavaScript
![]() |
/**
|
|||
|
* @typedef URL
|
|||
|
* @property {string} hash
|
|||
|
* @property {string} host
|
|||
|
* @property {string} hostname
|
|||
|
* @property {string} href
|
|||
|
* @property {string} origin
|
|||
|
* @property {string} password
|
|||
|
* @property {string} pathname
|
|||
|
* @property {string} port
|
|||
|
* @property {string} protocol
|
|||
|
* @property {string} search
|
|||
|
* @property {any} searchParams
|
|||
|
* @property {string} username
|
|||
|
* @property {() => string} toString
|
|||
|
* @property {() => string} toJSON
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* Check if `fileUrlOrPath` looks like a URL.
|
|||
|
*
|
|||
|
* @param {unknown} fileUrlOrPath
|
|||
|
* File path or URL.
|
|||
|
* @returns {fileUrlOrPath is URL}
|
|||
|
* Whether it’s a URL.
|
|||
|
*/
|
|||
|
// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>
|
|||
|
export function isUrl(fileUrlOrPath) {
|
|||
|
return (
|
|||
|
fileUrlOrPath !== null &&
|
|||
|
typeof fileUrlOrPath === 'object' &&
|
|||
|
// @ts-expect-error: indexable.
|
|||
|
fileUrlOrPath.href &&
|
|||
|
// @ts-expect-error: indexable.
|
|||
|
fileUrlOrPath.origin
|
|||
|
)
|
|||
|
}
|