@tanstack/router-core 0.0.1-beta.1 → 0.0.1-beta.11

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.
@@ -41,7 +41,6 @@ exports.trimPathLeft = path.trimPathLeft;
41
41
  exports.trimPathRight = path.trimPathRight;
42
42
  exports.decode = qss.decode;
43
43
  exports.encode = qss.encode;
44
- exports.cascadeLoaderData = route.cascadeLoaderData;
45
44
  exports.createRoute = route.createRoute;
46
45
  exports.createRouteConfig = routeConfig.createRouteConfig;
47
46
  exports.rootRouteId = routeConfig.rootRouteId;
@@ -53,6 +52,7 @@ exports.parseSearchWith = searchParams.parseSearchWith;
53
52
  exports.stringifySearchWith = searchParams.stringifySearchWith;
54
53
  exports.functionalUpdate = utils.functionalUpdate;
55
54
  exports.last = utils.last;
55
+ exports.pick = utils.pick;
56
56
  exports.replaceEqualDeep = utils.replaceEqualDeep;
57
57
  exports.warning = utils.warning;
58
58
  //# sourceMappingURL=index.js.map
@@ -42,6 +42,7 @@ function toValue(mix) {
42
42
  var str = decodeURIComponent(mix);
43
43
  if (str === 'false') return false;
44
44
  if (str === 'true') return true;
45
+ if (str.charAt(0) === '0') return str;
45
46
  return +str * 0 === 0 ? +str : str;
46
47
  }
