import { UrlWithStringQuery , parse as uriParse } from 'url' ; import { isString } from '@vue/shared' ; export function isRelativeUrl ( url ) { const firstChar = url . charAt ( 0 ) ; return firstChar === '.' || firstChar === '~' || firstChar === '@' ; } const externalRE = /^https?:\/\// ; export function isExternalUrl ( url ) { return externalRE . test ( url ) ; } const dataUrlRE = /^\s*data:/i ; export function isDataUrl ( url ) { return dataUrlRE . test ( url ) ; } /**
 * Parses string url into URL object.
 */ export function parseUrl ( url ) { const firstChar = url . charAt ( 0 ) ; if ( firstChar === '~' ) { const secondChar = url . charAt ( 1 ) ; url = url . slice ( secondChar === '/' ? 2 : 1 ) ; } return parseUriParts ( url ) ; } param urlString function parseUriParts ( urlString ) { return uriParse ( isString ( urlString ) ? urlString : '' , false , true ) ; }