@qwik.dev/core 2.0.0-beta.45 → 2.0.0-beta.47

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/server.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/server 2.0.0-beta.45-dev+596de70
3
+ * @qwik.dev/core/server 2.0.0-beta.47-dev+919c91b
4
4
  * Copyright QwikDev. All Rights Reserved.
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://github.com/QwikDev/qwik/blob/main/LICENSE
@@ -191,12 +191,7 @@ See https://qwik.dev/docs/core/tasks/#use-method-rules`,
191
191
  // 28
192
192
  "",
193
193
  // 29 (cleared: useComputed$ now supports async functions)
194
- `===
195
- Qwik version {{0}} already imported while importing {{1}}.
196
- This can lead to issues due to duplicated shared structures.
197
- Verify that the Qwik libraries you're using are in "resolve.noExternal[]" and in "optimizeDeps.exclude".
198
- ===
199
- `,
194
+ "===\nQwik version {{0}} already imported while importing {{1}}.\nDifferent Qwik versions or builds cannot share their runtime state on the server.\nMake sure every Qwik library resolves to the same @qwik.dev/core version and build.\n===\n",
200
195
  // 30
201
196
  "WrappedSignal is read-only",
202
197
  // 31
@@ -629,7 +624,7 @@ var OnRenderProp = "q:renderFn";
629
624
  var QSlot = "q:slot";
630
625
  var QSlotParent = "q:sparent";
631
626
  var QStatePatchAttr = "q:patch";
632
- var QSuspenseResolved = "q:r";
627
+ var QPendingResolved = "q:r";
633
628
  var QStyle = "q:style";
634
629
  var QStyleSelector = "style[q\\:style]";
635
630
  var QStyleSSelector = "style[q\\:sstyle]";
@@ -893,6 +888,19 @@ function isAriaAttribute(prop) {
893
888
  return prop.startsWith("aria-");
894
889
  }
895
890
 
891
+ // packages/qwik/src/core/shared/singletons.ts
892
+ import { isServer as isServer2 } from "@qwik.dev/core/build";
893
+
894
+ // packages/qwik/src/core/version.ts
895
+ var version = "2.0.0-beta.47-dev+919c91b";
896
+
897
+ // packages/qwik/src/core/shared/singletons.ts
898
+ var qwikGlobal = globalThis.__qwik__ ||= {};
899
+ var singletons = isServer2 ? qwikGlobal.singletons ||= /* @__PURE__ */ Object.create(null) : qwikGlobal[version] ||= /* @__PURE__ */ Object.create(null);
900
+ var getSingleton = (key) => {
901
+ return singletons[key];
902
+ };
903
+
896
904
  // packages/qwik/src/core/preloader/bundle-graph.ts
897
905
  var base;
898
906
  var graph;
