@qwik.dev/core 2.0.0-beta.43 → 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.
Files changed (45) hide show
  1. package/build.d.ts +1 -1
  2. package/dist/async-local-storage.d.ts +3 -0
  3. package/dist/async-local-storage.mjs +8 -0
  4. package/dist/async-local-storage.node.mjs +6 -0
  5. package/dist/backpatch/package.json +1 -1
  6. package/dist/build/package.json +1 -1
  7. package/dist/cli.mjs +26 -5
  8. package/dist/core-internal.d.ts +223 -162
  9. package/dist/core.min.mjs +10 -11
  10. package/dist/core.mjs +6268 -6181
  11. package/dist/core.mjs.map +1 -1
  12. package/dist/core.prod.mjs +5104 -5104
  13. package/dist/error-swap-executor.debug.js +2 -2
  14. package/dist/error-swap-executor.js +1 -1
  15. package/dist/insights.d.ts +2 -2
  16. package/dist/jsx-runtime/index.d.ts +1 -1
  17. package/dist/loader/index.mjs +2 -2
  18. package/dist/loader/package.json +1 -1
  19. package/dist/optimizer.d.ts +240 -11
  20. package/dist/optimizer.mjs +879 -656
  21. package/dist/out-of-order-executor.debug.js +2 -2
  22. package/dist/preloader.mjs +77 -69
  23. package/dist/qwikloader.debug.js +12 -10
  24. package/dist/qwikloader.js +1 -1
  25. package/dist/server-modules.d.ts +7 -7
  26. package/dist/server.d.ts +17 -17
  27. package/dist/server.mjs +99 -66
  28. package/dist/server.prod.mjs +485 -448
  29. package/dist/starters/adapters/bun/adapters/bun/vite.config.ts +0 -1
  30. package/dist/testing/index.d.ts +26 -30
  31. package/dist/testing/index.mjs +7560 -7335
  32. package/dist/testing/package.json +1 -1
  33. package/dist/ts-optimizer.mjs +10477 -0
  34. package/dist/worker/index.mjs +12 -10
  35. package/dist/worker/package.json +1 -1
  36. package/dist/worker/worker.shared.js +3 -3
  37. package/handlers.mjs +6 -6
  38. package/jsx-dev-runtime.d.ts +1 -1
  39. package/jsx-runtime.d.ts +1 -1
  40. package/loader.d.ts +1 -1
  41. package/optimizer.d.ts +1 -1
  42. package/package.json +22 -7
  43. package/public.d.ts +6 -6
  44. package/server.d.ts +1 -1
  45. package/testing.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  //#region packages/qwik/src/out-of-order-executor-shared.ts
2
- /** Shared out-of-order Suspense executor logic for the inline script and source tests. */
2
+ /** Shared out-of-order streaming executor logic for the inline script and source tests. */
3
3
  var Q_RESOLVED_SELECTOR = "template[q\\:r=\"";
4
4
  var Q_RESOLVED_ATTR = "q:r";
5
5
  var Q_RESULT_PARENT_SELECTOR = "[q\\:rp=\"";
