@stencil/dev-server 5.0.0-alpha.3 → 5.0.0-alpha.5
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/client/index.js +3 -1
- package/dist/index.mjs +15 -15
- package/package.json +5 -5
package/dist/client/index.js
CHANGED
|
@@ -507,6 +507,7 @@ const hmrInlineStylesTraverse = (elm, versionId, trackers) => {
|
|
|
507
507
|
if (hasShadowRoot(elm)) hmrInlineStylesTraverse(elm.shadowRoot, versionId, trackers);
|
|
508
508
|
if (elm.children) for (let i = 0; i < elm.children.length; i++) hmrInlineStylesTraverse(elm.children[i], versionId, trackers);
|
|
509
509
|
};
|
|
510
|
+
const SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
|
|
510
511
|
/**
|
|
511
512
|
* Update or remove a style element based on the HMR update.
|
|
512
513
|
* @param elm - the style element to update
|
|
@@ -517,7 +518,8 @@ const hmrInlineStylesTraverse = (elm, versionId, trackers) => {
|
|
|
517
518
|
const hmrStyleElement = (elm, versionId, stylesUpdated) => {
|
|
518
519
|
if (elm.getAttribute(STYLE_ID_ATTR) === stylesUpdated.styleId) {
|
|
519
520
|
if (stylesUpdated.styleText) {
|
|
520
|
-
|
|
521
|
+
const slotFbSuffix = elm.hasAttribute("data-slot-fb") ? SLOT_FB_CSS : "";
|
|
522
|
+
elm.innerHTML = stylesUpdated.styleText.replace(/\\n/g, "\n") + slotFbSuffix;
|
|
521
523
|
elm.setAttribute("data-hmr", versionId);
|
|
522
524
|
} else elm.remove();
|
|
523
525
|
return true;
|
package/dist/index.mjs
CHANGED
|
@@ -519,10 +519,10 @@ async function ssrPageRequest(devServerConfig, serverCtx, req, res) {
|
|
|
519
519
|
try {
|
|
520
520
|
let status = 500;
|
|
521
521
|
let content = "";
|
|
522
|
-
const {
|
|
522
|
+
const { ssrApp, srcIndexHtml, diagnostics } = await setupHydrateApp(devServerConfig, serverCtx);
|
|
523
523
|
if (!diagnostics.some((diagnostic) => diagnostic.level === "error")) try {
|
|
524
524
|
const opts = getSsrHydrateOptions(devServerConfig, serverCtx, req.url);
|
|
525
|
-
const ssrResults = await
|
|
525
|
+
const ssrResults = await ssrApp.renderToString(srcIndexHtml, opts);
|
|
526
526
|
diagnostics.push(...ssrResults.diagnostics);
|
|
527
527
|
status = ssrResults.httpStatus ?? 500;
|
|
528
528
|
content = ssrResults.html ?? "";
|
|
@@ -549,11 +549,11 @@ async function ssrStaticDataRequest(devServerConfig, serverCtx, req, res) {
|
|
|
549
549
|
try {
|
|
550
550
|
const data = {};
|
|
551
551
|
let httpCache = false;
|
|
552
|
-
const {
|
|
552
|
+
const { ssrApp, srcIndexHtml, diagnostics } = await setupHydrateApp(devServerConfig, serverCtx);
|
|
553
553
|
if (!diagnostics.some((diagnostic) => diagnostic.level === "error")) try {
|
|
554
554
|
const { ssrPath, hasQueryString } = getSsrStaticDataPath(req);
|
|
555
555
|
const opts = getSsrHydrateOptions(devServerConfig, serverCtx, new URL(ssrPath, req.url));
|
|
556
|
-
const ssrResults = await
|
|
556
|
+
const ssrResults = await ssrApp.renderToString(srcIndexHtml, opts);
|
|
557
557
|
diagnostics.push(...ssrResults.diagnostics);
|
|
558
558
|
ssrResults.staticData.forEach((s) => {
|
|
559
559
|
if (s.type === "application/json") data[s.id] = JSON.parse(s.content);
|
|
@@ -580,7 +580,7 @@ async function ssrStaticDataRequest(devServerConfig, serverCtx, req, res) {
|
|
|
580
580
|
}
|
|
581
581
|
async function setupHydrateApp(devServerConfig, serverCtx) {
|
|
582
582
|
let srcIndexHtml = null;
|
|
583
|
-
let
|
|
583
|
+
let ssrApp = null;
|
|
584
584
|
const buildResults = await serverCtx.getBuildResults();
|
|
585
585
|
const diagnostics = [];
|
|
586
586
|
if (serverCtx.prerenderConfig == null && isString(devServerConfig.prerenderConfig)) try {
|
|
@@ -590,8 +590,8 @@ async function setupHydrateApp(devServerConfig, serverCtx) {
|
|
|
590
590
|
} catch (e) {
|
|
591
591
|
catchError(diagnostics, e);
|
|
592
592
|
}
|
|
593
|
-
if (!isString(buildResults.
|
|
594
|
-
messageText: "Missing
|
|
593
|
+
if (!isString(buildResults.ssrAppFilePath)) diagnostics.push({
|
|
594
|
+
messageText: "Missing ssrAppFilePath",
|
|
595
595
|
level: "error",
|
|
596
596
|
type: "ssr",
|
|
597
597
|
lines: []
|
|
@@ -611,19 +611,19 @@ async function setupHydrateApp(devServerConfig, serverCtx) {
|
|
|
611
611
|
type: "ssr"
|
|
612
612
|
});
|
|
613
613
|
else {
|
|
614
|
-
const
|
|
614
|
+
const ssrAppFilePath = path.resolve(buildResults.ssrAppFilePath);
|
|
615
615
|
try {
|
|
616
|
-
const hydrateUrl = pathToFileURL(
|
|
616
|
+
const hydrateUrl = pathToFileURL(ssrAppFilePath);
|
|
617
617
|
hydrateUrl.search = `?t=${Date.now()}`;
|
|
618
618
|
const hydrateModule = await import(hydrateUrl.href);
|
|
619
|
-
|
|
619
|
+
ssrApp = hydrateModule.default || hydrateModule;
|
|
620
620
|
} catch (e) {
|
|
621
621
|
catchError(diagnostics, e);
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
624
|
}
|
|
625
625
|
return {
|
|
626
|
-
|
|
626
|
+
ssrApp,
|
|
627
627
|
srcIndexHtml,
|
|
628
628
|
diagnostics
|
|
629
629
|
};
|
|
@@ -643,14 +643,14 @@ function getSsrHydrateOptions(devServerConfig, serverCtx, url) {
|
|
|
643
643
|
prettyHtml: true
|
|
644
644
|
};
|
|
645
645
|
const prerenderConfig = serverCtx?.prerenderConfig;
|
|
646
|
-
if (isFunction(prerenderConfig?.
|
|
647
|
-
const userOpts = prerenderConfig.
|
|
646
|
+
if (isFunction(prerenderConfig?.prerenderOptions)) {
|
|
647
|
+
const userOpts = prerenderConfig.prerenderOptions(url);
|
|
648
648
|
if (userOpts) Object.assign(opts, userOpts);
|
|
649
649
|
}
|
|
650
650
|
if (isFunction(serverCtx.sys.applyPrerenderGlobalPatch)) {
|
|
651
|
-
const orgBeforeHydrate = opts.
|
|
651
|
+
const orgBeforeHydrate = opts.beforeSsr;
|
|
652
652
|
const applyPatch = serverCtx.sys.applyPrerenderGlobalPatch;
|
|
653
|
-
opts.
|
|
653
|
+
opts.beforeSsr = (document) => {
|
|
654
654
|
const devServerHostUrl = new URL(devServerConfig.browserUrl).origin;
|
|
655
655
|
applyPatch({
|
|
656
656
|
devServerHostUrl,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stencil/dev-server",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.5",
|
|
4
4
|
"description": "Development server for Stencil with DOM-based HMR",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dev server",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@tsdown/css": "^0.21.6",
|
|
44
44
|
"@types/ws": "^8.0.0",
|
|
45
|
-
"tsdown": "^0.21.
|
|
46
|
-
"typescript": "
|
|
45
|
+
"tsdown": "^0.21.7",
|
|
46
|
+
"typescript": ">4.0.0",
|
|
47
47
|
"vitest": "^4.1.1",
|
|
48
|
-
"vitest-environment-stencil": "^1.
|
|
49
|
-
"@stencil/core": "5.0.0-alpha.
|
|
48
|
+
"vitest-environment-stencil": "^1.11.6",
|
|
49
|
+
"@stencil/core": "5.0.0-alpha.5"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@stencil/core": "^5.0.0-0"
|