kiru 0.53.0 → 0.54.0-preview.1

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 (118) hide show
  1. package/dist/components/derive.d.ts +1 -1
  2. package/dist/components/derive.d.ts.map +1 -1
  3. package/dist/components/derive.js +3 -2
  4. package/dist/components/derive.js.map +1 -1
  5. package/dist/dom.d.ts.map +1 -1
  6. package/dist/dom.js +6 -2
  7. package/dist/dom.js.map +1 -1
  8. package/dist/globals.d.ts +1 -1
  9. package/dist/globals.d.ts.map +1 -1
  10. package/dist/globals.js.map +1 -1
  11. package/dist/hooks/usePromise.d.ts +2 -1
  12. package/dist/hooks/usePromise.d.ts.map +1 -1
  13. package/dist/hooks/usePromise.js +31 -62
  14. package/dist/hooks/usePromise.js.map +1 -1
  15. package/dist/index.js +1 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/router/client/index.d.ts +4 -2
  18. package/dist/router/client/index.d.ts.map +1 -1
  19. package/dist/router/client/index.js +59 -13
  20. package/dist/router/client/index.js.map +1 -1
  21. package/dist/router/constants.d.ts +2 -0
  22. package/dist/router/constants.d.ts.map +1 -0
  23. package/dist/router/constants.js +2 -0
  24. package/dist/router/constants.js.map +1 -0
  25. package/dist/router/context.d.ts +2 -0
  26. package/dist/router/context.d.ts.map +1 -1
  27. package/dist/router/context.js +5 -1
  28. package/dist/router/context.js.map +1 -1
  29. package/dist/router/fileRouterController.d.ts +2 -0
  30. package/dist/router/fileRouterController.d.ts.map +1 -1
  31. package/dist/router/fileRouterController.js +195 -107
  32. package/dist/router/fileRouterController.js.map +1 -1
  33. package/dist/router/globals.d.ts +3 -0
  34. package/dist/router/globals.d.ts.map +1 -1
  35. package/dist/router/globals.js +3 -0
  36. package/dist/router/globals.js.map +1 -1
  37. package/dist/router/guard.d.ts +17 -0
  38. package/dist/router/guard.d.ts.map +1 -0
  39. package/dist/router/guard.js +45 -0
  40. package/dist/router/guard.js.map +1 -0
  41. package/dist/router/head.d.ts.map +1 -1
  42. package/dist/router/head.js +5 -7
  43. package/dist/router/head.js.map +1 -1
  44. package/dist/router/index.d.ts +2 -1
  45. package/dist/router/index.d.ts.map +1 -1
  46. package/dist/router/index.js +2 -1
  47. package/dist/router/index.js.map +1 -1
  48. package/dist/router/{server → ssg}/index.d.ts +4 -3
  49. package/dist/router/ssg/index.d.ts.map +1 -0
  50. package/dist/router/{server → ssg}/index.js +8 -5
  51. package/dist/router/ssg/index.js.map +1 -0
  52. package/dist/router/ssr/index.d.ts +20 -0
  53. package/dist/router/ssr/index.d.ts.map +1 -0
  54. package/dist/router/ssr/index.js +163 -0
  55. package/dist/router/ssr/index.js.map +1 -0
  56. package/dist/router/types.d.ts +42 -16
  57. package/dist/router/types.d.ts.map +1 -1
  58. package/dist/router/types.internal.d.ts +4 -0
  59. package/dist/router/types.internal.d.ts.map +1 -1
  60. package/dist/router/utils/index.d.ts +8 -3
  61. package/dist/router/utils/index.d.ts.map +1 -1
  62. package/dist/router/utils/index.js +38 -6
  63. package/dist/router/utils/index.js.map +1 -1
  64. package/dist/scheduler.d.ts +14 -3
  65. package/dist/scheduler.d.ts.map +1 -1
  66. package/dist/scheduler.js +3 -4
  67. package/dist/scheduler.js.map +1 -1
  68. package/dist/ssr/client.d.ts +1 -1
  69. package/dist/ssr/client.d.ts.map +1 -1
  70. package/dist/ssr/server.d.ts +9 -3
  71. package/dist/ssr/server.d.ts.map +1 -1
  72. package/dist/ssr/server.js +37 -30
  73. package/dist/ssr/server.js.map +1 -1
  74. package/dist/types.d.ts +3 -0
  75. package/dist/types.d.ts.map +1 -1
  76. package/dist/utils/format.d.ts +2 -1
  77. package/dist/utils/format.d.ts.map +1 -1
  78. package/dist/utils/format.js +4 -1
  79. package/dist/utils/format.js.map +1 -1
  80. package/dist/utils/index.d.ts +1 -1
  81. package/dist/utils/index.d.ts.map +1 -1
  82. package/dist/utils/index.js +1 -1
  83. package/dist/utils/index.js.map +1 -1
  84. package/dist/utils/promise.d.ts +2 -0
  85. package/dist/utils/promise.d.ts.map +1 -1
  86. package/dist/utils/promise.js +45 -1
  87. package/dist/utils/promise.js.map +1 -1
  88. package/dist/utils/runtime.d.ts +1 -1
  89. package/dist/utils/runtime.js +1 -1
  90. package/package.json +8 -4
  91. package/src/components/derive.ts +5 -3
  92. package/src/dom.ts +5 -1
  93. package/src/globals.ts +1 -1
  94. package/src/hooks/usePromise.ts +57 -77
  95. package/src/index.ts +1 -1
  96. package/src/router/client/index.ts +114 -16
  97. package/src/router/constants.ts +1 -0
  98. package/src/router/context.ts +7 -1
  99. package/src/router/fileRouterController.ts +304 -132
  100. package/src/router/globals.ts +4 -0
  101. package/src/router/guard.ts +72 -0
  102. package/src/router/head.ts +5 -7
  103. package/src/router/index.ts +12 -1
  104. package/src/router/{server → ssg}/index.ts +17 -10
  105. package/src/router/ssr/index.ts +252 -0
  106. package/src/router/types.internal.ts +5 -0
  107. package/src/router/types.ts +53 -16
  108. package/src/router/utils/index.ts +74 -8
  109. package/src/scheduler.ts +20 -3
  110. package/src/ssr/client.ts +1 -1
  111. package/src/ssr/server.ts +58 -34
  112. package/src/types.ts +3 -0
  113. package/src/utils/format.ts +5 -0
  114. package/src/utils/index.ts +1 -1
  115. package/src/utils/promise.ts +70 -1
  116. package/src/utils/runtime.ts +1 -1
  117. package/dist/router/server/index.d.ts.map +0 -1
  118. package/dist/router/server/index.js.map +0 -1
