@absolutejs/absolute 0.20.0-beta.53 → 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.
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +25 -4
- package/dist/angular/index.js.map +6 -5
- package/dist/angular/server.js +25 -4
- package/dist/angular/server.js.map +6 -5
- package/dist/build.js +56 -9
- package/dist/build.js.map +10 -9
- package/dist/cli/config/server.js +4 -1
- package/dist/client/index.js +126 -7
- package/dist/client/index.js.map +8 -6
- package/dist/index.js +279 -232
- package/dist/index.js.map +12 -11
- package/dist/islands/index.js +17 -2
- package/dist/islands/index.js.map +5 -4
- package/dist/react/index.js +19 -3
- package/dist/react/index.js.map +6 -5
- package/dist/react/server.js +17 -2
- package/dist/react/server.js.map +5 -4
- package/dist/src/client/browserTranslation.d.ts +19 -0
- package/dist/src/client/index.d.ts +1 -0
- package/dist/src/core/browserTranslation.d.ts +6 -0
- package/dist/src/ember/browser.d.ts +0 -16
- package/dist/src/vue/browser.d.ts +1 -0
- package/dist/src/vue/browserTranslation.d.ts +5 -0
- package/dist/src/vue/index.d.ts +1 -0
- package/dist/svelte/index.js +19 -3
- package/dist/svelte/index.js.map +6 -5
- package/dist/svelte/server.js +17 -2
- package/dist/svelte/server.js.map +5 -4
- package/dist/vue/browser.js +96 -1
- package/dist/vue/browser.js.map +5 -3
- package/dist/vue/index.js +114 -3
- package/dist/vue/index.js.map +8 -5
- package/dist/vue/server.js +17 -2
- package/dist/vue/server.js.map +5 -4
- 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 {
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
30451
|
+
//# debugId=A2D2D8F1CF50089864756E2164756E21
|
|
30405
30452
|
//# sourceMappingURL=build.js.map
|