@tanstack/router-core 1.114.6 → 1.114.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +3 -0
- package/dist/cjs/not-found.cjs +13 -0
- package/dist/cjs/not-found.cjs.map +1 -0
- package/dist/cjs/not-found.d.cts +20 -0
- package/dist/cjs/redirect.cjs +29 -0
- package/dist/cjs/redirect.cjs.map +1 -0
- package/dist/cjs/redirect.d.cts +3 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/not-found.d.ts +20 -0
- package/dist/esm/not-found.js +13 -0
- package/dist/esm/not-found.js.map +1 -0
- package/dist/esm/redirect.d.ts +3 -0
- package/dist/esm/redirect.js +29 -0
- package/dist/esm/redirect.js.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +5 -0
- package/src/not-found.ts +29 -0
- package/src/redirect.ts +35 -0
package/dist/cjs/index.cjs
CHANGED
|
@@ -10,6 +10,8 @@ const router = require("./router.cjs");
|
|
|
10
10
|
const searchMiddleware = require("./searchMiddleware.cjs");
|
|
11
11
|
const searchParams = require("./searchParams.cjs");
|
|
12
12
|
const utils = require("./utils.cjs");
|
|
13
|
+
const redirect = require("./redirect.cjs");
|
|
14
|
+
const notFound = require("./not-found.cjs");
|
|
13
15
|
exports.TSR_DEFERRED_PROMISE = defer.TSR_DEFERRED_PROMISE;
|
|
14
16
|
exports.defer = defer.defer;
|
|
15
17
|
exports.preloadWarning = link.preloadWarning;
|
|
@@ -48,4 +50,9 @@ exports.last = utils.last;
|
|
|
48
50
|
exports.pick = utils.pick;
|
|
49
51
|
exports.replaceEqualDeep = utils.replaceEqualDeep;
|
|
50
52
|
exports.shallow = utils.shallow;
|
|
53
|
+
exports.isRedirect = redirect.isRedirect;
|
|
54
|
+
exports.isResolvedRedirect = redirect.isResolvedRedirect;
|
|
55
|
+
exports.redirect = redirect.redirect;
|
|
56
|
+
exports.isNotFound = notFound.isNotFound;
|
|
57
|
+
exports.notFound = notFound.notFound;
|
|
51
58
|
//# sourceMappingURL=index.cjs.map
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -32,3 +32,6 @@ export type { UseNavigateResult } from './useNavigate.cjs';
|
|
|
32
32
|
export type { UseLoaderDepsResult, ResolveUseLoaderDeps } from './useLoaderDeps.cjs';
|
|
33
33
|
export type { UseLoaderDataResult, ResolveUseLoaderData } from './useLoaderData.cjs';
|
|
34
34
|
export type { Redirect, ResolvedRedirect, AnyRedirect } from './redirect.cjs';
|
|
35
|
+
export { redirect, isRedirect, isResolvedRedirect } from './redirect.cjs';
|
|
36
|
+
export type { NotFoundError } from './not-found.cjs';
|
|
37
|
+
export { isNotFound, notFound } from './not-found.cjs';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function notFound(options = {}) {
|
|
4
|
+
options.isNotFound = true;
|
|
5
|
+
if (options.throw) throw options;
|
|
6
|
+
return options;
|
|
7
|
+
}
|
|
8
|
+
function isNotFound(obj) {
|
|
9
|
+
return !!(obj == null ? void 0 : obj.isNotFound);
|
|
10
|
+
}
|
|
11
|
+
exports.isNotFound = isNotFound;
|
|
12
|
+
exports.notFound = notFound;
|
|
13
|
+
//# sourceMappingURL=not-found.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found.cjs","sources":["../../src/not-found.ts"],"sourcesContent":["import type { RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\n\nexport type NotFoundError = {\n /**\n @deprecated\n Use `routeId: rootRouteId` instead\n */\n global?: boolean\n /**\n @private\n Do not use this. It's used internally to indicate a path matching error\n */\n _global?: boolean\n data?: any\n throw?: boolean\n routeId?: RouteIds<RegisteredRouter['routeTree']>\n headers?: HeadersInit\n}\n\nexport function notFound(options: NotFoundError = {}) {\n ;(options as any).isNotFound = true\n if (options.throw) throw options\n return options\n}\n\nexport function isNotFound(obj: any): obj is NotFoundError {\n return !!obj?.isNotFound\n}\n"],"names":[],"mappings":";;AAoBgB,SAAA,SAAS,UAAyB,IAAI;AAClD,UAAgB,aAAa;AAC3B,MAAA,QAAQ,MAAa,OAAA;AAClB,SAAA;AACT;AAEO,SAAS,WAAW,KAAgC;AAClD,SAAA,CAAC,EAAC,2BAAK;AAChB;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RouteIds } from './routeInfo.cjs';
|
|
2
|
+
import { RegisteredRouter } from './router.cjs';
|
|
3
|
+
export type NotFoundError = {
|
|
4
|
+
/**
|
|
5
|
+
@deprecated
|
|
6
|
+
Use `routeId: rootRouteId` instead
|
|
7
|
+
*/
|
|
8
|
+
global?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
@private
|
|
11
|
+
Do not use this. It's used internally to indicate a path matching error
|
|
12
|
+
*/
|
|
13
|
+
_global?: boolean;
|
|
14
|
+
data?: any;
|
|
15
|
+
throw?: boolean;
|
|
16
|
+
routeId?: RouteIds<RegisteredRouter['routeTree']>;
|
|
17
|
+
headers?: HeadersInit;
|
|
18
|
+
};
|
|
19
|
+
export declare function notFound(options?: NotFoundError): NotFoundError;
|
|
20
|
+
export declare function isNotFound(obj: any): obj is NotFoundError;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function redirect(opts) {
|
|
4
|
+
opts.isRedirect = true;
|
|
5
|
+
opts.statusCode = opts.statusCode || opts.code || 307;
|
|
6
|
+
opts.headers = opts.headers || {};
|
|
7
|
+
if (!opts.reloadDocument) {
|
|
8
|
+
opts.reloadDocument = false;
|
|
9
|
+
try {
|
|
10
|
+
new URL(`${opts.href}`);
|
|
11
|
+
opts.reloadDocument = true;
|
|
12
|
+
} catch {
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (opts.throw) {
|
|
16
|
+
throw opts;
|
|
17
|
+
}
|
|
18
|
+
return opts;
|
|
19
|
+
}
|
|
20
|
+
function isRedirect(obj) {
|
|
21
|
+
return !!(obj == null ? void 0 : obj.isRedirect);
|
|
22
|
+
}
|
|
23
|
+
function isResolvedRedirect(obj) {
|
|
24
|
+
return !!(obj == null ? void 0 : obj.isRedirect) && obj.href;
|
|
25
|
+
}
|
|
26
|
+
exports.isRedirect = isRedirect;
|
|
27
|
+
exports.isResolvedRedirect = isResolvedRedirect;
|
|
28
|
+
exports.redirect = redirect;
|
|
29
|
+
//# sourceMappingURL=redirect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.cjs","sources":["../../src/redirect.ts"],"sourcesContent":["import type { NavigateOptions } from './link'\nimport type { RoutePaths } from './routeInfo'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type { PickAsRequired } from './utils'\n\nexport type AnyRedirect = Redirect<any, any, any, any, any>\n\nexport type Redirect<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = '/',\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = {\n href?: string\n /**\n * @deprecated Use `statusCode` instead\n **/\n code?: number\n statusCode?: number\n throw?: any\n headers?: HeadersInit\n} & NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type ResolvedRedirect<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,\n TMaskTo extends string = '',\n> = PickAsRequired<\n Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n 'code' | 'statusCode' | 'headers'\n> & {\n href: string\n}\n\nexport function redirect<\n TRouter extends RegisteredRouter,\n const TTo extends string | undefined,\n const TFrom extends string = string,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> {\n ;(opts as any).isRedirect = true\n opts.statusCode = opts.statusCode || opts.code || 307\n opts.headers = opts.headers || {}\n if (!opts.reloadDocument) {\n opts.reloadDocument = false\n try {\n new URL(`${opts.href}`)\n opts.reloadDocument = true\n } catch {}\n }\n\n if (opts.throw) {\n throw opts\n }\n\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n\nexport function isResolvedRedirect(obj: any): obj is ResolvedRedirect {\n return !!obj?.isRedirect && obj.href\n}\n"],"names":[],"mappings":";;AAqCO,SAAS,SAOd,MACmD;AACjD,OAAa,aAAa;AAC5B,OAAK,aAAa,KAAK,cAAc,KAAK,QAAQ;AAC7C,OAAA,UAAU,KAAK,WAAW,CAAC;AAC5B,MAAA,CAAC,KAAK,gBAAgB;AACxB,SAAK,iBAAiB;AAClB,QAAA;AACF,UAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,WAAK,iBAAiB;AAAA,IAAA,QAChB;AAAA,IAAA;AAAA,EAAC;AAGX,MAAI,KAAK,OAAO;AACR,UAAA;AAAA,EAAA;AAGD,SAAA;AACT;AAEO,SAAS,WAAW,KAA8B;AAChD,SAAA,CAAC,EAAC,2BAAK;AAChB;AAEO,SAAS,mBAAmB,KAAmC;AACpE,SAAO,CAAC,EAAC,2BAAK,eAAc,IAAI;AAClC;;;;"}
|
package/dist/cjs/redirect.d.cts
CHANGED
|
@@ -16,3 +16,6 @@ export type Redirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends
|
|
|
16
16
|
export type ResolvedRedirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom, TMaskTo extends string = ''> = PickAsRequired<Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>, 'code' | 'statusCode' | 'headers'> & {
|
|
17
17
|
href: string;
|
|
18
18
|
};
|
|
19
|
+
export declare function redirect<TRouter extends RegisteredRouter, const TTo extends string | undefined, const TFrom extends string = string, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
|
|
20
|
+
export declare function isRedirect(obj: any): obj is AnyRedirect;
|
|
21
|
+
export declare function isResolvedRedirect(obj: any): obj is ResolvedRedirect;
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -32,3 +32,6 @@ export type { UseNavigateResult } from './useNavigate.js';
|
|
|
32
32
|
export type { UseLoaderDepsResult, ResolveUseLoaderDeps } from './useLoaderDeps.js';
|
|
33
33
|
export type { UseLoaderDataResult, ResolveUseLoaderData } from './useLoaderData.js';
|
|
34
34
|
export type { Redirect, ResolvedRedirect, AnyRedirect } from './redirect.js';
|
|
35
|
+
export { redirect, isRedirect, isResolvedRedirect } from './redirect.js';
|
|
36
|
+
export type { NotFoundError } from './not-found.js';
|
|
37
|
+
export { isNotFound, notFound } from './not-found.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,8 @@ import { defaultSerializeError, getLocationChangeInfo } from "./router.js";
|
|
|
8
8
|
import { retainSearchParams, stripSearchParams } from "./searchMiddleware.js";
|
|
9
9
|
import { defaultParseSearch, defaultStringifySearch, parseSearchWith, stringifySearchWith } from "./searchParams.js";
|
|
10
10
|
import { createControlledPromise, deepEqual, escapeJSON, functionalUpdate, isPlainArray, isPlainObject, last, pick, replaceEqualDeep, shallow } from "./utils.js";
|
|
11
|
+
import { isRedirect, isResolvedRedirect, redirect } from "./redirect.js";
|
|
12
|
+
import { isNotFound, notFound } from "./not-found.js";
|
|
11
13
|
export {
|
|
12
14
|
TSR_DEFERRED_PROMISE,
|
|
13
15
|
cleanPath,
|
|
@@ -25,16 +27,21 @@ export {
|
|
|
25
27
|
getLocationChangeInfo,
|
|
26
28
|
interpolatePath,
|
|
27
29
|
isMatch,
|
|
30
|
+
isNotFound,
|
|
28
31
|
isPlainArray,
|
|
29
32
|
isPlainObject,
|
|
33
|
+
isRedirect,
|
|
34
|
+
isResolvedRedirect,
|
|
30
35
|
joinPaths,
|
|
31
36
|
last,
|
|
32
37
|
matchByPath,
|
|
33
38
|
matchPathname,
|
|
39
|
+
notFound,
|
|
34
40
|
parsePathname,
|
|
35
41
|
parseSearchWith,
|
|
36
42
|
pick,
|
|
37
43
|
preloadWarning,
|
|
44
|
+
redirect,
|
|
38
45
|
removeBasepath,
|
|
39
46
|
removeTrailingSlash,
|
|
40
47
|
replaceEqualDeep,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RouteIds } from './routeInfo.js';
|
|
2
|
+
import { RegisteredRouter } from './router.js';
|
|
3
|
+
export type NotFoundError = {
|
|
4
|
+
/**
|
|
5
|
+
@deprecated
|
|
6
|
+
Use `routeId: rootRouteId` instead
|
|
7
|
+
*/
|
|
8
|
+
global?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
@private
|
|
11
|
+
Do not use this. It's used internally to indicate a path matching error
|
|
12
|
+
*/
|
|
13
|
+
_global?: boolean;
|
|
14
|
+
data?: any;
|
|
15
|
+
throw?: boolean;
|
|
16
|
+
routeId?: RouteIds<RegisteredRouter['routeTree']>;
|
|
17
|
+
headers?: HeadersInit;
|
|
18
|
+
};
|
|
19
|
+
export declare function notFound(options?: NotFoundError): NotFoundError;
|
|
20
|
+
export declare function isNotFound(obj: any): obj is NotFoundError;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function notFound(options = {}) {
|
|
2
|
+
options.isNotFound = true;
|
|
3
|
+
if (options.throw) throw options;
|
|
4
|
+
return options;
|
|
5
|
+
}
|
|
6
|
+
function isNotFound(obj) {
|
|
7
|
+
return !!(obj == null ? void 0 : obj.isNotFound);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
isNotFound,
|
|
11
|
+
notFound
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=not-found.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found.js","sources":["../../src/not-found.ts"],"sourcesContent":["import type { RouteIds } from './routeInfo'\nimport type { RegisteredRouter } from './router'\n\nexport type NotFoundError = {\n /**\n @deprecated\n Use `routeId: rootRouteId` instead\n */\n global?: boolean\n /**\n @private\n Do not use this. It's used internally to indicate a path matching error\n */\n _global?: boolean\n data?: any\n throw?: boolean\n routeId?: RouteIds<RegisteredRouter['routeTree']>\n headers?: HeadersInit\n}\n\nexport function notFound(options: NotFoundError = {}) {\n ;(options as any).isNotFound = true\n if (options.throw) throw options\n return options\n}\n\nexport function isNotFound(obj: any): obj is NotFoundError {\n return !!obj?.isNotFound\n}\n"],"names":[],"mappings":"AAoBgB,SAAA,SAAS,UAAyB,IAAI;AAClD,UAAgB,aAAa;AAC3B,MAAA,QAAQ,MAAa,OAAA;AAClB,SAAA;AACT;AAEO,SAAS,WAAW,KAAgC;AAClD,SAAA,CAAC,EAAC,2BAAK;AAChB;"}
|
package/dist/esm/redirect.d.ts
CHANGED
|
@@ -16,3 +16,6 @@ export type Redirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends
|
|
|
16
16
|
export type ResolvedRedirect<TRouter extends AnyRouter = RegisteredRouter, TFrom extends RoutePaths<TRouter['routeTree']> = '/', TTo extends string = '', TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom, TMaskTo extends string = ''> = PickAsRequired<Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>, 'code' | 'statusCode' | 'headers'> & {
|
|
17
17
|
href: string;
|
|
18
18
|
};
|
|
19
|
+
export declare function redirect<TRouter extends RegisteredRouter, const TTo extends string | undefined, const TFrom extends string = string, const TMaskFrom extends string = TFrom, const TMaskTo extends string = ''>(opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>;
|
|
20
|
+
export declare function isRedirect(obj: any): obj is AnyRedirect;
|
|
21
|
+
export declare function isResolvedRedirect(obj: any): obj is ResolvedRedirect;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function redirect(opts) {
|
|
2
|
+
opts.isRedirect = true;
|
|
3
|
+
opts.statusCode = opts.statusCode || opts.code || 307;
|
|
4
|
+
opts.headers = opts.headers || {};
|
|
5
|
+
if (!opts.reloadDocument) {
|
|
6
|
+
opts.reloadDocument = false;
|
|
7
|
+
try {
|
|
8
|
+
new URL(`${opts.href}`);
|
|
9
|
+
opts.reloadDocument = true;
|
|
10
|
+
} catch {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (opts.throw) {
|
|
14
|
+
throw opts;
|
|
15
|
+
}
|
|
16
|
+
return opts;
|
|
17
|
+
}
|
|
18
|
+
function isRedirect(obj) {
|
|
19
|
+
return !!(obj == null ? void 0 : obj.isRedirect);
|
|
20
|
+
}
|
|
21
|
+
function isResolvedRedirect(obj) {
|
|
22
|
+
return !!(obj == null ? void 0 : obj.isRedirect) && obj.href;
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
isRedirect,
|
|
26
|
+
isResolvedRedirect,
|
|
27
|
+
redirect
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=redirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.js","sources":["../../src/redirect.ts"],"sourcesContent":["import type { NavigateOptions } from './link'\nimport type { RoutePaths } from './routeInfo'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type { PickAsRequired } from './utils'\n\nexport type AnyRedirect = Redirect<any, any, any, any, any>\n\nexport type Redirect<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = '/',\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = {\n href?: string\n /**\n * @deprecated Use `statusCode` instead\n **/\n code?: number\n statusCode?: number\n throw?: any\n headers?: HeadersInit\n} & NavigateOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type ResolvedRedirect<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> = '/',\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> = TFrom,\n TMaskTo extends string = '',\n> = PickAsRequired<\n Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n 'code' | 'statusCode' | 'headers'\n> & {\n href: string\n}\n\nexport function redirect<\n TRouter extends RegisteredRouter,\n const TTo extends string | undefined,\n const TFrom extends string = string,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> {\n ;(opts as any).isRedirect = true\n opts.statusCode = opts.statusCode || opts.code || 307\n opts.headers = opts.headers || {}\n if (!opts.reloadDocument) {\n opts.reloadDocument = false\n try {\n new URL(`${opts.href}`)\n opts.reloadDocument = true\n } catch {}\n }\n\n if (opts.throw) {\n throw opts\n }\n\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n\nexport function isResolvedRedirect(obj: any): obj is ResolvedRedirect {\n return !!obj?.isRedirect && obj.href\n}\n"],"names":[],"mappings":"AAqCO,SAAS,SAOd,MACmD;AACjD,OAAa,aAAa;AAC5B,OAAK,aAAa,KAAK,cAAc,KAAK,QAAQ;AAC7C,OAAA,UAAU,KAAK,WAAW,CAAC;AAC5B,MAAA,CAAC,KAAK,gBAAgB;AACxB,SAAK,iBAAiB;AAClB,QAAA;AACF,UAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,WAAK,iBAAiB;AAAA,IAAA,QAChB;AAAA,IAAA;AAAA,EAAC;AAGX,MAAI,KAAK,OAAO;AACR,UAAA;AAAA,EAAA;AAGD,SAAA;AACT;AAEO,SAAS,WAAW,KAA8B;AAChD,SAAA,CAAC,EAAC,2BAAK;AAChB;AAEO,SAAS,mBAAmB,KAAmC;AACpE,SAAO,CAAC,EAAC,2BAAK,eAAc,IAAI;AAClC;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/router-core",
|
|
3
|
-
"version": "1.114.
|
|
3
|
+
"version": "1.114.12",
|
|
4
4
|
"description": "Modern and scalable routing for React applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@tanstack/store": "^0.7.0",
|
|
48
|
-
"@tanstack/history": "1.114.
|
|
48
|
+
"@tanstack/history": "1.114.12"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {}
|
|
51
51
|
}
|
package/src/index.ts
CHANGED
|
@@ -357,3 +357,8 @@ export type { UseLoaderDepsResult, ResolveUseLoaderDeps } from './useLoaderDeps'
|
|
|
357
357
|
export type { UseLoaderDataResult, ResolveUseLoaderData } from './useLoaderData'
|
|
358
358
|
|
|
359
359
|
export type { Redirect, ResolvedRedirect, AnyRedirect } from './redirect'
|
|
360
|
+
|
|
361
|
+
export { redirect, isRedirect, isResolvedRedirect } from './redirect'
|
|
362
|
+
|
|
363
|
+
export type { NotFoundError } from './not-found'
|
|
364
|
+
export { isNotFound, notFound } from './not-found'
|
package/src/not-found.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RouteIds } from './routeInfo'
|
|
2
|
+
import type { RegisteredRouter } from './router'
|
|
3
|
+
|
|
4
|
+
export type NotFoundError = {
|
|
5
|
+
/**
|
|
6
|
+
@deprecated
|
|
7
|
+
Use `routeId: rootRouteId` instead
|
|
8
|
+
*/
|
|
9
|
+
global?: boolean
|
|
10
|
+
/**
|
|
11
|
+
@private
|
|
12
|
+
Do not use this. It's used internally to indicate a path matching error
|
|
13
|
+
*/
|
|
14
|
+
_global?: boolean
|
|
15
|
+
data?: any
|
|
16
|
+
throw?: boolean
|
|
17
|
+
routeId?: RouteIds<RegisteredRouter['routeTree']>
|
|
18
|
+
headers?: HeadersInit
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function notFound(options: NotFoundError = {}) {
|
|
22
|
+
;(options as any).isNotFound = true
|
|
23
|
+
if (options.throw) throw options
|
|
24
|
+
return options
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function isNotFound(obj: any): obj is NotFoundError {
|
|
28
|
+
return !!obj?.isNotFound
|
|
29
|
+
}
|
package/src/redirect.ts
CHANGED
|
@@ -34,3 +34,38 @@ export type ResolvedRedirect<
|
|
|
34
34
|
> & {
|
|
35
35
|
href: string
|
|
36
36
|
}
|
|
37
|
+
|
|
38
|
+
export function redirect<
|
|
39
|
+
TRouter extends RegisteredRouter,
|
|
40
|
+
const TTo extends string | undefined,
|
|
41
|
+
const TFrom extends string = string,
|
|
42
|
+
const TMaskFrom extends string = TFrom,
|
|
43
|
+
const TMaskTo extends string = '',
|
|
44
|
+
>(
|
|
45
|
+
opts: Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,
|
|
46
|
+
): Redirect<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> {
|
|
47
|
+
;(opts as any).isRedirect = true
|
|
48
|
+
opts.statusCode = opts.statusCode || opts.code || 307
|
|
49
|
+
opts.headers = opts.headers || {}
|
|
50
|
+
if (!opts.reloadDocument) {
|
|
51
|
+
opts.reloadDocument = false
|
|
52
|
+
try {
|
|
53
|
+
new URL(`${opts.href}`)
|
|
54
|
+
opts.reloadDocument = true
|
|
55
|
+
} catch {}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (opts.throw) {
|
|
59
|
+
throw opts
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return opts
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function isRedirect(obj: any): obj is AnyRedirect {
|
|
66
|
+
return !!obj?.isRedirect
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function isResolvedRedirect(obj: any): obj is ResolvedRedirect {
|
|
70
|
+
return !!obj?.isRedirect && obj.href
|
|
71
|
+
}
|