@reckona/mreact-router 0.0.181 → 0.0.183

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 (47) hide show
  1. package/dist/actions.d.ts.map +1 -1
  2. package/dist/actions.js +20 -8
  3. package/dist/actions.js.map +1 -1
  4. package/dist/build.d.ts +3 -0
  5. package/dist/build.d.ts.map +1 -1
  6. package/dist/build.js +263 -5
  7. package/dist/build.js.map +1 -1
  8. package/dist/built-assets.d.ts.map +1 -1
  9. package/dist/built-assets.js +2 -2
  10. package/dist/built-assets.js.map +1 -1
  11. package/dist/cache-config.d.ts +1 -1
  12. package/dist/cache-config.d.ts.map +1 -1
  13. package/dist/cache-config.js.map +1 -1
  14. package/dist/cache.d.ts.map +1 -1
  15. package/dist/cache.js +18 -1
  16. package/dist/cache.js.map +1 -1
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +16 -6
  19. package/dist/client.js.map +1 -1
  20. package/dist/config.d.ts +2 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +6 -0
  23. package/dist/config.js.map +1 -1
  24. package/dist/csrf.js +10 -6
  25. package/dist/csrf.js.map +1 -1
  26. package/dist/navigation.d.ts.map +1 -1
  27. package/dist/navigation.js +14 -1
  28. package/dist/navigation.js.map +1 -1
  29. package/dist/render.d.ts +4 -0
  30. package/dist/render.d.ts.map +1 -1
  31. package/dist/render.js +96 -46
  32. package/dist/render.js.map +1 -1
  33. package/dist/vite.d.ts.map +1 -1
  34. package/dist/vite.js +35 -4
  35. package/dist/vite.js.map +1 -1
  36. package/package.json +11 -11
  37. package/src/actions.ts +26 -9
  38. package/src/build.ts +398 -5
  39. package/src/built-assets.ts +2 -3
  40. package/src/cache-config.ts +1 -0
  41. package/src/cache.ts +20 -1
  42. package/src/client.ts +16 -6
  43. package/src/config.ts +8 -0
  44. package/src/csrf.ts +13 -6
  45. package/src/navigation.ts +16 -1
  46. package/src/render.ts +194 -78
  47. package/src/vite.ts +41 -4
package/src/vite.ts CHANGED
@@ -69,6 +69,7 @@ export interface AppRouterViteMiddlewareOptions extends AppRouterProjectOptions
69
69
 
70
70
  type AppRouterViteRuntimeMiddlewareOptions = AppRouterViteMiddlewareOptions & {
71
71
  clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;
72
+ devServerModuleCacheVersion?: (() => string | undefined) | undefined;
72
73
  navigationScanVitePlugins?: readonly PluginOption[] | undefined;
73
74
  viteDevServer?: ViteDevServer | undefined;
74
75
  };
@@ -193,6 +194,7 @@ export function createAppRouterVitePlugin(options: AppRouterVitePluginOptions):
193
194
  // built-in CSS plugin) whose `transform` requires a dev-server environment the
194
195
  // lightweight navigation scan cannot provide. Mirrors what the build forwards.
195
196
  let userVitePlugins: readonly PluginOption[] | undefined;
197
+ let devServerModuleCacheVersion = 0;
196
198
 
197
199
  const plugin: MreactRouterPlugin = {
198
200
  [mreactRouterConfigKey]: {
@@ -245,6 +247,7 @@ export function createAppRouterVitePlugin(options: AppRouterVitePluginOptions):
245
247
  const middlewareOptions: AppRouterViteRuntimeMiddlewareOptions = {
246
248
  ...options,
247
249
  define: server.config.define,
250
+ devServerModuleCacheVersion: () => `dev:${devServerModuleCacheVersion}`,
248
251
  navigationScanVitePlugins: userVitePlugins ?? [],
249
252
  viteDevServer: server,
250
253
  vitePlugins: server.config.plugins,
@@ -260,8 +263,13 @@ export function createAppRouterVitePlugin(options: AppRouterVitePluginOptions):
260
263
  return;
261
264
  }
262
265
 
266
+ devServerModuleCacheVersion += 1;
263
267
  const timestamp = Date.now();
264
- const updates = Array.from(context.server.moduleGraph.idToModuleMap.values())
268
+ const hotModules =
269
+ context.modules.length > 0
270
+ ? context.modules
271
+ : Array.from(context.server.moduleGraph.idToModuleMap.values());
272
+ const updates = hotModules
265
273
  .filter((moduleNode) => isMreactClientDevModuleId(moduleNode.id))
266
274
  .map((moduleNode) => {
267
275
  context.server.moduleGraph.invalidateModule(moduleNode);
@@ -580,20 +588,51 @@ async function handleAppRouterViteRequest(
580
588
  clientStylesByFile,
581
589
  clientRouteInferenceCache: options.clientRouteInferenceCache,
582
590
  navigationScripts,
591
+ onRenderError(error) {
592
+ sendViteErrorOverlay(options.viteDevServer, error);
593
+ },
583
594
  request,
584
595
  logger: options.logger,
585
596
  routeCache: options.routeCache,
586
597
  routeMatcher,
587
598
  routes,
588
599
  serverActions: options.serverActions,
600
+ devServerModuleCacheVersion: options.devServerModuleCacheVersion?.(),
589
601
  vitePlugins: routeTransformPlugins,
590
602
  }),
591
603
  );
592
604
  } catch (error) {
605
+ sendViteErrorOverlay(options.viteDevServer, error);
593
606
  next(error);
594
607
  }
595
608
  }
596
609
 
610
+ function sendViteErrorOverlay(server: ViteDevServer | undefined, error: unknown): void {
611
+ if (server === undefined) {
612
+ return;
613
+ }
614
+
615
+ if (error instanceof Error) {
616
+ server.ssrFixStacktrace(error);
617
+ }
618
+ server.ws.send({
619
+ type: "error",
620
+ err: viteErrorPayload(error),
621
+ });
622
+ }
623
+
624
+ function viteErrorPayload(error: unknown): { message: string; stack: string } {
625
+ if (error instanceof Error) {
626
+ return {
627
+ message: error.message,
628
+ stack: error.stack ?? error.message,
629
+ };
630
+ }
631
+
632
+ const message = String(error);
633
+ return { message, stack: message };
634
+ }
635
+
597
636
  /**
598
637
  * Renders a development client asset generated by the app-router Vite integration.
599
638
  */
@@ -907,9 +946,7 @@ async function devNavigationScripts(
907
946
  console.warn(formatClientRouteInferenceDiagnostic(navigationRuntimeDiagnostic));
908
947
  }
909
948
 
910
- return navigation
911
- ? ([route.path, navigationRuntimeScriptForDev()] as const)
912
- : undefined;
949
+ return navigation ? ([route.path, navigationRuntimeScriptForDev()] as const) : undefined;
913
950
  }),
914
951
  );
915
952