@absolutejs/absolute 0.20.0-beta.54 → 0.20.0-beta.55

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 (37) hide show
  1. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  2. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  3. package/dist/angular/index.js +25 -4
  4. package/dist/angular/index.js.map +6 -5
  5. package/dist/angular/server.js +25 -4
  6. package/dist/angular/server.js.map +6 -5
  7. package/dist/build.js +56 -9
  8. package/dist/build.js.map +10 -9
  9. package/dist/cli/config/server.js +4 -1
  10. package/dist/client/index.js +126 -7
  11. package/dist/client/index.js.map +8 -6
  12. package/dist/index.js +279 -232
  13. package/dist/index.js.map +12 -11
  14. package/dist/islands/index.js +17 -2
  15. package/dist/islands/index.js.map +5 -4
  16. package/dist/react/index.js +19 -3
  17. package/dist/react/index.js.map +6 -5
  18. package/dist/react/server.js +17 -2
  19. package/dist/react/server.js.map +5 -4
  20. package/dist/src/client/browserTranslation.d.ts +19 -0
  21. package/dist/src/client/index.d.ts +1 -0
  22. package/dist/src/core/browserTranslation.d.ts +6 -0
  23. package/dist/src/ember/browser.d.ts +0 -16
  24. package/dist/src/vue/browser.d.ts +1 -0
  25. package/dist/src/vue/browserTranslation.d.ts +5 -0
  26. package/dist/src/vue/index.d.ts +1 -0
  27. package/dist/svelte/index.js +19 -3
  28. package/dist/svelte/index.js.map +6 -5
  29. package/dist/svelte/server.js +17 -2
  30. package/dist/svelte/server.js.map +5 -4
  31. package/dist/vue/browser.js +96 -1
  32. package/dist/vue/browser.js.map +5 -3
  33. package/dist/vue/index.js +114 -3
  34. package/dist/vue/index.js.map +8 -5
  35. package/dist/vue/server.js +17 -2
  36. package/dist/vue/server.js.map +5 -4
  37. package/package.json +7 -7
package/dist/build.js CHANGED
@@ -811,10 +811,14 @@ var indexContentCache, resolveDevClientDir = () => {
811
811
  ] : [];
812
812
  const reactImports = isDev ? [
813
813
  `import { hydrateRoot, createRoot } from 'react-dom/client';`,
814
- `import { createElement, Component } from 'react';`
814
+ `import { flushSync } from 'react-dom';`,
815
+ `import { createElement, Component } from 'react';`,
816
+ `import { prepareBrowserTranslationHydration } from '@absolutejs/absolute/client';`
815
817
  ] : [
816
818
  `import { hydrateRoot, createRoot } from 'react-dom/client';`,
817
- `import { createElement } from 'react';`
819
+ `import { flushSync } from 'react-dom';`,
820
+ `import { createElement } from 'react';`,
821
+ `import { prepareBrowserTranslationHydration } from '@absolutejs/absolute/client';`
818
822
  ];