47
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"qss.js","sources":["../../../../../src/qss.ts"],"sourcesContent":["// @ts-nocheck\n\n// qss has been slightly modified and inlined here for our use cases (and compression's sake). We've included it as a hard dependency for MIT license attribution.\n\nexport function encode(obj, pfx?: string) {\n var k,\n i,\n tmp,\n str = ''\n\n for (k in obj) {\n if ((tmp = obj[k]) !== void 0) {\n if (Array.isArray(tmp)) {\n for (i = 0; i < tmp.length; i++) {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i])\n }\n } else {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp)\n }\n }\n }\n\n return (pfx || '') + str\n}\n\nfunction toValue(mix) {\n if (!mix) return ''\n var str = decodeURIComponent(mix)\n if (str === 'false') return false\n if (str === 'true') return true\n return +str * 0 === 0 ? +str : str\n}\n\nexport function decode(str) {\n var tmp,\n k,\n out = {},\n arr = str.split('&')\n\n while ((tmp = arr.shift())) {\n tmp = tmp.split('=')\n k = tmp.shift()\n if (out[k] !== void 0) {\n out[k] = [].concat(out[k], toValue(tmp.shift()))\n } else {\n out[k] = toValue(tmp.shift())\n }\n }\n\n return out\n}\n"],"names":["encode","obj","pfx","k","i","tmp","str","Array","isArray","length","encodeURIComponent","toValue","mix","decodeURIComponent","decode","out","arr","split","shift","concat"],"mappings":";;;;;;;;;;;;;;AAAA;AAEA;AAEO,SAASA,MAAT,CAAgBC,GAAhB,EAAqBC,GAArB,EAAmC;AACxC,EAAA,IAAIC,CAAJ;AAAA,MACEC,CADF;AAAA,MAEEC,GAFF;MAGEC,GAAG,GAAG,EAHR,CAAA;;EAKA,KAAKH,CAAL,IAAUF,GAAV,EAAe;IACb,IAAI,CAACI,GAAG,GAAGJ,GAAG,CAACE,CAAD,CAAV,MAAmB,KAAK,CAA5B,EAA+B;AAC7B,MAAA,IAAII,KAAK,CAACC,OAAN,CAAcH,GAAd,CAAJ,EAAwB;AACtB,QAAA,KAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,GAAG,CAACI,MAApB,EAA4BL,CAAC,EAA7B,EAAiC;AAC/BE,UAAAA,GAAG,KAAKA,GAAG,IAAI,GAAZ,CAAH,CAAA;AACAA,UAAAA,GAAG,IAAII,kBAAkB,CAACP,CAAD,CAAlB,GAAwB,GAAxB,GAA8BO,kBAAkB,CAACL,GAAG,CAACD,CAAD,CAAJ,CAAvD,CAAA;AACD,SAAA;AACF,OALD,MAKO;AACLE,QAAAA,GAAG,KAAKA,GAAG,IAAI,GAAZ,CAAH,CAAA;QACAA,GAAG,IAAII,kBAAkB,CAACP,CAAD,CAAlB,GAAwB,GAAxB,GAA8BO,kBAAkB,CAACL,GAAD,CAAvD,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAAA;;AAED,EAAA,OAAO,CAACH,GAAG,IAAI,EAAR,IAAcI,GAArB,CAAA;AACD,CAAA;;AAED,SAASK,OAAT,CAAiBC,GAAjB,EAAsB;AACpB,EAAA,IAAI,CAACA,GAAL,EAAU,OAAO,EAAP,CAAA;AACV,EAAA,IAAIN,GAAG,GAAGO,kBAAkB,CAACD,GAAD,CAA5B,CAAA;AACA,EAAA,IAAIN,GAAG,KAAK,OAAZ,EAAqB,OAAO,KAAP,CAAA;AACrB,EAAA,IAAIA,GAAG,KAAK,MAAZ,EAAoB,OAAO,IAAP,CAAA;EACpB,OAAO,CAACA,GAAD,GAAO,CAAP,KAAa,CAAb,GAAiB,CAACA,GAAlB,GAAwBA,GAA/B,CAAA;AACD,CAAA;;AAEM,SAASQ,MAAT,CAAgBR,GAAhB,EAAqB;AAC1B,EAAA,IAAID,GAAJ;AAAA,MACEF,CADF;MAEEY,GAAG,GAAG,EAFR;AAAA,MAGEC,GAAG,GAAGV,GAAG,CAACW,KAAJ,CAAU,GAAV,CAHR,CAAA;;AAKA,EAAA,OAAQZ,GAAG,GAAGW,GAAG,CAACE,KAAJ,EAAd,EAA4B;AAC1Bb,IAAAA,GAAG,GAAGA,GAAG,CAACY,KAAJ,CAAU,GAAV,CAAN,CAAA;AACAd,IAAAA,CAAC,GAAGE,GAAG,CAACa,KAAJ,EAAJ,CAAA;;AACA,IAAA,IAAIH,GAAG,CAACZ,CAAD,CAAH,KAAW,KAAK,CAApB,EAAuB;AACrBY,MAAAA,GAAG,CAACZ,CAAD,CAAH,GAAS,EAAGgB,CAAAA,MAAH,CAAUJ,GAAG,CAACZ,CAAD,CAAb,EAAkBQ,OAAO,CAACN,GAAG,CAACa,KAAJ,EAAD,CAAzB,CAAT,CAAA;AACD,KAFD,MAEO;MACLH,GAAG,CAACZ,CAAD,CAAH,GAASQ,OAAO,CAACN,GAAG,CAACa,KAAJ,EAAD,CAAhB,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOH,GAAP,CAAA;AACD;;;;;"}
1
+ {"version":3,"file":"qss.js","sources":["../../../../../src/qss.ts"],"sourcesContent":["// @ts-nocheck\n\n// qss has been slightly modified and inlined here for our use cases (and compression's sake). We've included it as a hard dependency for MIT license attribution.\n\nexport function encode(obj, pfx?: string) {\n var k,\n i,\n tmp,\n str = ''\n\n for (k in obj) {\n if ((tmp = obj[k]) !== void 0) {\n if (Array.isArray(tmp)) {\n for (i = 0; i < tmp.length; i++) {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i])\n }\n } else {\n str && (str += '&')\n str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp)\n }\n }\n }\n\n return (pfx || '') + str\n}\n\nfunction toValue(mix) {\n if (!mix) return ''\n var str = decodeURIComponent(mix)\n if (str === 'false') return false\n if (str === 'true') return true\n if (str.charAt(0) === '0') return str\n return +str * 0 === 0 ? +str : str\n}\n\nexport function decode(str) {\n var tmp,\n k,\n out = {},\n arr = str.split('&')\n\n while ((tmp = arr.shift())) {\n tmp = tmp.split('=')\n k = tmp.shift()\n if (out[k] !== void 0) {\n out[k] = [].concat(out[k], toValue(tmp.shift()))\n } else {\n out[k] = toValue(tmp.shift())\n }\n }\n\n return out\n}\n"],"names":["encode","obj","pfx","k","i","tmp","str","Array","isArray","length","encodeURIComponent","toValue","mix","decodeURIComponent","charAt","decode","out","arr","split","shift","concat"],"mappings":";;;;;;;;;;;;;;AAAA;AAEA;AAEO,SAASA,MAAT,CAAgBC,GAAhB,EAAqBC,GAArB,EAAmC;AACxC,EAAA,IAAIC,CAAJ;AAAA,MACEC,CADF;AAAA,MAEEC,GAFF;MAGEC,GAAG,GAAG,EAHR,CAAA;;EAKA,KAAKH,CAAL,IAAUF,GAAV,EAAe;IACb,IAAI,CAACI,GAAG,GAAGJ,GAAG,CAACE,CAAD,CAAV,MAAmB,KAAK,CAA5B,EAA+B;AAC7B,MAAA,IAAII,KAAK,CAACC,OAAN,CAAcH,GAAd,CAAJ,EAAwB;AACtB,QAAA,KAAKD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGC,GAAG,CAACI,MAApB,EAA4BL,CAAC,EAA7B,EAAiC;AAC/BE,UAAAA,GAAG,KAAKA,GAAG,IAAI,GAAZ,CAAH,CAAA;AACAA,UAAAA,GAAG,IAAII,kBAAkB,CAACP,CAAD,CAAlB,GAAwB,GAAxB,GAA8BO,kBAAkB,CAACL,GAAG,CAACD,CAAD,CAAJ,CAAvD,CAAA;AACD,SAAA;AACF,OALD,MAKO;AACLE,QAAAA,GAAG,KAAKA,GAAG,IAAI,GAAZ,CAAH,CAAA;QACAA,GAAG,IAAII,kBAAkB,CAACP,CAAD,CAAlB,GAAwB,GAAxB,GAA8BO,kBAAkB,CAACL,GAAD,CAAvD,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAAA;;AAED,EAAA,OAAO,CAACH,GAAG,IAAI,EAAR,IAAcI,GAArB,CAAA;AACD,CAAA;;AAED,SAASK,OAAT,CAAiBC,GAAjB,EAAsB;AACpB,EAAA,IAAI,CAACA,GAAL,EAAU,OAAO,EAAP,CAAA;AACV,EAAA,IAAIN,GAAG,GAAGO,kBAAkB,CAACD,GAAD,CAA5B,CAAA;AACA,EAAA,IAAIN,GAAG,KAAK,OAAZ,EAAqB,OAAO,KAAP,CAAA;AACrB,EAAA,IAAIA,GAAG,KAAK,MAAZ,EAAoB,OAAO,IAAP,CAAA;EACpB,IAAIA,GAAG,CAACQ,MAAJ,CAAW,CAAX,CAAkB,KAAA,GAAtB,EAA2B,OAAOR,GAAP,CAAA;EAC3B,OAAO,CAACA,GAAD,GAAO,CAAP,KAAa,CAAb,GAAiB,CAACA,GAAlB,GAAwBA,GAA/B,CAAA;AACD,CAAA;;AAEM,SAASS,MAAT,CAAgBT,GAAhB,EAAqB;AAC1B,EAAA,IAAID,GAAJ;AAAA,MACEF,CADF;MAEEa,GAAG,GAAG,EAFR;AAAA,MAGEC,GAAG,GAAGX,GAAG,CAACY,KAAJ,CAAU,GAAV,CAHR,CAAA;;AAKA,EAAA,OAAQb,GAAG,GAAGY,GAAG,CAACE,KAAJ,EAAd,EAA4B;AAC1Bd,IAAAA,GAAG,GAAGA,GAAG,CAACa,KAAJ,CAAU,GAAV,CAAN,CAAA;AACAf,IAAAA,CAAC,GAAGE,GAAG,CAACc,KAAJ,EAAJ,CAAA;;AACA,IAAA,IAAIH,GAAG,CAACb,CAAD,CAAH,KAAW,KAAK,CAApB,EAAuB;AACrBa,MAAAA,GAAG,CAACb,CAAD,CAAH,GAAS,EAAGiB,CAAAA,MAAH,CAAUJ,GAAG,CAACb,CAAD,CAAb,EAAkBQ,OAAO,CAACN,GAAG,CAACc,KAAJ,EAAD,CAAzB,CAAT,CAAA;AACD,KAFD,MAEO;MACLH,GAAG,CAACb,CAAD,CAAH,GAASQ,OAAO,CAACN,GAAG,CAACc,KAAJ,EAAD,CAAhB,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOH,GAAP,CAAA;AACD;;;;;"}
@@ -13,7 +13,6 @@
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
15
  var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
16
- var utils = require('./utils.js');
17
16
 
