@absolutejs/absolute 0.20.0-beta.6 → 0.20.0-beta.60

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 (179) hide show
  1. package/README.md +205 -0
  2. package/dist/angular/browser.js +392 -405
  3. package/dist/angular/browser.js.map +3 -3
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
  5. package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
  6. package/dist/angular/index.js +379 -321
  7. package/dist/angular/index.js.map +8 -7
  8. package/dist/angular/server.js +133 -61
  9. package/dist/angular/server.js.map +8 -7
  10. package/dist/build.js +2336 -1347
  11. package/dist/build.js.map +22 -17
  12. package/dist/cli/config/client.js +12 -12
  13. package/dist/cli/config/server.js +1140 -1091
  14. package/dist/cli/index.js +9621 -2093
  15. package/dist/client/chunks/angularPatch-arh4sr68.js +157 -0
  16. package/dist/client/chunks/angularPatch-arh4sr68.js.map +10 -0
  17. package/dist/client/chunks/index-5py90ctf.js +87 -0
  18. package/dist/client/chunks/index-5py90ctf.js.map +10 -0
  19. package/dist/client/chunks/index-m35nbkdp.js +374 -0
  20. package/dist/client/chunks/index-m35nbkdp.js.map +12 -0
  21. package/dist/client/chunks/index-qxjc7kc5.js +12 -0
  22. package/dist/client/chunks/index-qxjc7kc5.js.map +9 -0
  23. package/dist/client/chunks/islands-xj2n8nwf.js +281 -0
  24. package/dist/client/chunks/islands-xj2n8nwf.js.map +14 -0
  25. package/dist/client/chunks/react-pdg4325x.js +65 -0
  26. package/dist/client/chunks/react-pdg4325x.js.map +10 -0
  27. package/dist/client/chunks/svelte-s0c964kb.js +19 -0
  28. package/dist/client/chunks/svelte-s0c964kb.js.map +10 -0
  29. package/dist/client/chunks/vue-rdskrnyg.js +24 -0
  30. package/dist/client/chunks/vue-rdskrnyg.js.map +10 -0
  31. package/dist/client/index.js +73 -841
  32. package/dist/client/index.js.map +7 -20
  33. package/dist/core/streamingSlotRegistrar.js +15 -13
  34. package/dist/core/streamingSlotRegistrar.js.map +2 -2
  35. package/dist/core/streamingSlotRegistry.js +11 -9
  36. package/dist/core/streamingSlotRegistry.js.map +2 -2
  37. package/dist/dev/client/hmrClient.ts +35 -3
  38. package/dist/dev/client/hmrTiming.ts +6 -0
  39. package/dist/dev/client/syncDevtools.ts +237 -0
  40. package/dist/dev/serverBootstrap.js +28 -0
  41. package/dist/image-client/imageClient.js +7 -7
  42. package/dist/index.js +3748 -2361
  43. package/dist/index.js.map +38 -30
  44. package/dist/islands/browser.js +11 -25
  45. package/dist/islands/browser.js.map +2 -2
  46. package/dist/islands/index.js +55 -52
  47. package/dist/islands/index.js.map +5 -4
  48. package/dist/mobile/browser.js +429 -20
  49. package/dist/mobile/browser.js.map +8 -5
  50. package/dist/mobile/index.js +10626 -3132
  51. package/dist/mobile/index.js.map +47 -18
  52. package/dist/mobile/remoteMacAgentEntry.js +1374 -14
  53. package/dist/mobile/shellAuth.js +36 -0
  54. package/dist/mobile/shellBootstrap.js +1800 -0
  55. package/dist/mobile/shellExpoAuth.js +163 -0
  56. package/dist/mobile/shellExpoDevices.js +77 -0
  57. package/dist/mobile/shellExpoSync.js +104 -0
  58. package/dist/mobile/shellSync.js +184 -0
  59. package/dist/mobile/shellUpdate.js +456 -0
  60. package/dist/mobile/uiPrimitives.js +264 -0
  61. package/dist/react/browser.js +17 -59
  62. package/dist/react/browser.js.map +2 -2
  63. package/dist/react/components/browser/index.js +107 -107
  64. package/dist/react/components/index.js +118 -116
  65. package/dist/react/components/index.js.map +2 -2
  66. package/dist/react/hooks/index.js +11 -25
  67. package/dist/react/hooks/index.js.map +2 -2
  68. package/dist/react/index.js +110 -67
  69. package/dist/react/index.js.map +8 -7
  70. package/dist/react/jsxDevRuntimeCompat.js +11 -9
  71. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  72. package/dist/react/jsxRuntimeCompat.js +11 -9
  73. package/dist/react/jsxRuntimeCompat.js.map +2 -2
  74. package/dist/react/router/browser.js +9 -7
  75. package/dist/react/router/browser.js.map +2 -2
  76. package/dist/react/router/index.js +9 -7
  77. package/dist/react/router/index.js.map +2 -2
  78. package/dist/react/server.js +67 -11
  79. package/dist/react/server.js.map +7 -6
  80. package/dist/src/build/pwa.d.ts +16 -0
  81. package/dist/src/cli/config/server.d.ts +1 -1
  82. package/dist/src/cli/instanceStatus.d.ts +1 -0
  83. package/dist/src/cli/scripts/dev.d.ts +2 -0
  84. package/dist/src/client/browserTranslation.d.ts +19 -0
  85. package/dist/src/client/index.d.ts +1 -0
  86. package/dist/src/core/browserTranslation.d.ts +6 -0
  87. package/dist/src/core/devBuild.d.ts +1 -0
  88. package/dist/src/core/prepare.d.ts +376 -0
  89. package/dist/src/dev/clientManager.d.ts +1 -0
  90. package/dist/src/dev/devCert.d.ts +6 -4
  91. package/dist/src/dev/serverEntryCopies.d.ts +3 -0
  92. package/dist/src/ember/browser.d.ts +0 -16
  93. package/dist/src/mobile/adaptiveShell.d.ts +27 -0
  94. package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
  95. package/dist/src/mobile/androidRelease.d.ts +9 -2
  96. package/dist/src/mobile/androidTestReport.d.ts +14 -0
  97. package/dist/src/mobile/androidUpgradeConformance.d.ts +47 -0
  98. package/dist/src/mobile/androidWebView.d.ts +1 -0
  99. package/dist/src/mobile/browser.d.ts +2 -0
  100. package/dist/src/mobile/capacitorBundle.d.ts +18 -0
  101. package/dist/src/mobile/ciWorkflow.d.ts +26 -0
  102. package/dist/src/mobile/config.d.ts +9 -1
  103. package/dist/src/mobile/devDeviceAdapter.d.ts +3 -0
  104. package/dist/src/mobile/deviceCapabilities.d.ts +49 -0
  105. package/dist/src/mobile/expoBridge.d.ts +91 -0
  106. package/dist/src/mobile/expoDevController.d.ts +56 -0
  107. package/dist/src/mobile/expoProject.d.ts +16 -0
  108. package/dist/src/mobile/index.d.ts +23 -0
  109. package/dist/src/mobile/iosDeviceAcceptance.d.ts +32 -0
  110. package/dist/src/mobile/iosPhysicalDeviceTransport.d.ts +16 -0
  111. package/dist/src/mobile/iosRelease.d.ts +63 -3
  112. package/dist/src/mobile/iosSimulatorController.d.ts +20 -2
  113. package/dist/src/mobile/iosTestReport.d.ts +24 -0
  114. package/dist/src/mobile/mobileBundleInspection.d.ts +63 -0
  115. package/dist/src/mobile/mobileInspect.d.ts +142 -0
  116. package/dist/src/mobile/mobilePreview.d.ts +174 -0
  117. package/dist/src/mobile/mobilePreviewClient.d.ts +1 -0
  118. package/dist/src/mobile/nativeAuth.d.ts +6 -0
  119. package/dist/src/mobile/nativeBackgroundSync.d.ts +4 -0
  120. package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
  121. package/dist/src/mobile/nativeRoute.d.ts +13 -0
  122. package/dist/src/mobile/nativeTestReport.d.ts +91 -0
  123. package/dist/src/mobile/nativeUpdates.d.ts +4 -0
  124. package/dist/src/mobile/navigationLifecycle.d.ts +36 -0
  125. package/dist/src/mobile/navigationState.d.ts +53 -0
  126. package/dist/src/mobile/pageProtocol.d.ts +2 -0
  127. package/dist/src/mobile/releaseDoctor.d.ts +23 -1
  128. package/dist/src/mobile/remoteMacProtocol.d.ts +134 -1
  129. package/dist/src/mobile/remoteMacWire.d.ts +1 -1
  130. package/dist/src/mobile/shellAuth.d.ts +8 -1
  131. package/dist/src/mobile/shellBootstrap.d.ts +15 -2
  132. package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
  133. package/dist/src/mobile/shellExpoDevices.d.ts +3 -0
  134. package/dist/src/mobile/shellExpoSync.d.ts +18 -0
  135. package/dist/src/mobile/shellHttp.d.ts +2 -0
  136. package/dist/src/mobile/shellPush.d.ts +11 -0
  137. package/dist/src/mobile/shellSync.d.ts +46 -1
  138. package/dist/src/mobile/shellUpdate.d.ts +2 -0
  139. package/dist/src/mobile/syncRemediation.d.ts +10 -0
  140. package/dist/src/mobile/syncSchema.d.ts +9 -0
  141. package/dist/src/mobile/transport.d.ts +14 -0
  142. package/dist/src/mobile/uiPrimitives.d.ts +37 -0
  143. package/dist/src/mobile/updateClient.d.ts +40 -0
  144. package/dist/src/mobile/updateProtocol.d.ts +51 -0
  145. package/dist/src/mobile/updatePublisher.d.ts +66 -0
  146. package/dist/src/mobile/updateRollout.d.ts +16 -0
  147. package/dist/src/mobile/updateRuntime.d.ts +27 -0
  148. package/dist/src/mobile/updateSigning.d.ts +20 -0
  149. package/dist/src/plugins/hmr.d.ts +3 -0
  150. package/dist/src/plugins/imageOptimizer.d.ts +1 -1
  151. package/dist/src/react/hooks/useMediaQuery.d.ts +1 -1
  152. package/dist/src/utils/imageProcessing.d.ts +3 -0
  153. package/dist/src/utils/loadConfig.d.ts +1 -0
  154. package/dist/src/utils/logger.d.ts +1 -0
  155. package/dist/src/utils/startupBanner.d.ts +1 -0
  156. package/dist/src/utils/userAgentFunctions.d.ts +1 -1
  157. package/dist/src/vue/browser.d.ts +1 -0
  158. package/dist/src/vue/browserTranslation.d.ts +5 -0
  159. package/dist/src/vue/index.d.ts +1 -0
  160. package/dist/svelte/browser.js +12 -26
  161. package/dist/svelte/browser.js.map +2 -2
  162. package/dist/svelte/index.js +104 -61
  163. package/dist/svelte/index.js.map +8 -7
  164. package/dist/svelte/server.js +84 -28
  165. package/dist/svelte/server.js.map +7 -6
  166. package/dist/types/build.d.ts +62 -3
  167. package/dist/types/cli.d.ts +1 -0
  168. package/dist/types/messages.d.ts +1 -1
  169. package/dist/vue/browser.js +116 -56
  170. package/dist/vue/browser.js.map +5 -3
  171. package/dist/vue/components/Image.js +9 -7
  172. package/dist/vue/components/Image.js.map +2 -2
  173. package/dist/vue/components/index.js +11 -9
  174. package/dist/vue/components/index.js.map +2 -2
  175. package/dist/vue/index.js +211 -94
  176. package/dist/vue/index.js.map +10 -7
  177. package/dist/vue/server.js +69 -13
  178. package/dist/vue/server.js.map +7 -6
  179. package/package.json +40 -14