819
823
  const errorBoundaryDef = isDev ? [
820
824
  `
@@ -1009,8 +1013,10 @@ var indexContentCache, resolveDevClientDir = () => {
1009
1013
  ` root.render(${isDev ? `createElement(ErrorBoundary, null, createElement(PageComponent, mergedProps))` : `createElement(PageComponent, mergedProps)`});`,
1010
1014
  ` window.__REACT_ROOT__ = root;`,
1011
1015
  ` } else {`,
1016
+ ` const restoreTranslation = prepareBrowserTranslationHydration(container);`,
1012
1017
  ` try {`,
1013
1018
  ` // Use onRecoverableError to catch hydration errors (React 19)`,
1019
+ ` const startHydration = () => {`,
1014
1020
  ` root = hydrateRoot(`,
1015
1021
  ` container,`,
1016
1022
  ` ${isDev ? `createElement(ErrorBoundary, null, createElement(PageComponent, mergedProps))` : `createElement(PageComponent, mergedProps)`},`,
@@ -1047,8 +1053,13 @@ var indexContentCache, resolveDevClientDir = () => {
1047
1053
  ` }`,
1048
1054
  ` }`,
1049
1055
  ` );`,
1056
+ ` };`,
1057
+ ` if (restoreTranslation.hasTranslation) flushSync(startHydration);`,
1058
+ ` else startHydration();`,
1059
+ ` restoreTranslation();`,
1050
1060
  ` window.__REACT_ROOT__ = root;`,
1051
1061
  ` } catch (error) {`,
1062
+ ` restoreTranslation();`,
1052
1063
  ` // Catch synchronous errors (shouldn't happen with hydrateRoot, but safety net)`,
1053
1064
  ` if (isDev && isHydrationError(error)) {`,
1054
1065
  ` handleHydrationFallback(error);`,
@@ -2180,6 +2191,20 @@ var init_registerClientScript = __esm(() => {
2180
2191
  }
2181
2192
  });
2182
2193
 
2194
+ // src/core/browserTranslation.ts
2195
+ var BASELINE_MARKER = "__ABSOLUTE_SSR_TEXT_BASELINES__", BROWSER_TRANSLATION_BASELINE_SCRIPT, browserTranslationBaselineTag = () => `<script>${BROWSER_TRANSLATION_BASELINE_SCRIPT}</script>`, injectBrowserTranslationBaseline = (html) => {
2196
+ if (html.includes(BASELINE_MARKER))
2197
+ return html;
2198
+ const script = browserTranslationBaselineTag();
2199
+ const closingBodyIndex = html.lastIndexOf("</body>");
2200
+ if (closingBodyIndex < 0)
2201
+ return `${html}${script}`;
2202
+ return `${html.slice(0, closingBodyIndex)}${script}${html.slice(closingBodyIndex)}`;
2203
+ };
2204
+ var init_browserTranslation = __esm(() => {
2205
+ 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);}}';
2206
+ });
2207
+
2183
2208
  // src/angular/httpTransferCache.ts
