@tanstack/solid-router 1.132.0-alpha.1 → 1.132.0-alpha.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.
Files changed (90) hide show
  1. package/dist/cjs/HeadContent.cjs +9 -6
  2. package/dist/cjs/HeadContent.cjs.map +1 -1
  3. package/dist/cjs/Match.cjs +30 -27
  4. package/dist/cjs/Match.cjs.map +1 -1
  5. package/dist/cjs/ScriptOnce.cjs +2 -2
  6. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  7. package/dist/cjs/fileRoute.cjs.map +1 -1
  8. package/dist/cjs/fileRoute.d.cts +2 -2
  9. package/dist/cjs/index.cjs +2 -10
  10. package/dist/cjs/index.cjs.map +1 -1
  11. package/dist/cjs/index.d.cts +2 -2
  12. package/dist/cjs/link.cjs +13 -9
  13. package/dist/cjs/link.cjs.map +1 -1
  14. package/dist/cjs/route.cjs.map +1 -1
  15. package/dist/cjs/route.d.cts +12 -12
  16. package/dist/cjs/router.cjs +1 -1
  17. package/dist/cjs/router.cjs.map +1 -1
  18. package/dist/cjs/scroll-restoration.cjs +11 -3
  19. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  20. package/dist/cjs/useActiveLocation.cjs +40 -0
  21. package/dist/cjs/useActiveLocation.cjs.map +1 -0
  22. package/dist/cjs/useActiveLocation.d.cts +8 -0
  23. package/dist/cjs/useBlocker.cjs +1 -1
  24. package/dist/cjs/useBlocker.cjs.map +1 -1
  25. package/dist/cjs/useNavigate.cjs +9 -10
  26. package/dist/cjs/useNavigate.cjs.map +1 -1
  27. package/dist/esm/HeadContent.js +9 -6
  28. package/dist/esm/HeadContent.js.map +1 -1
  29. package/dist/esm/Match.js +31 -28
  30. package/dist/esm/Match.js.map +1 -1
  31. package/dist/esm/ScriptOnce.js +2 -2
  32. package/dist/esm/ScriptOnce.js.map +1 -1
  33. package/dist/esm/fileRoute.d.ts +2 -2
  34. package/dist/esm/fileRoute.js.map +1 -1
  35. package/dist/esm/index.d.ts +2 -2
  36. package/dist/esm/index.js +2 -4
  37. package/dist/esm/link.js +13 -9
  38. package/dist/esm/link.js.map +1 -1
  39. package/dist/esm/route.d.ts +12 -12
  40. package/dist/esm/route.js.map +1 -1
  41. package/dist/esm/router.js +1 -1
  42. package/dist/esm/router.js.map +1 -1
  43. package/dist/esm/scroll-restoration.js +11 -3
  44. package/dist/esm/scroll-restoration.js.map +1 -1
  45. package/dist/esm/useActiveLocation.d.ts +8 -0
  46. package/dist/esm/useActiveLocation.js +40 -0
  47. package/dist/esm/useActiveLocation.js.map +1 -0
  48. package/dist/esm/useBlocker.js +1 -1
  49. package/dist/esm/useBlocker.js.map +1 -1
  50. package/dist/esm/useNavigate.js +9 -10
  51. package/dist/esm/useNavigate.js.map +1 -1
  52. package/dist/source/HeadContent.jsx +9 -7
  53. package/dist/source/HeadContent.jsx.map +1 -1
  54. package/dist/source/Match.jsx +33 -34
  55. package/dist/source/Match.jsx.map +1 -1
  56. package/dist/source/ScriptOnce.jsx +1 -1
  57. package/dist/source/ScriptOnce.jsx.map +1 -1
  58. package/dist/source/fileRoute.d.ts +2 -2
  59. package/dist/source/fileRoute.js.map +1 -1
  60. package/dist/source/index.d.ts +2 -2
  61. package/dist/source/index.jsx +1 -1
  62. package/dist/source/index.jsx.map +1 -1
  63. package/dist/source/link.jsx +10 -11
  64. package/dist/source/link.jsx.map +1 -1
  65. package/dist/source/route.d.ts +12 -12
  66. package/dist/source/route.jsx.map +1 -1
  67. package/dist/source/router.js +1 -1
  68. package/dist/source/router.js.map +1 -1
  69. package/dist/source/scroll-restoration.jsx +11 -3
  70. package/dist/source/scroll-restoration.jsx.map +1 -1
  71. package/dist/source/useActiveLocation.d.ts +8 -0
  72. package/dist/source/useActiveLocation.js +33 -0
  73. package/dist/source/useActiveLocation.js.map +1 -0
  74. package/dist/source/useBlocker.jsx +1 -1
  75. package/dist/source/useBlocker.jsx.map +1 -1
  76. package/dist/source/useNavigate.jsx +7 -10
  77. package/dist/source/useNavigate.jsx.map +1 -1
  78. package/package.json +2 -2
  79. package/src/HeadContent.tsx +9 -6
  80. package/src/Match.tsx +35 -37
  81. package/src/ScriptOnce.tsx +2 -2
  82. package/src/fileRoute.ts +10 -2
  83. package/src/index.tsx +3 -3
  84. package/src/link.tsx +11 -11
  85. package/src/route.tsx +76 -18
  86. package/src/router.ts +1 -1
  87. package/src/scroll-restoration.tsx +11 -4
  88. package/src/useActiveLocation.ts +61 -0
  89. package/src/useBlocker.tsx +1 -1
  90. package/src/useNavigate.tsx +10 -11
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,8BAA8B,CAAA;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC7C,MAAM,WAAW,GACf,OAAO,KAAK,8BAA8B,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/D,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAA;IAEf,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,oBAAoB,GAAwC;QAChE,UAAU;QACV,uBAAuB,EAAE,IAAI;KAC9B,CAAA;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,oBAAoB,CAAC,GAAG,GAAG,WAAW,CAAA;IACxC,CAAC;IAED,OAAO,CACL,CAAC,UAAU,CACT,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,EACnF,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"scroll-restoration.jsx","sourceRoot":"","sources":["../../src/scroll-restoration.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,aAAa,EACb,UAAU,GACX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACrD,QAAQ,EAAE,MAAM,CAAC,cAAc;SAChC,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,CAAC,uBAAuB,IAAI,8BAA8B,CAAA;IAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC7C,MAAM,WAAW,GACf,OAAO,KAAK,8BAA8B,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/D,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,oBAAoB,GAAwC;QAChE,UAAU;QACV,uBAAuB,EAAE,IAAI;KAC9B,CAAA;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,oBAAoB,CAAC,GAAG,GAAG,WAAW,CAAA;IACxC,CAAC;IAED,OAAO,CACL,CAAC,UAAU,CACT,QAAQ,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,EACnF,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Accessor } from 'solid-js';
2
+ import type { ParsedLocation } from '@tanstack/router-core';
3
+ export type UseLocationResult = {
4
+ activeLocation: Accessor<ParsedLocation>;
5
+ getFromPath: (from?: string) => Accessor<string>;
6
+ setActiveLocation: (location?: ParsedLocation) => void;
7
+ };
8
+ export declare function useActiveLocation(location?: ParsedLocation): UseLocationResult;
@@ -0,0 +1,33 @@
1
+ import { last } from '@tanstack/router-core';
2
+ import { createEffect, createMemo, createSignal } from 'solid-js';
3
+ import { useMatch } from './useMatch';
4
+ import { useRouter } from './useRouter';
5
+ import { useRouterState } from './useRouterState';
6
+ export function useActiveLocation(location) {
7
+ const router = useRouter();
8
+ // we are not using a variable here for router state location since we need to only calculate that if the location is not passed in. It can result in unnecessary history actions if we do that.
9
+ const [activeLocation, setActiveLocation] = createSignal(location ?? useRouterState({ select: (s) => s.location })());
10
+ const [customActiveLocation, setCustomActiveLocation] = createSignal(location);
11
+ createEffect(() => {
12
+ setActiveLocation(customActiveLocation() ?? useRouterState({ select: (s) => s.location })());
13
+ });
14
+ const matchIndex = useMatch({
15
+ strict: false,
16
+ select: (match) => match.index,
17
+ });
18
+ const getFromPath = (from) => createMemo(() => {
19
+ const activeLocationMatches = router.matchRoutes(customActiveLocation() ?? activeLocation(), {
20
+ _buildLocation: false,
21
+ });
22
+ const activeLocationMatch = last(activeLocationMatches);
23
+ return (from ??
24
+ activeLocationMatch?.fullPath ??
25
+ router.state.matches[matchIndex()].fullPath);
26
+ });
27
+ return {
28
+ activeLocation,
29
+ getFromPath,
30
+ setActiveLocation: setCustomActiveLocation,
31
+ };
32
+ }
33
+ //# sourceMappingURL=useActiveLocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveLocation.js","sourceRoot":"","sources":["../../src/useActiveLocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAUjD,MAAM,UAAU,iBAAiB,CAC/B,QAAyB;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,gMAAgM;IAChM,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,YAAY,CACtD,QAAQ,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC5D,CAAA;IACD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,YAAY,CAElE,QAAQ,CAAC,CAAA;IAEX,YAAY,CAAC,GAAG,EAAE;QAChB,iBAAiB,CACf,oBAAoB,EAAE,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC1B,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;KAC/B,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,CAAC,IAAa,EAAE,EAAE,CACpC,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,qBAAqB,GAAG,MAAM,CAAC,WAAW,CAC9C,oBAAoB,EAAE,IAAI,cAAc,EAAE,EAC1C;YACE,cAAc,EAAE,KAAK;SACtB,CACF,CAAA;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAEvD,OAAO,CACL,IAAI;YACJ,mBAAmB,EAAE,QAAQ;YAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAE,CAAC,QAAQ,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,cAAc;QACd,WAAW;QACX,iBAAiB,EAAE,uBAAuB;KAC3C,CAAA;AACH,CAAC"}
@@ -60,7 +60,7 @@ export function useBlocker(opts, condition) {
60
60
  Solid.createEffect(() => {
61
61
  const blockerFnComposed = async (blockerFnArgs) => {
62
62
  function getLocation(location) {
63
- const parsedLocation = router.parseLocation(undefined, location);
63
+ const parsedLocation = router.parseLocation(location);
64
64
  const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname, undefined);
65
65
  if (matchedRoutes.foundRoute === undefined) {
66
66
  throw new Error(`No route found for location ${location.href}`);
@@ -1 +1 @@
1
- {"version":3,"file":"useBlocker.jsx","sourceRoot":"","sources":["../../src/useBlocker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBlocker.jsx","sourceRoot":"","sources":["../../src/useBlocker.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,15 @@
1
1
  import * as Solid from 'solid-js';
2
2
  import { useRouter } from './useRouter';
3
- import { useMatch } from './useMatch';
3
+ import { useActiveLocation } from './useActiveLocation';
4
4
  export function useNavigate(_defaultOpts) {
5
- const { navigate, state } = useRouter();
6
- const matchIndex = useMatch({
7
- strict: false,
8
- select: (match) => match.index,
9
- });
5
+ const router = useRouter();
6
+ const { getFromPath, setActiveLocation } = useActiveLocation(router.latestLocation);
10
7
  return ((options) => {
11
- return navigate({
8
+ setActiveLocation(router.latestLocation);
9
+ const from = getFromPath(options.from ?? _defaultOpts?.from);
10
+ return router.navigate({
12
11
  ...options,
13
- from: options.from ??
14
- _defaultOpts?.from ??
15
- state.matches[matchIndex()].fullPath,
12
+ from: from(),
16
13
  });
17
14
  });
18
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,CAAA;IAEvC,MAAM,UAAU,GAAG,QAAQ,CAAC;QAC1B,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;KAC/B,CAAC,CAAA;IAEF,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,OAAO,QAAQ,CAAC;YACd,GAAG,OAAO;YACV,IAAI,EACF,OAAO,CAAC,IAAI;gBACZ,YAAY,EAAE,IAAI;gBAClB,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAE,CAAC,QAAQ;SACxC,CAAC,CAAA;IACJ,CAAC,CAAoC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAMtB,KAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,GAAG,KAAK;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"useNavigate.jsx","sourceRoot":"","sources":["../../src/useNavigate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AASvD,MAAM,UAAU,WAAW,CAGzB,YAED;IACC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAC1D,MAAM,CAAC,cAAc,CACtB,CAAA;IAED,OAAO,CAAC,CAAC,OAAwB,EAAE,EAAE;QACnC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,CAAC,CAAA;QAE5D,OAAO,MAAM,CAAC,QAAQ,CAAC;YACrB,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,EAAE;SACb,CAAC,CAAA;IACJ,CAAC,CAAoC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAMtB,KAA+D;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,GAAG,KAAK;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-router",
3
- "version": "1.132.0-alpha.1",
3
+ "version": "1.132.0-alpha.12",
4
4
  "description": "Modern and scalable routing for Solid applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -89,7 +89,7 @@
89
89
  "tiny-invariant": "^1.3.3",
90
90
  "tiny-warning": "^1.0.3",
91
91
  "@tanstack/history": "1.132.0-alpha.1",
92
- "@tanstack/router-core": "1.132.0-alpha.1"
92
+ "@tanstack/router-core": "1.132.0-alpha.12"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@solidjs/testing-library": "^0.8.10",
@@ -18,9 +18,12 @@ export const useTags = () => {
18
18
  const resultMeta: Array<RouterManagedTag> = []
19
19
  const metaByAttribute: Record<string, true> = {}
20
20
  let title: RouterManagedTag | undefined
21
- ;[...routeMeta()].reverse().forEach((metas) => {
22
- ;[...metas].reverse().forEach((m) => {
23
- if (!m) return
21
+ const routeMetasArray = routeMeta()
22
+ for (let i = routeMetasArray.length - 1; i >= 0; i--) {
23
+ const metas = routeMetasArray[i]!
24
+ for (let j = metas.length - 1; j >= 0; j--) {
25
+ const m = metas[j]
26
+ if (!m) continue
24
27
 
25
28
  if (m.title) {
26
29
  if (!title) {
@@ -33,7 +36,7 @@ export const useTags = () => {
33
36
  const attribute = m.name ?? m.property
34
37
  if (attribute) {
35
38
  if (metaByAttribute[attribute]) {
36
- return
39
+ continue
37
40
  } else {
38
41
  metaByAttribute[attribute] = true
39
42
  }
@@ -46,8 +49,8 @@ export const useTags = () => {
46
49
  },
47
50
  })
48
51
  }
49
- })
50
- })
52
+ }
53
+ }
51
54
 
52
55
  if (title) {
53
56
  resultMeta.push(title)
package/src/Match.tsx CHANGED
@@ -6,7 +6,6 @@ import {
6
6
  getLocationChangeInfo,
7
7
  isNotFound,
8
8
  isRedirect,
9
- pick,
10
9
  rootRouteId,
11
10
  } from '@tanstack/router-core'
12
11
  import { Dynamic } from 'solid-js/web'
@@ -30,7 +29,11 @@ export const Match = (props: { matchId: string }) => {
30
29
  match,
31
30
  `Could not find match for matchId "${props.matchId}". Please file an issue!`,
32
31
  )
33
- return pick(match, ['routeId', 'ssr', '_displayPending'])
32
+ return {
33
+ routeId: match.routeId,
34
+ ssr: match.ssr,
35
+ _displayPending: match._displayPending,
36
+ }
34
37
  },
35
38
  })
36
39
 
@@ -182,8 +185,7 @@ export const MatchInner = (props: { matchId: string }): any => {
182
185
 
183
186
  const matchState = useRouterState({
184
187
  select: (s) => {
185
- const matchIndex = s.matches.findIndex((d) => d.id === props.matchId)
186
- const match = s.matches[matchIndex]!
188
+ const match = s.matches.find((d) => d.id === props.matchId)!
187
189
  const routeId = match.routeId as string
188
190
 
189
191
  const remountFn =
@@ -200,13 +202,13 @@ export const MatchInner = (props: { matchId: string }): any => {
200
202
  return {
201
203
  key,
202
204
  routeId,
203
- match: pick(match, [
204
- 'id',
205
- 'status',
206
- 'error',
207
- '_forcePending',
208
- '_displayPending',
209
- ]),
205
+ match: {
206
+ id: match.id,
207
+ status: match.status,
208
+ error: match.error,
209
+ _forcePending: match._forcePending,
210
+ _displayPending: match._displayPending,
211
+ },
210
212
  }
211
213
  },
212
214
  })
@@ -218,8 +220,9 @@ export const MatchInner = (props: { matchId: string }): any => {
218
220
  const out = () => {
219
221
  const Comp = route().options.component ?? router.options.defaultComponent
220
222
  if (Comp) {
223
+ const key = matchState().key ?? matchState().match.id
221
224
  return (
222
- <Solid.Show when={matchState().match.id} keyed>
225
+ <Solid.Show when={key} keyed>
223
226
  <Comp />
224
227
  </Solid.Show>
225
228
  )
@@ -232,7 +235,8 @@ export const MatchInner = (props: { matchId: string }): any => {
232
235
  <Solid.Match when={match()._displayPending}>
233
236
  {(_) => {
234
237
  const [displayPendingResult] = Solid.createResource(
235
- () => router.getMatch(match().id)?.displayPendingPromise,
238
+ () =>
239
+ router.getMatch(match().id)?._nonReactive.displayPendingPromise,
236
240
  )
237
241
 
238
242
  return <>{displayPendingResult()}</>
@@ -241,7 +245,7 @@ export const MatchInner = (props: { matchId: string }): any => {
241
245
  <Solid.Match when={match()._forcePending}>
242
246
  {(_) => {
243
247
  const [minPendingResult] = Solid.createResource(
244
- () => router.getMatch(match().id)?.minPendingPromise,
248
+ () => router.getMatch(match().id)?._nonReactive.minPendingPromise,
245
249
  )
246
250
 
247
251
  return <>{minPendingResult()}</>
@@ -252,33 +256,27 @@ export const MatchInner = (props: { matchId: string }): any => {
252
256
  const pendingMinMs =
253
257
  route().options.pendingMinMs ?? router.options.defaultPendingMinMs
254
258
 
255
- if (pendingMinMs && !router.getMatch(match().id)?.minPendingPromise) {
256
- // Create a promise that will resolve after the minPendingMs
257
- if (!router.isServer) {
258
- const minPendingPromise = createControlledPromise<void>()
259
-
260
- Promise.resolve().then(() => {
261
- router.updateMatch(match().id, (prev) => ({
262
- ...prev,
263
- minPendingPromise,
264
- }))
265
- })
266
-
267
- setTimeout(() => {
268
- minPendingPromise.resolve()
269
-
270
- // We've handled the minPendingPromise, so we can delete it
271
- router.updateMatch(match().id, (prev) => ({
272
- ...prev,
273
- minPendingPromise: undefined,
274
- }))
275
- }, pendingMinMs)
259
+ if (pendingMinMs) {
260
+ const routerMatch = router.getMatch(match().id)
261
+ if (routerMatch && !routerMatch._nonReactive.minPendingPromise) {
262
+ // Create a promise that will resolve after the minPendingMs
263
+ if (!router.isServer) {
264
+ const minPendingPromise = createControlledPromise<void>()
265
+
266
+ routerMatch._nonReactive.minPendingPromise = minPendingPromise
267
+
268
+ setTimeout(() => {
269
+ minPendingPromise.resolve()
270
+ // We've handled the minPendingPromise, so we can delete it
271
+ routerMatch._nonReactive.minPendingPromise = undefined
272
+ }, pendingMinMs)
273
+ }
276
274
  }
277
275
  }
278
276
 
279
277
  const [loaderResult] = Solid.createResource(async () => {
280
278
  await new Promise((r) => setTimeout(r, 0))
281
- return router.getMatch(match().id)?.loadPromise
279
+ return router.getMatch(match().id)?._nonReactive.loadPromise
282
280
  })
283
281
 
284
282
  return <>{loaderResult()}</>
@@ -297,7 +295,7 @@ export const MatchInner = (props: { matchId: string }): any => {
297
295
 
298
296
  const [loaderResult] = Solid.createResource(async () => {
299
297
  await new Promise((r) => setTimeout(r, 0))
300
- return router.getMatch(match().id)?.loadPromise
298
+ return router.getMatch(match().id)?._nonReactive.loadPromise
301
299
  })
302
300
 
303
301
  return <>{loaderResult()}</>
@@ -11,8 +11,8 @@ export function ScriptOnce({
11
11
 
12
12
  return (
13
13
  <script
14
- class="tsr-once"
15
- innerHTML={[children].filter(Boolean).join('\n')}
14
+ class="$tsr"
15
+ innerHTML={[children].filter(Boolean).join('\n') + ';$_TSR.c()'}
16
16
  />
17
17
  )
18
18
  }
package/src/fileRoute.ts CHANGED
@@ -20,6 +20,7 @@ import type {
20
20
  FileBaseRouteOptions,
21
21
  FileRoutesByPath,
22
22
  LazyRouteOptions,
23
+ Register,
23
24
  RegisteredRouter,
24
25
  ResolveParams,
25
26
  Route,
@@ -76,6 +77,7 @@ export class FileRoute<
76
77
  }
77
78
 
78
79
  createRoute = <
80
+ TRegister extends Register = Register,
79
81
  TSearchValidator = undefined,
80
82
  TParams = ResolveParams<TPath>,
81
83
  TRouteContextFn = AnyContext,
@@ -83,8 +85,10 @@ export class FileRoute<
83
85
  TLoaderDeps extends Record<string, any> = {},
84
86
  TLoaderFn = undefined,
85
87
  TChildren = unknown,
88
+ TSSR = unknown,
86
89
  >(
87
90
  options?: FileBaseRouteOptions<
91
+ TRegister,
88
92
  TParentRoute,
89
93
  TId,
90
94
  TPath,
@@ -94,7 +98,9 @@ export class FileRoute<
94
98
  TLoaderFn,
95
99
  AnyContext,
96
100
  TRouteContextFn,
97
- TBeforeLoadFn
101
+ TBeforeLoadFn,
102
+ AnyContext,
103
+ TSSR
98
104
  > &
99
105
  UpdatableRouteOptions<
100
106
  TParentRoute,
@@ -109,6 +115,7 @@ export class FileRoute<
109
115
  TBeforeLoadFn
110
116
  >,
111
117
  ): Route<
118
+ TRegister,
112
119
  TParentRoute,
113
120
  TPath,
114
121
  TFullPath,
@@ -122,7 +129,8 @@ export class FileRoute<
122
129
  TLoaderDeps,
123
130
  TLoaderFn,
124
131
  TChildren,
125
- unknown
132
+ unknown,
133
+ TSSR
126
134
  > => {
127
135
  warning(
128
136
  this.silent,
package/src/index.tsx CHANGED
@@ -13,15 +13,12 @@ export {
13
13
  matchPathname,
14
14
  removeBasepath,
15
15
  matchByPath,
16
- encode,
17
- decode,
18
16
  rootRouteId,
19
17
  defaultSerializeError,
20
18
  defaultParseSearch,
21
19
  defaultStringifySearch,
22
20
  parseSearchWith,
23
21
  stringifySearchWith,
24
- pick,
25
22
  functionalUpdate,
26
23
  replaceEqualDeep,
27
24
  isPlainObject,
@@ -30,6 +27,7 @@ export {
30
27
  createControlledPromise,
31
28
  retainSearchParams,
32
29
  stripSearchParams,
30
+ createSerializationAdapter,
33
31
  } from '@tanstack/router-core'
34
32
 
35
33
  export type {
@@ -192,6 +190,8 @@ export type {
192
190
  InjectedHtmlEntry,
193
191
  CreateFileRoute,
194
192
  CreateLazyFileRoute,
193
+ AnySerializationAdapter,
194
+ SerializationAdapter,
195
195
  } from '@tanstack/router-core'
196
196
 
197
197
  export {
package/src/link.tsx CHANGED
@@ -15,7 +15,7 @@ import { useRouter } from './useRouter'
15
15
 
16
16
  import { useIntersectionObserver } from './utils'
17
17
 
18
- import { useMatch } from './useMatch'
18
+ import { useActiveLocation } from './useActiveLocation'
19
19
  import type {
20
20
  AnyRouter,
21
21
  Constrain,
@@ -133,20 +133,20 @@ export function useLinkProps<
133
133
  select: (s) => s.location.searchStr,
134
134
  })
135
135
 
136
- // when `from` is not supplied, use the route of the current match as the `from` location
137
- // so relative routing works as expected
138
- const from = useMatch({
139
- strict: false,
140
- select: (match) => options.from ?? match.fullPath,
141
- })
136
+ const { getFromPath, activeLocation } = useActiveLocation()
142
137
 
143
- const _options = () => ({
144
- ...options,
145
- from: from(),
146
- })
138
+ const from = getFromPath(options.from)
139
+
140
+ const _options = () => {
141
+ return {
142
+ ...options,
143
+ from: from(),
144
+ }
145
+ }
147
146
 
148
147
  const next = Solid.createMemo(() => {
149
148
  currentSearch()
149
+ activeLocation()
150
150
  return router.buildLocation(_options() as any)
151
151
  })
152
152