@@ -19,12 +19,14 @@ var __toESM = (mod, isNodeMode, target) => {
19
19
  }
20
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
21
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
- for (let key of __getOwnPropNames(mod))
23
- if (!__hasOwnProp.call(to, key))
24
- __defProp(to, key, {
25
- get: __accessProp.bind(mod, key),
26
- enumerable: true
27
- });
22
+ if (mod && typeof mod === "object" || typeof mod === "function") {
23
+ for (let key of __getOwnPropNames(mod))
24
+ if (!__hasOwnProp.call(to, key))
25
+ __defProp(to, key, {
26
+ get: __accessProp.bind(mod, key),
27
+ enumerable: true
28
+ });
29
+ }
28
30
  if (canCache)
29
31
  cache.set(mod, to);
30
32
  return to;
@@ -63,10 +65,10 @@ var __require = import.meta.require;
63
65
  // src/core/devRouteRegistrationCallsite.ts
64
66
  var exports_devRouteRegistrationCallsite = {};
65
67
  __export(exports_devRouteRegistrationCallsite, {
66
- patchElysiaRouteRegistrationCallsites: () => patchElysiaRouteRegistrationCallsites,
67
- isPageHandler: () => isPageHandler,
68
+ getCurrentRouteRegistrationCallsite: () => getCurrentRouteRegistrationCallsite,
68
69
  getOriginalPageHandlerSource: () => getOriginalPageHandlerSource,
69
- getCurrentRouteRegistrationCallsite: () => getCurrentRouteRegistrationCallsite
70
+ isPageHandler: () => isPageHandler,
71
+ patchElysiaRouteRegistrationCallsites: () => patchElysiaRouteRegistrationCallsites
70
72
  });
