@reckona/mreact-router 0.0.108 → 0.0.110

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.108",
3
+ "version": "0.0.110",
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": "0.0.108",
109
- "@reckona/mreact-compiler": "0.0.108",
110
- "@reckona/mreact-compat": "0.0.108",
111
- "@reckona/mreact-query": "0.0.108",
112
- "@reckona/mreact-devtools": "0.0.108",
113
- "@reckona/mreact-reactive-core": "0.0.108",
114
- "@reckona/mreact-reactive-dom": "0.0.108",
115
- "@reckona/mreact-server": "0.0.108",
116
- "@reckona/mreact-shared": "0.0.108"
108
+ "@reckona/mreact": "0.0.110",
109
+ "@reckona/mreact-compat": "0.0.110",
110
+ "@reckona/mreact-compiler": "0.0.110",
111
+ "@reckona/mreact-query": "0.0.110",
112
+ "@reckona/mreact-reactive-core": "0.0.110",
113
+ "@reckona/mreact-devtools": "0.0.110",
114
+ "@reckona/mreact-reactive-dom": "0.0.110",
115
+ "@reckona/mreact-server": "0.0.110",
116
+ "@reckona/mreact-shared": "0.0.110"
117
117
  },
118
118
  "peerDependencies": {
119
119
  "vite": ">=8 <9"
120
120
  },
121
121
  "optionalDependencies": {
122
- "@reckona/mreact-router-native": "0.0.108"
122
+ "@reckona/mreact-router-native": "0.0.110"
123
123
  }
124
124
  }
@@ -453,15 +453,18 @@ const cloudflareReservedPageModuleExportNames = new Set([
453
453
  function selectCloudflarePageComponent<Data, Env>(
454
454
  module: CloudflareRouteModule<Data, Env>,
455
455
  ): CloudflareRouteModuleComponent<Data, Env> | undefined {
456
- if (typeof module.default === "function") {
457
- return module.default;
456
+ const defaultExport = readCloudflareModuleExport(module, "default");
457
+ if (typeof defaultExport === "function") {
458
+ return defaultExport as CloudflareRouteModuleComponent<Data, Env>;
458
459
  }
459
460
 
460
- if (typeof module.App === "function") {
461
- return module.App;
461
+ const appExport = readCloudflareModuleExport(module, "App");
462
+ if (typeof appExport === "function") {
463
+ return appExport as CloudflareRouteModuleComponent<Data, Env>;
462
464
  }
463
465
 
464
- for (const [name, value] of Object.entries(module)) {
466
+ for (const name of Object.keys(module)) {
467
+ const value = readCloudflareModuleExport(module, name);
465
468
  if (
466
469
  !cloudflareReservedPageModuleExportNames.has(name) &&
467
470
  typeof value === "function"
@@ -473,6 +476,19 @@ function selectCloudflarePageComponent<Data, Env>(
473
476
  return undefined;
474
477
  }
475
478
 
479
+ function readCloudflareModuleExport(module: object, name: string): unknown {
480
+ const descriptor = Object.getOwnPropertyDescriptor(module, name);
481
+ if (descriptor === undefined) {
482
+ return undefined;
483
+ }
484
+
485
+ if ("value" in descriptor) {
486
+ return descriptor.value;
487
+ }
488
+
489
+ return descriptor.get?.call(module);
490
+ }
491
+
476
492
  const cloudflareDiagnosticPageModuleExportNames = ["default", "App", "slots"] as const;
477
493
 
478
494
  // Fixed names + typeof only (never values) so the 500 response is useful without
package/src/build.ts CHANGED
@@ -2609,8 +2609,11 @@ async function writeCloudflareRouteModules(options: {
2609
2609
  }
2610
2610
 
2611
2611
  function cloudflarePageRouteFacadeModuleSource(componentImport: string): string {
2612
- return `import { default as componentDefault, App as componentApp, slots as componentSlots } from ${JSON.stringify(componentImport)};
2612
+ return `import * as componentModule from ${JSON.stringify(componentImport)};
2613
2613
 
2614
+ const componentDefault = readComponentModuleExport(componentModule, "default");
2615
+ const componentApp = readComponentModuleExport(componentModule, "App");
2616
+ const componentSlots = readComponentModuleExport(componentModule, "slots");
2614
2617
  const routeComponent = typeof componentDefault === "function"
2615
2618
  ? componentDefault
2616
2619
  : typeof componentApp === "function"
@@ -2624,7 +2627,20 @@ export const App = routeComponent === undefined
2624
2627
  };
2625
2628
  export default App;
2626
2629
  export const CloudflareRouteComponent = App;
2627
- export const slots = componentSlots === undefined ? undefined : { ...componentSlots };`;
2630
+ export const slots = componentSlots === undefined ? undefined : { ...componentSlots };
2631
+
2632
+ function readComponentModuleExport(module, name) {
2633
+ const descriptor = Object.getOwnPropertyDescriptor(module, name);
2634
+ if (descriptor === undefined) {
2635
+ return undefined;
2636
+ }
2637
+
2638
+ if ("value" in descriptor) {
2639
+ return descriptor.value;
2640
+ }
2641
+
2642
+ return descriptor.get?.call(module);
2643
+ }`;
2628
2644
  }
2629
2645
 
2630
2646
  async function collectCloudflareDirectComponentRoutes(options: {