@tanstack/react-router 0.0.1-beta.50 → 0.0.1-beta.52

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.
@@ -7,7 +7,7 @@
7
7
  "name": "index.production.js",
8
8
  "children": [
9
9
  {
10
- "uid": "4de6-81",
10
+ "uid": "7dac-81",
11
11
  "name": "\u0000rollupPluginBabelHelpers.js"
12
12
  },
13
13
  {
@@ -15,11 +15,11 @@
15
15
  "children": [
16
16
  {
17
17
  "name": "tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/esm/tiny-invariant.js",
18
- "uid": "4de6-83"
18
+ "uid": "7dac-83"
19
19
  },
20
20
  {
21
21
  "name": "immer@9.0.16/node_modules/immer/dist/immer.esm.mjs",
22
- "uid": "4de6-85"
22
+ "uid": "7dac-85"
23
23
  }
24
24
  ]
25
25
  },
@@ -28,17 +28,17 @@
28
28
  "children": [
29
29
  {
30
30
  "name": "router-core/build/esm/index.js",
31
- "uid": "4de6-87"
31
+ "uid": "7dac-87"
32
32
  },
33
33
  {
34
34
  "name": "react-router/src",
35
35
  "children": [
36
36
  {
37
- "uid": "4de6-89",
37
+ "uid": "7dac-89",
38
38
  "name": "useStore.ts"
39
39
  },
40
40
  {
41
- "uid": "4de6-91",
41
+ "uid": "7dac-91",
42
42
  "name": "index.tsx"
43
43
  }
44
44
  ]
@@ -51,155 +51,155 @@
51
51
  "isRoot": true
52
52
  },
53
53
  "nodeParts": {
54
- "4de6-81": {
54
+ "7dac-81": {
55
55
  "renderedLength": 429,
56
56
  "gzipLength": 238,
57
57
  "brotliLength": 0,
58
- "mainUid": "4de6-80"
58
+ "mainUid": "7dac-80"
59
59
  },
60
- "4de6-83": {
60
+ "7dac-83": {
61
61
  "renderedLength": 181,
62
62
  "gzipLength": 129,
63
63
  "brotliLength": 0,
64
- "mainUid": "4de6-82"
64
+ "mainUid": "7dac-82"
65
65
  },
66
- "4de6-85": {
66
+ "7dac-85": {
67
67
  "renderedLength": 8203,
68
68
  "gzipLength": 3238,
69
69
  "brotliLength": 0,
70
- "mainUid": "4de6-84"
70
+ "mainUid": "7dac-84"
71
71
  },
72
- "4de6-87": {
73
- "renderedLength": 56576,
74
- "gzipLength": 13412,
72
+ "7dac-87": {
73
+ "renderedLength": 56528,
74
+ "gzipLength": 13417,
75
75
  "brotliLength": 0,
76
- "mainUid": "4de6-86"
76
+ "mainUid": "7dac-86"
77
77
  },
78
- "4de6-89": {
78
+ "7dac-89": {
79
79
  "renderedLength": 1347,
80
80
  "gzipLength": 484,
81
81
  "brotliLength": 0,
82
- "mainUid": "4de6-88"
82
+ "mainUid": "7dac-88"
83
83
  },
84
- "4de6-91": {
85
- "renderedLength": 12620,
86
- "gzipLength": 3340,
84
+ "7dac-91": {
85
+ "renderedLength": 12608,
86
+ "gzipLength": 3327,
87
87
  "brotliLength": 0,
88
- "mainUid": "4de6-90"
88
+ "mainUid": "7dac-90"
89
89
  }
90
90
  },
91
91
  "nodeMetas": {
92
- "4de6-80": {
92
+ "7dac-80": {
93
93
  "id": "\u0000rollupPluginBabelHelpers.js",
94
94
  "moduleParts": {
95
- "index.production.js": "4de6-81"
95
+ "index.production.js": "7dac-81"
96
96
  },
97
97
  "imported": [],
98
98
  "importedBy": [
99
99
  {
100
- "uid": "4de6-90"
100
+ "uid": "7dac-90"
101
101
  }
102
102
  ]
103
103
  },
104
- "4de6-82": {
104
+ "7dac-82": {
105
105
  "id": "/node_modules/.pnpm/tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/esm/tiny-invariant.js",
106
106
  "moduleParts": {
107
- "index.production.js": "4de6-83"
107
+ "index.production.js": "7dac-83"
108
108
  },
109
109
  "imported": [],
110
110
  "importedBy": [
111
111
  {
112
- "uid": "4de6-86"
112
+ "uid": "7dac-86"
113
113
  }
114
114
  ]
115
115
  },
116
- "4de6-84": {
116
+ "7dac-84": {
117
117
  "id": "/node_modules/.pnpm/immer@9.0.16/node_modules/immer/dist/immer.esm.mjs",
118
118
  "moduleParts": {
119
- "index.production.js": "4de6-85"
119
+ "index.production.js": "7dac-85"
120
120
  },
121
121
  "imported": [],
122
122
  "importedBy": [
123
123
  {
124
- "uid": "4de6-86"
124
+ "uid": "7dac-86"
125
125
  }
126
126
  ]
127
127
  },
128
- "4de6-86": {
128
+ "7dac-86": {
129
129
  "id": "/packages/router-core/build/esm/index.js",
130
130
  "moduleParts": {
131
- "index.production.js": "4de6-87"
131
+ "index.production.js": "7dac-87"
132
132
  },
133
133
  "imported": [
134
134
  {
135
- "uid": "4de6-82"
135
+ "uid": "7dac-82"
136
136
  },
137
137
  {
138
- "uid": "4de6-84"
138
+ "uid": "7dac-84"
139
139
  }
140
140
  ],
141
141
  "importedBy": [
142
142
  {
143
- "uid": "4de6-90"
143
+ "uid": "7dac-90"
144
144
  }
145
145
  ]
146
146
  },
147
- "4de6-88": {
147
+ "7dac-88": {
148
148
  "id": "/packages/react-router/src/useStore.ts",
149
149
  "moduleParts": {
150
- "index.production.js": "4de6-89"
150
+ "index.production.js": "7dac-89"
151
151
  },
152
152
  "imported": [
153
153
  {
154
- "uid": "4de6-93"
154
+ "uid": "7dac-93"
155
155
  }
156
156
  ],
157
157
  "importedBy": [
158
158
  {
159
- "uid": "4de6-90"
159
+ "uid": "7dac-90"
160
160
  }
161
161
  ]
162
162
  },
163
- "4de6-90": {
163
+ "7dac-90": {
164
164
  "id": "/packages/react-router/src/index.tsx",
165
165
  "moduleParts": {
166
- "index.production.js": "4de6-91"
166
+ "index.production.js": "7dac-91"
167
167
  },
168
168
  "imported": [
169
169
  {
170
- "uid": "4de6-80"
170
+ "uid": "7dac-80"
171
171
  },
172
172
  {
173
- "uid": "4de6-92"
173
+ "uid": "7dac-92"
174
174
  },
175
175
  {
176
- "uid": "4de6-86"
176
+ "uid": "7dac-86"
177
177
  },
178
178
  {
179
- "uid": "4de6-88"
179
+ "uid": "7dac-88"
180
180
  }
181
181
  ],
182
182
  "importedBy": [],
183
183
  "isEntry": true
184
184
  },
185
- "4de6-92": {
185
+ "7dac-92": {
186
186
  "id": "react",
187
187
  "moduleParts": {},
188
188
  "imported": [],
189
189
  "importedBy": [
190
190
  {
191
- "uid": "4de6-90"
191
+ "uid": "7dac-90"
192
192
  }
193
193
  ],
194
194
  "isExternal": true
195
195
  },
196
- "4de6-93": {
196
+ "7dac-93": {
197
197
  "id": "use-sync-external-store/shim/with-selector",
198
198
  "moduleParts": {},
199
199
  "imported": [],
200
200
  "importedBy": [
201
201
  {
202
- "uid": "4de6-88"
202
+ "uid": "7dac-88"
203
203
  }
204
204
  ],
205
205
  "isExternal": true
@@ -167,13 +167,8 @@
167
167
  const getLocation = () => parseLocation(entries[index], currentState);
168
168
  return createHistory({
169
169
  getLocation,
170
- listener: onUpdate => {
171
- window.addEventListener(popStateEvent, onUpdate);
172
- // We might need to handle the hashchange event in the future
173
- // window.addEventListener(hashChangeEvent, onUpdate)
174
- return () => {
175
- window.removeEventListener(popStateEvent, onUpdate);
176
- };
170
+ listener: () => {
171
+ return () => {};
177
172
  },
178
173
  pushState: (path, state) => {
179
174
  currentState = {
@@ -724,7 +719,7 @@
724
719
  Object.assign(this, {
725
720
  route,
726
721
  router,
727
- matchId: opts.matchId,
722
+ id: opts.id,
728
723
  pathname: opts.pathname,
729
724
  params: opts.params,
730
725
  store: createStore({
@@ -742,7 +737,7 @@
742
737
  this.store.setState(s => s.status = 'success');
743
738
  }
744
739
  }
745
- #setLoaderData = loaderData => {
740
+ setLoaderData = loaderData => {
746
741
  batch(() => {
747
742
  this.store.setState(s => {
748
743
  s.routeLoaderData = loaderData;
@@ -817,7 +812,7 @@
817
812
  if (this.route.options.loader) {
818
813
  const data = await this.router.loadMatchData(this);
819
814
  if (latestPromise = checkLatest()) return latestPromise;
820
- this.#setLoaderData(data);
815
+ this.setLoaderData(data);
821
816
  }
822
817
  this.store.setState(s => {
823
818
  s.error = undefined;
@@ -1002,8 +997,7 @@
1002
997
  throw new Error('Failed to fetch match data');
1003
998
  };
1004
999
  class Router {
1005
- // __location: Location<TAllRouteInfo['fullSearchSchema']>
1006
-
1000
+ #unsubHistory;
1007
1001
  startedLoadingAt = Date.now();
1008
1002
  resolveNavigation = () => {};
1009
1003
  constructor(options) {
@@ -1018,13 +1012,12 @@
1018
1012
  parseSearch: options?.parseSearch ?? defaultParseSearch,
1019
1013
  fetchServerDataFn: options?.fetchServerDataFn ?? defaultFetchServerDataFn
1020
1014
  };
1021
- this.history = this.options?.history ?? createBrowserHistory();
1022
1015
  this.store = createStore(getInitialRouterState());
1023
1016
  this.basepath = '';
1024
1017
  this.update(options);
1025
1018
 
1026
1019
  // Allow frameworks to hook into the router creation
1027
- this.options.createRouter?.(this);
1020
+ this.options.Router?.(this);
1028
1021
  }
1029
1022
  reset = () => {
1030
1023
  this.store.setState(s => Object.assign(s, getInitialRouterState()));
@@ -1036,9 +1029,6 @@
1036
1029
  if (!this.store.state.currentMatches.length) {
1037
1030
  this.load();
1038
1031
  }
1039
- const unsubHistory = this.history.listen(() => {
1040
- this.load(this.#parseLocation(this.store.state.latestLocation));
1041
- });
1042
1032
  const visibilityChangeEvent = 'visibilitychange';
1043
1033
  const focusEvent = 'focus';
1044
1034
 
@@ -1051,7 +1041,6 @@
1051
1041
  window.addEventListener(focusEvent, this.#onFocus, false);
1052
1042
  }
1053
1043
  return () => {
1054
- unsubHistory();
1055
1044
  if (window.removeEventListener) {
1056
1045
  // Be sure to unsubscribe if a new handler is set
1057
1046
 
@@ -1063,13 +1052,20 @@
1063
1052
  return () => {};
1064
1053
  };
1065
1054
  update = opts => {
1066
- if (!this.store.state.latestLocation) {
1055
+ Object.assign(this.options, opts);
1056
+ if (!this.history || this.options.history && this.options.history !== this.history) {
1057
+ if (this.#unsubHistory) {
1058
+ this.#unsubHistory();
1059
+ }
1060
+ this.history = this.options.history ?? (isServer ? createMemoryHistory() : createBrowserHistory());
1067
1061
  this.store.setState(s => {
1068
1062
  s.latestLocation = this.#parseLocation();
1069
1063
  s.currentLocation = s.latestLocation;
1070
1064
  });
1065
+ this.#unsubHistory = this.history.listen(() => {
1066
+ this.load(this.#parseLocation(this.store.state.latestLocation));
1067
+ });
1071
1068
  }
1072
- Object.assign(this.options, opts);
1073
1069
  const {
1074
1070
  basepath,
1075
1071
  routeConfig
@@ -1294,7 +1290,7 @@
1294
1290
  const interpolatedPath = interpolatePath(foundRoute.path, params);
1295
1291
  const matchId = interpolatePath(foundRoute.id, params, true);
1296
1292
  const match = existingMatches.find(d => d.id === matchId) || this.store.state.matchCache[matchId]?.match || new RouteMatch(this, foundRoute, {
1297
- matchId,
1293
+ id: matchId,
1298
1294
  params,
1299
1295
  pathname: joinPaths([this.basepath, interpolatedPath])
1300
1296
  });
@@ -1366,10 +1362,11 @@
1366
1362
 
1367
1363
  // TODO: batch requests when possible
1368
1364
 
1369
- return this.options.fetchServerDataFn({
1365
+ const res = await this.options.fetchServerDataFn({
1370
1366
  router: this,
1371
1367
  routeMatch
1372
1368
  });
1369
+ return res;
1373
1370
  }
1374
1371
  };
1375
1372
  invalidateRoute = async opts => {
@@ -1560,7 +1557,7 @@
1560
1557
  state: {
1561
1558
  ...pick(this.store.state, ['latestLocation', 'currentLocation', 'status', 'lastUpdated']),
1562
1559
  currentMatches: this.store.state.currentMatches.map(match => ({
1563
- matchId: match.id,
1560
+ id: match.id,
1564
1561
  state: {
1565
1562
  ...pick(match.store.state, ['status', 'routeLoaderData', 'invalidAt', 'invalid'])
1566
1563
  }
@@ -1580,8 +1577,11 @@
1580
1577
  });
1581
1578
  currentMatches.forEach((match, index) => {
1582
1579
  const dehydratedMatch = dehydratedRouter.state.currentMatches[index];
1583
- invariant(dehydratedMatch && dehydratedMatch.matchId === match.id, 'Oh no! There was a hydration mismatch when attempting to rethis.store the state of the router! 😬');
1584
- Object.assign(match, dehydratedMatch);
1580
+ invariant(dehydratedMatch && dehydratedMatch.id === match.id, 'Oh no! There was a hydration mismatch when attempting to rethis.store the state of the router! 😬');
1581
+ match.store.setState(s => {
1582
+ Object.assign(s, dehydratedMatch.state);
1583
+ });
1584
+ match.setLoaderData(dehydratedMatch.state.routeLoaderData);
1585
1585
  });
1586
1586
  currentMatches.forEach(match => match.__validate());
1587
1587
  Object.assign(s, {
@@ -1727,7 +1727,9 @@
1727
1727
  id,
1728
1728
  ...next.state
1729
1729
  });
1730
- this.load(this.#parseLocation(this.store.state.latestLocation));
1730
+
1731
+ // this.load(this.#parseLocation(this.store.state.latestLocation))
1732
+
1731
1733
  return this.navigationPromise = new Promise(resolve => {
1732
1734
  const previousNavigationResolve = this.resolveNavigation;
1733
1735
  this.resolveNavigation = () => {
@@ -1769,7 +1771,7 @@
1769
1771
  });
1770
1772
  }
1771
1773
 
1772
- // createRouterAction is a constrained identify function that takes options: key, action, onSuccess, onError, onSettled, etc
1774
+ // RouterAction is a constrained identify function that takes options: key, action, onSuccess, onError, onSettled, etc
1773
1775
  function createAction(options) {
1774
1776
  const store = createStore({
1775
1777
  submissions: []
@@ -2026,7 +2028,7 @@
2026
2028
  ...rest
2027
2029
  }) {
2028
2030
  router.update(rest);
2029
- const [,, currentMatches] = useStore(router.store, s => [s.status, s.pendingMatches, s.currentMatches], true);
2031
+ const currentMatches = useStore(router.store, s => s.currentMatches, undefined);
2030
2032
  React__namespace.useEffect(router.mount, [router]);
2031
2033
  return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(routerContext.Provider, {
2032
2034
  value: {
@@ -2193,11 +2195,11 @@
2193
2195
 
2194
2196
  // React.useEffect(() => {
2195
2197
  // if (activeErrorState) {
2196
- // let prevKey = router.store.currentLocation.key
2198
+ // let prevKey = router.store.state.currentLocation.key
2197
2199
  // return createRoot((dispose) => {
2198
2200
  // createEffect(() => {
2199
- // if (router.store.currentLocation.key !== prevKey) {
2200
- // prevKey = router.store.currentLocation.key
2201
+ // if (router.store.state.currentLocation.key !== prevKey) {
2202
+ // prevKey = router.store.state.currentLocation.key
2201
2203
  // setActiveErrorState({} as any)
2202
2204
  // }
2203
2205
  // })