@absolutejs/absolute 0.20.0-beta.177 → 0.20.0-beta.178
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/CHANGELOG.md +26 -0
- package/changelog.json +51 -0
- package/dist/angular/browser.js +17 -2
- package/dist/angular/browser.js.map +4 -4
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +57 -33
- package/dist/angular/index.js.map +9 -8
- package/dist/angular/server.js +57 -33
- package/dist/angular/server.js.map +9 -8
- package/dist/build.js +532 -416
- package/dist/build.js.map +15 -15
- package/dist/cli/{compile-w2z6c9vt.js → compile-p5yv6ecp.js} +2 -2
- package/dist/cli/config/server.js +45 -12
- package/dist/cli/{dev-8br5mr7t.js → dev-2hbcsvkp.js} +1 -1
- package/dist/cli/{index-420h9hq7.js → index-1ewba8ye.js} +32 -3
- package/dist/cli/{index-7z1hh3fg.js → index-9dzdbbfc.js} +1 -1
- package/dist/cli/index.js +7 -7
- package/dist/cli/{islands-bx67g15t.js → islands-6zgb7501.js} +1 -1
- package/dist/cli/{mobile-we5q51ey.js → mobile-c92dh8s2.js} +2 -2
- package/dist/cli/{start-srs11bm8.js → start-asxb79rc.js} +2 -2
- package/dist/cli/{typecheck-7fvww3b7.js → typecheck-m2j4tkdk.js} +165 -35
- package/dist/client/chunks/{index-8m2qq61n.js → index-58svs66p.js} +13 -3
- package/dist/client/chunks/{index-8m2qq61n.js.map → index-58svs66p.js.map} +5 -4
- package/dist/client/chunks/{islands-mfjmdwnb.js → islands-tcadmgcx.js} +3 -6
- package/dist/client/chunks/{islands-mfjmdwnb.js.map → islands-tcadmgcx.js.map} +3 -4
- package/dist/client/chunks/{react-sprprqzs.js → react-khr6ewhr.js} +2 -2
- package/dist/client/index.js +82 -6
- package/dist/client/index.js.map +7 -6
- package/dist/dev/client/handlers/islands.ts +2 -0
- package/dist/dev/client/handlers/react.ts +92 -111
- package/dist/dev/client/handlers/reactUpdateQueue.ts +153 -0
- package/dist/index.js +505 -389
- package/dist/index.js.map +15 -15
- package/dist/islands/browser.js +2 -2
- package/dist/islands/browser.js.map +3 -3
- package/dist/islands/index.js +13 -6
- package/dist/islands/index.js.map +6 -5
- package/dist/react/browser.js +113 -12
- package/dist/react/browser.js.map +10 -7
- package/dist/react/components/index.js +31 -7
- package/dist/react/components/index.js.map +5 -4
- package/dist/react/components/server/index.js +22 -6
- package/dist/react/index.js +190 -46
- package/dist/react/index.js.map +15 -11
- package/dist/react/server.js +82 -23
- package/dist/react/server.js.map +11 -9
- package/dist/src/build/compileSvelte.d.ts +12 -1
- package/dist/src/build/compileVue.d.ts +1 -0
- package/dist/src/build/islandEntries.d.ts +3 -1
- package/dist/src/cli/scripts/typecheck.d.ts +8 -0
- package/dist/src/cli/scripts/typecheckDiagnostics.d.ts +17 -0
- package/dist/src/client/preserveIslandMarkup.d.ts +4 -0
- package/dist/src/core/islandManifest.d.ts +6 -0
- package/dist/src/core/islandStylesheet.d.ts +17 -0
- package/dist/src/react/Island.d.ts +9 -2
- package/dist/src/react/IslandStyleLink.d.ts +11 -0
- package/dist/src/react/createIsland.d.ts +1 -1
- package/dist/src/react/serverComponents/nodeRendererRef.d.ts +13 -0
- package/dist/src/utils/requestRenderUrl.d.ts +1 -0
- package/dist/src/utils/resolveConvention.d.ts +1 -0
- package/dist/src/vue/Island.browser.d.ts +3 -1
- package/dist/src/vue/Island.d.ts +2 -2
- package/dist/src/vue/createIsland.browser.d.ts +2 -2
- package/dist/src/vue/createIsland.d.ts +2 -2
- package/dist/src/vue/islandStyleLink.d.ts +30 -0
- package/dist/svelte/browser.js +2 -2
- package/dist/svelte/browser.js.map +3 -3
- package/dist/svelte/index.js +51 -49
- package/dist/svelte/index.js.map +9 -8
- package/dist/svelte/server.js +48 -45
- package/dist/svelte/server.js.map +8 -7
- package/dist/types/globals.d.ts +3 -0
- package/dist/vue/browser.js +105 -10
- package/dist/vue/browser.js.map +10 -7
- package/dist/vue/index.js +170 -47
- package/dist/vue/index.js.map +14 -11
- package/dist/vue/server.js +81 -22
- package/dist/vue/server.js.map +9 -7
- package/package.json +1 -1
- /package/dist/cli/{index-6522t968.js → index-yd672jyq.js} +0 -0
- /package/dist/client/chunks/{react-sprprqzs.js.map → react-khr6ewhr.js.map} +0 -0
package/dist/react/index.js
CHANGED
|
@@ -313,7 +313,7 @@ var ISLAND_BOOTSTRAP_MANIFEST_KEY = "AbsoluteIslandBootstrap", LEGACY_ISLAND_BOO
|
|
|
313
313
|
islands[framework] = entries;
|
|
314
314
|
}
|
|
315
315
|
return islands;
|
|
316
|
-
}, getIslandManifestKey = (framework, component) => `Island${toIslandFrameworkSegment(framework)}${component}`;
|
|
316
|
+
}, getIslandManifestKey = (framework, component) => `Island${toIslandFrameworkSegment(framework)}${component}`, ISLAND_STYLE_PREFIX = "IslandStyle", getIslandStyleManifestEntries = (manifest) => Object.entries(manifest).filter(([key]) => key.startsWith(ISLAND_STYLE_PREFIX)), getIslandStyleManifestKey = (framework, component) => `${ISLAND_STYLE_PREFIX}${toIslandFrameworkSegment(framework)}${component}`;
|
|
317
317
|
|
|
318
318
|
// src/core/islandPageContext.ts
|
|
319
319
|
var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST__", ISLAND_STATE_MARKER = "__ABS_ISLAND_STATE__", CLOSING_HEAD_TAG = "</head>", warnedMissingBootstrap = false, warnIfBootstrapMissing = (manifest) => {
|
|
@@ -350,12 +350,27 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
|
|
|
350
350
|
browserManifest[key] = value;
|
|
351
351
|
}
|
|
352
352
|
return browserManifest;
|
|
353
|
-
},
|
|
353
|
+
}, ISLAND_MARKER_TAG, ISLAND_FRAMEWORKS, readMarkerAttribute = (tag, name) => new RegExp(`\\b${name}="([^"]*)"`).exec(tag)?.[1]?.replaceAll(""", '"').replaceAll("<", "<").replaceAll(">", ">").replaceAll("&", "&"), toIslandFramework = (value) => ISLAND_FRAMEWORKS.find((framework) => framework === value), collectRenderedIslandStyleKeys = (html) => {
|
|
354
|
+
const keys = new Set;
|
|
355
|
+
for (const [tag] of html.matchAll(ISLAND_MARKER_TAG)) {
|
|
356
|
+
const framework = toIslandFramework(readMarkerAttribute(tag, "data-framework"));
|
|
357
|
+
const component = readMarkerAttribute(tag, "data-component");
|
|
358
|
+
if (framework && component)
|
|
359
|
+
keys.add(getIslandStyleManifestKey(framework, component));
|
|
360
|
+
}
|
|
361
|
+
return keys;
|
|
362
|
+
}, buildIslandStyleLinks = (manifest, html) => {
|
|
363
|
+
if (html === undefined)
|
|
364
|
+
return "";
|
|
365
|
+
const renderedKeys = collectRenderedIslandStyleKeys(html);
|
|
366
|
+
return getIslandStyleManifestEntries(manifest).filter(([key]) => renderedKeys.has(key)).filter(([, href]) => !html.includes(`href="${href}"`)).map(([key, href]) => `<link rel="stylesheet" href="${href}" data-island-style="${key}"${nonceAttr()}>`).join("");
|
|
367
|
+
}, buildIslandsHeadMarkup = (manifest, html) => {
|
|
368
|
+
const styleLinks = buildIslandStyleLinks(manifest, html);
|
|
354
369
|
const manifestScript = `<script${nonceAttr()}>window.__ABSOLUTE_MANIFEST__ = ${escapeScriptContent(JSON.stringify(toBrowserManifest(manifest)))}</script>`;
|
|
355
370
|
const islandStateScript = `<script${nonceAttr()}>window.__ABS_ISLAND_STATE__ = ${escapeScriptContent(JSON.stringify(globalThis.__ABS_ISLAND_STATE__ ?? {}))}</script>`;
|
|
356
371
|
const bootstrapPath = getIslandBootstrapPath(manifest);
|
|
357
372
|
const bootstrapScript = bootstrapPath ? `<script${nonceAttr()} type="module" src="${bootstrapPath}"></script>` : "";
|
|
358
|
-
return `${manifestScript}${islandStateScript}${bootstrapScript}`;
|
|
373
|
+
return `${styleLinks}${manifestScript}${islandStateScript}${bootstrapScript}`;
|
|
359
374
|
}, injectHeadMarkup = (html, markup) => {
|
|
360
375
|
const closingHeadIndex = html.indexOf("</head>");
|
|
361
376
|
if (closingHeadIndex >= 0) {
|
|
@@ -537,7 +552,7 @@ var ISLAND_MARKER = 'data-island="true"', MANIFEST_MARKER = "__ABSOLUTE_MANIFEST
|
|
|
537
552
|
return html;
|
|
538
553
|
}
|
|
539
554
|
warnIfBootstrapMissing(manifest);
|
|
540
|
-
return injectHeadMarkup(html, buildIslandsHeadMarkup(manifest));
|
|
555
|
+
return injectHeadMarkup(html, buildIslandsHeadMarkup(manifest, html));
|
|
541
556
|
}, injectIslandPageContextStream = (stream, options) => {
|
|
542
557
|
const manifest = globalThis.__absoluteManifest;
|
|
543
558
|
if (!manifest)
|
|
@@ -561,6 +576,13 @@ var init_islandPageContext = __esm(() => {
|
|
|
561
576
|
init_logger();
|
|
562
577
|
MANIFEST_BUILD_DIR_KEY = Symbol.for("absolutejs.islandManifestBuildDir");
|
|
563
578
|
WINDOWS_ABSOLUTE_PATH = /^[A-Za-z]:[\\/]|^\\\\/;
|
|
579
|
+
ISLAND_MARKER_TAG = /<[^>]*\bdata-island="true"[^>]*>/g;
|
|
580
|
+
ISLAND_FRAMEWORKS = [
|
|
581
|
+
"react",
|
|
582
|
+
"svelte",
|
|
583
|
+
"vue",
|
|
584
|
+
"angular"
|
|
585
|
+
];
|
|
564
586
|
});
|
|
565
587
|
|
|
566
588
|
// src/core/devRouteRegistrationCallsite.ts
|
|
@@ -2128,6 +2150,12 @@ var CONVENTIONS_KEY = "__absoluteConventions", isConventionsMap = (value) => Boo
|
|
|
2128
2150
|
logConventionRenderError(framework, "error", renderError);
|
|
2129
2151
|
}
|
|
2130
2152
|
return null;
|
|
2153
|
+
}, isPageRequest = (request) => {
|
|
2154
|
+
if (request.headers.get("hx-request") === "true")
|
|
2155
|
+
return true;
|
|
2156
|
+
if (request.headers.get("sec-fetch-dest") === "document")
|
|
2157
|
+
return true;
|
|
2158
|
+
return (request.headers.get("accept") ?? "").includes("text/html");
|
|
2131
2159
|
}, renderConventionError = async (framework, pageName, error) => {
|
|
2132
2160
|
const errorProps = buildErrorProps(error);
|
|
2133
2161
|
const frameworkResponse = await tryFrameworkErrorConvention(framework, pageName, errorProps, error);
|
|
@@ -2139,12 +2167,6 @@ var CONVENTIONS_KEY = "__absoluteConventions", isConventionsMap = (value) => Boo
|
|
|
2139
2167
|
return htmlResponse;
|
|
2140
2168
|
}
|
|
2141
2169
|
return null;
|
|
2142
|
-
}, isPageRequest = (request) => {
|
|
2143
|
-
if (request.headers.get("hx-request") === "true")
|
|
2144
|
-
return true;
|
|
2145
|
-
if (request.headers.get("sec-fetch-dest") === "document")
|
|
2146
|
-
return true;
|
|
2147
|
-
return (request.headers.get("accept") ?? "").includes("text/html");
|
|
2148
2170
|
}, renderStaticRouteError = async (request, error) => {
|
|
2149
2171
|
if (!isPageRequest(request))
|
|
2150
2172
|
return null;
|
|
@@ -4674,9 +4696,9 @@ var createVueCompiler = async () => {
|
|
|
4674
4696
|
// src/core/vueServerModule.ts
|
|
4675
4697
|
import { readFileSync as readFileSync5, realpathSync } from "fs";
|
|
4676
4698
|
import { mkdir as mkdir3 } from "fs/promises";
|
|
4677
|
-
import { dirname as dirname5, join as join8, relative as relative4, resolve as resolve5 } from "path";
|
|
4699
|
+
import { basename as basename4, dirname as dirname5, join as join8, relative as relative4, resolve as resolve5 } from "path";
|
|
4678
4700
|
var {Transpiler } = globalThis.Bun;
|
|
4679
|
-
var
|
|
4701
|
+
var serverCacheRoot3, compiledModuleCache3, syncIslandGeneration2, transpiler2, ensureRelativeImportPath2 = (from, target) => {
|
|
4680
4702
|
const importPath = relative4(dirname5(from), target).replace(/\\/g, "/");
|
|
4681
4703
|
return importPath.startsWith(".") ? importPath : `./${importPath}`;
|
|
4682
4704
|
}, getCachedModulePath3 = (sourcePath) => {
|
|
@@ -4718,7 +4740,7 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, sync
|
|
|
4718
4740
|
const compiler = await loadVueCompiler();
|
|
4719
4741
|
const source = await Bun.file(sourcePath).text();
|
|
4720
4742
|
const { descriptor } = compiler.parse(source, { filename: sourcePath });
|
|
4721
|
-
const componentId =
|
|
4743
|
+
const componentId = toKebab(basename4(sourcePath, ".vue"));
|
|
4722
4744
|
const hasScript = descriptor.script || descriptor.scriptSetup;
|
|
4723
4745
|
const compiledScript = hasScript ? compiler.compileScript(descriptor, {
|
|
4724
4746
|
fs: {
|
|
@@ -4768,7 +4790,6 @@ var ISLAND_COMPONENT_ID_LENGTH = 8, serverCacheRoot3, compiledModuleCache3, sync
|
|
|
4768
4790
|
return compiledModulePath;
|
|
4769
4791
|
};
|
|
4770
4792
|
var init_vueServerModule = __esm(() => {
|
|
4771
|
-
init_constants();
|
|
4772
4793
|
init_isFile();
|
|
4773
4794
|
serverCacheRoot3 = join8(process.cwd(), ".absolutejs", "islands", "vue");
|
|
4774
4795
|
compiledModuleCache3 = new Map;
|
|
@@ -4937,6 +4958,18 @@ var init_renderIslandMarkup = __esm(() => {
|
|
|
4937
4958
|
});
|
|
4938
4959
|
});
|
|
4939
4960
|
|
|
4961
|
+
// src/utils/requestRenderUrl.ts
|
|
4962
|
+
var requestRenderUrl = (request) => {
|
|
4963
|
+
if (!request)
|
|
4964
|
+
return;
|
|
4965
|
+
try {
|
|
4966
|
+
const parsed = new URL(request.url);
|
|
4967
|
+
return `${parsed.pathname.replace(/\/{2,}/g, "/")}${parsed.search}`;
|
|
4968
|
+
} catch {
|
|
4969
|
+
return;
|
|
4970
|
+
}
|
|
4971
|
+
};
|
|
4972
|
+
|
|
4940
4973
|
// src/react/pageHandler.ts
|
|
4941
4974
|
init_cspNonceRef();
|
|
4942
4975
|
init_islandPageContext();
|
|
@@ -5222,16 +5255,7 @@ init_spaRouteManifest();
|
|
|
5222
5255
|
init_resolveConvention();
|
|
5223
5256
|
init_browserTranslation();
|
|
5224
5257
|
var withRequestUrl = (props, url) => Object.assign(Object.create(null), props, { url });
|
|
5225
|
-
var resolveRequestPathname = (request) =>
|
|
5226
|
-
if (!request)
|
|
5227
|
-
return;
|
|
5228
|
-
try {
|
|
5229
|
-
const parsed = new URL(request.url);
|
|
5230
|
-
return `${parsed.pathname}${parsed.search}`;
|
|
5231
|
-
} catch {
|
|
5232
|
-
return;
|
|
5233
|
-
}
|
|
5234
|
-
};
|
|
5258
|
+
var resolveRequestPathname = (request) => requestRenderUrl(request);
|
|
5235
5259
|
var buildRefreshSetup = () => {
|
|
5236
5260
|
if (isProductionRuntime()) {
|
|
5237
5261
|
return "";
|
|
@@ -5407,6 +5431,7 @@ var reactFileRoute = (route) => defineFileRouteWith("react", route, async ({ man
|
|
|
5407
5431
|
init_cspNonceRef();
|
|
5408
5432
|
init_requestContext();
|
|
5409
5433
|
init_pageResponseCache();
|
|
5434
|
+
import { AsyncLocalStorage as AsyncLocalStorage5 } from "async_hooks";
|
|
5410
5435
|
import { readFile } from "fs/promises";
|
|
5411
5436
|
import { dirname, join } from "path";
|
|
5412
5437
|
init_devRouteRegistrationCallsite();
|
|
@@ -5479,6 +5504,27 @@ var injectFlightPayload = (html, flight, nonce) => {
|
|
|
5479
5504
|
});
|
|
5480
5505
|
};
|
|
5481
5506
|
|
|
5507
|
+
// src/react/serverComponents/nodeRendererRef.ts
|
|
5508
|
+
var STORAGE_KEY = Symbol.for("absolutejs.reactServerNodeRendererStorage");
|
|
5509
|
+
var isRendererStorage = (value) => typeof value === "object" && value !== null && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|
|
5510
|
+
var isRenderer = (value) => typeof value === "function";
|
|
5511
|
+
var readStorage = () => {
|
|
5512
|
+
const storage = Reflect.get(globalThis, STORAGE_KEY);
|
|
5513
|
+
return isRendererStorage(storage) ? storage : undefined;
|
|
5514
|
+
};
|
|
5515
|
+
var getReactServerNodeRenderer = () => {
|
|
5516
|
+
const store = readStorage()?.getStore();
|
|
5517
|
+
return isRenderer(store) ? store : undefined;
|
|
5518
|
+
};
|
|
5519
|
+
var runWithReactServerNodeRenderer = (renderer, createStorage, render) => {
|
|
5520
|
+
let storage = readStorage();
|
|
5521
|
+
if (!storage) {
|
|
5522
|
+
storage = createStorage();
|
|
5523
|
+
Reflect.set(globalThis, STORAGE_KEY, storage);
|
|
5524
|
+
}
|
|
5525
|
+
return storage.run(renderer, render);
|
|
5526
|
+
};
|
|
5527
|
+
|
|
5482
5528
|
// src/react/serverComponents/pageHandler.ts
|
|
5483
5529
|
var isRecord4 = (value) => typeof value === "object" && value !== null;
|
|
5484
5530
|
var isPageModule = (value) => isRecord4(value) && typeof value.Page === "function" && isRecord4(value.clientManifest) && typeof value.createElement === "function" && typeof value.renderToReadableStream === "function";
|
|
@@ -5521,6 +5567,16 @@ var loadRenderer = async (rendererPath) => {
|
|
|
5521
5567
|
var logRenderError = (error) => {
|
|
5522
5568
|
console.error("[SSR] React Server Components error:", error);
|
|
5523
5569
|
};
|
|
5570
|
+
var createNodeRenderer = (pageModule, renderer) => {
|
|
5571
|
+
const { renderStaticHtml } = renderer;
|
|
5572
|
+
if (!renderStaticHtml)
|
|
5573
|
+
return;
|
|
5574
|
+
const render = (node) => renderStaticHtml(pageModule.renderToReadableStream(node, pageModule.clientManifest, {
|
|
5575
|
+
onError: logRenderError
|
|
5576
|
+
}));
|
|
5577
|
+
return render;
|
|
5578
|
+
};
|
|
5579
|
+
var createRendererStorage = () => new AsyncLocalStorage5;
|
|
5524
5580
|
var handleReactServerPageRequest = async (input) => {
|
|
5525
5581
|
const request = input.request ?? getCurrentAbsoluteRequest();
|
|
5526
5582
|
if (input.page === "") {
|
|
@@ -5536,11 +5592,13 @@ var handleReactServerPageRequest = async (input) => {
|
|
|
5536
5592
|
]);
|
|
5537
5593
|
const renderer = await loadRenderer(runtime.ssr);
|
|
5538
5594
|
const nonce = readCspNonce();
|
|
5539
|
-
const
|
|
5595
|
+
const renderFlight = () => pageModule.renderToReadableStream(pageModule.createElement(pageModule.Page, input.props ?? {}), pageModule.clientManifest, { onError: logRenderError });
|
|
5596
|
+
const nodeRenderer = createNodeRenderer(pageModule, renderer);
|
|
5597
|
+
const flight = nodeRenderer ? runWithReactServerNodeRenderer(nodeRenderer, createRendererStorage, renderFlight) : renderFlight();
|
|
5540
5598
|
const [forHtml, forPayload] = flight.tee();
|
|
5541
5599
|
const html = await renderer.renderHtml(forHtml, {
|
|
5542
5600
|
bootstrapModules: [runtime.client],
|
|
5543
|
-
bootstrapScriptContent: BROWSER_TRANSLATION_BASELINE_SCRIPT
|
|
5601
|
+
bootstrapScriptContent: `${BROWSER_TRANSLATION_BASELINE_SCRIPT}window.__ABS_SLOT_HYDRATION_PENDING__=true;`,
|
|
5544
5602
|
nonce,
|
|
5545
5603
|
onError: logRenderError
|
|
5546
5604
|
});
|
|
@@ -5563,36 +5621,122 @@ var handleReactServerPageRequest = async (input) => {
|
|
|
5563
5621
|
// src/react/Island.tsx
|
|
5564
5622
|
init_islandMarkupAttributes();
|
|
5565
5623
|
init_renderIslandMarkup();
|
|
5566
|
-
|
|
5567
|
-
|
|
5624
|
+
|
|
5625
|
+
// src/core/islandStylesheet.ts
|
|
5626
|
+
init_cspNonceRef();
|
|
5627
|
+
var INLINE_ISLAND_STYLES_CONTEXT_KEY = "__absoluteInlineIslandStyles";
|
|
5628
|
+
var ISLAND_STYLE_PRECEDENCE = "absolute-islands";
|
|
5629
|
+
var ISLAND_FRAMEWORKS2 = [
|
|
5630
|
+
"react",
|
|
5631
|
+
"svelte",
|
|
5632
|
+
"vue",
|
|
5633
|
+
"angular"
|
|
5634
|
+
];
|
|
5635
|
+
var toIslandFramework2 = (value) => ISLAND_FRAMEWORKS2.find((framework) => framework === value);
|
|
5636
|
+
var readIslandManifest = () => {
|
|
5637
|
+
const manifest = typeof window === "undefined" ? Reflect.get(globalThis, "__absoluteManifest") : Reflect.get(window, "__ABSOLUTE_MANIFEST__");
|
|
5638
|
+
return typeof manifest === "object" && manifest !== null ? manifest : undefined;
|
|
5639
|
+
};
|
|
5640
|
+
var findIslandStylesheet = (framework, component) => {
|
|
5641
|
+
const islandFramework = toIslandFramework2(framework);
|
|
5642
|
+
const manifest = readIslandManifest();
|
|
5643
|
+
if (!islandFramework || !manifest)
|
|
5644
|
+
return;
|
|
5645
|
+
const key = getIslandStyleManifestKey(islandFramework, component);
|
|
5646
|
+
const href = Reflect.get(manifest, key);
|
|
5647
|
+
return typeof href === "string" ? { href, key } : undefined;
|
|
5648
|
+
};
|
|
5649
|
+
var readIslandStyleNonce = () => {
|
|
5650
|
+
if (typeof document === "undefined")
|
|
5651
|
+
return readCspNonce() ?? "";
|
|
5652
|
+
return Array.from(document.querySelectorAll("script[nonce]")).find((element) => element.nonce)?.nonce ?? "";
|
|
5653
|
+
};
|
|
5654
|
+
|
|
5655
|
+
// src/react/IslandStyleLink.tsx
|
|
5656
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
5657
|
+
var IslandStyleLink = ({
|
|
5658
|
+
component,
|
|
5659
|
+
framework
|
|
5660
|
+
}) => {
|
|
5661
|
+
const stylesheet = findIslandStylesheet(framework, component);
|
|
5662
|
+
if (!stylesheet)
|
|
5663
|
+
return null;
|
|
5664
|
+
const nonce = readIslandStyleNonce();
|
|
5665
|
+
return /* @__PURE__ */ jsx("link", {
|
|
5666
|
+
"data-island-style": stylesheet.key,
|
|
5667
|
+
href: stylesheet.href,
|
|
5668
|
+
nonce: nonce || undefined,
|
|
5669
|
+
precedence: ISLAND_STYLE_PRECEDENCE,
|
|
5670
|
+
rel: "stylesheet"
|
|
5671
|
+
});
|
|
5672
|
+
};
|
|
5673
|
+
var IslandWithStylesheet = ({
|
|
5674
|
+
component,
|
|
5675
|
+
framework,
|
|
5676
|
+
marker
|
|
5677
|
+
}) => /* @__PURE__ */ jsxs(Fragment, {
|
|
5678
|
+
children: [
|
|
5679
|
+
/* @__PURE__ */ jsx(IslandStyleLink, {
|
|
5680
|
+
component,
|
|
5681
|
+
framework
|
|
5682
|
+
}),
|
|
5683
|
+
/* @__PURE__ */ jsx("div", {
|
|
5684
|
+
...marker
|
|
5685
|
+
})
|
|
5686
|
+
]
|
|
5687
|
+
});
|
|
5688
|
+
|
|
5689
|
+
// src/react/Island.tsx
|
|
5690
|
+
import { jsx as jsx2, jsxs as jsxs2, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
5691
|
+
var Island = (props) => {
|
|
5568
5692
|
if (typeof window !== "undefined") {
|
|
5569
|
-
return /* @__PURE__ */
|
|
5570
|
-
|
|
5571
|
-
|
|
5693
|
+
return /* @__PURE__ */ jsx2(IslandWithStylesheet, {
|
|
5694
|
+
component: props.component,
|
|
5695
|
+
framework: props.framework,
|
|
5696
|
+
marker: {
|
|
5697
|
+
...getIslandMarkerAttributes(props),
|
|
5698
|
+
suppressHydrationWarning: true
|
|
5699
|
+
}
|
|
5572
5700
|
});
|
|
5573
5701
|
}
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5702
|
+
return /* @__PURE__ */ jsx2(ServerIsland, {
|
|
5703
|
+
island: props,
|
|
5704
|
+
registry: requireCurrentIslandRegistry()
|
|
5705
|
+
});
|
|
5706
|
+
};
|
|
5707
|
+
var ServerIsland = async ({ island, registry }) => {
|
|
5708
|
+
const { attributes, html } = await renderIslandResult(registry, island);
|
|
5709
|
+
return /* @__PURE__ */ jsxs2(Fragment2, {
|
|
5710
|
+
children: [
|
|
5711
|
+
/* @__PURE__ */ jsx2(IslandStyleLink, {
|
|
5712
|
+
component: island.component,
|
|
5713
|
+
framework: island.framework
|
|
5714
|
+
}),
|
|
5715
|
+
/* @__PURE__ */ jsx2("div", {
|
|
5716
|
+
...attributes,
|
|
5717
|
+
dangerouslySetInnerHTML: { __html: html }
|
|
5718
|
+
})
|
|
5719
|
+
]
|
|
5578
5720
|
});
|
|
5579
5721
|
};
|
|
5580
5722
|
// src/react/createIsland.tsx
|
|
5581
5723
|
init_islandMarkupAttributes();
|
|
5582
|
-
|
|
5583
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
5724
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
5584
5725
|
var createTypedIsland = (registry) => {
|
|
5585
|
-
const Island =
|
|
5726
|
+
const Island = (props) => {
|
|
5586
5727
|
if (typeof window !== "undefined") {
|
|
5587
|
-
return /* @__PURE__ */
|
|
5588
|
-
|
|
5589
|
-
|
|
5728
|
+
return /* @__PURE__ */ jsx3(IslandWithStylesheet, {
|
|
5729
|
+
component: props.component,
|
|
5730
|
+
framework: props.framework,
|
|
5731
|
+
marker: {
|
|
5732
|
+
...getIslandMarkerAttributes(props),
|
|
5733
|
+
suppressHydrationWarning: true
|
|
5734
|
+
}
|
|
5590
5735
|
});
|
|
5591
5736
|
}
|
|
5592
|
-
|
|
5593
|
-
|
|
5594
|
-
|
|
5595
|
-
dangerouslySetInnerHTML: { __html: result.html }
|
|
5737
|
+
return /* @__PURE__ */ jsx3(ServerIsland, {
|
|
5738
|
+
island: props,
|
|
5739
|
+
registry
|
|
5596
5740
|
});
|
|
5597
5741
|
};
|
|
5598
5742
|
return Island;
|
|
@@ -5710,5 +5854,5 @@ export {
|
|
|
5710
5854
|
useIslandStore
|
|
5711
5855
|
};
|
|
5712
5856
|
|
|
5713
|
-
//# debugId=
|
|
5857
|
+
//# debugId=7998F139E6F8E34364756E2164756E21
|
|
5714
5858
|
//# sourceMappingURL=index.js.map
|