Socket
Socket
Sign inDemoInstall

@tanstack/router

Package Overview
Dependencies
Maintainers
1
Versions
104
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tanstack/router - npm Package Compare versions

Comparing version 0.0.1-beta.75 to 0.0.1-beta.76

1

build/cjs/routeMatch.js

@@ -22,3 +22,2 @@ /**

abortController = new AbortController();
onLoaderDataListeners = new Set();
constructor(router, route, opts) {

@@ -25,0 +24,0 @@ Object.assign(this, {

@@ -1343,3 +1343,2 @@ /**

abortController = new AbortController();
onLoaderDataListeners = new Set();
constructor(router, route, opts) {

@@ -1346,0 +1345,0 @@ Object.assign(this, {

238

build/stats-react.json

@@ -14,7 +14,7 @@ {

"name": "tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/esm/tiny-invariant.js",
"uid": "37ac-32"
"uid": "f796-32"
},
{
"name": "tiny-warning@1.0.3/node_modules/tiny-warning/dist/tiny-warning.esm.js",
"uid": "37ac-34"
"uid": "f796-34"
}

@@ -30,35 +30,35 @@ ]

{
"uid": "37ac-36",
"uid": "f796-36",
"name": "history.ts"
},
{
"uid": "37ac-38",
"uid": "f796-38",
"name": "utils.ts"
},
{
"uid": "37ac-40",
"uid": "f796-40",
"name": "path.ts"
},
{
"uid": "37ac-42",
"uid": "f796-42",
"name": "qss.ts"
},
{
"uid": "37ac-44",
"uid": "f796-44",
"name": "route.ts"
},
{
"uid": "37ac-48",
"uid": "f796-48",
"name": "searchParams.ts"
},
{
"uid": "37ac-50",
"uid": "f796-50",
"name": "router.ts"
},
{
"uid": "37ac-52",
"uid": "f796-52",
"name": "routeMatch.ts"
},
{
"uid": "37ac-54",
"uid": "f796-54",
"name": "index.ts"

@@ -70,3 +70,3 @@ }

"name": "store/build/esm/index.js",
"uid": "37ac-46"
"uid": "f796-46"
}

@@ -81,80 +81,80 @@ ]

"nodeParts": {
"37ac-32": {
"f796-32": {
"renderedLength": 199,
"gzipLength": 134,
"brotliLength": 0,
"mainUid": "37ac-31"
"mainUid": "f796-31"
},
"37ac-34": {
"f796-34": {
"renderedLength": 48,
"gzipLength": 65,
"brotliLength": 0,
"mainUid": "37ac-33"
"mainUid": "f796-33"
},
"37ac-36": {
"f796-36": {
"renderedLength": 4365,
"gzipLength": 1105,
"brotliLength": 0,
"mainUid": "37ac-35"
"mainUid": "f796-35"
},
"37ac-38": {
"f796-38": {
"renderedLength": 2821,
"gzipLength": 990,
"brotliLength": 0,
"mainUid": "37ac-37"
"mainUid": "f796-37"
},
"37ac-40": {
"f796-40": {
"renderedLength": 5705,
"gzipLength": 1352,
"brotliLength": 0,
"mainUid": "37ac-39"
"mainUid": "f796-39"
},
"37ac-42": {
"f796-42": {
"renderedLength": 1395,
"gzipLength": 558,
"brotliLength": 0,
"mainUid": "37ac-41"
"mainUid": "f796-41"
},
"37ac-44": {
"f796-44": {
"renderedLength": 2963,
"gzipLength": 847,
"brotliLength": 0,
"mainUid": "37ac-43"
"mainUid": "f796-43"
},
"37ac-46": {
"f796-46": {
"renderedLength": 1384,
"gzipLength": 502,
"brotliLength": 0,
"mainUid": "37ac-45"
"mainUid": "f796-45"
},
"37ac-48": {
"f796-48": {
"renderedLength": 1387,
"gzipLength": 483,
"brotliLength": 0,
"mainUid": "37ac-47"
"mainUid": "f796-47"
},
"37ac-50": {
"f796-50": {
"renderedLength": 24120,
"gzipLength": 5498,
"brotliLength": 0,
"mainUid": "37ac-49"
"mainUid": "f796-49"
},
"37ac-52": {
"renderedLength": 6884,
"gzipLength": 1720,
"f796-52": {
"renderedLength": 6843,
"gzipLength": 1704,
"brotliLength": 0,
"mainUid": "37ac-51"
"mainUid": "f796-51"
},
"37ac-54": {
"f796-54": {
"renderedLength": 0,
"gzipLength": 0,
"brotliLength": 0,
"mainUid": "37ac-53"
"mainUid": "f796-53"
}
},
"nodeMetas": {
"37ac-31": {
"f796-31": {
"id": "/node_modules/.pnpm/tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/esm/tiny-invariant.js",
"moduleParts": {
"index.production.js": "37ac-32"
"index.production.js": "f796-32"
},

@@ -164,16 +164,16 @@ "imported": [],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-43"
"uid": "f796-43"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-33": {
"f796-33": {
"id": "/node_modules/.pnpm/tiny-warning@1.0.3/node_modules/tiny-warning/dist/tiny-warning.esm.js",
"moduleParts": {
"index.production.js": "37ac-34"
"index.production.js": "f796-34"
},

@@ -183,10 +183,10 @@ "imported": [],

{
"uid": "37ac-53"
"uid": "f796-53"
}
]
},
"37ac-35": {
"f796-35": {
"id": "/packages/router/src/history.ts",
"moduleParts": {
"index.production.js": "37ac-36"
"index.production.js": "f796-36"
},

@@ -196,13 +196,13 @@ "imported": [],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-37": {
"f796-37": {
"id": "/packages/router/src/utils.ts",
"moduleParts": {
"index.production.js": "37ac-38"
"index.production.js": "f796-38"
},

@@ -212,23 +212,23 @@ "imported": [],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-39"
"uid": "f796-39"
},
{
"uid": "37ac-51"
"uid": "f796-51"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-39": {
"f796-39": {
"id": "/packages/router/src/path.ts",
"moduleParts": {
"index.production.js": "37ac-40"
"index.production.js": "f796-40"
},
"imported": [
{
"uid": "37ac-37"
"uid": "f796-37"
}

@@ -238,16 +238,16 @@ ],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-43"
"uid": "f796-43"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-41": {
"f796-41": {
"id": "/packages/router/src/qss.ts",
"moduleParts": {
"index.production.js": "37ac-42"
"index.production.js": "f796-42"
},

@@ -257,20 +257,20 @@ "imported": [],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-47"
"uid": "f796-47"
}
]
},
"37ac-43": {
"f796-43": {
"id": "/packages/router/src/route.ts",
"moduleParts": {
"index.production.js": "37ac-44"
"index.production.js": "f796-44"
},
"imported": [
{
"uid": "37ac-31"
"uid": "f796-31"
},
{
"uid": "37ac-39"
"uid": "f796-39"
}

@@ -280,10 +280,10 @@ ],

{
"uid": "37ac-53"
"uid": "f796-53"
}
]
},
"37ac-45": {
"f796-45": {
"id": "/packages/store/build/esm/index.js",
"moduleParts": {
"index.production.js": "37ac-46"
"index.production.js": "f796-46"
},

@@ -293,17 +293,17 @@ "imported": [],

{
"uid": "37ac-51"
"uid": "f796-51"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-47": {
"f796-47": {
"id": "/packages/router/src/searchParams.ts",
"moduleParts": {
"index.production.js": "37ac-48"
"index.production.js": "f796-48"
},
"imported": [
{
"uid": "37ac-41"
"uid": "f796-41"
}

@@ -313,35 +313,35 @@ ],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-49": {
"f796-49": {
"id": "/packages/router/src/router.ts",
"moduleParts": {
"index.production.js": "37ac-50"
"index.production.js": "f796-50"
},
"imported": [
{
"uid": "37ac-45"
"uid": "f796-45"
},
{
"uid": "37ac-31"
"uid": "f796-31"
},
{
"uid": "37ac-39"
"uid": "f796-39"
},
{
"uid": "37ac-51"
"uid": "f796-51"
},
{
"uid": "37ac-47"
"uid": "f796-47"
},
{
"uid": "37ac-37"
"uid": "f796-37"
},
{
"uid": "37ac-35"
"uid": "f796-35"
}

@@ -351,23 +351,23 @@ ],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-51"
"uid": "f796-51"
}
]
},
"37ac-51": {
"f796-51": {
"id": "/packages/router/src/routeMatch.ts",
"moduleParts": {
"index.production.js": "37ac-52"
"index.production.js": "f796-52"
},
"imported": [
{
"uid": "37ac-45"
"uid": "f796-45"
},
{
"uid": "37ac-49"
"uid": "f796-49"
},
{
"uid": "37ac-37"
"uid": "f796-37"
}

@@ -377,53 +377,53 @@ ],

{
"uid": "37ac-53"
"uid": "f796-53"
},
{
"uid": "37ac-49"
"uid": "f796-49"
}
]
},
"37ac-53": {
"f796-53": {
"id": "/packages/router/src/index.ts",
"moduleParts": {
"index.production.js": "37ac-54"
"index.production.js": "f796-54"
},
"imported": [
{
"uid": "37ac-31"
"uid": "f796-31"
},
{
"uid": "37ac-33"
"uid": "f796-33"
},
{
"uid": "37ac-35"
"uid": "f796-35"
},
{
"uid": "37ac-55"
"uid": "f796-55"
},
{
"uid": "37ac-56"
"uid": "f796-56"
},
{
"uid": "37ac-39"
"uid": "f796-39"
},
{
"uid": "37ac-41"
"uid": "f796-41"
},
{
"uid": "37ac-43"
"uid": "f796-43"
},
{
"uid": "37ac-57"
"uid": "f796-57"
},
{
"uid": "37ac-51"
"uid": "f796-51"
},
{
"uid": "37ac-49"
"uid": "f796-49"
},
{
"uid": "37ac-47"
"uid": "f796-47"
},
{
"uid": "37ac-37"
"uid": "f796-37"
}

@@ -434,3 +434,3 @@ ],

},
"37ac-55": {
"f796-55": {
"id": "/packages/router/src/frameworks.ts",

@@ -441,7 +441,7 @@ "moduleParts": {},

{
"uid": "37ac-53"
"uid": "f796-53"
}
]
},
"37ac-56": {
"f796-56": {
"id": "/packages/router/src/link.ts",

@@ -452,7 +452,7 @@ "moduleParts": {},

{
"uid": "37ac-53"
"uid": "f796-53"
}
]
},
"37ac-57": {
"f796-57": {
"id": "/packages/router/src/routeInfo.ts",

@@ -463,3 +463,3 @@ "moduleParts": {},

{
"uid": "37ac-53"
"uid": "f796-53"
}

@@ -466,0 +466,0 @@ ]

@@ -65,2 +65,11 @@ /**

type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => any ? I : never;
type Compute<T> = {
[K in keyof T]: T[K];
} | never;
type AllKeys<T> = T extends any ? keyof T : never;
type MergeUnion<T, Keys extends keyof T = keyof T> = Compute<{
[K in Keys]: T[Keys];
} & {
[K in AllKeys<T>]?: T extends any ? K extends keyof T ? T[K] : never : never;
}>;
type Values<O> = O[ValueKeys<O>];

@@ -290,4 +299,4 @@ type ValueKeys<O> = Extract<keyof O, PropertyKey>;

params: TRoute['__types']['allParams'];
routeContext: TRoute['__types']['routeContext'];
context: TRoute['__types']['context'];
routeContext?: TRoute['__types']['routeContext'];
context?: TRoute['__types']['context'];
component?: GetFrameworkGeneric<'Component'>;

@@ -297,3 +306,2 @@ errorComponent?: GetFrameworkGeneric<'ErrorComponent'>;

abortController: AbortController;
onLoaderDataListeners: Set<() => void>;
parentMatch?: RouteMatch;

@@ -343,3 +351,18 @@ pendingInfo?: PendingRouteMatchInfo;

};
type RouteOptions<TParentRoute extends AnyRoute = AnyRoute, TCustomId extends string = string, TPath extends string = string, TParentSearchSchema extends {} = {}, TSearchSchema extends AnySearchSchema = {}, TFullSearchSchema extends AnySearchSchema = TSearchSchema, TParentParams extends AnyPathParams = {}, TParams extends Record<ParsePathParams<TPath>, any> = Record<ParsePathParams<TPath>, string>, TAllParams = TParams, TParentContext extends AnyContext = AnyContext, TAllParentContext extends AnyContext = AnyContext, TRouteContext extends RouteContext = AnyContext, TContext extends AnyContext = TRouteContext> = RouteOptionsBase<TCustomId, TPath> & FrameworkRouteOptions & {
type GetContextFn<TParentRoute, TAllParams, TFullSearchSchema, TParentContext, TAllParentContext, TRouteContext> = (opts: {
params: TAllParams;
search: TFullSearchSchema;
} & (TParentRoute extends undefined ? {
context?: TAllParentContext;
parentContext?: TParentContext;
} : {
context: TAllParentContext;
parentContext: TParentContext;
})) => TRouteContext;
type ContextOptions<TParentRoute, TAllParams, TFullSearchSchema, TParentContext, TAllParentContext, TRouteContext> = keyof PickRequired<RouteContext> extends never ? {
getContext?: GetContextFn<TParentRoute, TAllParams, TFullSearchSchema, TParentContext, TAllParentContext, TRouteContext>;
} : {
getContext: GetContextFn<TParentRoute, TAllParams, TFullSearchSchema, TParentContext, TAllParentContext, TRouteContext>;
};
type RouteOptions<TParentRoute extends AnyRoute = AnyRoute, TCustomId extends string = string, TPath extends string = string, TParentSearchSchema extends {} = {}, TSearchSchema extends AnySearchSchema = {}, TFullSearchSchema extends AnySearchSchema = TSearchSchema, TParentParams extends AnyPathParams = {}, TParams extends Record<ParsePathParams<TPath>, any> = Record<ParsePathParams<TPath>, string>, TAllParams = TParams, TParentContext extends AnyContext = AnyContext, TAllParentContext extends AnyContext = AnyContext, TRouteContext extends RouteContext = RouteContext, TContext extends AnyContext = TRouteContext> = RouteOptionsBase<TCustomId, TPath> & FrameworkRouteOptions & {
getParentRoute: () => TParentRoute;

@@ -359,3 +382,3 @@ caseSensitive?: boolean;

onValidateSearchError?: (err: any) => void;
onLoad?: OnLoadFn<TSearchSchema, TFullSearchSchema, TAllParams, TRouteContext, TContext>;
onLoad?: OnLoadFn<TSearchSchema, TFullSearchSchema, TAllParams, NoInfer<TRouteContext>, TContext>;
onLoadError?: (err: any) => void;

@@ -374,13 +397,3 @@ onError?: (err: any) => void;

}) => void;
getContext?: (opts: {
params: TAllParams;
search: TFullSearchSchema;
} & (TParentRoute extends undefined ? {
context?: TAllParentContext;
parentContext?: TParentContext;
} : {
context: TAllParentContext;
parentContext: TParentContext;
})) => TRouteContext;
} & MetaOptions & ({
} & MetaOptions & ContextOptions<TParentRoute, TAllParams, TFullSearchSchema, TParentContext, TAllParentContext, TRouteContext> & ({
parseParams?: (rawParams: IsAny<TPath, any, Record<ParsePathParams<TPath>, string>>) => TParams extends Record<string, any> ? TParams : 'parseParams must return a Record<string, any>';

@@ -433,3 +446,3 @@ stringifyParams?: (params: NoInfer<TParams>) => Record<ParsePathParams<TPath>, string>;

type MergeFromParent<T, U> = IsAny<T, U, T & U>;
declare class Route<TParentRoute extends AnyRoute = AnyRoute, TPath extends string = string, TFullPath extends ResolveFullPath<TParentRoute, TPath> = ResolveFullPath<TParentRoute, TPath>, TCustomId extends string = string, TId extends ResolveId<TParentRoute, TCustomId, TPath> = ResolveId<TParentRoute, TCustomId, TPath>, TSearchSchema extends AnySearchSchema = {}, TFullSearchSchema extends AnySearchSchema = ResolveFullSearchSchema<TParentRoute, TSearchSchema>, TParams extends Record<ParsePathParams<TPath>, any> = Record<ParsePathParams<TPath>, string>, TAllParams extends MergeFromParent<TParentRoute['__types']['allParams'], TParams> = MergeFromParent<TParentRoute['__types']['allParams'], TParams>, TParentContext extends TParentRoute['__types']['routeContext'] = TParentRoute['__types']['routeContext'], TAllParentContext extends TParentRoute['__types']['context'] = TParentRoute['__types']['context'], TRouteContext extends AnyContext = AnyContext, TContext extends MergeFromParent<TParentRoute['__types']['context'], TRouteContext> = MergeFromParent<TParentRoute['__types']['context'], TRouteContext>, TRouterContext extends AnyContext = AnyContext, TChildren extends unknown = unknown, TRoutesInfo extends DefaultRoutesInfo = DefaultRoutesInfo> {
declare class Route<TParentRoute extends AnyRoute = AnyRoute, TPath extends string = string, TFullPath extends ResolveFullPath<TParentRoute, TPath> = ResolveFullPath<TParentRoute, TPath>, TCustomId extends string = string, TId extends ResolveId<TParentRoute, TCustomId, TPath> = ResolveId<TParentRoute, TCustomId, TPath>, TSearchSchema extends AnySearchSchema = {}, TFullSearchSchema extends AnySearchSchema = ResolveFullSearchSchema<TParentRoute, TSearchSchema>, TParams extends Record<ParsePathParams<TPath>, any> = Record<ParsePathParams<TPath>, string>, TAllParams extends MergeFromParent<TParentRoute['__types']['allParams'], TParams> = MergeFromParent<TParentRoute['__types']['allParams'], TParams>, TParentContext extends TParentRoute['__types']['routeContext'] = TParentRoute['__types']['routeContext'], TAllParentContext extends TParentRoute['__types']['context'] = TParentRoute['__types']['context'], TRouteContext extends RouteContext = RouteContext, TContext extends MergeFromParent<TParentRoute['__types']['context'], TRouteContext> = MergeFromParent<TParentRoute['__types']['context'], TRouteContext>, TRouterContext extends AnyContext = AnyContext, TChildren extends unknown = unknown, TRoutesInfo extends DefaultRoutesInfo = DefaultRoutesInfo> {
__types: {

@@ -471,5 +484,5 @@ parentRoute: TParentRoute;

type AnyRootRoute = RootRoute<any, any, any>;
declare class RootRoute<TSearchSchema extends AnySearchSchema = {}, TContext extends AnyContext = AnyContext, TRouterContext extends AnyContext = AnyContext> extends Route<any, '/', '/', string, RootRouteId, TSearchSchema, TSearchSchema, {}, {}, TRouterContext, TRouterContext, TContext, MergeFromParent<TRouterContext, TContext>, TRouterContext> {
declare class RootRoute<TSearchSchema extends AnySearchSchema = {}, TContext extends RouteContext = RouteContext, TRouterContext extends RouterContext = RouterContext> extends Route<any, '/', '/', string, RootRouteId, TSearchSchema, TSearchSchema, {}, {}, TRouterContext, TRouterContext, TContext, MergeFromParent<TRouterContext, TContext>, TRouterContext> {
constructor(options?: Omit<RouteOptions<AnyRoute, RootRouteId, '', {}, TSearchSchema, NoInfer<TSearchSchema>, {}, TRouterContext, TRouterContext, TContext, NoInfer<TContext>>, 'path' | 'id' | 'getParentRoute' | 'caseSensitive' | 'parseParams' | 'stringifyParams'>);
static withRouterContext: <TRouterContext_1 extends AnyContext>() => <TSearchSchema_1 extends AnySearchSchema = {}, TContext_1 extends AnyContext = AnyContext>(options?: Omit<RouteOptions<AnyRoute, "__root__", "", {}, TSearchSchema_1, NoInfer<TSearchSchema_1>, {}, TRouterContext_1, TRouterContext_1, TContext_1, TRouterContext_1 & TContext_1, AnyContext, AnyContext>, "caseSensitive" | "id" | "path" | "getParentRoute"> | undefined) => RootRoute<TSearchSchema_1, TContext_1, TRouterContext_1>;
static withRouterContext: <TRouterContext_1 extends RouterContext>() => <TSearchSchema_1 extends AnySearchSchema = {}, TContext_1 extends RouterContext = RouterContext>(options?: Omit<RouteOptions<AnyRoute, "__root__", "", {}, TSearchSchema_1, NoInfer<TSearchSchema_1>, {}, TRouterContext_1, TRouterContext_1, TContext_1, TRouterContext_1 & TContext_1, RouteContext, RouteContext>, "caseSensitive" | "id" | "path" | "getParentRoute"> | undefined) => RootRoute<TSearchSchema_1, TContext_1, TRouterContext_1>;
}

@@ -527,19 +540,19 @@ type ResolveFullPath<TParentRoute extends AnyRoute, TPath extends string, TPrefixed extends RoutePrefix<TParentRoute['fullPath'], TPath> = RoutePrefix<TParentRoute['fullPath'], TPath>> = TPrefixed extends RootRouteId ? '/' : TrimPathRight<`${TPrefixed}`>;

// TId,
UnionToIntersection<TRouteUnion['__types']['searchSchema']> & {}, // TSearchSchema,
MergeUnion<TRouteUnion['__types']['searchSchema']> & {}, // TSearchSchema,
// TSearchSchema,
UnionToIntersection<TRouteUnion['__types']['fullSearchSchema']> & {}, // TFullSearchSchema,
UnionToIntersection<TRouteUnion['__types']['params']>, // TParams,
UnionToIntersection<TRouteUnion['__types']['allParams']>, // TAllParams,
UnionToIntersection<TRouteUnion['__types']['parentContext']>, // TParentContext,
UnionToIntersection<TRouteUnion['__types']['allParentContext']>, // TAllParentContext,
MergeUnion<TRouteUnion['__types']['fullSearchSchema']> & {}, // TFullSearchSchema,
MergeUnion<TRouteUnion['__types']['params']>, // TParams,
MergeUnion<TRouteUnion['__types']['allParams']>, // TAllParams,
MergeUnion<TRouteUnion['__types']['parentContext']>, // TParentContext,
MergeUnion<TRouteUnion['__types']['allParentContext']>, // TAllParentContext,
// TAllParentContext,
UnionToIntersection<TRouteUnion['__types']['routerContext']> & {}, // TContext,
MergeUnion<TRouteUnion['__types']['routeContext']> & {}, // TRouteContext,
// TRouteContext,
MergeUnion<TRouteUnion['__types']['context']> & {}, // TContext,
// TContext,
UnionToIntersection<TRouteUnion['__types']['context']> & {}, // TAllContext,
// TAllContext,
UnionToIntersection<TRouteUnion['__types']['routerContext']> & {}, // TRouterContext,
MergeUnion<TRouteUnion['__types']['routerContext']> & {}, // TRouterContext,
TRouteUnion['__types']['children'], // TChildren,
TRouteUnion['__types']['routesInfo']>;
fullSearchSchema: Partial<UnionToIntersection<TRouteUnion['__types']['fullSearchSchema']>>;
allParams: Partial<UnionToIntersection<TRouteUnion['__types']['allParams']>>;
fullSearchSchema: Partial<MergeUnion<TRouteUnion['__types']['fullSearchSchema']>>;
allParams: Partial<MergeUnion<TRouteUnion['__types']['allParams']>>;
}

@@ -665,2 +678,2 @@ type ParseRoute<TRouteTree> = TRouteTree extends AnyRoute ? TRouteTree | ParseRouteChildren<TRouteTree> : never;

export { ActiveOptions, AnyContext, AnyLoaderData, AnyPathParams, AnyRedirect, AnyRootRoute, AnyRoute, AnyRouteMatch, AnyRouter, AnyRoutesInfo, AnySearchSchema, BuildNextOptions, CheckId, CheckIdError, CheckPath, CheckPathError, CheckRelativePath, DeepAwaited, DefaultRoutesInfo, DefinedPathParamWarning, DehydratedRouter, DehydratedRouterState, Expand, FilterRoutesFn, FrameworkGenerics, FrameworkRouteOptions, FromLocation, GetFrameworkGeneric, InferFullSearchSchema, IsAny, IsAnyBoolean, IsKnown, LinkInfo, LinkOptions, ListenerFn, LoaderContext, LoaderState, LocationState, MatchCache, MatchCacheEntry, MatchLocation, MatchRouteOptions, MetaOptions, NavigateOptions, NoInfer, OnLoadFn, ParentParams, ParsePathParams, ParseRoute, ParseRouteChild, ParseRouteChildren, ParsedLocation, ParsedPath, PathParamMask, PathParamOptions, PendingRouteMatchInfo, PickAsPartial, PickAsRequired, PickExclude, PickExtra, PickExtract, PickRequired, PickUnsafe, Redirect, Register, RegisteredRouter, RegisteredRoutesInfo, RelativeToPathAutoComplete, ResolveFullSearchSchema, ResolveRelativePath, RootRoute, RootRouteId, Route, RouteById, RouteByPath, RouteContext, RouteMatch, RouteMatchStore, RouteMeta, RouteOptions, RouteOptionsBase, RouteOptionsBaseIntersection, Router, RouterConstructorOptions, RouterContext, RouterHistory, RouterLocation, RouterOptions, RouterStore, RoutesById, RoutesInfo, RoutesInfoInner, SearchFilter, SearchParamOptions, SearchParser, SearchSchemaValidator, SearchSchemaValidatorFn, SearchSchemaValidatorObj, SearchSerializer, Segment, Split, Timeout, ToIdOption, ToOptions, ToPathOption, UnionToIntersection, UnloaderFn, Updater, ValidFromPath, ValueKeys, Values, cleanPath, createBrowserHistory, createHashHistory, createMemoryHistory, decode, defaultFetchServerDataFn, defaultParseSearch, defaultStringifySearch, encode, functionalUpdate, interpolatePath, isPlainObject, isRedirect, joinPaths, last, matchByPath, matchPathname, parsePathname, parseSearchWith, partialDeepEqual, pick, redirect, replaceEqualDeep, resolvePath, rootRouteId, stringifySearchWith, trimPath, trimPathLeft, trimPathRight };
export { ActiveOptions, AnyContext, AnyLoaderData, AnyPathParams, AnyRedirect, AnyRootRoute, AnyRoute, AnyRouteMatch, AnyRouter, AnyRoutesInfo, AnySearchSchema, BuildNextOptions, CheckId, CheckIdError, CheckPath, CheckPathError, CheckRelativePath, ContextOptions, DeepAwaited, DefaultRoutesInfo, DefinedPathParamWarning, DehydratedRouter, DehydratedRouterState, Expand, FilterRoutesFn, FrameworkGenerics, FrameworkRouteOptions, FromLocation, GetFrameworkGeneric, InferFullSearchSchema, IsAny, IsAnyBoolean, IsKnown, LinkInfo, LinkOptions, ListenerFn, LoaderContext, LoaderState, LocationState, MatchCache, MatchCacheEntry, MatchLocation, MatchRouteOptions, MergeUnion, MetaOptions, NavigateOptions, NoInfer, OnLoadFn, ParentParams, ParsePathParams, ParseRoute, ParseRouteChild, ParseRouteChildren, ParsedLocation, ParsedPath, PathParamMask, PathParamOptions, PendingRouteMatchInfo, PickAsPartial, PickAsRequired, PickExclude, PickExtra, PickExtract, PickRequired, PickUnsafe, Redirect, Register, RegisteredRouter, RegisteredRoutesInfo, RelativeToPathAutoComplete, ResolveFullSearchSchema, ResolveRelativePath, RootRoute, RootRouteId, Route, RouteById, RouteByPath, RouteContext, RouteMatch, RouteMatchStore, RouteMeta, RouteOptions, RouteOptionsBase, RouteOptionsBaseIntersection, Router, RouterConstructorOptions, RouterContext, RouterHistory, RouterLocation, RouterOptions, RouterStore, RoutesById, RoutesInfo, RoutesInfoInner, SearchFilter, SearchParamOptions, SearchParser, SearchSchemaValidator, SearchSchemaValidatorFn, SearchSchemaValidatorObj, SearchSerializer, Segment, Split, Timeout, ToIdOption, ToOptions, ToPathOption, UnionToIntersection, UnloaderFn, Updater, ValidFromPath, ValueKeys, Values, cleanPath, createBrowserHistory, createHashHistory, createMemoryHistory, decode, defaultFetchServerDataFn, defaultParseSearch, defaultStringifySearch, encode, functionalUpdate, interpolatePath, isPlainObject, isRedirect, joinPaths, last, matchByPath, matchPathname, parsePathname, parseSearchWith, partialDeepEqual, pick, redirect, replaceEqualDeep, resolvePath, rootRouteId, stringifySearchWith, trimPath, trimPathLeft, trimPathRight };

@@ -1421,3 +1421,2 @@ /**

abortController = new AbortController();
onLoaderDataListeners = new Set();
constructor(router, route, opts) {

@@ -1424,0 +1423,0 @@ Object.assign(this, {

@@ -11,3 +11,3 @@ /**

*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).RouterCore={})}(this,(function(t){"use strict";function e(t,e){if(!t)throw new Error("Invariant failed")}const a="popstate";function s(t){let e=t.getLocation(),a=()=>{},s=new Set;const r=()=>{e=t.getLocation(),s.forEach((t=>t()))};return{get location(){return e},listen:e=>(0===s.size&&(a=t.listener(r)),s.add(e),()=>{s.delete(e),0===s.size&&a()}),push:(e,a)=>{t.pushState(e,a),r()},replace:(e,a)=>{t.replaceState(e,a),r()},go:e=>{t.go(e),r()},back:()=>{t.back(),r()},forward:()=>{t.forward(),r()},createHref:e=>t.createHref(e)}}function r(t){const e=t?.getHref??(()=>`${window.location.pathname}${window.location.hash}${window.location.search}`),r=t?.createHref??(t=>t);return s({getLocation:()=>n(e(),history.state),listener:t=>(window.addEventListener(a,t),()=>{window.removeEventListener(a,t)}),pushState:(t,e)=>{window.history.pushState({...e,key:i()},"",r(t))},replaceState:(t,e)=>{window.history.replaceState({...e,key:i()},"",r(t))},back:()=>window.history.back(),forward:()=>window.history.forward(),go:t=>window.history.go(t),createHref:t=>r(t)})}function o(t={initialEntries:["/"]}){const e=t.initialEntries;let a=t.initialIndex??e.length-1,r={};return s({getLocation:()=>n(e[a],r),listener:()=>()=>{},pushState:(t,s)=>{r={...s,key:i()},e.push(t),a++},replaceState:(t,s)=>{r={...s,key:i()},e[a]=t},back:()=>{a--},forward:()=>{a=Math.min(a+1,e.length-1)},go:t=>window.history.go(t),createHref:t=>t})}function n(t,e){let a=t.indexOf("#"),s=t.indexOf("?");return{href:t,pathname:t.substring(0,a>0?s>0?Math.min(a,s):a:s>0?s:t.length),hash:a>-1?t.substring(a,s):"",search:s>-1?t.substring(s):"",state:e}}function i(){return(Math.random()+1).toString(36).substring(7)}function h(t){return t[t.length-1]}function c(t,e){return"function"==typeof t?t(e):t}function u(t,e){return e.reduce(((e,a)=>(e[a]=t[a],e)),{})}function l(t,e){if(t===e)return t;const a=e,s=Array.isArray(t)&&Array.isArray(a);if(s||p(t)&&p(a)){const e=s?t.length:Object.keys(t).length,r=s?a:Object.keys(a),o=r.length,n=s?[]:{};let i=0;for(let e=0;e<o;e++){const o=s?e:r[e];n[o]=l(t[o],a[o]),n[o]===t[o]&&i++}return e===o&&i===e?t:n}return a}function p(t){if(!d(t))return!1;const e=t.constructor;if(void 0===e)return!0;const a=e.prototype;return!!d(a)&&!!a.hasOwnProperty("isPrototypeOf")}function d(t){return"[object Object]"===Object.prototype.toString.call(t)}function f(t,e){return t===e||typeof t==typeof e&&(p(t)&&p(e)?!Object.keys(e).some((a=>!f(t[a],e[a]))):!(!Array.isArray(t)||!Array.isArray(e))&&(t.length===e.length&&t.every(((t,a)=>f(t,e[a])))))}function m(t){return y(t.filter(Boolean).join("/"))}function y(t){return t.replace(/\/{2,}/g,"/")}function g(t){return"/"===t?t:t.replace(/^\/{1,}/,"")}function v(t){return"/"===t?t:t.replace(/\/{1,}$/,"")}function w(t){return v(g(t))}function _(t,e,a){e=e.replace(new RegExp(`^${t}`),"/"),a=a.replace(new RegExp(`^${t}`),"/");let s=S(e);const r=S(a);r.forEach(((t,e)=>{if("/"===t.value)e?e===r.length-1&&s.push(t):s=[t];else if(".."===t.value)s.length>1&&"/"===h(s)?.value&&s.pop(),s.pop();else{if("."===t.value)return;s.push(t)}}));return y(m([t,...s.map((t=>t.value))]))}function S(t){if(!t)return[];const e=[];if("/"===(t=y(t)).slice(0,1)&&(t=t.substring(1),e.push({type:"pathname",value:"/"})),!t)return e;const a=t.split("/").filter(Boolean);return e.push(...a.map((t=>"$"===t||"*"===t?{type:"wildcard",value:t}:"$"===t.charAt(0)?{type:"param",value:t}:{type:"pathname",value:t}))),"/"===t.slice(-1)&&(t=t.substring(1),e.push({type:"pathname",value:"/"})),e}function b(t,e,a){return m(S(t).map((t=>["$","*"].includes(t.value)&&!a?"":"param"===t.type?e[t.value.substring(1)]??"":t.value)))}function L(t,e,a){const s=P(t,e,a);if(!a.to||s)return s??{}}function P(t,e,a){if(!e.startsWith(t))return;const s=S(e="/"!=t?e.substring(t.length):e),r=S(`${a.to??"$"}`);"/"===h(s)?.value&&s.pop();const o={};return(()=>{for(let t=0;t<Math.max(s.length,r.length);t++){const e=s[t],n=r[t],i=t===r.length-1,h=t===s.length-1;if(n){if("wildcard"===n.type)return!!e?.value&&(o["*"]=m(s.slice(t).map((t=>t.value))),!0);if("pathname"===n.type){if("/"===n.value&&!e?.value)return!0;if(e)if(a.caseSensitive){if(n.value!==e.value)return!1}else if(n.value.toLowerCase()!==e.value.toLowerCase())return!1}if(!e)return!1;if("param"===n.type){if("/"===e?.value)return!1;"$"!==e.value.charAt(0)&&(o[n.value.substring(1)]=e.value)}}if(i&&!h)return!!a.fuzzy}return!0})()?o:void 0}function x(t,e){var a,s,r,o="";for(a in t)if(void 0!==(r=t[a]))if(Array.isArray(r))for(s=0;s<r.length;s++)o&&(o+="&"),o+=encodeURIComponent(a)+"="+encodeURIComponent(r[s]);else o&&(o+="&"),o+=encodeURIComponent(a)+"="+encodeURIComponent(r);return(e||"")+o}function R(t){if(!t)return"";var e=decodeURIComponent(t);return"false"!==e&&("true"===e||("0"===e.charAt(0)?e:0*+e==0?+e:e))}function E(t){for(var e,a,s={},r=t.split("&");e=r.shift();)void 0!==s[a=(e=e.split("=")).shift()]?s[a]=[].concat(s[a],R(e.shift())):s[a]=R(e.shift());return s}const M="__root__";class C{constructor(t){this.options=t||{},this.isRoot=!t?.getParentRoute}init=t=>{this.originalIndex=t.originalIndex,this.router=t.router;const a=this.options,s=!a?.path&&!a?.id,r=this.options?.getParentRoute?.();s?this.path=M:e(r);let o=s?M:a.path;o&&"/"!==o&&(o=w(o));const n=a?.id||o;let i=s?M:m([r.id===M?"":r.id,n]);o===M&&(o="/"),i!==M&&(i=m(["/",i]));const h=i===M?"/":v(m([r.fullPath,o]));this.path=o,this.id=i,this.fullPath=h};addChildren=t=>(this.children=t,this);generate=t=>{e(!1)}}class $ extends C{constructor(t){super(t)}static withRouterContext=()=>t=>new $(t)}
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).RouterCore={})}(this,(function(t){"use strict";function e(t,e){if(!t)throw new Error("Invariant failed")}const a="popstate";function s(t){let e=t.getLocation(),a=()=>{},s=new Set;const r=()=>{e=t.getLocation(),s.forEach((t=>t()))};return{get location(){return e},listen:e=>(0===s.size&&(a=t.listener(r)),s.add(e),()=>{s.delete(e),0===s.size&&a()}),push:(e,a)=>{t.pushState(e,a),r()},replace:(e,a)=>{t.replaceState(e,a),r()},go:e=>{t.go(e),r()},back:()=>{t.back(),r()},forward:()=>{t.forward(),r()},createHref:e=>t.createHref(e)}}function r(t){const e=t?.getHref??(()=>`${window.location.pathname}${window.location.hash}${window.location.search}`),r=t?.createHref??(t=>t);return s({getLocation:()=>i(e(),history.state),listener:t=>(window.addEventListener(a,t),()=>{window.removeEventListener(a,t)}),pushState:(t,e)=>{window.history.pushState({...e,key:n()},"",r(t))},replaceState:(t,e)=>{window.history.replaceState({...e,key:n()},"",r(t))},back:()=>window.history.back(),forward:()=>window.history.forward(),go:t=>window.history.go(t),createHref:t=>r(t)})}function o(t={initialEntries:["/"]}){const e=t.initialEntries;let a=t.initialIndex??e.length-1,r={};return s({getLocation:()=>i(e[a],r),listener:()=>()=>{},pushState:(t,s)=>{r={...s,key:n()},e.push(t),a++},replaceState:(t,s)=>{r={...s,key:n()},e[a]=t},back:()=>{a--},forward:()=>{a=Math.min(a+1,e.length-1)},go:t=>window.history.go(t),createHref:t=>t})}function i(t,e){let a=t.indexOf("#"),s=t.indexOf("?");return{href:t,pathname:t.substring(0,a>0?s>0?Math.min(a,s):a:s>0?s:t.length),hash:a>-1?t.substring(a,s):"",search:s>-1?t.substring(s):"",state:e}}function n(){return(Math.random()+1).toString(36).substring(7)}function h(t){return t[t.length-1]}function c(t,e){return"function"==typeof t?t(e):t}function u(t,e){return e.reduce(((e,a)=>(e[a]=t[a],e)),{})}function l(t,e){if(t===e)return t;const a=e,s=Array.isArray(t)&&Array.isArray(a);if(s||p(t)&&p(a)){const e=s?t.length:Object.keys(t).length,r=s?a:Object.keys(a),o=r.length,i=s?[]:{};let n=0;for(let e=0;e<o;e++){const o=s?e:r[e];i[o]=l(t[o],a[o]),i[o]===t[o]&&n++}return e===o&&n===e?t:i}return a}function p(t){if(!d(t))return!1;const e=t.constructor;if(void 0===e)return!0;const a=e.prototype;return!!d(a)&&!!a.hasOwnProperty("isPrototypeOf")}function d(t){return"[object Object]"===Object.prototype.toString.call(t)}function f(t,e){return t===e||typeof t==typeof e&&(p(t)&&p(e)?!Object.keys(e).some((a=>!f(t[a],e[a]))):!(!Array.isArray(t)||!Array.isArray(e))&&(t.length===e.length&&t.every(((t,a)=>f(t,e[a])))))}function m(t){return y(t.filter(Boolean).join("/"))}function y(t){return t.replace(/\/{2,}/g,"/")}function g(t){return"/"===t?t:t.replace(/^\/{1,}/,"")}function v(t){return"/"===t?t:t.replace(/\/{1,}$/,"")}function w(t){return v(g(t))}function _(t,e,a){e=e.replace(new RegExp(`^${t}`),"/"),a=a.replace(new RegExp(`^${t}`),"/");let s=b(e);const r=b(a);r.forEach(((t,e)=>{if("/"===t.value)e?e===r.length-1&&s.push(t):s=[t];else if(".."===t.value)s.length>1&&"/"===h(s)?.value&&s.pop(),s.pop();else{if("."===t.value)return;s.push(t)}}));return y(m([t,...s.map((t=>t.value))]))}function b(t){if(!t)return[];const e=[];if("/"===(t=y(t)).slice(0,1)&&(t=t.substring(1),e.push({type:"pathname",value:"/"})),!t)return e;const a=t.split("/").filter(Boolean);return e.push(...a.map((t=>"$"===t||"*"===t?{type:"wildcard",value:t}:"$"===t.charAt(0)?{type:"param",value:t}:{type:"pathname",value:t}))),"/"===t.slice(-1)&&(t=t.substring(1),e.push({type:"pathname",value:"/"})),e}function S(t,e,a){return m(b(t).map((t=>["$","*"].includes(t.value)&&!a?"":"param"===t.type?e[t.value.substring(1)]??"":t.value)))}function L(t,e,a){const s=P(t,e,a);if(!a.to||s)return s??{}}function P(t,e,a){if(!e.startsWith(t))return;const s=b(e="/"!=t?e.substring(t.length):e),r=b(`${a.to??"$"}`);"/"===h(s)?.value&&s.pop();const o={};return(()=>{for(let t=0;t<Math.max(s.length,r.length);t++){const e=s[t],i=r[t],n=t===r.length-1,h=t===s.length-1;if(i){if("wildcard"===i.type)return!!e?.value&&(o["*"]=m(s.slice(t).map((t=>t.value))),!0);if("pathname"===i.type){if("/"===i.value&&!e?.value)return!0;if(e)if(a.caseSensitive){if(i.value!==e.value)return!1}else if(i.value.toLowerCase()!==e.value.toLowerCase())return!1}if(!e)return!1;if("param"===i.type){if("/"===e?.value)return!1;"$"!==e.value.charAt(0)&&(o[i.value.substring(1)]=e.value)}}if(n&&!h)return!!a.fuzzy}return!0})()?o:void 0}function x(t,e){var a,s,r,o="";for(a in t)if(void 0!==(r=t[a]))if(Array.isArray(r))for(s=0;s<r.length;s++)o&&(o+="&"),o+=encodeURIComponent(a)+"="+encodeURIComponent(r[s]);else o&&(o+="&"),o+=encodeURIComponent(a)+"="+encodeURIComponent(r);return(e||"")+o}function R(t){if(!t)return"";var e=decodeURIComponent(t);return"false"!==e&&("true"===e||("0"===e.charAt(0)?e:0*+e==0?+e:e))}function E(t){for(var e,a,s={},r=t.split("&");e=r.shift();)void 0!==s[a=(e=e.split("=")).shift()]?s[a]=[].concat(s[a],R(e.shift())):s[a]=R(e.shift());return s}const M="__root__";class C{constructor(t){this.options=t||{},this.isRoot=!t?.getParentRoute}init=t=>{this.originalIndex=t.originalIndex,this.router=t.router;const a=this.options,s=!a?.path&&!a?.id,r=this.options?.getParentRoute?.();s?this.path=M:e(r);let o=s?M:a.path;o&&"/"!==o&&(o=w(o));const i=a?.id||o;let n=s?M:m([r.id===M?"":r.id,i]);o===M&&(o="/"),n!==M&&(n=m(["/",n]));const h=n===M?"/":v(m([r.fullPath,o]));this.path=o,this.id=n,this.fullPath=h};addChildren=t=>(this.children=t,this);generate=t=>{e(!1)}}class $ extends C{constructor(t){super(t)}static withRouterContext=()=>t=>new $(t)}
/**

@@ -22,3 +22,3 @@ * store

* @license MIT
*/class I{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{this.batching=!0,t(),this.batching=!1,this.#t()}}const A=T(JSON.parse),k=D(JSON.stringify);function T(t){return e=>{"?"===e.substring(0,1)&&(e=e.substring(1));let a=E(e);for(let e in a){const s=a[e];if("string"==typeof s)try{a[e]=t(s)}catch(t){}}return a}}function D(t){return e=>{(e={...e})&&Object.keys(e).forEach((a=>{const s=e[a];if(void 0===s||void 0===s)delete e[a];else if(s&&"object"==typeof s&&null!==s)try{e[a]=t(s)}catch(t){}}));const a=x(e).toString();return a?`?${a}`:""}}const H=async({router:t,routeMatch:e})=>{const a=t.buildNext({to:".",search:t=>({...t??{},__data:{matchId:e.id}})}),s=await fetch(a.href,{method:"GET",signal:e.abortController.signal});if(s.ok)return s.json();throw new Error("Failed to fetch match data")};const j="undefined"==typeof window||!window.document.createElement;function O(){return{status:"idle",latestLocation:null,currentLocation:null,currentMatches:[],lastUpdated:Date.now()}}function N(t){return!!t?.isRedirect}const U=["component","errorComponent","pendingComponent"];class B{abortController=new AbortController;onLoaderDataListeners=new Set;constructor(t,e,a){Object.assign(this,{route:e,router:t,id:a.id,pathname:a.pathname,params:a.params,__store:new I({updatedAt:0,routeSearch:{},search:{},status:"idle"},{onUpdate:t=>{this.state=t}})}),this.state=this.__store.state,U.map((async t=>{const e=this.route.options[t];"function"!=typeof this[t]&&(this[t]=e)})),"idle"!==this.state.status||this.#e()||this.__store.setState((t=>({...t,status:"success"})))}#e=()=>!(!this.route.options.onLoad&&!U.some((t=>this.route.options[t]?.preload)));__commit=()=>{const{routeSearch:t,search:e,context:a,routeContext:s}=this.#a({location:this.router.state.currentLocation});this.context=a,this.routeContext=s,this.__store.setState((a=>({...a,routeSearch:l(a.routeSearch,t),search:l(a.search,e)})))};cancel=()=>{this.abortController?.abort()};#s=t=>{const e=this.parentMatch?this.parentMatch.#s(t):{search:t.location.search,routeSearch:t.location.search};try{const t=("object"==typeof this.route.options.validateSearch?this.route.options.validateSearch.parse:this.route.options.validateSearch)?.(e.search)??{};return{routeSearch:t,search:{...e.search,...t}}}catch(t){if(N(t))throw t;this.route.options.onValidateSearchError?.(t);const e=new Error("Invalid search params found",{cause:t});throw e.code="INVALID_SEARCH_PARAMS",e}};#a=t=>{const{search:e,routeSearch:a}=this.#s(t),s=this.route.options.getContext?.({parentContext:this.parentMatch?.routeContext??{},context:this.parentMatch?.context??this.router?.options.context??{},params:this.params,search:e})||{};return{routeSearch:a,search:e,context:{...this.parentMatch?.context??this.router?.options.context,...s},routeContext:s}};__load=async t=>{let e;this.parentMatch=t.parentMatch;try{e=this.#a(t)}catch(t){return N(t)?void this.router.navigate(t):(this.route.options.onError?.(t),void this.__store.setState((e=>({...e,status:"error",error:t}))))}const{routeSearch:a,search:s,context:r,routeContext:o}=e;if("pending"!==this.state.status)return this.__loadPromise=Promise.resolve().then((async()=>{const e=""+Date.now()+Math.random();this.#r=e;const n=()=>e!==this.#r?this.__loadPromise:void 0;let i;"idle"===this.state.status&&this.__store.setState((t=>({...t,status:"pending"})));const h=(async()=>{await Promise.all(U.map((async t=>{const e=this.route.options[t];this[t]?.preload&&(this[t]=await this.router.options.loadComponent(e))})))})(),c=Promise.resolve().then((()=>{if(this.route.options.onLoad)return this.route.options.onLoad({params:this.params,routeSearch:a,search:s,signal:this.abortController.signal,preload:!!t?.preload,routeContext:o,context:r})}));try{if(await Promise.all([h,c]),i=n())return await i;this.__store.setState((t=>({...t,error:void 0,status:"success",updatedAt:Date.now()})))}catch(t){if(N(t))return void this.router.navigate(t);this.route.options.onLoadError?.(t),this.route.options.onError?.(t),this.__store.setState((e=>({...e,error:t,status:"error",updatedAt:Date.now()})))}finally{delete this.__loadPromise}})),this.__loadPromise};#r=""}t.RootRoute=$,t.Route=C,t.RouteMatch=B,t.Router=class{#o;startedLoadingAt=Date.now();resolveNavigation=()=>{};constructor(t){this.options={defaultPreloadDelay:50,context:void 0,...t,stringifySearch:t?.stringifySearch??k,parseSearch:t?.parseSearch??A,fetchServerDataFn:t?.fetchServerDataFn??H},this.__store=new I(O(),{onUpdate:t=>{this.state=t}}),this.state=this.__store.state,this.basepath="",this.update(t),this.options.Router?.(this);const e=this.buildNext({hash:!0,fromCurrent:!0,search:!0,state:!0});this.state.latestLocation.href!==e.href&&this.#n({...e,replace:!0})}reset=()=>{this.__store.setState((t=>Object.assign(t,O())))};mount=()=>(j||this.state.currentMatches.length||this.safeLoad(),()=>{});update=t=>{if(Object.assign(this.options,t),!this.history||this.options.history&&this.options.history!==this.history){this.#o&&this.#o(),this.history=this.options.history??(j?o():r());const t=this.#i();this.__store.setState((e=>({...e,latestLocation:t,currentLocation:t}))),this.#o=this.history.listen((()=>{this.safeLoad({next:this.#i(this.state.latestLocation)})}))}const{basepath:e,routeTree:a}=this.options;return this.basepath=`/${w(e??"")??""}`,a&&(this.routesById={},this.routeTree=this.#h(a)),this};buildNext=t=>{const e=this.#c(t),a=this.matchRoutes(e.pathname);return this.#c({...t,__matches:a})};cancelMatches=()=>{[...this.state.currentMatches,...this.state.pendingMatches||[]].forEach((t=>{t.cancel()}))};safeLoad=t=>{this.load(t).catch((t=>{console.warn(t),e(!1)}))};load=async t=>{let e=Date.now();const a=e;let s;if(this.startedLoadingAt=a,this.cancelMatches(),this.__store.batch((()=>{t?.next&&this.__store.setState((e=>({...e,latestLocation:t.next}))),s=this.matchRoutes(this.state.latestLocation.pathname,{strictParseParams:!0}),this.__store.setState((t=>({...t,status:"pending",pendingMatches:s,pendingLocation:this.state.latestLocation})))})),await this.loadMatches(s,this.state.pendingLocation),this.startedLoadingAt!==a)return this.navigationPromise;const r=this.state.currentMatches,o=[],n=[];r.forEach((t=>{s.find((e=>e.id===t.id))?n.push(t):o.push(t)}));const i=s.filter((t=>!r.find((e=>e.id===t.id))));e=Date.now(),o.forEach((t=>{t.__onExit?.({params:t.params,search:t.state.routeSearch}),"error"===t.state.status&&this.__store.setState((t=>({...t,status:"idle",error:void 0})))})),n.forEach((t=>{t.route.options.onTransition?.({params:t.params,search:t.state.routeSearch})})),i.forEach((t=>{t.__onExit=t.route.options.onLoaded?.({params:t.params,search:t.state.search})}));const h=this.state.currentLocation;this.__store.setState((t=>({...t,status:"idle",currentLocation:this.state.latestLocation,currentMatches:s,pendingLocation:void 0,pendingMatches:void 0}))),s.forEach((t=>{t.__commit()})),h.href!==this.state.currentLocation.href&&this.options.onRouteChange?.(),this.resolveNavigation()};getRoute=t=>{const a=this.routesById[t];return e(a),a};loadRoute=async(t=this.state.latestLocation)=>{const e=this.buildNext(t),a=this.matchRoutes(e.pathname,{strictParseParams:!0});return await this.loadMatches(a,e),a};preloadRoute=async(t=this.state.latestLocation)=>{const e=this.buildNext(t),a=this.matchRoutes(e.pathname,{strictParseParams:!0});return await this.loadMatches(a,e,{preload:!0}),a};matchRoutes=(t,e)=>{const a=[];if(!this.routeTree)return a;const s=[...this.state.currentMatches,...this.state.pendingMatches??[]],r=async o=>{let n=h(a)?.params??{};const i=this.options.filterRoutes?.(o)??o;let c=[];const u=(a,s)=>(s.some((s=>{const r=s.children;if(!s.path&&r?.length)return u([...c,s],r);const o=!("/"===s.path&&!r?.length),i=L(this.basepath,t,{to:s.fullPath,fuzzy:o,caseSensitive:s.options.caseSensitive??this.options.caseSensitive});if(i){let t;try{t=s.options.parseParams?.(i)??i}catch(t){if(e?.strictParseParams)throw t}n={...n,...t}}return i&&(c=[...a,s]),!!c.length})),!!c.length);if(u([],i),!c.length)return;c.forEach((t=>{const e=b(t.path,n),r=b(t.id,n,!0),o=s.find((t=>t.id===r))||new B(this,t,{id:r,params:n,pathname:m([this.basepath,e])});a.push(o)}));const l=h(c).children;l?.length&&r(l)};return r([this.routeTree]),a};loadMatches=async(t,e,a)=>{await Promise.all(t.map((async t=>{try{await(t.route.options.beforeLoad?.({router:this,match:t}))}catch(e){throw a?.preload||t.route.options.onBeforeLoadError?.(e),t.route.options.onError?.(e),e}})));const s=t.map((async(s,r)=>{const o=t[r-1];s.__load({preload:a?.preload,location:e,parentMatch:o}),await s.__loadPromise,o&&await o.__loadPromise}));await Promise.all(s)};reload=()=>{this.navigate({fromCurrent:!0,replace:!0,search:!0})};resolvePath=(t,e)=>_(this.basepath,t,y(e));navigate=async({from:t,to:a="",search:s,hash:r,replace:o,params:n})=>{const i=String(a),h=void 0===t?t:String(t);let c;try{new URL(`${i}`),c=!0}catch(t){}return e(!c),this.#n({from:h,to:i,search:s,hash:r,replace:o,params:n})};matchRoute=(t,e)=>{t={...t,to:t.to?this.resolvePath(t.from??"",t.to):void 0};const a=this.buildNext(t),s=e?.pending?this.state.pendingLocation:this.state.currentLocation;if(!s)return!1;const r=L(this.basepath,s.pathname,{...e,to:a.pathname});return!!r&&(e?.includeSearch??1?!!f(s.search,a.search)&&r:r)};buildLink=({from:t,to:e=".",search:a,params:s,hash:r,target:o,replace:n,activeOptions:i,preload:h,preloadDelay:c,disabled:u})=>{try{return new URL(`${e}`),{type:"external",href:e}}catch(t){}const l={from:t,to:e,search:a,params:s,hash:r,replace:n},p=this.buildNext(l);h=h??this.options.defaultPreload;const d=c??this.options.defaultPreloadDelay??0,m=this.state.currentLocation.pathname.split("/"),y=p.pathname.split("/").every(((t,e)=>t===m[e])),g=i?.exact?this.state.currentLocation.pathname===p.pathname:y,v=!i?.includeHash||this.state.currentLocation.hash===p.hash,w=!(i?.includeSearch??1)||f(this.state.currentLocation.search,p.search);return{type:"internal",next:p,handleFocus:t=>{h&&this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))},handleClick:t=>{u||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||t.defaultPrevented||o&&"_self"!==o||0!==t.button||(t.preventDefault(),this.#n(l))},handleEnter:t=>{const e=t.target||{};if(h){if(e.preloadTimeout)return;e.preloadTimeout=setTimeout((()=>{e.preloadTimeout=null,this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))}),d)}},handleLeave:t=>{const e=t.target||{};e.preloadTimeout&&(clearTimeout(e.preloadTimeout),e.preloadTimeout=null)},handleTouchStart:t=>{this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))},isActive:g&&v&&w,disabled:u}};dehydrate=()=>({state:{...u(this.state,["latestLocation","currentLocation","status","lastUpdated"]),currentMatches:this.state.currentMatches.map((t=>({id:t.id,state:{status:t.state.status}})))}});hydrate=t=>{this.__store.setState((a=>{const s=this.matchRoutes(t.state.latestLocation.pathname,{strictParseParams:!0});return s.forEach(((a,s)=>{const r=t.state.currentMatches[s];e(r&&r.id===a.id),a.__store.setState((t=>({...t,...r.state})))})),{...a,...t.state,currentMatches:s}}))};#h=t=>{const e=t=>{t.forEach(((t,a)=>{t.init({originalIndex:a,router:this});if(this.routesById[t.id])throw new Error;this.routesById[t.id]=t;const s=t.children;s?.length&&(e(s),t.children=s.map(((t,e)=>{const a=S(g(y(t.path??"/")));for(;a.length>1&&"/"===a[0]?.value;)a.shift();let s=0;return a.forEach(((t,e)=>{let a=1;for(;e--;)a*=.001;"pathname"===t.type&&"/"!==t.value?s+=1*a:"param"===t.type?s+=2*a:"wildcard"===t.type&&(s+=3*a)})),{child:t,parsed:a,index:e,score:s}})).sort(((t,e)=>t.score!==e.score?t.score-e.score:t.index-e.index)).map((t=>t.child)))}))};return e([t]),t};#i=t=>{let{pathname:e,search:a,hash:s,state:r}=this.history.location;const o=this.options.parseSearch(a);return{pathname:e,searchStr:a,search:l(t?.search,o),hash:s.split("#").reverse()[0]??"",href:`${e}${a}${s}`,state:r,key:r?.key||"__init__"}};#c=(t={})=>{t.fromCurrent=t.fromCurrent??""===t.to;const e=t.fromCurrent?this.state.latestLocation.pathname:t.from??this.state.latestLocation.pathname;let a=_(this.basepath??"/",e,`${t.to??""}`);const s={...h(this.matchRoutes(this.state.latestLocation.pathname,{strictParseParams:!0}))?.params};let r=!0===(t.params??!0)?s:c(t.params,s);r&&t.__matches?.map((t=>t.route.options.stringifyParams)).filter(Boolean).forEach((t=>{r={...r,...t(r)}})),a=b(a,r??{});const o=t.__matches?.map((t=>t.route.options.preSearchFilters??[])).flat().filter(Boolean)??[],n=t.__matches?.map((t=>t.route.options.postSearchFilters??[])).flat().filter(Boolean)??[],i=o?.length?o?.reduce(((t,e)=>e(t)),this.state.latestLocation.search):this.state.latestLocation.search,u=!0===t.search?i:t.search?c(t.search,i)??{}:o?.length?i:{},p=n?.length?n.reduce(((t,e)=>e(t)),u):u,d=l(this.state.latestLocation.search,p),f=this.options.stringifySearch(d);let m=!0===t.hash?this.state.latestLocation.hash:c(t.hash,this.state.latestLocation.hash);m=m?`#${m}`:"";return{pathname:a,search:d,searchStr:f,state:!0===t.state?this.state.latestLocation.state:c(t.state,this.state.latestLocation.state),hash:m,href:this.history.createHref(`${a}${f}${m}`),key:t.key}};#n=async t=>{const e=this.buildNext(t),a=""+Date.now()+Math.random();this.navigateTimeout&&clearTimeout(this.navigateTimeout);let s="replace";t.replace||(s="push");this.state.latestLocation.href===e.href&&!e.key&&(s="replace");const r=`${e.pathname}${e.searchStr}${e.hash?`#${e.hash}`:""}`;return this.history["push"===s?"push":"replace"](r,{id:a,...e.state}),this.navigationPromise=new Promise((t=>{const e=this.resolveNavigation;this.resolveNavigation=()=>{e(),t()}}))}},t.cleanPath=y,t.createBrowserHistory=r,t.createHashHistory=function(){return r({getHref:()=>window.location.hash.substring(1),createHref:t=>`#${t}`})},t.createMemoryHistory=o,t.decode=E,t.defaultFetchServerDataFn=H,t.defaultParseSearch=A,t.defaultStringifySearch=k,t.encode=x,t.functionalUpdate=c,t.interpolatePath=b,t.invariant=e,t.isPlainObject=p,t.isRedirect=N,t.joinPaths=m,t.last=h,t.matchByPath=P,t.matchPathname=L,t.parsePathname=S,t.parseSearchWith=T,t.partialDeepEqual=f,t.pick=u,t.redirect=function(t){return t.isRedirect=!0,t},t.replaceEqualDeep=l,t.resolvePath=_,t.rootRouteId=M,t.stringifySearchWith=D,t.trimPath=w,t.trimPathLeft=g,t.trimPathRight=v,t.warning=function(t,e){},Object.defineProperty(t,"__esModule",{value:!0})}));
*/class I{listeners=new Set;batching=!1;queue=[];constructor(t,e){this.state=t,this.options=e}subscribe=t=>{this.listeners.add(t);const e=this.options?.onSubscribe?.(t,this);return()=>{this.listeners.delete(t),e?.()}};setState=t=>{const e=this.state;this.state=this.options?.updateFn?this.options.updateFn(e)(t):t(e),this.state!==e&&(this.options?.onUpdate?.(this.state,e),this.queue.push((()=>{this.listeners.forEach((t=>t(this.state,e)))})),this.#t())};#t=()=>{this.batching||(this.queue.forEach((t=>t())),this.queue=[])};batch=t=>{this.batching=!0,t(),this.batching=!1,this.#t()}}const A=T(JSON.parse),k=H(JSON.stringify);function T(t){return e=>{"?"===e.substring(0,1)&&(e=e.substring(1));let a=E(e);for(let e in a){const s=a[e];if("string"==typeof s)try{a[e]=t(s)}catch(t){}}return a}}function H(t){return e=>{(e={...e})&&Object.keys(e).forEach((a=>{const s=e[a];if(void 0===s||void 0===s)delete e[a];else if(s&&"object"==typeof s&&null!==s)try{e[a]=t(s)}catch(t){}}));const a=x(e).toString();return a?`?${a}`:""}}const j=async({router:t,routeMatch:e})=>{const a=t.buildNext({to:".",search:t=>({...t??{},__data:{matchId:e.id}})}),s=await fetch(a.href,{method:"GET",signal:e.abortController.signal});if(s.ok)return s.json();throw new Error("Failed to fetch match data")};const D="undefined"==typeof window||!window.document.createElement;function O(){return{status:"idle",latestLocation:null,currentLocation:null,currentMatches:[],lastUpdated:Date.now()}}function N(t){return!!t?.isRedirect}const U=["component","errorComponent","pendingComponent"];class B{abortController=new AbortController;constructor(t,e,a){Object.assign(this,{route:e,router:t,id:a.id,pathname:a.pathname,params:a.params,__store:new I({updatedAt:0,routeSearch:{},search:{},status:"idle"},{onUpdate:t=>{this.state=t}})}),this.state=this.__store.state,U.map((async t=>{const e=this.route.options[t];"function"!=typeof this[t]&&(this[t]=e)})),"idle"!==this.state.status||this.#e()||this.__store.setState((t=>({...t,status:"success"})))}#e=()=>!(!this.route.options.onLoad&&!U.some((t=>this.route.options[t]?.preload)));__commit=()=>{const{routeSearch:t,search:e,context:a,routeContext:s}=this.#a({location:this.router.state.currentLocation});this.context=a,this.routeContext=s,this.__store.setState((a=>({...a,routeSearch:l(a.routeSearch,t),search:l(a.search,e)})))};cancel=()=>{this.abortController?.abort()};#s=t=>{const e=this.parentMatch?this.parentMatch.#s(t):{search:t.location.search,routeSearch:t.location.search};try{const t=("object"==typeof this.route.options.validateSearch?this.route.options.validateSearch.parse:this.route.options.validateSearch)?.(e.search)??{};return{routeSearch:t,search:{...e.search,...t}}}catch(t){if(N(t))throw t;this.route.options.onValidateSearchError?.(t);const e=new Error("Invalid search params found",{cause:t});throw e.code="INVALID_SEARCH_PARAMS",e}};#a=t=>{const{search:e,routeSearch:a}=this.#s(t),s=this.route.options.getContext?.({parentContext:this.parentMatch?.routeContext??{},context:this.parentMatch?.context??this.router?.options.context??{},params:this.params,search:e})||{};return{routeSearch:a,search:e,context:{...this.parentMatch?.context??this.router?.options.context,...s},routeContext:s}};__load=async t=>{let e;this.parentMatch=t.parentMatch;try{e=this.#a(t)}catch(t){return N(t)?void this.router.navigate(t):(this.route.options.onError?.(t),void this.__store.setState((e=>({...e,status:"error",error:t}))))}const{routeSearch:a,search:s,context:r,routeContext:o}=e;if("pending"!==this.state.status)return this.__loadPromise=Promise.resolve().then((async()=>{const e=""+Date.now()+Math.random();this.#r=e;const i=()=>e!==this.#r?this.__loadPromise:void 0;let n;"idle"===this.state.status&&this.__store.setState((t=>({...t,status:"pending"})));const h=(async()=>{await Promise.all(U.map((async t=>{const e=this.route.options[t];this[t]?.preload&&(this[t]=await this.router.options.loadComponent(e))})))})(),c=Promise.resolve().then((()=>{if(this.route.options.onLoad)return this.route.options.onLoad({params:this.params,routeSearch:a,search:s,signal:this.abortController.signal,preload:!!t?.preload,routeContext:o,context:r})}));try{if(await Promise.all([h,c]),n=i())return await n;this.__store.setState((t=>({...t,error:void 0,status:"success",updatedAt:Date.now()})))}catch(t){if(N(t))return void this.router.navigate(t);this.route.options.onLoadError?.(t),this.route.options.onError?.(t),this.__store.setState((e=>({...e,error:t,status:"error",updatedAt:Date.now()})))}finally{delete this.__loadPromise}})),this.__loadPromise};#r=""}t.RootRoute=$,t.Route=C,t.RouteMatch=B,t.Router=class{#o;startedLoadingAt=Date.now();resolveNavigation=()=>{};constructor(t){this.options={defaultPreloadDelay:50,context:void 0,...t,stringifySearch:t?.stringifySearch??k,parseSearch:t?.parseSearch??A,fetchServerDataFn:t?.fetchServerDataFn??j},this.__store=new I(O(),{onUpdate:t=>{this.state=t}}),this.state=this.__store.state,this.basepath="",this.update(t),this.options.Router?.(this);const e=this.buildNext({hash:!0,fromCurrent:!0,search:!0,state:!0});this.state.latestLocation.href!==e.href&&this.#i({...e,replace:!0})}reset=()=>{this.__store.setState((t=>Object.assign(t,O())))};mount=()=>(D||this.state.currentMatches.length||this.safeLoad(),()=>{});update=t=>{if(Object.assign(this.options,t),!this.history||this.options.history&&this.options.history!==this.history){this.#o&&this.#o(),this.history=this.options.history??(D?o():r());const t=this.#n();this.__store.setState((e=>({...e,latestLocation:t,currentLocation:t}))),this.#o=this.history.listen((()=>{this.safeLoad({next:this.#n(this.state.latestLocation)})}))}const{basepath:e,routeTree:a}=this.options;return this.basepath=`/${w(e??"")??""}`,a&&(this.routesById={},this.routeTree=this.#h(a)),this};buildNext=t=>{const e=this.#c(t),a=this.matchRoutes(e.pathname);return this.#c({...t,__matches:a})};cancelMatches=()=>{[...this.state.currentMatches,...this.state.pendingMatches||[]].forEach((t=>{t.cancel()}))};safeLoad=t=>{this.load(t).catch((t=>{console.warn(t),e(!1)}))};load=async t=>{let e=Date.now();const a=e;let s;if(this.startedLoadingAt=a,this.cancelMatches(),this.__store.batch((()=>{t?.next&&this.__store.setState((e=>({...e,latestLocation:t.next}))),s=this.matchRoutes(this.state.latestLocation.pathname,{strictParseParams:!0}),this.__store.setState((t=>({...t,status:"pending",pendingMatches:s,pendingLocation:this.state.latestLocation})))})),await this.loadMatches(s,this.state.pendingLocation),this.startedLoadingAt!==a)return this.navigationPromise;const r=this.state.currentMatches,o=[],i=[];r.forEach((t=>{s.find((e=>e.id===t.id))?i.push(t):o.push(t)}));const n=s.filter((t=>!r.find((e=>e.id===t.id))));e=Date.now(),o.forEach((t=>{t.__onExit?.({params:t.params,search:t.state.routeSearch}),"error"===t.state.status&&this.__store.setState((t=>({...t,status:"idle",error:void 0})))})),i.forEach((t=>{t.route.options.onTransition?.({params:t.params,search:t.state.routeSearch})})),n.forEach((t=>{t.__onExit=t.route.options.onLoaded?.({params:t.params,search:t.state.search})}));const h=this.state.currentLocation;this.__store.setState((t=>({...t,status:"idle",currentLocation:this.state.latestLocation,currentMatches:s,pendingLocation:void 0,pendingMatches:void 0}))),s.forEach((t=>{t.__commit()})),h.href!==this.state.currentLocation.href&&this.options.onRouteChange?.(),this.resolveNavigation()};getRoute=t=>{const a=this.routesById[t];return e(a),a};loadRoute=async(t=this.state.latestLocation)=>{const e=this.buildNext(t),a=this.matchRoutes(e.pathname,{strictParseParams:!0});return await this.loadMatches(a,e),a};preloadRoute=async(t=this.state.latestLocation)=>{const e=this.buildNext(t),a=this.matchRoutes(e.pathname,{strictParseParams:!0});return await this.loadMatches(a,e,{preload:!0}),a};matchRoutes=(t,e)=>{const a=[];if(!this.routeTree)return a;const s=[...this.state.currentMatches,...this.state.pendingMatches??[]],r=async o=>{let i=h(a)?.params??{};const n=this.options.filterRoutes?.(o)??o;let c=[];const u=(a,s)=>(s.some((s=>{const r=s.children;if(!s.path&&r?.length)return u([...c,s],r);const o=!("/"===s.path&&!r?.length),n=L(this.basepath,t,{to:s.fullPath,fuzzy:o,caseSensitive:s.options.caseSensitive??this.options.caseSensitive});if(n){let t;try{t=s.options.parseParams?.(n)??n}catch(t){if(e?.strictParseParams)throw t}i={...i,...t}}return n&&(c=[...a,s]),!!c.length})),!!c.length);if(u([],n),!c.length)return;c.forEach((t=>{const e=S(t.path,i),r=S(t.id,i,!0),o=s.find((t=>t.id===r))||new B(this,t,{id:r,params:i,pathname:m([this.basepath,e])});a.push(o)}));const l=h(c).children;l?.length&&r(l)};return r([this.routeTree]),a};loadMatches=async(t,e,a)=>{await Promise.all(t.map((async t=>{try{await(t.route.options.beforeLoad?.({router:this,match:t}))}catch(e){throw a?.preload||t.route.options.onBeforeLoadError?.(e),t.route.options.onError?.(e),e}})));const s=t.map((async(s,r)=>{const o=t[r-1];s.__load({preload:a?.preload,location:e,parentMatch:o}),await s.__loadPromise,o&&await o.__loadPromise}));await Promise.all(s)};reload=()=>{this.navigate({fromCurrent:!0,replace:!0,search:!0})};resolvePath=(t,e)=>_(this.basepath,t,y(e));navigate=async({from:t,to:a="",search:s,hash:r,replace:o,params:i})=>{const n=String(a),h=void 0===t?t:String(t);let c;try{new URL(`${n}`),c=!0}catch(t){}return e(!c),this.#i({from:h,to:n,search:s,hash:r,replace:o,params:i})};matchRoute=(t,e)=>{t={...t,to:t.to?this.resolvePath(t.from??"",t.to):void 0};const a=this.buildNext(t),s=e?.pending?this.state.pendingLocation:this.state.currentLocation;if(!s)return!1;const r=L(this.basepath,s.pathname,{...e,to:a.pathname});return!!r&&(e?.includeSearch??1?!!f(s.search,a.search)&&r:r)};buildLink=({from:t,to:e=".",search:a,params:s,hash:r,target:o,replace:i,activeOptions:n,preload:h,preloadDelay:c,disabled:u})=>{try{return new URL(`${e}`),{type:"external",href:e}}catch(t){}const l={from:t,to:e,search:a,params:s,hash:r,replace:i},p=this.buildNext(l);h=h??this.options.defaultPreload;const d=c??this.options.defaultPreloadDelay??0,m=this.state.currentLocation.pathname.split("/"),y=p.pathname.split("/").every(((t,e)=>t===m[e])),g=n?.exact?this.state.currentLocation.pathname===p.pathname:y,v=!n?.includeHash||this.state.currentLocation.hash===p.hash,w=!(n?.includeSearch??1)||f(this.state.currentLocation.search,p.search);return{type:"internal",next:p,handleFocus:t=>{h&&this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))},handleClick:t=>{u||function(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}(t)||t.defaultPrevented||o&&"_self"!==o||0!==t.button||(t.preventDefault(),this.#i(l))},handleEnter:t=>{const e=t.target||{};if(h){if(e.preloadTimeout)return;e.preloadTimeout=setTimeout((()=>{e.preloadTimeout=null,this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))}),d)}},handleLeave:t=>{const e=t.target||{};e.preloadTimeout&&(clearTimeout(e.preloadTimeout),e.preloadTimeout=null)},handleTouchStart:t=>{this.preloadRoute(l).catch((t=>{console.warn(t),console.warn("Error preloading route! ☝️")}))},isActive:g&&v&&w,disabled:u}};dehydrate=()=>({state:{...u(this.state,["latestLocation","currentLocation","status","lastUpdated"]),currentMatches:this.state.currentMatches.map((t=>({id:t.id,state:{status:t.state.status}})))}});hydrate=t=>{this.__store.setState((a=>{const s=this.matchRoutes(t.state.latestLocation.pathname,{strictParseParams:!0});return s.forEach(((a,s)=>{const r=t.state.currentMatches[s];e(r&&r.id===a.id),a.__store.setState((t=>({...t,...r.state})))})),{...a,...t.state,currentMatches:s}}))};#h=t=>{const e=t=>{t.forEach(((t,a)=>{t.init({originalIndex:a,router:this});if(this.routesById[t.id])throw new Error;this.routesById[t.id]=t;const s=t.children;s?.length&&(e(s),t.children=s.map(((t,e)=>{const a=b(g(y(t.path??"/")));for(;a.length>1&&"/"===a[0]?.value;)a.shift();let s=0;return a.forEach(((t,e)=>{let a=1;for(;e--;)a*=.001;"pathname"===t.type&&"/"!==t.value?s+=1*a:"param"===t.type?s+=2*a:"wildcard"===t.type&&(s+=3*a)})),{child:t,parsed:a,index:e,score:s}})).sort(((t,e)=>t.score!==e.score?t.score-e.score:t.index-e.index)).map((t=>t.child)))}))};return e([t]),t};#n=t=>{let{pathname:e,search:a,hash:s,state:r}=this.history.location;const o=this.options.parseSearch(a);return{pathname:e,searchStr:a,search:l(t?.search,o),hash:s.split("#").reverse()[0]??"",href:`${e}${a}${s}`,state:r,key:r?.key||"__init__"}};#c=(t={})=>{t.fromCurrent=t.fromCurrent??""===t.to;const e=t.fromCurrent?this.state.latestLocation.pathname:t.from??this.state.latestLocation.pathname;let a=_(this.basepath??"/",e,`${t.to??""}`);const s={...h(this.matchRoutes(this.state.latestLocation.pathname,{strictParseParams:!0}))?.params};let r=!0===(t.params??!0)?s:c(t.params,s);r&&t.__matches?.map((t=>t.route.options.stringifyParams)).filter(Boolean).forEach((t=>{r={...r,...t(r)}})),a=S(a,r??{});const o=t.__matches?.map((t=>t.route.options.preSearchFilters??[])).flat().filter(Boolean)??[],i=t.__matches?.map((t=>t.route.options.postSearchFilters??[])).flat().filter(Boolean)??[],n=o?.length?o?.reduce(((t,e)=>e(t)),this.state.latestLocation.search):this.state.latestLocation.search,u=!0===t.search?n:t.search?c(t.search,n)??{}:o?.length?n:{},p=i?.length?i.reduce(((t,e)=>e(t)),u):u,d=l(this.state.latestLocation.search,p),f=this.options.stringifySearch(d);let m=!0===t.hash?this.state.latestLocation.hash:c(t.hash,this.state.latestLocation.hash);m=m?`#${m}`:"";return{pathname:a,search:d,searchStr:f,state:!0===t.state?this.state.latestLocation.state:c(t.state,this.state.latestLocation.state),hash:m,href:this.history.createHref(`${a}${f}${m}`),key:t.key}};#i=async t=>{const e=this.buildNext(t),a=""+Date.now()+Math.random();this.navigateTimeout&&clearTimeout(this.navigateTimeout);let s="replace";t.replace||(s="push");this.state.latestLocation.href===e.href&&!e.key&&(s="replace");const r=`${e.pathname}${e.searchStr}${e.hash?`#${e.hash}`:""}`;return this.history["push"===s?"push":"replace"](r,{id:a,...e.state}),this.navigationPromise=new Promise((t=>{const e=this.resolveNavigation;this.resolveNavigation=()=>{e(),t()}}))}},t.cleanPath=y,t.createBrowserHistory=r,t.createHashHistory=function(){return r({getHref:()=>window.location.hash.substring(1),createHref:t=>`#${t}`})},t.createMemoryHistory=o,t.decode=E,t.defaultFetchServerDataFn=j,t.defaultParseSearch=A,t.defaultStringifySearch=k,t.encode=x,t.functionalUpdate=c,t.interpolatePath=S,t.invariant=e,t.isPlainObject=p,t.isRedirect=N,t.joinPaths=m,t.last=h,t.matchByPath=P,t.matchPathname=L,t.parsePathname=b,t.parseSearchWith=T,t.partialDeepEqual=f,t.pick=u,t.redirect=function(t){return t.isRedirect=!0,t},t.replaceEqualDeep=l,t.resolvePath=_,t.rootRouteId=M,t.stringifySearchWith=H,t.trimPath=w,t.trimPathLeft=g,t.trimPathRight=v,t.warning=function(t,e){},Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=index.production.js.map
{
"name": "@tanstack/router",
"author": "Tanner Linsley",
"version": "0.0.1-beta.75",
"version": "0.0.1-beta.76",
"license": "MIT",

@@ -6,0 +6,0 @@ "repository": "tanstack/router",

import { GetFrameworkGeneric } from './frameworks'
import { ParsePathParams } from './link'
import { RouteMatch } from './routeMatch'
import { AnyRouter, Router } from './router'
import { AnyRouter, Router, RouterContext } from './router'
import {

@@ -48,2 +48,53 @@ Expand,

type GetContextFn<
TParentRoute,
TAllParams,
TFullSearchSchema,
TParentContext,
TAllParentContext,
TRouteContext,
> = (
opts: {
params: TAllParams
search: TFullSearchSchema
} & (TParentRoute extends undefined
? {
context?: TAllParentContext
parentContext?: TParentContext
}
: {
context: TAllParentContext
parentContext: TParentContext
}),
) => TRouteContext
export type ContextOptions<
TParentRoute,
TAllParams,
TFullSearchSchema,
TParentContext,
TAllParentContext,
TRouteContext,
> = keyof PickRequired<RouteContext> extends never
? {
getContext?: GetContextFn<
TParentRoute,
TAllParams,
TFullSearchSchema,
TParentContext,
TAllParentContext,
TRouteContext
>
}
: {
getContext: GetContextFn<
TParentRoute,
TAllParams,
TFullSearchSchema,
TParentContext,
TAllParentContext,
TRouteContext
>
}
export type RouteOptions<

@@ -64,3 +115,3 @@ TParentRoute extends AnyRoute = AnyRoute,

TAllParentContext extends AnyContext = AnyContext,
TRouteContext extends RouteContext = AnyContext,
TRouteContext extends RouteContext = RouteContext,
TContext extends AnyContext = TRouteContext,

@@ -105,3 +156,3 @@ > = RouteOptionsBase<TCustomId, TPath> &

TAllParams,
TRouteContext,
NoInfer<TRouteContext>,
TContext

@@ -126,18 +177,11 @@ >

}) => void
// An object of whatever you want! This object is accessible anywhere the route is
getContext?: (
opts: {
params: TAllParams
search: TFullSearchSchema
} & (TParentRoute extends undefined
? {
context?: TAllParentContext
parentContext?: TParentContext
}
: {
context: TAllParentContext
parentContext: TParentContext
}),
) => TRouteContext
} & MetaOptions &
ContextOptions<
TParentRoute,
TAllParams,
TFullSearchSchema,
TParentContext,
TAllParentContext,
TRouteContext
> &
(

@@ -307,3 +351,3 @@ | {

TAllParentContext extends TParentRoute['__types']['context'] = TParentRoute['__types']['context'],
TRouteContext extends AnyContext = AnyContext,
TRouteContext extends RouteContext = RouteContext,
TContext extends MergeFromParent<

@@ -510,4 +554,4 @@ TParentRoute['__types']['context'],

TSearchSchema extends AnySearchSchema = {},
TContext extends AnyContext = AnyContext,
TRouterContext extends AnyContext = AnyContext,
TContext extends RouteContext = RouteContext,
TRouterContext extends RouterContext = RouterContext,
> extends Route<

@@ -555,6 +599,6 @@ any,

static withRouterContext = <TRouterContext extends AnyContext>() => {
static withRouterContext = <TRouterContext extends RouterContext>() => {
return <
TSearchSchema extends AnySearchSchema = {},
TContext extends AnyContext = AnyContext,
TContext extends RouterContext = RouterContext,
>(

@@ -561,0 +605,0 @@ options?: Omit<

import { AnyRootRoute, AnyRoute, RootRoute, Route } from './route'
import { AnyPathParams, AnySearchSchema, RootRouteId } from './route'
import { IsAny, UnionToIntersection, Values } from './utils'
import { IsAny, MergeUnion, Values } from './utils'

@@ -58,11 +58,11 @@ export interface AnyRoutesInfo {

TRouteUnion['__types']['id'], // TId,
UnionToIntersection<TRouteUnion['__types']['searchSchema']> & {}, // TSearchSchema,
UnionToIntersection<TRouteUnion['__types']['fullSearchSchema']> & {}, // TFullSearchSchema,
UnionToIntersection<TRouteUnion['__types']['params']>, // TParams,
UnionToIntersection<TRouteUnion['__types']['allParams']>, // TAllParams,
UnionToIntersection<TRouteUnion['__types']['parentContext']>, // TParentContext,
UnionToIntersection<TRouteUnion['__types']['allParentContext']>, // TAllParentContext,
UnionToIntersection<TRouteUnion['__types']['routerContext']> & {}, // TContext,
UnionToIntersection<TRouteUnion['__types']['context']> & {}, // TAllContext,
UnionToIntersection<TRouteUnion['__types']['routerContext']> & {}, // TRouterContext,
MergeUnion<TRouteUnion['__types']['searchSchema']> & {}, // TSearchSchema,
MergeUnion<TRouteUnion['__types']['fullSearchSchema']> & {}, // TFullSearchSchema,
MergeUnion<TRouteUnion['__types']['params']>, // TParams,
MergeUnion<TRouteUnion['__types']['allParams']>, // TAllParams,
MergeUnion<TRouteUnion['__types']['parentContext']>, // TParentContext,
MergeUnion<TRouteUnion['__types']['allParentContext']>, // TAllParentContext,
MergeUnion<TRouteUnion['__types']['routeContext']> & {}, // TRouteContext,
MergeUnion<TRouteUnion['__types']['context']> & {}, // TContext,
MergeUnion<TRouteUnion['__types']['routerContext']> & {}, // TRouterContext,
TRouteUnion['__types']['children'], // TChildren,

@@ -72,5 +72,5 @@ TRouteUnion['__types']['routesInfo'] // TRoutesInfo,

fullSearchSchema: Partial<
UnionToIntersection<TRouteUnion['__types']['fullSearchSchema']>
MergeUnion<TRouteUnion['__types']['fullSearchSchema']>
>
allParams: Partial<UnionToIntersection<TRouteUnion['__types']['allParams']>>
allParams: Partial<MergeUnion<TRouteUnion['__types']['allParams']>>
}

@@ -77,0 +77,0 @@

@@ -46,5 +46,6 @@ import { Store } from '@tanstack/store'

params!: TRoute['__types']['allParams']
routeContext!: TRoute['__types']['routeContext']
context!: TRoute['__types']['context']
routeContext?: TRoute['__types']['routeContext']
context?: TRoute['__types']['context']
component?: GetFrameworkGeneric<'Component'>

@@ -54,3 +55,2 @@ errorComponent?: GetFrameworkGeneric<'ErrorComponent'>

abortController = new AbortController()
onLoaderDataListeners = new Set<() => void>()
parentMatch?: RouteMatch

@@ -57,0 +57,0 @@ pendingInfo?: PendingRouteMatchInfo

@@ -34,2 +34,18 @@ export type NoInfer<T> = [T][T extends any ? 0 : never]

type Compute<T> = { [K in keyof T]: T[K] } | never
type AllKeys<T> = T extends any ? keyof T : never
export type MergeUnion<T, Keys extends keyof T = keyof T> = Compute<
{
[K in Keys]: T[Keys]
} & {
[K in AllKeys<T>]?: T extends any
? K extends keyof T
? T[K]
: never
: never
}
>
export type Values<O> = O[ValueKeys<O>]

@@ -36,0 +52,0 @@ export type ValueKeys<O> = Extract<keyof O, PropertyKey>

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc