@kitbag/router 0.21.0 → 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.
- package/README.md +9 -0
- package/dist/components/routerLink.d.ts +3 -3
- package/dist/compositions/useLink.d.ts +2 -2
- package/dist/devtools/createRouterDevtools.d.ts +13 -0
- package/dist/devtools/filters.d.ts +12 -0
- package/dist/devtools/getDevtoolsLabel.d.ts +13 -0
- package/dist/devtools/types.d.ts +10 -0
- package/dist/errors/invalidRouteRedirectError.d.ts +11 -0
- package/dist/errors/multipleRouteRedirectsError.d.ts +13 -0
- package/dist/kitbag-router.js +5256 -2004
- package/dist/kitbag-router.umd.cjs +3 -3
- package/dist/main.d.ts +1 -1
- package/dist/models/hooks.d.ts +9 -7
- package/dist/services/createComponentHooks.d.ts +5 -5
- package/dist/services/createExternalRoute.d.ts +3 -2
- package/dist/services/createRoute.d.ts +2 -1
- package/dist/services/createRouteHooks.d.ts +17 -0
- package/dist/services/createRouteRedirects.d.ts +10 -0
- package/dist/services/createRouterAssets.d.ts +5 -5
- package/dist/services/createRouterHooks.d.ts +8 -9
- package/dist/services/insertBaseRoute.d.ts +2 -2
- package/dist/services/routeMatchRules.d.ts +0 -1
- package/dist/services/routeMatchScore.d.ts +1 -1
- package/dist/services/routeRegex.d.ts +1 -0
- package/dist/services/urlAssembly.d.ts +2 -2
- package/dist/services/urlCombine.d.ts +2 -3
- package/dist/services/urlCreator.d.ts +2 -3
- package/dist/services/urlParser.d.ts +1 -1
- package/dist/types/hooks.d.ts +56 -28
- package/dist/types/params.d.ts +5 -11
- package/dist/types/redirects.d.ts +40 -0
- package/dist/types/resolved.d.ts +12 -2
- package/dist/types/route.d.ts +0 -2
- package/dist/types/router.d.ts +12 -7
- package/dist/types/routerLink.d.ts +3 -3
- package/dist/types/routerPush.d.ts +2 -2
- package/dist/types/routerReplace.d.ts +2 -2
- package/dist/types/urlString.d.ts +23 -0
- package/dist/types/useLink.d.ts +2 -2
- package/dist/utilities/checkDuplicateParams.spec.d.ts +1 -0
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/isNamedRoute.d.ts +4 -0
- package/dist/utilities/makeOptional.d.ts +0 -1
- package/dist/utilities/testHelpers.d.ts +450 -18
- package/package.json +7 -7
- package/dist/errors/missingRouteContextError.d.ts +0 -10
- package/dist/services/createHooksFactory.d.ts +0 -15
- package/dist/services/createUrlParts.d.ts +0 -13
- package/dist/types/url.d.ts +0 -14
- package/dist/types/urlParts.d.ts +0 -53
- package/dist/utilities/checkMissingContext.d.ts +0 -2
- /package/dist/{utilities/checkDuplicateKeys.spec.d.ts → services/createRouteRedirects.spec.d.ts} +0 -0
- /package/dist/{utilities/checkMissingContext.spec copy.d.ts → types/redirects.spec-d.d.ts} +0 -0
- /package/dist/utilities/{checkDuplicateKeys.d.ts → checkDuplicateParams.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -7,6 +7,15 @@ Type safe router for Vue.js
|
|
|
7
7
|
[![Discord chat][discord-badge]][discord-url]
|
|
8
8
|
[![Open in StackBlitz][stackblitz-badge]][stackblitz-url]
|
|
9
9
|
|
|
10
|
+
[npm-badge]: https://img.shields.io/npm/v/@kitbag/router.svg
|
|
11
|
+
[npm-url]: https://www.npmjs.org/package/@kitbag/router
|
|
12
|
+
[netlify-badge]: https://api.netlify.com/api/v1/badges/c12f79b8-49f9-4529-bc23-f8ffca8919a3/deploy-status
|
|
13
|
+
[netlify-url]: https://app.netlify.com/sites/kitbag-router/deploys
|
|
14
|
+
[discord-badge]: https://img.shields.io/discord/1079625926024900739?logo=discord&label=Discord
|
|
15
|
+
[discord-url]: https://discord.gg/zw7dpcc5HV
|
|
16
|
+
[stackblitz-badge]: https://developer.stackblitz.com/img/open_in_stackblitz_small.svg
|
|
17
|
+
[stackblitz-url]: https://stackblitz.com/~/github.com/kitbagjs/router-preview
|
|
18
|
+
|
|
10
19
|
<img src="https://kitbag.dev/kitbag-logo.svg" width="20%" />
|
|
11
20
|
|
|
12
21
|
## Getting Started
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UrlString } from '../types/urlString';
|
|
2
2
|
import { ResolvedRoute } from '../types/resolved';
|
|
3
3
|
import { EmitsOptions, InjectionKey, SlotsType, VNode } from 'vue';
|
|
4
4
|
import { Router } from '../types/router';
|
|
@@ -25,9 +25,9 @@ export declare function createRouterLink<TRouter extends Router>(routerKey: Inje
|
|
|
25
25
|
[x: string]: unknown;
|
|
26
26
|
};
|
|
27
27
|
state: import('../types/state').ExtractRouteStateParamsAsOptional<Record<string, import('../main').Param>>;
|
|
28
|
-
href:
|
|
28
|
+
href: UrlString;
|
|
29
29
|
hooks: import('../models/hooks').Hooks[];
|
|
30
|
-
}> |
|
|
30
|
+
}> | UrlString | ToCallback<TRouter>;
|
|
31
31
|
prefetch?: import('../main').PrefetchConfig;
|
|
32
32
|
} & ({
|
|
33
33
|
[x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { InjectionKey, MaybeRefOrGetter } from 'vue';
|
|
2
2
|
import { ResolvedRoute } from '../types/resolved';
|
|
3
3
|
import { RouteParamsByKey } from '../types/routeWithParams';
|
|
4
|
-
import {
|
|
4
|
+
import { UrlString } from '../types/urlString';
|
|
5
5
|
import { AllPropertiesAreOptional } from '../types/utilities';
|
|
6
6
|
import { Router, RouterRouteName, RouterRoutes } from '../types/router';
|
|
7
7
|
import { UseLink, UseLinkOptions } from '../types/useLink';
|
|
8
8
|
type UseLinkArgs<TRouter extends Router, TSource extends RouterRouteName<TRouter>, TParams = RouteParamsByKey<RouterRoutes<TRouter>, TSource>> = AllPropertiesAreOptional<TParams> extends true ? [params?: MaybeRefOrGetter<TParams>, options?: MaybeRefOrGetter<UseLinkOptions>] : [params: MaybeRefOrGetter<TParams>, options?: MaybeRefOrGetter<UseLinkOptions>];
|
|
9
9
|
type UseLinkFunction<TRouter extends Router> = {
|
|
10
10
|
<TRouteKey extends RouterRouteName<TRouter>>(name: MaybeRefOrGetter<TRouteKey>, ...args: UseLinkArgs<TRouter, TRouteKey>): UseLink;
|
|
11
|
-
(url: MaybeRefOrGetter<
|
|
11
|
+
(url: MaybeRefOrGetter<UrlString>, options?: MaybeRefOrGetter<UseLinkOptions>): UseLink;
|
|
12
12
|
(resolvedRoute: MaybeRefOrGetter<ResolvedRoute | undefined>, options?: MaybeRefOrGetter<UseLinkOptions>): UseLink;
|
|
13
13
|
(source: MaybeRefOrGetter<string | ResolvedRoute | undefined>, paramsOrOptions?: MaybeRefOrGetter<Record<PropertyKey, unknown> | UseLinkOptions>, maybeOptions?: MaybeRefOrGetter<UseLinkOptions>): UseLink;
|
|
14
14
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { App } from 'vue';
|
|
2
|
+
import { Router } from '../types/router';
|
|
3
|
+
import { Routes } from '../types/route';
|
|
4
|
+
type RouterDevtoolsProps = {
|
|
5
|
+
router: Router;
|
|
6
|
+
app: App;
|
|
7
|
+
routes: Routes;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Sets up Vue DevTools integration for Kitbag Router.
|
|
11
|
+
*/
|
|
12
|
+
export declare function setupRouterDevtools({ router, app, routes }: RouterDevtoolsProps): void;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Route } from '../types/route';
|
|
2
|
+
import { InspectorTreePayload } from './types';
|
|
3
|
+
type RouteFilterOptions = {
|
|
4
|
+
route: Route;
|
|
5
|
+
payload: InspectorTreePayload;
|
|
6
|
+
};
|
|
7
|
+
type RouteFilter = (options: RouteFilterOptions) => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Checks if a route should be shown based on multiple filters.
|
|
10
|
+
*/
|
|
11
|
+
export declare const shouldShowRoute: RouteFilter;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a DevTools label with optional router instance ID.
|
|
3
|
+
* If the router ID is greater than 1, appends the ID to the label.
|
|
4
|
+
*
|
|
5
|
+
* @param label - Base label for the DevTools element
|
|
6
|
+
* @param routerId - Router instance ID (string from createUniqueIdSequence)
|
|
7
|
+
* @returns Label with ID appended if routerId > '1'
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* getDevtoolsLabel('Routes', '1') // 'Routes'
|
|
11
|
+
* getDevtoolsLabel('Routes', '2') // 'Routes 2'
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDevtoolsLabel(label: string, routerId: string): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { setupDevtoolsPlugin } from '@vue/devtools-api';
|
|
2
|
+
type ExtractAPIFromCallback = Parameters<Parameters<typeof setupDevtoolsPlugin>[1]>[0];
|
|
3
|
+
type ExtractInspectorTreeHandler = Parameters<ExtractAPIFromCallback['on']['getInspectorTree']>[0];
|
|
4
|
+
type ExtractInspectorStateHandler = Parameters<ExtractAPIFromCallback['on']['getInspectorState']>[0];
|
|
5
|
+
type ExtractInspectorStatePayload = Parameters<ExtractInspectorStateHandler>[0];
|
|
6
|
+
type InspectorTreePayload = Parameters<ExtractInspectorTreeHandler>[0];
|
|
7
|
+
type CustomInspectorNode = InspectorTreePayload['rootNodes'][number];
|
|
8
|
+
type InspectorNodeTag = NonNullable<CustomInspectorNode['tags']>[number];
|
|
9
|
+
type CustomInspectorState = ExtractInspectorStatePayload['state'];
|
|
10
|
+
export type { CustomInspectorNode, InspectorTreePayload, InspectorNodeTag, CustomInspectorState };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An error thrown when a route does not support redirects.
|
|
3
|
+
* @group Errors
|
|
4
|
+
*/
|
|
5
|
+
export declare class InvalidRouteRedirectError extends Error {
|
|
6
|
+
/**
|
|
7
|
+
* Constructs a new InvalidRouteRedirectError instance with a message indicating the problematic route redirect.
|
|
8
|
+
* @param routeName - The name of the route that does not support redirects.
|
|
9
|
+
*/
|
|
10
|
+
constructor(routeName: string);
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An error thrown when duplicate parameters are detected in a route.
|
|
3
|
+
* Param names must be unique. This includes params defined in a path
|
|
4
|
+
* parent and params defined in the query.
|
|
5
|
+
* @group Errors
|
|
6
|
+
*/
|
|
7
|
+
export declare class MultipleRouteRedirectsError extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* Constructs a new MultipleRouteRedirectsError instance with a message indicating the problematic route redirect.
|
|
10
|
+
* @param routeName - The name of the route that has multiple redirects.
|
|
11
|
+
*/
|
|
12
|
+
constructor(routeName: string);
|
|
13
|
+
}
|