2184
2209
  var ABSOLUTE_HTTP_TRANSFER_CACHE_SKIP_HEADER = "x-skip-transfer-cache", buildAbsoluteHttpTransferCacheOptions = (options = {}) => {
2185
2210
  const {
@@ -2232,7 +2257,7 @@ var routeContextCache, cacheRouteData = (pagePath, data) => {
2232
2257
  }
2233
2258
  return html + snippet;
2234
2259
  }, injectSsrScripts = (html, requestId, indexPath, requestContext) => {
2235
- let result = html;
2260
+ let result = injectBeforeClose(html, browserTranslationBaselineTag());
2236
2261
  const registeredScripts = getAndClearClientScripts(requestId);
2237
2262
  if (registeredScripts.length > 0) {
2238
2263
  result = injectBeforeClose(result, generateClientScriptCode(registeredScripts));
@@ -2268,6 +2293,7 @@ var routeContextCache, cacheRouteData = (pagePath, data) => {
2268
2293
  };
2269
2294
  var init_ssrRender = __esm(() => {
2270
2295
  init_registerClientScript();
2296
+ init_browserTranslation();
2271
2297
  routeContextCache = new Map;
2272
2298
  selectorCache = new Map;
2273
2299
  });
@@ -14669,6 +14695,7 @@ import "${hmrClientPath3}";
14669
14695
  ` : "";
14670
14696
  const bootstrap = `${hmrImports}import Component from "${importPath}";
14671
14697
  import { hydrate, mount, unmount } from "svelte";
14698
+ import { prepareBrowserTranslationHydration } from "@absolutejs/absolute/client";
14672
14699
 
14673
14700
  var initialProps = (typeof window !== "undefined" && window.__INITIAL_PROPS__) ? window.__INITIAL_PROPS__ : {};
14674
14701
  var isHMR = typeof window !== "undefined" && window.__SVELTE_COMPONENT__ !== undefined;
@@ -14713,7 +14740,12 @@ if (isHMR) {
14713
14740
  } else if (isSsrDirty || hasIslandHtml) {
14714
14741
  component = mount(Component, { target, props: initialProps });
14715
14742
  } else {
14716
- component = hydrate(Component, { target, props: initialProps });
14743
+ var restoreTranslation = prepareBrowserTranslationHydration(target);
14744
+ try {
14745
+ component = hydrate(Component, { target, props: initialProps });
14746
+ } finally {
14747
+ restoreTranslation();
14748
+ }
14717
14749
  }
14718
14750
 
14719
14751
  if (typeof window !== "undefined") {
@@ -15656,6 +15688,7 @@ if (typeof __VUE_HMR_RUNTIME__ !== 'undefined') {
15656
15688
  ...vueHmrImports,
15657
15689
  `import Comp, * as PageModule from "${relative13(dirname17(indexOutputFile), clientOutputFile).replace(/\\/g, "/")}";`,
15658
15690
  'import { createSSRApp, createApp } from "vue";',
15691
+ 'import { prepareBrowserTranslationHydration } from "@absolutejs/absolute/vue";',
15659
15692
  "",
15660
15693
  "// HMR State Preservation: Check for preserved state from HMR",
15661
15694
  'let preservedState = (typeof window !== "undefined" && window.__HMR_PRESERVED_STATE__) ? window.__HMR_PRESERVED_STATE__ : {};',
@@ -15718,7 +15751,14 @@ if (typeof __VUE_HMR_RUNTIME__ !== 'undefined') {
15718
15751
  " url: clientUrl",
15719
15752
  " });",
15720
15753
  " }",
15721
- ' app.mount("#root");',
15754
+ " const restoreBrowserTranslation = shouldHydrate",
15755
+ ' ? prepareBrowserTranslationHydration(document.querySelector("#root"))',
15756
+ " : () => undefined;",
15757
+ " try {",
15758
+ ' app.mount("#root");',
15759
+ " } finally {",
15760
+ " restoreBrowserTranslation();",
15761
+ " }",
15722
15762
  "}",
15723
15763
  "const absolutePageReady = bootstrapApp();",
15724
15764
  "",
@@ -17479,6 +17519,7 @@ import { bootstrapApplication } from '@angular/platform-browser';
17479
17519
  import { provideClientHydration } from '@angular/platform-browser';
17480
17520
  import { withHttpTransferCacheOptions } from '@angular/platform-browser';
17481
17521
  import { provideZonelessChangeDetection, REQUEST_CONTEXT } from '@angular/core';
17522
+ import { prepareBrowserTranslationHydration } from '@absolutejs/absolute/client';
17482
17523
  import * as pageModule from '${normalizedImportPath}';
17483
17524
  var ${componentClassName} = pageModule.default;
17484
17525
  // REQUEST_CONTEXT is hydrated from the SSR-serialized payload so client-side
@@ -17542,8 +17583,10 @@ if (!document.querySelector(_sel)) {
17542
17583
  }
17543
17584
 
17544
17585
  var providers = [provideZonelessChangeDetection()];
17586
+ var restoreTranslation = function() {};
17545
17587
  if (!isClientRender && !window.__HMR_SKIP_HYDRATION__ && !pageHasIslands) {
17546
17588
  providers.push(provideClientHydration(withHttpTransferCacheOptions(absoluteHttpTransferCacheOptions)));
17589
+ restoreTranslation = prepareBrowserTranslationHydration(document.querySelector(_sel));
17547
17590
  }
17548
17591
  delete window.__HMR_SKIP_HYDRATION__;
17549
17592
  providers.push.apply(providers, pageProviders);
@@ -17570,7 +17613,7 @@ if (pageHasRawStreamingSlots) {
17570
17613
  });
17571
17614
  }
17572
17615
  return appRef;
17573
- });
17616
+ }).finally(restoreTranslation);
17574
17617
  }