18
17
  function createRoute(routeConfig, options, parent, router) {
19
18
  const {
@@ -25,7 +24,7 @@ function createRoute(routeConfig, options, parent, router) {
25
24
 
26
25
  const action = router.state.actions[id] || (() => {
27
26
  router.state.actions[id] = {
28
- pending: [],
27
+ submissions: [],
29
28
  submit: async (submission, actionOpts) => {
30
29
  var _actionOpts$invalidat;
31
30
 
@@ -34,18 +33,20 @@ function createRoute(routeConfig, options, parent, router) {
34
33
  }
35
34
 
36
35
  const invalidate = (_actionOpts$invalidat = actionOpts == null ? void 0 : actionOpts.invalidate) != null ? _actionOpts$invalidat : true;
36
+
37
+ if (!(actionOpts != null && actionOpts.multi)) {
38
+ action.submissions = action.submissions.filter(d => d.isMulti);
39
+ }
40
+
37
41
  const actionState = {
38
42
  submittedAt: Date.now(),
39
43
  status: 'pending',
40
- submission
44
+ submission,
45
+ isMulti: !!(actionOpts != null && actionOpts.multi)
41
46
  };
42
47
  action.current = actionState;
43
48
  action.latest = actionState;
44
- action.pending.push(actionState);
45
- router.state = _rollupPluginBabelHelpers["extends"]({}, router.state, {
46
- currentAction: actionState,
47
- latestAction: actionState
48
- });
49
+ action.submissions.push(actionState);
49
50
  router.notify();
50
51
 
51
52
  try {
@@ -67,11 +68,6 @@ function createRoute(routeConfig, options, parent, router) {
67
68
  actionState.error = err;
68
69
  actionState.status = 'error';
69
70
  } finally {
70
- action.pending = action.pending.filter(d => d !== actionState);
71
- router.removeActionQueue.push({
72
- action,
73
- actionState
74
- });
75
71
  router.notify();
76
72
  }
77
73
  }
@@ -146,16 +142,6 @@ function createRoute(routeConfig, options, parent, router) {
146
142
  });
147
143
  return route;
148
144
  }
149
- function cascadeLoaderData(matches) {
150
- matches.forEach((match, index) => {
151
- const parent = matches[index - 1];
152
-
153
- if (parent) {
154
- match.loaderData = utils.replaceEqualDeep(match.loaderData, _rollupPluginBabelHelpers["extends"]({}, parent.loaderData, match.routeLoaderData));
155
- }
156
- });
157
- }
158
145
 
159
- exports.cascadeLoaderData = cascadeLoaderData;
160
146
  exports.createRoute = createRoute;
161
147
  //# sourceMappingURL=route.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.js","sources":["../../../../../src/route.ts"],"sourcesContent":["import {\n CheckRelativePath,\n LinkInfo,\n LinkOptions,\n ResolveRelativePath,\n ToOptions,\n} from './link'\nimport { LoaderContext, RouteConfig, RouteOptions } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n RouteInfoByPath,\n} from './routeInfo'\nimport { RouteMatch } from './routeMatch'\nimport {\n Action,\n ActionState,\n Loader,\n LoaderState,\n MatchRouteOptions,\n Router,\n} from './router'\nimport { NoInfer, replaceEqualDeep } from './utils'\n\nexport interface AnyRoute extends Route<any, any> {}\n\nexport interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> {\n routeId: TRouteInfo['id']\n routeRouteId: TRouteInfo['routeId']\n routePath: TRouteInfo['path']\n fullPath: TRouteInfo['fullPath']\n parentRoute?: AnyRoute\n childRoutes?: AnyRoute[]\n options: RouteOptions\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo>\n buildLink: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => LinkInfo\n matchRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<TRouteInfo['id'], TTo>,\n >(\n matchLocation: CheckRelativePath<\n TAllRouteInfo,\n TRouteInfo['fullPath'],\n NoInfer<TTo>\n > &\n Omit<ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>, 'from'>,\n opts?: MatchRouteOptions,\n ) => RouteInfoByPath<TAllRouteInfo, TResolved>['allParams']\n navigate: <TTo extends string = '.'>(\n options: Omit<LinkOptions<TAllRouteInfo, TRouteInfo['id'], TTo>, 'from'>,\n ) => Promise<void>\n action: unknown extends TRouteInfo['actionResponse']\n ?\n | Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n | undefined\n : Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n loader: unknown extends TRouteInfo['routeLoaderData']\n ?\n | Action<\n LoaderContext<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams']\n >,\n TRouteInfo['routeLoaderData']\n >\n | undefined\n : Loader<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams'],\n TRouteInfo['routeLoaderData']\n >\n}\n\nexport function createRoute<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n routeConfig: RouteConfig,\n options: TRouteInfo['options'],\n parent: undefined | Route<TAllRouteInfo, any>,\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo>,\n): Route<TAllRouteInfo, TRouteInfo> {\n const { id, routeId, path: routePath, fullPath } = routeConfig\n\n const action =\n router.state.actions[id] ||\n (() => {\n router.state.actions[id] = {\n pending: [],\n submit: async <T, U>(\n submission: T,\n actionOpts?: { invalidate?: boolean },\n ) => {\n if (!route) {\n return\n }\n\n const invalidate = actionOpts?.invalidate ?? true\n\n const actionState: ActionState<T, U> = {\n submittedAt: Date.now(),\n status: 'pending',\n submission,\n }\n\n action.current = actionState\n action.latest = actionState\n action.pending.push(actionState)\n\n router.state = {\n ...router.state,\n currentAction: actionState,\n latestAction: actionState,\n }\n\n router.notify()\n\n try {\n const res = await route.options.action?.(submission)\n actionState.data = res as U\n if (invalidate) {\n router.invalidateRoute({ to: '.', fromCurrent: true })\n await router.reload()\n }\n actionState.status = 'success'\n return res\n } catch (err) {\n console.error(err)\n actionState.error = err\n actionState.status = 'error'\n } finally {\n action.pending = action.pending.filter((d) => d !== actionState)\n router.removeActionQueue.push({ action, actionState })\n router.notify()\n }\n },\n }\n return router.state.actions[id]!\n })()\n\n const loader =\n router.state.loaders[id] ||\n (() => {\n router.state.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n\n loader.current = loaderState\n loader.latest = loaderState\n loader.pending.push(loaderState)\n\n // router.state = {\n // ...router.state,\n // currentAction: loaderState,\n // latestAction: loaderState,\n // }\n\n router.notify()\n\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n loader.pending = loader.pending.filter((d) => d !== loaderState)\n // router.removeActionQueue.push({ loader, loaderState })\n router.notify()\n }\n }) as any,\n }\n return router.state.loaders[id]!\n })()\n\n let route: Route<TAllRouteInfo, TRouteInfo> = {\n routeId: id,\n routeRouteId: routeId,\n routePath,\n fullPath,\n options,\n router,\n childRoutes: undefined!,\n parentRoute: parent,\n action,\n loader: loader as any,\n\n buildLink: (options) => {\n return router.buildLink({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n navigate: (options) => {\n return router.navigate({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n matchRoute: (matchLocation, opts) => {\n return router.matchRoute(\n {\n ...matchLocation,\n from: fullPath,\n } as any,\n opts,\n )\n },\n }\n\n router.options.createRoute?.({ router, route })\n\n return route\n}\n\nexport function cascadeLoaderData(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.loaderData = replaceEqualDeep(match.loaderData, {\n ...parent.loaderData,\n ...match.routeLoaderData,\n })\n }\n })\n}\n"],"names":["createRoute","routeConfig","options","parent","router","id","routeId","path","routePath","fullPath","action","state","actions","pending","submit","submission","actionOpts","route","invalidate","actionState","submittedAt","Date","now","status","current","latest","push","currentAction","latestAction","notify","res","data","invalidateRoute","to","fromCurrent","reload","err","console","error","filter","d","removeActionQueue","loader","loaders","fetch","loaderContext","loaderState","loadedAt","routeRouteId","childRoutes","undefined","parentRoute","buildLink","_extends","from","navigate","matchRoute","matchLocation","opts","cascadeLoaderData","matches","forEach","match","index","loaderData","replaceEqualDeep","routeLoaderData"],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sources":["../../../../../src/route.ts"],"sourcesContent":["import {\n CheckRelativePath,\n LinkInfo,\n LinkOptions,\n ResolveRelativePath,\n ToOptions,\n} from './link'\nimport { LoaderContext, RouteConfig, RouteOptions } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n RouteInfoByPath,\n} from './routeInfo'\nimport {\n Action,\n ActionState,\n Loader,\n LoaderState,\n MatchRouteOptions,\n Router,\n} from './router'\nimport { NoInfer } from './utils'\n\nexport interface AnyRoute extends Route<any, any> {}\n\nexport interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> {\n routeId: TRouteInfo['id']\n routeRouteId: TRouteInfo['routeId']\n routePath: TRouteInfo['path']\n fullPath: TRouteInfo['fullPath']\n parentRoute?: AnyRoute\n childRoutes?: AnyRoute[]\n options: RouteOptions\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo>\n buildLink: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => LinkInfo\n matchRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<TRouteInfo['id'], TTo>,\n >(\n matchLocation: CheckRelativePath<\n TAllRouteInfo,\n TRouteInfo['fullPath'],\n NoInfer<TTo>\n > &\n Omit<ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>, 'from'>,\n opts?: MatchRouteOptions,\n ) => RouteInfoByPath<TAllRouteInfo, TResolved>['allParams']\n navigate: <TTo extends string = '.'>(\n options: Omit<LinkOptions<TAllRouteInfo, TRouteInfo['id'], TTo>, 'from'>,\n ) => Promise<void>\n action: unknown extends TRouteInfo['actionResponse']\n ?\n | Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n | undefined\n : Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n loader: unknown extends TRouteInfo['routeLoaderData']\n ?\n | Action<\n LoaderContext<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams']\n >,\n TRouteInfo['routeLoaderData']\n >\n | undefined\n : Loader<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams'],\n TRouteInfo['routeLoaderData']\n >\n}\n\nexport function createRoute<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n routeConfig: RouteConfig,\n options: TRouteInfo['options'],\n parent: undefined | Route<TAllRouteInfo, any>,\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo>,\n): Route<TAllRouteInfo, TRouteInfo> {\n const { id, routeId, path: routePath, fullPath } = routeConfig\n\n const action =\n router.state.actions[id] ||\n (() => {\n router.state.actions[id] = {\n submissions: [],\n submit: async <T, U>(\n submission: T,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => {\n if (!route) {\n return\n }\n\n const invalidate = actionOpts?.invalidate ?? true\n\n if (!actionOpts?.multi) {\n action.submissions = action.submissions.filter((d) => d.isMulti)\n }\n\n const actionState: ActionState<T, U> = {\n submittedAt: Date.now(),\n status: 'pending',\n submission,\n isMulti: !!actionOpts?.multi,\n }\n\n action.current = actionState\n action.latest = actionState\n action.submissions.push(actionState)\n\n router.notify()\n\n try {\n const res = await route.options.action?.(submission)\n actionState.data = res as U\n\n if (invalidate) {\n router.invalidateRoute({ to: '.', fromCurrent: true })\n await router.reload()\n }\n actionState.status = 'success'\n return res\n } catch (err) {\n console.error(err)\n actionState.error = err\n actionState.status = 'error'\n } finally {\n router.notify()\n }\n },\n }\n return router.state.actions[id]!\n })()\n\n const loader =\n router.state.loaders[id] ||\n (() => {\n router.state.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n\n loader.current = loaderState\n loader.latest = loaderState\n loader.pending.push(loaderState)\n\n // router.state = {\n // ...router.state,\n // currentAction: loaderState,\n // latestAction: loaderState,\n // }\n\n router.notify()\n\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n loader.pending = loader.pending.filter((d) => d !== loaderState)\n // router.removeActionQueue.push({ loader, loaderState })\n router.notify()\n }\n }) as any,\n }\n return router.state.loaders[id]!\n })()\n\n let route: Route<TAllRouteInfo, TRouteInfo> = {\n routeId: id,\n routeRouteId: routeId,\n routePath,\n fullPath,\n options,\n router,\n childRoutes: undefined!,\n parentRoute: parent,\n action,\n loader: loader as any,\n\n buildLink: (options) => {\n return router.buildLink({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n navigate: (options) => {\n return router.navigate({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n matchRoute: (matchLocation, opts) => {\n return router.matchRoute(\n {\n ...matchLocation,\n from: fullPath,\n } as any,\n opts,\n )\n },\n }\n\n router.options.createRoute?.({ router, route })\n\n return route\n}\n"],"names":["createRoute","routeConfig","options","parent","router","id","routeId","path","routePath","fullPath","action","state","actions","submissions","submit","submission","actionOpts","route","invalidate","multi","filter","d","isMulti","actionState","submittedAt","Date","now","status","current","latest","push","notify","res","data","invalidateRoute","to","fromCurrent","reload","err","console","error","loader","loaders","pending","fetch","loaderContext","loaderState","loadedAt","routeRouteId","childRoutes","undefined","parentRoute","buildLink","_extends","from","navigate","matchRoute","matchLocation","opts"],"mappings":"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"}
@@ -29,6 +29,7 @@ function createRouteMatch(router, route, opts) {
29
29
  isFetching: false,
30
30
  isInvalid: false,
31
31
  invalidAt: Infinity,
32
+ // pendingActions: [],
32
33
  getIsInvalid: () => {
33
34
  const now = Date.now();
34
35
  return routeMatch.isInvalid || routeMatch.invalidAt < now;
@@ -68,17 +69,6 @@ function createRouteMatch(router, route, opts) {
68
69
  clearTimeout(routeMatch.__.pendingMinTimeout);
69
70
  delete routeMatch.__.pendingMinPromise;
70
71
  },
71
- // setParentMatch: (parentMatch?: RouteMatch) => {
72
- // routeMatch.parentMatch = parentMatch
73
- // },
74
- // addChildMatch: (childMatch: RouteMatch) => {
75
- // if (
76
- // routeMatch.childMatches.find((d) => d.matchId === childMatch.matchId)
77
- // ) {
78
- // return
79
- // }
80
- // routeMatch.childMatches.push(childMatch)
81
- // },
82
72
  validate: () => {
83
73
  var _routeMatch$parentMat, _routeMatch$parentMat2;
84
74
 
@@ -86,9 +76,11 @@ function createRouteMatch(router, route, opts) {
86
76
  const parentSearch = (_routeMatch$parentMat = (_routeMatch$parentMat2 = routeMatch.parentMatch) == null ? void 0 : _routeMatch$parentMat2.search) != null ? _routeMatch$parentMat : router.location.search;
87
77
 
88
78
  try {
79
+ var _validator;
80
+
89
81
  const prevSearch = routeMatch.routeSearch;
90
82
  const validator = typeof routeMatch.options.validateSearch === 'object' ? routeMatch.options.validateSearch.parse : routeMatch.options.validateSearch;
91
- let nextSearch = utils.replaceEqualDeep(prevSearch, validator == null ? void 0 : validator(parentSearch)); // Invalidate route matches when search param stability changes
83
+ let nextSearch = utils.replaceEqualDeep(prevSearch, (_validator = validator == null ? void 0 : validator(parentSearch)) != null ? _validator : {}); // Invalidate route matches when search param stability changes
92
84
 
93
85
  if (prevSearch !== nextSearch) {
94
86
  routeMatch.isInvalid = true;
@@ -96,6 +88,13 @@ function createRouteMatch(router, route, opts) {
96
88
 
97
89
  routeMatch.routeSearch = nextSearch;
98
90
  routeMatch.search = utils.replaceEqualDeep(parentSearch, _rollupPluginBabelHelpers["extends"]({}, parentSearch, nextSearch));
91
+ elementTypes.map(async type => {
92
+ const routeElement = routeMatch.options[type];
93
+
94
+ if (typeof routeMatch.__[type] !== 'function') {
95
+ routeMatch.__[type] = routeElement;
96
+ }
97
+ });
99
98
  } catch (err) {
100
99
  console.error(err);
101
100
  const error = new Error('Invalid search params found', {
@@ -141,7 +140,7 @@ function createRouteMatch(router, route, opts) {
141
140
 
142
141
  if (routeMatch.status === 'success' && routeMatch.getIsInvalid() || routeMatch.status === 'error' || routeMatch.status === 'idle') {
143
142
  const maxAge = loaderOpts != null && loaderOpts.preload ? loaderOpts == null ? void 0 : loaderOpts.maxAge : undefined;
144
- routeMatch.fetch({
143
+ await routeMatch.fetch({
145
144
  maxAge
146
145
  });
147
146
  }
@@ -164,7 +163,7 @@ function createRouteMatch(router, route, opts) {
164
163
  routeMatch.isFetching = true;
165
164
  routeMatch.__.resolve = resolve;
166
165
 
167
- const loaderPromise = (async () => {
166
+ routeMatch.__.loaderDataPromise = (async () => {
168
167
  // Load the elements and data in parallel
169
168
  routeMatch.__.elementsPromise = (async () => {
170
169
  // then run all element and data loaders in parallel
@@ -172,11 +171,9 @@ function createRouteMatch(router, route, opts) {
172
171
  await Promise.all(elementTypes.map(async type => {
173
172
  const routeElement = routeMatch.options[type];
174
173
 
175
- if (routeMatch.__[type]) {
176
- return;
174
+ if (typeof routeMatch.__[type] === 'function') {
175
+ routeMatch.__[type] = await router.options.createElement(routeElement);
177
176
  }
178
-
179
- routeMatch.__[type] = await router.options.createElement(routeElement);
180
177
  }));
181
178
  })();
182
179
 
@@ -192,7 +189,7 @@ function createRouteMatch(router, route, opts) {
192
189
  });
193
190
 
194
191
  if (id !== routeMatch.__.latestId) {
195
- return routeMatch.__.loaderPromise;
192
+ return routeMatch.__.loadPromise;
196
193
  }
197
194
 
198
195
  routeMatch.routeLoaderData = utils.replaceEqualDeep(routeMatch.routeLoaderData, data);
@@ -204,7 +201,7 @@ function createRouteMatch(router, route, opts) {
204
201
  routeMatch.invalidAt = routeMatch.updatedAt + ((_ref = (_ref2 = (_opts$maxAge = opts == null ? void 0 : opts.maxAge) != null ? _opts$maxAge : routeMatch.options.loaderMaxAge) != null ? _ref2 : router.options.defaultLoaderMaxAge) != null ? _ref : 0);
205
202
  } catch (err) {
206
203
  if (id !== routeMatch.__.latestId) {
207
- return routeMatch.__.loaderPromise;
204
+ return routeMatch.__.loadPromise;
208
205
  }
209
206
 
210
207
  if (process.env.NODE_ENV !== 'production') {
@@ -221,7 +218,7 @@ function createRouteMatch(router, route, opts) {
221
218
  await Promise.all([routeMatch.__.elementsPromise, routeMatch.__.dataPromise]);
222
219
 
223
220
  if (id !== routeMatch.__.latestId) {
224
- return routeMatch.__.loaderPromise;
221
+ return routeMatch.__.loadPromise;
225
222
  }
226
223
 
227
224
  if (routeMatch.__.pendingMinPromise) {
@@ -230,7 +227,7 @@ function createRouteMatch(router, route, opts) {
230
227
  }
231
228
  } finally {
232
229
  if (id !== routeMatch.__.latestId) {
233
- return routeMatch.__.loaderPromise;
230
+ return routeMatch.__.loadPromise;
234
231
  }
235
232
 
236
233
  routeMatch.__.cancelPending();
@@ -242,16 +239,16 @@ function createRouteMatch(router, route, opts) {
242
239
  }
243
240
  })();
244
241
 
245
- routeMatch.__.loaderPromise = loaderPromise;
246
- await loaderPromise;
242
+ await routeMatch.__.loaderDataPromise;
247
243
 
248
244
  if (id !== routeMatch.__.latestId) {
249
- return routeMatch.__.loaderPromise;
245
+ return routeMatch.__.loadPromise;
250
246
  }
251
247
 
252
- delete routeMatch.__.loaderPromise;
248
+ delete routeMatch.__.loaderDataPromise;
253
249
  });
254
- return await routeMatch.__.loadPromise;
250
+ await routeMatch.__.loadPromise;
251
+ delete routeMatch.__.loadPromise;
255
252
  }
256
253
  });
257
254
 
@@ -1 +1 @@
1
- {"version":3,"file":"routeMatch.js","sources":["../../../../../src/routeMatch.ts"],"sourcesContent":["import { GetFrameworkGeneric } from './frameworks'\nimport { Route } from './route'\nimport { AnyPathParams } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n} from './routeInfo'\nimport { Router } from './router'\nimport { replaceEqualDeep, Timeout } from './utils'\n\nexport interface RouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> extends Route<TAllRouteInfo, TRouteInfo> {\n matchId: string\n pathname: string\n params: TRouteInfo['params']\n parentMatch?: RouteMatch\n childMatches: RouteMatch[]\n routeSearch: TRouteInfo['searchSchema']\n search: TRouteInfo['fullSearchSchema']\n status: 'idle' | 'loading' | 'success' | 'error'\n updatedAt?: number\n error?: unknown\n isInvalid: boolean\n getIsInvalid: () => boolean\n loaderData: TRouteInfo['loaderData']\n routeLoaderData: TRouteInfo['routeLoaderData']\n isFetching: boolean\n isPending: boolean\n invalidAt: number\n __: {\n element?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n errorElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n catchElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n pendingElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n loadPromise?: Promise<void>\n loaderPromise?: Promise<void>\n elementsPromise?: Promise<void>\n dataPromise?: Promise<void>\n pendingTimeout?: Timeout\n pendingMinTimeout?: Timeout\n pendingMinPromise?: Promise<void>\n onExit?:\n | void\n | ((matchContext: {\n params: TRouteInfo['allParams']\n search: TRouteInfo['fullSearchSchema']\n }) => void)\n abortController: AbortController\n latestId: string\n // setParentMatch: (parentMatch: RouteMatch) => void\n // addChildMatch: (childMatch: RouteMatch) => void\n validate: () => void\n startPending: () => void\n cancelPending: () => void\n notify: () => void\n resolve: () => void\n }\n cancel: () => void\n load: (\n loaderOpts?: { withPending?: boolean } & (\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never }\n ),\n ) => Promise<TRouteInfo['routeLoaderData']>\n fetch: (opts?: { maxAge?: number }) => Promise<TRouteInfo['routeLoaderData']>\n invalidate: () => void\n hasLoaders: () => boolean\n}\n\nconst elementTypes = [\n 'element',\n 'errorElement',\n 'catchElement',\n 'pendingElement',\n] as const\n\nexport function createRouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n router: Router<any, any>,\n route: Route<TAllRouteInfo, TRouteInfo>,\n opts: {\n matchId: string\n params: TRouteInfo['allParams']\n pathname: string\n },\n): RouteMatch<TAllRouteInfo, TRouteInfo> {\n const routeMatch: RouteMatch<TAllRouteInfo, TRouteInfo> = {\n ...route,\n ...opts,\n router,\n routeSearch: {},\n search: {},\n childMatches: [],\n status: 'idle',\n routeLoaderData: {} as TRouteInfo['routeLoaderData'],\n loaderData: {} as TRouteInfo['loaderData'],\n isPending: false,\n isFetching: false,\n isInvalid: false,\n invalidAt: Infinity,\n getIsInvalid: () => {\n const now = Date.now()\n return routeMatch.isInvalid || routeMatch.invalidAt < now\n },\n __: {\n abortController: new AbortController(),\n latestId: '',\n resolve: () => {},\n notify: () => {\n routeMatch.__.resolve()\n routeMatch.router.notify()\n },\n startPending: () => {\n const pendingMs =\n routeMatch.options.pendingMs ?? router.options.defaultPendingMs\n const pendingMinMs =\n routeMatch.options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (\n routeMatch.__.pendingTimeout ||\n routeMatch.status !== 'loading' ||\n typeof pendingMs === 'undefined'\n ) {\n return\n }\n\n routeMatch.__.pendingTimeout = setTimeout(() => {\n routeMatch.isPending = true\n routeMatch.__.resolve()\n if (typeof pendingMinMs !== 'undefined') {\n routeMatch.__.pendingMinPromise = new Promise(\n (r) =>\n (routeMatch.__.pendingMinTimeout = setTimeout(r, pendingMinMs)),\n )\n }\n }, pendingMs)\n },\n cancelPending: () => {\n routeMatch.isPending = false\n clearTimeout(routeMatch.__.pendingTimeout)\n clearTimeout(routeMatch.__.pendingMinTimeout)\n delete routeMatch.__.pendingMinPromise\n },\n // setParentMatch: (parentMatch?: RouteMatch) => {\n // routeMatch.parentMatch = parentMatch\n // },\n // addChildMatch: (childMatch: RouteMatch) => {\n // if (\n // routeMatch.childMatches.find((d) => d.matchId === childMatch.matchId)\n // ) {\n // return\n // }\n\n // routeMatch.childMatches.push(childMatch)\n // },\n validate: () => {\n // Validate the search params and stabilize them\n const parentSearch =\n routeMatch.parentMatch?.search ?? router.location.search\n\n try {\n const prevSearch = routeMatch.routeSearch\n\n const validator =\n typeof routeMatch.options.validateSearch === 'object'\n ? routeMatch.options.validateSearch.parse\n : routeMatch.options.validateSearch\n\n let nextSearch = replaceEqualDeep(\n prevSearch,\n validator?.(parentSearch),\n )\n\n // Invalidate route matches when search param stability changes\n if (prevSearch !== nextSearch) {\n routeMatch.isInvalid = true\n }\n\n routeMatch.routeSearch = nextSearch\n\n routeMatch.search = replaceEqualDeep(parentSearch, {\n ...parentSearch,\n ...nextSearch,\n })\n } catch (err: any) {\n console.error(err)\n const error = new (Error as any)('Invalid search params found', {\n cause: err,\n })\n error.code = 'INVALID_SEARCH_PARAMS'\n routeMatch.status = 'error'\n routeMatch.error = error\n // Do not proceed with loading the route\n return\n }\n },\n },\n cancel: () => {\n routeMatch.__.abortController?.abort()\n routeMatch.__.cancelPending()\n },\n invalidate: () => {\n routeMatch.isInvalid = true\n },\n hasLoaders: () => {\n return !!(\n route.options.loader ||\n elementTypes.some((d) => typeof route.options[d] === 'function')\n )\n },\n load: async (loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\n\n // If this is a preload, add it to the preload cache\n if (loaderOpts?.preload && minMaxAge > 0) {\n // If the match is currently active, don't preload it\n if (\n router.state.matches.find((d) => d.matchId === routeMatch.matchId)\n ) {\n return\n }\n\n router.matchCache[routeMatch.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match: routeMatch as RouteMatch<any, any>,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (routeMatch.status === 'success' && routeMatch.getIsInvalid()) ||\n routeMatch.status === 'error' ||\n routeMatch.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n routeMatch.fetch({ maxAge })\n }\n },\n fetch: async (opts) => {\n const id = '' + Date.now() + Math.random()\n routeMatch.__.latestId = id\n\n // If the match was in an error state, set it\n // to a loading state again. Otherwise, keep it\n // as loading or resolved\n if (routeMatch.status === 'idle') {\n routeMatch.status = 'loading'\n }\n\n // We started loading the route, so it's no longer invalid\n routeMatch.isInvalid = false\n\n routeMatch.__.loadPromise = new Promise(async (resolve) => {\n // We are now fetching, even if it's in the background of a\n // resolved state\n routeMatch.isFetching = true\n routeMatch.__.resolve = resolve as () => void\n\n const loaderPromise = (async () => {\n // Load the elements and data in parallel\n\n routeMatch.__.elementsPromise = (async () => {\n // then run all element and data loaders in parallel\n // For each element type, potentially load it asynchronously\n\n await Promise.all(\n elementTypes.map(async (type) => {\n const routeElement = routeMatch.options[type]\n\n if (routeMatch.__[type]) {\n return\n }\n\n routeMatch.__[type] = await router.options.createElement!(\n routeElement,\n )\n }),\n )\n })()\n\n routeMatch.__.dataPromise = Promise.resolve().then(async () => {\n try {\n if (routeMatch.options.loader) {\n const data = await routeMatch.options.loader({\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n routeMatch.routeLoaderData = replaceEqualDeep(\n routeMatch.routeLoaderData,\n data,\n )\n }\n\n routeMatch.error = undefined\n routeMatch.status = 'success'\n routeMatch.updatedAt = Date.now()\n routeMatch.invalidAt =\n routeMatch.updatedAt +\n (opts?.maxAge ??\n routeMatch.options.loaderMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0)\n } catch (err) {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n }\n routeMatch.error = err\n routeMatch.status = 'error'\n routeMatch.updatedAt = Date.now()\n }\n })\n\n try {\n await Promise.all([\n routeMatch.__.elementsPromise,\n routeMatch.__.dataPromise,\n ])\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n if (routeMatch.__.pendingMinPromise) {\n await routeMatch.__.pendingMinPromise\n delete routeMatch.__.pendingMinPromise\n }\n } finally {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n routeMatch.__.cancelPending()\n routeMatch.isPending = false\n routeMatch.isFetching = false\n routeMatch.__.notify()\n }\n })()\n\n routeMatch.__.loaderPromise = loaderPromise\n await loaderPromise\n\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n delete routeMatch.__.loaderPromise\n })\n\n return await routeMatch.__.loadPromise\n },\n }\n\n if (!routeMatch.hasLoaders()) {\n routeMatch.status = 'success'\n }\n\n return routeMatch\n}\n"],"names":["elementTypes","createRouteMatch","router","route","opts","routeMatch","_extends","routeSearch","search","childMatches","status","routeLoaderData","loaderData","isPending","isFetching","isInvalid","invalidAt","Infinity","getIsInvalid","now","Date","__","abortController","AbortController","latestId","resolve","notify","startPending","pendingMs","options","defaultPendingMs","pendingMinMs","defaultPendingMinMs","pendingTimeout","setTimeout","pendingMinPromise","Promise","r","pendingMinTimeout","cancelPending","clearTimeout","validate","parentSearch","parentMatch","location","prevSearch","validator","validateSearch","parse","nextSearch","replaceEqualDeep","err","console","error","Error","cause","code","cancel","abort","invalidate","hasLoaders","loader","some","d","load","loaderOpts","minMaxAge","preload","Math","max","maxAge","gcMaxAge","state","matches","find","matchId","matchCache","gc","match","undefined","fetch","id","random","loadPromise","loaderPromise","elementsPromise","all","map","type","routeElement","createElement","dataPromise","then","data","params","signal","updatedAt","loaderMaxAge","defaultLoaderMaxAge","process","env","NODE_ENV"],"mappings":"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"}
1
+ {"version":3,"file":"routeMatch.js","sources":["../../../../../src/routeMatch.ts"],"sourcesContent":["import { GetFrameworkGeneric } from './frameworks'\nimport { Route } from './route'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n} from './routeInfo'\nimport { ActionState, Router } from './router'\nimport { replaceEqualDeep, Timeout } from './utils'\n\nexport interface RouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> extends Route<TAllRouteInfo, TRouteInfo> {\n matchId: string\n pathname: string\n params: TRouteInfo['params']\n parentMatch?: RouteMatch\n childMatches: RouteMatch[]\n routeSearch: TRouteInfo['searchSchema']\n search: TRouteInfo['fullSearchSchema']\n status: 'idle' | 'loading' | 'success' | 'error'\n updatedAt?: number\n error?: unknown\n isInvalid: boolean\n getIsInvalid: () => boolean\n loaderData: TRouteInfo['loaderData']\n routeLoaderData: TRouteInfo['routeLoaderData']\n isFetching: boolean\n isPending: boolean\n invalidAt: number\n __: {\n element?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n errorElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n catchElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n pendingElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n loadPromise?: Promise<void>\n loaderDataPromise?: Promise<void>\n elementsPromise?: Promise<void>\n dataPromise?: Promise<void>\n pendingTimeout?: Timeout\n pendingMinTimeout?: Timeout\n pendingMinPromise?: Promise<void>\n onExit?:\n | void\n | ((matchContext: {\n params: TRouteInfo['allParams']\n search: TRouteInfo['fullSearchSchema']\n }) => void)\n abortController: AbortController\n latestId: string\n // setParentMatch: (parentMatch: RouteMatch) => void\n // addChildMatch: (childMatch: RouteMatch) => void\n validate: () => void\n startPending: () => void\n cancelPending: () => void\n notify: () => void\n resolve: () => void\n }\n cancel: () => void\n load: (\n loaderOpts?: { withPending?: boolean } & (\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never }\n ),\n ) => Promise<TRouteInfo['routeLoaderData']>\n fetch: (opts?: { maxAge?: number }) => Promise<TRouteInfo['routeLoaderData']>\n invalidate: () => void\n hasLoaders: () => boolean\n}\n\nconst elementTypes = [\n 'element',\n 'errorElement',\n 'catchElement',\n 'pendingElement',\n] as const\n\nexport function createRouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n router: Router<any, any>,\n route: Route<TAllRouteInfo, TRouteInfo>,\n opts: {\n matchId: string\n params: TRouteInfo['allParams']\n pathname: string\n },\n): RouteMatch<TAllRouteInfo, TRouteInfo> {\n const routeMatch: RouteMatch<TAllRouteInfo, TRouteInfo> = {\n ...route,\n ...opts,\n router,\n routeSearch: {},\n search: {},\n childMatches: [],\n status: 'idle',\n routeLoaderData: {} as TRouteInfo['routeLoaderData'],\n loaderData: {} as TRouteInfo['loaderData'],\n isPending: false,\n isFetching: false,\n isInvalid: false,\n invalidAt: Infinity,\n // pendingActions: [],\n getIsInvalid: () => {\n const now = Date.now()\n return routeMatch.isInvalid || routeMatch.invalidAt < now\n },\n __: {\n abortController: new AbortController(),\n latestId: '',\n resolve: () => {},\n notify: () => {\n routeMatch.__.resolve()\n routeMatch.router.notify()\n },\n startPending: () => {\n const pendingMs =\n routeMatch.options.pendingMs ?? router.options.defaultPendingMs\n const pendingMinMs =\n routeMatch.options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (\n routeMatch.__.pendingTimeout ||\n routeMatch.status !== 'loading' ||\n typeof pendingMs === 'undefined'\n ) {\n return\n }\n\n routeMatch.__.pendingTimeout = setTimeout(() => {\n routeMatch.isPending = true\n routeMatch.__.resolve()\n if (typeof pendingMinMs !== 'undefined') {\n routeMatch.__.pendingMinPromise = new Promise(\n (r) =>\n (routeMatch.__.pendingMinTimeout = setTimeout(r, pendingMinMs)),\n )\n }\n }, pendingMs)\n },\n cancelPending: () => {\n routeMatch.isPending = false\n clearTimeout(routeMatch.__.pendingTimeout)\n clearTimeout(routeMatch.__.pendingMinTimeout)\n delete routeMatch.__.pendingMinPromise\n },\n validate: () => {\n // Validate the search params and stabilize them\n const parentSearch =\n routeMatch.parentMatch?.search ?? router.location.search\n\n try {\n const prevSearch = routeMatch.routeSearch\n\n const validator =\n typeof routeMatch.options.validateSearch === 'object'\n ? routeMatch.options.validateSearch.parse\n : routeMatch.options.validateSearch\n\n let nextSearch = replaceEqualDeep(\n prevSearch,\n validator?.(parentSearch) ?? {},\n )\n\n // Invalidate route matches when search param stability changes\n if (prevSearch !== nextSearch) {\n routeMatch.isInvalid = true\n }\n\n routeMatch.routeSearch = nextSearch\n\n routeMatch.search = replaceEqualDeep(parentSearch, {\n ...parentSearch,\n ...nextSearch,\n })\n\n elementTypes.map(async (type) => {\n const routeElement = routeMatch.options[type]\n\n if (typeof routeMatch.__[type] !== 'function') {\n routeMatch.__[type] = routeElement\n }\n })\n } catch (err: any) {\n console.error(err)\n const error = new (Error as any)('Invalid search params found', {\n cause: err,\n })\n error.code = 'INVALID_SEARCH_PARAMS'\n routeMatch.status = 'error'\n routeMatch.error = error\n // Do not proceed with loading the route\n return\n }\n },\n },\n cancel: () => {\n routeMatch.__.abortController?.abort()\n routeMatch.__.cancelPending()\n },\n invalidate: () => {\n routeMatch.isInvalid = true\n },\n hasLoaders: () => {\n return !!(\n route.options.loader ||\n elementTypes.some((d) => typeof route.options[d] === 'function')\n )\n },\n load: async (loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\n\n // If this is a preload, add it to the preload cache\n if (loaderOpts?.preload && minMaxAge > 0) {\n // If the match is currently active, don't preload it\n if (\n router.state.matches.find((d) => d.matchId === routeMatch.matchId)\n ) {\n return\n }\n\n router.matchCache[routeMatch.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match: routeMatch as RouteMatch<any, any>,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (routeMatch.status === 'success' && routeMatch.getIsInvalid()) ||\n routeMatch.status === 'error' ||\n routeMatch.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n await routeMatch.fetch({ maxAge })\n }\n },\n fetch: async (opts) => {\n const id = '' + Date.now() + Math.random()\n routeMatch.__.latestId = id\n\n // If the match was in an error state, set it\n // to a loading state again. Otherwise, keep it\n // as loading or resolved\n if (routeMatch.status === 'idle') {\n routeMatch.status = 'loading'\n }\n\n // We started loading the route, so it's no longer invalid\n routeMatch.isInvalid = false\n\n routeMatch.__.loadPromise = new Promise(async (resolve) => {\n // We are now fetching, even if it's in the background of a\n // resolved state\n routeMatch.isFetching = true\n routeMatch.__.resolve = resolve as () => void\n\n routeMatch.__.loaderDataPromise = (async () => {\n // Load the elements and data in parallel\n\n routeMatch.__.elementsPromise = (async () => {\n // then run all element and data loaders in parallel\n // For each element type, potentially load it asynchronously\n\n await Promise.all(\n elementTypes.map(async (type) => {\n const routeElement = routeMatch.options[type]\n\n if (typeof routeMatch.__[type] === 'function') {\n routeMatch.__[type] = await router.options.createElement!(\n routeElement,\n )\n }\n }),\n )\n })()\n\n routeMatch.__.dataPromise = Promise.resolve().then(async () => {\n try {\n if (routeMatch.options.loader) {\n const data = await routeMatch.options.loader({\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loadPromise\n }\n\n routeMatch.routeLoaderData = replaceEqualDeep(\n routeMatch.routeLoaderData,\n data,\n )\n }\n\n routeMatch.error = undefined\n routeMatch.status = 'success'\n routeMatch.updatedAt = Date.now()\n routeMatch.invalidAt =\n routeMatch.updatedAt +\n (opts?.maxAge ??\n routeMatch.options.loaderMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0)\n } catch (err) {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loadPromise\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n }\n routeMatch.error = err\n routeMatch.status = 'error'\n routeMatch.updatedAt = Date.now()\n }\n })\n\n try {\n await Promise.all([\n routeMatch.__.elementsPromise,\n routeMatch.__.dataPromise,\n ])\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loadPromise\n }\n\n if (routeMatch.__.pendingMinPromise) {\n await routeMatch.__.pendingMinPromise\n delete routeMatch.__.pendingMinPromise\n }\n } finally {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loadPromise\n }\n routeMatch.__.cancelPending()\n routeMatch.isPending = false\n routeMatch.isFetching = false\n routeMatch.__.notify()\n }\n })()\n\n await routeMatch.__.loaderDataPromise\n\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loadPromise\n }\n\n delete routeMatch.__.loaderDataPromise\n })\n\n await routeMatch.__.loadPromise\n\n delete routeMatch.__.loadPromise\n },\n }\n\n if (!routeMatch.hasLoaders()) {\n routeMatch.status = 'success'\n }\n\n return routeMatch\n}\n"],"names":["elementTypes","createRouteMatch","router","route","opts","routeMatch","_extends","routeSearch","search","childMatches","status","routeLoaderData","loaderData","isPending","isFetching","isInvalid","invalidAt","Infinity","getIsInvalid","now","Date","__","abortController","AbortController","latestId","resolve","notify","startPending","pendingMs","options","defaultPendingMs","pendingMinMs","defaultPendingMinMs","pendingTimeout","setTimeout","pendingMinPromise","Promise","r","pendingMinTimeout","cancelPending","clearTimeout","validate","parentSearch","parentMatch","location","prevSearch","validator","validateSearch","parse","nextSearch","replaceEqualDeep","map","type","routeElement","err","console","error","Error","cause","code","cancel","abort","invalidate","hasLoaders","loader","some","d","load","loaderOpts","minMaxAge","preload","Math","max","maxAge","gcMaxAge","state","matches","find","matchId","matchCache","gc","match","undefined","fetch","id","random","loadPromise","loaderDataPromise","elementsPromise","all","createElement","dataPromise","then","data","params","signal","updatedAt","loaderMaxAge","defaultLoaderMaxAge","process","env","NODE_ENV"],"mappings":"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"}