@kitbag/router 0.20.12 → 0.22.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.
Files changed (72) hide show
  1. package/README.md +38 -87
  2. package/dist/components/routerLink.d.ts +5 -5
  3. package/dist/compositions/useLink.d.ts +2 -2
  4. package/dist/devtools/createRouterDevtools.d.ts +13 -0
  5. package/dist/devtools/filters.d.ts +12 -0
  6. package/dist/devtools/getDevtoolsLabel.d.ts +13 -0
  7. package/dist/devtools/types.d.ts +10 -0
  8. package/dist/errors/contextAbortError.d.ts +2 -2
  9. package/dist/errors/contextPushError.d.ts +2 -2
  10. package/dist/errors/contextRejectionError.d.ts +2 -2
  11. package/dist/errors/invalidRouteRedirectError.d.ts +11 -0
  12. package/dist/errors/multipleRouteRedirectsError.d.ts +13 -0
  13. package/dist/keys.d.ts +1 -3
  14. package/dist/kitbag-router.js +4927 -1741
  15. package/dist/kitbag-router.umd.cjs +3 -3
  16. package/dist/main.d.ts +1 -17
  17. package/dist/models/hooks.d.ts +12 -0
  18. package/dist/services/createComponentHooks.d.ts +7 -7
  19. package/dist/services/createExternalRoute.d.ts +4 -2
  20. package/dist/services/createPropStore.d.ts +2 -2
  21. package/dist/services/createRoute.d.ts +3 -1
  22. package/dist/services/createRouteHooks.d.ts +12 -10
  23. package/dist/services/createRouteRedirects.d.ts +10 -0
  24. package/dist/services/createRouterAssets.d.ts +5 -5
  25. package/dist/services/createRouterCallbackContext.d.ts +8 -6
  26. package/dist/services/createRouterHooks.d.ts +13 -14
  27. package/dist/services/createRouterPlugin.d.ts +2 -2
  28. package/dist/services/getGlobalHooksForRouter.d.ts +2 -3
  29. package/dist/services/getGlobalRouteHooks.d.ts +3 -3
  30. package/dist/services/getRouteHooks.d.ts +3 -3
  31. package/dist/services/hooks.d.ts +2 -2
  32. package/dist/services/insertBaseRoute.d.ts +2 -2
  33. package/dist/services/routeMatchRules.d.ts +0 -1
  34. package/dist/services/routeMatchScore.d.ts +1 -1
  35. package/dist/services/routeRegex.d.ts +1 -0
  36. package/dist/services/urlAssembly.d.ts +2 -2
  37. package/dist/services/urlCombine.d.ts +2 -2
  38. package/dist/services/urlCreator.d.ts +2 -2
  39. package/dist/services/urlParser.d.ts +1 -1
  40. package/dist/types/callbackContext.d.ts +15 -0
  41. package/dist/types/createRouteOptions.d.ts +6 -13
  42. package/dist/types/hooks.d.ts +85 -137
  43. package/dist/types/props.d.ts +8 -8
  44. package/dist/types/redirects.d.ts +40 -0
  45. package/dist/types/register.d.ts +1 -41
  46. package/dist/types/rejection.d.ts +6 -2
  47. package/dist/types/resolved.d.ts +14 -4
  48. package/dist/types/route.d.ts +3 -4
  49. package/dist/types/routeContext.d.ts +11 -5
  50. package/dist/types/router.d.ts +16 -11
  51. package/dist/types/routerAbort.d.ts +1 -0
  52. package/dist/types/routerLink.d.ts +3 -3
  53. package/dist/types/routerPlugin.d.ts +17 -41
  54. package/dist/types/routerPush.d.ts +2 -2
  55. package/dist/types/routerReject.d.ts +2 -2
  56. package/dist/types/routerReplace.d.ts +2 -2
  57. package/dist/types/{url.d.ts → urlString.d.ts} +3 -3
  58. package/dist/types/useLink.d.ts +2 -2
  59. package/dist/utilities/checkDuplicateParams.spec.d.ts +1 -0
  60. package/dist/utilities/index.d.ts +1 -1
  61. package/dist/utilities/isNamedRoute.d.ts +4 -0
  62. package/dist/utilities/testHelpers.d.ts +722 -22
  63. package/package.json +10 -8
  64. package/dist/errors/missingRouteContextError.d.ts +0 -10
  65. package/dist/models/RouteHooks.d.ts +0 -12
  66. package/dist/models/RouterRouteHooks.d.ts +0 -10
  67. package/dist/services/createCallbackContext.d.ts +0 -44
  68. package/dist/services/getRouteHooksDeprecated.d.ts +0 -10
  69. package/dist/utilities/checkMissingContext.d.ts +0 -2
  70. /package/dist/{utilities/checkDuplicateKeys.spec.d.ts → services/createRouteRedirects.spec.d.ts} +0 -0
  71. /package/dist/{utilities/checkMissingContext.spec copy.d.ts → types/redirects.spec-d.d.ts} +0 -0
  72. /package/dist/utilities/{checkDuplicateKeys.d.ts → checkDuplicateParams.d.ts} +0 -0