@@ -1,6 +1,6 @@
1
+ import { useContext } from "../hooks/index.js";
1
2
  import { createContext } from "../context.js";
2
3
  import { __DEV__ } from "../env.js";
3
- import { useContext } from "../hooks/index.js";
4
4
  export const RouterContext = createContext(null);
5
5
  if (__DEV__) {
6
6
  RouterContext.displayName = "RouterContext";
@@ -8,4 +8,8 @@ if (__DEV__) {
8
8
  export function useFileRouter() {
9
9
  return useContext(RouterContext);
10
10
  }
11
+ export const RequestContext = createContext({});
12
+ export function useRequestContext() {
13
+ return useContext(RequestContext);
14
+ }
11
15
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/router/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAkE9C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAwB,IAAK,CAAC,CAAA;AACxE,IAAI,OAAO,EAAE,CAAC;IACZ,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;AAClC,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/router/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkEnC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAwB,IAAK,CAAC,CAAA;AACxE,IAAI,OAAO,EAAE,CAAC;IACZ,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,CAAC,CAAA;AAEpE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC"}
@@ -14,10 +14,12 @@ export declare class FileRouterController {
14
14
  private historyIndex;
15
15
  private layouts;
16
16
  private pages;
17
+ private guards;
17
18
  private pageRouteToConfig?;
18
19
  private state;
19
20
  constructor();
20
21
  init(config: FileRouterConfig): void;
22
+ private onBeforeLeave;
21
23
  getChildren(): Kiru.Element | null;
22
24
  dispose(): void;
23
25
  private loadRoute;
@@ -1 +1 @@
1
- {"version":3,"file":"fileRouterController.d.ts","sourceRoot":"","sources":["../../src/router/fileRouterController.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGxE,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAKX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAEV,iBAAiB,EAIlB,MAAM,qBAAqB,CAAA;AAiB5B,qBAAa,oBAAoB;IACxB,YAAY,EAAE,qBAAqB,CAAA;IACnC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,uBAAuB,CAAC,EAAE,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,EACzD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,CAAC,KACN,IAAI,CAAA;IACT,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAC,CAG3B;IACD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,iBAAiB,CAAC,CAAyB;IACnD,OAAO,CAAC,KAAK,CAAa;;IA+HnB,IAAI,CAAC,MAAM,EAAE,gBAAgB;IAoJ7B,WAAW;IAUX,OAAO;YAUA,SAAS;YA4IT,aAAa;IAmD3B,OAAO,CAAC,UAAU;YAcJ,QAAQ;YAkCR,oBAAoB;IAuBlC,OAAO,CAAC,QAAQ;YAUF,OAAO;YAcP,kBAAkB;CA2BjC"}
1
+ {"version":3,"file":"fileRouterController.d.ts","sourceRoot":"","sources":["../../src/router/fileRouterController.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAQxE,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAKX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAEV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAA;AAkC5B,qBAAa,oBAAoB;IACxB,YAAY,EAAE,qBAAqB,CAAA;IACnC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,uBAAuB,CAAC,EAAE,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,EACzD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,CAAC,KACN,IAAI,CAAA;IACT,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAC,CAG3B;IACD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,iBAAiB,CAAC,CAAyB;IACnD,OAAO,CAAC,KAAK,CAAa;;IAkInB,IAAI,CAAC,MAAM,EAAE,gBAAgB;IAkMpC,OAAO,CAAC,aAAa;IAyBd,WAAW;IAUX,OAAO;YAUA,SAAS;YA2MT,aAAa;IAkD3B,OAAO,CAAC,UAAU;YAcJ,QAAQ;YAkCR,oBAAoB;IAuBlC,OAAO,CAAC,QAAQ;YAUF,OAAO;YAcP,kBAAkB;CA6BjC"}
@@ -2,11 +2,14 @@ import { Signal } from "../signals/base.js";
2
2
  import { watch } from "../signals/watch.js";
3
3
  import { __DEV__ } from "../env.js";
4
4
  import { flushSync, nextIdle } from "../scheduler.js";
5
+ import { toArray } from "../utils/format.js";
5
6
  import { FileRouterDataLoadError } from "./errors.js";
6
- import { fileRouterInstance, fileRouterRoute, routerCache } from "./globals.js";
7
- import { formatViteImportMap, matchLayouts, matchRoute, match404Route, normalizePrefixPath, parseQuery, wrapWithLayouts, } from "./utils/index.js";
7
+ import { fileRouterInstance, fileRouterRoute, requestContext, routerCache, } from "./globals.js";
8
+ import { formatViteImportMap, matchModules, matchRoute, match404Route, normalizePrefixPath, parseQuery, wrapWithLayouts, runAfterEachGuards, runBeforeEachGuards, runBeforeEnterHooks, runBeforeLeaveHooks, } from "./utils/index.js";
8
9
  import { RouterCache } from "./cache.js";
9
10
  import { scrollStack } from "./scrollStack.js";
11
+ let transitionId = 0;
12
+ let currentTransition = null;
10
13
  export class FileRouterController {
11
14
  constructor() {
12
15
  routerCache.current ?? (routerCache.current = new RouterCache());
@@ -18,6 +21,7 @@ export class FileRouterController {
18
21
  this.historyIndex = 0;
19
22
  this.layouts = {};
20
23
  this.pages = {};
24
+ this.guards = {};
21
25
  this.state = {
22
26
  pathname: window.location.pathname,
23
27
  hash: window.location.hash,
@@ -29,7 +33,7 @@ export class FileRouterController {
29
33
  this.contextValue = {
30
34
  invalidate: async (...paths) => {
31
35
  if (this.invalidate(...paths)) {
32
- return this.loadRoute(void 0, void 0, true);
36
+ return this.loadRoute();
33
37
  }
34
38
  },
35
39
  get state() {
@@ -41,7 +45,7 @@ export class FileRouterController {
41
45
  if (options?.invalidate ?? true) {
42
46
  this.invalidate(this.state.pathname);
43
47
  }
44
- return this.loadRoute(void 0, void 0, options?.transition);
48
+ return this.loadRoute({ transition: options?.transition });
45
49
  },
46
50
  setQuery: this.setQuery.bind(this),
47
51
  setHash: this.setHash.bind(this),
@@ -62,11 +66,10 @@ export class FileRouterController {
62
66
  const loader = config.loader;
63
67
  if (curPage?.route === existing.route && loader) {
64
68
  const p = this.currentPageProps.value;
65
- const transition = (loader.mode !== "static" && loader.transition) ??
66
- this.enableTransitions;
69
+ const transition = (!loader.static && loader.transition) ?? this.enableTransitions;
67
70
  // Check cache first if caching is enabled
68
71
  let cachedData = null;
69
- if (loader.mode !== "static" && loader.cache) {
72
+ if (!loader.static && loader.cache) {
70
73
  const cacheKey = {
71
74
  path: this.state.pathname,
72
75
  params: this.state.params,
@@ -82,9 +85,7 @@ export class FileRouterController {
82
85
  error: null,
83
86
  loading: false,
84
87
  };
85
- handleStateTransition(this.state.signal, transition, () => {
86
- this.currentPageProps.value = props;
87
- });
88
+ handleStateTransition(transition, transitionId, () => (this.currentPageProps.value = props));
88
89
  }
89
90
  else {
90
91
  // No cached data - show loading state and load data
@@ -94,10 +95,8 @@ export class FileRouterController {
94
95
  data: null,
95
96
  error: null,
96
97
  };
97
- handleStateTransition(this.state.signal, transition, () => {
98
- this.currentPageProps.value = props;
99
- });
100
- this.loadRouteData(config, props, this.state, transition);
98
+ handleStateTransition(transition, transitionId, () => (this.currentPageProps.value = props));
99
+ this.loadRouteData(config, this.state, transition);
101
100
  }
102
101
  }
103
102
  this.pageRouteToConfig?.set(existing.route, config);
@@ -122,14 +121,25 @@ export class FileRouterController {
122
121
  }
123
122
  }
124
123
  init(config) {
125
- const { pages, layouts, dir = "/pages", baseUrl = "/", transition, preloaded, } = config;
124
+ const { pages, layouts, guards, dir = "/pages", baseUrl = "/", transition, preloaded, } = config;
126
125
  this.enableTransitions = !!transition;
127
126
  const [normalizedDir, normalizedBaseUrl] = [
128
127
  normalizePrefixPath(dir),
129
128
  normalizePrefixPath(baseUrl),
130
129
  ];
131
- if (preloaded) {
132
- const { pages, layouts, page, pageProps, pageLayouts, route, params, query, cacheData, } = preloaded;
130
+ if (!preloaded) {
131
+ this.pages = formatViteImportMap(pages, normalizedDir, normalizedBaseUrl);
132
+ this.layouts = formatViteImportMap(layouts, normalizedDir, normalizedBaseUrl);
133
+ this.guards = !guards
134
+ ? {}
135
+ : formatViteImportMap(guards, normalizedDir, normalizedBaseUrl);
136
+ if (__DEV__) {
137
+ validateRoutes(this.pages);
138
+ }
139
+ this.loadRoute();
140
+ }
141
+ else {
142
+ const { pages, layouts, guards, page, pageProps, pagePropsPromise, pageLayouts, route, params, query, cacheData, } = preloaded;
133
143
  this.state = {
134
144
  params,
135
145
  query,
@@ -146,45 +156,42 @@ export class FileRouterController {
146
156
  this.currentLayouts.value = pageLayouts.map((l) => l.default);
147
157
  this.pages = pages;
148
158
  this.layouts = layouts;
159
+ this.guards = (guards ??
160
+ {});
149
161
  if (__DEV__) {
162
+ validateRoutes(this.pages);
150
163
  if (page.config) {
151
164
  this.dev_onPageConfigDefined(route, page.config);
152
165
  }
153
166
  }
154
- if (__DEV__) {
155
- validateRoutes(this.pages);
156
- }
157
167
  const loader = page.config?.loader;
158
- if (loader &&
159
- ((loader.mode !== "static" && pageProps.loading === true) || __DEV__)) {
168
+ const transition = (!loader?.static && loader?.transition) ?? this.enableTransitions;
169
+ if (loader && pagePropsPromise) {
170
+ const prevState = this.state;
171
+ pagePropsPromise.then(({ data, error }) => {
172
+ if (this.state !== prevState)
173
+ return;
174
+ handleStateTransition(transition, transitionId, () => (this.currentPageProps.value = { loading: false, data, error }));
175
+ });
176
+ }
177
+ else if (loader &&
178
+ ((!loader.static && pageProps.loading === true) || __DEV__)) {
160
179
  if (cacheData === null) {
161
- this.loadRouteData(page.config, pageProps, this.state);
180
+ this.loadRouteData(page.config, this.state);
162
181
  }
163
182
  else {
164
183
  nextIdle(() => {
165
- const props = {
166
- ...pageProps,
167
- data: cacheData.value,
168
- error: null,
169
- loading: false,
170
- };
171
- // @ts-ignore
172
- const transition = loader.transition ?? this.enableTransitions;
173
- handleStateTransition(this.state.signal, transition, () => {
174
- this.currentPageProps.value = props;
184
+ handleStateTransition(transition, transitionId, () => {
185
+ this.currentPageProps.value = {
186
+ data: cacheData.value,
187
+ error: null,
188
+ loading: false,
189
+ };
175
190
  });
176
191
  });
177
192
  }
178
193
  }
179
194
  }
180
- else {
181
- this.pages = formatViteImportMap(pages, normalizedDir, normalizedBaseUrl);
182
- this.layouts = formatViteImportMap(layouts, normalizedDir, normalizedBaseUrl);
183
- if (__DEV__) {
184
- validateRoutes(this.pages);
185
- }
186
- this.loadRoute();
187
- }
188
195
  window.history.scrollRestoration = "manual";
189
196
  const historyState = window.history.state;
190
197
  if (typeof historyState !== "object" ||
@@ -212,20 +219,59 @@ export class FileRouterController {
212
219
  scrollStack.replace(this.historyIndex, window.scrollX, window.scrollY);
213
220
  window.history.scrollRestoration = "auto";
214
221
  });
222
+ let ignorePopState = false;
215
223
  window.addEventListener("popstate", (e) => {
216
224
  e.preventDefault();
225
+ if (!ignorePopState &&
226
+ this.onBeforeLeave(window.location.pathname) === false) {
227
+ ignorePopState = true;
228
+ if (e.state !== null) {
229
+ if (e.state.index > this.historyIndex) {
230
+ window.history.go(-1);
231
+ }
232
+ else if (e.state.index < this.historyIndex) {
233
+ window.history.go(1);
234
+ }
235
+ }
236
+ return;
237
+ }
238
+ if (ignorePopState) {
239
+ ignorePopState = false;
240
+ return;
241
+ }
217
242
  scrollStack.replace(this.historyIndex, window.scrollX, window.scrollY);
218
- this.loadRoute().then(() => {
219
- if (e.state != null) {
243
+ // prep 'on painted' callback for scroll-to-offset action
244
+ // this will fire once the page has rendered but before (loader?) kicks off.
245
+ let onPaint;
246
+ if (e.state != null) {
247
+ onPaint = () => {
220
248
  this.historyIndex = e.state.index;
221
249
  const offset = scrollStack.getItem(e.state.index);
222
250
  if (offset !== undefined) {
223
251
  window.scrollTo(...offset);
224
252
  }
225
- }
226
- });
253
+ };
254
+ }
255
+ this.loadRoute({ onPaint });
227
256
  });
228
257
  }
258
+ onBeforeLeave(to) {
259
+ const currentPage = this.currentPage.peek();
260
+ if (!currentPage) {
261
+ return true;
262
+ }
263
+ let config = currentPage.config ?? {};
264
+ if (__DEV__) {
265
+ if (this.pageRouteToConfig?.has(currentPage.route)) {
266
+ config = this.pageRouteToConfig.get(currentPage.route);
267
+ }
268
+ }
269
+ const onBeforeLeave = config.hooks?.onBeforeLeave;
270
+ if (onBeforeLeave) {
271
+ return runBeforeLeaveHooks(toArray(onBeforeLeave), { ...requestContext.current }, to, this.state.pathname);
272
+ }
273
+ return true;
274
+ }
229
275
  getChildren() {
230
276
  const page = this.currentPage.value;
231
277
  if (!page)
@@ -242,7 +288,8 @@ export class FileRouterController {
242
288
  fileRouterRoute.current = null;
243
289
  fileRouterInstance.current = null;
244
290
  }
245
- async loadRoute(path = window.location.pathname, props = {}, enableTransition = this.enableTransitions, isStatic404 = false) {
291
+ async loadRoute(options) {
292
+ const { transition: enableTransition = this.enableTransitions, isStatic404 = false, path = window.location.pathname, onPaint, } = options ?? {};
246
293
  this.abortController?.abort();
247
294
  const signal = (this.abortController = new AbortController()).signal;
248
295
  try {
@@ -261,9 +308,22 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
261
308
  routeMatch = _404Match;
262
309
  }
263
310
  const { route, pageEntry, params, routeSegments } = routeMatch;
311
+ // Apply beforeEach guards before loading route
312
+ const guardEntries = matchModules(this.guards, routeSegments);
313
+ const guardModules = await Promise.all(guardEntries.map((entry) => entry.load()));
314
+ const fromPath = this.state.pathname;
315
+ const redirectPath = await runBeforeEachGuards(guardModules, { ...requestContext.current }, path, fromPath);
316
+ // If redirect was requested, navigate to that path instead
317
+ if (redirectPath !== null) {
318
+ this.state.pathname = path;
319
+ return this.navigate(redirectPath, {
320
+ replace: true,
321
+ transition: enableTransition,
322
+ });
323
+ }
264
324
  fileRouterRoute.current = route;
265
325
  const pagePromise = pageEntry.load();
266
- const layoutPromises = matchLayouts(this.layouts, routeSegments).map((layoutEntry) => layoutEntry.load());
326
+ const layoutPromises = matchModules(this.layouts, routeSegments).map((layoutEntry) => layoutEntry.load());
267
327
  const [page, ...layouts] = await Promise.all([
268
328
  pagePromise,
269
329
  ...layoutPromises,
@@ -288,54 +348,66 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
288
348
  config = this.pageRouteToConfig.get(route);
289
349
  }
290
350
  }
291
- const { loader } = config;
292
- if (loader) {
293
- if (loader.mode !== "static" || __DEV__) {
294
- // Check cache first if caching is enabled
295
- let cachedData = null;
296
- if (loader.mode !== "static" && loader.cache) {
297
- const cacheKey = {
298
- path: routerState.pathname,
299
- params: routerState.params,
300
- query: routerState.query,
301
- };
302
- cachedData = routerCache.current.get(cacheKey, loader.cache);
303
- }
304
- if (cachedData !== null) {
305
- // Use cached data immediately - no loading state needed
306
- props = {
307
- ...props,
308
- data: cachedData.value,
309
- error: null,
310
- loading: false,
311
- };
312
- }
313
- else {
314
- // No cached data - show loading state and load data
315
- props = {
316
- ...props,
317
- loading: true,
318
- data: null,
319
- error: null,
320
- };
321
- this.loadRouteData(config, props, routerState, enableTransition);
322
- }
351
+ const { loader, hooks } = config;
352
+ if (hooks?.onBeforeEnter) {
353
+ const redirectPath = await runBeforeEnterHooks(toArray(hooks.onBeforeEnter), requestContext, path, fromPath);
354
+ if (redirectPath !== null) {
355
+ this.state.pathname = path;
356
+ return this.navigate(redirectPath, {
357
+ replace: true,
358
+ transition: enableTransition,
359
+ });
323
360
  }
324
- else {
325
- const staticProps = page.__KIRU_STATIC_PROPS__?.[path];
326
- if (!staticProps) {
327
- return this.loadRoute(path, props, enableTransition, true);
361
+ }
362
+ let props = {};
363
+ if (!!loader) {
364
+ props = {
365
+ data: null,
366
+ error: null,
367
+ loading: true,
368
+ };
369
+ }
370
+ if (loader?.static && !__DEV__) {
371
+ const staticProps = page.__KIRU_STATIC_PROPS__?.[path];
372
+ if (!staticProps) {
373
+ // 404
374
+ return this.loadRoute({
375
+ path,
376
+ transition: enableTransition,
377
+ isStatic404: true,
378
+ });
379
+ }
380
+ const { data, error } = staticProps;
381
+ props = error
382
+ ? {
383
+ data: null,
384
+ error: new FileRouterDataLoadError(error),
385
+ loading: false,
328
386
  }
329
- const { data, error } = staticProps;
330
- props = {
331
- ...props,
387
+ : {
332
388
  data: data,
333
- error: error ? new FileRouterDataLoadError(error) : null,
389
+ error: null,
390
+ loading: false,
391
+ };
392
+ }
393
+ else if (!loader?.static && loader?.cache) {
394
+ const cacheKey = {
395
+ path: routerState.pathname,
396
+ params: routerState.params,
397
+ query: routerState.query,
398
+ };
399
+ const cachedData = routerCache.current.get(cacheKey, loader.cache);
400
+ if (cachedData !== null) {
401
+ props = {
402
+ data: cachedData.value,
403
+ error: null,
334
404
  loading: false,
335
405
  };
336
406
  }
337
407
  }
338
- return handleStateTransition(signal, enableTransition, () => {
408
+ // loader transition must use the same id as page transition in order to prevent skipping it.
409
+ let tId = transitionId++;
410
+ return await handleStateTransition(enableTransition, tId, () => {
339
411
  this.state = routerState;
340
412
  this.currentPage.value = {
341
413
  component: page.default,
@@ -346,6 +418,15 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
346
418
  this.currentLayouts.value = layouts
347
419
  .filter((m) => typeof m.default === "function")
348
420
  .map((m) => m.default);
421
+ nextIdle(() => {
422
+ runAfterEachGuards(guardModules, { ...requestContext.current }, path, fromPath);
423
+ if (props.loading) {
424
+ this.loadRouteData(config, routerState, enableTransition, tId).then(() => signal.aborted || onPaint?.());
425
+ }
426
+ else {
427
+ onPaint?.();
428
+ }
429
+ });
349
430
  });
350
431
  }
351
432
  catch (error) {
@@ -353,14 +434,14 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
353
434
  this.currentPage.value = null;
354
435
  }
355
436
  }
356
- async loadRouteData(config, props, routerState, enableTransition = this.enableTransitions) {
437
+ async loadRouteData(config, routerState, enableTransition = this.enableTransitions, id = transitionId) {
357
438
  const { loader } = config;
358
439
  // Load data from loader (cache check is now done earlier in loadRoute)
359
- loader
360
- .load(routerState)
440
+ return loader
441
+ .load({ ...routerState, context: { ...requestContext.current } })
361
442
  .then((data) => {
362
443
  // Cache the data if caching is enabled
363
- if (loader.mode !== "static" && loader.cache) {
444
+ if (!loader.static && loader.cache) {
364
445
  const cacheKey = {
365
446
  path: routerState.pathname,
366
447
  params: routerState.params,
@@ -381,13 +462,8 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
381
462
  .then((state) => {
382
463
  if (routerState.signal.aborted)
383
464
  return;
384
- const transition = (loader.mode !== "static" && loader.transition) ?? enableTransition;
385
- handleStateTransition(routerState.signal, transition, () => {
386
- this.currentPageProps.value = {
387
- ...props,
388
- ...state,
389
- };
390
- });
465
+ const transition = (!loader.static && loader.transition) ?? enableTransition;
466
+ return handleStateTransition(transition, id, () => (this.currentPageProps.value = state));
391
467
  });
392
468
  }
393
469
  invalidate(...paths) {
@@ -402,11 +478,13 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
402
478
  const url = new URL(path, "http://localhost");
403
479
  const { hash: nextHash, pathname: nextPath } = url;
404
480
  const { hash: prevHash, pathname: prevPath } = this.state;
405
- if (nextHash === prevHash && nextPath === prevPath) {
481
+ if ((nextHash === prevHash && nextPath === prevPath) ||
482
+ this.onBeforeLeave(prevPath) === false) {
406
483
  return;
407
484
  }
408
485
  this.updateHistoryState(path, options);
409
- this.loadRoute(void 0, void 0, options?.transition ?? this.enableTransitions).then(() => {
486
+ const transition = options?.transition ?? this.enableTransitions;
487
+ this.loadRoute({ transition }).then(() => {
410
488
  if (nextHash !== prevHash) {
411
489
  window.dispatchEvent(new HashChangeEvent("hashchange"));
412
490
  }
@@ -429,7 +507,7 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
429
507
  const { pageEntry, route } = routeMatch;
430
508
  fileRouterRoute.current = route;
431
509
  const pagePromise = pageEntry.load();
432
- const layoutPromises = matchLayouts(this.layouts, route.split("/")).map((layoutEntry) => layoutEntry.load());
510
+ const layoutPromises = matchModules(this.layouts, route.split("/")).map((layoutEntry) => layoutEntry.load());
433
511
  await Promise.all([pagePromise, ...layoutPromises]);
434
512
  fileRouterRoute.current = null;
435
513
  }
@@ -464,10 +542,10 @@ See https://kirujs.dev/docs/api/file-router#404 for more information.`);
464
542
  window.history.replaceState({ ...window.history.state, index: this.historyIndex }, "", path);
465
543
  }
466
544
  else {
545
+ const current = scrollStack.get();
467
546
  // if we've gone back and are now going forward, we need to
468
547
  // truncate the scroll stack so it doesn't just permanently grow.
469
548
  // this should keep it at the same length as the history stack.
470
- const current = scrollStack.get();
471
549
  if (this.historyIndex < window.history.length - 1) {
472
550
  current.length = this.historyIndex;
473
551
  }
@@ -490,19 +568,29 @@ function buildQueryString(query) {
490
568
  }
491
569
  return params.toString();
492
570
  }
493
- async function handleStateTransition(signal, enableTransition, callback) {
571
+ async function handleStateTransition(enableTransition, id, callback) {
572
+ if (currentTransition) {
573
+ const { id: currentId, transition } = currentTransition;
574
+ // for cross-page navigations, we skip any existing transitions.
575
+ // otherwise (eg. loaders), we wait for the existing transition to finish
576
+ if (id !== currentId) {
577
+ transition.skipTransition();
578
+ }
579
+ await transition.finished;
580
+ }
494
581
  if (!enableTransition || typeof document.startViewTransition !== "function") {
495
582
  return new Promise((resolve) => {
496
583
  callback();
497
584
  nextIdle(resolve);
498
585
  });
499
586
  }
500
- const vt = document.startViewTransition(() => {
587
+ const transition = document.startViewTransition(() => {
501
588
  callback();
502
589
  flushSync();
503
590
  });
504
- signal.addEventListener("abort", () => vt.skipTransition());
505
- await vt.ready;
591
+ currentTransition = { id, transition };
592
+ await transition.finished;
593
+ currentTransition = null;
506
594
  }
507
595
  function validateRoutes(pageMap) {
508
596
  const routeConflicts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"fileRouterController.js","sourceRoot":"","sources":["../../src/router/fileRouterController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileRouterController.js","sourceRoot":"","sources":["../../src/router/fileRouterController.ts"],"names":[],"mappings":"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"}