@@ -1004,8 +1012,8 @@ function createPlatform(opts, resolvedManifest) {
1004
1012
  if (hash === SYNC_QRL) {
1005
1013
  return [hash, ""];
1006
1014
  }
1007
- const isRegistered = globalThis.__qwik_reg_symbols?.has(hash);
1008
- if (isRegistered) {
1015
+ const regSymbols = getSingleton("regSymbols");
1016
+ if (regSymbols?.has(hash)) {
1009
1017
  return [symbolName, "_"];
1010
1018
  }
1011
1019
  console.error("Cannot resolve symbol", symbolName, "in", mapper, parent);
@@ -1017,7 +1025,7 @@ function createPlatform(opts, resolvedManifest) {
1017
1025
  isServer: true,
1018
1026
  async importSymbol(_containerEl, url, symbolName) {
1019
1027
  const hash = getSymbolHash(symbolName);
1020
- const regSym = globalThis.__qwik_reg_symbols?.get(hash);
1028
+ const regSym = getSingleton("regSymbols")?.get(hash);
1021
1029
  if (regSym) {
1022
1030
  return regSym;
1023
1031
  }
@@ -1144,13 +1152,8 @@ var simplifyPath = (base2, path) => {
1144
1152
  }
1145
1153
  return simplified.join("/");
1146
1154
  };
1147
- var getBase = (container) => {
1148
- let base2 = container.$buildBase$;
1149
- if (import.meta.env?.DEV && !qTest) {
1150
- base2 = import.meta.env?.BASE_URL;
1151
- }
1152
- return base2;
1153
- };
1155
+ var getBase = (container) => container.$buildBase$;
1156
+ var afterPagePaint = (task) => `window.addEventListener('load',f=>{f=_=>${task};requestAnimationFrame(_=>requestAnimationFrame(_=>{typeof requestIdleCallback==='function'?requestIdleCallback(f,{timeout:1000}):requestAnimationFrame(_=>setTimeout(f))}))})`;
1154
1157
  var preloaderPre = (container, options, nonce) => {
1155
1158
  const { resolvedManifest } = container;
1156
1159
  const base2 = getBase(container);
@@ -1187,7 +1190,9 @@ var preloaderPre = (container, options, nonce) => {
1187
1190
  null
1188
1191
  );
1189
1192
  container.closeElement();
1190
- const script = `let b=fetch("${bundleGraphPath}");import("${preloaderBundle}").then(({l})=>l(${JSON.stringify(base2)},b${optsStr}));`;
1193
+ const script = afterPagePaint(
1194
+ `{let b=fetch("${bundleGraphPath}");import("${preloaderBundle}").then(({l})=>l(${JSON.stringify(base2)},b${optsStr}))}`
1195
+ );
1191
1196
  const scriptAttrs = {
1192
1197
  type: "module",
1193
1198
  async: true,
@@ -1244,7 +1249,9 @@ var includePreloader = (container, options, referencedBundles, nonce) => {
1244
1249
  ) : "";
1245
1250
  let script = insertLinks;
1246
1251
  if (preloaderBundle) {
1247
- script += `window.addEventListener('load',f=>{f=_=>import("${preloaderBundle}").then(({p})=>p(${JSON.stringify(referencedBundles)}));try{requestIdleCallback(f,{timeout:2000})}catch(e){setTimeout(f,200)}})`;
1252
+ script += afterPagePaint(
1253
+ `import("${preloaderBundle}").then(({p})=>p(${JSON.stringify(referencedBundles)}))`
1254
+ );
1248
1255
  }
1249
1256
  if (script) {
1250
1257
  const attrs = { type: "module", async: "true", "q:type": "preload" };
@@ -1282,7 +1289,7 @@ var getBundles = (qrls) => {
1282
1289
  return [...new Set(bundles)];
1283
1290
  };
1284
1291
  var preLoaderOptionsDefault = {
1285
- ssrPreloads: 7,
1292
+ ssrPreloads: 0,
1286
1293
  maxIdlePreloads: 25
1287
1294
  };
1288
1295
 
@@ -1292,9 +1299,9 @@ var QWIK_LOADER_DEFAULT_DEBUG = '//#region packages/qwik/src/qwikloader.ts\nvar
1292
1299
  var QWIK_BACKPATCH_EXECUTOR_MINIFIED = `var t='script[type="qwik/backpatch"]';function e(e,n){const o=n||e.querySelector("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");if(o){const n=o.querySelectorAll(t),r=n[n.length-1];if(r){const t=JSON.parse(r.textContent||"[]"),n=e.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let c=n.currentNode,i=c.hasAttribute(":")?0:-1;for(let e=0;e<t.length;e+=3){const o=t[e],r=t[e+1];let l=t[e+2];for(;i<o&&(c=n.nextNode(),c);)c.hasAttribute(":")&&i++;const a=c;null==l||!1===l?a.removeAttribute(r):("boolean"==typeof l&&(l=""),a.setAttribute(r,l))}}}}var n=document.currentScript;if(n){const t=n.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");t&&e(document,t)}`;
1293
1300
  var QWIK_BACKPATCH_EXECUTOR_DEBUG = '//#region packages/qwik/src/backpatch-executor-shared.ts\n/**\n* Shared backpatch executor logic that can be imported by both the inline script\n* (backpatch-executor.ts) and test utilities.\n*/\nvar BACKPATCH_DATA_SELECTOR = "script[type=\\"qwik/backpatch\\"]";\n/**\n* Execute backpatch operations on a document.\n*\n* @param doc - The document to execute backpatch on\n* @param containerElement - Optional specific container element (if not provided, will search for\n* it)\n*/\nfunction executeBackpatch(doc, containerElement) {\n const container = containerElement || doc.querySelector("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");\n if (container) {\n const scripts = container.querySelectorAll(BACKPATCH_DATA_SELECTOR);\n const script = scripts[scripts.length - 1];\n if (script) {\n const data = JSON.parse(script.textContent || "[]");\n const walker = doc.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let currentNode = walker.currentNode;\n let currentNodeIdx = currentNode.hasAttribute(":") ? 0 : -1;\n for (let i = 0; i < data.length; i += 3) {\n const elementIdx = data[i];\n const attrName = data[i + 1];\n let value = data[i + 2];\n while (currentNodeIdx < elementIdx) {\n currentNode = walker.nextNode();\n if (!currentNode) break;\n if (currentNode.hasAttribute(":")) currentNodeIdx++;\n }\n const element = currentNode;\n if (value == null || value === false) element.removeAttribute(attrName);\n else {\n if (typeof value === "boolean") value = "";\n element.setAttribute(attrName, value);\n }\n }\n }\n }\n}\n//#endregion\n//#region packages/qwik/src/backpatch-executor.ts\n/**\n* Qwik Backpatch Executor\n*\n* This script executes the backpatch operations by finding the backpatch data script within the\n* same container and applying the patches to the DOM elements.\n*\n* This is the inline script version that auto-executes when loaded in the browser. The actual logic\n* is in backpatch-executor-shared.ts for reusability.\n*/\nvar executorScript = document.currentScript;\nif (executorScript) {\n const container = executorScript.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");\n if (container) executeBackpatch(document, container);\n}\n//#endregion';
1294
1301
  var QWIK_OUT_OF_ORDER_EXECUTOR_MINIFIED = `var t='template[q\\\\:r="',e="q:r",r='[q\\\\:rp="',n="q:g",l="q:i",o="q:o",i="[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])",u=u=>{const s=new WeakMap,c=()=>{const t=u.currentScript;return t&&t.closest(i)||u},f=(t,e,r,n)=>{let l=s.get(t);return l||s.set(t,l={}),l[e]||(l[e]={r:{},n:0,t:r,o:n})},a=(t,e)=>t?(e&&e.style&&(e.style.display="none"),t.style&&(t.style.display="contents"),1):0,q=t=>{const e=t.o;let r,n,l=0;if("p"===e)for(const e in t.r)r=t.r[e],r[0]&&a(r[0],r[1])&&(r[0]=0,l++);else if("s"===e)for(n=t.n;(r=t.r[n])&&r[0]&&a(r[0],r[1]);n++)r[0]=0,l++,t.n=n+1;else if("r"===e){if(t.t<0)return 0;for(t.n<0&&(t.n=t.t-1),n=t.n;(r=t.r[n])&&r[0]&&a(r[0],r[1]);n--)r[0]=0,l++,t.n=n-1}else{if(t.t<0)return 0;for(n=0;n<t.t;n++)if(r=t.r[n],!r)return 0;for(n=0;n<t.t;n++)r=t.r[n],r[0]&&a(r[0],r[1])&&(r[0]=0,l++)}return l},p=i=>{const s=c(),p=((r,n)=>{const l=u.currentScript,o=l?l.previousElementSibling:null;if(o&&"template"===o.localName&&o.getAttribute(e)===n+"")return o;const i=r.querySelectorAll(t+n+'"]');return i.length?i[i.length-1]:null})(s,i);if(!p)return;const g=((e,n,l)=>{if(!l)return null;const o=((t,e)=>t.querySelector(r+e+'"]'))(e,n),i=o?((e,r)=>e.querySelector(t+r+'"]'))(o,n):null,u=i?i.parentNode:null;return i&&o&&u?(u.insertBefore(l.content,i),i.remove(),l.remove(),[o,o.previousElementSibling]):null})(s,i,p);if(!g)return;((t,e)=>{var r;const n=u;null===(r=n.qProcessOOOS)||void 0===r||r.call(n,t,e)})(i,g[0]||null);const m=p.getAttribute(n);if(m){const t=+(p.getAttribute(l)||0),e=f(s,m,-1,p.getAttribute(o)||"p");return e.r[t]=g,void q(e)}a(g[0]||null,g[1])};p.g=(t,e,r)=>{const n=f(c(),t,e,r);n.t=e,n.o=r,"r"===n.o&&0===n.n&&(n.n=e-1),q(n)},p.d=u,globalThis.qO=p};u(document)`;
1295
- var QWIK_OUT_OF_ORDER_EXECUTOR_DEBUG = '//#region packages/qwik/src/out-of-order-executor-shared.ts\n/** Shared out-of-order Suspense executor logic for the inline script and source tests. */\nvar Q_RESOLVED_SELECTOR = "template[q\\\\:r=\\"";\nvar Q_RESOLVED_ATTR = "q:r";\nvar Q_RESULT_PARENT_SELECTOR = "[q\\\\:rp=\\"";\nvar Q_GROUP_ATTR = "q:g";\nvar Q_INDEX_ATTR = "q:i";\nvar Q_ORDER_ATTR = "q:o";\nvar Q_CONTAINER_SELECTOR = "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])";\nvar installOutOfOrderExecutor = (doc) => {\n const groups = /* @__PURE__ */ new WeakMap();\n const process = (boundaryId, revealNode) => {\n var _executorDoc$qProcess;\n const executorDoc = doc;\n (_executorDoc$qProcess = executorDoc.qProcessOOOS) === null || _executorDoc$qProcess === void 0 || _executorDoc$qProcess.call(executorDoc, boundaryId, revealNode);\n };\n const getScope = () => {\n const script = doc.currentScript;\n return script ? script.closest(Q_CONTAINER_SELECTOR) || doc : doc;\n };\n const group = (scope, groupId, total, order) => {\n let scopedGroups = groups.get(scope);\n if (!scopedGroups) groups.set(scope, scopedGroups = {});\n return scopedGroups[groupId] || (scopedGroups[groupId] = {\n r: {},\n n: 0,\n t: total,\n o: order\n });\n };\n const getResolvedTemplate = (scope, boundaryId) => {\n const currentScript = doc.currentScript;\n const previousElement = currentScript ? currentScript.previousElementSibling : null;\n if (previousElement && previousElement.localName === "template" && previousElement.getAttribute(Q_RESOLVED_ATTR) === String(boundaryId)) return previousElement;\n const templates = scope.querySelectorAll(Q_RESOLVED_SELECTOR + boundaryId + "\\"]");\n return templates.length ? templates[templates.length - 1] : null;\n };\n const getPlaceholderTemplate = (revealHost, boundaryId) => {\n return revealHost.querySelector(Q_RESOLVED_SELECTOR + boundaryId + "\\"]");\n };\n const getResultParent = (scope, boundaryId) => {\n return scope.querySelector(Q_RESULT_PARENT_SELECTOR + boundaryId + "\\"]");\n };\n const reveal = (revealHost, hideHost) => {\n if (!revealHost) return 0;\n if (hideHost && hideHost.style) hideHost.style.display = "none";\n if (revealHost.style) revealHost.style.display = "contents";\n return 1;\n };\n const move = (scope, boundaryId, resolved) => {\n if (!resolved) return null;\n const revealHost = getResultParent(scope, boundaryId);\n const placeholder = revealHost ? getPlaceholderTemplate(revealHost, boundaryId) : null;\n const parent = placeholder ? placeholder.parentNode : null;\n if (!placeholder || !revealHost || !parent) return null;\n parent.insertBefore(resolved.content, placeholder);\n placeholder.remove();\n resolved.remove();\n return [revealHost, revealHost.previousElementSibling];\n };\n const flush = (group) => {\n const order = group.o;\n let entry;\n let index;\n let swapped = 0;\n if (order === "p") for (const key in group.r) {\n entry = group.r[key];\n if (entry[0] && reveal(entry[0], entry[1])) {\n entry[0] = 0;\n swapped++;\n }\n }\n else if (order === "s") for (index = group.n; (entry = group.r[index]) && entry[0]; index++) {\n if (!reveal(entry[0], entry[1])) break;\n entry[0] = 0;\n swapped++;\n group.n = index + 1;\n }\n else if (order === "r") {\n if (group.t < 0) return 0;\n if (group.n < 0) group.n = group.t - 1;\n for (index = group.n; (entry = group.r[index]) && entry[0]; index--) {\n if (!reveal(entry[0], entry[1])) break;\n entry[0] = 0;\n swapped++;\n group.n = index - 1;\n }\n } else {\n if (group.t < 0) return 0;\n for (index = 0; index < group.t; index++) {\n entry = group.r[index];\n if (!entry) return 0;\n }\n for (index = 0; index < group.t; index++) {\n entry = group.r[index];\n if (entry[0] && reveal(entry[0], entry[1])) {\n entry[0] = 0;\n swapped++;\n }\n }\n }\n return swapped;\n };\n const qO = ((boundaryId) => {\n const scope = getScope();\n const resolved = getResolvedTemplate(scope, boundaryId);\n if (!resolved) return;\n const entry = move(scope, boundaryId, resolved);\n if (!entry) return;\n process(boundaryId, entry[0] || null);\n const groupId = resolved.getAttribute(Q_GROUP_ATTR);\n if (groupId) {\n const index = +(resolved.getAttribute(Q_INDEX_ATTR) || 0);\n const currentGroup = group(scope, groupId, -1, resolved.getAttribute(Q_ORDER_ATTR) || "p");\n currentGroup.r[index] = entry;\n flush(currentGroup);\n return;\n }\n reveal(entry[0] || null, entry[1]);\n });\n qO.g = (groupId, total, order) => {\n const currentGroup = group(getScope(), groupId, total, order);\n currentGroup.t = total;\n currentGroup.o = order;\n if (currentGroup.o === "r" && currentGroup.n === 0) currentGroup.n = total - 1;\n flush(currentGroup);\n };\n qO.d = doc;\n globalThis.qO = qO;\n};\n//#endregion\n//#region packages/qwik/src/out-of-order-executor.ts\n/**\n* Qwik Out-of-Order Suspense Executor\n*\n* This is the inline script entry. The actual logic lives in out-of-order-executor-shared.ts so\n* source tests can install the same executor.\n*/\ninstallOutOfOrderExecutor(document);\n//#endregion';
1296
- var QWIK_ERROR_SWAP_EXECUTOR_MINIFIED = `var t='[q\\\\:ebc="',e='[q\\\\:ebf="',n="[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])",o=t=>{const e=t.querySelectorAll("*");for(let t=0;t<e.length;t++){const n=e[t].attributes;for(let o=n.length-1;o>=0;o--){const l=n[o].name;0!==l.indexOf("q-d:")&&0!==l.indexOf("q-w:")||e[t].removeAttribute(l)}}},l=l=>{const r=r=>{var c;const s=(null===(c=l.currentScript)||void 0===c?void 0:c.closest(n))||l,i=s.querySelector(t+r+'"]'),q=s.querySelector(e+r+'"]');i&&i.style&&(i.style.display="none",o(i)),q&&q.style&&(q.style.display="contents")};r.d=l,globalThis.qErr=r};l(document)`;
1297
- var QWIK_ERROR_SWAP_EXECUTOR_DEBUG = '//#region packages/qwik/src/error-swap-executor-shared.ts\nvar Q_ERROR_CONTENT_SELECTOR = "[q\\\\:ebc=\\"";\nvar Q_ERROR_FALLBACK_SELECTOR = "[q\\\\:ebf=\\"";\nvar Q_CONTAINER_SELECTOR = "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])";\n/**\n* Qwikloader broadcasts document/window events to every matching element in the document, and\n* `display:none` still counts as connected, so a torn-down subtree keeps handling them.\n*/\nvar stripBroadcastHandlers = (content) => {\n const nodes = content.querySelectorAll("*");\n for (let i = 0; i < nodes.length; i++) {\n const attrs = nodes[i].attributes;\n for (let j = attrs.length - 1; j >= 0; j--) {\n const name = attrs[j].name;\n if (name.indexOf("q-d:") === 0 || name.indexOf("q-w:") === 0) nodes[i].removeAttribute(name);\n }\n }\n};\nvar installErrorSwapExecutor = (doc) => {\n const qErr = ((boundaryId) => {\n var _doc$currentScript;\n const scope = ((_doc$currentScript = doc.currentScript) === null || _doc$currentScript === void 0 ? void 0 : _doc$currentScript.closest(Q_CONTAINER_SELECTOR)) || doc;\n const content = scope.querySelector(Q_ERROR_CONTENT_SELECTOR + boundaryId + "\\"]");\n const fallback = scope.querySelector(Q_ERROR_FALLBACK_SELECTOR + boundaryId + "\\"]");\n if (content && content.style) {\n content.style.display = "none";\n stripBroadcastHandlers(content);\n }\n if (fallback && fallback.style) fallback.style.display = "contents";\n });\n qErr.d = doc;\n globalThis.qErr = qErr;\n};\n//#endregion\n//#region packages/qwik/src/error-swap-executor.ts\ninstallErrorSwapExecutor(document);\n//#endregion';
1302
+ var QWIK_OUT_OF_ORDER_EXECUTOR_DEBUG = '//#region packages/qwik/src/out-of-order-executor-shared.ts\n/** Shared out-of-order streaming executor logic for the inline script and source tests. */\nvar Q_RESOLVED_SELECTOR = "template[q\\\\:r=\\"";\nvar Q_RESOLVED_ATTR = "q:r";\nvar Q_RESULT_PARENT_SELECTOR = "[q\\\\:rp=\\"";\nvar Q_GROUP_ATTR = "q:g";\nvar Q_INDEX_ATTR = "q:i";\nvar Q_ORDER_ATTR = "q:o";\nvar Q_CONTAINER_SELECTOR = "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])";\nvar installOutOfOrderExecutor = (doc) => {\n const groups = /* @__PURE__ */ new WeakMap();\n const process = (boundaryId, revealNode) => {\n var _executorDoc$qProcess;\n const executorDoc = doc;\n (_executorDoc$qProcess = executorDoc.qProcessOOOS) === null || _executorDoc$qProcess === void 0 || _executorDoc$qProcess.call(executorDoc, boundaryId, revealNode);\n };\n const getScope = () => {\n const script = doc.currentScript;\n return script ? script.closest(Q_CONTAINER_SELECTOR) || doc : doc;\n };\n const group = (scope, groupId, total, order) => {\n let scopedGroups = groups.get(scope);\n if (!scopedGroups) groups.set(scope, scopedGroups = {});\n return scopedGroups[groupId] || (scopedGroups[groupId] = {\n r: {},\n n: 0,\n t: total,\n o: order\n });\n };\n const getResolvedTemplate = (scope, boundaryId) => {\n const currentScript = doc.currentScript;\n const previousElement = currentScript ? currentScript.previousElementSibling : null;\n if (previousElement && previousElement.localName === "template" && previousElement.getAttribute(Q_RESOLVED_ATTR) === String(boundaryId)) return previousElement;\n const templates = scope.querySelectorAll(Q_RESOLVED_SELECTOR + boundaryId + "\\"]");\n return templates.length ? templates[templates.length - 1] : null;\n };\n const getPlaceholderTemplate = (revealHost, boundaryId) => {\n return revealHost.querySelector(Q_RESOLVED_SELECTOR + boundaryId + "\\"]");\n };\n const getResultParent = (scope, boundaryId) => {\n return scope.querySelector(Q_RESULT_PARENT_SELECTOR + boundaryId + "\\"]");\n };\n const reveal = (revealHost, hideHost) => {\n if (!revealHost) return 0;\n if (hideHost && hideHost.style) hideHost.style.display = "none";\n if (revealHost.style) revealHost.style.display = "contents";\n return 1;\n };\n const move = (scope, boundaryId, resolved) => {\n if (!resolved) return null;\n const revealHost = getResultParent(scope, boundaryId);\n const placeholder = revealHost ? getPlaceholderTemplate(revealHost, boundaryId) : null;\n const parent = placeholder ? placeholder.parentNode : null;\n if (!placeholder || !revealHost || !parent) return null;\n parent.insertBefore(resolved.content, placeholder);\n placeholder.remove();\n resolved.remove();\n return [revealHost, revealHost.previousElementSibling];\n };\n const flush = (group) => {\n const order = group.o;\n let entry;\n let index;\n let swapped = 0;\n if (order === "p") for (const key in group.r) {\n entry = group.r[key];\n if (entry[0] && reveal(entry[0], entry[1])) {\n entry[0] = 0;\n swapped++;\n }\n }\n else if (order === "s") for (index = group.n; (entry = group.r[index]) && entry[0]; index++) {\n if (!reveal(entry[0], entry[1])) break;\n entry[0] = 0;\n swapped++;\n group.n = index + 1;\n }\n else if (order === "r") {\n if (group.t < 0) return 0;\n if (group.n < 0) group.n = group.t - 1;\n for (index = group.n; (entry = group.r[index]) && entry[0]; index--) {\n if (!reveal(entry[0], entry[1])) break;\n entry[0] = 0;\n swapped++;\n group.n = index - 1;\n }\n } else {\n if (group.t < 0) return 0;\n for (index = 0; index < group.t; index++) {\n entry = group.r[index];\n if (!entry) return 0;\n }\n for (index = 0; index < group.t; index++) {\n entry = group.r[index];\n if (entry[0] && reveal(entry[0], entry[1])) {\n entry[0] = 0;\n swapped++;\n }\n }\n }\n return swapped;\n };\n const qO = ((boundaryId) => {\n const scope = getScope();\n const resolved = getResolvedTemplate(scope, boundaryId);\n if (!resolved) return;\n const entry = move(scope, boundaryId, resolved);\n if (!entry) return;\n process(boundaryId, entry[0] || null);\n const groupId = resolved.getAttribute(Q_GROUP_ATTR);\n if (groupId) {\n const index = +(resolved.getAttribute(Q_INDEX_ATTR) || 0);\n const currentGroup = group(scope, groupId, -1, resolved.getAttribute(Q_ORDER_ATTR) || "p");\n currentGroup.r[index] = entry;\n flush(currentGroup);\n return;\n }\n reveal(entry[0] || null, entry[1]);\n });\n qO.g = (groupId, total, order) => {\n const currentGroup = group(getScope(), groupId, total, order);\n currentGroup.t = total;\n currentGroup.o = order;\n if (currentGroup.o === "r" && currentGroup.n === 0) currentGroup.n = total - 1;\n flush(currentGroup);\n };\n qO.d = doc;\n globalThis.qO = qO;\n};\n//#endregion\n//#region packages/qwik/src/out-of-order-executor.ts\n/**\n* Qwik Out-of-Order Streaming Executor\n*\n* This is the inline script entry. The actual logic lives in out-of-order-executor-shared.ts so\n* source tests can install the same executor.\n*/\ninstallOutOfOrderExecutor(document);\n//#endregion';
1303
+ var QWIK_ERROR_SWAP_EXECUTOR_MINIFIED = `var t='[q\\\\:cc="',e='[q\\\\:cf="',n="[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])",o=t=>{const e=t.querySelectorAll("*");for(let t=0;t<e.length;t++){const n=e[t].attributes;for(let o=n.length-1;o>=0;o--){const l=n[o].name;0!==l.indexOf("q-d:")&&0!==l.indexOf("q-w:")||e[t].removeAttribute(l)}}},l=l=>{const r=r=>{var c;const s=(null===(c=l.currentScript)||void 0===c?void 0:c.closest(n))||l,i=s.querySelector(t+r+'"]'),q=s.querySelector(e+r+'"]');i&&i.style&&(i.style.display="none",o(i)),q&&q.style&&(q.style.display="contents")};r.d=l,globalThis.qErr=r};l(document)`;
1304
+ var QWIK_ERROR_SWAP_EXECUTOR_DEBUG = '//#region packages/qwik/src/error-swap-executor-shared.ts\nvar Q_ERROR_CONTENT_SELECTOR = "[q\\\\:cc=\\"";\nvar Q_ERROR_FALLBACK_SELECTOR = "[q\\\\:cf=\\"";\nvar Q_CONTAINER_SELECTOR = "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])";\n/**\n* Qwikloader broadcasts document/window events to every matching element in the document, and\n* `display:none` still counts as connected, so a torn-down subtree keeps handling them.\n*/\nvar stripBroadcastHandlers = (content) => {\n const nodes = content.querySelectorAll("*");\n for (let i = 0; i < nodes.length; i++) {\n const attrs = nodes[i].attributes;\n for (let j = attrs.length - 1; j >= 0; j--) {\n const name = attrs[j].name;\n if (name.indexOf("q-d:") === 0 || name.indexOf("q-w:") === 0) nodes[i].removeAttribute(name);\n }\n }\n};\nvar installErrorSwapExecutor = (doc) => {\n const qErr = ((boundaryId) => {\n var _doc$currentScript;\n const scope = ((_doc$currentScript = doc.currentScript) === null || _doc$currentScript === void 0 ? void 0 : _doc$currentScript.closest(Q_CONTAINER_SELECTOR)) || doc;\n const content = scope.querySelector(Q_ERROR_CONTENT_SELECTOR + boundaryId + "\\"]");\n const fallback = scope.querySelector(Q_ERROR_FALLBACK_SELECTOR + boundaryId + "\\"]");\n if (content && content.style) {\n content.style.display = "none";\n stripBroadcastHandlers(content);\n }\n if (fallback && fallback.style) fallback.style.display = "contents";\n });\n qErr.d = doc;\n globalThis.qErr = qErr;\n};\n//#endregion\n//#region packages/qwik/src/error-swap-executor.ts\ninstallErrorSwapExecutor(document);\n//#endregion';
1298
1305
  function getQwikLoaderScript(opts = {}) {
1299
1306
  return opts.debug ? QWIK_LOADER_DEFAULT_DEBUG : QWIK_LOADER_DEFAULT_MINIFIED;
1300
1307
  }
@@ -1307,7 +1314,7 @@ function getQwikBackpatchExecutorScript(opts = {}) {
1307
1314
  return opts.debug ? QWIK_BACKPATCH_EXECUTOR_DEBUG : QWIK_BACKPATCH_EXECUTOR_MINIFIED;
1308
1315
  }
1309
1316
  function getQwikOutOfOrderExecutorScript(opts = {}) {
1310
- if (!__EXPERIMENTAL__.suspense) {
1317
+ if (!__EXPERIMENTAL__.pendingBoundary) {
1311
1318
  return "";
1312
1319
  }
1313
1320
  const script = opts.debug ? QWIK_OUT_OF_ORDER_EXECUTOR_DEBUG : QWIK_OUT_OF_ORDER_EXECUTOR_MINIFIED;
@@ -1324,7 +1331,8 @@ function getQwikErrorSwapExecutorScript(opts = {}) {
1324
1331
  import {
1325
1332
  _isJSXNode as isJSXNode,
1326
1333
  _EMPTY_OBJ,
1327
- _EFFECT_BACK_REF
1334
+ _EFFECT_BACK_REF,
1335
+ _hasSlotProps
1328
1336
  } from "@qwik.dev/core/internal";
1329
1337
  import { isDev as isDev7 } from "@qwik.dev/core/build";
1330
1338
  var SsrNode = class {
@@ -1394,6 +1402,9 @@ var SsrNode = class {
1394
1402
  return this.attrs[name] ?? null;
1395
1403
  }
1396
1404
  }
1405
+ hasSlotProps() {
1406
+ return _hasSlotProps(this.attrs);
1407
+ }
1397
1408
  removeProp(name) {
1398
1409
  if (name.startsWith(NON_SERIALIZABLE_MARKER_PREFIX)) {
1399
1410
  if (this.localProps) {
@@ -1924,7 +1935,7 @@ function getBuildBase(opts) {
1924
1935
  return `${import.meta.env?.BASE_URL || "/"}build/`;
1925
1936
  }
1926
1937
  var versions = {
1927
- qwik: "2.0.0-beta.45-dev+596de70",
1938
+ qwik: "2.0.0-beta.47-dev+919c91b",
1928
1939
  qwikDom: "2.1.19"
1929
1940
  };
1930
1941
 
@@ -1963,11 +1974,25 @@ function vNodeData_openElement(vNodeData) {
1963
1974
  vNodeData.push({}, WRITE_ELEMENT_ATTRS);
1964
1975
  vNodeData[0] |= 4 /* ELEMENT_NODE */;
1965
1976
  }
1977
+ var vnodeDataCursors = /* @__PURE__ */ new WeakMap();
1966
1978
  function vNodeData_createSsrNodeReference(currentComponentNode, vNodeData, depthFirstElementIdx, cleanupQueue, currentFile) {
1967
1979
  vNodeData[0] |= 8 /* REFERENCE */;
1968
- const stack = [-1];
1969
- let attributesIndex = -1;
1970
- for (let i = 1; i < vNodeData.length; i++) {
1980
+ const shouldTrack = vNodeData.length >= 16;
1981
+ const cursor = shouldTrack ? vnodeDataCursors.get(vNodeData) : void 0;
1982
+ const saved = cursor && cursor.firstEntry === vNodeData[1] ? cursor : void 0;
1983
+ const stack = saved ? saved.stack.slice() : [-1];
1984
+ let attributesIndex = saved ? saved.attributesIndex : -1;
1985
+ let hasSavedCursor = false;
1986
+ for (let i = saved ? saved.index : 1; i < vNodeData.length; i++) {
1987
+ if (shouldTrack && i === vNodeData.length - 1) {
1988
+ vnodeDataCursors.set(vNodeData, {
1989
+ index: i,
1990
+ stack: stack.slice(),
1991
+ attributesIndex,
1992
+ firstEntry: vNodeData[1]
1993
+ });
1994
+ hasSavedCursor = true;
1995
+ }
1971
1996
  const value = vNodeData[i];
1972
1997
  if (typeof value === "object" && value !== null) {
1973
1998
  attributesIndex = i;
@@ -1985,6 +2010,14 @@ function vNodeData_createSsrNodeReference(currentComponentNode, vNodeData, depth
1985
2010
  stack[stack.length - 1]++;
1986
2011
  }
1987
2012
  }
2013
+ if (shouldTrack && !hasSavedCursor) {
2014
+ vnodeDataCursors.set(vNodeData, {
2015
+ index: vNodeData.length,
2016
+ stack: stack.slice(),
2017
+ attributesIndex,
2018
+ firstEntry: vNodeData[1]
2019
+ });
2020
+ }
1988
2021
  let refId = String(depthFirstElementIdx);
1989
2022
  if (vNodeData[0] & (2 /* VIRTUAL_NODE */ | 1 /* TEXT_DATA */)) {
1990
2023
  for (let i = 0; i < stack.length; i++) {
@@ -2169,10 +2202,10 @@ var SSRContainer = class extends _SharedContainer {
2169
2202
  this.renderOptions = opts.renderOptions;
2170
2203
  this.$transformError$ = opts.renderOptions.transformError;
2171
2204
  const outOfOrderStreaming = this.renderOptions.streaming?.outOfOrder === true;
2172
- if (!__EXPERIMENTAL__.suspense) {
2205
+ if (!__EXPERIMENTAL__.pendingBoundary) {
2173
2206
  if (outOfOrderStreaming) {
2174
2207
  throw new Error(
2175
- 'Out-of-order Suspense streaming requires `experimental: ["suspense"]` in the `qwikVite` plugin.'
2208
+ 'Out-of-order streaming requires `experimental: ["pendingBoundary"]` in the `qwikVite` plugin.'
2176
2209
  );
2177
2210
  }
2178
2211
  this.outOfOrderStreaming = false;
@@ -2221,7 +2254,7 @@ var SSRContainer = class extends _SharedContainer {
2221
2254
  }
2222
2255
  /** Queue OOOS serialization/write work that must not overlap with root state serialization. */
2223
2256
  $runQueuedRender$(render) {
2224
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming) {
2257
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming) {
2225
2258
  return render();
2226
2259
  }
2227
2260
  if (this.$containerState$ === 0 /* NotReady */) {
@@ -2233,7 +2266,7 @@ var SSRContainer = class extends _SharedContainer {
2233
2266
  return result;
2234
2267
  }
2235
2268
  $waitForRootContainerReady$() {
2236
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || this.$isReadyForOOOS$()) {
2269
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || this.$isReadyForOOOS$()) {
2237
2270
  return;
2238
2271
  }
2239
2272
  return this.rootContainerReadyPromise ||= new Promise((resolve) => {
@@ -2241,7 +2274,7 @@ var SSRContainer = class extends _SharedContainer {
2241
2274
  });
2242
2275
  }
2243
2276
  $markRootContainerReady$() {
2244
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || this.$isReadyForOOOS$()) {
2277
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || this.$isReadyForOOOS$()) {
2245
2278
  return;
2246
2279
  }
2247
2280
  this.rootContainerSerializedRootCount = this.serializationCtx.$roots$.length;
@@ -2251,8 +2284,8 @@ var SSRContainer = class extends _SharedContainer {
2251
2284
  this.rootContainerReadyPromise = null;
2252
2285
  }
2253
2286
  nextOutOfOrderId(markUsed = true) {
2254
- const ooosActive = __EXPERIMENTAL__.suspense && this.outOfOrderStreaming;
2255
- if (!ooosActive && !__EXPERIMENTAL__.errorBoundary) {
2287
+ const ooosActive = __EXPERIMENTAL__.pendingBoundary && this.outOfOrderStreaming;
2288
+ if (!ooosActive && !__EXPERIMENTAL__.catchBoundary) {
2256
2289
  return 0;
2257
2290
  }
2258
2291
  if (markUsed && ooosActive) {
@@ -2261,21 +2294,19 @@ var SSRContainer = class extends _SharedContainer {
2261
2294
  return ++this.outOfOrderId;
2262
2295
  }
2263
2296
  emitOutOfOrderSegmentScripts(scripts) {
2264
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || !scripts) {
2297
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || !scripts) {
2265
2298
  return;
2266
2299
  }
2267
2300
  this.write(scripts);
2268
2301
  }
2269
2302
  async segment(segmentId, jsx, options) {
2270
- if (!__EXPERIMENTAL__.suspense) {
2303
+ if (!__EXPERIMENTAL__.pendingBoundary) {
2271
2304
  throw new Error(
2272
- 'Out-of-order Suspense streaming requires `experimental: ["suspense"]` in the `qwikVite` plugin.'
2305
+ 'Out-of-order streaming requires `experimental: ["pendingBoundary"]` in the `qwikVite` plugin.'
2273
2306
  );
2274
2307
  }
2275
2308
  if (!this.outOfOrderStreaming) {
2276
- throw new Error(
2277
- "Out-of-order Suspense streaming requires `streaming.outOfOrder` to be `true`."
2278
- );
2309
+ throw new Error("Out-of-order streaming requires `streaming.outOfOrder` to be `true`.");
2279
2310
  }
2280
2311
  this.outOfOrderUsed = true;
2281
2312
  this.markVNodeRefForSerialization(options.parentComponentFrame?.componentNode);
@@ -2312,7 +2343,7 @@ var SSRContainer = class extends _SharedContainer {
2312
2343
  parent: null,
2313
2344
  elementName: "#segment",
2314
2345
  depthFirstElementIdx: -1,
2315
- // OOOS inserts this synthetic root under the Suspense content host on the client.
2346
+ // OOOS inserts this synthetic root under the Pending content host on the client.
2316
2347
  vNodeData: [16 /* SERIALIZE */],
2317
2348
  currentFile: null,
2318
2349
  refBase: contentHostNode.id
@@ -2351,7 +2382,7 @@ var SSRContainer = class extends _SharedContainer {
2351
2382
  return segmentContainer;
2352
2383
  }
2353
2384
  queueOutOfOrderSegment(segment) {
2354
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming) {
2385
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming) {
2355
2386
  return;
2356
2387
  }
2357
2388
  this.outOfOrderPendingSegments.push(segment);
@@ -2731,7 +2762,7 @@ var SSRContainer = class extends _SharedContainer {
2731
2762
  ////////////////////////////////////
2732
2763
  emitContainerData() {
2733
2764
  const isStreamingDisabled = this.renderOptions.streaming?.inOrder?.strategy === "disabled";
2734
- const shouldFlushShell = !isStreamingDisabled || __EXPERIMENTAL__.suspense && this.outOfOrderStreaming && this.outOfOrderUsed;
2765
+ const shouldFlushShell = !isStreamingDisabled || __EXPERIMENTAL__.pendingBoundary && this.outOfOrderStreaming && this.outOfOrderUsed;
2735
2766
  return maybeThen(
2736
2767
  maybeThen(
2737
2768
  shouldFlushShell ? this.streamHandler.flush() : void 0,
@@ -2758,7 +2789,7 @@ var SSRContainer = class extends _SharedContainer {
2758
2789
  this.emitQwikLoaderAtBottomIfNeeded();
2759
2790
  }
2760
2791
  emitDelayedOutOfOrderSegmentVNodeData() {
2761
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || !this.outOfOrderUsed) {
2792
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || !this.outOfOrderUsed) {
2762
2793
  return;
2763
2794
  }
2764
2795
  for (let i = 0; i < this.outOfOrderSegments.length; i++) {
@@ -2770,7 +2801,7 @@ var SSRContainer = class extends _SharedContainer {
2770
2801
  }
2771
2802
  }
2772
2803
  emitOutOfOrderSegmentsAndData() {
2773
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || !this.outOfOrderUsed) {
2804
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || !this.outOfOrderUsed) {
2774
2805
  return;
2775
2806
  }
2776
2807
  this.emitOutOfOrderExecutorIfNeeded();
@@ -2808,8 +2839,8 @@ var SSRContainer = class extends _SharedContainer {
2808
2839
  }
2809
2840
  emitVNodeDataScript(segmentId, entries, patch = false) {
2810
2841
  const attrs = { type: "qwik/vnode" };
2811
- if (__EXPERIMENTAL__.suspense && this.outOfOrderStreaming && segmentId) {
2812
- attrs[QSuspenseResolved] = segmentId;
2842
+ if (__EXPERIMENTAL__.pendingBoundary && this.outOfOrderStreaming && segmentId) {
2843
+ attrs[QPendingResolved] = segmentId;
2813
2844
  }
2814
2845
  if (patch) {
2815
2846
  attrs[QStatePatchAttr] = true;
@@ -2887,7 +2918,7 @@ var SSRContainer = class extends _SharedContainer {
2887
2918
  }
2888
2919
  }
2889
2920
  markVNodeDataOwnerEmitted(segmentId) {
2890
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming) {
2921
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming) {
2891
2922
  return;
2892
2923
  }
2893
2924
  (this.emittedVNodeDataOwners ||= /* @__PURE__ */ new Set()).add(segmentId);
@@ -3081,7 +3112,7 @@ var SSRContainer = class extends _SharedContainer {
3081
3112
  this.writeScript(scriptAttrs, backpatchScript);
3082
3113
  }
3083
3114
  emitOutOfOrderExecutorIfNeeded() {
3084
- if (!__EXPERIMENTAL__.suspense || !this.outOfOrderStreaming || !this.outOfOrderUsed || this.isOutOfOrderExecutorEmitted) {
3115
+ if (!__EXPERIMENTAL__.pendingBoundary || !this.outOfOrderStreaming || !this.outOfOrderUsed || this.isOutOfOrderExecutorEmitted) {
3085
3116
  return;
3086
3117
  }
3087
3118
  this.isOutOfOrderExecutorEmitted = true;
@@ -3091,7 +3122,7 @@ var SSRContainer = class extends _SharedContainer {
3091
3122
  );
3092
3123
  }
3093
3124
  emitErrorSwapExecutorIfNeeded() {
3094
- if (!__EXPERIMENTAL__.errorBoundary || this.isErrorSwapExecutorEmitted) {
3125
+ if (!__EXPERIMENTAL__.catchBoundary || this.isErrorSwapExecutorEmitted) {
3095
3126
  return;
3096
3127
  }
3097
3128
  this.isErrorSwapExecutorEmitted = true;
@@ -3128,7 +3159,7 @@ var SSRContainer = class extends _SharedContainer {
3128
3159
  }
3129
3160
  }
3130
3161
  isStatic() {
3131
- return !(__EXPERIMENTAL__.suspense && this.outOfOrderStreaming && this.outOfOrderUsed) && this.serializationCtx.$eventQrls$.size === 0;
3162
+ return !(__EXPERIMENTAL__.pendingBoundary && this.outOfOrderStreaming && this.outOfOrderUsed) && this.serializationCtx.$eventQrls$.size === 0;
3132
3163
  }
3133
3164
  emitQwikLoaderAtTopIfNeeded() {
3134
3165
  if (this.qlInclude === 0 /* Module */) {
@@ -3537,12 +3568,12 @@ var SSRSegmentContainer = class extends SSRContainer {
3537
3568
  this.serializationCtx.$onAddRoot$ = void 0;
3538
3569
  }
3539
3570
  }
3540
- markVNodeDataForSerialization(node, flags = 16 /* SERIALIZE */) {
3571
+ markVNodeDataForSerialization(node, flags = 16 /* SERIALIZE */, isStateRoot = false) {
3541
3572
  const previousFlags = node.vnodeData[0];
3542
3573
  const nextFlags = previousFlags | flags;
3543
- if (nextFlags !== previousFlags) {
3544
- node.vnodeData[0] = nextFlags;
3545
- this.queueLateVNodeDataPatch(node, nextFlags & ~previousFlags);
3574
+ node.vnodeData[0] = nextFlags;
3575
+ if (isStateRoot || nextFlags !== previousFlags) {
3576
+ this.queueLateVNodeDataPatch(node, isStateRoot ? nextFlags : nextFlags & ~previousFlags);
3546
3577
  }
3547
3578
  }
3548
3579
  queueLateVNodeDataPatch(node, addedFlags) {
@@ -3688,7 +3719,7 @@ var SSRSegmentContainer = class extends SSRContainer {
3688
3719
  const attrs = this.stateScriptAttrs();
3689
3720
  attrs[QStatePatchAttr] = true;
3690
3721
  if (segmentId) {
3691
- attrs[QSuspenseResolved] = segmentId;
3722
+ attrs[QPendingResolved] = segmentId;
3692
3723
  }
3693
3724
  return attrs;
3694
3725
  }
@@ -3893,7 +3924,7 @@ var renderToString = async (jsx, opts = {}) => {
3893
3924
  };
3894
3925
  };
3895
3926
  var renderToStream = async (jsx, opts) => {
3896
- if (__EXPERIMENTAL__.suspense && opts.streaming?.outOfOrder === void 0) {
3927
+ if (__EXPERIMENTAL__.pendingBoundary && opts.streaming?.outOfOrder === void 0) {
3897
3928
  opts = {
3898
3929
  ...opts,
3899
3930
  streaming: {
@@ -3924,7 +3955,7 @@ var renderToStream = async (jsx, opts) => {
3924
3955
  });
3925
3956
  const onBeforeFirstFlush = opts.onBeforeFirstFlush;
3926
3957
  if (onBeforeFirstFlush) {
3927
- streamHandler.onFirstWrite = () => onBeforeFirstFlush({ errorBoundaryCaught: ssrContainer.$hasBoundaryError$ === true });
3958
+ streamHandler.onFirstWrite = () => onBeforeFirstFlush({ hasCaughtError: ssrContainer.$hasBoundaryError$ === true });
3928
3959
  }
3929
3960
  await setServerPlatform(opts, resolvedManifest);
3930
3961
  await ssrContainer.render(jsx);
@@ -3936,7 +3967,7 @@ var renderToStream = async (jsx, opts) => {
3936
3967
  size: ssrContainer.size,
3937
3968
  isStatic: false,
3938
3969
  timing,
3939
- errorBoundaryCaught: ssrContainer.$hasBoundaryError$ === true
3970
+ hasCaughtError: ssrContainer.$hasBoundaryError$ === true
3940
3971
  };
3941
3972
  return result;
3942
3973
  };