17575
17618
  window.__ABSOLUTE_PAGE_READY__ = absolutePageReady;
17576
17619
  window.__ABSOLUTE_PAGE_DISPOSE__ = async function() {
@@ -17586,6 +17629,7 @@ import { bootstrapApplication } from '@angular/platform-browser';
17586
17629
  import { provideClientHydration } from '@angular/platform-browser';
17587
17630
  import { withHttpTransferCacheOptions } from '@angular/platform-browser';
17588
17631
  import { enableProdMode, provideZonelessChangeDetection, REQUEST_CONTEXT } from '@angular/core';
17632
+ import { prepareBrowserTranslationHydration } from '@absolutejs/absolute/client';
17589
17633
  import * as pageModule from '${normalizedImportPath}';
17590
17634
  var ${componentClassName} = pageModule.default;
17591
17635
  // REQUEST_CONTEXT is hydrated from the SSR-serialized payload so client-side
@@ -17628,8 +17672,10 @@ if (!document.querySelector(_sel)) {
17628
17672
  }
17629
17673
 
17630
17674
  var providers = [provideZonelessChangeDetection()].concat(pageProviders).concat(contextProviders);
17675
+ var restoreTranslation = function() {};
17631
17676
  if (!isClientRender && !pageHasIslands) {
17632
17677
  providers.unshift(provideClientHydration(withHttpTransferCacheOptions(absoluteHttpTransferCacheOptions)));
17678
+ restoreTranslation = prepareBrowserTranslationHydration(document.querySelector(_sel));
17633
17679
  }
17634
17680
  window.__ABS_SLOT_HYDRATION_PENDING__ = pageHasRawStreamingSlots;
17635
17681
  var absolutePageReady = Promise.resolve();
@@ -17653,7 +17699,7 @@ if (pageHasRawStreamingSlots) {
17653
17699
  });
17654
17700
  }
17655
17701
  return appRef;
17656
- });
17702
+ }).finally(restoreTranslation);
17657
17703
  }
17658
17704
  window.__ABSOLUTE_PAGE_READY__ = absolutePageReady;
17659
17705
  window.__ABSOLUTE_PAGE_DISPOSE__ = async function() {
@@ -26792,7 +26838,7 @@ var resolveRequestPathname = (request) => {
26792
26838
  }, buildHtmlShell = (headTag, bodyContent, indexPath, props, hmrShim) => {
26793
26839
  const propsScript = `window.__INITIAL_PROPS__=${JSON.stringify(props ?? {})};`;
26794
26840
  const indexImport = indexPath ? `<script type="module" src="${indexPath}"></script>` : "";
26795
- return `<!DOCTYPE html><html>${headTag}<body>` + `<div id="ember-root">${bodyContent}</div>` + `<script>${propsScript}</script>${indexImport}${hmrShim}</body></html>`;
26841
+ return injectBrowserTranslationBaseline(`<!DOCTYPE html><html>${headTag}<body>` + `<div id="ember-root">${bodyContent}</div>` + `<script>${propsScript}</script>${indexImport}${hmrShim}</body></html>`);
26796
26842
  }, cachedEmberHmrShim = null, getEmberHmrShim = () => {
26797
26843
  if (cachedEmberHmrShim)
26798
26844
  return cachedEmberHmrShim;
@@ -26829,6 +26875,7 @@ var resolveRequestPathname = (request) => {
26829
26875
  };
26830
26876
  var init_pageHandler = __esm(() => {
26831
26877
  init_pageResponseCache();
26878
+ init_browserTranslation();
26832
26879
  });
26833
26880
 
26834
26881
  // src/ember/index.ts
@@ -30401,5 +30448,5 @@ export {
30401
30448
  devBuild
30402
30449
  };
30403
30450
 
30404
- //# debugId=3CE370EE4B6900BE64756E2164756E21
30451
+ //# debugId=A2D2D8F1CF50089864756E2164756E21
30405
30452
  //# sourceMappingURL=build.js.map