@@ -1,14 +1,14 @@
1
1
  import { PrefetchConfig } from './prefetch';
2
- import { Url } from './url';
2
+ import { UrlString } from './urlString';
3
3
  import { ResolvedRoute } from './resolved';
4
4
  import { Router } from './router';
5
5
  import { RouterPushOptions } from './routerPush';
6
- export type ToCallback<TRouter extends Router> = (resolve: TRouter['resolve']) => ResolvedRoute | Url | undefined;
6
+ export type ToCallback<TRouter extends Router> = (resolve: TRouter['resolve']) => ResolvedRoute | UrlString | undefined;
7
7
  export type RouterLinkProps<TRouter extends Router> = RouterPushOptions & {
8
8
  /**
9
9
  * The url string to navigate to or a callback that returns a url string
10
10
  */
11
- to: Url | ResolvedRoute | ToCallback<TRouter>;
11
+ to: UrlString | ResolvedRoute | ToCallback<TRouter>;
12
12
  /**
13
13
  * Determines what assets are prefetched when router-link is rendered for this route. Overrides route level prefetch.
14
14
  */
@@ -1,43 +1,19 @@
1
- import { BeforeRouteHook, AfterRouteHook, RouteHookRemove } from './hooks';
1
+ import { HookRemove } from './hooks';
2
2
  import { Routes } from './route';
3
- import { MaybeArray, MaybePromise } from './utilities';
4
- import { Rejection } from './rejection';
5
- import { RouterRouteHooks } from '../models/RouterRouteHooks';
3
+ import { Rejections } from './rejection';
4
+ import { Hooks } from '../models/hooks';
6
5
  import { ResolvedRoute } from './resolved';
7
6
  import { RouterReject } from './routerReject';
8
7
  import { RouterPush } from './routerPush';
9
8
  import { RouterReplace } from './routerReplace';
10
9
  import { CallbackContextAbort } from '../services/createRouterCallbackContext';
10
+ import { MaybePromise } from './utilities';
11
11
  export type EmptyRouterPlugin = RouterPlugin<[], []>;
12
- export type CreateRouterPluginOptions<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = {
12
+ export type CreateRouterPluginOptions<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = {
13
13
  routes?: TRoutes;
14
14
  rejections?: TRejections;
15
- /**
16
- * @deprecated use plugin.onBeforeRouteEnter instead
17
- */
18
- onBeforeRouteEnter?: MaybeArray<BeforeRouteHook>;
19
- /**
20
- * @deprecated use plugin.onAfterRouteEnter instead
21
- */
22
- onAfterRouteEnter?: MaybeArray<AfterRouteHook>;
23
- /**
24
- * @deprecated use plugin.onBeforeRouteUpdate instead
25
- */
26
- onBeforeRouteUpdate?: MaybeArray<BeforeRouteHook>;
27
- /**
28
- * @deprecated use plugin.onAfterRouteUpdate instead
29
- */
30
- onAfterRouteUpdate?: MaybeArray<AfterRouteHook>;
31
- /**
32
- * @deprecated use plugin.onBeforeRouteLeave instead
33
- */
34
- onBeforeRouteLeave?: MaybeArray<BeforeRouteHook>;
35
- /**
36
- * @deprecated use plugin.onAfterRouteLeave instead
37
- */
38
- onAfterRouteLeave?: MaybeArray<AfterRouteHook>;
39
15
  };
40
- export type RouterPlugin<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = {
16
+ export type RouterPlugin<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = {
41
17
  /**
42
18
  * The routes supplied by the plugin.
43
19
  * @internal
@@ -52,26 +28,26 @@ export type RouterPlugin<TRoutes extends Routes = Routes, TRejections extends Re
52
28
  * The hooks supplied by the plugin.
53
29
  * @internal
54
30
  */
55
- hooks: RouterRouteHooks;
31
+ hooks: Hooks;
56
32
  };
57
- type PluginBeforeRouteHookContext<TRoutes extends Routes, TRejections extends Rejection[]> = {
33
+ type PluginBeforeRouteHookContext<TRoutes extends Routes, TRejections extends Rejections> = {
58
34
  from: ResolvedRoute | null;
59
35
  reject: RouterReject<TRejections>;
60
36
  push: RouterPush<TRoutes>;
61
37
  replace: RouterReplace<TRoutes>;
62
38
  abort: CallbackContextAbort;
63
39
  };
64
- type PluginAfterRouteHookContext<TRoutes extends Routes, TRejections extends Rejection[]> = {
40
+ type PluginAfterRouteHookContext<TRoutes extends Routes, TRejections extends Rejections> = {
65
41
  from: ResolvedRoute | null;
66
42
  reject: RouterReject<TRejections>;
67
43
  push: RouterPush<TRoutes>;
68
44
  replace: RouterReplace<TRoutes>;
69
45
  };
70
- export type PluginBeforeRouteHook<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = (to: ResolvedRoute, context: PluginBeforeRouteHookContext<TRoutes, TRejections>) => MaybePromise<void>;
71
- export type PluginAfterRouteHook<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = (to: ResolvedRoute, context: PluginAfterRouteHookContext<TRoutes, TRejections>) => MaybePromise<void>;
72
- type AddPluginBeforeRouteHook<TRoutes extends Routes, TRejections extends Rejection[]> = (hook: PluginBeforeRouteHook<TRoutes, TRejections>) => RouteHookRemove;
73
- type AddPluginAfterRouteHook<TRoutes extends Routes, TRejections extends Rejection[]> = (hook: PluginAfterRouteHook<TRoutes, TRejections>) => RouteHookRemove;
74
- export type PluginErrorHookContext<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = {
46
+ export type PluginBeforeRouteHook<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = (to: ResolvedRoute, context: PluginBeforeRouteHookContext<TRoutes, TRejections>) => MaybePromise<void>;
47
+ export type PluginAfterRouteHook<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = (to: ResolvedRoute, context: PluginAfterRouteHookContext<TRoutes, TRejections>) => MaybePromise<void>;
48
+ type AddPluginBeforeRouteHook<TRoutes extends Routes, TRejections extends Rejections> = (hook: PluginBeforeRouteHook<TRoutes, TRejections>) => HookRemove;
49
+ type AddPluginAfterRouteHook<TRoutes extends Routes, TRejections extends Rejections> = (hook: PluginAfterRouteHook<TRoutes, TRejections>) => HookRemove;
50
+ export type PluginErrorHookContext<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = {
75
51
  to: ResolvedRoute;
76
52
  from: ResolvedRoute | null;
77
53
  source: 'props' | 'hook' | 'component';
@@ -79,9 +55,9 @@ export type PluginErrorHookContext<TRoutes extends Routes = Routes, TRejections
79
55
  push: RouterPush<TRoutes>;
80
56
  replace: RouterReplace<TRoutes>;
81
57
  };
82
- export type PluginErrorHook<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = (error: unknown, context: PluginErrorHookContext<TRoutes, TRejections>) => void;
83
- export type AddPluginErrorHook<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = (hook: PluginErrorHook<TRoutes, TRejections>) => RouteHookRemove;
84
- export type PluginRouteHooks<TRoutes extends Routes = Routes, TRejections extends Rejection[] = Rejection[]> = {
58
+ export type PluginErrorHook<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = (error: unknown, context: PluginErrorHookContext<TRoutes, TRejections>) => void;
59
+ export type AddPluginErrorHook<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = (hook: PluginErrorHook<TRoutes, TRejections>) => HookRemove;
60
+ export type PluginRouteHooks<TRoutes extends Routes = Routes, TRejections extends Rejections = Rejections> = {
85
61
  /**
86
62
  * Registers a global hook to be called before a route is entered.
87
63
  */
@@ -2,7 +2,7 @@ import { Routes } from './route';
2
2
  import { RoutesName } from './routesMap';
3
3
  import { RouteParamsByKey } from './routeWithParams';
4
4
  import { RouteStateByName } from './state';
5
- import { Url } from './url';
5
+ import { UrlString } from './urlString';
6
6
  import { AllPropertiesAreOptional } from './utilities';
7
7
  import { QuerySource } from './querySource';
8
8
  import { ResolvedRoute } from './resolved';
@@ -28,6 +28,6 @@ type RouterPushArgs<TRoutes extends Routes, TSource extends RoutesName<TRoutes>>
28
28
  export type RouterPush<TRoutes extends Routes = any> = {
29
29
  <TSource extends RoutesName<TRoutes>>(name: TSource, ...args: RouterPushArgs<TRoutes, TSource>): Promise<void>;
30
30
  (route: ResolvedRoute, options?: RouterPushOptions): Promise<void>;
31
- (url: Url, options?: RouterPushOptions): Promise<void>;
31
+ (url: UrlString, options?: RouterPushOptions): Promise<void>;
32
32
  };
33
33
  export {};
@@ -1,3 +1,3 @@
1
1
  import { BuiltInRejectionType } from '../services/createRouterReject';
2
- import { Rejection, RejectionType } from './rejection';
3
- export type RouterReject<TRejections extends Rejection[] | undefined> = <TSource extends (RejectionType<TRejections> | BuiltInRejectionType)>(type: TSource) => void;
2
+ import { Rejections, RejectionType } from './rejection';
3
+ export type RouterReject<TRejections extends Rejections | undefined> = <TSource extends (RejectionType<TRejections> | BuiltInRejectionType)>(type: TSource) => void;
@@ -2,7 +2,7 @@ import { Routes } from './route';
2
2
  import { RoutesName } from './routesMap';
3
3
  import { RouteParamsByKey } from './routeWithParams';
4
4
  import { RouteStateByName } from './state';
5
- import { Url } from './url';
5
+ import { UrlString } from './urlString';
6
6
  import { AllPropertiesAreOptional } from './utilities';
7
7
  import { QuerySource } from './querySource';
8
8
  import { ResolvedRoute } from './resolved';
@@ -15,6 +15,6 @@ type RouterReplaceArgs<TRoutes extends Routes, TSource extends RoutesName<TRoute
15
15
  export type RouterReplace<TRoutes extends Routes> = {
16
16
  <TSource extends RoutesName<TRoutes>>(name: TSource, ...args: RouterReplaceArgs<TRoutes, TSource>): Promise<void>;
17
17
  (route: ResolvedRoute, options?: RouterReplaceOptions): Promise<void>;
18
- (url: Url, options?: RouterReplaceOptions): Promise<void>;
18
+ (url: UrlString, options?: RouterReplaceOptions): Promise<void>;
19
19
  };
20
20
  export {};
@@ -1,5 +1,5 @@
1
1
  import { QuerySource } from './querySource';
2
- export type Url = `http://${string}` | `https://${string}` | `/${string}`;
2
+ export type UrlString = `http://${string}` | `https://${string}` | `/${string}`;
3
3
  export type UrlParts = {
4
4
  protocol?: string;
5
5
  host?: string;
@@ -14,10 +14,10 @@ export type UrlParts = {
14
14
  * @returns `true` if the value is a valid URL, otherwise `false`.
15
15
  * @group Type Guards
16
16
  */
17
- export declare function isUrl(value: unknown): value is Url;
17
+ export declare function isUrlString(value: unknown): value is UrlString;
18
18
  /**
19
19
  * Converts a string to a valid URL.
20
20
  * @param value - The string to convert.
21
21
  * @returns The valid URL.
22
22
  */
23
- export declare function asUrl(value: string): Url;
23
+ export declare function asUrlString(value: string): UrlString;
@@ -3,7 +3,7 @@ import { PrefetchConfig } from './prefetch';
3
3
  import { ResolvedRoute } from './resolved';
4
4
  import { RouterPushOptions } from './routerPush';
5
5
  import { RouterReplaceOptions } from './routerReplace';
6
- import { Url } from './url';
6
+ import { UrlString } from './urlString';
7
7
  export type UseLink = {
8
8
  /**
9
9
  * A template ref to bind to the dom for automatic prefetching
@@ -16,7 +16,7 @@ export type UseLink = {
16
16
  /**
17
17
  * Resolved URL with params interpolated and query applied. Same value as `router.resolve`.
18
18
  */
19
- href: ComputedRef<Url | undefined>;
19
+ href: ComputedRef<UrlString | undefined>;
20
20
  /**
21
21
  * True if route matches current URL or is ancestor of route that matches current URL
22
22
  */
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  export * from './array';
2
- export * from './checkDuplicateKeys';
2
+ export * from './checkDuplicateParams';
3
3
  export * from './guards';
4
4
  export * from './isBrowser';
5
5
  export * from './makeOptional';
@@ -0,0 +1,4 @@
1
+ import { Route } from '../types/route';
2
+ export declare function isNamedRoute(route: Route): route is Route & {
3
+ name: string;
4
+ };