@qwik.dev/core 2.0.0-beta.16 → 2.0.0-beta.17
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 +61 -123
- package/dist/core.min.mjs +1 -1
- package/dist/core.mjs +5941 -6110
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +3273 -3305
- package/dist/loader/package.json +1 -1
- package/dist/optimizer.mjs +1 -1
- package/dist/server.mjs +447 -414
- package/dist/testing/index.d.ts +27 -263
- package/dist/testing/index.mjs +4807 -4966
- package/dist/testing/package.json +1 -1
- package/package.json +3 -3
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.17-dev+c34c237
|
|
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
|
|
@@ -195,7 +195,7 @@ See https://qwik.dev/docs/core/tasks/#use-method-rules`,
|
|
|
195
195
|
// 30
|
|
196
196
|
"WrappedSignal is read-only",
|
|
197
197
|
// 31
|
|
198
|
-
"Attribute value is unsafe for SSR",
|
|
198
|
+
"Attribute value is unsafe for SSR {{0}}",
|
|
199
199
|
// 32
|
|
200
200
|
"SerializerSymbol function returned rejected promise",
|
|
201
201
|
// 33
|
|
@@ -229,264 +229,6 @@ var SYNC_QRL = "<sync>";
|
|
|
229
229
|
// packages/qwik/src/core/shared/types.ts
|
|
230
230
|
var DEBUG_TYPE = "q:type";
|
|
231
231
|
|
|
232
|
-
// packages/qwik/src/core/shared/utils/character-escaping.ts
|
|
233
|
-
function escapeHTML(html) {
|
|
234
|
-
let escapedHTML = "";
|
|
235
|
-
const length = html.length;
|
|
236
|
-
let idx = 0;
|
|
237
|
-
let lastIdx = idx;
|
|
238
|
-
for (; idx < length; idx++) {
|
|
239
|
-
const ch = html.charCodeAt(idx);
|
|
240
|
-
if (ch === 60) {
|
|
241
|
-
escapedHTML += html.substring(lastIdx, idx) + "<";
|
|
242
|
-
} else if (ch === 62) {
|
|
243
|
-
escapedHTML += html.substring(lastIdx, idx) + ">";
|
|
244
|
-
} else if (ch === 38) {
|
|
245
|
-
escapedHTML += html.substring(lastIdx, idx) + "&";
|
|
246
|
-
} else if (ch === 34) {
|
|
247
|
-
escapedHTML += html.substring(lastIdx, idx) + """;
|
|
248
|
-
} else if (ch === 39) {
|
|
249
|
-
escapedHTML += html.substring(lastIdx, idx) + "'";
|
|
250
|
-
} else {
|
|
251
|
-
continue;
|
|
252
|
-
}
|
|
253
|
-
lastIdx = idx + 1;
|
|
254
|
-
}
|
|
255
|
-
if (lastIdx === 0) {
|
|
256
|
-
return html;
|
|
257
|
-
} else {
|
|
258
|
-
return escapedHTML + html.substring(lastIdx);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// packages/qwik/src/core/shared/utils/markers.ts
|
|
263
|
-
var OnRenderProp = "q:renderFn";
|
|
264
|
-
var QSlot = "q:slot";
|
|
265
|
-
var QSlotParent = "q:sparent";
|
|
266
|
-
var QStyle = "q:style";
|
|
267
|
-
var QStyleSelector = "style[q\\:style]";
|
|
268
|
-
var QStyleSSelector = "style[q\\:sstyle]";
|
|
269
|
-
var QStylesAllSelector = QStyleSelector + "," + QStyleSSelector;
|
|
270
|
-
var QScopedStyle = "q:sstyle";
|
|
271
|
-
var QCtxAttr = "q:ctx";
|
|
272
|
-
var QBackRefs = "q:brefs";
|
|
273
|
-
var QRenderAttr = "q:render";
|
|
274
|
-
var QRuntimeAttr = "q:runtime";
|
|
275
|
-
var QVersionAttr = "q:version";
|
|
276
|
-
var QBaseAttr = "q:base";
|
|
277
|
-
var QLocaleAttr = "q:locale";
|
|
278
|
-
var QManifestHashAttr = "q:manifest-hash";
|
|
279
|
-
var QInstanceAttr = "q:instance";
|
|
280
|
-
var QContainerIsland = "q:container-island";
|
|
281
|
-
var QContainerIslandEnd = "/" + QContainerIsland;
|
|
282
|
-
var QIgnore = "q:ignore";
|
|
283
|
-
var QIgnoreEnd = "/" + QIgnore;
|
|
284
|
-
var QContainerAttr = "q:container";
|
|
285
|
-
var QContainerAttrEnd = "/" + QContainerAttr;
|
|
286
|
-
var QTemplate = "q:template";
|
|
287
|
-
var QContainerSelector = "[q\\:container]:not([q\\:container=" + "html" /* HTML */ + "]):not([q\\:container=" + "text" /* TEXT */ + "])";
|
|
288
|
-
var QDefaultSlot = "";
|
|
289
|
-
var ELEMENT_ID = "q:id";
|
|
290
|
-
var ELEMENT_KEY = "q:key";
|
|
291
|
-
var ELEMENT_PROPS = "q:props";
|
|
292
|
-
var ELEMENT_SEQ = "q:seq";
|
|
293
|
-
var ELEMENT_SEQ_IDX = "q:seqIdx";
|
|
294
|
-
var ELEMENT_BACKPATCH_DATA = "qwik/backpatch";
|
|
295
|
-
var NON_SERIALIZABLE_MARKER_PREFIX = ":";
|
|
296
|
-
var USE_ON_LOCAL = NON_SERIALIZABLE_MARKER_PREFIX + "on";
|
|
297
|
-
var USE_ON_LOCAL_SEQ_IDX = NON_SERIALIZABLE_MARKER_PREFIX + "onIdx";
|
|
298
|
-
var USE_ON_LOCAL_FLAGS = NON_SERIALIZABLE_MARKER_PREFIX + "onFlags";
|
|
299
|
-
var FLUSH_COMMENT = "qkssr-f";
|
|
300
|
-
var STREAM_BLOCK_START_COMMENT = "qkssr-pu";
|
|
301
|
-
var STREAM_BLOCK_END_COMMENT = "qkssr-po";
|
|
302
|
-
var Q_PROPS_SEPARATOR = ":";
|
|
303
|
-
var dangerouslySetInnerHTML = "dangerouslySetInnerHTML";
|
|
304
|
-
|
|
305
|
-
// packages/qwik/src/core/shared/utils/promises.ts
|
|
306
|
-
import { isDev as isDev2, isServer } from "@qwik.dev/core/build";
|
|
307
|
-
var MAX_RETRY_ON_PROMISE_COUNT = 100;
|
|
308
|
-
var isPromise = (value) => {
|
|
309
|
-
return !!value && typeof value == "object" && typeof value.then === "function";
|
|
310
|
-
};
|
|
311
|
-
var maybeThen = (valueOrPromise, thenFn) => {
|
|
312
|
-
return isPromise(valueOrPromise) ? valueOrPromise.then(thenFn, shouldNotError) : thenFn(valueOrPromise);
|
|
313
|
-
};
|
|
314
|
-
var shouldNotError = (reason) => {
|
|
315
|
-
throwErrorAndStop(reason);
|
|
316
|
-
};
|
|
317
|
-
function retryOnPromise(fn, retryCount = 0) {
|
|
318
|
-
const retryOrThrow = (e) => {
|
|
319
|
-
if (isPromise(e) && retryCount < MAX_RETRY_ON_PROMISE_COUNT) {
|
|
320
|
-
return e.then(retryOnPromise.bind(null, fn, retryCount++));
|
|
321
|
-
}
|
|
322
|
-
throw e;
|
|
323
|
-
};
|
|
324
|
-
try {
|
|
325
|
-
const result = fn();
|
|
326
|
-
if (isPromise(result)) {
|
|
327
|
-
return result.catch((e) => retryOrThrow(e));
|
|
328
|
-
}
|
|
329
|
-
return result;
|
|
330
|
-
} catch (e) {
|
|
331
|
-
if (isDev2 && isServer && e instanceof ReferenceError && e.message.includes("window")) {
|
|
332
|
-
e.message = 'It seems like you forgot to add "if (isBrowser) {...}" here:' + e.message;
|
|
333
|
-
throw e;
|
|
334
|
-
}
|
|
335
|
-
return retryOrThrow(e);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
// packages/qwik/src/core/shared/utils/scoped-styles.ts
|
|
340
|
-
function isClassAttr(key) {
|
|
341
|
-
return key === "class" || key === "className";
|
|
342
|
-
}
|
|
343
|
-
function convertStyleIdsToString(scopedStyleIds) {
|
|
344
|
-
return Array.from(scopedStyleIds).join(" ");
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// packages/qwik/src/core/shared/utils/event-names.ts
|
|
348
|
-
function isPreventDefault(key) {
|
|
349
|
-
return key.startsWith("preventdefault:");
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// packages/qwik/src/core/shared/utils/unitless_number.ts
|
|
353
|
-
var unitlessNumbers = /* @__PURE__ */ new Set([
|
|
354
|
-
"animationIterationCount",
|
|
355
|
-
"aspectRatio",
|
|
356
|
-
"borderImageOutset",
|
|
357
|
-
"borderImageSlice",
|
|
358
|
-
"borderImageWidth",
|
|
359
|
-
"boxFlex",
|
|
360
|
-
"boxFlexGroup",
|
|
361
|
-
"boxOrdinalGroup",
|
|
362
|
-
"columnCount",
|
|
363
|
-
"columns",
|
|
364
|
-
"flex",
|
|
365
|
-
"flexGrow",
|
|
366
|
-
"flexShrink",
|
|
367
|
-
"gridArea",
|
|
368
|
-
"gridRow",
|
|
369
|
-
"gridRowEnd",
|
|
370
|
-
"gridRowStart",
|
|
371
|
-
"gridColumn",
|
|
372
|
-
"gridColumnEnd",
|
|
373
|
-
"gridColumnStart",
|
|
374
|
-
"fontWeight",
|
|
375
|
-
"lineClamp",
|
|
376
|
-
"lineHeight",
|
|
377
|
-
"opacity",
|
|
378
|
-
"order",
|
|
379
|
-
"orphans",
|
|
380
|
-
"scale",
|
|
381
|
-
"tabSize",
|
|
382
|
-
"widows",
|
|
383
|
-
"zIndex",
|
|
384
|
-
"zoom",
|
|
385
|
-
"MozAnimationIterationCount",
|
|
386
|
-
// Known Prefixed Properties
|
|
387
|
-
"MozBoxFlex",
|
|
388
|
-
// TODO: Remove these since they shouldn't be used in modern code
|
|
389
|
-
"msFlex",
|
|
390
|
-
"msFlexPositive",
|
|
391
|
-
"WebkitAnimationIterationCount",
|
|
392
|
-
"WebkitBoxFlex",
|
|
393
|
-
"WebkitBoxOrdinalGroup",
|
|
394
|
-
"WebkitColumnCount",
|
|
395
|
-
"WebkitColumns",
|
|
396
|
-
"WebkitFlex",
|
|
397
|
-
"WebkitFlexGrow",
|
|
398
|
-
"WebkitFlexShrink",
|
|
399
|
-
"WebkitLineClamp"
|
|
400
|
-
]);
|
|
401
|
-
var isUnitlessNumber = (name) => {
|
|
402
|
-
return unitlessNumbers.has(name);
|
|
403
|
-
};
|
|
404
|
-
|
|
405
|
-
// packages/qwik/src/core/shared/utils/styles.ts
|
|
406
|
-
var serializeClass = (obj) => {
|
|
407
|
-
if (!obj) {
|
|
408
|
-
return "";
|
|
409
|
-
}
|
|
410
|
-
if (isString(obj)) {
|
|
411
|
-
return obj.trim();
|
|
412
|
-
}
|
|
413
|
-
const classes = [];
|
|
414
|
-
if (isArray(obj)) {
|
|
415
|
-
for (const o of obj) {
|
|
416
|
-
const classList = serializeClass(o);
|
|
417
|
-
if (classList) {
|
|
418
|
-
classes.push(classList);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
} else {
|
|
422
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
423
|
-
if (value) {
|
|
424
|
-
classes.push(key.trim());
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
return classes.join(" ");
|
|
429
|
-
};
|
|
430
|
-
var fromCamelToKebabCaseWithDash = (text) => {
|
|
431
|
-
return text.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
432
|
-
};
|
|
433
|
-
var stringifyStyle = (obj) => {
|
|
434
|
-
if (obj == null) {
|
|
435
|
-
return "";
|
|
436
|
-
}
|
|
437
|
-
if (typeof obj == "object") {
|
|
438
|
-
if (isArray(obj)) {
|
|
439
|
-
throw qError(0 /* stringifyClassOrStyle */, [obj, "style"]);
|
|
440
|
-
} else {
|
|
441
|
-
const chunks = [];
|
|
442
|
-
for (const key in obj) {
|
|
443
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
444
|
-
const value = obj[key];
|
|
445
|
-
if (value != null && typeof value !== "function") {
|
|
446
|
-
if (key.startsWith("--")) {
|
|
447
|
-
chunks.push(key + ":" + value);
|
|
448
|
-
} else {
|
|
449
|
-
chunks.push(fromCamelToKebabCaseWithDash(key) + ":" + setValueForStyle(key, value));
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
return chunks.join(";");
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
return String(obj);
|
|
458
|
-
};
|
|
459
|
-
var serializeBooleanOrNumberAttribute = (value) => {
|
|
460
|
-
return value != null ? String(value) : null;
|
|
461
|
-
};
|
|
462
|
-
function serializeAttribute(key, value, styleScopedId) {
|
|
463
|
-
if (isClassAttr(key)) {
|
|
464
|
-
const serializedClass = serializeClass(value);
|
|
465
|
-
value = styleScopedId ? styleScopedId + (serializedClass.length ? " " + serializedClass : serializedClass) : serializedClass;
|
|
466
|
-
} else if (key === "style") {
|
|
467
|
-
value = stringifyStyle(value);
|
|
468
|
-
} else if (isEnumeratedBooleanAttribute(key) || typeof value === "number") {
|
|
469
|
-
value = serializeBooleanOrNumberAttribute(value);
|
|
470
|
-
} else if (value === false || value == null) {
|
|
471
|
-
value = null;
|
|
472
|
-
} else if (value === true && isPreventDefault(key)) {
|
|
473
|
-
value = "";
|
|
474
|
-
}
|
|
475
|
-
return value;
|
|
476
|
-
}
|
|
477
|
-
function isEnumeratedBooleanAttribute(key) {
|
|
478
|
-
return isAriaAttribute(key) || ["spellcheck", "draggable", "contenteditable"].includes(key);
|
|
479
|
-
}
|
|
480
|
-
var setValueForStyle = (styleName, value) => {
|
|
481
|
-
if (typeof value === "number" && value !== 0 && !isUnitlessNumber(styleName)) {
|
|
482
|
-
return value + "px";
|
|
483
|
-
}
|
|
484
|
-
return value;
|
|
485
|
-
};
|
|
486
|
-
function isAriaAttribute(prop) {
|
|
487
|
-
return prop.startsWith("aria-");
|
|
488
|
-
}
|
|
489
|
-
|
|
490
232
|
// packages/qwik/src/core/shared/vnode-data-types.ts
|
|
491
233
|
var VNodeDataSeparator = {
|
|
492
234
|
REFERENCE_CH: (
|
|
@@ -640,140 +382,415 @@ var VNodeDataSeparator = {
|
|
|
640
382
|
)
|
|
641
383
|
// `.` is vNodeData separator skipping 4096.
|
|
642
384
|
};
|
|
643
|
-
var VNodeDataChar = {
|
|
644
|
-
OPEN: (
|
|
645
|
-
/* ************** */
|
|
646
|
-
123
|
|
647
|
-
),
|
|
648
|
-
// `{` is the start of the VNodeData for a virtual element.
|
|
649
|
-
OPEN_CHAR: (
|
|
650
|
-
/* ****** */
|
|
651
|
-
"{"
|
|
652
|
-
),
|
|
653
|
-
CLOSE: (
|
|
654
|
-
/* ************* */
|
|
655
|
-
125
|
|
656
|
-
),
|
|
657
|
-
// `}` is the end of the VNodeData for a virtual element.
|
|
658
|
-
CLOSE_CHAR: (
|
|
659
|
-
/* ***** */
|
|
660
|
-
"}"
|
|
661
|
-
),
|
|
662
|
-
SCOPED_STYLE: (
|
|
663
|
-
/* ******* */
|
|
664
|
-
59
|
|
665
|
-
),
|
|
666
|
-
// `;` - `q:sstyle` - Style attribute.
|
|
667
|
-
SCOPED_STYLE_CHAR: (
|
|
668
|
-
/* */
|
|
669
|
-
";"
|
|
670
|
-
),
|
|
671
|
-
RENDER_FN: (
|
|
672
|
-
/* ********** */
|
|
673
|
-
60
|
|
674
|
-
),
|
|
675
|
-
// `<` - `q:renderFn' - Component QRL render function (body)
|
|
676
|
-
RENDER_FN_CHAR: (
|
|
677
|
-
/* ** */
|
|
678
|
-
"<"
|
|
679
|
-
),
|
|
680
|
-
ID: (
|
|
681
|
-
/* ***************** */
|
|
682
|
-
61
|
|
683
|
-
),
|
|
684
|
-
// `=` - `q:id` - ID of the element.
|
|
685
|
-
ID_CHAR: (
|
|
686
|
-
/* ********* */
|
|
687
|
-
"="
|
|
688
|
-
),
|
|
689
|
-
PROPS: (
|
|
690
|
-
/* ************** */
|
|
691
|
-
62
|
|
692
|
-
),
|
|
693
|
-
// `>` - `q:props' - Component Props
|
|
694
|
-
PROPS_CHAR: (
|
|
695
|
-
/* ****** */
|
|
696
|
-
">"
|
|
697
|
-
),
|
|
698
|
-
SLOT_PARENT: (
|
|
699
|
-
/* ******** */
|
|
700
|
-
63
|
|
701
|
-
),
|
|
702
|
-
// `?` - `q:sparent` - Slot parent.
|
|
703
|
-
SLOT_PARENT_CHAR: (
|
|
704
|
-
/* */
|
|
705
|
-
"?"
|
|
706
|
-
),
|
|
707
|
-
KEY: (
|
|
708
|
-
/* **************** */
|
|
709
|
-
64
|
|
710
|
-
),
|
|
711
|
-
// `@` - `q:key` - Element key.
|
|
712
|
-
KEY_CHAR: (
|
|
713
|
-
/* ******** */
|
|
714
|
-
"@"
|
|
715
|
-
),
|
|
716
|
-
SEQ: (
|
|
717
|
-
/* **************** */
|
|
718
|
-
91
|
|
719
|
-
),
|
|
720
|
-
// `[` - `q:seq' - Seq value from `useSequentialScope()`
|
|
721
|
-
SEQ_CHAR: (
|
|
722
|
-
/* ******** */
|
|
723
|
-
"["
|
|
724
|
-
),
|
|
725
|
-
DON_T_USE: (
|
|
726
|
-
/* ********** */
|
|
727
|
-
92
|
|
728
|
-
),
|
|
729
|
-
// `\` - SKIP because `\` is used as escaping
|
|
730
|
-
DON_T_USE_CHAR: "\\",
|
|
731
|
-
CONTEXT: (
|
|
732
|
-
/* ************ */
|
|
733
|
-
93
|
|
734
|
-
),
|
|
735
|
-
// `]` - `q:ctx' - Component context/props
|
|
736
|
-
CONTEXT_CHAR: (
|
|
737
|
-
/* **** */
|
|
738
|
-
"]"
|
|
739
|
-
),
|
|
740
|
-
SEQ_IDX: (
|
|
741
|
-
/* ************ */
|
|
742
|
-
94
|
|
743
|
-
),
|
|
744
|
-
// `^` - `q:seqIdx' - Sequential scope id
|
|
745
|
-
SEQ_IDX_CHAR: (
|
|
746
|
-
/* **** */
|
|
747
|
-
"^"
|
|
748
|
-
),
|
|
749
|
-
BACK_REFS: (
|
|
750
|
-
/* ********** */
|
|
751
|
-
96
|
|
752
|
-
),
|
|
753
|
-
// '`' - `q:brefs' - Effect dependencies/subscriptions
|
|
754
|
-
BACK_REFS_CHAR: (
|
|
755
|
-
/* ** */
|
|
756
|
-
"`"
|
|
757
|
-
),
|
|
758
|
-
SEPARATOR: (
|
|
759
|
-
/* ********* */
|
|
760
|
-
124
|
|
761
|
-
),
|
|
762
|
-
// `|` - Separator char to encode any key/value pairs.
|
|
763
|
-
SEPARATOR_CHAR: (
|
|
764
|
-
/* ** */
|
|
765
|
-
"|"
|
|
766
|
-
),
|
|
767
|
-
SLOT: (
|
|
768
|
-
/* ************** */
|
|
769
|
-
126
|
|
770
|
-
),
|
|
771
|
-
// `~` - `q:slot' - Slot name
|
|
772
|
-
SLOT_CHAR: (
|
|
773
|
-
/* ******* */
|
|
774
|
-
"~"
|
|
775
|
-
)
|
|
385
|
+
var VNodeDataChar = {
|
|
386
|
+
OPEN: (
|
|
387
|
+
/* ************** */
|
|
388
|
+
123
|
|
389
|
+
),
|
|
390
|
+
// `{` is the start of the VNodeData for a virtual element.
|
|
391
|
+
OPEN_CHAR: (
|
|
392
|
+
/* ****** */
|
|
393
|
+
"{"
|
|
394
|
+
),
|
|
395
|
+
CLOSE: (
|
|
396
|
+
/* ************* */
|
|
397
|
+
125
|
|
398
|
+
),
|
|
399
|
+
// `}` is the end of the VNodeData for a virtual element.
|
|
400
|
+
CLOSE_CHAR: (
|
|
401
|
+
/* ***** */
|
|
402
|
+
"}"
|
|
403
|
+
),
|
|
404
|
+
SCOPED_STYLE: (
|
|
405
|
+
/* ******* */
|
|
406
|
+
59
|
|
407
|
+
),
|
|
408
|
+
// `;` - `q:sstyle` - Style attribute.
|
|
409
|
+
SCOPED_STYLE_CHAR: (
|
|
410
|
+
/* */
|
|
411
|
+
";"
|
|
412
|
+
),
|
|
413
|
+
RENDER_FN: (
|
|
414
|
+
/* ********** */
|
|
415
|
+
60
|
|
416
|
+
),
|
|
417
|
+
// `<` - `q:renderFn' - Component QRL render function (body)
|
|
418
|
+
RENDER_FN_CHAR: (
|
|
419
|
+
/* ** */
|
|
420
|
+
"<"
|
|
421
|
+
),
|
|
422
|
+
ID: (
|
|
423
|
+
/* ***************** */
|
|
424
|
+
61
|
|
425
|
+
),
|
|
426
|
+
// `=` - `q:id` - ID of the element.
|
|
427
|
+
ID_CHAR: (
|
|
428
|
+
/* ********* */
|
|
429
|
+
"="
|
|
430
|
+
),
|
|
431
|
+
PROPS: (
|
|
432
|
+
/* ************** */
|
|
433
|
+
62
|
|
434
|
+
),
|
|
435
|
+
// `>` - `q:props' - Component Props
|
|
436
|
+
PROPS_CHAR: (
|
|
437
|
+
/* ****** */
|
|
438
|
+
">"
|
|
439
|
+
),
|
|
440
|
+
SLOT_PARENT: (
|
|
441
|
+
/* ******** */
|
|
442
|
+
63
|
|
443
|
+
),
|
|
444
|
+
// `?` - `q:sparent` - Slot parent.
|
|
445
|
+
SLOT_PARENT_CHAR: (
|
|
446
|
+
/* */
|
|
447
|
+
"?"
|
|
448
|
+
),
|
|
449
|
+
KEY: (
|
|
450
|
+
/* **************** */
|
|
451
|
+
64
|
|
452
|
+
),
|
|
453
|
+
// `@` - `q:key` - Element key.
|
|
454
|
+
KEY_CHAR: (
|
|
455
|
+
/* ******** */
|
|
456
|
+
"@"
|
|
457
|
+
),
|
|
458
|
+
SEQ: (
|
|
459
|
+
/* **************** */
|
|
460
|
+
91
|
|
461
|
+
),
|
|
462
|
+
// `[` - `q:seq' - Seq value from `useSequentialScope()`
|
|
463
|
+
SEQ_CHAR: (
|
|
464
|
+
/* ******** */
|
|
465
|
+
"["
|
|
466
|
+
),
|
|
467
|
+
DON_T_USE: (
|
|
468
|
+
/* ********** */
|
|
469
|
+
92
|
|
470
|
+
),
|
|
471
|
+
// `\` - SKIP because `\` is used as escaping
|
|
472
|
+
DON_T_USE_CHAR: "\\",
|
|
473
|
+
CONTEXT: (
|
|
474
|
+
/* ************ */
|
|
475
|
+
93
|
|
476
|
+
),
|
|
477
|
+
// `]` - `q:ctx' - Component context/props
|
|
478
|
+
CONTEXT_CHAR: (
|
|
479
|
+
/* **** */
|
|
480
|
+
"]"
|
|
481
|
+
),
|
|
482
|
+
SEQ_IDX: (
|
|
483
|
+
/* ************ */
|
|
484
|
+
94
|
|
485
|
+
),
|
|
486
|
+
// `^` - `q:seqIdx' - Sequential scope id
|
|
487
|
+
SEQ_IDX_CHAR: (
|
|
488
|
+
/* **** */
|
|
489
|
+
"^"
|
|
490
|
+
),
|
|
491
|
+
BACK_REFS: (
|
|
492
|
+
/* ********** */
|
|
493
|
+
96
|
|
494
|
+
),
|
|
495
|
+
// '`' - `q:brefs' - Effect dependencies/subscriptions
|
|
496
|
+
BACK_REFS_CHAR: (
|
|
497
|
+
/* ** */
|
|
498
|
+
"`"
|
|
499
|
+
),
|
|
500
|
+
SEPARATOR: (
|
|
501
|
+
/* ********* */
|
|
502
|
+
124
|
|
503
|
+
),
|
|
504
|
+
// `|` - Separator char to encode any key/value pairs.
|
|
505
|
+
SEPARATOR_CHAR: (
|
|
506
|
+
/* ** */
|
|
507
|
+
"|"
|
|
508
|
+
),
|
|
509
|
+
SLOT: (
|
|
510
|
+
/* ************** */
|
|
511
|
+
126
|
|
512
|
+
),
|
|
513
|
+
// `~` - `q:slot' - Slot name
|
|
514
|
+
SLOT_CHAR: (
|
|
515
|
+
/* ******* */
|
|
516
|
+
"~"
|
|
517
|
+
)
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
// packages/qwik/src/core/shared/utils/character-escaping.ts
|
|
521
|
+
function escapeHTML(html) {
|
|
522
|
+
let escapedHTML = "";
|
|
523
|
+
const length = html.length;
|
|
524
|
+
let idx = 0;
|
|
525
|
+
let lastIdx = idx;
|
|
526
|
+
for (; idx < length; idx++) {
|
|
527
|
+
const ch = html.charCodeAt(idx);
|
|
528
|
+
if (ch === 60) {
|
|
529
|
+
escapedHTML += html.substring(lastIdx, idx) + "<";
|
|
530
|
+
} else if (ch === 62) {
|
|
531
|
+
escapedHTML += html.substring(lastIdx, idx) + ">";
|
|
532
|
+
} else if (ch === 38) {
|
|
533
|
+
escapedHTML += html.substring(lastIdx, idx) + "&";
|
|
534
|
+
} else if (ch === 34) {
|
|
535
|
+
escapedHTML += html.substring(lastIdx, idx) + """;
|
|
536
|
+
} else if (ch === 39) {
|
|
537
|
+
escapedHTML += html.substring(lastIdx, idx) + "'";
|
|
538
|
+
} else {
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
lastIdx = idx + 1;
|
|
542
|
+
}
|
|
543
|
+
if (lastIdx === 0) {
|
|
544
|
+
return html;
|
|
545
|
+
} else {
|
|
546
|
+
return escapedHTML + html.substring(lastIdx);
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
function encodeVNodeDataString(str) {
|
|
550
|
+
let escapedHTML = "";
|
|
551
|
+
const length = str.length;
|
|
552
|
+
let idx = 0;
|
|
553
|
+
let lastIdx = idx;
|
|
554
|
+
for (; idx < length; idx++) {
|
|
555
|
+
const ch = str.charCodeAt(idx);
|
|
556
|
+
if (ch >= VNodeDataSeparator.ADVANCE_1 && ch <= VNodeDataSeparator.ADVANCE_8192) {
|
|
557
|
+
escapedHTML += str.substring(lastIdx, idx) + "\\" + str.charAt(idx);
|
|
558
|
+
} else {
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
lastIdx = idx + 1;
|
|
562
|
+
}
|
|
563
|
+
if (lastIdx === 0) {
|
|
564
|
+
return str;
|
|
565
|
+
} else {
|
|
566
|
+
return escapedHTML + str.substring(lastIdx);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// packages/qwik/src/core/shared/utils/markers.ts
|
|
571
|
+
var OnRenderProp = "q:renderFn";
|
|
572
|
+
var QSlot = "q:slot";
|
|
573
|
+
var QSlotParent = "q:sparent";
|
|
574
|
+
var QStyle = "q:style";
|
|
575
|
+
var QStyleSelector = "style[q\\:style]";
|
|
576
|
+
var QStyleSSelector = "style[q\\:sstyle]";
|
|
577
|
+
var QStylesAllSelector = QStyleSelector + "," + QStyleSSelector;
|
|
578
|
+
var QScopedStyle = "q:sstyle";
|
|
579
|
+
var QCtxAttr = "q:ctx";
|
|
580
|
+
var QBackRefs = "q:brefs";
|
|
581
|
+
var QRenderAttr = "q:render";
|
|
582
|
+
var QRuntimeAttr = "q:runtime";
|
|
583
|
+
var QVersionAttr = "q:version";
|
|
584
|
+
var QBaseAttr = "q:base";
|
|
585
|
+
var QLocaleAttr = "q:locale";
|
|
586
|
+
var QManifestHashAttr = "q:manifest-hash";
|
|
587
|
+
var QInstanceAttr = "q:instance";
|
|
588
|
+
var QContainerIsland = "q:container-island";
|
|
589
|
+
var QContainerIslandEnd = "/" + QContainerIsland;
|
|
590
|
+
var QIgnore = "q:ignore";
|
|
591
|
+
var QIgnoreEnd = "/" + QIgnore;
|
|
592
|
+
var QContainerAttr = "q:container";
|
|
593
|
+
var QContainerAttrEnd = "/" + QContainerAttr;
|
|
594
|
+
var QTemplate = "q:template";
|
|
595
|
+
var QContainerSelector = "[q\\:container]:not([q\\:container=" + "html" /* HTML */ + "]):not([q\\:container=" + "text" /* TEXT */ + "])";
|
|
596
|
+
var QDefaultSlot = "";
|
|
597
|
+
var ELEMENT_ID = "q:id";
|
|
598
|
+
var ELEMENT_KEY = "q:key";
|
|
599
|
+
var ELEMENT_PROPS = "q:props";
|
|
600
|
+
var ELEMENT_SEQ = "q:seq";
|
|
601
|
+
var ELEMENT_SEQ_IDX = "q:seqIdx";
|
|
602
|
+
var ELEMENT_BACKPATCH_DATA = "qwik/backpatch";
|
|
603
|
+
var NON_SERIALIZABLE_MARKER_PREFIX = ":";
|
|
604
|
+
var USE_ON_LOCAL = NON_SERIALIZABLE_MARKER_PREFIX + "on";
|
|
605
|
+
var USE_ON_LOCAL_SEQ_IDX = NON_SERIALIZABLE_MARKER_PREFIX + "onIdx";
|
|
606
|
+
var USE_ON_LOCAL_FLAGS = NON_SERIALIZABLE_MARKER_PREFIX + "onFlags";
|
|
607
|
+
var FLUSH_COMMENT = "qkssr-f";
|
|
608
|
+
var STREAM_BLOCK_START_COMMENT = "qkssr-pu";
|
|
609
|
+
var STREAM_BLOCK_END_COMMENT = "qkssr-po";
|
|
610
|
+
var Q_PROPS_SEPARATOR = ":";
|
|
611
|
+
var dangerouslySetInnerHTML = "dangerouslySetInnerHTML";
|
|
612
|
+
|
|
613
|
+
// packages/qwik/src/core/shared/utils/promises.ts
|
|
614
|
+
import { isDev as isDev2, isServer } from "@qwik.dev/core/build";
|
|
615
|
+
var MAX_RETRY_ON_PROMISE_COUNT = 100;
|
|
616
|
+
var isPromise = (value) => {
|
|
617
|
+
return !!value && typeof value == "object" && typeof value.then === "function";
|
|
618
|
+
};
|
|
619
|
+
var maybeThen = (valueOrPromise, thenFn) => {
|
|
620
|
+
return isPromise(valueOrPromise) ? valueOrPromise.then(thenFn) : thenFn(valueOrPromise);
|
|
621
|
+
};
|
|
622
|
+
function retryOnPromise(fn, retryCount = 0) {
|
|
623
|
+
const retryOrThrow = (e) => {
|
|
624
|
+
if (isPromise(e) && retryCount < MAX_RETRY_ON_PROMISE_COUNT) {
|
|
625
|
+
return e.then(retryOnPromise.bind(null, fn, retryCount++));
|
|
626
|
+
}
|
|
627
|
+
throw e;
|
|
628
|
+
};
|
|
629
|
+
try {
|
|
630
|
+
const result = fn();
|
|
631
|
+
if (isPromise(result)) {
|
|
632
|
+
return result.catch((e) => retryOrThrow(e));
|
|
633
|
+
}
|
|
634
|
+
return result;
|
|
635
|
+
} catch (e) {
|
|
636
|
+
if (isDev2 && isServer && e instanceof ReferenceError && e.message.includes("window")) {
|
|
637
|
+
e.message = 'It seems like you forgot to add "if (isBrowser) {...}" here:' + e.message;
|
|
638
|
+
throw e;
|
|
639
|
+
}
|
|
640
|
+
return retryOrThrow(e);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// packages/qwik/src/core/shared/utils/scoped-styles.ts
|
|
645
|
+
function isClassAttr(key) {
|
|
646
|
+
return key === "class";
|
|
647
|
+
}
|
|
648
|
+
function convertStyleIdsToString(scopedStyleIds) {
|
|
649
|
+
return Array.from(scopedStyleIds).join(" ");
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
// packages/qwik/src/core/shared/utils/event-names.ts
|
|
653
|
+
function isPreventDefault(key) {
|
|
654
|
+
return key.startsWith("preventdefault:");
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// packages/qwik/src/core/shared/utils/unitless_number.ts
|
|
658
|
+
var unitlessNumbers = /* @__PURE__ */ new Set([
|
|
659
|
+
"animationIterationCount",
|
|
660
|
+
"aspectRatio",
|
|
661
|
+
"borderImageOutset",
|
|
662
|
+
"borderImageSlice",
|
|
663
|
+
"borderImageWidth",
|
|
664
|
+
"boxFlex",
|
|
665
|
+
"boxFlexGroup",
|
|
666
|
+
"boxOrdinalGroup",
|
|
667
|
+
"columnCount",
|
|
668
|
+
"columns",
|
|
669
|
+
"flex",
|
|
670
|
+
"flexGrow",
|
|
671
|
+
"flexShrink",
|
|
672
|
+
"gridArea",
|
|
673
|
+
"gridRow",
|
|
674
|
+
"gridRowEnd",
|
|
675
|
+
"gridRowStart",
|
|
676
|
+
"gridColumn",
|
|
677
|
+
"gridColumnEnd",
|
|
678
|
+
"gridColumnStart",
|
|
679
|
+
"fontWeight",
|
|
680
|
+
"lineClamp",
|
|
681
|
+
"lineHeight",
|
|
682
|
+
"opacity",
|
|
683
|
+
"order",
|
|
684
|
+
"orphans",
|
|
685
|
+
"scale",
|
|
686
|
+
"tabSize",
|
|
687
|
+
"widows",
|
|
688
|
+
"zIndex",
|
|
689
|
+
"zoom",
|
|
690
|
+
"MozAnimationIterationCount",
|
|
691
|
+
// Known Prefixed Properties
|
|
692
|
+
"MozBoxFlex",
|
|
693
|
+
// TODO: Remove these since they shouldn't be used in modern code
|
|
694
|
+
"msFlex",
|
|
695
|
+
"msFlexPositive",
|
|
696
|
+
"WebkitAnimationIterationCount",
|
|
697
|
+
"WebkitBoxFlex",
|
|
698
|
+
"WebkitBoxOrdinalGroup",
|
|
699
|
+
"WebkitColumnCount",
|
|
700
|
+
"WebkitColumns",
|
|
701
|
+
"WebkitFlex",
|
|
702
|
+
"WebkitFlexGrow",
|
|
703
|
+
"WebkitFlexShrink",
|
|
704
|
+
"WebkitLineClamp"
|
|
705
|
+
]);
|
|
706
|
+
var isUnitlessNumber = (name) => {
|
|
707
|
+
return unitlessNumbers.has(name);
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
// packages/qwik/src/core/shared/utils/styles.ts
|
|
711
|
+
var serializeClass = (obj) => {
|
|
712
|
+
if (!obj) {
|
|
713
|
+
return "";
|
|
714
|
+
}
|
|
715
|
+
if (isString(obj)) {
|
|
716
|
+
return obj.trim();
|
|
717
|
+
}
|
|
718
|
+
const classes = [];
|
|
719
|
+
if (isArray(obj)) {
|
|
720
|
+
for (const o of obj) {
|
|
721
|
+
const classList = serializeClass(o);
|
|
722
|
+
if (classList) {
|
|
723
|
+
classes.push(classList);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
} else {
|
|
727
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
728
|
+
if (value) {
|
|
729
|
+
classes.push(key.trim());
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
return classes.join(" ");
|
|
734
|
+
};
|
|
735
|
+
var fromCamelToKebabCaseWithDash = (text) => {
|
|
736
|
+
return text.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
737
|
+
};
|
|
738
|
+
var stringifyStyle = (obj) => {
|
|
739
|
+
if (obj == null) {
|
|
740
|
+
return "";
|
|
741
|
+
}
|
|
742
|
+
if (typeof obj == "object") {
|
|
743
|
+
if (isArray(obj)) {
|
|
744
|
+
throw qError(0 /* stringifyClassOrStyle */, [obj, "style"]);
|
|
745
|
+
} else {
|
|
746
|
+
const chunks = [];
|
|
747
|
+
for (const key in obj) {
|
|
748
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
749
|
+
const value = obj[key];
|
|
750
|
+
if (value != null && typeof value !== "function") {
|
|
751
|
+
if (key.startsWith("--")) {
|
|
752
|
+
chunks.push(key + ":" + value);
|
|
753
|
+
} else {
|
|
754
|
+
chunks.push(fromCamelToKebabCaseWithDash(key) + ":" + setValueForStyle(key, value));
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
return chunks.join(";");
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
return String(obj);
|
|
763
|
+
};
|
|
764
|
+
var serializeBooleanOrNumberAttribute = (value) => {
|
|
765
|
+
return value != null ? String(value) : null;
|
|
766
|
+
};
|
|
767
|
+
function serializeAttribute(key, value, styleScopedId) {
|
|
768
|
+
if (isClassAttr(key)) {
|
|
769
|
+
const serializedClass = serializeClass(value);
|
|
770
|
+
value = styleScopedId ? styleScopedId + (serializedClass.length ? " " + serializedClass : serializedClass) : serializedClass;
|
|
771
|
+
} else if (key === "style") {
|
|
772
|
+
value = stringifyStyle(value);
|
|
773
|
+
} else if (isEnumeratedBooleanAttribute(key) || typeof value === "number") {
|
|
774
|
+
value = serializeBooleanOrNumberAttribute(value);
|
|
775
|
+
} else if (value === false || value == null) {
|
|
776
|
+
value = null;
|
|
777
|
+
} else if (value === true && isPreventDefault(key)) {
|
|
778
|
+
value = "";
|
|
779
|
+
}
|
|
780
|
+
return value;
|
|
781
|
+
}
|
|
782
|
+
function isEnumeratedBooleanAttribute(key) {
|
|
783
|
+
return isAriaAttribute(key) || ["spellcheck", "draggable", "contenteditable"].includes(key);
|
|
784
|
+
}
|
|
785
|
+
var setValueForStyle = (styleName, value) => {
|
|
786
|
+
if (typeof value === "number" && value !== 0 && !isUnitlessNumber(styleName)) {
|
|
787
|
+
return value + "px";
|
|
788
|
+
}
|
|
789
|
+
return value;
|
|
776
790
|
};
|
|
791
|
+
function isAriaAttribute(prop) {
|
|
792
|
+
return prop.startsWith("aria-");
|
|
793
|
+
}
|
|
777
794
|
|
|
778
795
|
// packages/qwik/src/core/preloader/queue.ts
|
|
779
796
|
import { isBrowser as isBrowser3 } from "@qwik.dev/core/build";
|
|
@@ -1154,7 +1171,7 @@ function getBuildBase(opts) {
|
|
|
1154
1171
|
return `${import.meta.env.BASE_URL || "/"}build/`;
|
|
1155
1172
|
}
|
|
1156
1173
|
var versions = {
|
|
1157
|
-
qwik: "2.0.0-beta.
|
|
1174
|
+
qwik: "2.0.0-beta.17-dev+c34c237",
|
|
1158
1175
|
qwikDom: "2.1.19"
|
|
1159
1176
|
};
|
|
1160
1177
|
|
|
@@ -1163,6 +1180,7 @@ import { isDev as isDev5 } from "@qwik.dev/core/build";
|
|
|
1163
1180
|
import {
|
|
1164
1181
|
_SubscriptionData as SubscriptionData,
|
|
1165
1182
|
_SharedContainer,
|
|
1183
|
+
_executeSsrChores,
|
|
1166
1184
|
_jsxSorted,
|
|
1167
1185
|
_jsxSplit,
|
|
1168
1186
|
_walkJSX,
|
|
@@ -1483,6 +1501,7 @@ var SsrNode = class {
|
|
|
1483
1501
|
*/
|
|
1484
1502
|
__publicField(this, "id");
|
|
1485
1503
|
__publicField(this, "flags");
|
|
1504
|
+
__publicField(this, "dirty", 0 /* NONE */);
|
|
1486
1505
|
__publicField(this, "children", null);
|
|
1487
1506
|
__publicField(this, "attrs");
|
|
1488
1507
|
/** Local props which don't serialize; */
|
|
@@ -2096,7 +2115,7 @@ var StringBufferWriter = class {
|
|
|
2096
2115
|
var EMPTY_OBJ = {};
|
|
2097
2116
|
var SSRContainer = class extends _SharedContainer {
|
|
2098
2117
|
constructor(opts) {
|
|
2099
|
-
super(
|
|
2118
|
+
super(opts.renderOptions.serverData ?? EMPTY_OBJ, opts.locale);
|
|
2100
2119
|
__publicField(this, "tag");
|
|
2101
2120
|
__publicField(this, "isHtml");
|
|
2102
2121
|
__publicField(this, "writer");
|
|
@@ -2255,14 +2274,14 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2255
2274
|
},
|
|
2256
2275
|
[]
|
|
2257
2276
|
);
|
|
2258
|
-
this.openElement(this.tag, containerAttributeArray);
|
|
2277
|
+
this.openElement(this.tag, null, containerAttributeArray);
|
|
2259
2278
|
}
|
|
2260
2279
|
/** Renders closing tag for current container */
|
|
2261
2280
|
closeContainer() {
|
|
2262
2281
|
return this.closeElement();
|
|
2263
2282
|
}
|
|
2264
2283
|
/** Renders opening tag for DOM element */
|
|
2265
|
-
openElement(elementName, varAttrs, constAttrs, currentFile) {
|
|
2284
|
+
openElement(elementName, key, varAttrs, constAttrs, currentFile) {
|
|
2266
2285
|
const isQwikStyle = isQwikStyleElement(elementName, varAttrs) || isQwikStyleElement(elementName, constAttrs);
|
|
2267
2286
|
if (
|
|
2268
2287
|
// don't append qwik loader before qwik style elements
|
|
@@ -2289,7 +2308,11 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2289
2308
|
innerHTML = this.writeAttrs(elementName, varAttrs, false, currentFile);
|
|
2290
2309
|
}
|
|
2291
2310
|
this.write(" " + Q_PROPS_SEPARATOR);
|
|
2292
|
-
|
|
2311
|
+
if (key !== null) {
|
|
2312
|
+
this.write(`="${key}"`);
|
|
2313
|
+
} else if (isDev5) {
|
|
2314
|
+
this.write('=""');
|
|
2315
|
+
}
|
|
2293
2316
|
if (constAttrs && constAttrs.length) {
|
|
2294
2317
|
innerHTML = this.writeAttrs(elementName, constAttrs, true, currentFile) || innerHTML;
|
|
2295
2318
|
}
|
|
@@ -2444,6 +2467,12 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2444
2467
|
}
|
|
2445
2468
|
return this.lastNode;
|
|
2446
2469
|
}
|
|
2470
|
+
executeChores() {
|
|
2471
|
+
if (!this.lastNode) {
|
|
2472
|
+
return;
|
|
2473
|
+
}
|
|
2474
|
+
return _executeSsrChores(this, this.lastNode);
|
|
2475
|
+
}
|
|
2447
2476
|
addUnclaimedProjection(frame, name, children) {
|
|
2448
2477
|
this.unclaimedProjections.push(frame, null, name, children);
|
|
2449
2478
|
}
|
|
@@ -2488,7 +2517,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2488
2517
|
}
|
|
2489
2518
|
}
|
|
2490
2519
|
_styleNode(styleId, content) {
|
|
2491
|
-
this.openElement("style", [QStyle, styleId]);
|
|
2520
|
+
this.openElement("style", null, [QStyle, styleId]);
|
|
2492
2521
|
this.write(content);
|
|
2493
2522
|
this.closeElement();
|
|
2494
2523
|
}
|
|
@@ -2532,7 +2561,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2532
2561
|
if (!this.serializationCtx.$roots$.length) {
|
|
2533
2562
|
return;
|
|
2534
2563
|
}
|
|
2535
|
-
this.openElement("script", ["type", "qwik/vnode"]);
|
|
2564
|
+
this.openElement("script", null, ["type", "qwik/vnode"]);
|
|
2536
2565
|
const vNodeAttrsStack = [];
|
|
2537
2566
|
const vNodeData = this.vNodeDatas;
|
|
2538
2567
|
let lastSerializedIdx = 0;
|
|
@@ -2564,9 +2593,11 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2564
2593
|
this.write(VNodeDataChar.CLOSE_CHAR);
|
|
2565
2594
|
} else if (value === WRITE_ELEMENT_ATTRS) {
|
|
2566
2595
|
if (fragmentAttrs && fragmentAttrs.length) {
|
|
2596
|
+
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2567
2597
|
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2568
2598
|
this.writeFragmentAttrs(fragmentAttrs);
|
|
2569
2599
|
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2600
|
+
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2570
2601
|
fragmentAttrs = vNodeAttrsStack.pop();
|
|
2571
2602
|
}
|
|
2572
2603
|
} else if (value >= 0) {
|
|
@@ -2635,12 +2666,14 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2635
2666
|
case QSlot:
|
|
2636
2667
|
this.write(VNodeDataChar.SLOT_CHAR);
|
|
2637
2668
|
break;
|
|
2638
|
-
default:
|
|
2669
|
+
default: {
|
|
2670
|
+
encodeValue = true;
|
|
2639
2671
|
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2640
|
-
this.write(key);
|
|
2672
|
+
this.write(encodeVNodeDataString(key));
|
|
2641
2673
|
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
2674
|
+
}
|
|
2642
2675
|
}
|
|
2643
|
-
const encodedValue = encodeValue ? encodeURI(value) : value;
|
|
2676
|
+
const encodedValue = encodeVNodeDataString(encodeValue ? encodeURI(value) : value);
|
|
2644
2677
|
const isEncoded = encodeValue ? encodedValue !== value : false;
|
|
2645
2678
|
if (isEncoded) {
|
|
2646
2679
|
this.write(VNodeDataChar.SEPARATOR_CHAR);
|
|
@@ -2655,7 +2688,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2655
2688
|
if (!this.serializationCtx.$roots$.length) {
|
|
2656
2689
|
return;
|
|
2657
2690
|
}
|
|
2658
|
-
this.openElement("script", ["type", "qwik/state"]);
|
|
2691
|
+
this.openElement("script", null, ["type", "qwik/state"]);
|
|
2659
2692
|
return maybeThen(this.serializationCtx.$serialize$(), () => {
|
|
2660
2693
|
this.closeElement();
|
|
2661
2694
|
});
|
|
@@ -2667,7 +2700,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2667
2700
|
if (this.renderOptions.serverData?.nonce) {
|
|
2668
2701
|
scriptAttrs.push("nonce", this.renderOptions.serverData.nonce);
|
|
2669
2702
|
}
|
|
2670
|
-
this.openElement("script", scriptAttrs);
|
|
2703
|
+
this.openElement("script", null, scriptAttrs);
|
|
2671
2704
|
this.write(Q_FUNCS_PREFIX.replace("HASH", this.$instanceHash$));
|
|
2672
2705
|
this.write("[");
|
|
2673
2706
|
this.writeArray(fns, ",");
|
|
@@ -2689,7 +2722,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2689
2722
|
if (this.renderOptions.serverData?.nonce) {
|
|
2690
2723
|
scriptAttrs.push("nonce", this.renderOptions.serverData.nonce);
|
|
2691
2724
|
}
|
|
2692
|
-
this.openElement("script", scriptAttrs);
|
|
2725
|
+
this.openElement("script", null, scriptAttrs);
|
|
2693
2726
|
this.write(JSON.stringify(patches));
|
|
2694
2727
|
this.closeElement();
|
|
2695
2728
|
}
|
|
@@ -2702,7 +2735,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2702
2735
|
if (this.renderOptions.serverData?.nonce) {
|
|
2703
2736
|
scriptAttrs.push("nonce", this.renderOptions.serverData.nonce);
|
|
2704
2737
|
}
|
|
2705
|
-
this.openElement("script", scriptAttrs);
|
|
2738
|
+
this.openElement("script", null, scriptAttrs);
|
|
2706
2739
|
const backpatchScript = getQwikBackpatchExecutorScript({ debug: isDev5 });
|
|
2707
2740
|
this.write(backpatchScript);
|
|
2708
2741
|
this.closeElement();
|
|
@@ -2722,13 +2755,13 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2722
2755
|
if (nonce) {
|
|
2723
2756
|
linkAttrs.push("nonce", nonce);
|
|
2724
2757
|
}
|
|
2725
|
-
this.openElement("link", linkAttrs);
|
|
2758
|
+
this.openElement("link", null, linkAttrs);
|
|
2726
2759
|
this.closeElement();
|
|
2727
2760
|
const scriptAttrs = ["async", true, "type", "module", "src", qwikLoaderBundle];
|
|
2728
2761
|
if (nonce) {
|
|
2729
2762
|
scriptAttrs.push("nonce", nonce);
|
|
2730
2763
|
}
|
|
2731
|
-
this.openElement("script", scriptAttrs);
|
|
2764
|
+
this.openElement("script", null, scriptAttrs);
|
|
2732
2765
|
this.closeElement();
|
|
2733
2766
|
}
|
|
2734
2767
|
}
|
|
@@ -2739,7 +2772,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2739
2772
|
if (this.renderOptions.serverData?.nonce) {
|
|
2740
2773
|
scriptAttrs.push("nonce", this.renderOptions.serverData.nonce);
|
|
2741
2774
|
}
|
|
2742
|
-
this.openElement("script", scriptAttrs);
|
|
2775
|
+
this.openElement("script", null, scriptAttrs);
|
|
2743
2776
|
this.write(qwikLoaderScript);
|
|
2744
2777
|
this.closeElement();
|
|
2745
2778
|
}
|
|
@@ -2758,7 +2791,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2758
2791
|
if (nonce) {
|
|
2759
2792
|
scriptAttrs.push("nonce", nonce);
|
|
2760
2793
|
}
|
|
2761
|
-
this.openElement("script", scriptAttrs);
|
|
2794
|
+
this.openElement("script", null, scriptAttrs);
|
|
2762
2795
|
this.write(`(window.qwikevents||(window.qwikevents=[])).push(`);
|
|
2763
2796
|
this.writeArray(eventNames, ", ");
|
|
2764
2797
|
this.write(")");
|
|
@@ -2770,7 +2803,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2770
2803
|
if (unclaimedProjections.length) {
|
|
2771
2804
|
const previousCurrentComponentNode = this.currentComponentNode;
|
|
2772
2805
|
try {
|
|
2773
|
-
this.openElement(QTemplate, ["hidden", true, "aria-hidden", "true"], null);
|
|
2806
|
+
this.openElement(QTemplate, null, ["hidden", true, "aria-hidden", "true"], null);
|
|
2774
2807
|
let idx = 0;
|
|
2775
2808
|
let ssrComponentNode = null;
|
|
2776
2809
|
let ssrComponentFrame = null;
|
|
@@ -2923,7 +2956,7 @@ var SSRContainer = class extends _SharedContainer {
|
|
|
2923
2956
|
let styleScopedId = null;
|
|
2924
2957
|
if (isSSRUnsafeAttr(key)) {
|
|
2925
2958
|
if (isDev5) {
|
|
2926
|
-
throw qError(32 /* unsafeAttr
|
|
2959
|
+
throw qError(32 /* unsafeAttr */, [key]);
|
|
2927
2960
|
}
|
|
2928
2961
|
continue;
|
|
2929
2962
|
}
|
|
@@ -3082,7 +3115,7 @@ var renderToStream = async (jsx, opts) => {
|
|
|
3082
3115
|
});
|
|
3083
3116
|
await setServerPlatform(opts, resolvedManifest);
|
|
3084
3117
|
await ssrContainer.render(jsx);
|
|
3085
|
-
await ssrContainer.$
|
|
3118
|
+
await ssrContainer.$renderPromise$;
|
|
3086
3119
|
flush();
|
|
3087
3120
|
const snapshotResult = getSnapshotResult(ssrContainer);
|
|
3088
3121
|
const isDynamic = snapshotResult.resources.some((r) => r._cache !== Infinity);
|