@@ -131,7 +131,7 @@ var installOutOfOrderExecutor = (doc) => {
131
131
  //#endregion
132
132
  //#region packages/qwik/src/out-of-order-executor.ts
133
133
  /**
134
- * Qwik Out-of-Order Suspense Executor
134
+ * Qwik Out-of-Order Streaming Executor
135
135
  *
136
136
  * This is the inline script entry. The actual logic lives in out-of-order-executor-shared.ts so
137
137
  * source tests can install the same executor.
@@ -12,45 +12,53 @@ var t = (e) => {
12
12
  return t;
13
13
  };
14
14
  globalThis.qDev, globalThis.qInspector, globalThis.qDynamicPlatform, globalThis.qRuntimeQrl;
15
- var n = function(e) {
15
+ var n = "2.0.0-beta.47-dev+919c91b", r = globalThis.__qwik__ ||= {};
16
+ e ? r.singletons ||= Object.create(null) : r[n] ||= Object.create(null);
17
+ var i = function(e) {
16
18
  return e.PAUSED = "paused", e.RESUMED = "resumed", e.HTML = "html", e.TEXT = "text", e;
17
19
  }({});
18
- "" + n.HTML + n.TEXT;
19
- var r = !e && typeof document < "u", i = r ? document : void 0, a = {
20
+ "" + i.HTML + i.TEXT;
21
+ var a = !e && typeof document < "u", o = a ? document : void 0, s = {
20
22
  $DEBUG$: !1,
21
23
  $maxIdlePreloads$: 25
22
- }, o = r && i.createElement("link").relList?.supports?.("modulepreload") ? "modulePreload" : "preload", s = /\.[mc]?js$/, c = new Map(), l, u, d = 0, f = [], p = t(b), m = t(C), h = !1, g = !1, _ = !1, v = [], y = () => {
23
- u &&= (f.sort((e, t) => e.$inverseProbability$ - t.$inverseProbability$), !1);
24
+ }, c = a && o.createElement("link").relList?.supports?.("modulepreload") ? "modulePreload" : "preload", l = /\.[mc]?js$/, u = [], d = (e) => {
25
+ if (globalThis.qPreload = e, e) {
26
+ let t = u || [];
27
+ for (let n = 0; n < t.length; n++) e(...t[n]);
28
+ u = void 0;
29
+ }
30
+ }, f = new Map(), p, m, h = 0, g = [], _ = t(w), v = t(D), y = !1, b = !1, x = !1, S = [], C = () => {
31
+ m &&= (g.sort((e, t) => e.$inverseProbability$ - t.$inverseProbability$), !1);
24
32
  };
25
- function b() {
26
- if (h = !1, !f.length) return;
27
- y();
33
+ function w() {
34
+ if (y = !1, !g.length) return;
35
+ C();
28
36
  let e = performance.now() + 10, t = !1;
29
- for (; f.length;) {
30
- let n = f[0];
31
- if (1 - n.$inverseProbability$ >= .99 || d < a.$maxIdlePreloads$) {
32
- if (f.shift(), w(n), performance.now() >= e) {
37
+ for (; g.length;) {
38
+ let n = g[0];
39
+ if (1 - n.$inverseProbability$ >= .99 || h < s.$maxIdlePreloads$) {
40
+ if (g.shift(), O(n), performance.now() >= e) {
33
41
  t = !0;
34
42
  break;
35
43
  }
36
44
  } else break;
37
45
  }
38
- t && f.length && !h && (h = !0, p());
46
+ t && g.length && !y && (y = !0, _());
39
47
  }
40
- var x = (e, t, n) => {
41
- v.unshift({
48
+ var T = (e, t, n) => {
49
+ S.unshift({
42
50
  $bundle$: e,
43
51
  $inverseProbability$: t,
44
52
  $seen$: n
45
53
  });
46
- }, S = () => {
47
- let e = v[v.length - 1], t = e.$bundle$;
54
+ }, E = () => {
55
+ let e = S[S.length - 1], t = e.$bundle$;
48
56
  if (e.$deps$) {
49
57
  let n = e.$index$;
50
- if (n >= e.$deps$.length) return v.pop(), !1;
58
+ if (n >= e.$deps$.length) return S.pop(), !1;
51
59
  let r = e.$deps$[n];
52
60
  e.$index$ = n + 1;
53
- let i = M(r.$name$);
61
+ let i = I(r.$name$);
54
62
  if (i.$inverseProbability$ === 0) return !0;
55
63
  let a = 1 - t.$inverseProbability$, o;
56
64
  if (a === 1 || a >= .99) o = Math.min(.01, 1 - r.$importProbability$);
@@ -58,67 +66,67 @@ var x = (e, t, n) => {
58
66
  let e = (1 - r.$importProbability$ * a) / r.$factor$;
59
67
  o = Math.max(.02, i.$inverseProbability$ * e), r.$factor$ = e;
60
68
  }
61
- return v.push({
69
+ return S.push({
62
70
  $bundle$: i,
63
71
  $inverseProbability$: o,
64
72
  $seen$: e.$seen$
65
73
  }), !0;
66
74
  }
67
- if (e.$seen$?.has(t)) return v.pop(), !1;
75
+ if (e.$seen$?.has(t)) return S.pop(), !1;
68
76
  let n = t.$inverseProbability$;
69
- if (t.$inverseProbability$ = e.$inverseProbability$, n - t.$inverseProbability$ < .01) return v.pop(), !1;
70
- if (O != null && t.$state$ < 2 && (t.$state$ === 0 && (t.$state$ = 1, f.push(t)), u = !0), t.$deps$?.length) {
77
+ if (t.$inverseProbability$ = e.$inverseProbability$, n - t.$inverseProbability$ < .01) return S.pop(), !1;
78
+ if (M != null && t.$state$ < 2 && (t.$state$ === 0 && (t.$state$ = 1, g.push(t)), m = !0), t.$deps$?.length) {
71
79
  let n = e.$seen$ || new Set();
72
80
  return n.add(t), e.$seen$ = n, e.$deps$ = t.$deps$, e.$index$ = 0, !1;
73
81
  }
74
- return v.pop(), !1;
82
+ return S.pop(), !1;
75
83
  };
76
- function C() {
77
- if (_ || !v.length) return;
78
- g = !1, _ = !0;
79
- let e = r ? performance.now() + 10 : 0, t = !1;
80
- for (; v.length;) {
84
+ function D() {
85
+ if (x || !S.length) return;
86
+ b = !1, x = !0;
87
+ let e = a ? performance.now() + 10 : 0, t = !1;
88
+ for (; S.length;) {
81
89
  t = !0;
82
- let n = S();
83
- if (r && n && performance.now() >= e) {
84
- g || (g = !0, m());
90
+ let n = E();
91
+ if (a && n && performance.now() >= e) {
92
+ b || (b = !0, v());
85
93
  break;
86
94
  }
87
95
  }
88
- _ = !1, t && r && p();
96
+ x = !1, t && a && _();
89
97
  }
90
- var w = (e) => {
98
+ var O = (e) => {
91
99
  if (e.$state$ >= 2) return;
92
- d++;
100
+ h++;
93
101
  let t = performance.now();
94
102
  e.$waitedMs$ = t - e.$createdTs$, e.$state$ = 2;
95
- let n = i.createElement("link");
96
- n.href = new URL(`${O}${e.$name$}`, i.baseURI).toString(), n.rel = o, n.as = "script", n.onload = n.onerror = () => {
97
- d--, e.$loadedMs$ = performance.now() - t, e.$state$ = 4, n.remove(), p();
98
- }, i.head.appendChild(n);
99
- }, T = (e, t, n) => {
100
- x(e, t, n), r ? m() : C();
101
- }, E = (e, t) => {
102
- let n = M(e);
103
- n && x(n, t);
104
- }, D = (e, t) => {
103
+ let n = o.createElement("link");
104
+ n.href = new URL(`${M}${e.$name$}`, o.baseURI).toString(), n.rel = c, n.as = "script", n.onload = n.onerror = () => {
105
+ h--, e.$loadedMs$ = performance.now() - t, e.$state$ = 4, n.remove(), _();
106
+ }, o.head.appendChild(n);
107
+ }, k = (e, t, n) => {
108
+ T(e, t, n), a ? v() : D();
109
+ }, A = (e, t) => {
110
+ let n = I(e);
111
+ n && T(n, t);
112
+ }, j = (e, t) => {
105
113
  if (!e?.length) return;
106
114
  let n = t ? 1 - t : .4;
107
115
  if (Array.isArray(e)) for (let t = e.length - 1; t >= 0; t--) {
108
116
  let r = e[t];
109
- E(r, n);
117
+ A(r, n);
110
118
  }
111
- else E(e, n);
112
- r ? m() : C();
119
+ else A(e, n);
120
+ a ? v() : D();
113
121
  };
114
- r && document.addEventListener("qsymbol", (e) => {
122
+ a && (d(j), document.addEventListener("qsymbol", (e) => {
115
123
  let { symbol: t, href: n } = e.detail;
116
- n && D(t.slice(t.lastIndexOf("_") + 1), 1);
117
- });
118
- var O, k, A = (e, t) => ({
124
+ n && j(t.slice(t.lastIndexOf("_") + 1), 1);
125
+ }));
126
+ var M, N, P = (e, t) => ({
119
127
  $name$: e,
120
- $state$: s.test(e) ? 0 : 3,
121
- $deps$: l ? t?.map((e) => ({
128
+ $state$: l.test(e) ? 0 : 3,
129
+ $deps$: p ? t?.map((e) => ({
122
130
  ...e,
123
131
  $factor$: 1
124
132
  })) : t,
@@ -126,7 +134,7 @@ var O, k, A = (e, t) => ({
126
134
  $createdTs$: performance.now(),
127
135
  $waitedMs$: 0,
128
136
  $loadedMs$: 0
129
- }), j = (e) => {
137
+ }), F = (e) => {
130
138
  let t = new Map(), n = 0;
131
139
  for (; n < e.length;) {
132
140
  let r = e[n++], i = [], a, o = 1;
@@ -138,41 +146,41 @@ var O, k, A = (e, t) => ({
138
146
  t.set(r, i);
139
147
  }
140
148
  return t;
141
- }, M = (e) => {
142
- let t = c.get(e);
149
+ }, I = (e) => {
150
+ let t = f.get(e);
143
151
  if (!t) {
144
152
  let n;
145
- if (k) {
146
- if (n = k.get(e), !n) return;
153
+ if (N) {
154
+ if (n = N.get(e), !n) return;
147
155
  n.length || (n = void 0);
148
156
  }
149
- t = A(e, n), c.set(e, t);
157
+ t = P(e, n), f.set(e, t);
150
158
  }
151
159
  return t;
152
- }, N = (e, n, i) => {
153
- i && "P" in i && (a.$maxIdlePreloads$ = i.P), !(!r || e == null) && (O = e, n && n.then((e) => e.text()).then((e) => {
154
- k = j(JSON.parse(e));
160
+ }, L = (e, n, r) => {
161
+ r && "P" in r && (s.$maxIdlePreloads$ = r.P), !(!a || e == null) && (M = e, n && n.then((e) => e.text()).then((e) => {
162
+ N = F(JSON.parse(e));
155
163
  let n = [];
156
- for (let [e, t] of k.entries()) {
157
- let r = M(e);
164
+ for (let [e, t] of N.entries()) {
165
+ let r = I(e);
158
166
  r.$deps$ = t, r.$inverseProbability$ < 1 && (n.push([r, r.$inverseProbability$]), r.$inverseProbability$ = 1);
159
167
  }
160
168
  if (!n.length) {
161
- p();
169
+ _();
162
170
  return;
163
171
  }
164
172
  let r = 0, i = t(() => {
165
173
  let e = performance.now() + 10;
166
174
  for (; r < n.length;) {
167
175
  let [t, a] = n[r];
168
- if (r++, T(t, a), r < n.length && performance.now() >= e) {
176
+ if (r++, k(t, a), r < n.length && performance.now() >= e) {
169
177
  i();
170
178
  return;
171
179
  }
172
180
  }
173
- p();
181
+ _();
174
182
  });
175
183
  i();
176
184
  }).catch(console.warn));
177
185
  };
178
- export { j as g, N as l, D as p };
186
+ export { F as g, L as l, j as p };
@@ -39,10 +39,12 @@ var isPromise = (promise) => promise && typeof promise.then === "function";
39
39
  var runTasks = async (tasks) => {
40
40
  for (let i = 0; i < tasks.length; i++) await tasks[i]();
41
41
  };
42
- var queueTasks = (tasks) => {
42
+ var isQwikLifecycleEvent = (eventName) => eventName.charAt(0) === "q";
43
+ var queueTasks = (tasks, eventName) => {
43
44
  if (tasks.length) {
44
45
  const run = () => runTasks(tasks);
45
- queuedTasks = queuedTasks ? queuedTasks.then(run, run) : run();
46
+ if (isQwikLifecycleEvent(eventName)) run();
47
+ else queuedTasks = queuedTasks ? queuedTasks.then(run, run) : run();
46
48
  }
47
49
  };
48
50
  var resolveContainer = (containerEl) => {
@@ -264,18 +266,18 @@ var processElementEvent = (ev, scope = elementPrefix, allowPreventDefault = true
264
266
  for (let i = elements.length - 1; i >= 0; i--) if (captureHandlers[i]) {
265
267
  dispatch(elements[i], ev, scopedKebabName, tasks, kebabName, allowPreventDefault);
266
268
  if (ev.cancelBubble) {
267
- queueTasks(tasks);
269
+ queueTasks(tasks, ev.type);
268
270
  return;
269
271
  }
270
272
  }
271
273
  for (let i = 0; i < elements.length; i++) if (!captureHandlers[i]) {
272
274
  dispatch(elements[i], ev, scopedKebabName, tasks, kebabName, allowPreventDefault);
273
275
  if (!ev.bubbles || ev.cancelBubble) {
274
- queueTasks(tasks);
276
+ queueTasks(tasks, ev.type);
275
277
  return;
276
278
  }
277
279
  }
278
- queueTasks(tasks);
280
+ queueTasks(tasks, ev.type);
279
281
  };
280
282
  var processPassiveElementEvent = (ev) => processElementEvent(ev, passiveElementPrefix, false);
281
283
  var broadcast = (scope, ev, allowPreventDefault = true) => {
@@ -287,7 +289,7 @@ var broadcast = (scope, ev, allowPreventDefault = true) => {
287
289
  const el = elements[i];
288
290
  dispatch(el, ev, scopedKebabName, tasks, kebabName, allowPreventDefault);
289
291
  }
290
- queueTasks(tasks);
292
+ queueTasks(tasks, ev.type);
291
293
  };
292
294
  /**
293
295
  * Event handler responsible for processing browser events.
@@ -328,7 +330,7 @@ var processReadyStateChange = () => {
328
330
  dispatch(el, ev, "d:qinit", tasks);
329
331
  el.removeAttribute("q-d:qinit");
330
332
  }
331
- queueTasks(tasks);
333
+ queueTasks(tasks, "qinit");
332
334
  }
333
335
  if (events.has("d:qidle")) {
334
336
  events.delete("d:qidle");
@@ -341,7 +343,7 @@ var processReadyStateChange = () => {
341
343
  dispatch(el, ev, "d:qidle", tasks);
342
344
  el.removeAttribute("q-d:qidle");
343
345
  }
344
- queueTasks(tasks);
346
+ queueTasks(tasks, "qidle");
345
347
  });
346
348
  }
347
349
  if (events.has("e:qvisible")) {
@@ -354,7 +356,7 @@ var processReadyStateChange = () => {
354
356
  dispatch(entry.target, createEvent("qvisible", entry), "e:qvisible", tasks);
355
357
  }
356
358
  }
357
- queueTasks(tasks);
359
+ queueTasks(tasks, "qvisible");
358
360
  }));
359
361
  const elements = querySelectorAll("[q-e\\:qvisible]:not([q\\:observed])");
360
362
  for (let i = 0; i < elements.length; i++) {
@@ -377,8 +379,8 @@ var addEventOrRoot = (...eventNames) => {
377
379
  const rootScope = getRootScope(scope);
378
380
  if (rootScope === windowPrefix) addEventListener(win, eventName, passive ? processPassiveWindowEvent : processWindowEvent, true, passive);
379
381
  else roots.forEach((root) => addEventListener(root, eventName, rootScope === documentPrefix ? passive ? processPassiveDocumentEvent : processDocumentEvent : passive ? processPassiveElementEvent : processElementEvent, true, passive));
380
- if (hasInitialized === 1 && (eventNameOrRoot === "e:qvisible" || eventNameOrRoot === "d:qinit" || eventNameOrRoot === "d:qidle")) processReadyStateChange();
381
382
  }
383
+ if (hasInitialized === 1 && (eventNameOrRoot === "e:qvisible" || eventNameOrRoot === "d:qinit" || eventNameOrRoot === "d:qidle")) processReadyStateChange();
382
384
  } else if (!roots.has(eventNameOrRoot)) {
383
385
  events.forEach((kebabEventName) => {
384
386
  const { scope, eventName } = parseKebabEvent(kebabEventName);
@@ -1 +1 @@
1
- var e,t,n,r=document,o=window,s="w",i="wp",a="d",c="dp",l="e",p="ep",u="capture:",d="readystatechange",f=0,h=new Set,q=new Set([r]),b=new Map,g={},m=(e,t)=>Array.from(e.querySelectorAll(t)),v=e=>{const t=[];return q.forEach(n=>t.push(...m(n,e))),t},w=(e,t,n,r=!1,o=!1)=>e.addEventListener(t,n,{capture:r,passive:o}),y=e=>{H(e);const t=m(e,"[q\\:shadowroot]");for(let e=0;e<t.length;e++){const n=t[e].shadowRoot;n&&y(n)}},A=e=>e&&"function"==typeof e.then,E=async e=>{for(let t=0;t<e.length;t++)await e[t]()},S=e=>{if(e.length){const t=()=>E(e);n=n?n.then(t,t):t()}},C=e=>{if(void 0===e._qwikjson_){let t=(e===r.documentElement?r.body:e).lastElementChild;for(;t;){if("SCRIPT"===t.tagName&&"qwik/json"===t.getAttribute("type")){e._qwikjson_=JSON.parse(t.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}t=t.previousElementSibling}}},_=e=>{g[e]=1,I(d)},k=e=>{const t=e.getAttribute("q:instance");return"paused"===e.getAttribute("q:container")&&"loading"===r.readyState&&!g[t]&&new Promise(e=>{w(r,d,()=>{("loading"!==r.readyState||g[t])&&e()})})},$=(e,t)=>new CustomEvent(e,{detail:t}),I=(e,t)=>{r.dispatchEvent($(e,t))},N=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),R=e=>e.replace(/-./g,e=>e[1].toUpperCase()),T=e=>{const t=e.indexOf(":");return{scope:e.slice(0,t),eventName:R(e.slice(t+1))}},x=e=>2===e.length,B=e=>e.charAt(0),L=e=>!!e&&1===e.nodeType,U=(e,t,n)=>e.hasAttribute(n)&&(!!e._qDispatch?.[t]||e.hasAttribute("q-"+t)),j=(e,t,n,o,s,i,a,c=!0)=>{const l={qBase:n,symbol:i,element:t,reqTime:a};if(!s){const t=(r["qFuncs_"+e.getAttribute("q:instance")]||[])[+i];if(!t&&c){const e=Error("sym:"+i);I("qerror",{importError:"sync",error:e,...l}),console.error(e)}return t}const p=`${i}|${n}|${s}`,u=b.get(p);if(u)return u;const d=new URL(s,o).href,f=import(d);return C(e),f.then(e=>{const t=e[i];if(t)b.set(p,t),I("qsymbol",l);else{const e=Error(`${i} not in ${d}`);I("qerror",{importError:"no-symbol",error:e,...l}),console.error(e)}return t},e=>{I("qerror",{importError:"async",error:e,...l}),console.error(e)})},D=(e,t,n,o,s,i=!0)=>{let a=!1;s&&(i&&e.hasAttribute("preventdefault:"+s)&&t.preventDefault(),e.hasAttribute("stoppropagation:"+s)&&t.stopPropagation());const c=e._qDispatch?.[n];if(c){if("function"==typeof c){const n=()=>c(t,e);if(a)o.push(async()=>{const e=n();A(e)&&await e});else{const e=n();A(e)&&(a=!0,o.push(()=>e))}}else if(c.length)for(let n=0;n<c.length;n++){const r=c[n];if(r){const n=()=>r(t,e);if(a)o.push(async()=>{const e=n();A(e)&&await e});else{const e=n();A(e)&&(a=!0,o.push(()=>e))}}}return}const l=e.getAttribute("q-"+n);if(l){const n=e.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),s=n.getAttribute("q:base"),i=new URL(s,r.baseURI),c=l.split("|"),p=k(n);for(let r=0;r<c.length;r++){const l=c[r],u=performance.now(),[d,f,h]=l.split("#"),q=n=>{if(n&&e.isConnected){const r=t=>{I("qerror",{error:t,qBase:s,symbol:f,element:e,reqTime:u})};try{const o=n.call(h,t,e);if(A(o))return o.catch(r)}catch(e){return r(e)}}},b=(t=!0)=>j(n,e,s,i,d,f,u,t),g=p?void 0:b();if(p)a=!0,o.push(async()=>{await p,await q(d?await b():await b(!1)||await b())});else if(A(g))a=!0,o.push(()=>g.then(q));else if(a)a=!0,o.push(async()=>{await q(g||await b())});else{const e=q(g);A(e)&&(a=!0,o.push(()=>e))}}}},O=(e,t=l,n=!0)=>{const r=N(e.type),o=t+":"+r,s=u+r,i=[],a=[],c=[];let p=e.target;for(;p;)L(p)?(i.push(p),a.push(U(p,o,s)),p=p.parentElement):p=p.parentElement;for(let t=i.length-1;t>=0;t--)if(a[t]&&(D(i[t],e,o,c,r,n),e.cancelBubble))return void S(c);for(let t=0;t<i.length;t++)if(!a[t]&&(D(i[t],e,o,c,r,n),!e.bubbles||e.cancelBubble))return void S(c);S(c)},P=e=>O(e,p,!1),F=(e,t,n=!0)=>{const r=N(t.type),o=e+":"+r,s=v("[q-"+CSS.escape(o)+"]"),i=[];for(let e=0;e<s.length;e++){const a=s[e];D(a,t,o,i,r,n)}S(i)},J=e=>{F(a,e)},M=e=>{F(c,e,!1)},Z=e=>{F(s,e)},z=e=>{F(i,e,!1)},G=()=>{const n=r.readyState;if("interactive"==n||"complete"==n){if(t=1,q.forEach(y),h.has("d:qinit")){h.delete("d:qinit");const e=$("qinit"),t=v("[q-d\\:qinit]"),n=[];for(let r=0;r<t.length;r++){const o=t[r];D(o,e,"d:qinit",n),o.removeAttribute("q-d:qinit")}S(n)}if(h.has("d:qidle")&&(h.delete("d:qidle"),(o.requestIdleCallback??o.setTimeout).bind(o)(()=>{const e=$("qidle"),t=v("[q-d\\:qidle]"),n=[];for(let r=0;r<t.length;r++){const o=t[r];D(o,e,"d:qidle",n),o.removeAttribute("q-d:qidle")}S(n)})),h.has("e:qvisible")){e||(e=new IntersectionObserver(t=>{const n=[];for(let r=0;r<t.length;r++){const o=t[r];o.isIntersecting&&(e.unobserve(o.target),D(o.target,$("qvisible",o),"e:qvisible",n))}S(n)}));const t=v("[q-e\\:qvisible]:not([q\\:observed])");for(let n=0;n<t.length;n++){const r=t[n];e.observe(r),r.setAttribute("q:observed","true")}}}},H=(...e)=>{for(let n=0;n<e.length;n++){const r=e[n];if(r===f)_(e[++n]);else if("string"==typeof r){if(!h.has(r)){h.add(r);const{scope:e,eventName:n}=T(r),i=x(e),c=B(e);c===s?w(o,n,i?z:Z,!0,i):q.forEach(e=>w(e,n,c===a?i?M:J:i?P:O,!0,i)),1!==t||"e:qvisible"!==r&&"d:qinit"!==r&&"d:qidle"!==r||G()}}else q.has(r)||(h.forEach(e=>{const{scope:t,eventName:n}=T(e),o=x(t),i=B(t);i!==s&&w(r,n,i===a?o?M:J:o?P:O,!0,o)}),q.add(r))}},K=o._qwikEv;K?.roots||(Array.isArray(K)?H(...K):H("e:click","e:input"),o._qwikEv={events:h,roots:q,push:H},w(r,d,G),G());
1
+ var e,t,n,r=document,o=window,s="w",i="wp",a="d",c="dp",l="e",p="ep",q="capture:",d="readystatechange",u=0,h=new Set,f=new Set([r]),b=new Map,g={},m=(e,t)=>Array.from(e.querySelectorAll(t)),y=e=>{const t=[];return f.forEach(n=>t.push(...m(n,e))),t},v=(e,t,n,r=!1,o=!1)=>e.addEventListener(t,n,{capture:r,passive:o}),w=e=>{K(e);const t=m(e,"[q\\:shadowroot]");for(let e=0;e<t.length;e++){const n=t[e].shadowRoot;n&&w(n)}},A=e=>e&&"function"==typeof e.then,E=async e=>{for(let t=0;t<e.length;t++)await e[t]()},S=e=>"q"===e.charAt(0),C=(e,t)=>{if(e.length){const r=()=>E(e);S(t)?r():n=n?n.then(r,r):r()}},_=e=>{if(void 0===e._qwikjson_){let t=(e===r.documentElement?r.body:e).lastElementChild;for(;t;){if("SCRIPT"===t.tagName&&"qwik/json"===t.getAttribute("type")){e._qwikjson_=JSON.parse(t.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}t=t.previousElementSibling}}},k=e=>{g[e]=1,N(d)},$=e=>{const t=e.getAttribute("q:instance");return"paused"===e.getAttribute("q:container")&&"loading"===r.readyState&&!g[t]&&new Promise(e=>{v(r,d,()=>{("loading"!==r.readyState||g[t])&&e()})})},I=(e,t)=>new CustomEvent(e,{detail:t}),N=(e,t)=>{r.dispatchEvent(I(e,t))},R=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),T=e=>e.replace(/-./g,e=>e[1].toUpperCase()),x=e=>{const t=e.indexOf(":");return{scope:e.slice(0,t),eventName:T(e.slice(t+1))}},B=e=>2===e.length,L=e=>e.charAt(0),U=e=>!!e&&1===e.nodeType,j=(e,t,n)=>e.hasAttribute(n)&&(!!e._qDispatch?.[t]||e.hasAttribute("q-"+t)),D=(e,t,n,o,s,i,a,c=!0)=>{const l={qBase:n,symbol:i,element:t,reqTime:a};if(!s){const t=(r["qFuncs_"+e.getAttribute("q:instance")]||[])[+i];if(!t&&c){const e=Error("sym:"+i);N("qerror",{importError:"sync",error:e,...l}),console.error(e)}return t}const p=`${i}|${n}|${s}`,q=b.get(p);if(q)return q;const d=new URL(s,o).href,u=import(d);return _(e),u.then(e=>{const t=e[i];if(t)b.set(p,t),N("qsymbol",l);else{const e=Error(`${i} not in ${d}`);N("qerror",{importError:"no-symbol",error:e,...l}),console.error(e)}return t},e=>{N("qerror",{importError:"async",error:e,...l}),console.error(e)})},O=(e,t,n,o,s,i=!0)=>{let a=!1;s&&(i&&e.hasAttribute("preventdefault:"+s)&&t.preventDefault(),e.hasAttribute("stoppropagation:"+s)&&t.stopPropagation());const c=e._qDispatch?.[n];if(c){if("function"==typeof c){const n=()=>c(t,e);if(a)o.push(async()=>{const e=n();A(e)&&await e});else{const e=n();A(e)&&(a=!0,o.push(()=>e))}}else if(c.length)for(let n=0;n<c.length;n++){const r=c[n];if(r){const n=()=>r(t,e);if(a)o.push(async()=>{const e=n();A(e)&&await e});else{const e=n();A(e)&&(a=!0,o.push(()=>e))}}}return}const l=e.getAttribute("q-"+n);if(l){const n=e.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),s=n.getAttribute("q:base"),i=new URL(s,r.baseURI),c=l.split("|"),p=$(n);for(let r=0;r<c.length;r++){const l=c[r],q=performance.now(),[d,u,h]=l.split("#"),f=n=>{if(n&&e.isConnected){const r=t=>{N("qerror",{error:t,qBase:s,symbol:u,element:e,reqTime:q})};try{const o=n.call(h,t,e);if(A(o))return o.catch(r)}catch(e){return r(e)}}},b=(t=!0)=>D(n,e,s,i,d,u,q,t),g=p?void 0:b();if(p)a=!0,o.push(async()=>{await p,await f(d?await b():await b(!1)||await b())});else if(A(g))a=!0,o.push(()=>g.then(f));else if(a)a=!0,o.push(async()=>{await f(g||await b())});else{const e=f(g);A(e)&&(a=!0,o.push(()=>e))}}}},P=(e,t=l,n=!0)=>{const r=R(e.type),o=t+":"+r,s=q+r,i=[],a=[],c=[];let p=e.target;for(;p;)U(p)?(i.push(p),a.push(j(p,o,s)),p=p.parentElement):p=p.parentElement;for(let t=i.length-1;t>=0;t--)if(a[t]&&(O(i[t],e,o,c,r,n),e.cancelBubble))return void C(c,e.type);for(let t=0;t<i.length;t++)if(!a[t]&&(O(i[t],e,o,c,r,n),!e.bubbles||e.cancelBubble))return void C(c,e.type);C(c,e.type)},F=e=>P(e,p,!1),J=(e,t,n=!0)=>{const r=R(t.type),o=e+":"+r,s=y("[q-"+CSS.escape(o)+"]"),i=[];for(let e=0;e<s.length;e++){const a=s[e];O(a,t,o,i,r,n)}C(i,t.type)},M=e=>{J(a,e)},Z=e=>{J(c,e,!1)},z=e=>{J(s,e)},G=e=>{J(i,e,!1)},H=()=>{const n=r.readyState;if("interactive"==n||"complete"==n){if(t=1,f.forEach(w),h.has("d:qinit")){h.delete("d:qinit");const e=I("qinit"),t=y("[q-d\\:qinit]"),n=[];for(let r=0;r<t.length;r++){const o=t[r];O(o,e,"d:qinit",n),o.removeAttribute("q-d:qinit")}C(n,"qinit")}if(h.has("d:qidle")&&(h.delete("d:qidle"),(o.requestIdleCallback??o.setTimeout).bind(o)(()=>{const e=I("qidle"),t=y("[q-d\\:qidle]"),n=[];for(let r=0;r<t.length;r++){const o=t[r];O(o,e,"d:qidle",n),o.removeAttribute("q-d:qidle")}C(n,"qidle")})),h.has("e:qvisible")){e||(e=new IntersectionObserver(t=>{const n=[];for(let r=0;r<t.length;r++){const o=t[r];o.isIntersecting&&(e.unobserve(o.target),O(o.target,I("qvisible",o),"e:qvisible",n))}C(n,"qvisible")}));const t=y("[q-e\\:qvisible]:not([q\\:observed])");for(let n=0;n<t.length;n++){const r=t[n];e.observe(r),r.setAttribute("q:observed","true")}}}},K=(...e)=>{for(let n=0;n<e.length;n++){const r=e[n];if(r===u)k(e[++n]);else if("string"==typeof r){if(!h.has(r)){h.add(r);const{scope:e,eventName:t}=x(r),n=B(e),i=L(e);i===s?v(o,t,n?G:z,!0,n):f.forEach(e=>v(e,t,i===a?n?Z:M:n?F:P,!0,n))}1!==t||"e:qvisible"!==r&&"d:qinit"!==r&&"d:qidle"!==r||H()}else f.has(r)||(h.forEach(e=>{const{scope:t,eventName:n}=x(e),o=B(t),i=L(t);i!==s&&v(r,n,i===a?o?Z:M:o?F:P,!0,o)}),f.add(r))}},Q=o._qwikEv;Q?.roots||(Array.isArray(Q)?K(...Q):K("e:click","e:input"),o._qwikEv={events:h,roots:f,push:K},v(r,d,H),H());
@@ -1,29 +1,29 @@
1
- /// <reference types="./server" />
1
+ /// <reference path="./server.d.ts" />
2
2
  declare module '@qwik-client-manifest' {
3
3
  /** @deprecated Use `getClientManifest()` instead */
4
- const manifest: import('./optimizer').QwikManifest;
4
+ const manifest: import('./optimizer.js').QwikManifest;
5
5
  export { manifest };
6
6
  }
