@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/build.d.ts +1 -1
- package/dist/backpatch/package.json +1 -1
- package/dist/build/package.json +1 -1
- package/dist/cli.mjs +2 -2
- package/dist/core-internal.d.ts +177 -108
- package/dist/core.min.mjs +10 -11
- package/dist/core.mjs +2354 -2126
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +4191 -4007
- package/dist/error-swap-executor.debug.js +2 -2
- package/dist/error-swap-executor.js +1 -1
- package/dist/insights.d.ts +2 -2
- package/dist/jsx-runtime/index.d.ts +1 -1
- package/dist/loader/package.json +1 -1
- package/dist/optimizer.d.ts +14 -4
- package/dist/optimizer.mjs +492 -446
- package/dist/out-of-order-executor.debug.js +2 -2
- package/dist/preloader.mjs +77 -69
- package/dist/server-modules.d.ts +7 -7
- package/dist/server.d.ts +17 -17
- package/dist/server.mjs +93 -62
- package/dist/server.prod.mjs +419 -384
- package/dist/starters/adapters/bun/adapters/bun/vite.config.ts +0 -1
- package/dist/testing/index.d.ts +23 -22
- package/dist/testing/index.mjs +7484 -7364
- package/dist/testing/package.json +1 -1
- package/dist/ts-optimizer.mjs +1095 -1068
- package/dist/worker/index.mjs +2 -2
- package/dist/worker/package.json +1 -1
- package/dist/worker/worker.shared.js +3 -3
- package/handlers.mjs +6 -6
- package/jsx-dev-runtime.d.ts +1 -1
- package/jsx-runtime.d.ts +1 -1
- package/loader.d.ts +1 -1
- package/optimizer.d.ts +1 -1
- package/package.json +3 -2
- package/public.d.ts +6 -6
- package/server.d.ts +1 -1
- package/testing.d.ts +1 -1
package/dist/server.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* @qwik.dev/core/server 2.0.0-beta.
|
|
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
|
|
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
|
|
1008
|
-
if (
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
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 +=
|
|
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:
|
|
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
|
|
1296
|
-
var QWIK_ERROR_SWAP_EXECUTOR_MINIFIED = `var t='[q\\\\:
|
|
1297
|
-
var QWIK_ERROR_SWAP_EXECUTOR_DEBUG = '//#region packages/qwik/src/error-swap-executor-shared.ts\nvar Q_ERROR_CONTENT_SELECTOR = "[q\\\\:
|
|
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__.
|
|
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.
|
|
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
|
|
1969
|
-
|
|
1970
|
-
|
|
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__.
|
|
2205
|
+
if (!__EXPERIMENTAL__.pendingBoundary) {
|
|
2173
2206
|
if (outOfOrderStreaming) {
|
|
2174
2207
|
throw new Error(
|
|
2175
|
-
'Out-of-order
|
|
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__.
|
|
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__.
|
|
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__.
|
|
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__.
|
|
2255
|
-
if (!ooosActive && !__EXPERIMENTAL__.
|
|
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__.
|
|
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__.
|
|
2303
|
+
if (!__EXPERIMENTAL__.pendingBoundary) {
|
|
2271
2304
|
throw new Error(
|
|
2272
|
-
'Out-of-order
|
|
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
|
|
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__.
|
|
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__.
|
|
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__.
|
|
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__.
|
|
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__.
|
|
2812
|
-
attrs[
|
|
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__.
|
|
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__.
|
|
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__.
|
|
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__.
|
|
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
|
-
|
|
3544
|
-
|
|
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[
|
|
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__.
|
|
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({
|
|
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
|
-
|
|
3970
|
+
hasCaughtError: ssrContainer.$hasBoundaryError$ === true
|
|
3940
3971
|
};
|
|
3941
3972
|
return result;
|
|
3942
3973
|
};
|