@kitbag/router 0.27.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/routerLink.d.ts +1 -0
- package/dist/components/viewTransition.d.ts +16 -0
- package/dist/components/viewTransition.spec-d.d.ts +1 -0
- package/dist/compositions/useViewTransition.d.ts +5 -0
- package/dist/kitbag-router.js +2073 -1708
- package/dist/kitbag-router.umd.cjs +2 -2
- package/dist/main.d.ts +27 -1
- package/dist/models/hooks.d.ts +9 -7
- package/dist/services/addLoader.d.ts +6 -3
- package/dist/services/addRedirect.d.ts +3 -0
- package/dist/services/addRedirect.spec.d.ts +1 -0
- package/dist/services/addView.d.ts +9 -6
- package/dist/services/combineContext.d.ts +2 -0
- package/dist/services/createHook.d.ts +7 -0
- package/dist/services/createHook.spec-d.d.ts +1 -0
- package/dist/services/createHook.spec.d.ts +1 -0
- package/dist/services/createLoader.d.ts +7 -0
- package/dist/services/createLoader.spec-d.d.ts +1 -0
- package/dist/services/createLoader.spec.d.ts +1 -0
- package/dist/services/createRoute.d.ts +2 -4
- package/dist/services/createRouter.d.ts +2 -2
- package/dist/services/createRouterAssets.d.ts +26 -0
- package/dist/services/createRouterAssets.spec-d.d.ts +1 -0
- package/dist/services/createRouterHistory.d.ts +10 -2
- package/dist/services/createRouterHooks.d.ts +4 -2
- package/dist/services/createView.d.ts +10 -0
- package/dist/services/createView.spec-d.d.ts +1 -0
- package/dist/services/createView.spec.d.ts +1 -0
- package/dist/services/createViewTransitions.browser.spec.d.ts +1 -0
- package/dist/services/createViewTransitions.d.ts +38 -0
- package/dist/services/getRouteContext.d.ts +6 -0
- package/dist/services/getRoutesForRouter.d.ts +6 -1
- package/dist/services/history.d.ts +1 -0
- package/dist/services/registerHookContext.spec.d.ts +1 -0
- package/dist/services/routeViews.d.ts +7 -0
- package/dist/services/toHook.d.ts +3 -0
- package/dist/services/urlParser.d.ts +1 -1
- package/dist/services/withRouteMethods.d.ts +2 -3
- package/dist/tests/navigationBehavior.browser.spec.d.ts +1 -0
- package/dist/tests/viewTransitions.browser.spec.d.ts +1 -0
- package/dist/types/addLoader.d.ts +7 -4
- package/dist/types/addView.d.ts +11 -7
- package/dist/types/createRouteOptions.d.ts +17 -65
- package/dist/types/hook.d.ts +43 -0
- package/dist/types/hooks.d.ts +17 -11
- package/dist/types/loader.d.ts +59 -0
- package/dist/types/navigation.d.ts +2 -0
- package/dist/types/props.d.ts +0 -18
- package/dist/types/register.d.ts +2 -2
- package/dist/types/resolved.d.ts +4 -0
- package/dist/types/route.d.ts +2 -3
- package/dist/types/routeContext.d.ts +8 -0
- package/dist/types/routeViews.d.ts +5 -7
- package/dist/types/routeWithParams.d.ts +1 -1
- package/dist/types/router.d.ts +18 -4
- package/dist/types/routerPlugin.d.ts +7 -5
- package/dist/types/routerPush.d.ts +8 -0
- package/dist/types/routerReplace.d.ts +3 -0
- package/dist/types/url.d.ts +1 -0
- package/dist/types/useLink.d.ts +5 -0
- package/dist/types/view.d.ts +58 -0
- package/dist/types/viewTransition.d.ts +49 -0
- package/dist/utilities/navigation.d.ts +15 -0
- package/dist/utilities/promises.d.ts +4 -0
- package/dist/utilities/promises.spec.d.ts +1 -0
- package/dist/utilities/testHelpers.d.ts +32 -100
- package/dist/utilities/viewTransition.d.ts +11 -0
- package/dist/utilities/viewTransition.spec.d.ts +1 -0
- package/package.json +7 -6
- package/dist/services/createRouteRedirects.d.ts +0 -10
- package/dist/services/createRouteViews.d.ts +0 -16
- /package/dist/{services/createRouteRedirects.spec.d.ts → components/viewTransition.browser.spec.d.ts} +0 -0
package/dist/main.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RouterAssets } from './services/createRouterAssets';
|
|
2
2
|
import { RegisteredRouter } from './types/register';
|
|
3
|
-
export type { WithHost, WithoutHost, WithParent, WithoutParent, CreateRouteOptions,
|
|
3
|
+
export type { WithHost, WithoutHost, WithParent, WithoutParent, CreateRouteOptions, ToRoute } from './types/createRouteOptions';
|
|
4
4
|
export type { RouteAddView, AddViewOptions, AddViewPropsGetter, AddViewPropsCallbackContext } from './types/addView';
|
|
5
5
|
export type { RouteAddLoader, AddLoaderOptions, LoaderGetter } from './types/addLoader';
|
|
6
6
|
export type { RouteAddAlias, AddAliasOptions } from './types/addAlias';
|
|
@@ -8,6 +8,7 @@ export type { AliasTransform, AliasTransformContext } from './types/routeAlias';
|
|
|
8
8
|
export type { RouteCallbackContext } from './types/routeCallbackContext';
|
|
9
9
|
export type { RouteViews } from './types/routeViews';
|
|
10
10
|
export type { RouteLoader, RouteLoaders } from './types/routeLoaders';
|
|
11
|
+
export type { CreateLoaderOptions, Loader, LoaderCallbackContext } from './types/loader';
|
|
11
12
|
export type { RejectionHooks, HookRemove, BeforeHookLifecycle, AfterHookLifecycle, HookLifecycle, BeforeEnterHookContext, BeforeEnterHook, AddBeforeEnterHook, BeforeUpdateHookContext, BeforeUpdateHook, AddBeforeUpdateHook, BeforeLeaveHookContext, BeforeLeaveHook, AddBeforeLeaveHook, AfterEnterHookContext, AfterEnterHook, AddAfterEnterHook, AfterUpdateHookContext, AfterUpdateHook, AddAfterUpdateHook, AfterLeaveHookContext, AfterLeaveHook, AddAfterLeaveHook, RejectionHookContext, RejectionHook, AddRejectionHook, ErrorHookContext, ErrorHook, AddErrorHook } from './types/hooks';
|
|
12
13
|
export * from './types/paramTypes';
|
|
13
14
|
export * from './types/prefetch';
|
|
@@ -34,6 +35,7 @@ export * from './types/routerRoute';
|
|
|
34
35
|
export * from './types/urlString';
|
|
35
36
|
export type { Url, CreateUrlOptions, ParseUrlOptions } from './types/url';
|
|
36
37
|
export * from './types/useLink';
|
|
38
|
+
export * from './types/viewTransition';
|
|
37
39
|
export * from './types/navigation';
|
|
38
40
|
export { DuplicateParamsError } from './errors/duplicateParamsError';
|
|
39
41
|
export { LoaderDataAccessError } from './errors/loaderDataAccessError';
|
|
@@ -45,6 +47,8 @@ export { RouterNotInstalledError } from './errors/routerNotInstalledError';
|
|
|
45
47
|
export { UseRouteInvalidError } from './errors/useRouteInvalidError';
|
|
46
48
|
export { SsrOptionRequiredError } from './errors/ssrOptionRequiredError';
|
|
47
49
|
export { UnreachableRouteError } from './errors/unreachableRouteError';
|
|
50
|
+
export type { CreateHookOptions, Hook, HookCallbackContext } from './types/hook';
|
|
51
|
+
export type { CreateViewOptions, View, ViewCallbackContext } from './types/view';
|
|
48
52
|
export { createRoute } from './services/createRoute';
|
|
49
53
|
export { createRejection } from './services/createRejection';
|
|
50
54
|
export { createExternalRoute } from './services/createExternalRoute';
|
|
@@ -59,6 +63,19 @@ export { literal } from './services/literal';
|
|
|
59
63
|
export { createParam } from './services/createParam';
|
|
60
64
|
export { createRouter } from './services/createRouter';
|
|
61
65
|
export { createUrl } from './services/createUrl';
|
|
66
|
+
export type { ViewTransitionProps } from './components/viewTransition';
|
|
67
|
+
/**
|
|
68
|
+
* Creates a reusable hook with callbacks typed to the registered router's resolved routes.
|
|
69
|
+
*/
|
|
70
|
+
export declare const createHook: RouterAssets<RegisteredRouter>['createHook'];
|
|
71
|
+
/**
|
|
72
|
+
* Creates a reusable view with props callbacks typed to the registered router's resolved routes.
|
|
73
|
+
*/
|
|
74
|
+
export declare const createView: RouterAssets<RegisteredRouter>['createView'];
|
|
75
|
+
/**
|
|
76
|
+
* Creates a reusable loader with callbacks typed to the registered router's resolved routes.
|
|
77
|
+
*/
|
|
78
|
+
export declare const createLoader: RouterAssets<RegisteredRouter>['createLoader'];
|
|
62
79
|
/**
|
|
63
80
|
* Registers a hook that is called before a route is left. Must be called from setup.
|
|
64
81
|
* This is useful for performing actions or cleanups before navigating away from a route component.
|
|
@@ -119,6 +136,8 @@ export declare const RouterView: RouterAssets<RegisteredRouter>['RouterView'];
|
|
|
119
136
|
* @group Components
|
|
120
137
|
*/
|
|
121
138
|
export declare const RouterLink: RouterAssets<RegisteredRouter>['RouterLink'];
|
|
139
|
+
/** Names a shared element for a view transition. @group Components */
|
|
140
|
+
export declare const ViewTransition: new <TElement extends keyof HTMLElementTagNameMap = "span">(props: import('./main').ViewTransitionProps<TElement>) => import('vue').ComponentPublicInstance<import('./main').ViewTransitionProps<TElement>>;
|
|
122
141
|
/**
|
|
123
142
|
* A component to render a bar across the top of the page while a navigation is pending, filled by how
|
|
124
143
|
* much of the navigation's work has settled.
|
|
@@ -179,6 +198,13 @@ export declare const useLink: RouterAssets<RegisteredRouter>['useLink'];
|
|
|
179
198
|
* @group Compositions
|
|
180
199
|
*/
|
|
181
200
|
export declare const useRejection: RouterAssets<RegisteredRouter>['useRejection'];
|
|
201
|
+
/**
|
|
202
|
+
* A composition to access the view transition in flight, if any.
|
|
203
|
+
*
|
|
204
|
+
* @returns The router's view transition state.
|
|
205
|
+
* @group Compositions
|
|
206
|
+
*/
|
|
207
|
+
export declare const useViewTransition: RouterAssets<RegisteredRouter>['useViewTransition'];
|
|
182
208
|
/**
|
|
183
209
|
* A composition to access the navigation under way: whether one is pending, which routes it leaves and
|
|
184
210
|
* leads to, and how much of the work it waits on has settled.
|
package/dist/models/hooks.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyHook } from '../types/hook';
|
|
2
|
+
import { ComponentHook, AfterEnterHook, AfterLeaveHook, AfterUpdateHook, BeforeEnterHook, BeforeLeaveHook, BeforeUpdateHook, ErrorHook, RejectionHook } from '../types/hooks';
|
|
2
3
|
import { RedirectHook } from '../types/redirects';
|
|
3
4
|
export declare class Hooks {
|
|
5
|
+
onHookAdded: Set<(hook: ComponentHook | AnyHook) => void>;
|
|
4
6
|
redirects: Set<RedirectHook>;
|
|
5
|
-
onBeforeRouteEnter: Set<BeforeEnterHook>;
|
|
6
|
-
onBeforeRouteUpdate: Set<BeforeUpdateHook>;
|
|
7
|
-
onBeforeRouteLeave: Set<BeforeLeaveHook>;
|
|
8
|
-
onAfterRouteEnter: Set<AfterEnterHook>;
|
|
9
|
-
onAfterRouteUpdate: Set<AfterUpdateHook>;
|
|
10
|
-
onAfterRouteLeave: Set<AfterLeaveHook>;
|
|
7
|
+
onBeforeRouteEnter: Set<AnyHook | BeforeEnterHook>;
|
|
8
|
+
onBeforeRouteUpdate: Set<AnyHook | BeforeUpdateHook>;
|
|
9
|
+
onBeforeRouteLeave: Set<AnyHook | BeforeLeaveHook>;
|
|
10
|
+
onAfterRouteEnter: Set<AnyHook | AfterEnterHook>;
|
|
11
|
+
onAfterRouteUpdate: Set<AnyHook | AfterUpdateHook>;
|
|
12
|
+
onAfterRouteLeave: Set<AnyHook | AfterLeaveHook>;
|
|
11
13
|
onError: Set<ErrorHook>;
|
|
12
14
|
onRejection: Set<RejectionHook>;
|
|
13
15
|
}
|
|
@@ -2,6 +2,8 @@ import { AnyPayloadTransformer } from './payload';
|
|
|
2
2
|
import { PrefetchConfig } from '../types/prefetch';
|
|
3
3
|
import { CreatedRouteOptions, Route } from '../types/route';
|
|
4
4
|
import { AnyFunction } from '../types/utilities';
|
|
5
|
+
import { AnyLoader } from '../types/loader';
|
|
6
|
+
import { RouteContext } from '../types/routeContext';
|
|
5
7
|
export declare const DEFAULT_LOADER_NAME = "default";
|
|
6
8
|
/**
|
|
7
9
|
* The loose runtime shape of the `addLoader` options. Purposely wide: the name type each
|
|
@@ -15,7 +17,7 @@ type LoaderOptions = {
|
|
|
15
17
|
/**
|
|
16
18
|
* The runtime arguments accepted by `addLoader`.
|
|
17
19
|
*/
|
|
18
|
-
type AddLoaderParameters = [load: AnyFunction, options?: LoaderOptions];
|
|
20
|
+
type AddLoaderParameters = [load: AnyFunction | AnyLoader, options?: LoaderOptions];
|
|
19
21
|
/**
|
|
20
22
|
* The loose runtime signature of the `addLoader` method. Purposely wide: it returns Route rather than the
|
|
21
23
|
* refined chainable route each `RouteAddLoader` overload describes.
|
|
@@ -26,15 +28,16 @@ type Loader = {
|
|
|
26
28
|
load: AnyFunction;
|
|
27
29
|
prefetch: PrefetchConfig | undefined;
|
|
28
30
|
transformer: AnyPayloadTransformer | undefined;
|
|
31
|
+
context?: readonly RouteContext[];
|
|
29
32
|
};
|
|
30
|
-
export declare function toLoader(
|
|
33
|
+
export declare function toLoader(source: AnyFunction | AnyLoader, options: LoaderOptions | undefined): Loader;
|
|
31
34
|
/**
|
|
32
35
|
* Returns a new match with the loader merged into its loaders under the loader's name.
|
|
33
36
|
*
|
|
34
37
|
* Matches are `markRaw` so that making a route reactive does not turn its loaders into reactive proxies.
|
|
35
38
|
* Spreading a match drops that, so the rebuilt one is marked again.
|
|
36
39
|
*/
|
|
37
|
-
export declare function addLoaderToMatch(match: CreatedRouteOptions,
|
|
40
|
+
export declare function addLoaderToMatch(match: CreatedRouteOptions, loader: Loader): CreatedRouteOptions;
|
|
38
41
|
/**
|
|
39
42
|
* A route's data combines the loaders of every match, so a name an ancestor already uses would be
|
|
40
43
|
* ambiguous. Adding a loader the route itself already has is an override, and allowed.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { RouteRedirectCallback, RouteRedirectOptions } from '../types/redirects';
|
|
2
|
+
import { Route } from '../types/route';
|
|
3
|
+
export declare function addRedirect<TRouteFrom extends Route, TRouteTo extends Route>(from: TRouteFrom, to: TRouteTo, convertParams?: RouteRedirectCallback<TRouteTo, TRouteFrom>, options?: RouteRedirectOptions): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,40 +1,43 @@
|
|
|
1
1
|
import { Component } from 'vue';
|
|
2
2
|
import { AnyPayloadTransformer } from './payload';
|
|
3
|
-
import {
|
|
3
|
+
import { AddViewPropsGetter } from '../types/addView';
|
|
4
4
|
import { PrefetchConfig } from '../types/prefetch';
|
|
5
5
|
import { CreatedRouteOptions, Route } from '../types/route';
|
|
6
|
+
import { AnyView } from '../types/view';
|
|
7
|
+
import { RouteContext } from '../types/routeContext';
|
|
6
8
|
/**
|
|
7
9
|
* The loose runtime shape of the `addView` options. Purposely wide: the getter and name types each
|
|
8
10
|
* `RouteAddView` describes are refined per route and component.
|
|
9
11
|
*/
|
|
10
12
|
type ViewOptions = {
|
|
11
13
|
name?: string;
|
|
12
|
-
props?:
|
|
14
|
+
props?: AddViewPropsGetter<Route, Component>;
|
|
13
15
|
prefetch?: PrefetchConfig;
|
|
14
16
|
transformer?: AnyPayloadTransformer;
|
|
15
17
|
};
|
|
16
18
|
/**
|
|
17
19
|
* The runtime arguments accepted by `addView`.
|
|
18
20
|
*/
|
|
19
|
-
type AddViewParameters = [component: Component, options?: ViewOptions];
|
|
21
|
+
type AddViewParameters = [component: Component | AnyView, options?: ViewOptions];
|
|
20
22
|
/**
|
|
21
23
|
* The loose runtime signature of the `addView` method. Purposely wide: it returns Route rather than the
|
|
22
24
|
* refined chainable route each `RouteAddView` overload describes.
|
|
23
25
|
*/
|
|
24
26
|
export type AddView = (...args: AddViewParameters) => Route;
|
|
25
27
|
type View = {
|
|
28
|
+
context?: readonly RouteContext[];
|
|
26
29
|
name: string;
|
|
27
30
|
component: Component;
|
|
28
|
-
props
|
|
31
|
+
props?: AddViewPropsGetter<Route, Component>;
|
|
29
32
|
prefetch: PrefetchConfig | undefined;
|
|
30
33
|
transformer: AnyPayloadTransformer | undefined;
|
|
31
34
|
};
|
|
32
|
-
export declare function toView(
|
|
35
|
+
export declare function toView(source: Component | AnyView, options: ViewOptions | undefined): View;
|
|
33
36
|
/**
|
|
34
37
|
* Returns a new match with the view merged into its views under the view's name.
|
|
35
38
|
*
|
|
36
39
|
* Matches are `markRaw` so that making a route reactive does not turn its components into reactive
|
|
37
40
|
* proxies. Spreading a match drops that, so the rebuilt one is marked again.
|
|
38
41
|
*/
|
|
39
|
-
export declare function addViewToMatch(match: CreatedRouteOptions,
|
|
42
|
+
export declare function addViewToMatch(match: CreatedRouteOptions, view: View): CreatedRouteOptions;
|
|
40
43
|
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RouteContext } from '../types/routeContext';
|
|
2
|
+
import { CreateHookOptions, Hook } from '../types/hook';
|
|
3
|
+
import { Routes } from '../types/route';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a reusable hook with navigation helpers from its declared context.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createHook<const TContext extends readonly RouteContext[] = [], TRoutes extends Routes = Routes>(options: CreateHookOptions<TContext, TRoutes>): Hook<TContext>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Routes } from '../types/route';
|
|
2
|
+
import { CreateLoaderOptions, Loader } from '../types/loader';
|
|
3
|
+
import { RouteContext } from '../types/routeContext';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a reusable loader that receives the resolved route when an attached route is loaded.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createLoader<const TContext extends readonly RouteContext[] = [], TData = unknown, TRoutes extends Routes = Routes>(options: CreateLoaderOptions<TContext, TData, TRoutes>): Loader<TData, TContext>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { CreateRouteOptions,
|
|
1
|
+
import { CreateRouteOptions, ToRouteMatches, ToRouteUrl } from '../types/createRouteOptions';
|
|
2
2
|
import { RouteWithMethods } from '../types/routeWithMethods';
|
|
3
|
-
|
|
4
|
-
export declare function createRoute<const TOptions extends CreateRouteOptions, const TProps extends CreateRouteProps<TOptions>>(options: TOptions, ...args: CreateRouteWithProps<TOptions, TProps>): RouteWithMethods<ToRouteUrl<TOptions>, ToRouteMatches<TOptions, TProps>>;
|
|
5
|
-
export {};
|
|
3
|
+
export declare function createRoute<const TOptions extends CreateRouteOptions>(options: TOptions): RouteWithMethods<ToRouteUrl<TOptions>, ToRouteMatches<TOptions>>;
|
|
@@ -17,8 +17,8 @@ import { EmptyRouterPlugin, RouterPlugin } from '../types/routerPlugin';
|
|
|
17
17
|
* const About = { template: '<div>About</div>' }
|
|
18
18
|
*
|
|
19
19
|
* export const routes = [
|
|
20
|
-
* createRoute({ name: 'home', path: '/'
|
|
21
|
-
* createRoute({ name: 'path', path: '/about'
|
|
20
|
+
* createRoute({ name: 'home', path: '/' }).addView(Home),
|
|
21
|
+
* createRoute({ name: 'path', path: '/about' }).addView(About),
|
|
22
22
|
* ] as const
|
|
23
23
|
*
|
|
24
24
|
* const router = createRouter(routes)
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { CreateHook } from '../types/hook';
|
|
2
|
+
import { CreateView } from '../types/view';
|
|
3
|
+
import { CreateLoader } from '../types/loader';
|
|
4
|
+
import { ViewTransition } from '../components/viewTransition';
|
|
1
5
|
import { Router, RouterRoutes, RouterRejections } from '../types/router';
|
|
2
6
|
import { InjectionKey } from 'vue';
|
|
3
7
|
import { createRouterView } from '../components/routerView';
|
|
@@ -10,8 +14,21 @@ import { createUseLink } from '../compositions/useLink';
|
|
|
10
14
|
import { createIsRoute } from '../guards/routes';
|
|
11
15
|
import { AddBeforeLeaveHook, AddBeforeUpdateHook, AddAfterLeaveHook, AddAfterUpdateHook } from '../types/hooks';
|
|
12
16
|
import { createUseRejection } from '../compositions/useRejection';
|
|
17
|
+
import { createUseViewTransition } from '../compositions/useViewTransition';
|
|
13
18
|
import { createUseNavigation } from '../compositions/useNavigation';
|
|
14
19
|
export type RouterAssets<TRouter extends Router> = {
|
|
20
|
+
/**
|
|
21
|
+
* Creates a reusable hook with callbacks typed to this router's resolved routes.
|
|
22
|
+
*/
|
|
23
|
+
createHook: CreateHook<RouterRoutes<TRouter>>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a reusable view with props callbacks typed to this router's resolved routes and loader data.
|
|
26
|
+
*/
|
|
27
|
+
createView: CreateView<RouterRoutes<TRouter>>;
|
|
28
|
+
/**
|
|
29
|
+
* Creates a reusable loader with callbacks typed to this router's resolved routes.
|
|
30
|
+
*/
|
|
31
|
+
createLoader: CreateLoader<RouterRoutes<TRouter>>;
|
|
15
32
|
/**
|
|
16
33
|
* Registers a hook that is called before a route is left. Must be called from setup.
|
|
17
34
|
* This is useful for performing actions or cleanups before navigating away from a route component.
|
|
@@ -72,6 +89,8 @@ export type RouterAssets<TRouter extends Router> = {
|
|
|
72
89
|
* @group Components
|
|
73
90
|
*/
|
|
74
91
|
RouterLink: ReturnType<typeof createRouterLink<TRouter>>;
|
|
92
|
+
/** Names a shared element for a view transition. @group Components */
|
|
93
|
+
ViewTransition: typeof ViewTransition;
|
|
75
94
|
/**
|
|
76
95
|
* A component to render a bar across the top of the page while a navigation is pending, filled by how
|
|
77
96
|
* much of the navigation's work has settled.
|
|
@@ -132,6 +151,13 @@ export type RouterAssets<TRouter extends Router> = {
|
|
|
132
151
|
* @group Compositions
|
|
133
152
|
*/
|
|
134
153
|
useRejection: ReturnType<typeof createUseRejection<TRouter>>;
|
|
154
|
+
/**
|
|
155
|
+
* A composition to access the view transition in flight, if any.
|
|
156
|
+
*
|
|
157
|
+
* @returns The router's view transition state.
|
|
158
|
+
* @group Compositions
|
|
159
|
+
*/
|
|
160
|
+
useViewTransition: ReturnType<typeof createUseViewTransition<TRouter>>;
|
|
135
161
|
/**
|
|
136
162
|
* A composition to access the navigation under way: whether one is pending, which routes it leaves and
|
|
137
163
|
* leads to, and how much of the work it waits on has settled.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { History,
|
|
1
|
+
import { History, Update } from './history';
|
|
2
2
|
type NavigationPushOptions = {
|
|
3
3
|
replace?: boolean;
|
|
4
4
|
state?: unknown;
|
|
@@ -12,8 +12,16 @@ type RouterHistory = History & {
|
|
|
12
12
|
stopListening: () => void;
|
|
13
13
|
};
|
|
14
14
|
export type RouterHistoryMode = 'auto' | 'browser' | 'memory' | 'hash';
|
|
15
|
+
/** Called by the router while the traversal navigation is active. */
|
|
16
|
+
export type RouterHistoryTraversal = {
|
|
17
|
+
commit: () => void;
|
|
18
|
+
restore: () => void;
|
|
19
|
+
};
|
|
20
|
+
type RouterHistoryUpdate = Update & {
|
|
21
|
+
traversal?: RouterHistoryTraversal;
|
|
22
|
+
};
|
|
15
23
|
type RouterHistoryOptions = {
|
|
16
|
-
listener:
|
|
24
|
+
listener: (event: RouterHistoryUpdate) => void;
|
|
17
25
|
mode?: RouterHistoryMode;
|
|
18
26
|
};
|
|
19
27
|
export declare function createRouterHistory({ mode, listener }: RouterHistoryOptions): RouterHistory;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyHook } from '../types/hook';
|
|
2
|
+
import { ComponentHook, AddGlobalHooks, AddComponentHook, AfterHookRunner, BeforeHookRunner, AddBeforeEnterHook, AddBeforeUpdateHook, AddBeforeLeaveHook, AddAfterEnterHook, AddAfterUpdateHook, AddAfterLeaveHook, ErrorHookRunner, AddErrorHook, RejectionHookRunner, AddRejectionHook } from '../types/hooks';
|
|
2
3
|
import { HasVueAppStore } from './createVueAppStore';
|
|
3
4
|
import { RedirectStatus } from '../types/router';
|
|
4
5
|
export declare const getRouterHooksKey: (routerKey: import('vue').InjectionKey<import('../types/router').Router>) => import('vue').InjectionKey<RouterHooks>;
|
|
@@ -20,6 +21,7 @@ export type RouterHooks = HasVueAppStore & {
|
|
|
20
21
|
};
|
|
21
22
|
type RouterHooksOptions = {
|
|
22
23
|
redirectStatus: RedirectStatus;
|
|
24
|
+
onHookAdded?: (hook: ComponentHook | AnyHook) => void;
|
|
23
25
|
};
|
|
24
|
-
export declare function createRouterHooks({ redirectStatus }: RouterHooksOptions): RouterHooks;
|
|
26
|
+
export declare function createRouterHooks({ redirectStatus, onHookAdded }: RouterHooksOptions): RouterHooks;
|
|
25
27
|
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Routes } from '../types/route';
|
|
2
|
+
import { Component } from 'vue';
|
|
3
|
+
import { ComponentProps } from './component';
|
|
4
|
+
import { MaybePromise } from '../types/utilities';
|
|
5
|
+
import { RouteContext } from '../types/routeContext';
|
|
6
|
+
import { CreateViewOptions, View } from '../types/view';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a reusable view that receives the resolved route when computing its props.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createView<TComponent extends Component, const TContext extends readonly RouteContext[] = [], TProps extends MaybePromise<ComponentProps<TComponent>> | undefined = undefined, TRoutes extends Routes = Routes>(options: CreateViewOptions<TComponent, TContext, TProps, TRoutes>): View<TProps, TContext>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ResolvedRoute } from '../types/resolved';
|
|
2
|
+
import { RouterViewTransition, ViewTransitionTypes } from '../types/viewTransition';
|
|
3
|
+
export type PendingViewTransition = {
|
|
4
|
+
to: ResolvedRoute;
|
|
5
|
+
from: ResolvedRoute;
|
|
6
|
+
types: ViewTransitionTypes;
|
|
7
|
+
};
|
|
8
|
+
export type ViewTransitions = {
|
|
9
|
+
/**
|
|
10
|
+
* The transition in flight, as the router exposes it.
|
|
11
|
+
*/
|
|
12
|
+
viewTransition: RouterViewTransition;
|
|
13
|
+
/**
|
|
14
|
+
* Records the navigation about to transition, ahead of its data loading, so the page being left can
|
|
15
|
+
* prepare before it is captured.
|
|
16
|
+
*/
|
|
17
|
+
prepare: (navigation: PendingViewTransition) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Forgets a prepared navigation that was superseded before it transitioned, unless a newer one has
|
|
20
|
+
* taken over the state since.
|
|
21
|
+
*/
|
|
22
|
+
cancel: (navigation: PendingViewTransition) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Forgets the transition in flight, for a navigation that commits without one.
|
|
25
|
+
*/
|
|
26
|
+
reset: () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Runs the update inside a view transition. Resolves after the update and Vue flush, ahead of the animation.
|
|
29
|
+
*/
|
|
30
|
+
start: (update: () => void | Promise<unknown>) => Promise<void>;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Owns the one transition the document runs at a time. Starting another while the first has not yet run
|
|
34
|
+
* its callback leaves the browser free to run the two callbacks in either order, so a navigation arriving
|
|
35
|
+
* then takes over the pending callback instead. Once the callback has run the browser skips the old
|
|
36
|
+
* animation on its own.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createViewTransitions(): ViewTransitions;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Route } from '../types/route';
|
|
2
|
+
import { RouteContext } from '../types/routeContext';
|
|
3
|
+
/**
|
|
4
|
+
* Collects a route's context, including loaders and views merged during attachment, and its hooks' context.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getRouteContext(route: Route): RouteContext[];
|
|
@@ -2,6 +2,9 @@ import { Route, RouteInternal, Routes } from '../types/route';
|
|
|
2
2
|
import { RouterPlugin } from '../types/routerPlugin';
|
|
3
3
|
import { BuiltInRejectionType, Rejection, RejectionInternal } from '../types/rejection';
|
|
4
4
|
import { RouterOptions } from '../types/router';
|
|
5
|
+
import { AnyHook } from '../types/hook';
|
|
6
|
+
import { ComponentHook } from '../types/hooks';
|
|
7
|
+
import { RouteContext } from '../types/routeContext';
|
|
5
8
|
/**
|
|
6
9
|
* Takes in routes and plugins and returns a list of routes with the base route inserted if provided.
|
|
7
10
|
* Also checks for duplicate names and unreachable paths in the routes.
|
|
@@ -17,11 +20,13 @@ export declare function getRoutesForRouter(routes: Routes | Routes[], plugins?:
|
|
|
17
20
|
meta: Record<string, unknown>;
|
|
18
21
|
state: Record<string, import('../main').Param>;
|
|
19
22
|
prefetch?: import('../main').PrefetchConfig;
|
|
20
|
-
context:
|
|
23
|
+
context: RouteContext[];
|
|
21
24
|
} & RouteInternal)[];
|
|
22
25
|
rejections: (Pick<import('../types/rejection').RejectionOptions<string>, "type" | "status"> & {
|
|
23
26
|
getTitle: import('../types/routeTitle').GetTitleCallback;
|
|
24
27
|
} & RejectionInternal)[];
|
|
28
|
+
addHookContext: (hook: ComponentHook | AnyHook) => void;
|
|
29
|
+
stop: () => void;
|
|
25
30
|
getRouteByName: (type: string) => Route | undefined;
|
|
26
31
|
getRejectionByType: {
|
|
27
32
|
(type: BuiltInRejectionType): (Rejection & RejectionInternal);
|
|
@@ -23,6 +23,7 @@ export interface Transition extends Update {
|
|
|
23
23
|
export type Blocker = (tx: Transition) => void;
|
|
24
24
|
export type To = string | Partial<Path>;
|
|
25
25
|
export interface History {
|
|
26
|
+
readonly index: number | null;
|
|
26
27
|
readonly action: Action;
|
|
27
28
|
readonly location: Location;
|
|
28
29
|
createHref: (to: To) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RouteViews } from '../types/routeViews';
|
|
2
|
+
export declare const DEFAULT_VIEW_NAME = "default";
|
|
3
|
+
/**
|
|
4
|
+
* The names of the views that have a props getter. A view without one is never computed, so waiting on it
|
|
5
|
+
* would never settle.
|
|
6
|
+
*/
|
|
7
|
+
export declare function viewNamesWithProps(views: RouteViews): string[];
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Route } from '../types/route';
|
|
2
2
|
/**
|
|
3
|
-
* Attaches the
|
|
4
|
-
* rebuilds the route
|
|
5
|
-
* re-attached, so none mutates the route it was called on, and chaining one never drops another.
|
|
3
|
+
* Attaches methods and callbacks to the current route copy. Chaining a view, loader, or alias
|
|
4
|
+
* rebuilds the route and reattaches its methods.
|
|
6
5
|
*/
|
|
7
6
|
export declare function withRouteMethods<TRoute extends Route>(route: TRoute): TRoute;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -6,7 +6,9 @@ import { CreatedRouteOptions, Route } from './route';
|
|
|
6
6
|
import { RouteCallbackContext } from './routeCallbackContext';
|
|
7
7
|
import { RouteLoader, RouteLoaders } from './routeLoaders';
|
|
8
8
|
import { Url } from './url';
|
|
9
|
-
import { Identity, LastInArray } from './utilities';
|
|
9
|
+
import { AnyFunction, Identity, LastInArray } from './utilities';
|
|
10
|
+
import { AnyLoader } from './loader';
|
|
11
|
+
import { RouteContext, WithRouteContext } from './routeContext';
|
|
10
12
|
/**
|
|
11
13
|
* The getter for a loader added via `addLoader`. Receives the same two arguments as an `addView` props
|
|
12
14
|
* getter, except that its route carries no data: a route's data includes what the loader itself is
|
|
@@ -47,13 +49,13 @@ type LoaderName<TName extends string | undefined> = TName extends string ? TName
|
|
|
47
49
|
/**
|
|
48
50
|
* Replaces the loaders on the last match, preserving all ancestors.
|
|
49
51
|
*/
|
|
50
|
-
type ReplaceLastMatchLoaders<TMatches extends CreatedRouteOptions[], TNewLoaders extends RouteLoaders> = TMatches extends [...infer THead extends CreatedRouteOptions[], infer TLast extends CreatedRouteOptions] ? Identity<Omit<TLast, 'loaders'> & {
|
|
52
|
+
type ReplaceLastMatchLoaders<TMatches extends CreatedRouteOptions[], TNewLoaders extends RouteLoaders, TContext extends RouteContext[]> = TMatches extends [...infer THead extends CreatedRouteOptions[], infer TLast extends CreatedRouteOptions] ? Identity<Omit<WithRouteContext<TLast, TContext>, 'loaders'> & {
|
|
51
53
|
loaders: TNewLoaders;
|
|
52
54
|
}> extends infer TNext extends CreatedRouteOptions ? [...THead, TNext] : TMatches : TMatches;
|
|
53
55
|
/**
|
|
54
56
|
* The full return type of an `addLoader` call: the same url with the last match's loaders replaced.
|
|
55
57
|
*/
|
|
56
|
-
type AddLoaderReturn<TUrl extends Url, TMatches extends CreatedRouteOptions[],
|
|
58
|
+
type AddLoaderReturn<TUrl extends Url, TMatches extends CreatedRouteOptions[], TName extends string | undefined, TData, TContext extends RouteContext[] = []> = ReplaceLastMatchLoaders<TMatches, AddLoaderLoaders<CurrentMatchLoaders<TMatches>, TName, TData>, TContext> extends infer TNext extends CreatedRouteOptions[] ? RouteWithMethods<TUrl, TNext> : never;
|
|
57
59
|
/**
|
|
58
60
|
* Adds a loader to a route. Chainable to register multiple loaders, each exposed under its own name on
|
|
59
61
|
* the resolved route's `data`.
|
|
@@ -65,6 +67,7 @@ export type RouteAddLoader<TUrl extends Url = Url, TMatches extends CreatedRoute
|
|
|
65
67
|
* @param load - The loader callback. Receives the resolved route and a context object.
|
|
66
68
|
* @param options - The loader's `name` and `prefetch` config.
|
|
67
69
|
*/
|
|
68
|
-
addLoader: <const
|
|
70
|
+
addLoader: <const TSource extends LoaderGetter<Route<TUrl, TMatches>> | AnyLoader, const TName extends string | undefined = undefined>(load: TSource, options?: AddLoaderOptions<TName, Awaited<LoaderDataOf<TSource>>>) => AddLoaderReturn<TUrl, TMatches, TName, LoaderDataOf<TSource>, TSource extends AnyLoader ? [...TSource['context']] : []>;
|
|
69
71
|
};
|
|
72
|
+
type LoaderDataOf<TSource extends AnyFunction | AnyLoader> = ReturnType<TSource extends AnyLoader ? TSource['load'] : Extract<TSource, AnyFunction>>;
|
|
70
73
|
export {};
|
package/dist/types/addView.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component } from 'vue';
|
|
2
|
+
import { AnyView } from './view';
|
|
3
|
+
import { RouteContext, WithRouteContext } from './routeContext';
|
|
2
4
|
import { ComponentProps } from '../services/component';
|
|
3
|
-
import { ComponentPropsAreOptional, PropsGetter } from './createRouteOptions';
|
|
4
5
|
import { ResolvedRoute, WithData } from './resolved';
|
|
5
6
|
import { CreatedRouteOptions, Route } from './route';
|
|
6
7
|
import { RouteCallbackContext } from './routeCallbackContext';
|
|
@@ -11,8 +12,7 @@ import { RouteView, RouteViews } from './routeViews';
|
|
|
11
12
|
import { Url } from './url';
|
|
12
13
|
import { AnyFunction, Identity, LastInArray, MaybePromise } from './utilities';
|
|
13
14
|
/**
|
|
14
|
-
* The props getter for a view added via `addView`. Receives the
|
|
15
|
-
* `createRoute` props callback: the resolved route and a context object.
|
|
15
|
+
* The props getter for a view added via `addView`. Receives the resolved route and a context object.
|
|
16
16
|
*/
|
|
17
17
|
export type AddViewPropsGetter<TRoute extends Route, TComponent extends Component> = (route: ResolvedRoute<TRoute> & WithData<TRoute>, context: AddViewPropsCallbackContext<TRoute>) => MaybePromise<ComponentProps<TComponent>>;
|
|
18
18
|
/**
|
|
@@ -20,6 +20,7 @@ export type AddViewPropsGetter<TRoute extends Route, TComponent extends Componen
|
|
|
20
20
|
* callbacks attached to a route.
|
|
21
21
|
*/
|
|
22
22
|
export type AddViewPropsCallbackContext<TRoute extends Route> = RouteCallbackContext<TRoute>;
|
|
23
|
+
type ComponentPropsAreOptional<TComponent extends Component> = Partial<ComponentProps<TComponent>> extends ComponentProps<TComponent> ? true : false;
|
|
23
24
|
/**
|
|
24
25
|
* When the getter is omitted the default type param resolves to the wide getter type, which then
|
|
25
26
|
* "extends" itself and collapses to undefined. When a getter is provided its return type is kept — the
|
|
@@ -32,7 +33,7 @@ type NewViewProps<TRoute extends Route, TComponent extends Component, TGetter ex
|
|
|
32
33
|
* @template TName - The view's name, inferred from the `name` option.
|
|
33
34
|
* @template TGetter - The view's props getter, inferred from the `props` option.
|
|
34
35
|
*/
|
|
35
|
-
export type AddViewOptions<TName extends string | undefined = string, TGetter =
|
|
36
|
+
export type AddViewOptions<TName extends string | undefined = string, TGetter = AddViewPropsGetter<Route, Component>> = TransformerOptions<PayloadValueOf<TGetter>> & {
|
|
36
37
|
/**
|
|
37
38
|
* The name of the view, rendered by `<router-view name="..." />`. Defaults to the unnamed view.
|
|
38
39
|
*/
|
|
@@ -84,13 +85,13 @@ type ViewName<TName extends string | undefined> = TName extends string ? TName :
|
|
|
84
85
|
/**
|
|
85
86
|
* Replaces the views on the last match, preserving all ancestors.
|
|
86
87
|
*/
|
|
87
|
-
type ReplaceLastMatchViews<TMatches extends CreatedRouteOptions[], TNewViews extends RouteViews> = TMatches extends [...infer THead extends CreatedRouteOptions[], infer TLast extends CreatedRouteOptions] ? Identity<Omit<TLast, 'views'> & {
|
|
88
|
+
type ReplaceLastMatchViews<TMatches extends CreatedRouteOptions[], TNewViews extends RouteViews, TContext extends RouteContext[]> = TMatches extends [...infer THead extends CreatedRouteOptions[], infer TLast extends CreatedRouteOptions] ? Identity<Omit<WithRouteContext<TLast, TContext>, 'views'> & {
|
|
88
89
|
views: TNewViews;
|
|
89
90
|
}> extends infer TNext extends CreatedRouteOptions ? [...THead, TNext] : TMatches : TMatches;
|
|
90
91
|
/**
|
|
91
92
|
* The full return type of an `addView` call: the same url with the last match's views replaced.
|
|
92
93
|
*/
|
|
93
|
-
type AddViewReturn<TUrl extends Url, TMatches extends CreatedRouteOptions[],
|
|
94
|
+
type AddViewReturn<TUrl extends Url, TMatches extends CreatedRouteOptions[], TName extends string | undefined, TProps, TContext extends RouteContext[] = []> = ReplaceLastMatchViews<TMatches, AddViewProps<CurrentMatchViews<TMatches>, TName, TProps>, TContext> extends infer TNext extends CreatedRouteOptions[] ? RouteWithMethods<TUrl, TNext> : never;
|
|
94
95
|
/**
|
|
95
96
|
* Adds a view (component + optional props getter) to a route. Chainable to register multiple views,
|
|
96
97
|
* including named views for named `<router-view />`s.
|
|
@@ -104,6 +105,9 @@ export type RouteAddView<TUrl extends Url = Url, TMatches extends CreatedRouteOp
|
|
|
104
105
|
* @param options - The view's `name`, `props` getter, and `prefetch` config. Required when the
|
|
105
106
|
* component has required props, optional otherwise.
|
|
106
107
|
*/
|
|
107
|
-
addView: <
|
|
108
|
+
addView: <TSource extends Component | AnyView, const TName extends string | undefined = undefined, const TGetter extends AddViewPropsGetter<Route<TUrl, TMatches>, Extract<TSource, Component>> = AddViewPropsGetter<Route<TUrl, TMatches>, Extract<TSource, Component>>>(source: TSource, ...options: TSource extends AnyView ? [options?: Omit<AddViewOptions<TName, AnyFunction<ViewPropsOf<TSource>>>, 'props'>] : AddViewArgs<Extract<TSource, Component>, TName, TGetter>) => TSource extends AnyView ? AddViewReturn<TUrl, TMatches, TName, ViewPropsOf<TSource>, [...TSource['context']]> : AddViewReturn<TUrl, TMatches, TName, NewViewProps<Route<TUrl, TMatches>, Extract<TSource, Component>, TGetter>>;
|
|
108
109
|
};
|
|
110
|
+
type ViewPropsOf<TView extends AnyView> = TView extends {
|
|
111
|
+
props?: AnyFunction<infer TProps>;
|
|
112
|
+
} ? TProps : undefined;
|
|
109
113
|
export {};
|