@absolutejs/absolute 0.19.0-beta.430 → 0.19.0-beta.432
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/index.js +7 -2
- package/dist/angular/index.js.map +3 -3
- package/dist/build.js +4 -5
- package/dist/build.js.map +3 -3
- package/dist/client/index.js +7 -2
- package/dist/client/index.js.map +3 -3
- package/dist/index.js +10 -6
- package/dist/index.js.map +4 -4
- package/dist/react/index.js +7 -2
- package/dist/react/index.js.map +3 -3
- package/dist/svelte/index.js +7 -2
- package/dist/svelte/index.js.map +3 -3
- package/dist/vue/components/index.js +33 -5
- package/dist/vue/components/index.js.map +3 -3
- package/dist/vue/index.js +42 -10
- package/dist/vue/index.js.map +5 -5
- package/dist/vue/server.js +4 -5
- package/dist/vue/server.js.map +3 -3
- package/package.json +1 -1
package/dist/vue/index.js
CHANGED
|
@@ -499,7 +499,7 @@ var init_resolveConvention = __esm(() => {
|
|
|
499
499
|
// src/vue/pageHandler.ts
|
|
500
500
|
import { readdir } from "fs/promises";
|
|
501
501
|
import { basename as basename2, dirname } from "path";
|
|
502
|
-
var ssrDirty = false,
|
|
502
|
+
var ssrDirty = false, isRecord = (value) => typeof value === "object" && value !== null, isGenericVueComponent = (value) => typeof value === "function" || isRecord(value), readHasIslands = (value) => {
|
|
503
503
|
if (!isRecord(value))
|
|
504
504
|
return false;
|
|
505
505
|
const hasIslands = value["__ABSOLUTE_PAGE_HAS_ISLANDS__"];
|
|
@@ -521,9 +521,8 @@ var ssrDirty = false, hydrateSlotPreamble = "window.__ABS_SLOT_HYDRATION_PENDING
|
|
|
521
521
|
}
|
|
522
522
|
}, buildDirtyResponse = (headTag, indexPath, maybeProps) => {
|
|
523
523
|
const propsScript = `window.__INITIAL_PROPS__=${JSON.stringify(maybeProps ?? {})};`;
|
|
524
|
-
const hydratedHead = injectSlotPreamble(headTag);
|
|
525
524
|
const dirtyFlag = "window.__SSR_DIRTY__=true;";
|
|
526
|
-
const html = `<!DOCTYPE html><html>${
|
|
525
|
+
const html = `<!DOCTYPE html><html>${headTag}<body><div id="root"></div>` + `<script>${propsScript}${dirtyFlag}</script>` + `<script type="module" src="${indexPath}"></script>` + `</body></html>`;
|
|
527
526
|
return new Response(html, {
|
|
528
527
|
headers: { "Content-Type": "text/html" }
|
|
529
528
|
});
|
|
@@ -559,7 +558,7 @@ var ssrDirty = false, hydrateSlotPreamble = "window.__ABS_SLOT_HYDRATION_PENDING
|
|
|
559
558
|
render: () => h3(resolvedPage.component, maybeProps ?? null)
|
|
560
559
|
});
|
|
561
560
|
const bodyStream = renderToWebStream(app);
|
|
562
|
-
const head = `<!DOCTYPE html><html>${
|
|
561
|
+
const head = `<!DOCTYPE html><html>${headTag}<body><div id="root">`;
|
|
563
562
|
const tail = `</div><script>window.__INITIAL_PROPS__=${JSON.stringify(maybeProps ?? {})}</script><script type="module" src="${indexPath}"></script></body></html>`;
|
|
564
563
|
const stream = new ReadableStream({
|
|
565
564
|
start(controller) {
|
|
@@ -1745,7 +1744,9 @@ var Image_default = "../Image-0pe96k20.vue";
|
|
|
1745
1744
|
// src/vue/components/SuspenseSlot.ts
|
|
1746
1745
|
import {
|
|
1747
1746
|
defineComponent,
|
|
1748
|
-
h
|
|
1747
|
+
h,
|
|
1748
|
+
onMounted,
|
|
1749
|
+
ref
|
|
1749
1750
|
} from "vue";
|
|
1750
1751
|
var renderVueNodesToHtml = async (nodes) => {
|
|
1751
1752
|
const { createSSRApp, h: createVNode } = await import("vue");
|
|
@@ -1775,6 +1776,9 @@ var SuspenseSlot = defineComponent({
|
|
|
1775
1776
|
timeoutMs: { default: undefined, type: Number }
|
|
1776
1777
|
},
|
|
1777
1778
|
setup(props, { slots }) {
|
|
1779
|
+
const isResolved = ref(false);
|
|
1780
|
+
const resolvedValue = ref(undefined);
|
|
1781
|
+
const hasError = ref(false);
|
|
1778
1782
|
const usesFrameworkSlots = hasFrameworkSlots(slots.default, slots.fallback, slots.error, props.promise);
|
|
1779
1783
|
if (typeof window === "undefined") {
|
|
1780
1784
|
if (!usesFrameworkSlots && props.resolve) {
|
|
@@ -1791,8 +1795,11 @@ var SuspenseSlot = defineComponent({
|
|
|
1791
1795
|
resolve: async () => {
|
|
1792
1796
|
try {
|
|
1793
1797
|
const value = props.resolve !== undefined ? await props.resolve() : props.promise !== undefined ? await props.promise : undefined;
|
|
1794
|
-
|
|
1795
|
-
|
|
1798
|
+
return {
|
|
1799
|
+
html: "",
|
|
1800
|
+
kind: "vue-suspense",
|
|
1801
|
+
value
|
|
1802
|
+
};
|
|
1796
1803
|
} catch (error) {
|
|
1797
1804
|
const errorNodes = slots.error?.({ error });
|
|
1798
1805
|
if (errorNodes !== undefined) {
|
|
@@ -1808,6 +1815,26 @@ var SuspenseSlot = defineComponent({
|
|
|
1808
1815
|
});
|
|
1809
1816
|
}
|
|
1810
1817
|
}
|
|
1818
|
+
if (typeof window !== "undefined" && usesFrameworkSlots) {
|
|
1819
|
+
const consumers = window.__ABS_SLOT_CONSUMERS__ = window.__ABS_SLOT_CONSUMERS__ ?? {};
|
|
1820
|
+
let runtimeReady = false;
|
|
1821
|
+
consumers[props.id] = (payload) => {
|
|
1822
|
+
if (!runtimeReady)
|
|
1823
|
+
return false;
|
|
1824
|
+
if (!payload || typeof payload !== "object" || payload.kind !== "vue-suspense") {
|
|
1825
|
+
return false;
|
|
1826
|
+
}
|
|
1827
|
+
const candidate = payload;
|
|
1828
|
+
hasError.value = candidate.state === "error";
|
|
1829
|
+
resolvedValue.value = candidate.value;
|
|
1830
|
+
isResolved.value = candidate.state !== "error";
|
|
1831
|
+
return true;
|
|
1832
|
+
};
|
|
1833
|
+
onMounted(() => {
|
|
1834
|
+
runtimeReady = true;
|
|
1835
|
+
window.__ABS_SLOT_FLUSH__?.();
|
|
1836
|
+
});
|
|
1837
|
+
}
|
|
1811
1838
|
return () => {
|
|
1812
1839
|
if (!usesFrameworkSlots) {
|
|
1813
1840
|
return h("div", {
|
|
@@ -1821,7 +1848,7 @@ var SuspenseSlot = defineComponent({
|
|
|
1821
1848
|
class: props.className,
|
|
1822
1849
|
"data-absolute-slot": "true",
|
|
1823
1850
|
id: `slot-${props.id}`
|
|
1824
|
-
}, slots.fallback?.() ?? undefined);
|
|
1851
|
+
}, hasError.value ? slots.error?.({ error: undefined }) ?? slots.fallback?.() ?? undefined : isResolved.value ? slots.default?.({ value: resolvedValue.value }) ?? undefined : slots.fallback?.() ?? undefined);
|
|
1825
1852
|
};
|
|
1826
1853
|
}
|
|
1827
1854
|
});
|
|
@@ -1874,6 +1901,11 @@ var streamSwapRuntime = () => {
|
|
|
1874
1901
|
return false;
|
|
1875
1902
|
return payload.kind === "angular-defer";
|
|
1876
1903
|
};
|
|
1904
|
+
const isVueSuspensePayload = (payload) => {
|
|
1905
|
+
if (!payload || typeof payload !== "object")
|
|
1906
|
+
return false;
|
|
1907
|
+
return payload.kind === "vue-suspense";
|
|
1908
|
+
};
|
|
1877
1909
|
const resolveHtml = (payload) => {
|
|
1878
1910
|
if (!payload || typeof payload !== "object") {
|
|
1879
1911
|
return typeof payload === "string" ? payload : "";
|
|
@@ -1897,7 +1929,7 @@ var streamSwapRuntime = () => {
|
|
|
1897
1929
|
return;
|
|
1898
1930
|
}
|
|
1899
1931
|
}
|
|
1900
|
-
if (isAngularDeferPayload(payload)) {
|
|
1932
|
+
if (isAngularDeferPayload(payload) || isVueSuspensePayload(payload)) {
|
|
1901
1933
|
pending[id] = payload;
|
|
1902
1934
|
return;
|
|
1903
1935
|
}
|
|
@@ -2802,5 +2834,5 @@ export {
|
|
|
2802
2834
|
Image_default as Image
|
|
2803
2835
|
};
|
|
2804
2836
|
|
|
2805
|
-
//# debugId=
|
|
2837
|
+
//# debugId=5E472DCDD9E5F0DA64756E2164756E21
|
|
2806
2838
|
//# sourceMappingURL=index.js.map
|