71
73
  import { AsyncLocalStorage } from "async_hooks";
72
74
  import { Elysia } from "elysia";
@@ -941,6 +943,7 @@ var colors, MONTHS, formatTimestamp = () => {
941
943
  port,
942
944
  host,
943
945
  networkUrl,
946
+ mobilePreviewUrl,
944
947
  protocol = "http"
945
948
  } = options;
946
949
  const name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;
@@ -954,6 +957,9 @@ var colors, MONTHS, formatTimestamp = () => {
954
957
  if (networkUrl) {
955
958
  console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`);
956
959
  }
960
+ if (mobilePreviewUrl) {
961
+ console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Mobile:${colors.reset} ${mobilePreviewUrl}`);
962
+ }
957
963
  console.log("");
958
964
  };
959
965
  var init_startupBanner = __esm(() => {
@@ -1464,6 +1470,20 @@ var init_spaRouteManifest = __esm(() => {
1464
1470
  init_resolveConvention();
1465
1471
  });
1466
1472
 
1473
+ // src/core/browserTranslation.ts
1474
+ var BASELINE_MARKER = "__ABSOLUTE_SSR_TEXT_BASELINES__", BROWSER_TRANSLATION_BASELINE_SCRIPT, browserTranslationBaselineTag = () => `<script>${BROWSER_TRANSLATION_BASELINE_SCRIPT}</script>`, injectBrowserTranslationBaseline = (html) => {
1475
+ if (html.includes(BASELINE_MARKER))
1476
+ return html;
1477
+ const script = browserTranslationBaselineTag();
1478
+ const closingBodyIndex = html.lastIndexOf("</body>");
1479
+ if (closingBodyIndex < 0)
1480
+ return `${html}${script}`;
1481
+ return `${html.slice(0, closingBodyIndex)}${script}${html.slice(closingBodyIndex)}`;
1482
+ };
1483
+ var init_browserTranslation = __esm(() => {
1484
+ BROWSER_TRANSLATION_BASELINE_SCRIPT = "window.__ABSOLUTE_SSR_TEXT_BASELINES__=new WeakMap();" + "{const r=document.body,b=window.__ABSOLUTE_SSR_TEXT_BASELINES__;" + 'if(r)for(const e of [r,...r.querySelectorAll("*")]){' + "const t=new Map();for(const [i,n]of[...e.childNodes].entries())" + 'if(n.nodeType===3)t.set(i,n.nodeValue??"");if(t.size)b.set(e,t);}}';
1485
+ });
1486
+
1467
1487
  // src/core/islandManifest.ts
1468
1488
  var toIslandFrameworkSegment = (framework) => framework[0]?.toUpperCase() + framework.slice(1), collectFrameworkIslands = (manifest, prefix) => {
1469
1489
  const entries = {};
@@ -1918,7 +1938,7 @@ var routeContextCache, cacheRouteData = (pagePath, data) => {
1918
1938
  }
1919
1939
  return html + snippet;
1920
1940
  }, injectSsrScripts = (html, requestId, indexPath, requestContext) => {
1921
- let result = html;
1941
+ let result = injectBeforeClose(html, browserTranslationBaselineTag());
1922
1942
  const registeredScripts = getAndClearClientScripts(requestId);
1923
1943
  if (registeredScripts.length > 0) {
1924
1944
  result = injectBeforeClose(result, generateClientScriptCode(registeredScripts));
@@ -1954,6 +1974,7 @@ var routeContextCache, cacheRouteData = (pagePath, data) => {
1954
1974
  };
1955
1975
  var init_ssrRender = __esm(() => {
1956
1976
  init_registerClientScript();
1977
+ init_browserTranslation();
1957
1978
  routeContextCache = new Map;
1958
1979
  selectorCache = new Map;
1959
1980
  });
@@ -1961,10 +1982,10 @@ var init_ssrRender = __esm(() => {
1961
1982
  // src/angular/islands.ts
1962
1983
  var exports_islands = {};
1963
1984
  __export(exports_islands, {
1964
- renderAngularIslandToHtml: () => renderAngularIslandToHtml,
1965
- mountAngularIsland: () => mountAngularIsland,
1985
+ getAngularIslandSelector: () => getAngularIslandSelector,
1966
1986
  isAngularComponent: () => isAngularComponent,
1967
- getAngularIslandSelector: () => getAngularIslandSelector
1987
+ mountAngularIsland: () => mountAngularIsland,
1988
+ renderAngularIslandToHtml: () => renderAngularIslandToHtml
1968
1989
  });
1969
1990
  var angularIslandSelector = "abs-angular-island", getAngularIslandSelector = (_islandId) => angularIslandSelector, isAngularComponent = (value) => typeof value === "function", getSelectorFromRenderedIsland = (rootElement) => {
1970
1991
  const firstChild = rootElement.firstElementChild;
@@ -2026,8 +2047,10 @@ var angularIslandSelector = "abs-angular-island", getAngularIslandSelector = (_i
2026
2047
  const propsToken = new InjectionToken(`${wrapperKey}:props`);
2027
2048
 
2028
2049
  class AngularIslandWrapperComponent {
2029
- component = component;
2030
- props = inject(propsToken);
2050
+ constructor() {
2051
+ this.component = component;
2052
+ this.props = inject(propsToken);
2053
+ }
2031
2054
  }
2032
2055
  return {
2033
2056
  deps,
@@ -2476,13 +2499,13 @@ var init_nativeRewrite = __esm(() => {
2476
2499
  // src/build/rewriteImportsPlugin.ts
2477
2500
  var exports_rewriteImportsPlugin = {};
2478
2501
  __export(exports_rewriteImportsPlugin, {
2479
- rewriteVendorDirectories: () => rewriteVendorDirectories,
2480
- rewriteImportsInContent: () => rewriteImportsInContent,
2481
- rewriteBuildOutputsWith: () => rewriteBuildOutputsWith,
2482
- rewriteBuildOutputs: () => rewriteBuildOutputs,
2483
- jsRewriteImports: () => jsRewriteImports,
2502
+ buildWithImportRewrite: () => buildWithImportRewrite,
2484
2503
  fixMissingReExportNamespacesInContent: () => fixMissingReExportNamespacesInContent,
2485
- buildWithImportRewrite: () => buildWithImportRewrite
2504
+ jsRewriteImports: () => jsRewriteImports,
2505
+ rewriteBuildOutputs: () => rewriteBuildOutputs,
2506
+ rewriteBuildOutputsWith: () => rewriteBuildOutputsWith,
2507
+ rewriteImportsInContent: () => rewriteImportsInContent,
2508
+ rewriteVendorDirectories: () => rewriteVendorDirectories
2486
2509
  });
2487
2510
  import { readdir } from "fs/promises";
2488
2511
  import { join as join2 } from "path";
@@ -2896,22 +2919,22 @@ var init_lowerAwaitSlotSyntax = __esm(() => {
2896
2919
  // src/build/stylePreprocessor.ts
2897
2920
  var exports_stylePreprocessor = {};
2898
2921
  __export(exports_stylePreprocessor, {
2899
- stylePreprocessorPlugin: () => stylePreprocessorPlugin,
2900
- recordStyleOutput: () => recordStyleOutput,
2901
- isStylePath: () => isStylePath,
2902
- isStyleModulePath: () => isStyleModulePath,
2903
- isPreprocessableStylePath: () => isPreprocessableStylePath,
2904
- getStyleBaseName: () => getStyleBaseName,
2905
- getCssOutputExtension: () => getCssOutputExtension,
2906
- forgetStyleEntry: () => forgetStyleEntry,
2907
- findStyleEntriesImporting: () => findStyleEntriesImporting,
2908
- createSvelteStylePreprocessor: () => createSvelteStylePreprocessor,
2909
- createStyleTransformConfig: () => createStyleTransformConfig,
2910
- createStylePreprocessorPlugin: () => createStylePreprocessorPlugin,
2911
- compileStyleSource: () => compileStyleSource,
2912
- compileStyleFileIfNeededSync: () => compileStyleFileIfNeededSync,
2922
+ addStyleImporter: () => addStyleImporter,
2913
2923
  compileStyleFileIfNeeded: () => compileStyleFileIfNeeded,
2914
- addStyleImporter: () => addStyleImporter
2924
+ compileStyleFileIfNeededSync: () => compileStyleFileIfNeededSync,
2925
+ compileStyleSource: () => compileStyleSource,
2926
+ createStylePreprocessorPlugin: () => createStylePreprocessorPlugin,
2927
+ createStyleTransformConfig: () => createStyleTransformConfig,
2928
+ createSvelteStylePreprocessor: () => createSvelteStylePreprocessor,
2929
+ findStyleEntriesImporting: () => findStyleEntriesImporting,
2930
+ forgetStyleEntry: () => forgetStyleEntry,
2931
+ getCssOutputExtension: () => getCssOutputExtension,
2932
+ getStyleBaseName: () => getStyleBaseName,
2933
+ isPreprocessableStylePath: () => isPreprocessableStylePath,
2934
+ isStyleModulePath: () => isStyleModulePath,
2935
+ isStylePath: () => isStylePath,
2936
+ recordStyleOutput: () => recordStyleOutput,
2937
+ stylePreprocessorPlugin: () => stylePreprocessorPlugin
2915
2938
  });
2916
2939
  import { createHash as createHash2 } from "crypto";
2917
2940
  import { existsSync as existsSync3, readFileSync as readFileSync3 } from "fs";
@@ -4327,6 +4350,7 @@ var getCurrentAbsoluteMobileProducerContext = () => {
4327
4350
  // src/mobile/pageProtocol.ts
4328
4351
  var ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE = "application/vnd.absolute.page+json";
4329
4352
  var ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION = 1;
4353
+ var ABSOLUTE_NATIVE_ROUTE_DATA_MEDIA_TYPE = "application/vnd.absolute.native-route+json";
4330
4354
  var BAD_REQUEST_STATUS = 400;
4331
4355
  var OK_STATUS = 200;
4332
4356
  var SERVER_ERROR_STATUS = 500;
@@ -4345,6 +4369,11 @@ var acceptsAbsoluteMobilePage = (request) => {
4345
4369
  return false;
4346
4370
  return (request.headers.get("accept") ?? "").split(",").some((value) => parseMediaType(value) === ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE);
4347
4371
  };
4372
+ var acceptsAbsoluteNativeRouteData = (request) => {
4373
+ if (!request)
4374
+ return false;
4375
+ return (request.headers.get("accept") ?? "").split(",").some((value) => parseMediaType(value) === ABSOLUTE_NATIVE_ROUTE_DATA_MEDIA_TYPE);
4376
+ };
4348
4377
  var readRequiredHeader = (request, name) => {
4349
4378
  const value = request.headers.get(name)?.trim();
4350
4379
  return value ? value : undefined;
@@ -4475,6 +4504,32 @@ var finalizeArchivedMobilePage = (context, input) => {
4475
4504
  return createAbsoluteMobilePageErrorResponse(page.pageId);
4476
4505
  }
4477
4506
  };
4507
+ var finalizeAbsoluteNativeRouteDevelopmentPage = (input) => {
4508
+ if (false) {}
4509
+ if (input.request?.method !== "GET") {
4510
+ return createAbsoluteMobileInvalidRequestResponse("Native-route data requests must use GET.");
4511
+ }
4512
+ if (input.request.headers.get(MOBILE_PAGE_REQUEST_HEADERS.protocol) !== String(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)) {
4513
+ return createAbsoluteMobileInvalidRequestResponse(`Native-route data requires protocol ${ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION}.`);
4514
+ }
4515
+ const [representation] = input.compatibility.representations;
4516
+ if (!representation) {
4517
+ return createAbsoluteMobilePageErrorResponse(input.compatibility.pageId);
4518
+ }
4519
+ try {
4520
+ return envelopeResponse({
4521
+ contract: representation.contract,
4522
+ framework: input.compatibility.framework,
4523
+ kind: "page",
4524
+ pageId: input.compatibility.pageId,
4525
+ props: normalizeJsonValue(representation.mapProps(input.props)),
4526
+ status: input.status ?? OK_STATUS
4527
+ }, input.status ?? OK_STATUS);
4528
+ } catch (error) {
4529
+ console.error(`[Mobile] Failed to produce development native route ${input.compatibility.pageId}:`, error);
4530
+ return createAbsoluteMobilePageErrorResponse(input.compatibility.pageId);
4531
+ }
4532
+ };
4478
4533
  var createAbsoluteMobileInvalidRequestResponse = (message) => envelopeResponse({ kind: "invalid-request", message }, BAD_REQUEST_STATUS);
4479
4534
  var createAbsoluteMobilePageErrorResponse = (pageId) => envelopeResponse({
4480
4535
  code: "representation-failed",
@@ -4484,6 +4539,9 @@ var createAbsoluteMobilePageErrorResponse = (pageId) => envelopeResponse({
4484
4539
  }, SERVER_ERROR_STATUS);
4485
4540
  var createAbsoluteMobileUpgradeResponse = (result) => envelopeResponse(result, UPGRADE_REQUIRED_STATUS);
4486
4541
  var finalizeAbsoluteMobilePage = (input) => {
4542
+ if (acceptsAbsoluteNativeRouteData(input.request)) {
4543
+ return finalizeAbsoluteNativeRouteDevelopmentPage(input);
4544
+ }
4487
4545
  const parsed = parseAbsoluteMobilePageRequest(input.request);
4488
4546
  if (parsed.kind === "not-mobile")
4489
4547
  return;
@@ -4661,6 +4719,7 @@ var runWithStreamingSlotWarningScope = (task, metadata) => ensureWarningStorage(
4661
4719
  // src/react/pageHandler.ts
4662
4720
  init_spaRouteManifest();
4663
4721
  init_resolveConvention();
4722
+ init_browserTranslation();
4664
4723
  var withRequestUrl = (props, url) => Object.assign(Object.create(null), props, { url });
4665
4724
  var resolveRequestPathname = (request) => {
4666
4725
  if (!request)
@@ -4714,7 +4773,7 @@ var handleReactPageRequest = async (input) => {
4714
4773
  const refreshSetup = buildRefreshSetup();
4715
4774
  const stream = await renderToReadableStream(element, {
4716
4775
  bootstrapModules: [resolvedIndex],
4717
- bootstrapScriptContent: propsScript + refreshSetup || undefined,
4776
+ bootstrapScriptContent: BROWSER_TRANSLATION_BASELINE_SCRIPT + propsScript + refreshSetup,
4718
4777
  onError(error) {
4719
4778
  console.error("[SSR] React streaming error:", error);
4720
4779
  }
@@ -4749,37 +4808,37 @@ var handleReactPageRequest = async (input) => {
4749
4808
  // src/react/Island.tsx
4750
4809
  init_islandMarkupAttributes();
4751
4810
  init_renderIslandMarkup();
4752
- import { jsxDEV } from "react/jsx-dev-runtime";
4811
+ import { jsx } from "react/jsx-runtime";
4753
4812
  var Island = async (props) => {
4754
4813
  if (typeof window !== "undefined") {
4755
- return /* @__PURE__ */ jsxDEV("div", {
4814
+ return /* @__PURE__ */ jsx("div", {
4756
4815
  ...getIslandMarkerAttributes(props),
4757
4816
  suppressHydrationWarning: true
4758
- }, undefined, false, undefined, this);
4817
+ });
4759
4818
  }
4760
4819
  const result = await renderIslandResult(requireCurrentIslandRegistry(), props);
4761
- return /* @__PURE__ */ jsxDEV("div", {
4820
+ return /* @__PURE__ */ jsx("div", {
4762
4821
  ...result.attributes,
4763
4822
  dangerouslySetInnerHTML: { __html: result.html }
4764
- }, undefined, false, undefined, this);
4823
+ });
4765
4824
  };
4766
4825
  // src/react/createIsland.tsx
4767
4826
  init_islandMarkupAttributes();
4768
4827
  init_renderIslandMarkup();
4769
- import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
4828
+ import { jsx as jsx2 } from "react/jsx-runtime";
4770
4829
  var createTypedIsland = (registry) => {
4771
4830
  const Island2 = async (props) => {
4772
4831
  if (typeof window !== "undefined") {
4773
- return /* @__PURE__ */ jsxDEV2("div", {
4832
+ return /* @__PURE__ */ jsx2("div", {
4774
4833
  ...getIslandMarkerAttributes(props),
4775
4834
  suppressHydrationWarning: true
4776
- }, undefined, false, undefined, this);
4835
+ });
4777
4836
  }
4778
4837
  const result = await renderIslandResult(registry, props);
4779
- return /* @__PURE__ */ jsxDEV2("div", {
4838
+ return /* @__PURE__ */ jsx2("div", {
4780
4839
  ...result.attributes,
4781
4840
  dangerouslySetInnerHTML: { __html: result.html }
4782
- }, undefined, false, undefined, this);
4841
+ });
4783
4842
  };
4784
4843
  return Island2;
4785
4844
  };
@@ -4870,22 +4929,6 @@ var createIslandStore = (storeId, initialState, createState) => {
4870
4929
  return store;
4871
4930
  };
4872
4931
  var getIslandStoreServerSnapshot = (store, selector) => selector(store.getInitialState());
4873
- var applySnapshotToStoreInstances = (storeId, instances, snapshot) => {
4874
- for (const instance of instances) {
4875
- instance.applyExternalSnapshot(snapshot[storeId] ?? {});
4876
- }
4877
- };
4878
- var initializeIslandStores = (state) => {
4879
- const currentSnapshot = getIslandStoreSnapshot();
4880
- const nextSnapshot = {
4881
- ...state,
4882
- ...currentSnapshot
4883
- };
4884
- globalThis.__ABS_ISLAND_STATE__ = nextSnapshot;
4885
- for (const [storeId, store] of getIslandStores()) {
4886
- applySnapshotToStoreInstances(storeId, store, nextSnapshot);
4887
- }
4888
- };
4889
4932
  var readIslandStore = (store, selector) => selector(store.getState());
4890
4933
  var subscribeIslandStore = (store, selector, listener) => {
4891
4934
  let currentSelection = selector(store.getState());
@@ -4904,11 +4947,11 @@ var useIslandStore = (store, selector) => useSyncExternalStore((listener) => sub
4904
4947
  listener();
4905
4948
  }), () => readIslandStore(store, selector), () => getIslandStoreServerSnapshot(store, selector));
4906
4949
  export {
4907
- useIslandStore,
4908
- handleReactPageRequest,
4950
+ Island,
4909
4951
  createTypedIsland,
4910
- Island
4952
+ handleReactPageRequest,
4953
+ useIslandStore
4911
4954
  };
4912
4955
 
4913
- //# debugId=7CE6A5979AFA5A9664756E2164756E21
4956
+ //# debugId=48257EB5A9F1523464756E2164756E21
4914
4957
  //# sourceMappingURL=index.js.map