1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- // When changing thing, also edit router.d.ts
- export const NavigationFailureType = {
- redirected: 2,
- aborted: 4,
- cancelled: 8,
- duplicated: 16
- }
- export function createNavigationRedirectedError (from, to) {
- return createRouterError(
- from,
- to,
- NavigationFailureType.redirected,
- `Redirected when going from "${from.fullPath}" to "${stringifyRoute(
- to
- )}" via a navigation guard.`
- )
- }
- export function createNavigationDuplicatedError (from, to) {
- const error = createRouterError(
- from,
- to,
- NavigationFailureType.duplicated,
- `Avoided redundant navigation to current location: "${from.fullPath}".`
- )
- // backwards compatible with the first introduction of Errors
- error.name = 'NavigationDuplicated'
- return error
- }
- export function createNavigationCancelledError (from, to) {
- return createRouterError(
- from,
- to,
- NavigationFailureType.cancelled,
- `Navigation cancelled from "${from.fullPath}" to "${
- to.fullPath
- }" with a new navigation.`
- )
- }
- export function createNavigationAbortedError (from, to) {
- return createRouterError(
- from,
- to,
- NavigationFailureType.aborted,
- `Navigation aborted from "${from.fullPath}" to "${
- to.fullPath
- }" via a navigation guard.`
- )
- }
- function createRouterError (from, to, type, message) {
- const error = new Error(message)
- error._isRouter = true
- error.from = from
- error.to = to
- error.type = type
- return error
- }
- const propertiesToLog = ['params', 'query', 'hash']
- function stringifyRoute (to) {
- if (typeof to === 'string') return to
- if ('path' in to) return to.path
- const location = {}
- propertiesToLog.forEach(key => {
- if (key in to) location[key] = to[key]
- })
- return JSON.stringify(location, null, 2)
- }
- export function isError (err) {
- return Object.prototype.toString.call(err).indexOf('Error') > -1
- }
- export function isNavigationFailure (err, errorType) {
- return (
- isError(err) &&
- err._isRouter &&
- (errorType == null || err.type === errorType)
- )
- }
|