7
7
  // MD
8
8
  declare module '*.md' {
9
- const node: import('./core').FunctionComponent;
9
+ const node: import('./core-internal.js').FunctionComponent;
10
10
  export const frontmatter: Record<string, any>;
11
11
  export default node;
12
12
  }
13
13
  // MDX
14
14
  declare module '*.mdx' {
15
- const node: import('./core').FunctionComponent;
15
+ const node: import('./core-internal.js').FunctionComponent;
16
16
  export const frontmatter: Record<string, any>;
17
17
  export default node;
18
18
  }
19
19
  // SVG ?jsx
20
20
  declare module '*.svg?jsx' {
21
- const Cmp: import('./core').FunctionComponent<import('./core').QwikIntrinsicElements['svg']>
21
+ const Cmp: import('./core-internal.js').FunctionComponent<import('./core-internal.js').QwikIntrinsicElements['svg']>
22
22
  export default Cmp;
23
23
  }
24
24
  // Image ?jsx
25
25
  declare module '*?jsx' {
26
- const Cmp: import('./core').FunctionComponent<Omit<import('./core').QwikIntrinsicElements['img'], 'src' | 'width' | 'height' | 'srcSet'>>
26
+ const Cmp: import('./core-internal.js').FunctionComponent<Omit<import('./core-internal.js').QwikIntrinsicElements['img'], 'src' | 'width' | 'height' | 'srcSet'>>
27
27
  export default Cmp;
28
28
  export const width: number;
29
29
  export const height: number;
@@ -31,7 +31,7 @@ declare module '*?jsx' {
31
31
  }
32
32
  // Image &jsx
33
33
  declare module '*&jsx' {
34
- const Cmp: import('./core').FunctionComponent<Omit<import('./core').QwikIntrinsicElements['img'], 'src' | 'width' | 'height' | 'srcSet'>>
34
+ const Cmp: import('./core-internal.js').FunctionComponent<Omit<import('./core-internal.js').QwikIntrinsicElements['img'], 'src' | 'width' | 'height' | 'srcSet'>>
35
35
  export default Cmp;
36
36
  export const width: number;
37
37
  export const height: number;
package/dist/server.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /// <reference path="./server-modules.d.ts" />
2
2
 
3
- import type { QwikManifest } from './optimizer';
4
- import { ResolvedManifest } from './optimizer';
5
- import type { ServerQwikManifest } from './optimizer';
6
- import type { SnapshotResult } from '.';
7
- import type { StreamWriter } from './internal';
8
- import type { SymbolMapperFn } from './optimizer';
3
+ import type { QwikManifest } from './optimizer.js';
4
+ import { ResolvedManifest } from './optimizer.js';
5
+ import type { ServerQwikManifest } from './optimizer.js';
6
+ import type { SnapshotResult } from './core-internal.js';
7
+ import type { StreamWriter } from './core-internal.js';
8
+ import type { SymbolMapperFn } from './optimizer.js';
9
9
 
10
10
  /** @public */
11
11
  declare interface DevJSX {
@@ -114,10 +114,10 @@ export declare interface PreloaderOptions {
114
114
  * bundles before the preloader script is active. This most likely includes the core and the
115
115
  * preloader script itself. Setting this to 0 will disable all preload links.
116
116
  *
117
- * Preload links can delay LCP, which is a Core Web Vital, but it can increase TTI, which is not a
118
- * Core Web Vital but more noticeable to the user.
117
+ * Preload links can delay LCP, which is a Core Web Vital, but they can improve TTI, which is not
118
+ * a Core Web Vital but more noticeable to the user.
119
119
  *
120
- * Defaults to `5`
120
+ * Defaults to `0`, so speculative preloading starts once the page is loaded.
121
121
  */
122
122
  ssrPreloads?: number;
123
123
  /**
@@ -193,9 +193,9 @@ export declare interface RenderOptions extends SerializeDocumentOptions {
193
193
  /** Metadata that can be retrieved during SSR with `useServerData()`. */
194
194
  serverData?: Record<string, any>;
195
195
  /**
196
- * Server-only. Projects a thrown error into the `Error` an `<ErrorBoundary>` fallback displays
197
- * during SSR; `onError$` still receives the original. It never runs on the client, where a
198
- * re-derived fallback shows the error as thrown.
196
+ * Server-only. Projects a thrown error into the `Error` a `<Catch>` fallback displays during SSR;
197
+ * `onError$` still receives the original. It never runs on the client, where a re-derived
198
+ * fallback shows the error as thrown.
199
199
  *
200
200
  * Return an `Error` to project it, or `undefined`/`null` to decline; any other return, or a
201
201
  * throw, redacts to the generic error.
@@ -230,13 +230,13 @@ export declare interface RenderToStreamOptions extends RenderOptions {
230
230
  streaming?: StreamingOptions;
231
231
  /**
232
232
  * Called synchronously just before the first chunk is written — the last moment response headers
233
- * can still change. `errorBoundaryCaught` is true when an `<ErrorBoundary>` already swapped in
234
- * its fallback during SSR.
233
+ * can still change. `hasCaughtError` is true when a `<Catch>` already swapped in its fallback
234
+ * during SSR.
235
235
  *
236
236
  * @experimental
237
237
  */
238
238
  onBeforeFirstFlush?: (info: {
239
- errorBoundaryCaught: boolean;
239
+ hasCaughtError: boolean;
240
240
  }) => void;
241
241
  }
242
242
 
@@ -245,11 +245,11 @@ export declare interface RenderToStreamResult extends RenderResult {
245
245
  flushes: number;
246
246
  size: number;
247
247
  /**
248
- * True when an `<ErrorBoundary>` caught during the render, no matter where in the stream.
248
+ * True when a `<Catch>` caught during the render, no matter where in the stream.
249
249
  *
250
250
  * @experimental
251
251
  */
252
- errorBoundaryCaught?: boolean;
252
+ hasCaughtError?: boolean;
253
253
  timing: {
254
254
  firstFlush: number;
255
255
  render: number;