@qwik.dev/core 2.0.0-beta.29 → 2.0.0-beta.30
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/backpatch/package.json +1 -1
- package/dist/build/package.json +1 -1
- package/dist/cli.mjs +2 -2
- package/dist/core-internal.d.ts +32 -184
- package/dist/core.min.mjs +2 -1
- package/dist/core.mjs +810 -340
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +3692 -3249
- package/dist/loader/index.mjs +2 -2
- package/dist/loader/package.json +1 -1
- package/dist/optimizer.d.ts +8 -224
- package/dist/optimizer.mjs +1382 -1702
- package/dist/qwikloader.debug.js +10 -3
- package/dist/qwikloader.js +1 -1
- package/dist/server.d.ts +2 -181
- package/dist/server.mjs +23 -21
- package/dist/server.prod.mjs +337 -336
- package/dist/starters/adapters/netlify-edge/package.json +2 -2
- package/dist/testing/index.d.ts +4 -1
- package/dist/testing/index.mjs +1241 -696
- package/dist/testing/package.json +1 -1
- package/handlers.mjs +1 -1
- package/package.json +5 -6
- package/public.d.ts +1 -0
- package/bindings/qwik.darwin-arm64.node +0 -0
- package/bindings/qwik.linux-x64-gnu.node +0 -0
- package/bindings/qwik.wasm.mjs +0 -464
- package/bindings/qwik.win32-x64-msvc.node +0 -0
- package/bindings/qwik_wasm_bg.wasm +0 -0
- package/dist/starters/features/playwright/playwright-report/index.html +0 -22047
package/dist/qwikloader.debug.js
CHANGED
|
@@ -58,8 +58,14 @@ const dispatch = async (element, ev, scopedKebabName, kebabName) => {
|
|
|
58
58
|
}
|
|
59
59
|
const handlers = element._qDispatch?.[scopedKebabName];
|
|
60
60
|
if (handlers) {
|
|
61
|
-
if (handlers
|
|
62
|
-
|
|
61
|
+
if (typeof handlers === "function") {
|
|
62
|
+
const result = handlers(ev, element);
|
|
63
|
+
if (isPromise(result)) {
|
|
64
|
+
await result;
|
|
65
|
+
}
|
|
66
|
+
} else if (handlers.length) {
|
|
67
|
+
for (let i = 0; i < handlers.length; i++) {
|
|
68
|
+
const handler = handlers[i];
|
|
63
69
|
const result = handler?.(ev, element);
|
|
64
70
|
if (isPromise(result)) {
|
|
65
71
|
await result;
|
|
@@ -208,7 +214,8 @@ const processReadyStateChange = () => {
|
|
|
208
214
|
}
|
|
209
215
|
};
|
|
210
216
|
const addEventOrRoot = (...eventNames) => {
|
|
211
|
-
for (
|
|
217
|
+
for (let i = 0; i < eventNames.length; i++) {
|
|
218
|
+
const eventNameOrRoot = eventNames[i];
|
|
212
219
|
if (typeof eventNameOrRoot === "string") {
|
|
213
220
|
if (!events.has(eventNameOrRoot)) {
|
|
214
221
|
events.add(eventNameOrRoot);
|
package/dist/qwikloader.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=document,t=window,o="w",
|
|
1
|
+
const e=document,t=window,o="w",n="d",r=new Set,s=new Set([e]),i=new Map;let a,c;const l=(e,t)=>Array.from(e.querySelectorAll(t)),q=e=>{const t=[];return s.forEach(o=>t.push(...l(o,e))),t},d=(e,t,o,n=!1)=>e.addEventListener(t,o,{capture:n,passive:!1}),b=e=>{_(e),l(e,"[q\\:shadowroot]").forEach(e=>{const t=e.shadowRoot;t&&b(t)})},f=e=>e&&"function"==typeof e.then,p=t=>{if(void 0===t._qwikjson_){let o=(t===e.documentElement?e.body:t).lastElementChild;for(;o;){if("SCRIPT"===o.tagName&&"qwik/json"===o.getAttribute("type")){t._qwikjson_=JSON.parse(o.textContent.replace(/\\x3C(\/?script)/gi,"<$1"));break}o=o.previousElementSibling}}},u=(e,t)=>new CustomEvent(e,{detail:t}),h=(t,o)=>{e.dispatchEvent(u(t,o))},m=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),v=e=>e.replace(/-./g,e=>e[1].toUpperCase()),w=e=>({scope:e.charAt(0),eventName:v(e.slice(2))}),y=async(t,o,n,r)=>{r&&(t.hasAttribute("preventdefault:"+r)&&o.preventDefault(),t.hasAttribute("stoppropagation:"+r)&&o.stopPropagation());const s=t._qDispatch?.[n];if(s){if("function"==typeof s){const e=s(o,t);f(e)&&await e}else if(s.length)for(let e=0;e<s.length;e++){const n=s[e],r=n?.(o,t);f(r)&&await r}return}const a=t.getAttribute("q-"+n);if(a){const n=t.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"),r=n.getAttribute("q:base"),s=new URL(r,e.baseURI);for(const c of a.split("|")){const a=performance.now(),[l,q,d]=c.split("#"),b={qBase:r,symbol:q,element:t,reqTime:a};let u,m,v;if(""===l){const t=n.getAttribute("q:instance");u=(e["qFuncs_"+t]||[])[Number.parseInt(q)],u||(m="sync",v=Error("sym:"+q))}else{const e=`${q}|${r}|${l}`;if(u=i.get(e),!u){const t=new URL(l,s).href;try{const o=import(t);p(n),u=(await o)[q],u?(i.set(e,u),h("qsymbol",b)):(m="no-symbol",v=Error(`${q} not in ${t}`))}catch(e){m="async",v=e}}}if(u){if(t.isConnected)try{const e=u.call(d,o,t);f(e)&&await e}catch(e){h("qerror",{error:e,...b})}}else h("qerror",{importError:m,error:v,...b}),console.error(v)}}},g=async e=>{const t=m(e.type),o="e:"+t;let n=e.target;for(;n&&n.getAttribute;){const r=y(n,e,o,t),s=e.bubbles&&!e.cancelBubble;f(r)&&await r,n=s&&e.bubbles&&!e.cancelBubble?n.parentElement:null}},E=(e,t)=>{const o=m(t.type),n=e+":"+o;q("[q-"+e+"\\:"+o+"]").forEach(e=>y(e,t,n,o))},A=async e=>{E(n,e)},C=e=>{E(o,e)},k=()=>{const o=e.readyState;if("interactive"==o||"complete"==o){if(c=1,s.forEach(b),r.has("d:qinit")){r.delete("d:qinit");const e=u("qinit");q("[q-d\\:qinit]").forEach(t=>{y(t,e,"d:qinit"),t.removeAttribute("q-d:qinit")})}r.has("d:qidle")&&(r.delete("d:qidle"),(t.requestIdleCallback??t.setTimeout).bind(t)(()=>{const e=u("qidle");q("[q-d\\:qidle]").forEach(t=>{y(t,e,"d:qidle"),t.removeAttribute("q-d:qidle")})})),r.has("e:qvisible")&&(a||(a=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting&&(a.unobserve(t.target),y(t.target,u("qvisible",t),"e:qvisible"))})),q("[q-e\\:qvisible]:not([q\\:observed])").forEach(e=>{a.observe(e),e.setAttribute("q:observed","true")}))}},_=(...e)=>{for(let i=0;i<e.length;i++){const a=e[i];if("string"==typeof a){if(!r.has(a)){r.add(a);const{scope:e,eventName:i}=w(a);e===o?d(t,i,C,!0):s.forEach(t=>d(t,i,e===n?A:g,!0)),1!==c||"e:qvisible"!==a&&"d:qinit"!==a&&"d:qidle"!==a||k()}}else s.has(a)||(r.forEach(e=>{const{scope:t,eventName:r}=w(e);t!==o&&d(a,r,t===n?A:g,!0)}),s.add(a))}},S=t._qwikEv;S?.roots||(Array.isArray(S)?_(...S):_("e:click","e:input"),t._qwikEv={events:r,roots:s,push:_},d(e,"readystatechange",k),k());
|
package/dist/server.d.ts
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
/// <reference path="./server-modules.d.ts" />
|
|
2
2
|
|
|
3
3
|
import type { QwikManifest } from './optimizer';
|
|
4
|
-
import
|
|
4
|
+
import { ResolvedManifest } from './optimizer';
|
|
5
5
|
import type { ServerQwikManifest } from './optimizer';
|
|
6
6
|
import type { SnapshotResult } from '.';
|
|
7
7
|
import type { StreamWriter } from './internal';
|
|
8
8
|
import type { SymbolMapperFn } from './optimizer';
|
|
9
9
|
|
|
10
|
-
/** @public */
|
|
11
|
-
declare interface ComponentEntryStrategy {
|
|
12
|
-
type: 'component';
|
|
13
|
-
manual?: Record<string, string>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
10
|
/** @public */
|
|
17
11
|
declare interface DevJSX {
|
|
18
12
|
fileName: string;
|
|
@@ -21,9 +15,6 @@ declare interface DevJSX {
|
|
|
21
15
|
stack?: string;
|
|
22
16
|
}
|
|
23
17
|
|
|
24
|
-
/** @public */
|
|
25
|
-
declare type EntryStrategy = InlineEntryStrategy | HoistEntryStrategy | SingleEntryStrategy | HookEntryStrategy | SegmentEntryStrategy | ComponentEntryStrategy | SmartEntryStrategy;
|
|
26
|
-
|
|
27
18
|
/**
|
|
28
19
|
* Any function taking a props object that returns JSXOutput.
|
|
29
20
|
*
|
|
@@ -64,31 +55,6 @@ export declare function getQwikPrefetchWorkerScript(opts?: {
|
|
|
64
55
|
debug?: boolean;
|
|
65
56
|
}): string;
|
|
66
57
|
|
|
67
|
-
/** @public */
|
|
68
|
-
declare interface GlobalInjections {
|
|
69
|
-
tag: string;
|
|
70
|
-
attributes?: {
|
|
71
|
-
[key: string]: string;
|
|
72
|
-
};
|
|
73
|
-
location: 'head' | 'body';
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** @public */
|
|
77
|
-
declare interface HoistEntryStrategy {
|
|
78
|
-
type: 'hoist';
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/** @deprecated Use SegmentStrategy instead */
|
|
82
|
-
declare interface HookEntryStrategy {
|
|
83
|
-
type: 'hook';
|
|
84
|
-
manual?: Record<string, string>;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/** @public */
|
|
88
|
-
declare interface InlineEntryStrategy {
|
|
89
|
-
type: 'inline';
|
|
90
|
-
}
|
|
91
|
-
|
|
92
58
|
/** @public */
|
|
93
59
|
export declare interface InOrderAuto {
|
|
94
60
|
strategy: 'auto';
|
|
@@ -208,42 +174,6 @@ export declare interface PreloaderOptions {
|
|
|
208
174
|
preloadProbability?: number;
|
|
209
175
|
}
|
|
210
176
|
|
|
211
|
-
/** @public */
|
|
212
|
-
declare interface QwikAsset {
|
|
213
|
-
/** Name of the asset */
|
|
214
|
-
name: string | undefined;
|
|
215
|
-
/** Size of the asset */
|
|
216
|
-
size: number;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/** @public */
|
|
220
|
-
declare interface QwikBundle {
|
|
221
|
-
/** Size of the bundle */
|
|
222
|
-
size: number;
|
|
223
|
-
/** Total size of this bundle's static import graph */
|
|
224
|
-
total: number;
|
|
225
|
-
/** Interactivity score of the bundle */
|
|
226
|
-
interactivity?: number;
|
|
227
|
-
/** Symbols in the bundle */
|
|
228
|
-
symbols?: string[];
|
|
229
|
-
/** Direct imports */
|
|
230
|
-
imports?: string[];
|
|
231
|
-
/** Dynamic imports */
|
|
232
|
-
dynamicImports?: string[];
|
|
233
|
-
/** Source files of the bundle */
|
|
234
|
-
origins?: string[];
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Bundle graph.
|
|
239
|
-
*
|
|
240
|
-
* Format: [ 'bundle-a.js', 3, 5 // Depends on 'bundle-b.js' and 'bundle-c.js' 'bundle-b.js', 5, //
|
|
241
|
-
* Depends on 'bundle-c.js' 'bundle-c.js', ]
|
|
242
|
-
*
|
|
243
|
-
* @public
|
|
244
|
-
*/
|
|
245
|
-
declare type QwikBundleGraph = Array<string | number>;
|
|
246
|
-
|
|
247
177
|
/** @public */
|
|
248
178
|
export declare type QwikLoaderOptions = 'module' | 'inline' | 'never' | {
|
|
249
179
|
/** @deprecated No longer used. */
|
|
@@ -252,79 +182,6 @@ export declare type QwikLoaderOptions = 'module' | 'inline' | 'never' | {
|
|
|
252
182
|
position?: 'top' | 'bottom';
|
|
253
183
|
};
|
|
254
184
|
|
|
255
|
-
/**
|
|
256
|
-
* The metadata of the build. One of its uses is storing where QRL symbols are located.
|
|
257
|
-
*
|
|
258
|
-
* @public
|
|
259
|
-
*/
|
|
260
|
-
declare interface QwikManifest_2 {
|
|
261
|
-
/** Content hash of the manifest, if this changes, the code changed */
|
|
262
|
-
manifestHash: string;
|
|
263
|
-
/** QRL symbols */
|
|
264
|
-
symbols: {
|
|
265
|
-
[symbolName: string]: QwikSymbol;
|
|
266
|
-
};
|
|
267
|
-
/** Where QRLs are located. The key is the symbol name, the value is the bundle fileName */
|
|
268
|
-
mapping: {
|
|
269
|
-
[symbolName: string]: string;
|
|
270
|
-
};
|
|
271
|
-
/**
|
|
272
|
-
* All code bundles, used to know the import graph. The key is the bundle fileName relative to
|
|
273
|
-
* "build/"
|
|
274
|
-
*/
|
|
275
|
-
bundles: {
|
|
276
|
-
[fileName: string]: QwikBundle;
|
|
277
|
-
};
|
|
278
|
-
/** All assets. The key is the fileName relative to the rootDir */
|
|
279
|
-
assets?: {
|
|
280
|
-
[fileName: string]: QwikAsset;
|
|
281
|
-
};
|
|
282
|
-
/** All bundles in a compact graph format with probabilities */
|
|
283
|
-
bundleGraph?: QwikBundleGraph;
|
|
284
|
-
/** The bundle graph fileName */
|
|
285
|
-
bundleGraphAsset?: string;
|
|
286
|
-
/** The preloader bundle fileName */
|
|
287
|
-
preloader?: string;
|
|
288
|
-
/** The Qwik core bundle fileName */
|
|
289
|
-
core?: string;
|
|
290
|
-
/** The Qwik loader bundle fileName */
|
|
291
|
-
qwikLoader?: string;
|
|
292
|
-
/** CSS etc to inject in the document head */
|
|
293
|
-
injections?: GlobalInjections[];
|
|
294
|
-
/** The version of the manifest */
|
|
295
|
-
version: string;
|
|
296
|
-
/** The options used to build the manifest */
|
|
297
|
-
options?: {
|
|
298
|
-
target?: string;
|
|
299
|
-
buildMode?: string;
|
|
300
|
-
entryStrategy?: {
|
|
301
|
-
type: EntryStrategy['type'];
|
|
302
|
-
};
|
|
303
|
-
};
|
|
304
|
-
/** The platform used to build the manifest */
|
|
305
|
-
platform?: {
|
|
306
|
-
[name: string]: string;
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/** @public */
|
|
311
|
-
declare interface QwikSymbol {
|
|
312
|
-
origin: string;
|
|
313
|
-
displayName: string;
|
|
314
|
-
hash: string;
|
|
315
|
-
canonicalFilename: string;
|
|
316
|
-
ctxKind: 'function' | 'eventHandler';
|
|
317
|
-
ctxName: string;
|
|
318
|
-
/** Whether the symbol captures a variable */
|
|
319
|
-
captures: boolean;
|
|
320
|
-
parent: string | null;
|
|
321
|
-
loc: [number, number];
|
|
322
|
-
/** The parameter names if it's a function with parameters */
|
|
323
|
-
paramNames?: string[];
|
|
324
|
-
/** The transformed names of scoped variables, if any */
|
|
325
|
-
captureNames?: string[];
|
|
326
|
-
}
|
|
327
|
-
|
|
328
185
|
/** @public */
|
|
329
186
|
export declare type Render = RenderToString | RenderToStream;
|
|
330
187
|
|
|
@@ -433,26 +290,12 @@ export declare interface RenderToStringResult extends RenderResult {
|
|
|
433
290
|
};
|
|
434
291
|
}
|
|
435
292
|
|
|
436
|
-
/** @public */
|
|
437
|
-
declare interface ResolvedManifest_2 {
|
|
438
|
-
mapper: SymbolMapper;
|
|
439
|
-
manifest: ServerQwikManifest_2;
|
|
440
|
-
injections?: GlobalInjections[];
|
|
441
|
-
bundleGraph?: QwikBundleGraph;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
293
|
/**
|
|
445
294
|
* Merges a given manifest with the built manifest and provides mappings for symbols.
|
|
446
295
|
*
|
|
447
296
|
* @public
|
|
448
297
|
*/
|
|
449
|
-
export declare function resolveManifest(manifest?: Partial<QwikManifest |
|
|
450
|
-
|
|
451
|
-
/** @public */
|
|
452
|
-
declare interface SegmentEntryStrategy {
|
|
453
|
-
type: 'segment';
|
|
454
|
-
manual?: Record<string, string>;
|
|
455
|
-
}
|
|
298
|
+
export declare function resolveManifest(manifest?: Partial<QwikManifest | ResolvedManifest> | undefined): ResolvedManifest | undefined;
|
|
456
299
|
|
|
457
300
|
/** @public */
|
|
458
301
|
export declare interface SerializeDocumentOptions {
|
|
@@ -461,13 +304,6 @@ export declare interface SerializeDocumentOptions {
|
|
|
461
304
|
debug?: boolean;
|
|
462
305
|
}
|
|
463
306
|
|
|
464
|
-
/**
|
|
465
|
-
* The manifest values that are needed for SSR.
|
|
466
|
-
*
|
|
467
|
-
* @public
|
|
468
|
-
*/
|
|
469
|
-
declare type ServerQwikManifest_2 = Pick<QwikManifest_2, 'manifestHash' | 'injections' | 'bundleGraph' | 'bundleGraphAsset' | 'mapping' | 'preloader' | 'core' | 'qwikLoader'>;
|
|
470
|
-
|
|
471
307
|
/** @public */
|
|
472
308
|
export declare function setServerPlatform(manifest?: Partial<QwikManifest | ResolvedManifest>): Promise<void>;
|
|
473
309
|
|
|
@@ -495,26 +331,11 @@ declare interface Signal<T = any> {
|
|
|
495
331
|
trigger(): void;
|
|
496
332
|
}
|
|
497
333
|
|
|
498
|
-
/** @public */
|
|
499
|
-
declare interface SingleEntryStrategy {
|
|
500
|
-
type: 'single';
|
|
501
|
-
manual?: Record<string, string>;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
/** @public */
|
|
505
|
-
declare interface SmartEntryStrategy {
|
|
506
|
-
type: 'smart';
|
|
507
|
-
manual?: Record<string, string>;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
334
|
/** @public */
|
|
511
335
|
export declare interface StreamingOptions {
|
|
512
336
|
inOrder?: InOrderStreaming;
|
|
513
337
|
}
|
|
514
338
|
|
|
515
|
-
/** @public */
|
|
516
|
-
declare type SymbolMapper = Record<string, readonly [symbol: string, chunk: string]>;
|
|
517
|
-
|
|
518
339
|
/**
|
|
519
340
|
* Auto: Prefetch all possible QRLs used by the document. Default
|
|
520
341
|
*
|
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.30-dev+5421ed4
|
|
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
|
|
@@ -23,7 +23,6 @@ import { isDev } from "@qwik.dev/core/build";
|
|
|
23
23
|
var g = globalThis;
|
|
24
24
|
var qDev = g.qDev !== false;
|
|
25
25
|
var qInspector = g.qInspector === true;
|
|
26
|
-
var qSerialize = g.qSerialize !== false;
|
|
27
26
|
var qDynamicPlatform = g.qDynamicPlatform !== false;
|
|
28
27
|
var qTest = g.qTest === true;
|
|
29
28
|
var qRuntimeQrl = g.qRuntimeQrl === true;
|
|
@@ -1094,8 +1093,8 @@ if (isBrowser3) {
|
|
|
1094
1093
|
document.addEventListener("qsymbol", (ev) => {
|
|
1095
1094
|
const { symbol, href } = ev.detail;
|
|
1096
1095
|
if (href) {
|
|
1097
|
-
const
|
|
1098
|
-
preload(
|
|
1096
|
+
const hash = symbol.slice(symbol.lastIndexOf("_") + 1);
|
|
1097
|
+
preload(hash, 1);
|
|
1099
1098
|
}
|
|
1100
1099
|
});
|
|
1101
1100
|
}
|
|
@@ -1124,8 +1123,8 @@ var PAREN_CLOSE = ")";
|
|
|
1124
1123
|
var COMMA = ",";
|
|
1125
1124
|
|
|
1126
1125
|
// packages/qwik/src/server/platform.ts
|
|
1127
|
-
var getDevSegmentPath = (mapper,
|
|
1128
|
-
const existing = mapper?.[
|
|
1126
|
+
var getDevSegmentPath = (mapper, hash, symbolName, parent) => {
|
|
1127
|
+
const existing = mapper?.[hash];
|
|
1129
1128
|
if (existing) {
|
|
1130
1129
|
return existing;
|
|
1131
1130
|
}
|
|
@@ -1146,13 +1145,13 @@ function createPlatform(opts, resolvedManifest) {
|
|
|
1146
1145
|
const mapper = resolvedManifest?.mapper;
|
|
1147
1146
|
const mapperFn = opts.symbolMapper ? opts.symbolMapper : (symbolName, _chunk, parent) => {
|
|
1148
1147
|
if (mapper || isDev5 && import.meta.env.MODE !== "test") {
|
|
1149
|
-
const
|
|
1150
|
-
const result = !isDev5 ? mapper[
|
|
1148
|
+
const hash = getSymbolHash(symbolName);
|
|
1149
|
+
const result = !isDev5 ? mapper[hash] : getDevSegmentPath(mapper, hash, symbolName, parent);
|
|
1151
1150
|
if (!result) {
|
|
1152
|
-
if (
|
|
1153
|
-
return [
|
|
1151
|
+
if (hash === SYNC_QRL) {
|
|
1152
|
+
return [hash, ""];
|
|
1154
1153
|
}
|
|
1155
|
-
const isRegistered = globalThis.__qwik_reg_symbols?.has(
|
|
1154
|
+
const isRegistered = globalThis.__qwik_reg_symbols?.has(hash);
|
|
1156
1155
|
if (isRegistered) {
|
|
1157
1156
|
return [symbolName, "_"];
|
|
1158
1157
|
}
|
|
@@ -1164,8 +1163,8 @@ function createPlatform(opts, resolvedManifest) {
|
|
|
1164
1163
|
const serverPlatform = {
|
|
1165
1164
|
isServer: true,
|
|
1166
1165
|
async importSymbol(_containerEl, url, symbolName) {
|
|
1167
|
-
const
|
|
1168
|
-
const regSym = globalThis.__qwik_reg_symbols?.get(
|
|
1166
|
+
const hash = getSymbolHash(symbolName);
|
|
1167
|
+
const regSym = globalThis.__qwik_reg_symbols?.get(hash);
|
|
1169
1168
|
if (regSym) {
|
|
1170
1169
|
return regSym;
|
|
1171
1170
|
}
|
|
@@ -1219,7 +1218,7 @@ function getBuildBase(opts) {
|
|
|
1219
1218
|
return `${import.meta.env.BASE_URL || "/"}build/`;
|
|
1220
1219
|
}
|
|
1221
1220
|
var versions = {
|
|
1222
|
-
qwik: "2.0.0-beta.
|
|
1221
|
+
qwik: "2.0.0-beta.30-dev+5421ed4",
|
|
1223
1222
|
qwikDom: "2.1.19"
|
|
1224
1223
|
};
|
|
1225
1224
|
|
|
@@ -1485,8 +1484,8 @@ var preLoaderOptionsDefault = {
|
|
|
1485
1484
|
};
|
|
1486
1485
|
|
|
1487
1486
|
// packages/qwik/src/server/scripts.ts
|
|
1488
|
-
var QWIK_LOADER_DEFAULT_MINIFIED = 'const e=document,t=window,o="w",
|
|
1489
|
-
var QWIK_LOADER_DEFAULT_DEBUG = 'const doc = document;\nconst win = window;\nconst windowPrefix = "w";\nconst documentPrefix = "d";\nconst events = /* @__PURE__ */ new Set();\nconst roots = /* @__PURE__ */ new Set([doc]);\nconst symbols = /* @__PURE__ */ new Map();\nlet observer;\nlet hasInitialized;\nconst nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\nconst querySelectorAll = (query) => {\n const elements = [];\n roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));\n return elements;\n};\nconst addEventListener = (el, eventName, handler, capture = false) => el.addEventListener(eventName, handler, { capture, passive: false });\nconst findShadowRoots = (fragment) => {\n addEventOrRoot(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent) => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n });\n};\nconst isPromise = (promise) => promise && typeof promise.then === "function";\nconst resolveContainer = (containerEl) => {\n if (containerEl._qwikjson_ === void 0) {\n const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;\n let script = parentJSON.lastElementChild;\n while (script) {\n if (script.tagName === "SCRIPT" && script.getAttribute("type") === "qwik/json") {\n containerEl._qwikjson_ = JSON.parse(\n script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1")\n );\n break;\n }\n script = script.previousElementSibling;\n }\n }\n};\nconst createEvent = (eventName, detail) => new CustomEvent(eventName, { detail });\nconst emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n};\nconst camelToKebab = (str) => str.replace(/([A-Z-])/g, (a) => "-" + a.toLowerCase());\nconst kebabToCamel = (eventName) => eventName.replace(/-./g, (a) => a[1].toUpperCase());\nconst parseKebabEvent = (event) => ({\n scope: event.charAt(0),\n eventName: kebabToCamel(event.slice(2))\n});\nconst dispatch = async (element, ev, scopedKebabName, kebabName) => {\n if (kebabName) {\n if (element.hasAttribute("preventdefault:" + kebabName)) {\n ev.preventDefault();\n }\n if (element.hasAttribute("stoppropagation:" + kebabName)) {\n ev.stopPropagation();\n }\n }\n const handlers = element._qDispatch?.[scopedKebabName];\n if (handlers) {\n if (handlers.length) {\n for (
|
|
1487
|
+
var QWIK_LOADER_DEFAULT_MINIFIED = 'const e=document,t=window,o="w",n="d",r=new Set,s=new Set([e]),i=new Map;let a,c;const l=(e,t)=>Array.from(e.querySelectorAll(t)),q=e=>{const t=[];return s.forEach(o=>t.push(...l(o,e))),t},d=(e,t,o,n=!1)=>e.addEventListener(t,o,{capture:n,passive:!1}),b=e=>{_(e),l(e,"[q\\\\:shadowroot]").forEach(e=>{const t=e.shadowRoot;t&&b(t)})},f=e=>e&&"function"==typeof e.then,p=t=>{if(void 0===t._qwikjson_){let o=(t===e.documentElement?e.body:t).lastElementChild;for(;o;){if("SCRIPT"===o.tagName&&"qwik/json"===o.getAttribute("type")){t._qwikjson_=JSON.parse(o.textContent.replace(/\\\\x3C(\\/?script)/gi,"<$1"));break}o=o.previousElementSibling}}},u=(e,t)=>new CustomEvent(e,{detail:t}),h=(t,o)=>{e.dispatchEvent(u(t,o))},m=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),v=e=>e.replace(/-./g,e=>e[1].toUpperCase()),w=e=>({scope:e.charAt(0),eventName:v(e.slice(2))}),y=async(t,o,n,r)=>{r&&(t.hasAttribute("preventdefault:"+r)&&o.preventDefault(),t.hasAttribute("stoppropagation:"+r)&&o.stopPropagation());const s=t._qDispatch?.[n];if(s){if("function"==typeof s){const e=s(o,t);f(e)&&await e}else if(s.length)for(let e=0;e<s.length;e++){const n=s[e],r=n?.(o,t);f(r)&&await r}return}const a=t.getAttribute("q-"+n);if(a){const n=t.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),r=n.getAttribute("q:base"),s=new URL(r,e.baseURI);for(const c of a.split("|")){const a=performance.now(),[l,q,d]=c.split("#"),b={qBase:r,symbol:q,element:t,reqTime:a};let u,m,v;if(""===l){const t=n.getAttribute("q:instance");u=(e["qFuncs_"+t]||[])[Number.parseInt(q)],u||(m="sync",v=Error("sym:"+q))}else{const e=`${q}|${r}|${l}`;if(u=i.get(e),!u){const t=new URL(l,s).href;try{const o=import(t);p(n),u=(await o)[q],u?(i.set(e,u),h("qsymbol",b)):(m="no-symbol",v=Error(`${q} not in ${t}`))}catch(e){m="async",v=e}}}if(u){if(t.isConnected)try{const e=u.call(d,o,t);f(e)&&await e}catch(e){h("qerror",{error:e,...b})}}else h("qerror",{importError:m,error:v,...b}),console.error(v)}}},g=async e=>{const t=m(e.type),o="e:"+t;let n=e.target;for(;n&&n.getAttribute;){const r=y(n,e,o,t),s=e.bubbles&&!e.cancelBubble;f(r)&&await r,n=s&&e.bubbles&&!e.cancelBubble?n.parentElement:null}},E=(e,t)=>{const o=m(t.type),n=e+":"+o;q("[q-"+e+"\\\\:"+o+"]").forEach(e=>y(e,t,n,o))},A=async e=>{E(n,e)},C=e=>{E(o,e)},k=()=>{const o=e.readyState;if("interactive"==o||"complete"==o){if(c=1,s.forEach(b),r.has("d:qinit")){r.delete("d:qinit");const e=u("qinit");q("[q-d\\\\:qinit]").forEach(t=>{y(t,e,"d:qinit"),t.removeAttribute("q-d:qinit")})}r.has("d:qidle")&&(r.delete("d:qidle"),(t.requestIdleCallback??t.setTimeout).bind(t)(()=>{const e=u("qidle");q("[q-d\\\\:qidle]").forEach(t=>{y(t,e,"d:qidle"),t.removeAttribute("q-d:qidle")})})),r.has("e:qvisible")&&(a||(a=new IntersectionObserver(e=>{for(const t of e)t.isIntersecting&&(a.unobserve(t.target),y(t.target,u("qvisible",t),"e:qvisible"))})),q("[q-e\\\\:qvisible]:not([q\\\\:observed])").forEach(e=>{a.observe(e),e.setAttribute("q:observed","true")}))}},_=(...e)=>{for(let i=0;i<e.length;i++){const a=e[i];if("string"==typeof a){if(!r.has(a)){r.add(a);const{scope:e,eventName:i}=w(a);e===o?d(t,i,C,!0):s.forEach(t=>d(t,i,e===n?A:g,!0)),1!==c||"e:qvisible"!==a&&"d:qinit"!==a&&"d:qidle"!==a||k()}}else s.has(a)||(r.forEach(e=>{const{scope:t,eventName:r}=w(e);t!==o&&d(a,r,t===n?A:g,!0)}),s.add(a))}},S=t._qwikEv;S?.roots||(Array.isArray(S)?_(...S):_("e:click","e:input"),t._qwikEv={events:r,roots:s,push:_},d(e,"readystatechange",k),k())';
|
|
1488
|
+
var QWIK_LOADER_DEFAULT_DEBUG = 'const doc = document;\nconst win = window;\nconst windowPrefix = "w";\nconst documentPrefix = "d";\nconst events = /* @__PURE__ */ new Set();\nconst roots = /* @__PURE__ */ new Set([doc]);\nconst symbols = /* @__PURE__ */ new Map();\nlet observer;\nlet hasInitialized;\nconst nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\nconst querySelectorAll = (query) => {\n const elements = [];\n roots.forEach((root) => elements.push(...nativeQuerySelectorAll(root, query)));\n return elements;\n};\nconst addEventListener = (el, eventName, handler, capture = false) => el.addEventListener(eventName, handler, { capture, passive: false });\nconst findShadowRoots = (fragment) => {\n addEventOrRoot(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent) => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n });\n};\nconst isPromise = (promise) => promise && typeof promise.then === "function";\nconst resolveContainer = (containerEl) => {\n if (containerEl._qwikjson_ === void 0) {\n const parentJSON = containerEl === doc.documentElement ? doc.body : containerEl;\n let script = parentJSON.lastElementChild;\n while (script) {\n if (script.tagName === "SCRIPT" && script.getAttribute("type") === "qwik/json") {\n containerEl._qwikjson_ = JSON.parse(\n script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1")\n );\n break;\n }\n script = script.previousElementSibling;\n }\n }\n};\nconst createEvent = (eventName, detail) => new CustomEvent(eventName, { detail });\nconst emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n};\nconst camelToKebab = (str) => str.replace(/([A-Z-])/g, (a) => "-" + a.toLowerCase());\nconst kebabToCamel = (eventName) => eventName.replace(/-./g, (a) => a[1].toUpperCase());\nconst parseKebabEvent = (event) => ({\n scope: event.charAt(0),\n eventName: kebabToCamel(event.slice(2))\n});\nconst dispatch = async (element, ev, scopedKebabName, kebabName) => {\n if (kebabName) {\n if (element.hasAttribute("preventdefault:" + kebabName)) {\n ev.preventDefault();\n }\n if (element.hasAttribute("stoppropagation:" + kebabName)) {\n ev.stopPropagation();\n }\n }\n const handlers = element._qDispatch?.[scopedKebabName];\n if (handlers) {\n if (typeof handlers === "function") {\n const result = handlers(ev, element);\n if (isPromise(result)) {\n await result;\n }\n } else if (handlers.length) {\n for (let i = 0; i < handlers.length; i++) {\n const handler = handlers[i];\n const result = handler?.(ev, element);\n if (isPromise(result)) {\n await result;\n }\n }\n }\n return;\n }\n const attrValue = element.getAttribute("q-" + scopedKebabName);\n if (attrValue) {\n const container = element.closest(\n "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"\n );\n const qBase = container.getAttribute("q:base");\n const base = new URL(qBase, doc.baseURI);\n for (const qrl of attrValue.split("|")) {\n const reqTime = performance.now();\n const [chunk, symbol, capturedIds] = qrl.split("#");\n const eventData = {\n qBase,\n symbol,\n element,\n reqTime\n };\n let handler;\n let importError;\n let error;\n if (chunk === "") {\n const hash = container.getAttribute("q:instance");\n handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];\n if (!handler) {\n importError = "sync";\n error = new Error("sym:" + symbol);\n }\n } else {\n const key = `${symbol}|${qBase}|${chunk}`;\n handler = symbols.get(key);\n if (!handler) {\n const href = new URL(chunk, base).href;\n try {\n const module = import(\n href\n );\n resolveContainer(container);\n handler = (await module)[symbol];\n if (!handler) {\n importError = "no-symbol";\n error = new Error(`${symbol} not in ${href}`);\n } else {\n symbols.set(key, handler);\n emitEvent("qsymbol", eventData);\n }\n } catch (err) {\n importError = "async";\n error = err;\n }\n }\n }\n if (!handler) {\n emitEvent("qerror", {\n importError,\n error,\n ...eventData\n });\n console.error(error);\n continue;\n }\n if (element.isConnected) {\n try {\n const result = handler.call(capturedIds, ev, element);\n if (isPromise(result)) {\n await result;\n }\n } catch (error2) {\n emitEvent("qerror", { error: error2, ...eventData });\n }\n }\n }\n }\n};\nconst processElementEvent = async (ev) => {\n const kebabName = camelToKebab(ev.type);\n const scopedKebabName = "e:" + kebabName;\n let element = ev.target;\n while (element && element.getAttribute) {\n const results = dispatch(element, ev, scopedKebabName, kebabName);\n const doBubble = ev.bubbles && !ev.cancelBubble;\n if (isPromise(results)) {\n await results;\n }\n element = doBubble && ev.bubbles && !ev.cancelBubble ? element.parentElement : null;\n }\n};\nconst broadcast = (infix, ev) => {\n const kebabName = camelToKebab(ev.type);\n const scopedKebabName = infix + ":" + kebabName;\n querySelectorAll("[q-" + infix + "\\\\:" + kebabName + "]").forEach(\n (el) => dispatch(el, ev, scopedKebabName, kebabName)\n );\n};\nconst processDocumentEvent = async (ev) => {\n broadcast(documentPrefix, ev);\n};\nconst processWindowEvent = (ev) => {\n broadcast(windowPrefix, ev);\n};\nconst processReadyStateChange = () => {\n const readyState = doc.readyState;\n if (readyState == "interactive" || readyState == "complete") {\n hasInitialized = 1;\n roots.forEach(findShadowRoots);\n if (events.has("d:qinit")) {\n events.delete("d:qinit");\n const ev = createEvent("qinit");\n querySelectorAll("[q-d\\\\:qinit]").forEach((el) => {\n dispatch(el, ev, "d:qinit");\n el.removeAttribute("q-d:qinit");\n });\n }\n if (events.has("d:qidle")) {\n events.delete("d:qidle");\n const riC = win.requestIdleCallback ?? win.setTimeout;\n riC.bind(win)(() => {\n const ev = createEvent("qidle");\n querySelectorAll("[q-d\\\\:qidle]").forEach((el) => {\n dispatch(el, ev, "d:qidle");\n el.removeAttribute("q-d:qidle");\n });\n });\n }\n if (events.has("e:qvisible")) {\n observer || (observer = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, createEvent("qvisible", entry), "e:qvisible");\n }\n }\n }));\n querySelectorAll("[q-e\\\\:qvisible]:not([q\\\\:observed])").forEach((el) => {\n observer.observe(el);\n el.setAttribute("q:observed", "true");\n });\n }\n }\n};\nconst addEventOrRoot = (...eventNames) => {\n for (let i = 0; i < eventNames.length; i++) {\n const eventNameOrRoot = eventNames[i];\n if (typeof eventNameOrRoot === "string") {\n if (!events.has(eventNameOrRoot)) {\n events.add(eventNameOrRoot);\n const { scope, eventName } = parseKebabEvent(eventNameOrRoot);\n if (scope === windowPrefix) {\n addEventListener(win, eventName, processWindowEvent, true);\n } else {\n roots.forEach(\n (root) => addEventListener(\n root,\n eventName,\n scope === documentPrefix ? processDocumentEvent : processElementEvent,\n true\n )\n );\n }\n if (hasInitialized === 1 && (eventNameOrRoot === "e:qvisible" || eventNameOrRoot === "d:qinit" || eventNameOrRoot === "d:qidle")) {\n processReadyStateChange();\n }\n }\n } else {\n if (!roots.has(eventNameOrRoot)) {\n events.forEach((kebabEventName) => {\n const { scope, eventName } = parseKebabEvent(kebabEventName);\n if (scope !== windowPrefix) {\n addEventListener(\n eventNameOrRoot,\n eventName,\n scope === documentPrefix ? processDocumentEvent : processElementEvent,\n true\n );\n }\n });\n roots.add(eventNameOrRoot);\n }\n }\n }\n};\nconst _qwikEv = win._qwikEv;\nif (!_qwikEv?.roots) {\n if (Array.isArray(_qwikEv)) {\n addEventOrRoot(..._qwikEv);\n } else {\n addEventOrRoot("e:click", "e:input");\n }\n win._qwikEv = {\n events,\n roots,\n push: addEventOrRoot\n };\n addEventListener(doc, "readystatechange", processReadyStateChange);\n processReadyStateChange();\n}';
|
|
1490
1489
|
var QWIK_BACKPATCH_EXECUTOR_MINIFIED = `const t='script[type="qwik/backpatch"]',e=document.currentScript;if(e){const o=e.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");if(o){const e=o.querySelector(t);if(e){const t=JSON.parse(e.textContent||"[]"),n=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let r=n.currentNode,c=r.hasAttribute(":")?0:-1;for(let e=0;e<t.length;e+=3){const o=t[e],i=t[e+1];let s=t[e+2];for(;c<o&&(r=n.nextNode(),r);)r.hasAttribute(":")&&c++;const l=r;null==s||!1===s?l.removeAttribute(i):("boolean"==typeof s&&(s=""),l.setAttribute(i,s))}}}}`;
|
|
1491
1490
|
var QWIK_BACKPATCH_EXECUTOR_DEBUG = `const BACKPATCH_DATA_SELECTOR = 'script[type="qwik/backpatch"]';
|
|
1492
1491
|
const executorScript = document.currentScript;
|
|
@@ -2208,7 +2207,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2208
2207
|
componentStack = [];
|
|
2209
2208
|
cleanupQueue = [];
|
|
2210
2209
|
emitContainerDataFrame = null;
|
|
2211
|
-
$instanceHash$ =
|
|
2210
|
+
$instanceHash$ = randomStr();
|
|
2212
2211
|
// Temporary flag to find missing roots after the state was serialized
|
|
2213
2212
|
$noMoreRoots$ = false;
|
|
2214
2213
|
qlInclude;
|
|
@@ -2263,12 +2262,15 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2263
2262
|
}
|
|
2264
2263
|
async render(jsx) {
|
|
2265
2264
|
this.openContainer();
|
|
2266
|
-
await
|
|
2265
|
+
await this.renderJSX(jsx, {
|
|
2267
2266
|
currentStyleScoped: null,
|
|
2268
2267
|
parentComponentFrame: this.getComponentFrame()
|
|
2269
2268
|
});
|
|
2270
2269
|
await this.closeContainer();
|
|
2271
2270
|
}
|
|
2271
|
+
async renderJSX(jsx, options) {
|
|
2272
|
+
await _walkJSX(this, jsx, options);
|
|
2273
|
+
}
|
|
2272
2274
|
setContext(host, context, value) {
|
|
2273
2275
|
const ssrNode = host;
|
|
2274
2276
|
let ctx = ssrNode.getProp(QCtxAttr);
|
|
@@ -2511,7 +2513,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2511
2513
|
lastNode.vnodeData[0] |= 16 /* SERIALIZE */;
|
|
2512
2514
|
}
|
|
2513
2515
|
componentFrame.componentNode.setProp(slotName, lastNode.id);
|
|
2514
|
-
await
|
|
2516
|
+
await this.renderJSX(children, {
|
|
2515
2517
|
currentStyleScoped: scopedStyleId,
|
|
2516
2518
|
parentComponentFrame: componentFrame.projectionComponentFrame
|
|
2517
2519
|
});
|
|
@@ -3108,8 +3110,8 @@ function isSSRUnsafeAttr(name) {
|
|
|
3108
3110
|
}
|
|
3109
3111
|
return false;
|
|
3110
3112
|
}
|
|
3111
|
-
function
|
|
3112
|
-
return Math.random().toString(36).slice(2);
|
|
3113
|
+
function randomStr() {
|
|
3114
|
+
return (Math.random().toString(36) + "000000").slice(2, 8);
|
|
3113
3115
|
}
|
|
3114
3116
|
function addPreventDefaultEventToSerializationContext(serializationCtx, key) {
|
|
3115
3117
|
const eventName = "e" + key.substring(14);
|