5f9a067ab9
* add prettier * lint-staged * prettier * upgrade husky
24 lines
823 B
TypeScript
24 lines
823 B
TypeScript
export const isUrlAbsolute = (url: string) => {
|
|
if (url) {
|
|
if (url.indexOf('//') === 0) {
|
|
return true;
|
|
} // URL is protocol-relative (= absolute)
|
|
if (url.indexOf('://') === -1) {
|
|
return false;
|
|
} // URL has no protocol (= relative)
|
|
if (url.indexOf('.') === -1) {
|
|
return false;
|
|
} // URL does not contain a dot, i.e. no TLD (= relative, possibly REST)
|
|
if (url.indexOf('/') === -1) {
|
|
return false;
|
|
} // URL does not contain a single slash (= relative)
|
|
if (url.indexOf(':') > url.indexOf('/')) {
|
|
return false;
|
|
} // The first colon comes after the first slash (= relative)
|
|
if (url.indexOf('://') < url.indexOf('.')) {
|
|
return true;
|
|
} // Protocol is defined before first dot (= absolute)
|
|
}
|
|
return false; // Anything else must be relative
|
|
};
|