@reckona/mreact-router 0.0.112 → 0.0.114

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reckona/mreact-router",
3
- "version": "0.0.112",
3
+ "version": "0.0.114",
4
4
  "description": "File-system app router, SSR, actions, and deployment adapters for mreact.",
5
5
  "keywords": [
6
6
  "jsx",
@@ -105,20 +105,20 @@
105
105
  },
106
106
  "dependencies": {
107
107
  "typescript": "^6.0.3",
108
- "@reckona/mreact-compat": "0.0.112",
109
- "@reckona/mreact-query": "0.0.112",
110
- "@reckona/mreact-devtools": "0.0.112",
111
- "@reckona/mreact-reactive-core": "0.0.112",
112
- "@reckona/mreact-compiler": "0.0.112",
113
- "@reckona/mreact": "0.0.112",
114
- "@reckona/mreact-reactive-dom": "0.0.112",
115
- "@reckona/mreact-server": "0.0.112",
116
- "@reckona/mreact-shared": "0.0.112"
108
+ "@reckona/mreact-compat": "0.0.114",
109
+ "@reckona/mreact": "0.0.114",
110
+ "@reckona/mreact-compiler": "0.0.114",
111
+ "@reckona/mreact-query": "0.0.114",
112
+ "@reckona/mreact-reactive-core": "0.0.114",
113
+ "@reckona/mreact-devtools": "0.0.114",
114
+ "@reckona/mreact-reactive-dom": "0.0.114",
115
+ "@reckona/mreact-server": "0.0.114",
116
+ "@reckona/mreact-shared": "0.0.114"
117
117
  },
118
118
  "peerDependencies": {
119
119
  "vite": ">=8 <9"
120
120
  },
121
121
  "optionalDependencies": {
122
- "@reckona/mreact-router-native": "0.0.112"
122
+ "@reckona/mreact-router-native": "0.0.114"
123
123
  }
124
124
  }
@@ -103,6 +103,7 @@ export type CloudflareRouteModuleComponent<Data = unknown, Env = unknown> = (
103
103
 
104
104
  export interface CloudflareRouteModule<Data = unknown, Env = unknown> {
105
105
  App?: CloudflareRouteModuleComponent<Data, Env> | undefined;
106
+ CloudflareRouteComponent?: CloudflareRouteModuleComponent<Data, Env> | undefined;
106
107
  default?: CloudflareRouteModuleComponent<Data, Env> | undefined;
107
108
  generateMetadata?:
108
109
  | ((
@@ -438,6 +439,7 @@ const cloudflareReservedPageModuleExportNames = new Set([
438
439
  "POST",
439
440
  "PUT",
440
441
  "App",
442
+ "CloudflareRouteComponent",
441
443
  "default",
442
444
  "generateMetadata",
443
445
  "generateStaticParams",
@@ -463,6 +465,11 @@ function selectCloudflarePageComponent<Data, Env>(
463
465
  return appExport as CloudflareRouteModuleComponent<Data, Env>;
464
466
  }
465
467
 
468
+ const cloudflareRouteComponentExport = readCloudflareModuleExport(module, "CloudflareRouteComponent");
469
+ if (typeof cloudflareRouteComponentExport === "function") {
470
+ return cloudflareRouteComponentExport as CloudflareRouteModuleComponent<Data, Env>;
471
+ }
472
+
466
473
  for (const name of Object.keys(module)) {
467
474
  const value = readCloudflareModuleExport(module, name);
468
475
  if (
@@ -489,7 +496,7 @@ function readCloudflareModuleExport(module: object, name: string): unknown {
489
496
  return descriptor.get?.call(module);
490
497
  }
491
498
 
492
- const cloudflareDiagnosticPageModuleExportNames = ["default", "App", "slots"] as const;
499
+ const cloudflareDiagnosticPageModuleExportNames = ["default", "App", "CloudflareRouteComponent", "slots"] as const;
493
500
 
494
501
  // Fixed names + typeof only (never values) so the 500 response is useful without
495
502
  // listing app-specific export names. Accessors are not invoked.
package/src/build.ts CHANGED
@@ -2611,24 +2611,42 @@ async function writeCloudflareRouteModules(options: {
2611
2611
  function cloudflarePageRouteFacadeModuleSource(componentImport: string): string {
2612
2612
  return `import * as componentModule from ${JSON.stringify(componentImport)};
2613
2613
 
2614
- const componentDefault = readComponentModuleExport(componentModule, "default");
2615
- const componentApp = readComponentModuleExport(componentModule, "App");
2616
2614
  const componentSlots = readComponentModuleExport(componentModule, "slots");
2617
- const routeComponent = typeof componentDefault === "function"
2618
- ? componentDefault
2619
- : typeof componentApp === "function"
2620
- ? componentApp
2621
- : undefined;
2622
2615
 
2623
- export const App = routeComponent === undefined
2624
- ? undefined
2625
- : function CloudflareRouteComponent(props) {
2626
- return routeComponent(props);
2627
- };
2628
- export default App;
2629
- export const CloudflareRouteComponent = App;
2616
+ export function App(props) {
2617
+ return renderCloudflareRouteComponent(props);
2618
+ }
2619
+ export default function CloudflareDefaultRouteComponent(props) {
2620
+ return renderCloudflareRouteComponent(props);
2621
+ }
2622
+ export function CloudflareRouteComponent(props) {
2623
+ return renderCloudflareRouteComponent(props);
2624
+ }
2630
2625
  export const slots = componentSlots === undefined ? undefined : { ...componentSlots };
2631
2626
 
2627
+ function renderCloudflareRouteComponent(props) {
2628
+ const routeComponent = resolveCloudflareRouteComponent();
2629
+ if (routeComponent === undefined) {
2630
+ throw new Error("No Cloudflare component export was found for ${componentImport}.");
2631
+ }
2632
+
2633
+ return routeComponent(props);
2634
+ }
2635
+
2636
+ function resolveCloudflareRouteComponent() {
2637
+ const componentDefault = readComponentModuleExport(componentModule, "default");
2638
+ if (typeof componentDefault === "function") {
2639
+ return componentDefault;
2640
+ }
2641
+
2642
+ const componentApp = readComponentModuleExport(componentModule, "App");
2643
+ if (typeof componentApp === "function") {
2644
+ return componentApp;
2645
+ }
2646
+
2647
+ return undefined;
2648
+ }
2649
+
2632
2650
  function readComponentModuleExport(module, name) {
2633
2651
  const descriptor = Object.getOwnPropertyDescriptor(module, name);
2634
2652
  if (descriptor === undefined) {