@qwik.dev/core 2.0.0-beta.3 → 2.0.0-beta.31

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 (139) hide show
  1. package/dist/backpatch/index.d.ts +2 -0
  2. package/dist/backpatch/index.mjs +5 -0
  3. package/dist/backpatch/package.json +8 -0
  4. package/dist/backpatch-executor.debug.js +39 -0
  5. package/dist/backpatch-executor.js +1 -0
  6. package/dist/build/package.json +1 -1
  7. package/dist/cli.mjs +12961 -0
  8. package/dist/core-internal.d.ts +1117 -707
  9. package/dist/core.min.mjs +2 -1
  10. package/dist/core.mjs +12216 -8953
  11. package/dist/core.mjs.map +1 -1
  12. package/dist/core.prod.mjs +8677 -5376
  13. package/dist/insights/index.qwik.mjs +80 -57
  14. package/dist/insights/vite/index.mjs +36 -33
  15. package/dist/loader/index.mjs +2 -2
  16. package/dist/loader/package.json +1 -1
  17. package/dist/optimizer.d.ts +47 -278
  18. package/dist/optimizer.mjs +2427 -3791
  19. package/dist/preloader.mjs +212 -117
  20. package/dist/qwikloader.debug.js +173 -135
  21. package/dist/qwikloader.js +1 -1
  22. package/dist/server.d.ts +51 -203
  23. package/dist/server.mjs +1661 -1157
  24. package/dist/server.prod.mjs +3452 -0
  25. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/{vite.config.mts → vite.config.ts} +2 -2
  26. package/dist/starters/adapters/aws-lambda/package.json +3 -2
  27. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -6
  28. package/dist/starters/adapters/azure-swa/adapters/azure-swa/{vite.config.mts → vite.config.ts} +2 -2
  29. package/dist/starters/adapters/azure-swa/package.json +3 -2
  30. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -3
  31. package/dist/starters/adapters/bun/adapters/bun/{vite.config.mts → vite.config.ts} +3 -3
  32. package/dist/starters/adapters/bun/package.json +3 -2
  33. package/dist/starters/adapters/bun/src/entry.bun.ts +0 -2
  34. package/dist/starters/adapters/cloud-run/adapters/cloud-run/{vite.config.mts → vite.config.ts} +2 -2
  35. package/dist/starters/adapters/cloud-run/package.json +3 -2
  36. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +1 -3
  37. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/{vite.config.mts → vite.config.ts} +2 -2
  38. package/dist/starters/adapters/cloudflare-pages/package.json +3 -2
  39. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -3
  40. package/dist/starters/adapters/cloudflare-workers/README.md +52 -0
  41. package/dist/starters/adapters/cloudflare-workers/adapters/cloudflare-workers/vite.config.ts +15 -0
  42. package/dist/starters/adapters/cloudflare-workers/gitignore +3 -0
  43. package/dist/starters/adapters/cloudflare-workers/package.json +31 -0
  44. package/dist/starters/adapters/cloudflare-workers/public/.assetsignore +4 -0
  45. package/dist/starters/adapters/cloudflare-workers/public/_headers +11 -0
  46. package/dist/starters/adapters/cloudflare-workers/public/_redirects +1 -0
  47. package/dist/starters/adapters/cloudflare-workers/src/entry.cloudflare-pages.tsx +23 -0
  48. package/dist/starters/adapters/cloudflare-workers/worker-configuration.d.ts +5 -0
  49. package/dist/starters/adapters/cloudflare-workers/wrangler.jsonc +41 -0
  50. package/dist/starters/adapters/deno/adapters/deno/{vite.config.mts → vite.config.ts} +2 -2
  51. package/dist/starters/adapters/deno/package.json +3 -2
  52. package/dist/starters/adapters/deno/src/entry.deno.ts +0 -2
  53. package/dist/starters/adapters/express/adapters/express/{vite.config.mts → vite.config.ts} +2 -2
  54. package/dist/starters/adapters/express/package.json +4 -3
  55. package/dist/starters/adapters/express/src/entry.express.tsx +1 -3
  56. package/dist/starters/adapters/fastify/adapters/fastify/{vite.config.mts → vite.config.ts} +2 -2
  57. package/dist/starters/adapters/fastify/package.json +4 -3
  58. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +1 -1
  59. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +1 -2
  60. package/dist/starters/adapters/firebase/adapters/firebase/{vite.config.mts → vite.config.ts} +2 -2
  61. package/dist/starters/adapters/firebase/package.json +3 -2
  62. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -3
  63. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/{vite.config.mts → vite.config.ts} +2 -2
  64. package/dist/starters/adapters/netlify-edge/package.json +5 -4
  65. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -3
  66. package/dist/starters/adapters/node-server/adapters/node-server/{vite.config.mts → vite.config.ts} +2 -2
  67. package/dist/starters/adapters/node-server/package.json +3 -2
  68. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +0 -2
  69. package/dist/starters/adapters/{static/adapters/static/vite.config.mts → ssg/adapters/ssg/vite.config.ts} +3 -3
  70. package/dist/starters/adapters/ssg/package.json +20 -0
  71. package/dist/starters/adapters/vercel-edge/README.md +2 -2
  72. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/{vite.config.mts → vite.config.ts} +2 -2
  73. package/dist/starters/adapters/vercel-edge/package.json +3 -2
  74. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -3
  75. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  76. package/dist/starters/features/auth/package.json +1 -1
  77. package/dist/starters/features/compiled-i18n/package.json +37 -0
  78. package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx +30 -0
  79. package/dist/starters/features/compiled-i18n/src/entry.ssr.tsx +31 -0
  80. package/dist/starters/features/compiled-i18n/src/routes/plugin@compiled-i18n.ts +28 -0
  81. package/dist/starters/features/csr/index.html +27 -0
  82. package/dist/starters/features/csr/package.json +29 -0
  83. package/dist/starters/features/csr/src/root.tsx +15 -0
  84. package/dist/starters/features/csr/vite.config.ts +13 -0
  85. package/dist/starters/features/cypress/src/actions/example.action.ts +5 -0
  86. package/dist/starters/features/cypress/src/components/example/example.cy.tsx +50 -8
  87. package/dist/starters/features/cypress/src/components/example/example.tsx +13 -3
  88. package/dist/starters/features/cypress/src/loaders/example.loader.ts +5 -0
  89. package/dist/starters/features/pandacss/package.json +1 -1
  90. package/dist/starters/features/postcss/postcss.config.js +1 -1
  91. package/dist/starters/features/storybook/.storybook/tsconfig.json +0 -1
  92. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  93. package/dist/starters/features/tailwind/package.json +2 -2
  94. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  95. package/dist/starters/features/tailwind-v3/package.json +1 -1
  96. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  97. package/dist/testing/index.d.ts +928 -6
  98. package/dist/testing/index.mjs +16212 -11578
  99. package/dist/testing/package.json +1 -1
  100. package/handlers.mjs +1 -1
  101. package/package.json +34 -56
  102. package/public.d.ts +5 -1
  103. package/{qwik-cli.cjs → qwik-cli.mjs} +1 -1
  104. package/server.d.ts +2 -0
  105. package/bindings/qwik.darwin-arm64.node +0 -0
  106. package/bindings/qwik.darwin-x64.node +0 -0
  107. package/bindings/qwik.linux-x64-gnu.node +0 -0
  108. package/bindings/qwik.wasm.cjs +0 -471
  109. package/bindings/qwik.wasm.mjs +0 -464
  110. package/bindings/qwik.win32-x64-msvc.node +0 -0
  111. package/bindings/qwik_wasm_bg.wasm +0 -0
  112. package/dist/build/index.cjs +0 -35
  113. package/dist/build/index.cjs.map +0 -7
  114. package/dist/build/index.dev.cjs +0 -37
  115. package/dist/build/index.dev.cjs.map +0 -7
  116. package/dist/build/index.prod.cjs +0 -37
  117. package/dist/build/index.prod.cjs.map +0 -7
  118. package/dist/cli.cjs +0 -5545
  119. package/dist/core.cjs +0 -11800
  120. package/dist/core.cjs.map +0 -1
  121. package/dist/core.prod.cjs +0 -5661
  122. package/dist/insights/index.qwik.cjs +0 -1
  123. package/dist/insights/vite/index.cjs +0 -1
  124. package/dist/loader/index.cjs +0 -4
  125. package/dist/optimizer.cjs +0 -4020
  126. package/dist/preloader.cjs +0 -269
  127. package/dist/server.cjs +0 -3037
  128. package/dist/starters/adapters/static/package.json +0 -19
  129. package/dist/starters/features/localize/package.json +0 -37
  130. package/dist/starters/features/localize/src/entry.ssr.tsx +0 -30
  131. package/dist/starters/features/localize/src/locales/message.en.json +0 -8
  132. package/dist/starters/features/localize/src/locales/message.it.json +0 -8
  133. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +0 -94
  134. package/dist/starters/features/localize/src/routes/[locale]/index.tsx +0 -52
  135. package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +0 -12
  136. package/dist/starters/features/playwright/playwright-report/index.html +0 -22026
  137. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
  138. package/dist/testing/index.cjs +0 -33331
  139. /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
@@ -0,0 +1,3452 @@
1
+ /**
2
+ * @license
3
+ * @qwik.dev/core/server 2.0.0-beta.31-dev+906321a
4
+ * Copyright QwikDev. All Rights Reserved.
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://github.com/QwikDev/qwik/blob/main/LICENSE
7
+ */
8
+ // packages/qwik/src/server/index.ts
9
+ import { setPlatform as setPlatform2 } from "@qwik.dev/core";
10
+
11
+ // packages/qwik/src/server/platform.ts
12
+ import { setPlatform as Er } from "@qwik.dev/core";
13
+
14
+ import { isDev as isDev5 } from "@qwik.dev/core/build";
15
+
16
+ // packages/qwik/src/core/client/util-mapArray.ts
17
+ import { isDev as isDev2 } from "@qwik.dev/core/build";
18
+
19
+ // packages/qwik/src/core/shared/error/assert.ts
20
+ import { isDev as te } from "@qwik.dev/core/build";
21
+
22
+ // packages/qwik/src/core/shared/utils/qdev.ts
23
+ var ne = globalThis;
24
+
25
+ var ee = ne.qDev !== false;
26
+
27
+ var qInspector = ne.qInspector === true;
28
+
29
+ var re = ne.qDynamicPlatform !== false;
30
+
31
+ var ie = ne.qTest === true;
32
+
33
+ var se = ne.qRuntimeQrl === true;
34
+
35
+ // packages/qwik/src/core/shared/utils/log.ts
36
+ var le = ee ? `background: #564CE0; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;` : "";
37
+
38
+ var throwErrorAndStop = (e, ...t) => {
39
+ const r = ae(false, e, ...t);
40
+ debugger;
41
+ throw r;
42
+ };
43
+
44
+ var logErrorAndStop = (e, ...t) => {
45
+ const r = ae(ee, e, ...t);
46
+ debugger;
47
+ return r;
48
+ };
49
+
50
+ var ae = (e, t, ...r) => {
51
+ const n = t instanceof Error ? t : new Error(t);
52
+ !ie && console.error("%cQWIK ERROR", le, n.message, ...r, n.stack);
53
+ e && !ie && setTimeout(() => {
54
+ throw n;
55
+ }, 0);
56
+ return n;
57
+ };
58
+
59
+ // packages/qwik/src/core/shared/error/assert.ts
60
+ var ASSERT_DISCLAIMER = "Internal assert, this is likely caused by a bug in Qwik: ";
61
+
62
+ function assertTrue(e, t, ...r) {
63
+ if (te) {
64
+ if (e === true) {
65
+ return;
66
+ }
67
+ throwErrorAndStop(ASSERT_DISCLAIMER + t, ...r);
68
+ }
69
+ }
70
+
71
+ // packages/qwik/src/core/client/util-mapArray.ts
72
+ var he = (e, t, r) => {
73
+ isDev2 && assertTrue(r % 2 === 0, "Expecting even number.");
74
+ let n = r >> 1;
75
+ let s = e.length - 2 >> 1;
76
+ while (n <= s) {
77
+ const r = n + (s - n >> 1);
78
+ const i = e[r << 1];
79
+ if (i === t) {
80
+ return r << 1;
81
+ }
82
+ if (i < t) {
83
+ n = r + 1;
84
+ } else {
85
+ s = r - 1;
86
+ }
87
+ }
88
+ return n << 1 ^ -1;
89
+ };
90
+
91
+ var de = (e, t, r, n, s = false) => {
92
+ const i = he(e, t, n);
93
+ if (i >= 0) {
94
+ if (r == null && !s) {
95
+ e.splice(i, 2);
96
+ } else {
97
+ e[i + 1] = r;
98
+ }
99
+ } else if (r != null || s) {
100
+ e.splice(i ^ -1, 0, t, r);
101
+ }
102
+ };
103
+
104
+ var mapApp_remove = (e, t, r) => {
105
+ const n = he(e, t, r);
106
+ let s = null;
107
+ if (n >= 0) {
108
+ s = e[n + 1];
109
+ e.splice(n, 2);
110
+ return s;
111
+ }
112
+ return s;
113
+ };
114
+
115
+ var $e = (e, t, r) => {
116
+ const n = he(e, t, r);
117
+ if (n >= 0) {
118
+ return e[n + 1];
119
+ } else {
120
+ return null;
121
+ }
122
+ };
123
+
124
+ var pe = (e, t, r) => he(e, t, r) >= 0;
125
+
126
+ // packages/qwik/src/core/shared/utils/types.ts
127
+ var ye = e => typeof e === "object" && e !== null;
128
+
129
+ var we = e => Array.isArray(e);
130
+
131
+ var be = e => typeof e === "string";
132
+
133
+ // packages/qwik/src/core/shared/error/error.ts
134
+ var codeToText = (e, ...t) => {
135
+ if (ee) {
136
+ const r = [ "Error while serializing class or style attributes",
137
+ // 0
138
+ "Scheduler not found",
139
+ // 1
140
+ "track() received object, without prop to track",
141
+ // 2
142
+ "Only primitive and object literals can be serialized. {{0}}",
143
+ // 3
144
+ "You can render over a existing q:container. Skipping render().",
145
+ // 4
146
+ "QRL is not a function",
147
+ // 5
148
+ "Dynamic import {{0}} not found",
149
+ // 6
150
+ "Unknown type argument",
151
+ // 7
152
+ `Actual value for useContext({{0}}) can not be found, make sure some ancestor component has set a value using useContextProvider(). In the browser make sure that the context was used during SSR so its state was serialized.`,
153
+ // 8
154
+ "Invoking 'use*()' method outside of invocation context.",
155
+ // 9
156
+ `Calling a 'use*()' method outside 'component$(() => { HERE })' is not allowed. 'use*()' methods provide hooks to the 'component$' state and lifecycle, ie 'use' hooks can only be called synchronously within the 'component$' function or another 'use' method.\nSee https://qwik.dev/docs/core/tasks/#use-method-rules`,
157
+ // 10
158
+ 'The provided Context reference "{{0}}" is not a valid context created by createContextId()',
159
+ // 11
160
+ "SsrError(tag): {{0}}",
161
+ // 12
162
+ "QRLs can not be resolved because it does not have an attached container. This means that the QRL does not know where it belongs inside the DOM, so it cant dynamically import() from a relative path.",
163
+ // 13
164
+ "QRLs can not be dynamically resolved, because it does not have a chunk path",
165
+ // 14
166
+ "{{0}}\nThe JSX ref attribute must be a Signal",
167
+ // 15
168
+ "Serialization Error: Deserialization of data type {{0}} is not implemented",
169
+ // 16
170
+ "Serialization Error: Expected vnode for ref prop, but got {{0}}",
171
+ // 17
172
+ "Serialization Error: Cannot allocate data type {{0}}",
173
+ // 18
174
+ "Serialization Error: Missing root id for {{0}}",
175
+ // 19
176
+ "Serialization Error: Serialization of data type {{0}} is not implemented",
177
+ // 20
178
+ "Serialization Error: Unvisited {{0}}",
179
+ // 21
180
+ "Serialization Error: Missing QRL chunk for {{0}}",
181
+ // 22
182
+ "{{0}}\nThe value of the textarea must be a string found {{1}}",
183
+ // 23
184
+ "Unable to find q:container",
185
+ // 24
186
+ "Element must have 'q:container' attribute.",
187
+ // 25
188
+ "Unknown vnode type {{0}}.",
189
+ // 26
190
+ "Materialize error: missing element: {{0}} {{1}} {{2}}",
191
+ // 27
192
+ "Cannot coerce a Signal, use `.value` instead",
193
+ // 28
194
+ "useComputed$ QRL {{0}} {{1}} cannot return a Promise",
195
+ // 29
196
+ `===\nQwik version {{0}} already imported while importing {{1}}.\nThis can lead to issues due to duplicated shared structures.\nVerify that the Qwik libraries you're using are in "resolve.noExternal[]" and in "optimizeDeps.exclude".\n===\n`,
197
+ // 30
198
+ "WrappedSignal is read-only",
199
+ // 31
200
+ "Attribute value is unsafe for SSR {{0}}",
201
+ // 32
202
+ "SerializerSymbol function returned rejected promise",
203
+ // 33
204
+ "Serialization Error: Cannot serialize function: {{0}}" ];
205
+ let n = r[e] ?? "";
206
+ if (t.length) {
207
+ n = n.replaceAll(/{{(\d+)}}/g, (e, r) => {
208
+ let n = t[r];
209
+ if (n && ye(n) && n.constructor === Object) {
210
+ n = JSON.stringify(n).slice(0, 50);
211
+ }
212
+ return n;
213
+ });
214
+ }
215
+ return `Code(Q${e}): ${n}`;
216
+ } else {
217
+ return `Code(Q${e}) https://github.com/QwikDev/qwik/blob/build/v2/packages/qwik/src/core/shared/error/error.ts#${t.join()}L${9 + e}`;
218
+ }
219
+ };
220
+
221
+ var ge = (e, t = []) => {
222
+ const r = codeToText(e, ...t);
223
+ return logErrorAndStop(r, ...t);
224
+ };
225
+
226
+ // packages/qwik/src/core/shared/qrl/qrl-utils.ts
227
+ import { isDev as isDev3 } from "@qwik.dev/core/build";
228
+
229
+ var Se = "<sync>";
230
+
231
+ var Ea = e => {
232
+ const t = e.lastIndexOf("_") + 1;
233
+ return e.slice(t);
234
+ };
235
+
236
+ // packages/qwik/src/core/shared/types.ts
237
+ var xe = "q:type";
238
+
239
+ // packages/qwik/src/core/shared/vnode-data-types.ts
240
+ var VNodeDataSeparator = {
241
+ REFERENCE_CH:
242
+ /* ***** */ `~`,
243
+ // `~` is a reference to the node. Save it.
244
+ REFERENCE:
245
+ /* ******** */ 126,
246
+ // `~` is a reference to the node. Save it.
247
+ ADVANCE_1_CH:
248
+ /* ***** */ `!`,
249
+ // `!` is vNodeData separator skipping 0. (ie next vNode)
250
+ ADVANCE_1:
251
+ /* ********* */ 33,
252
+ // `!` is vNodeData separator skipping 0. (ie next vNode)
253
+ ADVANCE_2_CH:
254
+ /* ***** */ `"`,
255
+ // `"` is vNodeData separator skipping 1.
256
+ ADVANCE_2:
257
+ /* ********* */ 34,
258
+ // `"` is vNodeData separator skipping 1.
259
+ ADVANCE_4_CH:
260
+ /* ***** */ `#`,
261
+ // `#` is vNodeData separator skipping 2.
262
+ ADVANCE_4:
263
+ /* ********* */ 35,
264
+ // `#` is vNodeData separator skipping 2.
265
+ ADVANCE_8_CH:
266
+ /* ***** */ `$`,
267
+ // `$` is vNodeData separator skipping 4.
268
+ ADVANCE_8:
269
+ /* ********* */ 36,
270
+ // `$` is vNodeData separator skipping 4.
271
+ ADVANCE_16_CH:
272
+ /* **** */ `%`,
273
+ // `%` is vNodeData separator skipping 8.
274
+ ADVANCE_16:
275
+ /* ******** */ 37,
276
+ // `%` is vNodeData separator skipping 8.
277
+ ADVANCE_32_CH:
278
+ /* **** */ `&`,
279
+ // `&` is vNodeData separator skipping 16.
280
+ ADVANCE_32:
281
+ /* ******** */ 38,
282
+ // `&` is vNodeData separator skipping 16.
283
+ ADVANCE_64_CH:
284
+ /* **** */ `'`,
285
+ // `'` is vNodeData separator skipping 32.
286
+ ADVANCE_64:
287
+ /* ******** */ 39,
288
+ // `'` is vNodeData separator skipping 32.
289
+ ADVANCE_128_CH:
290
+ /* *** */ `(`,
291
+ // `(` is vNodeData separator skipping 64.
292
+ ADVANCE_128:
293
+ /* ******* */ 40,
294
+ // `(` is vNodeData separator skipping 64.
295
+ ADVANCE_256_CH:
296
+ /* *** */ `)`,
297
+ // `)` is vNodeData separator skipping 128.
298
+ ADVANCE_256:
299
+ /* ******* */ 41,
300
+ // `)` is vNodeData separator skipping 128.
301
+ ADVANCE_512_CH:
302
+ /* *** */ `*`,
303
+ // `*` is vNodeData separator skipping 256.
304
+ ADVANCE_512:
305
+ /* ******* */ 42,
306
+ // `*` is vNodeData separator skipping 256.
307
+ ADVANCE_1024_CH:
308
+ /* ** */ `+`,
309
+ // `+` is vNodeData separator skipping 512.
310
+ ADVANCE_1024:
311
+ /* ****** */ 43,
312
+ // `+` is vNodeData separator skipping 512.
313
+ ADVANCE_2048_CH:
314
+ /* * */ ",",
315
+ // ',' is vNodeData separator skipping 1024.
316
+ ADVANCE_2048:
317
+ /* ****** */ 44,
318
+ // ',' is vNodeData separator skipping 1024.
319
+ ADVANCE_4096_CH:
320
+ /* * */ `-`,
321
+ // `-` is vNodeData separator skipping 2048.
322
+ ADVANCE_4096:
323
+ /* ****** */ 45,
324
+ // `-` is vNodeData separator skipping 2048.
325
+ ADVANCE_8192_CH:
326
+ /* * */ `.`,
327
+ // `.` is vNodeData separator skipping 4096.
328
+ ADVANCE_8192:
329
+ /* ****** */ 46
330
+ };
331
+
332
+ var VNodeDataChar = {
333
+ OPEN:
334
+ /* ************** */ 123,
335
+ // `{` is the start of the VNodeData for a virtual element.
336
+ OPEN_CHAR:
337
+ /* ****** */ "{",
338
+ CLOSE:
339
+ /* ************* */ 125,
340
+ // `}` is the end of the VNodeData for a virtual element.
341
+ CLOSE_CHAR:
342
+ /* ***** */ "}",
343
+ SCOPED_STYLE:
344
+ /* ******* */ 59,
345
+ // `;` - `q:sstyle` - Style attribute.
346
+ SCOPED_STYLE_CHAR:
347
+ ";",
348
+ RENDER_FN:
349
+ /* ********** */ 60,
350
+ // `<` - `q:renderFn' - Component QRL render function (body)
351
+ RENDER_FN_CHAR:
352
+ /* ** */ "<",
353
+ ID:
354
+ /* ***************** */ 61,
355
+ // `=` - `q:id` - ID of the element.
356
+ ID_CHAR:
357
+ /* ********* */ "=",
358
+ PROPS:
359
+ /* ************** */ 62,
360
+ // `>` - `q:props' - Component Props
361
+ PROPS_CHAR:
362
+ /* ****** */ ">",
363
+ SLOT_PARENT:
364
+ /* ******** */ 63,
365
+ // `?` - `q:sparent` - Slot parent.
366
+ SLOT_PARENT_CHAR:
367
+ "?",
368
+ KEY:
369
+ /* **************** */ 64,
370
+ // `@` - `q:key` - Element key.
371
+ KEY_CHAR:
372
+ /* ******** */ "@",
373
+ SEQ:
374
+ /* **************** */ 91,
375
+ // `[` - `q:seq' - Seq value from `useSequentialScope()`
376
+ SEQ_CHAR:
377
+ /* ******** */ "[",
378
+ DON_T_USE:
379
+ /* ********** */ 92,
380
+ // `\` - SKIP because `\` is used as escaping
381
+ DON_T_USE_CHAR: "\\",
382
+ CONTEXT:
383
+ /* ************ */ 93,
384
+ // `]` - `q:ctx' - Component context/props
385
+ CONTEXT_CHAR:
386
+ /* **** */ "]",
387
+ SEQ_IDX:
388
+ /* ************ */ 94,
389
+ // `^` - `q:seqIdx' - Sequential scope id
390
+ SEQ_IDX_CHAR:
391
+ /* **** */ "^",
392
+ BACK_REFS:
393
+ /* ********** */ 96,
394
+ // '`' - `q:brefs' - Effect dependencies/subscriptions
395
+ BACK_REFS_CHAR:
396
+ /* ** */ "`",
397
+ SEPARATOR:
398
+ /* ********* */ 124,
399
+ // `|` - Separator char to encode any key/value pairs.
400
+ SEPARATOR_CHAR:
401
+ /* ** */ "|",
402
+ SLOT:
403
+ /* ************** */ 126,
404
+ // `~` - `q:slot' - Slot name
405
+ SLOT_CHAR:
406
+ /* ******* */ "~"
407
+ };
408
+
409
+ // packages/qwik/src/core/shared/utils/character-escaping.ts
410
+ function escapeHTML(e) {
411
+ let t = "";
412
+ const r = e.length;
413
+ let n = 0;
414
+ let s = n;
415
+ for (;n < r; n++) {
416
+ const r = e.charCodeAt(n);
417
+ if (r === 60) {
418
+ t += e.substring(s, n) + "&lt;";
419
+ } else if (r === 62) {
420
+ t += e.substring(s, n) + "&gt;";
421
+ } else if (r === 38) {
422
+ t += e.substring(s, n) + "&amp;";
423
+ } else if (r === 34) {
424
+ t += e.substring(s, n) + "&quot;";
425
+ } else if (r === 39) {
426
+ t += e.substring(s, n) + "&#39;";
427
+ } else {
428
+ continue;
429
+ }
430
+ s = n + 1;
431
+ }
432
+ if (s === 0) {
433
+ return e;
434
+ } else {
435
+ return t + e.substring(s);
436
+ }
437
+ }
438
+
439
+ function encodeVNodeDataString(e) {
440
+ let t = "";
441
+ const r = e.length;
442
+ let n = 0;
443
+ let s = n;
444
+ for (;n < r; n++) {
445
+ const r = e.charCodeAt(n);
446
+ if (r >= VNodeDataSeparator.ADVANCE_1 && r <= VNodeDataSeparator.ADVANCE_8192) {
447
+ t += e.substring(s, n) + "\\" + e.charAt(n);
448
+ } else {
449
+ continue;
450
+ }
451
+ s = n + 1;
452
+ }
453
+ if (s === 0) {
454
+ return e;
455
+ } else {
456
+ return t + e.substring(s);
457
+ }
458
+ }
459
+
460
+ // packages/qwik/src/core/shared/utils/markers.ts
461
+ var Ce = "q:renderFn";
462
+
463
+ var _e = "q:slot";
464
+
465
+ var QSlotParent = "q:sparent";
466
+
467
+ var Oe = "q:style";
468
+
469
+ var Ae = "style[q\\:style]";
470
+
471
+ var QStyleSSelector = "style[q\\:sstyle]";
472
+
473
+ var Me = Ae + "," + QStyleSSelector;
474
+
475
+ var Ne = "q:sstyle";
476
+
477
+ var Ie = "q:ctx";
478
+
479
+ var Te = "q:brefs";
480
+
481
+ var QRenderAttr = "q:render";
482
+
483
+ var QRuntimeAttr = "q:runtime";
484
+
485
+ var QVersionAttr = "q:version";
486
+
487
+ var ze = "q:base";
488
+
489
+ var QLocaleAttr = "q:locale";
490
+
491
+ var QManifestHashAttr = "q:manifest-hash";
492
+
493
+ var QInstanceAttr = "q:instance";
494
+
495
+ var Le = "q:container-island";
496
+
497
+ var De = "/" + Le;
498
+
499
+ var We = "q:ignore";
500
+
501
+ var Ue = "/" + We;
502
+
503
+ var Ve = "q:container";
504
+
505
+ var Qe = "/" + Ve;
506
+
507
+ var Je = "q:template";
508
+
509
+ var QContainerSelector = "[q\\:container]:not([q\\:container=" + "html" /* HTML */ + "]):not([q\\:container=" + "text" /* TEXT */ + "])";
510
+
511
+ var Ge = "";
512
+
513
+ var ELEMENT_ID = "q:id";
514
+
515
+ var Ke = "q:key";
516
+
517
+ var Ze = "q:props";
518
+
519
+ var tr = "q:seq";
520
+
521
+ var nr = "q:seqIdx";
522
+
523
+ var ELEMENT_BACKPATCH_DATA = "qwik/backpatch";
524
+
525
+ var er = "q:p";
526
+
527
+ var rr = "q:ps";
528
+
529
+ var ir = ":";
530
+
531
+ var sr = ir + "on";
532
+
533
+ var or = ir + "onIdx";
534
+
535
+ var lr = ir + "onFlags";
536
+
537
+ var cr = ":";
538
+
539
+ var ur = "dangerouslySetInnerHTML";
540
+
541
+ // packages/qwik/src/core/shared/utils/promises.ts
542
+ import { isDev as isDev4, isServer as Kn } from "@qwik.dev/core/build";
543
+
544
+ var ar = 100;
545
+
546
+ var hr = e => !!e && typeof e == "object" && typeof e.then === "function";
547
+
548
+ var $r = (e, t) => hr(e) ? e.then(t) : t(e);
549
+
550
+ var checkError = e => {
551
+ if (Kn && e instanceof ReferenceError && e.message.includes("window")) {
552
+ e.message = 'It seems like you forgot to add "if (isBrowser) {...}" here:' + e.message;
553
+ }
554
+ };
555
+
556
+ var pr = e => {
557
+ throw e;
558
+ };
559
+
560
+ function n(e, t = pr) {
561
+ let r = false;
562
+ let n;
563
+ try {
564
+ n = e();
565
+ r = true;
566
+ } catch (e) {
567
+ n = e;
568
+ }
569
+ if (!hr(n)) {
570
+ if (r) {
571
+ return n;
572
+ }
573
+ isDev4 && checkError(n);
574
+ return t(n);
575
+ }
576
+ let s = ar;
577
+ const i = async r => {
578
+ while (hr(r)) {
579
+ try {
580
+ await r;
581
+ return await e();
582
+ } catch (e) {
583
+ if (hr(e)) {
584
+ if (! --s) {
585
+ r = new Error("Exceeded max retry count in retryOnPromise");
586
+ break;
587
+ } else {
588
+ r = e;
589
+ }
590
+ } else {
591
+ r = e;
592
+ break;
593
+ }
594
+ }
595
+ }
596
+ isDev4 && checkError(r);
597
+ return t(r);
598
+ };
599
+ return r ? n.catch(i) : i(n);
600
+ }
601
+
602
+ // packages/qwik/src/core/shared/utils/scoped-styles.ts
603
+ function isClassAttr(e) {
604
+ return e === "class";
605
+ }
606
+
607
+ function convertStyleIdsToString(e) {
608
+ return Array.from(e).join(" ");
609
+ }
610
+
611
+ // packages/qwik/src/core/shared/utils/event-names.ts
612
+ var wr = e => e.charCodeAt(0) === 113 && e.charCodeAt(1) === 45 && e.charCodeAt(3) === 58;
613
+
614
+ function isPreventDefault(e) {
615
+ return e.startsWith("preventdefault:");
616
+ }
617
+
618
+ // packages/qwik/src/core/shared/utils/unitless_number.ts
619
+ var vr = /* @__PURE__ */ new Set([ "animationIterationCount", "aspectRatio", "borderImageOutset", "borderImageSlice", "borderImageWidth", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "columns", "flex", "flexGrow", "flexShrink", "gridArea", "gridRow", "gridRowEnd", "gridRowStart", "gridColumn", "gridColumnEnd", "gridColumnStart", "fontWeight", "lineClamp", "lineHeight", "opacity", "order", "orphans", "scale", "tabSize", "widows", "zIndex", "zoom", "MozAnimationIterationCount",
620
+ // Known Prefixed Properties
621
+ "MozBoxFlex",
622
+ // TODO: Remove these since they shouldn't be used in modern code
623
+ "msFlex", "msFlexPositive", "WebkitAnimationIterationCount", "WebkitBoxFlex", "WebkitBoxOrdinalGroup", "WebkitColumnCount", "WebkitColumns", "WebkitFlex", "WebkitFlexGrow", "WebkitFlexShrink", "WebkitLineClamp" ]);
624
+
625
+ var isUnitlessNumber = e => vr.has(e);
626
+
627
+ // packages/qwik/src/core/shared/utils/styles.ts
628
+ var Sr = e => {
629
+ if (!e) {
630
+ return "";
631
+ }
632
+ if (be(e)) {
633
+ return e.trim();
634
+ }
635
+ const t = [];
636
+ if (we(e)) {
637
+ for (let r = 0; r < e.length; r++) {
638
+ const n = e[r];
639
+ const s = Sr(n);
640
+ if (s) {
641
+ t.push(s);
642
+ }
643
+ }
644
+ } else {
645
+ for (const [r, n] of Object.entries(e)) {
646
+ if (n) {
647
+ t.push(r.trim());
648
+ }
649
+ }
650
+ }
651
+ return t.join(" ");
652
+ };
653
+
654
+ var kr = e => e.replace(/([A-Z])/g, "-$1").toLowerCase();
655
+
656
+ var stringifyStyle = e => {
657
+ if (e == null) {
658
+ return "";
659
+ }
660
+ if (typeof e == "object") {
661
+ if (we(e)) {
662
+ throw ge(0 /* stringifyClassOrStyle */ , [ e, "style" ]);
663
+ } else {
664
+ const t = [];
665
+ for (const r in e) {
666
+ if (Object.prototype.hasOwnProperty.call(e, r)) {
667
+ const n = e[r];
668
+ if (n != null && typeof n !== "function") {
669
+ if (r.startsWith("--")) {
670
+ t.push(r + ":" + n);
671
+ } else {
672
+ t.push(kr(r) + ":" + xr(r, n));
673
+ }
674
+ }
675
+ }
676
+ }
677
+ return t.join(";");
678
+ }
679
+ }
680
+ return String(e);
681
+ };
682
+
683
+ var serializeBooleanOrNumberAttribute = e => e != null ? String(e) : null;
684
+
685
+ function r(e, t, r) {
686
+ if (isClassAttr(e)) {
687
+ const e = Sr(t);
688
+ t = r ? r + (e.length ? " " + e : e) : e;
689
+ } else if (e === "style") {
690
+ t = stringifyStyle(t);
691
+ } else if (isEnumeratedBooleanAttribute(e) || typeof t === "number") {
692
+ t = serializeBooleanOrNumberAttribute(t);
693
+ } else if (t === false || t == null) {
694
+ t = null;
695
+ } else if (t === true && isPreventDefault(e)) {
696
+ t = "";
697
+ }
698
+ return t;
699
+ }
700
+
701
+ function isEnumeratedBooleanAttribute(e) {
702
+ return isAriaAttribute(e) || [ "spellcheck", "draggable", "contenteditable" ].includes(e);
703
+ }
704
+
705
+ var xr = (e, t) => {
706
+ if (typeof t === "number" && t !== 0 && !isUnitlessNumber(e)) {
707
+ return t + "px";
708
+ }
709
+ return t;
710
+ };
711
+
712
+ function isAriaAttribute(e) {
713
+ return e.startsWith("aria-");
714
+ }
715
+
716
+ // packages/qwik/src/core/preloader/queue.ts
717
+ import { isBrowser as isBrowser3 } from "@qwik.dev/core/build";
718
+
719
+ // packages/qwik/src/core/preloader/bundle-graph.ts
720
+ import { isServer as isServer4 } from "@qwik.dev/core/build";
721
+
722
+ // packages/qwik/src/core/shared/platform/platform.ts
723
+ import { isServer as isServer2 } from "@qwik.dev/core/build";
724
+
725
+ var qr = () => ({
726
+ isServer: isServer2,
727
+ importSymbol(e, t, r) {
728
+ if (isServer2) {
729
+ const e = Ea(r);
730
+ const t = globalThis.__qwik_reg_symbols?.get(e);
731
+ if (t) {
732
+ return t;
733
+ }
734
+ throw ge(6 /* dynamicImportFailed */ , [ r ]);
735
+ }
736
+ if (!t) {
737
+ throw ge(14 /* qrlMissingChunk */ , [ r ]);
738
+ }
739
+ if (!e) {
740
+ throw ge(13 /* qrlMissingContainer */ , [ t, r ]);
741
+ }
742
+ const n = Rr(e.ownerDocument, e, t).toString();
743
+ const s = new URL(n);
744
+ s.hash = "";
745
+ const i = s.href;
746
+ return import(
747
+ /* @vite-ignore */
748
+ i).then(e => e[r]);
749
+ },
750
+ raf: e => new Promise(t => {
751
+ requestAnimationFrame(() => {
752
+ t(e());
753
+ });
754
+ }),
755
+ chunkForSymbol(e, t) {
756
+ return [ e, t ?? "_" ];
757
+ }
758
+ });
759
+
760
+ var Rr = (e, t, r) => {
761
+ const n = e.baseURI;
762
+ const s = new URL(t.getAttribute(ze) ?? n, n);
763
+ return new URL(r, s);
764
+ };
765
+
766
+ var Cr = /* @__PURE__ */ qr();
767
+
768
+ var _r = () => {
769
+ if (re) {
770
+ return Cr.isServer;
771
+ }
772
+ return false;
773
+ };
774
+
775
+ // packages/qwik/src/core/shared/platform/next-tick.ts
776
+ var Pr = e => {
777
+ let t;
778
+ if (typeof MessageChannel !== "undefined") {
779
+ const r = new MessageChannel;
780
+ r.port1.onmessage = () => e();
781
+ t = () => r.port2.postMessage(null);
782
+ } else {
783
+ t = () => setTimeout(e);
784
+ }
785
+ return t;
786
+ };
787
+
788
+ // packages/qwik/src/core/preloader/constants.ts
789
+ import { isServer as isServer3 } from "@qwik.dev/core/build";
790
+
791
+ var Or = import.meta.env.TEST ? !_r() : !isServer3;
792
+
793
+ var Ar = Or ? document : void 0;
794
+
795
+ var config = {
796
+ t: false,
797
+ i: 25,
798
+ v: .65
799
+ };
800
+
801
+ var Mr = Or && Ar.createElement("link").relList?.supports?.("modulepreload") ? "modulePreload" : "preload";
802
+
803
+ var loadStart = performance.now();
804
+
805
+ var Nr = /\.[mc]?js$/;
806
+
807
+ var Ir = 1e3 / 60;
808
+
809
+ // packages/qwik/src/core/preloader/types.ts
810
+ var BundleImportState_None = 0;
811
+
812
+ var BundleImportState_Queued = 1;
813
+
814
+ var BundleImportState_Preload = 2;
815
+
816
+ var BundleImportState_Alias = 3;
817
+
818
+ var BundleImportState_Loaded = 4;
819
+
820
+ // packages/qwik/src/core/preloader/bundle-graph.ts
821
+ var base;
822
+
823
+ var graph;
824
+
825
+ var isBrowser2 = import.meta.env.TEST ? !_r() : !isServer4;
826
+
827
+ var makeBundle = (e, t) => ({
828
+ Lt: e,
829
+ Mt: Nr.test(e) ? BundleImportState_None : BundleImportState_Alias,
830
+ Dt: shouldResetFactor ? t?.map(e => ({
831
+ ...e,
832
+ Kt: 1
833
+ })) : t,
834
+ Wt: 1,
835
+ Ut: performance.now(),
836
+ Vt: 0,
837
+ Qt: 0
838
+ });
839
+
840
+ var parseBundleGraph = e => {
841
+ const t = /* @__PURE__ */ new Map;
842
+ let r = 0;
843
+ while (r < e.length) {
844
+ const n = e[r++];
845
+ const s = [];
846
+ let i;
847
+ let o = 1;
848
+ while (i = e[r], typeof i === "number") {
849
+ if (i < 0) {
850
+ o = -i / 10;
851
+ } else {
852
+ s.push({
853
+ Lt: e[i],
854
+ Gt: o,
855
+ Kt: 1
856
+ });
857
+ }
858
+ r++;
859
+ }
860
+ t.set(n, s);
861
+ }
862
+ return t;
863
+ };
864
+
865
+ var Tr = e => {
866
+ let t = Fr.get(e);
867
+ if (!t) {
868
+ let r;
869
+ if (graph) {
870
+ r = graph.get(e);
871
+ if (!r) {
872
+ return;
873
+ }
874
+ if (!r.length) {
875
+ r = void 0;
876
+ }
877
+ }
878
+ t = makeBundle(e, r);
879
+ Fr.set(e, t);
880
+ }
881
+ return t;
882
+ };
883
+
884
+ var initPreloader = (e, t) => {
885
+ if (t) {
886
+ if ("debug" in t) {
887
+ config.t = !!t.debug;
888
+ }
889
+ if (typeof t.preloadProbability === "number") {
890
+ config.v = 1 - t.preloadProbability;
891
+ }
892
+ }
893
+ if (base != null || !e) {
894
+ return;
895
+ }
896
+ base = "";
897
+ graph = parseBundleGraph(e);
898
+ };
899
+
900
+ // packages/qwik/src/core/preloader/queue.ts
901
+ var Fr = /* @__PURE__ */ new Map;
902
+
903
+ var shouldResetFactor;
904
+
905
+ var queueDirty;
906
+
907
+ var zr = 0;
908
+
909
+ var Lr = [];
910
+
911
+ var Dr = Pr(_a);
912
+
913
+ var Wr = Pr(i);
914
+
915
+ var Ur = false;
916
+
917
+ var Vr = false;
918
+
919
+ var Qr = false;
920
+
921
+ var Jr = import.meta.env.TEST ? !_r() : isBrowser3;
922
+
923
+ var Br = [];
924
+
925
+ var log = (...e) => {
926
+ console.log(`Preloader ${performance.now() - loadStart}ms ${zr}/${Lr.length} queued>`, ...e);
927
+ };
928
+
929
+ var resetQueue = () => {
930
+ Fr.clear();
931
+ queueDirty = false;
932
+ shouldResetFactor = true;
933
+ zr = 0;
934
+ Lr.length = 0;
935
+ Br.length = 0;
936
+ Ur = false;
937
+ Vr = false;
938
+ Qr = false;
939
+ };
940
+
941
+ var sortQueue = () => {
942
+ if (queueDirty) {
943
+ Lr.sort((e, t) => e.Wt - t.Wt);
944
+ queueDirty = false;
945
+ }
946
+ };
947
+
948
+ var getQueue = () => {
949
+ sortQueue();
950
+ let e = .4;
951
+ const t = [];
952
+ for (let r = 0; r < Lr.length; r++) {
953
+ const n = Lr[r];
954
+ const s = Math.round((1 - n.Wt) * 10);
955
+ if (s !== e) {
956
+ e = s;
957
+ t.push(e);
958
+ }
959
+ t.push(n.Lt);
960
+ }
961
+ return t;
962
+ };
963
+
964
+ function _a() {
965
+ Ur = false;
966
+ if (!Lr.length) {
967
+ return;
968
+ }
969
+ sortQueue();
970
+ const e = performance.now() + Ir;
971
+ let t = false;
972
+ while (Lr.length) {
973
+ const r = Lr[0];
974
+ const n = r.Wt;
975
+ const s = 1 - n;
976
+ const i = graph ? config.i :
977
+ // While the graph is not available, we limit to 5 preloads
978
+ 5;
979
+ if (s >= .99 || zr < i) {
980
+ Lr.shift();
981
+ Xr(r);
982
+ if (performance.now() >= e) {
983
+ t = true;
984
+ break;
985
+ }
986
+ } else {
987
+ break;
988
+ }
989
+ }
990
+ if (t && Lr.length && !Ur) {
991
+ Ur = true;
992
+ Dr();
993
+ }
994
+ if (config.t && !Lr.length) {
995
+ const e = [ ...Fr.values() ].filter(e => e.Mt > BundleImportState_None);
996
+ const t = e.reduce((e, t) => e + t.Vt, 0);
997
+ const r = e.reduce((e, t) => e + t.Qt, 0);
998
+ log(`>>>> done ${e.length}/${Fr.size} total: ${t}ms waited, ${r}ms loaded`);
999
+ }
1000
+ }
1001
+
1002
+ var Hr = (e, t, r, n) => {
1003
+ Br.unshift({
1004
+ Jt: e,
1005
+ Wt: t,
1006
+ Bt: n,
1007
+ Ht: r
1008
+ });
1009
+ };
1010
+
1011
+ var Yr = () => {
1012
+ const e = Br[Br.length - 1];
1013
+ const t = e.Jt;
1014
+ if (e.Dt) {
1015
+ const r = e.Yt;
1016
+ if (r >= e.Dt.length) {
1017
+ Br.pop();
1018
+ return false;
1019
+ }
1020
+ const n = e.Dt[r];
1021
+ e.Yt = r + 1;
1022
+ const s = Tr(n.Lt);
1023
+ if (s.Wt === 0) {
1024
+ return true;
1025
+ }
1026
+ const i = 1 - t.Wt;
1027
+ let o;
1028
+ if (i === 1 || i >= .99 && e.Ht.Xt < 100) {
1029
+ e.Ht.Xt++;
1030
+ o = Math.min(.01, 1 - n.Gt);
1031
+ } else {
1032
+ const e = 1 - n.Gt * i;
1033
+ const t = n.Kt;
1034
+ const r = e / t;
1035
+ o = Math.max(.02, s.Wt * r);
1036
+ n.Kt = r;
1037
+ }
1038
+ Br.push({
1039
+ Jt: s,
1040
+ Wt: o,
1041
+ Bt: e.Bt,
1042
+ Ht: e.Ht
1043
+ });
1044
+ return true;
1045
+ }
1046
+ if (e.Bt?.has(t)) {
1047
+ Br.pop();
1048
+ return false;
1049
+ }
1050
+ const r = t.Wt;
1051
+ t.Wt = e.Wt;
1052
+ if (r - t.Wt < .01) {
1053
+ Br.pop();
1054
+ return false;
1055
+ }
1056
+ if (
1057
+ // don't queue until we have initialized the preloader
1058
+ base != null && t.Mt < BundleImportState_Preload) {
1059
+ if (t.Mt === BundleImportState_None) {
1060
+ t.Mt = BundleImportState_Queued;
1061
+ Lr.push(t);
1062
+ config.t && log(`queued ${Math.round((1 - t.Wt) * 100)}%`, t.Lt);
1063
+ }
1064
+ queueDirty = true;
1065
+ }
1066
+ if (t.Dt?.length) {
1067
+ const r = e.Bt || /* @__PURE__ */ new Set;
1068
+ r.add(t);
1069
+ e.Bt = r;
1070
+ e.Dt = t.Dt;
1071
+ e.Yt = 0;
1072
+ return false;
1073
+ }
1074
+ Br.pop();
1075
+ return false;
1076
+ };
1077
+
1078
+ function i() {
1079
+ if (Qr || !Br.length) {
1080
+ return;
1081
+ }
1082
+ Vr = false;
1083
+ Qr = true;
1084
+ const e = Jr ? performance.now() + Ir : 0;
1085
+ let t = false;
1086
+ while (Br.length) {
1087
+ t = true;
1088
+ const r = Yr();
1089
+ if (Jr && r && performance.now() >= e) {
1090
+ if (!Vr) {
1091
+ Vr = true;
1092
+ Wr();
1093
+ }
1094
+ break;
1095
+ }
1096
+ }
1097
+ Qr = false;
1098
+ if (t && Jr) {
1099
+ Dr();
1100
+ }
1101
+ }
1102
+
1103
+ var Xr = e => {
1104
+ if (e.Mt >= BundleImportState_Preload) {
1105
+ return;
1106
+ }
1107
+ zr++;
1108
+ const t = performance.now();
1109
+ e.Vt = t - e.Ut;
1110
+ e.Mt = BundleImportState_Preload;
1111
+ config.t && log(`<< load ${Math.round((1 - e.Wt) * 100)}% after ${`${e.Vt}ms`}`, e.Lt);
1112
+ const r = Ar.createElement("link");
1113
+ r.href = new URL(`${base}${e.Lt}`, Ar.baseURI).toString();
1114
+ r.rel = Mr;
1115
+ r.as = "script";
1116
+ r.onload = r.onerror = () => {
1117
+ zr--;
1118
+ const n = performance.now();
1119
+ e.Qt = n - t;
1120
+ e.Mt = BundleImportState_Loaded;
1121
+ config.t && log(`>> done after ${e.Qt}ms`, e.Lt);
1122
+ r.remove();
1123
+ Dr();
1124
+ };
1125
+ Ar.head.appendChild(r);
1126
+ };
1127
+
1128
+ var adjustProbabilities = (e, t, r) => {
1129
+ Hr(e, t, {
1130
+ Xt: 0
1131
+ }, r);
1132
+ if (Jr) {
1133
+ Wr();
1134
+ } else {
1135
+ i();
1136
+ }
1137
+ };
1138
+
1139
+ var Gr = (e, t, r) => {
1140
+ const n = Tr(e);
1141
+ if (n && n.Wt > t) {
1142
+ if (r) {
1143
+ Hr(n, t, r);
1144
+ } else {
1145
+ adjustProbabilities(n, t);
1146
+ }
1147
+ }
1148
+ };
1149
+
1150
+ var preload = (e, t) => {
1151
+ if (!e?.length) {
1152
+ return;
1153
+ }
1154
+ let r = t ? 1 - t : .4;
1155
+ const n = {
1156
+ Xt: 0
1157
+ };
1158
+ if (Array.isArray(e)) {
1159
+ for (let t = e.length - 1; t >= 0; t--) {
1160
+ const s = e[t];
1161
+ if (typeof s === "number") {
1162
+ r = 1 - s / 10;
1163
+ } else {
1164
+ Gr(s, r, n);
1165
+ }
1166
+ }
1167
+ } else {
1168
+ Gr(e, r, n);
1169
+ }
1170
+ if (Jr) {
1171
+ Wr();
1172
+ } else {
1173
+ i();
1174
+ }
1175
+ };
1176
+
1177
+ if (import.meta.env.TEST ? !_r() : isBrowser3) {
1178
+ document.addEventListener("qsymbol", e => {
1179
+ const {symbol: t, href: r} = e.detail;
1180
+ if (r) {
1181
+ const e = t.slice(t.lastIndexOf("_") + 1);
1182
+ preload(e, 1);
1183
+ }
1184
+ });
1185
+ }
1186
+
1187
+ // packages/qwik/src/core/shared/utils/objects.ts
1188
+ var Kr = e => {
1189
+ for (const t in e) {
1190
+ if (Object.prototype.hasOwnProperty.call(e, t)) {
1191
+ return false;
1192
+ }
1193
+ }
1194
+ return true;
1195
+ };
1196
+
1197
+ // packages/qwik/src/core/shared/ssr-const.ts
1198
+ var LT = "<";
1199
+
1200
+ var GT = ">";
1201
+
1202
+ var CLOSE_TAG = "</";
1203
+
1204
+ var Of = " ";
1205
+
1206
+ var ATTR_EQUALS_QUOTE = '="';
1207
+
1208
+ var QUOTE = '"';
1209
+
1210
+ var EMPTY_ATTR = '=""';
1211
+
1212
+ var BRACKET_OPEN = "[";
1213
+
1214
+ var BRACKET_CLOSE = "]";
1215
+
1216
+ var PAREN_CLOSE = ")";
1217
+
1218
+ var Zr = ",";
1219
+
1220
+ // packages/qwik/src/server/platform.ts
1221
+ var getDevSegmentPath = (e, t, r, n) => {
1222
+ const s = e?.[t];
1223
+ if (s) {
1224
+ return s;
1225
+ }
1226
+ if (r === Se) {
1227
+ return [ r, "" ];
1228
+ }
1229
+ if (!n) {
1230
+ if (r.startsWith("_") && r.length < 6) {
1231
+ return [ r, `${import.meta.env.BASE_URL}@qwik-handlers` ];
1232
+ }
1233
+ console.error("qwik symbolMapper: unknown qrl requested without parent:", r);
1234
+ return [ r, `${import.meta.env.BASE_URL}${r}.js` ];
1235
+ }
1236
+ const i = `${import.meta.env.BASE_URL}${n.startsWith("/") ? n.slice(1) : n}_${r}.js`;
1237
+ return [ r, i ];
1238
+ };
1239
+
1240
+ function createPlatform2(e, t) {
1241
+ const r = t?.mapper;
1242
+ const n = e.symbolMapper ? e.symbolMapper : (e, t, n) => {
1243
+ if (r || isDev5 && import.meta.env.MODE !== "test") {
1244
+ const t = getSymbolHash2(e);
1245
+ const s = !isDev5 ? r[t] : getDevSegmentPath(r, t, e, n);
1246
+ if (!s) {
1247
+ if (t === Se) {
1248
+ return [ t, "" ];
1249
+ }
1250
+ const s = globalThis.__qwik_reg_symbols?.has(t);
1251
+ if (s) {
1252
+ return [ e, "_" ];
1253
+ }
1254
+ console.error("Cannot resolve symbol", e, "in", r, n);
1255
+ }
1256
+ return s;
1257
+ }
1258
+ };
1259
+ const s = {
1260
+ isServer: true,
1261
+ async importSymbol(e, t, r) {
1262
+ const n = getSymbolHash2(r);
1263
+ const s = globalThis.__qwik_reg_symbols?.get(n);
1264
+ if (s) {
1265
+ return s;
1266
+ }
1267
+ throw ge(6 /* dynamicImportFailed */ , [ r ]);
1268
+ },
1269
+ raf: () => {
1270
+ console.error("server can not rerender");
1271
+ return Promise.resolve();
1272
+ },
1273
+ chunkForSymbol(e, t, s) {
1274
+ return n(e, r, s);
1275
+ }
1276
+ };
1277
+ return s;
1278
+ }
1279
+
1280
+ async function setServerPlatform(e, t) {
1281
+ const r = createPlatform2(e, t);
1282
+ Er(r);
1283
+ }
1284
+
1285
+ var getSymbolHash2 = e => {
1286
+ const t = e.lastIndexOf("_");
1287
+ if (t > -1) {
1288
+ return e.slice(t + 1);
1289
+ }
1290
+ return e;
1291
+ };
1292
+
1293
+ // packages/qwik/src/server/utils.ts
1294
+ function createTimer() {
1295
+ if (typeof performance === "undefined") {
1296
+ return () => 0;
1297
+ }
1298
+ const e = performance.now();
1299
+ return () => {
1300
+ const t = performance.now();
1301
+ const r = t - e;
1302
+ return r / 1e6;
1303
+ };
1304
+ }
1305
+
1306
+ function getBuildBase(e) {
1307
+ let t = e.base;
1308
+ if (typeof e.base === "function") {
1309
+ t = e.base(e);
1310
+ }
1311
+ if (typeof t === "string") {
1312
+ if (!t.endsWith("/")) {
1313
+ t += "/";
1314
+ }
1315
+ return t;
1316
+ }
1317
+ return `${import.meta.env.BASE_URL || "/"}build/`;
1318
+ }
1319
+
1320
+ var versions = {
1321
+ qwik: "2.0.0-beta.31-dev+906321a",
1322
+ qwikDom: "2.1.19"
1323
+ };
1324
+
1325
+ // packages/qwik/src/server/ssr-container.ts
1326
+ import { isDev as isDev7 } from "@qwik.dev/core/build";
1327
+
1328
+ import { _SubscriptionData as ls, _SharedContainer as qc, _jsxSorted as ms, _jsxSplit as ys, _res as w, _setEvent, _walkJSX as Rn, _createQRL as Wu, isSignal as Pl } from "@qwik.dev/core/internal";
1329
+
1330
+ // packages/qwik/src/server/preload-strategy.ts
1331
+ import { getPlatform as jr } from "@qwik.dev/core";
1332
+
1333
+ // packages/qwik/src/server/preload-utils.ts
1334
+ function flattenPrefetchResources(e) {
1335
+ const t = [];
1336
+ const r = e => {
1337
+ if (e) {
1338
+ for (let n = 0; n < e.length; n++) {
1339
+ const s = e[n];
1340
+ if (!t.includes(s.url)) {
1341
+ t.push(s.url);
1342
+ if (s.imports) {
1343
+ r(s.imports);
1344
+ }
1345
+ }
1346
+ }
1347
+ }
1348
+ };
1349
+ r(e);
1350
+ return t;
1351
+ }
1352
+
1353
+ // packages/qwik/src/server/preload-strategy.ts
1354
+ var getBundles = e => {
1355
+ const t = jr();
1356
+ const r = e?.map(e => {
1357
+ const r = e.bt;
1358
+ const n = e.vt;
1359
+ const s = t.chunkForSymbol(r, n, e.dev?.file);
1360
+ if (s) {
1361
+ return s[1];
1362
+ }
1363
+ return n;
1364
+ }).filter(Boolean);
1365
+ return [ ...new Set(r) ];
1366
+ };
1367
+
1368
+ function getPreloadPaths(e, t, r) {
1369
+ const n = t.prefetchStrategy;
1370
+ if (n === null) {
1371
+ return [];
1372
+ }
1373
+ if (!r?.manifest.bundleGraph) {
1374
+ return getBundles(e);
1375
+ }
1376
+ if (typeof n?.symbolsToPrefetch === "function") {
1377
+ try {
1378
+ const e = n.symbolsToPrefetch({
1379
+ manifest: r.manifest
1380
+ });
1381
+ return flattenPrefetchResources(e);
1382
+ } catch (e) {
1383
+ console.error("getPrefetchUrls, symbolsToPrefetch()", e);
1384
+ }
1385
+ }
1386
+ const s = /* @__PURE__ */ new Set;
1387
+ for (let t = 0; t < e.length; t++) {
1388
+ const r = getSymbolHash2(e[t].bt);
1389
+ if (r && r.length >= 10) {
1390
+ s.add(r);
1391
+ }
1392
+ }
1393
+ return [ ...s ];
1394
+ }
1395
+
1396
+ var expandBundles = (e, t) => {
1397
+ if (!t?.manifest.bundleGraph) {
1398
+ return [ ...new Set(e) ];
1399
+ }
1400
+ resetQueue();
1401
+ let r = .99;
1402
+ for (let t = 0; t < e.length; t++) {
1403
+ preload(e[t], r);
1404
+ r *= .95;
1405
+ }
1406
+ return getQueue();
1407
+ };
1408
+
1409
+ // packages/qwik/src/server/preload-impl.ts
1410
+ var simplifyPath = (e, t) => {
1411
+ if (t == null) {
1412
+ return null;
1413
+ }
1414
+ const r = `${e}${t}`.split("/");
1415
+ const n = [];
1416
+ for (let e = 0; e < r.length; e++) {
1417
+ const t = r[e];
1418
+ if (t === ".." && n.length > 0) {
1419
+ n.pop();
1420
+ } else {
1421
+ n.push(t);
1422
+ }
1423
+ }
1424
+ return n.join("/");
1425
+ };
1426
+
1427
+ var getBase = e => {
1428
+ let t = e.ce;
1429
+ if (import.meta.env.DEV && !import.meta.env.TEST) {
1430
+ t = import.meta.env.BASE_URL;
1431
+ }
1432
+ return t;
1433
+ };
1434
+
1435
+ var preloaderPre = (e, t, r) => {
1436
+ const {resolvedManifest: n} = e;
1437
+ const s = getBase(e);
1438
+ const i = simplifyPath(s, n?.manifest?.preloader);
1439
+ let o = n?.manifest.bundleGraphAsset;
1440
+ if (o) {
1441
+ o = (import.meta.env.BASE_URL || "/") + o;
1442
+ }
1443
+ if (i && o && t !== false) {
1444
+ const n = typeof t === "object" ? {
1445
+ debug: t.debug,
1446
+ preloadProbability: t.ssrPreloadProbability
1447
+ } : void 0;
1448
+ const a = e.resolvedManifest?.manifest.bundleGraph;
1449
+ initPreloader(a, n);
1450
+ const l = [];
1451
+ if (t) {
1452
+ if (t.debug) {
1453
+ l.push("d:1");
1454
+ }
1455
+ if (t.maxIdlePreloads) {
1456
+ l.push(`P:${t.maxIdlePreloads}`);
1457
+ }
1458
+ if (t.preloadProbability) {
1459
+ l.push(`Q:${t.preloadProbability}`);
1460
+ }
1461
+ }
1462
+ const c = l.length ? `,{${l.join(",")}}` : "";
1463
+ const u = {
1464
+ rel: "modulepreload",
1465
+ href: i
1466
+ };
1467
+ if (r) {
1468
+ u["nonce"] = r;
1469
+ }
1470
+ e.openElement("link", null, u, null, null, null);
1471
+ e.closeElement();
1472
+ e.openElement("link", null, {
1473
+ rel: "preload",
1474
+ href: o,
1475
+ as: "fetch",
1476
+ crossorigin: "anonymous"
1477
+ }, null, null, null);
1478
+ e.closeElement();
1479
+ const d = `let b=fetch("${o}");import("${i}").then(({l})=>l(${JSON.stringify(s)},b${c}));`;
1480
+ const h = {
1481
+ type: "module",
1482
+ async: true,
1483
+ crossorigin: "anonymous"
1484
+ };
1485
+ if (r) {
1486
+ h["nonce"] = r;
1487
+ }
1488
+ e.openElement("script", null, h, null, null, null);
1489
+ e.write(d);
1490
+ e.closeElement();
1491
+ }
1492
+ const a = simplifyPath(s, n?.manifest.core);
1493
+ if (a) {
1494
+ const t = {
1495
+ rel: "modulepreload",
1496
+ href: a
1497
+ };
1498
+ if (r) {
1499
+ t["nonce"] = r;
1500
+ }
1501
+ e.openElement("link", null, t, null, null, null);
1502
+ e.closeElement();
1503
+ }
1504
+ };
1505
+
1506
+ var includePreloader = (e, t, r, n) => {
1507
+ if (r.length === 0 || t === false) {
1508
+ return null;
1509
+ }
1510
+ const {ssrPreloads: s, ssrPreloadProbability: i} = normalizePreLoaderOptions(typeof t === "boolean" ? void 0 : t);
1511
+ let o = s;
1512
+ const a = getBase(e);
1513
+ const l = [];
1514
+ const {resolvedManifest: c} = e;
1515
+ if (o) {
1516
+ const e = c?.manifest.preloader;
1517
+ const t = c?.manifest.core;
1518
+ const n = expandBundles(r, c);
1519
+ let s = 4;
1520
+ const a = i * 10;
1521
+ for (let r = 0; r < n.length; r++) {
1522
+ const i = n[r];
1523
+ if (typeof i === "string") {
1524
+ if (s < a) {
1525
+ break;
1526
+ }
1527
+ if (i === e || i === t) {
1528
+ continue;
1529
+ }
1530
+ l.push(i);
1531
+ if (--o === 0) {
1532
+ break;
1533
+ }
1534
+ } else {
1535
+ s = i;
1536
+ }
1537
+ }
1538
+ }
1539
+ const u = simplifyPath(a, c?.manifest.preloader);
1540
+ const d = l.length ?
1541
+ /**
1542
+ * We only use modulepreload links because they behave best. Older browsers can rely on the
1543
+ * preloader which does feature detection and which will be available soon after inserting these
1544
+ * links.
1545
+ */ `${JSON.stringify(l)}.map((l,e)=>{e=document.createElement('link');e.rel='modulepreload';e.href=${JSON.stringify(a)}+l;document.head.appendChild(e)});` : "";
1546
+ let h = d;
1547
+ if (u) {
1548
+ h += `window.addEventListener('load',f=>{f=_=>import("${u}").then(({p})=>p(${JSON.stringify(r)}));try{requestIdleCallback(f,{timeout:2000})}catch(e){setTimeout(f,200)}})`;
1549
+ }
1550
+ if (h) {
1551
+ const t = {
1552
+ type: "module",
1553
+ async: "true",
1554
+ "q:type": "preload"
1555
+ };
1556
+ if (n) {
1557
+ t["nonce"] = n;
1558
+ }
1559
+ e.openElement("script", null, t, null, null, null);
1560
+ e.write(h);
1561
+ e.closeElement();
1562
+ }
1563
+ return null;
1564
+ };
1565
+
1566
+ var preloaderPost = (e, t, r) => {
1567
+ if (t.preloader !== false) {
1568
+ const n = Array.from(e.serializationCtx.Pt);
1569
+ const s = getPreloadPaths(n, t, e.resolvedManifest);
1570
+ if (s.length > 0) {
1571
+ includePreloader(e, t.preloader, s, r);
1572
+ }
1573
+ }
1574
+ };
1575
+
1576
+ function normalizePreLoaderOptions(e) {
1577
+ return {
1578
+ ...preLoaderOptionsDefault,
1579
+ ...e
1580
+ };
1581
+ }
1582
+
1583
+ var preLoaderOptionsDefault = {
1584
+ ssrPreloads: 7,
1585
+ ssrPreloadProbability: .5,
1586
+ debug: false,
1587
+ maxIdlePreloads: 25,
1588
+ preloadProbability: .35
1589
+ };
1590
+
1591
+ // packages/qwik/src/server/scripts.ts
1592
+ var QWIK_LOADER_DEFAULT_MINIFIED = 'const e=document,t=window,n="w",o="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(n=>t.push(...l(n,e))),t},d=(e,t,n,o=!1)=>e.addEventListener(t,n,{capture:o,passive:!1}),b=e=>{_(e);const t=l(e,"[q\\\\:shadowroot]");for(let e=0;e<t.length;e++){const n=t[e].shadowRoot;n&&b(n)}},f=e=>e&&"function"==typeof e.then,p=t=>{if(void 0===t._qwikjson_){let n=(t===e.documentElement?e.body:t).lastElementChild;for(;n;){if("SCRIPT"===n.tagName&&"qwik/json"===n.getAttribute("type")){t._qwikjson_=JSON.parse(n.textContent.replace(/\\\\x3C(\\/?script)/gi,"<$1"));break}n=n.previousElementSibling}}},u=(e,t)=>new CustomEvent(e,{detail:t}),h=(t,n)=>{e.dispatchEvent(u(t,n))},g=e=>e.replace(/([A-Z-])/g,e=>"-"+e.toLowerCase()),m=e=>e.replace(/-./g,e=>e[1].toUpperCase()),v=e=>({scope:e.charAt(0),eventName:m(e.slice(2))}),w=async(t,n,o,r)=>{r&&(t.hasAttribute("preventdefault:"+r)&&n.preventDefault(),t.hasAttribute("stoppropagation:"+r)&&n.stopPropagation());const s=t._qDispatch?.[o];if(s){if("function"==typeof s){const e=s(n,t);f(e)&&await e}else if(s.length)for(let e=0;e<s.length;e++){const o=s[e],r=o?.(n,t);f(r)&&await r}return}const a=t.getAttribute("q-"+o);if(a){const o=t.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),r=o.getAttribute("q:base"),s=new URL(r,e.baseURI),c=a.split("|");for(let a=0;a<c.length;a++){const l=c[a],q=performance.now(),[d,b,u]=l.split("#"),g={qBase:r,symbol:b,element:t,reqTime:q};let m,v,w;if(""===d){const t=o.getAttribute("q:instance");m=(e["qFuncs_"+t]||[])[Number.parseInt(b)],m||(v="sync",w=Error("sym:"+b))}else{const e=`${b}|${r}|${d}`;if(m=i.get(e),!m){const t=new URL(d,s).href;try{const n=import(t);p(o),m=(await n)[b],m?(i.set(e,m),h("qsymbol",g)):(v="no-symbol",w=Error(`${b} not in ${t}`))}catch(e){v="async",w=e}}}if(m){if(t.isConnected)try{const e=m.call(u,n,t);f(e)&&await e}catch(e){h("qerror",{error:e,...g})}}else h("qerror",{importError:v,error:w,...g}),console.error(w)}}},y=async e=>{const t=g(e.type),n="e:"+t;let o=e.target;for(;o&&o.getAttribute;){const r=w(o,e,n,t),s=e.bubbles&&!e.cancelBubble;f(r)&&await r,o=s&&e.bubbles&&!e.cancelBubble?o.parentElement:null}},A=(e,t)=>{const n=g(t.type),o=e+":"+n,r=q("[q-"+e+"\\\\:"+n+"]");for(let e=0;e<r.length;e++){const s=r[e];w(s,t,o,n)}},E=async e=>{A(o,e)},C=e=>{A(n,e)},k=()=>{const n=e.readyState;if("interactive"==n||"complete"==n){if(c=1,s.forEach(b),r.has("d:qinit")){r.delete("d:qinit");const e=u("qinit"),t=q("[q-d\\\\:qinit]");for(let n=0;n<t.length;n++){const o=t[n];w(o,e,"d:qinit"),o.removeAttribute("q-d:qinit")}}if(r.has("d:qidle")&&(r.delete("d:qidle"),(t.requestIdleCallback??t.setTimeout).bind(t)(()=>{const e=u("qidle"),t=q("[q-d\\\\:qidle]");for(let n=0;n<t.length;n++){const o=t[n];w(o,e,"d:qidle"),o.removeAttribute("q-d:qidle")}})),r.has("e:qvisible")){a||(a=new IntersectionObserver(e=>{for(let t=0;t<e.length;t++){const n=e[t];n.isIntersecting&&(a.unobserve(n.target),w(n.target,u("qvisible",n),"e:qvisible"))}}));const e=q("[q-e\\\\:qvisible]:not([q\\\\:observed])");for(let t=0;t<e.length;t++){const n=e[t];a.observe(n),n.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}=v(a);e===n?d(t,i,C,!0):s.forEach(t=>d(t,i,e===o?E:y,!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}=v(e);t!==n&&d(a,r,t===o?E:y,!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())';
1593
+
1594
+ 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 const shadowRoots = nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]");\n for (let i = 0; i < shadowRoots.length; i++) {\n const parent = shadowRoots[i];\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 const qrls = attrValue.split("|");\n for (let i = 0; i < qrls.length; i++) {\n const qrl = qrls[i];\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 const elements = querySelectorAll("[q-" + infix + "\\\\:" + kebabName + "]");\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n 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 const elements = querySelectorAll("[q-d\\\\:qinit]");\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\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 const elements = querySelectorAll("[q-d\\\\:qidle]");\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\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 (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, createEvent("qvisible", entry), "e:qvisible");\n }\n }\n }));\n const elements = querySelectorAll("[q-e\\\\:qvisible]:not([q\\\\:observed])");\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\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}';
1595
+
1596
+ 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))}}}}`;
1597
+
1598
+ var QWIK_BACKPATCH_EXECUTOR_DEBUG = `const BACKPATCH_DATA_SELECTOR = 'script[type="qwik/backpatch"]';\nconst executorScript = document.currentScript;\nif (executorScript) {\n const container = executorScript.closest(\n "[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"\n );\n if (container) {\n const script = container.querySelector(BACKPATCH_DATA_SELECTOR);\n if (script) {\n const data = JSON.parse(script.textContent || "[]");\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let currentNode = walker.currentNode;\n let currentNodeIdx = currentNode.hasAttribute(":") ? 0 : -1;\n for (let i = 0; i < data.length; i += 3) {\n const elementIdx = data[i];\n const attrName = data[i + 1];\n let value = data[i + 2];\n while (currentNodeIdx < elementIdx) {\n currentNode = walker.nextNode();\n if (!currentNode) {\n break;\n }\n if (currentNode.hasAttribute(":")) {\n currentNodeIdx++;\n }\n }\n const element = currentNode;\n if (value == null || value === false) {\n element.removeAttribute(attrName);\n } else {\n if (typeof value === "boolean") {\n value = "";\n }\n element.setAttribute(attrName, value);\n }\n }\n }\n }\n}`;
1599
+
1600
+ function getQwikLoaderScript(e = {}) {
1601
+ return e.debug ? QWIK_LOADER_DEFAULT_DEBUG : QWIK_LOADER_DEFAULT_MINIFIED;
1602
+ }
1603
+
1604
+ var QWIK_PREFETCH_MINIFIED = globalThis.QWIK_PREFETCH_MINIFIED;
1605
+
1606
+ var QWIK_PREFETCH_DEBUG = globalThis.QWIK_PREFETCH_DEBUG;
1607
+
1608
+ function getQwikPrefetchWorkerScript(e = {}) {
1609
+ return e.debug ? QWIK_PREFETCH_DEBUG : QWIK_PREFETCH_MINIFIED;
1610
+ }
1611
+
1612
+ function getQwikBackpatchExecutorScript(e = {}) {
1613
+ return e.debug ? QWIK_BACKPATCH_EXECUTOR_DEBUG : QWIK_BACKPATCH_EXECUTOR_MINIFIED;
1614
+ }
1615
+
1616
+ // packages/qwik/src/server/ssr-node.ts
1617
+ import { _isJSXNode as hs, _EMPTY_OBJ, _EFFECT_BACK_REF as ei } from "@qwik.dev/core/internal";
1618
+
1619
+ import { isDev as isDev6 } from "@qwik.dev/core/build";
1620
+
1621
+ var SsrNode = class {
1622
+ constructor(e, t, r, n, s, i) {
1623
+ this.parentComponent = e;
1624
+ this.attributesIndex = r;
1625
+ this.cleanupQueue = n;
1626
+ this.vnodeData = s;
1627
+ this.currentFile = i;
1628
+ this.id = t;
1629
+ this.flags = 1 /* Updatable */;
1630
+ this.attrs = this.attributesIndex >= 0 ? this.vnodeData[this.attributesIndex] : _EMPTY_OBJ;
1631
+ this.parentComponent?.addChild(this);
1632
+ if (isDev6 && t.indexOf("undefined") != -1) {
1633
+ throw new Error(`Invalid SSR node id: ${t}`);
1634
+ }
1635
+ }
1636
+ __brand__="SsrNode";
1637
+ /**
1638
+ * ID which the deserialize will use to retrieve the node.
1639
+ *
1640
+ * @param id - Unique id for the node.
1641
+ */
1642
+ id;
1643
+ flags;
1644
+ dirty=0 /* NONE */;
1645
+ children=null;
1646
+ attrs;
1647
+ /** Local props which don't serialize; */
1648
+ localProps=null;
1649
+ get [ei]() {
1650
+ return this.getProp(Te);
1651
+ }
1652
+ setProp(e, t) {
1653
+ if (this.attrs === _EMPTY_OBJ) {
1654
+ this.setEmptyArrayAsVNodeDataAttributes();
1655
+ }
1656
+ if (e.startsWith(ir)) {
1657
+ (this.localProps ||= {})[e] = t;
1658
+ } else {
1659
+ this.attrs[e] = t;
1660
+ }
1661
+ if (e == tr && t) {
1662
+ this.cleanupQueue.push(t);
1663
+ }
1664
+ }
1665
+ setEmptyArrayAsVNodeDataAttributes() {
1666
+ if (this.attributesIndex >= 0) {
1667
+ this.vnodeData[this.attributesIndex] = {};
1668
+ this.attrs = this.vnodeData[this.attributesIndex];
1669
+ } else {
1670
+ const e = this.vnodeData.length > 1 ? 1 : 0;
1671
+ this.vnodeData.splice(e, 0, {});
1672
+ this.attributesIndex = e;
1673
+ this.attrs = this.vnodeData[this.attributesIndex];
1674
+ }
1675
+ }
1676
+ getProp(e) {
1677
+ if (e.startsWith(ir)) {
1678
+ return this.localProps ? this.localProps[e] ?? null : null;
1679
+ } else {
1680
+ return this.attrs[e] ?? null;
1681
+ }
1682
+ }
1683
+ removeProp(e) {
1684
+ if (e.startsWith(ir)) {
1685
+ if (this.localProps) {
1686
+ delete this.localProps[e];
1687
+ }
1688
+ } else {
1689
+ delete this.attrs[e];
1690
+ }
1691
+ }
1692
+ addChild(e) {
1693
+ if (!this.children) {
1694
+ this.children = [];
1695
+ }
1696
+ this.children.push(e);
1697
+ }
1698
+ setTreeNonUpdatable() {
1699
+ if (this.flags & 1 /* Updatable */) {
1700
+ this.flags &= ~1 /* Updatable */;
1701
+ if (this.children) {
1702
+ for (let e = 0; e < this.children.length; e++) {
1703
+ const t = this.children[e];
1704
+ t.setTreeNonUpdatable();
1705
+ }
1706
+ }
1707
+ }
1708
+ }
1709
+ toString() {
1710
+ if (isDev6) {
1711
+ let e = "";
1712
+ for (const t in this.attrs) {
1713
+ const r = this.attrs[t];
1714
+ e += `${t}=`;
1715
+ e += `${typeof r === "string" || typeof r === "number" ? JSON.stringify(r) : "*"}`;
1716
+ e += ", ";
1717
+ }
1718
+ return `<SSRNode id="${this.id}" ${e} />`;
1719
+ } else {
1720
+ return `<SSRNode id="${this.id}" />`;
1721
+ }
1722
+ }
1723
+ };
1724
+
1725
+ var DomRef = class {
1726
+ constructor(e) {
1727
+ this.Qn = e;
1728
+ }
1729
+ __brand__="DomRef";
1730
+ };
1731
+
1732
+ var SsrComponentFrame = class {
1733
+ constructor(e) {
1734
+ this.componentNode = e;
1735
+ }
1736
+ slots=[];
1737
+ projectionDepth=0;
1738
+ scopedStyleIds=/* @__PURE__ */ new Set;
1739
+ projectionScopedStyle=null;
1740
+ projectionComponentFrame=null;
1741
+ distributeChildrenIntoSlots(e, t, r) {
1742
+ this.projectionScopedStyle = t;
1743
+ this.projectionComponentFrame = r;
1744
+ if (hs(e)) {
1745
+ const t = this.getSlotName(e);
1746
+ de(this.slots, t, e, 0);
1747
+ } else if (Array.isArray(e) && e.length > 0) {
1748
+ const t = [];
1749
+ for (let r = 0; r < e.length; r++) {
1750
+ const n = e[r];
1751
+ if (hs(n)) {
1752
+ const e = this.getSlotName(n);
1753
+ if (e === Ge) {
1754
+ t.push(n);
1755
+ } else {
1756
+ this.updateSlot(e, n);
1757
+ }
1758
+ } else {
1759
+ t.push(n);
1760
+ }
1761
+ }
1762
+ t.length > 0 && de(this.slots, Ge, t, 0);
1763
+ } else {
1764
+ de(this.slots, Ge, e, 0);
1765
+ }
1766
+ }
1767
+ updateSlot(e, t) {
1768
+ let r = $e(this.slots, e, 0);
1769
+ if (r === null) {
1770
+ r = t;
1771
+ } else if (Array.isArray(r)) {
1772
+ r.push(t);
1773
+ } else {
1774
+ r = [ r, t ];
1775
+ }
1776
+ de(this.slots, e, r, 0);
1777
+ }
1778
+ getSlotName(e) {
1779
+ if (e.props[_e]) {
1780
+ return e.props[_e];
1781
+ }
1782
+ return Ge;
1783
+ }
1784
+ hasSlot(e) {
1785
+ return pe(this.slots, e, 0);
1786
+ }
1787
+ consumeChildrenForSlot(e, t) {
1788
+ const r = mapApp_remove(this.slots, t, 0);
1789
+ this.componentNode.setProp(t, e.id);
1790
+ e.setProp(QSlotParent, this.componentNode.id);
1791
+ return r;
1792
+ }
1793
+ };
1794
+
1795
+ // packages/qwik/src/server/tag-nesting.ts
1796
+ var allowedContent = e => {
1797
+ switch (e) {
1798
+ case 2 /* TEXT */ :
1799
+ return [ "text content", null ];
1800
+
1801
+ case 0 /* NOT_ALLOWED */ :
1802
+ return [ "no content", null ];
1803
+
1804
+ case 32 /* HTML */ :
1805
+ return [ "html content", "<head>, <body>" ];
1806
+
1807
+ case 64 /* HEAD */ :
1808
+ return [ "head content", "<title>, <script>, <noscript>, <style>, <meta>, <link>, <base>, <template>" ];
1809
+
1810
+ case 130 /* BODY */ :
1811
+ return [ "body content", "all tags allowed here" ];
1812
+
1813
+ case 4 /* EMPTY */ :
1814
+ return [ "no-content element", null ];
1815
+
1816
+ case 10 /* ANYTHING */ :
1817
+ return [ "any content", null ];
1818
+
1819
+ case 4096 /* TABLE */ :
1820
+ return [ "table", "<caption>, <colgroup>, <tbody>, <thead>, <tfoot>" ];
1821
+
1822
+ case 8192 /* TABLE_BODY */ :
1823
+ return [ "table body", "<tr>" ];
1824
+
1825
+ case 16384 /* TABLE_ROW */ :
1826
+ return [ "table row", "<td>, <th>" ];
1827
+
1828
+ case 32768 /* TABLE_COLGROUP */ :
1829
+ return [ "table column group", "<col>" ];
1830
+
1831
+ case 258 /* PHRASING_ANY */ :
1832
+ case 514 /* PHRASING_INSIDE_INPUT */ :
1833
+ case 1026 /* PHRASING_CONTAINER */ :
1834
+ return [ "phrasing content", "<a>, <b>, <img>, <input> ... (no <div>, <p> ...)" ];
1835
+
1836
+ case 2050 /* PICTURE */ :
1837
+ return [ "picture content", "<source>, <img>" ];
1838
+
1839
+ case 4098 /* BUTTON */ :
1840
+ return [ "button content", "phrasing content except interactive elements" ];
1841
+
1842
+ case 1 /* DOCUMENT */ :
1843
+ return [ "document", "<html>" ];
1844
+ }
1845
+ };
1846
+
1847
+ var initialTag = e => {
1848
+ switch (e) {
1849
+ case "html":
1850
+ return 32 /* HTML */;
1851
+
1852
+ case "head":
1853
+ return 64 /* HEAD */;
1854
+
1855
+ case "body":
1856
+ return 130 /* BODY */;
1857
+
1858
+ default:
1859
+ return isTagAllowed(10 /* ANYTHING */ , e);
1860
+ }
1861
+ };
1862
+
1863
+ function isTagAllowed(e, t) {
1864
+ switch (e) {
1865
+ case 2 /* TEXT */ :
1866
+ case 0 /* NOT_ALLOWED */ :
1867
+ return 0 /* NOT_ALLOWED */;
1868
+
1869
+ case 32 /* HTML */ :
1870
+ return isInHtml(t);
1871
+
1872
+ case 64 /* HEAD */ :
1873
+ return isInHead(t);
1874
+
1875
+ case 130 /* BODY */ :
1876
+ case 10 /* ANYTHING */ :
1877
+ case 1026 /* PHRASING_CONTAINER */ :
1878
+ return isInAnything(t);
1879
+
1880
+ case 4096 /* TABLE */ :
1881
+ return isInTable(t);
1882
+
1883
+ case 8192 /* TABLE_BODY */ :
1884
+ return isInTableBody(t);
1885
+
1886
+ case 16384 /* TABLE_ROW */ :
1887
+ return isInTableRow(t);
1888
+
1889
+ case 32768 /* TABLE_COLGROUP */ :
1890
+ return isInTableColGroup(t);
1891
+
1892
+ case 258 /* PHRASING_ANY */ :
1893
+ return isInPhrasing(t, true);
1894
+
1895
+ case 514 /* PHRASING_INSIDE_INPUT */ :
1896
+ return isInPhrasing(t, false);
1897
+
1898
+ case 2050 /* PICTURE */ :
1899
+ return isInPicture(t);
1900
+
1901
+ case 4098 /* BUTTON */ :
1902
+ return isInButton(t);
1903
+
1904
+ case 1 /* DOCUMENT */ :
1905
+ if (t === "html") {
1906
+ return 32 /* HTML */;
1907
+ }
1908
+ }
1909
+ return 0 /* NOT_ALLOWED */;
1910
+ }
1911
+
1912
+ function isInHtml(e) {
1913
+ switch (e) {
1914
+ case "head":
1915
+ return 64 /* HEAD */;
1916
+
1917
+ case "body":
1918
+ return 130 /* BODY */;
1919
+
1920
+ default:
1921
+ return 0 /* NOT_ALLOWED */;
1922
+ }
1923
+ }
1924
+
1925
+ function isInHead(e) {
1926
+ switch (e) {
1927
+ case "title":
1928
+ case "script":
1929
+ case "noscript":
1930
+ case "style":
1931
+ return 2 /* TEXT */;
1932
+
1933
+ case "meta":
1934
+ case "link":
1935
+ case "base":
1936
+ return 4 /* EMPTY */;
1937
+
1938
+ case "template":
1939
+ return 10 /* ANYTHING */;
1940
+
1941
+ default:
1942
+ return 0 /* NOT_ALLOWED */;
1943
+ }
1944
+ }
1945
+
1946
+ function isSelfClosingTag(e) {
1947
+ switch (e) {
1948
+ case "area":
1949
+ case "base":
1950
+ case "basefont":
1951
+ case "bgsound":
1952
+ case "br":
1953
+ case "col":
1954
+ case "embed":
1955
+ case "frame":
1956
+ case "hr":
1957
+ case "img":
1958
+ case "input":
1959
+ case "keygen":
1960
+ case "link":
1961
+ case "meta":
1962
+ case "param":
1963
+ case "source":
1964
+ case "track":
1965
+ case "wbr":
1966
+ return true;
1967
+
1968
+ default:
1969
+ return false;
1970
+ }
1971
+ }
1972
+
1973
+ function isInAnything(e) {
1974
+ if (isSelfClosingTag(e)) {
1975
+ return 4 /* EMPTY */;
1976
+ }
1977
+ switch (e) {
1978
+ case "script":
1979
+ case "style":
1980
+ case "noscript":
1981
+ case "noframes":
1982
+ return 2 /* TEXT */;
1983
+
1984
+ case "p":
1985
+ case "pre":
1986
+ return 258 /* PHRASING_ANY */;
1987
+
1988
+ case "table":
1989
+ return 4096 /* TABLE */;
1990
+
1991
+ case "html":
1992
+ case "head":
1993
+ case "body":
1994
+ return 0 /* NOT_ALLOWED */;
1995
+
1996
+ case "button":
1997
+ return 4098 /* BUTTON */;
1998
+
1999
+ case "input":
2000
+ case "textarea":
2001
+ return 514 /* PHRASING_INSIDE_INPUT */;
2002
+
2003
+ case "picture":
2004
+ return 2050 /* PICTURE */;
2005
+
2006
+ default:
2007
+ return 10 /* ANYTHING */;
2008
+ }
2009
+ }
2010
+
2011
+ function isInTable(e) {
2012
+ switch (e) {
2013
+ case "caption":
2014
+ return 10 /* ANYTHING */;
2015
+
2016
+ case "colgroup":
2017
+ return 32768 /* TABLE_COLGROUP */;
2018
+
2019
+ case "thead":
2020
+ case "tbody":
2021
+ case "tfoot":
2022
+ return 8192 /* TABLE_BODY */;
2023
+
2024
+ case "script":
2025
+ return 2 /* TEXT */;
2026
+
2027
+ default:
2028
+ return 0 /* NOT_ALLOWED */;
2029
+ }
2030
+ }
2031
+
2032
+ function isInTableBody(e) {
2033
+ switch (e) {
2034
+ case "tr":
2035
+ return 16384 /* TABLE_ROW */;
2036
+
2037
+ case "script":
2038
+ return 2 /* TEXT */;
2039
+
2040
+ default:
2041
+ return 0 /* NOT_ALLOWED */;
2042
+ }
2043
+ }
2044
+
2045
+ function isInTableRow(e) {
2046
+ switch (e) {
2047
+ case "td":
2048
+ case "th":
2049
+ return 10 /* ANYTHING */;
2050
+
2051
+ case "script":
2052
+ return 2 /* TEXT */;
2053
+
2054
+ default:
2055
+ return 0 /* NOT_ALLOWED */;
2056
+ }
2057
+ }
2058
+
2059
+ function isInTableColGroup(e) {
2060
+ switch (e) {
2061
+ case "col":
2062
+ return 4 /* EMPTY */;
2063
+
2064
+ case "script":
2065
+ return 2 /* TEXT */;
2066
+
2067
+ default:
2068
+ return 0 /* NOT_ALLOWED */;
2069
+ }
2070
+ }
2071
+
2072
+ function isInPicture(e) {
2073
+ switch (e) {
2074
+ case "source":
2075
+ return 4 /* EMPTY */;
2076
+
2077
+ case "img":
2078
+ return 4 /* EMPTY */;
2079
+
2080
+ case "script":
2081
+ return 2 /* TEXT */;
2082
+
2083
+ default:
2084
+ return 0 /* NOT_ALLOWED */;
2085
+ }
2086
+ }
2087
+
2088
+ function isInButton(e) {
2089
+ switch (e) {
2090
+ case "button":
2091
+ case "input":
2092
+ case "textarea":
2093
+ case "select":
2094
+ case "a":
2095
+ return 0 /* NOT_ALLOWED */;
2096
+
2097
+ case "picture":
2098
+ return 2050 /* PICTURE */;
2099
+
2100
+ default:
2101
+ return isInPhrasing(e, false);
2102
+ }
2103
+ }
2104
+
2105
+ function isInPhrasing(e, t) {
2106
+ switch (e) {
2107
+ case "svg":
2108
+ case "math":
2109
+ return 1026 /* PHRASING_CONTAINER */;
2110
+
2111
+ case "input":
2112
+ case "textarea":
2113
+ return t ? 514 /* PHRASING_INSIDE_INPUT */ : 0 /* NOT_ALLOWED */;
2114
+
2115
+ case "a":
2116
+ case "abbr":
2117
+ case "area":
2118
+ case "audio":
2119
+ case "b":
2120
+ case "bdi":
2121
+ case "bdo":
2122
+ case "br":
2123
+ case "button":
2124
+ case "canvas":
2125
+ case "cite":
2126
+ case "code":
2127
+ case "command":
2128
+ case "data":
2129
+ case "datalist":
2130
+ case "del":
2131
+ case "dfn":
2132
+ case "em":
2133
+ case "embed":
2134
+ case "i":
2135
+ case "iframe":
2136
+ case "img":
2137
+ case "ins":
2138
+ case "itemprop":
2139
+ case "kbd":
2140
+ case "keygen":
2141
+ case "label":
2142
+ case "link":
2143
+ case "map":
2144
+ case "mark":
2145
+ case "meta":
2146
+ case "meter":
2147
+ case "noscript":
2148
+ case "object":
2149
+ case "option":
2150
+ case "output":
2151
+ case "progress":
2152
+ case "q":
2153
+ case "ruby":
2154
+ case "s":
2155
+ case "samp":
2156
+ case "select":
2157
+ case "slot":
2158
+ case "small":
2159
+ case "span":
2160
+ case "strong":
2161
+ case "sub":
2162
+ case "sup":
2163
+ case "template":
2164
+ case "time":
2165
+ case "u":
2166
+ case "var":
2167
+ case "video":
2168
+ case "wbr":
2169
+ return t ? 258 /* PHRASING_ANY */ : 514 /* PHRASING_INSIDE_INPUT */;
2170
+
2171
+ case "script":
2172
+ case "style":
2173
+ return 2 /* TEXT */;
2174
+
2175
+ case "picture":
2176
+ return 2050 /* PICTURE */;
2177
+
2178
+ default:
2179
+ return 0 /* NOT_ALLOWED */;
2180
+ }
2181
+ }
2182
+
2183
+ // packages/qwik/src/server/vnode-data.ts
2184
+ var OPEN_FRAGMENT = Number.MAX_SAFE_INTEGER;
2185
+
2186
+ var CLOSE_FRAGMENT = Number.MAX_SAFE_INTEGER - 1;
2187
+
2188
+ var WRITE_ELEMENT_ATTRS = Number.MAX_SAFE_INTEGER - 2;
2189
+
2190
+ function vNodeData_incrementElementCount(e) {
2191
+ const t = e.length;
2192
+ const r = t > 1 ? e[t - 1] : 0;
2193
+ if (r >= 0) {
2194
+ e.push(-1);
2195
+ } else {
2196
+ e[t - 1] = r - 1;
2197
+ }
2198
+ }
2199
+
2200
+ function vNodeData_addTextSize(e, t) {
2201
+ const r = e.length;
2202
+ const n = r > 1 ? e[r - 1] : 0;
2203
+ if (r > 1 && n >= 0) {
2204
+ e[0] |= 1 /* TEXT_DATA */;
2205
+ }
2206
+ e.push(t);
2207
+ if (t == 0) {
2208
+ e[0] |= 1 /* TEXT_DATA */;
2209
+ }
2210
+ }
2211
+
2212
+ function vNodeData_openFragment(e, t) {
2213
+ e.push(t, OPEN_FRAGMENT);
2214
+ e[0] |= 2 /* VIRTUAL_NODE */;
2215
+ }
2216
+
2217
+ function vNodeData_closeFragment(e) {
2218
+ e.push(CLOSE_FRAGMENT);
2219
+ }
2220
+
2221
+ function vNodeData_openElement(e) {
2222
+ e.push({}, WRITE_ELEMENT_ATTRS);
2223
+ e[0] |= 4 /* ELEMENT_NODE */;
2224
+ }
2225
+
2226
+ function vNodeData_createSsrNodeReference(e, t, r, n, s) {
2227
+ t[0] |= 8 /* REFERENCE */;
2228
+ const i = [ -1 ];
2229
+ let o = -1;
2230
+ for (let e = 1; e < t.length; e++) {
2231
+ const r = t[e];
2232
+ if (typeof r === "object" && r !== null) {
2233
+ o = e;
2234
+ e++;
2235
+ if (t[e] !== WRITE_ELEMENT_ATTRS) {
2236
+ i[i.length - 1]++;
2237
+ i.push(-1);
2238
+ }
2239
+ } else if (r === CLOSE_FRAGMENT) {
2240
+ i.pop();
2241
+ } else if (r < 0) {
2242
+ const e = 0 - r;
2243
+ i[i.length - 1] += e;
2244
+ } else {
2245
+ i[i.length - 1]++;
2246
+ }
2247
+ }
2248
+ let a = r + "";
2249
+ if (t[0] & (2 /* VIRTUAL_NODE */ | 1 /* TEXT_DATA */)) {
2250
+ for (let e = 0; e < i.length; e++) {
2251
+ const t = i[e];
2252
+ if (t >= 0) {
2253
+ a += encodeAsAlphanumeric(t);
2254
+ }
2255
+ }
2256
+ }
2257
+ return new SsrNode(e, a, o, n, t, s);
2258
+ }
2259
+
2260
+ var ALPHANUMERIC = [];
2261
+
2262
+ function encodeAsAlphanumeric(e) {
2263
+ while (ALPHANUMERIC.length <= e) {
2264
+ let e = ALPHANUMERIC.length;
2265
+ let t = "";
2266
+ do {
2267
+ t = String.fromCharCode((t.length === 0 ? 65 : 97) + e % 26
2268
+ /* A-Z */) + t;
2269
+ e = Math.floor(e / 26
2270
+ /* A-Z */);
2271
+ } while (e !== 0);
2272
+ ALPHANUMERIC.push(t);
2273
+ }
2274
+ return ALPHANUMERIC[e];
2275
+ }
2276
+
2277
+ // packages/qwik/src/server/ssr-container.ts
2278
+ function ssrCreateContainer(e) {
2279
+ e.renderOptions ||= {};
2280
+ return new SSRContainer({
2281
+ tagName: e.tagName || "div",
2282
+ writer: e.writer || new StringBufferWriter,
2283
+ streamHandler: e.streamHandler,
2284
+ locale: e.locale || "",
2285
+ timing: e.timing || {
2286
+ firstFlush: 0,
2287
+ render: 0,
2288
+ snapshot: 0
2289
+ },
2290
+ buildBase: e.buildBase || "/build/",
2291
+ resolvedManifest: e.resolvedManifest || {
2292
+ mapper: {},
2293
+ manifest: {
2294
+ manifestHash: "dev",
2295
+ mapping: {}
2296
+ }
2297
+ },
2298
+ renderOptions: e.renderOptions
2299
+ });
2300
+ }
2301
+
2302
+ var StringBufferWriter = class {
2303
+ buffer=[];
2304
+ write(e) {
2305
+ this.buffer.push(e);
2306
+ }
2307
+ toString() {
2308
+ return this.buffer.join("");
2309
+ }
2310
+ };
2311
+
2312
+ var Ii = {};
2313
+
2314
+ var QTemplateProps = {
2315
+ hidden: true,
2316
+ "aria-hidden": true
2317
+ };
2318
+
2319
+ var SSRContainer = class extends qc {
2320
+ tag;
2321
+ isHtml;
2322
+ writer;
2323
+ streamHandler;
2324
+ timing;
2325
+ size=0;
2326
+ resolvedManifest;
2327
+ symbolToChunkResolver;
2328
+ renderOptions;
2329
+ serializationCtx;
2330
+ /**
2331
+ * We use this to append additional nodes in the head node
2332
+ *
2333
+ * - From manifest injections
2334
+ * - From useStyles and useScopedStyles hooks
2335
+ */
2336
+ additionalHeadNodes=new Array;
2337
+ /**
2338
+ * We use this to append additional nodes in the body node
2339
+ *
2340
+ * - From manifest injections
2341
+ */
2342
+ additionalBodyNodes=new Array;
2343
+ lastNode=null;
2344
+ currentComponentNode=null;
2345
+ styleIds=/* @__PURE__ */ new Set;
2346
+ isBackpatchExecutorEmitted=false;
2347
+ backpatchMap=/* @__PURE__ */ new Map;
2348
+ currentElementFrame=null;
2349
+ renderTimer;
2350
+ /**
2351
+ * Current element index.
2352
+ *
2353
+ * This number must match the depth-first traversal of the DOM elements as returned by the
2354
+ * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
2355
+ */
2356
+ depthFirstElementCount=-1;
2357
+ vNodeDatas=[];
2358
+ componentStack=[];
2359
+ cleanupQueue=[];
2360
+ emitContainerDataFrame=null;
2361
+ le=randomStr();
2362
+ // Temporary flag to find missing roots after the state was serialized
2363
+ S=false;
2364
+ qlInclude;
2365
+ promiseAttributes=null;
2366
+ constructor(e) {
2367
+ super(e.renderOptions.serverData ?? Ii, e.locale);
2368
+ this.symbolToChunkResolver = e => {
2369
+ const t = e.lastIndexOf("_");
2370
+ const r = this.resolvedManifest.mapper[t == -1 ? e : e.substring(t + 1)];
2371
+ return r ? r[1] : "";
2372
+ };
2373
+ this.serializationCtx = this.serializationCtxFactory(SsrNode, DomRef, this.symbolToChunkResolver, e.writer);
2374
+ this.renderTimer = createTimer();
2375
+ this.tag = e.tagName;
2376
+ this.isHtml = e.tagName === "html";
2377
+ this.writer = e.writer;
2378
+ this.streamHandler = e.streamHandler;
2379
+ this.timing = e.timing;
2380
+ this.ce = e.buildBase;
2381
+ this.resolvedManifest = e.resolvedManifest;
2382
+ this.renderOptions = e.renderOptions;
2383
+ this.oe = 1e5;
2384
+ const t = this.renderOptions.qwikLoader;
2385
+ this.qlInclude = t ? typeof t === "object" ? t.include === "never" ? 2 /* Done */ : 0 /* Module */ : t === "inline" ? 1 /* Inline */ : t === "never" ? 2 /* Done */ : 0 /* Module */ : 0 /* Module */;
2386
+ if (this.qlInclude === 0 /* Module */) {
2387
+ const e = this.resolvedManifest?.manifest.qwikLoader;
2388
+ if (!e) {
2389
+ this.qlInclude = 1 /* Inline */;
2390
+ }
2391
+ }
2392
+ this.A();
2393
+ }
2394
+ ensureProjectionResolved(e) {}
2395
+ handleError(e, t) {
2396
+ throw e;
2397
+ }
2398
+ addBackpatchEntry(e, t, r) {
2399
+ const n = parseInt(e, 10);
2400
+ const s = {
2401
+ attrName: t,
2402
+ value: r
2403
+ };
2404
+ const i = this.backpatchMap.get(n) || [];
2405
+ i.push(s);
2406
+ this.backpatchMap.set(n, i);
2407
+ }
2408
+ async render(e) {
2409
+ this.openContainer();
2410
+ await this.renderJSX(e, {
2411
+ currentStyleScoped: null,
2412
+ parentComponentFrame: this.getComponentFrame()
2413
+ });
2414
+ await this.closeContainer();
2415
+ }
2416
+ async renderJSX(e, t) {
2417
+ await Rn(this, e, t);
2418
+ }
2419
+ setContext(e, t, r) {
2420
+ const n = e;
2421
+ let s = n.getProp(Ie);
2422
+ if (s == null) {
2423
+ n.setProp(Ie, s = []);
2424
+ }
2425
+ de(s, t.id, r, 0, true);
2426
+ this.addRoot(n);
2427
+ }
2428
+ resolveContext(e, t) {
2429
+ let r = e;
2430
+ while (r) {
2431
+ const e = r.getProp(Ie);
2432
+ if (e != null && pe(e, t.id, 0)) {
2433
+ return $e(e, t.id, 0);
2434
+ }
2435
+ r = r.parentComponent;
2436
+ }
2437
+ return void 0;
2438
+ }
2439
+ getParentHost(e) {
2440
+ const t = e;
2441
+ return t.parentComponent;
2442
+ }
2443
+ setHostProp(e, t, r) {
2444
+ const n = e;
2445
+ return n.setProp(t, r);
2446
+ }
2447
+ getHostProp(e, t) {
2448
+ const r = e;
2449
+ return r.getProp(t);
2450
+ }
2451
+ /**
2452
+ * Renders opening tag for container. It could be a html tag for regular apps or custom element
2453
+ * for micro-frontends
2454
+ */ openContainer() {
2455
+ if (this.tag == "html") {
2456
+ this.write("<!DOCTYPE html>");
2457
+ }
2458
+ const e = this.renderOptions.containerAttributes || {};
2459
+ const t = e[QRenderAttr];
2460
+ e[Ve] = "paused" /* PAUSED */;
2461
+ e[QRuntimeAttr] = "2";
2462
+ e[QVersionAttr] = this.se ?? "dev";
2463
+ e[QRenderAttr] = (t ? t + "-" : "") + (isDev7 ? "ssr-dev" : "ssr");
2464
+ e[ze] = this.ce || "";
2465
+ e[QLocaleAttr] = this.Nt;
2466
+ e[QManifestHashAttr] = this.resolvedManifest.manifest.manifestHash;
2467
+ e[QInstanceAttr] = this.le;
2468
+ this.zt.containerAttributes = e;
2469
+ this.openElement(this.tag, null, e);
2470
+ if (!this.isHtml) {
2471
+ this.emitContainerDataFrame = this.currentElementFrame;
2472
+ }
2473
+ }
2474
+ /** Renders closing tag for current container */ closeContainer() {
2475
+ return this.closeElement();
2476
+ }
2477
+ Et=0;
2478
+ /** Renders opening tag for DOM element */
2479
+ openElement(e, t, r, n = null, s = null, i = null, o = true) {
2480
+ const a = isQwikStyleElement(e, r) || isQwikStyleElement(e, n);
2481
+ if (e === "noscript" || e === "template" || e === "script") {
2482
+ this.Et++;
2483
+ }
2484
+ if (
2485
+ // don't append qwik loader before qwik style elements
2486
+ // it will confuse the resuming, because styles are expected to be the first nodes in subtree
2487
+ !a && this.qlInclude === 1 /* Inline */) {
2488
+ if (this.Et === 0 && this.size > 30 * 1024 && e !== "body") {
2489
+ this.emitQwikLoaderInline();
2490
+ }
2491
+ }
2492
+ let l = void 0;
2493
+ this.lastNode = null;
2494
+ if (!a && this.currentElementFrame) {
2495
+ vNodeData_incrementElementCount(this.currentElementFrame.vNodeData);
2496
+ }
2497
+ this.createAndPushFrame(e, this.depthFirstElementCount++, i);
2498
+ if (this.isHtml && e === "body" && this.emitContainerDataFrame === null) {
2499
+ this.emitContainerDataFrame = this.currentElementFrame;
2500
+ }
2501
+ vNodeData_openElement(this.currentElementFrame.vNodeData);
2502
+ this.write(LT);
2503
+ this.write(e);
2504
+ const c = this.getOrCreateLastNode();
2505
+ if (r) {
2506
+ l = this.writeAttrs(e, r, false, s, i, o);
2507
+ }
2508
+ this.write(" " + cr);
2509
+ if (t !== null) {
2510
+ this.write(`="${t}"`);
2511
+ } else if (import.meta.env.TEST) {
2512
+ this.write(EMPTY_ATTR);
2513
+ }
2514
+ if (n && !Kr(n)) {
2515
+ l = this.writeAttrs(e, n, true, s, i, o) || l;
2516
+ }
2517
+ this.write(GT);
2518
+ if (c) {
2519
+ c.setTreeNonUpdatable();
2520
+ }
2521
+ return l;
2522
+ }
2523
+ /** Renders closing tag for DOM element */ closeElement() {
2524
+ if (this.currentElementFrame === this.emitContainerDataFrame) {
2525
+ this.emitContainerDataFrame = null;
2526
+ this.onRenderDone();
2527
+ const e = createTimer();
2528
+ return $r($r(this.emitContainerData(), () => this._closeElement()), () => {
2529
+ this.timing.snapshot = e();
2530
+ });
2531
+ }
2532
+ this._closeElement();
2533
+ }
2534
+ onRenderDone() {
2535
+ this.drainCleanupQueue();
2536
+ this.timing.render = this.renderTimer();
2537
+ }
2538
+ /** Drain cleanup queue and cleanup tasks etc. */ drainCleanupQueue() {
2539
+ let e = this.cleanupQueue.pop();
2540
+ while (e) {
2541
+ for (let t = 0; t < e.length; t++) {
2542
+ const r = e[t];
2543
+ if (hasDestroy(r)) {
2544
+ r.qn();
2545
+ }
2546
+ }
2547
+ e = this.cleanupQueue.pop();
2548
+ }
2549
+ }
2550
+ _closeElement() {
2551
+ const e = this.popFrame();
2552
+ const t = e.elementName;
2553
+ if (!isSelfClosingTag(t)) {
2554
+ this.write(CLOSE_TAG);
2555
+ this.write(t);
2556
+ this.write(GT);
2557
+ }
2558
+ this.lastNode = null;
2559
+ if (t === "noscript" || t === "template" || t === "script") {
2560
+ this.Et--;
2561
+ }
2562
+ }
2563
+ /** Writes opening data to vNodeData for fragment boundaries */ openFragment(e) {
2564
+ this.lastNode = null;
2565
+ vNodeData_openFragment(this.currentElementFrame.vNodeData, e);
2566
+ this.getOrCreateLastNode();
2567
+ }
2568
+ /** Writes closing data to vNodeData for fragment boundaries */ closeFragment() {
2569
+ vNodeData_closeFragment(this.currentElementFrame.vNodeData);
2570
+ if (this.currentComponentNode) {
2571
+ this.currentComponentNode.setTreeNonUpdatable();
2572
+ }
2573
+ this.lastNode = null;
2574
+ }
2575
+ openProjection(e) {
2576
+ this.openFragment(e);
2577
+ const t = this.getComponentFrame();
2578
+ if (t) {
2579
+ this.serializationCtx.kt(t.componentNode);
2580
+ t.projectionDepth++;
2581
+ }
2582
+ }
2583
+ closeProjection() {
2584
+ const e = this.getComponentFrame();
2585
+ if (e) {
2586
+ e.projectionDepth--;
2587
+ }
2588
+ this.closeFragment();
2589
+ }
2590
+ /** Writes opening data to vNodeData for component boundaries */ openComponent(e) {
2591
+ this.openFragment(e);
2592
+ this.currentComponentNode = this.getOrCreateLastNode();
2593
+ this.componentStack.push(new SsrComponentFrame(this.currentComponentNode));
2594
+ }
2595
+ /**
2596
+ * Returns the current component frame.
2597
+ *
2598
+ * @param projectionDepth - How many levels of projection to skip. This is needed when projections
2599
+ * are nested inside other projections we need to have a way to read from a frame above.
2600
+ * @returns
2601
+ */ getComponentFrame(e = 0) {
2602
+ const t = this.componentStack.length;
2603
+ const r = t - e - 1;
2604
+ return r >= 0 ? this.componentStack[r] : null;
2605
+ }
2606
+ getParentComponentFrame() {
2607
+ const e = this.getComponentFrame()?.projectionDepth || 0;
2608
+ return this.getComponentFrame(e);
2609
+ }
2610
+ /** Writes closing data to vNodeData for component boundaries and emit unclaimed projections inline */ async closeComponent() {
2611
+ const e = this.componentStack.pop();
2612
+ await this.emitUnclaimedProjectionForComponent(e);
2613
+ this.closeFragment();
2614
+ this.currentComponentNode = this.currentComponentNode?.parentComponent || null;
2615
+ }
2616
+ async emitUnclaimedProjectionForComponent(e) {
2617
+ if (e.slots.length === 0) {
2618
+ return;
2619
+ }
2620
+ this.openElement(Je, null, QTemplateProps, null);
2621
+ const t = e.projectionScopedStyle;
2622
+ for (let r = 0; r < e.slots.length; r += 2) {
2623
+ const n = e.slots[r];
2624
+ const s = e.slots[r + 1];
2625
+ this.openFragment(isDev7 ? {
2626
+ [xe]: "P" /* Projection */ ,
2627
+ [QSlotParent]: e.componentNode.id
2628
+ } : {
2629
+ [QSlotParent]: e.componentNode.id
2630
+ });
2631
+ const i = this.getOrCreateLastNode();
2632
+ if (i.vnodeData) {
2633
+ i.vnodeData[0] |= 16 /* SERIALIZE */;
2634
+ }
2635
+ e.componentNode.setProp(n, i.id);
2636
+ await this.renderJSX(s, {
2637
+ currentStyleScoped: t,
2638
+ parentComponentFrame: e.projectionComponentFrame
2639
+ });
2640
+ this.closeFragment();
2641
+ }
2642
+ this.closeElement();
2643
+ }
2644
+ /** Write a text node with correct escaping. Save the length of the text node in the vNodeData. */ textNode(e) {
2645
+ this.write(escapeHTML(e));
2646
+ vNodeData_addTextSize(this.currentElementFrame.vNodeData, e.length);
2647
+ this.lastNode = null;
2648
+ }
2649
+ htmlNode(e) {
2650
+ this.write(e);
2651
+ }
2652
+ commentNode(e) {
2653
+ this.write("\x3c!--" + e + "--\x3e");
2654
+ }
2655
+ addRoot(e) {
2656
+ if (this.S) {
2657
+ return this.serializationCtx.re(e);
2658
+ }
2659
+ return this.serializationCtx.kt(e);
2660
+ }
2661
+ getOrCreateLastNode() {
2662
+ if (!this.lastNode) {
2663
+ this.lastNode = vNodeData_createSsrNodeReference(this.currentComponentNode, this.currentElementFrame.vNodeData,
2664
+ // we start at -1, so we need to add +1
2665
+ this.currentElementFrame.depthFirstElementIdx + 1, this.cleanupQueue, this.currentElementFrame.currentFile);
2666
+ }
2667
+ return this.lastNode;
2668
+ }
2669
+ addUnclaimedProjection(e, t, r) {
2670
+ e.slots.push(t, r);
2671
+ }
2672
+ A() {
2673
+ const e = this.resolvedManifest.manifest.injections;
2674
+ if (!e) {
2675
+ return;
2676
+ }
2677
+ for (let t = 0; t < e.length; t++) {
2678
+ const r = e[t];
2679
+ const n = ys(r.tag, null, r.attributes || {}, null, 0, null);
2680
+ if (r.location === "head") {
2681
+ this.additionalHeadNodes.push(n);
2682
+ } else {
2683
+ this.additionalBodyNodes.push(n);
2684
+ }
2685
+ }
2686
+ }
2687
+ ye(e, t, r, n) {
2688
+ if (n) {
2689
+ const e = this.getComponentFrame(0);
2690
+ e.scopedStyleIds.add(t);
2691
+ const n = convertStyleIdsToString(e.scopedStyleIds);
2692
+ this.setHostProp(r, Ne, n);
2693
+ }
2694
+ if (!this.styleIds.has(t)) {
2695
+ this.styleIds.add(t);
2696
+ if (this.currentElementFrame?.elementName === "html") {
2697
+ this.additionalHeadNodes.push(ms("style", null, {
2698
+ dangerouslySetInnerHTML: e,
2699
+ [Oe]: t
2700
+ }, null, 0, t));
2701
+ } else {
2702
+ this._styleNode(t, e);
2703
+ }
2704
+ }
2705
+ }
2706
+ _styleNode(e, t) {
2707
+ this.openElement("style", null, {
2708
+ [Oe]: e
2709
+ });
2710
+ this.write(t);
2711
+ this.closeElement();
2712
+ }
2713
+ ////////////////////////////////////
2714
+ emitContainerData() {
2715
+ return $r(this.resolvePromiseAttributes(), () => $r(this.emitStateData(), () => {
2716
+ this.S = true;
2717
+ this.emitVNodeData();
2718
+ preloaderPost(this, this.renderOptions, this.zt?.nonce);
2719
+ this.emitSyncFnsData();
2720
+ this.emitPatchDataIfNeeded();
2721
+ this.emitExecutorIfNeeded();
2722
+ this.emitQwikLoaderAtBottomIfNeeded();
2723
+ }));
2724
+ }
2725
+ /**
2726
+ * Serialize the vNodeData into a string and emit it as a script tag.
2727
+ *
2728
+ * ## Encoding:
2729
+ *
2730
+ * - Alphabetical characters are text node lengths.
2731
+ * - Numbers are element counts.
2732
+ * - `{` is start of virtual node.
2733
+ * - `}` is end of virtual node.
2734
+ * - `~` Store as reference for data deserialization.
2735
+ * - `!"#$%&'()*+'-./` are separators (sequential characters in ASCII table)
2736
+ *
2737
+ * Attribute and separators encoding described here:
2738
+ * `packages/qwik/src/core/v2/shared/vnode-data-types.ts`
2739
+ *
2740
+ * NOTE: Not every element will need vNodeData. So we need to encode how many elements should be
2741
+ * skipped. By choosing different separators we can encode different numbers of elements to skip.
2742
+ */ emitVNodeData() {
2743
+ if (!this.serializationCtx.Dn.length) {
2744
+ return;
2745
+ }
2746
+ this.openElement("script", null, {
2747
+ type: "qwik/vnode"
2748
+ });
2749
+ const e = [];
2750
+ const t = this.vNodeDatas;
2751
+ let r = 0;
2752
+ for (let n = 0; n < t.length; n++) {
2753
+ const s = t[n];
2754
+ const i = s[0];
2755
+ if (i & 16 /* SERIALIZE */) {
2756
+ r = this.emitVNodeSeparators(r, n);
2757
+ if (i & 8 /* REFERENCE */) {
2758
+ this.write(VNodeDataSeparator.REFERENCE_CH);
2759
+ }
2760
+ if (i & (1 /* TEXT_DATA */ | 2 /* VIRTUAL_NODE */ | 4 /* ELEMENT_NODE */)) {
2761
+ let t = null;
2762
+ let r = 0;
2763
+ for (let n = 1; n < s.length; n++) {
2764
+ const i = s[n];
2765
+ if (typeof i === "object" && i !== null) {
2766
+ e.push(t);
2767
+ t = i;
2768
+ } else if (i === OPEN_FRAGMENT) {
2769
+ r++;
2770
+ this.write(VNodeDataChar.OPEN_CHAR);
2771
+ } else if (i === CLOSE_FRAGMENT) {
2772
+ if (t) {
2773
+ this.writeFragmentAttrs(t);
2774
+ t = e.pop();
2775
+ }
2776
+ r--;
2777
+ this.write(VNodeDataChar.CLOSE_CHAR);
2778
+ } else if (i === WRITE_ELEMENT_ATTRS) {
2779
+ if (t && !Kr(t)) {
2780
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2781
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2782
+ this.writeFragmentAttrs(t);
2783
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2784
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2785
+ t = e.pop();
2786
+ }
2787
+ } else if (i >= 0) {
2788
+ this.write(encodeAsAlphanumeric(i));
2789
+ } else {
2790
+ this.write(String(0 - i));
2791
+ }
2792
+ }
2793
+ while (r-- > 0) {
2794
+ if (t) {
2795
+ this.writeFragmentAttrs(t);
2796
+ t = e.pop();
2797
+ }
2798
+ this.write(VNodeDataChar.CLOSE_CHAR);
2799
+ }
2800
+ }
2801
+ }
2802
+ }
2803
+ this.closeElement();
2804
+ }
2805
+ writeFragmentAttrs(e) {
2806
+ for (const t in e) {
2807
+ let r = e[t];
2808
+ let n = false;
2809
+ if (typeof r !== "string") {
2810
+ const e = this.addRoot(r);
2811
+ if (e === void 0) {
2812
+ continue;
2813
+ }
2814
+ r = String(e);
2815
+ }
2816
+ switch (t) {
2817
+ case Ne:
2818
+ this.write(VNodeDataChar.SCOPED_STYLE_CHAR);
2819
+ break;
2820
+
2821
+ case Ce:
2822
+ this.write(VNodeDataChar.RENDER_FN_CHAR);
2823
+ break;
2824
+
2825
+ case ELEMENT_ID:
2826
+ this.write(VNodeDataChar.ID_CHAR);
2827
+ break;
2828
+
2829
+ case Ze:
2830
+ this.write(VNodeDataChar.PROPS_CHAR);
2831
+ break;
2832
+
2833
+ case Ke:
2834
+ n = true;
2835
+ this.write(VNodeDataChar.KEY_CHAR);
2836
+ break;
2837
+
2838
+ case tr:
2839
+ this.write(VNodeDataChar.SEQ_CHAR);
2840
+ break;
2841
+
2842
+ case nr:
2843
+ this.write(VNodeDataChar.SEQ_IDX_CHAR);
2844
+ break;
2845
+
2846
+ case Te:
2847
+ this.write(VNodeDataChar.BACK_REFS_CHAR);
2848
+ break;
2849
+
2850
+ case QSlotParent:
2851
+ this.write(VNodeDataChar.SLOT_PARENT_CHAR);
2852
+ break;
2853
+
2854
+ // Skipping `\` character for now because it is used for escaping.
2855
+ case Ie:
2856
+ this.write(VNodeDataChar.CONTEXT_CHAR);
2857
+ break;
2858
+
2859
+ case _e:
2860
+ this.write(VNodeDataChar.SLOT_CHAR);
2861
+ break;
2862
+
2863
+ default:
2864
+ {
2865
+ n = true;
2866
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2867
+ this.write(encodeVNodeDataString(t));
2868
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2869
+ }
2870
+ }
2871
+ const s = encodeVNodeDataString(n ? encodeURI(r) : r);
2872
+ const i = n ? s !== r : false;
2873
+ if (i) {
2874
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2875
+ this.write(s);
2876
+ this.write(VNodeDataChar.SEPARATOR_CHAR);
2877
+ } else {
2878
+ this.write(r);
2879
+ }
2880
+ }
2881
+ }
2882
+ emitStateData() {
2883
+ if (!this.serializationCtx.Dn.length) {
2884
+ return;
2885
+ }
2886
+ const e = this.stateScriptAttrs();
2887
+ this.openElement("script", null, e);
2888
+ return $r(this.serializationCtx.Ot(), () => {
2889
+ this.closeElement();
2890
+ });
2891
+ }
2892
+ /** Add q-d:qidle attribute to eagerly resume some state if needed */ stateScriptAttrs() {
2893
+ const e = {
2894
+ type: "qwik/state"
2895
+ };
2896
+ const t = this.serializationCtx.Ct;
2897
+ if (t.size > 0) {
2898
+ e["q-d:qidle"] = Wu(null, "_res", w, null, [ ...t ]);
2899
+ }
2900
+ return e;
2901
+ }
2902
+ emitSyncFnsData() {
2903
+ const e = this.serializationCtx.te;
2904
+ if (e.length) {
2905
+ const t = {
2906
+ "q:func": "qwik/json"
2907
+ };
2908
+ if (this.renderOptions.serverData?.nonce) {
2909
+ t["nonce"] = this.renderOptions.serverData.nonce;
2910
+ }
2911
+ this.openElement("script", null, t);
2912
+ this.write(Q_FUNCS_PREFIX.replace("HASH", this.le));
2913
+ this.write(BRACKET_OPEN);
2914
+ this.writeArray(e, Zr);
2915
+ this.write(BRACKET_CLOSE);
2916
+ this.closeElement();
2917
+ }
2918
+ }
2919
+ emitPatchDataIfNeeded() {
2920
+ const e = [];
2921
+ for (const [t, r] of this.backpatchMap) {
2922
+ for (let n = 0; n < r.length; n++) {
2923
+ const s = r[n];
2924
+ e.push(t, s.attrName, Pl(s.value) ? s.value.untrackedValue : s.value);
2925
+ }
2926
+ }
2927
+ this.backpatchMap.clear();
2928
+ if (e.length > 0) {
2929
+ this.isBackpatchExecutorEmitted = true;
2930
+ const t = {
2931
+ type: ELEMENT_BACKPATCH_DATA
2932
+ };
2933
+ if (this.renderOptions.serverData?.nonce) {
2934
+ t["nonce"] = this.renderOptions.serverData.nonce;
2935
+ }
2936
+ this.openElement("script", null, t);
2937
+ this.write(JSON.stringify(e));
2938
+ this.closeElement();
2939
+ }
2940
+ }
2941
+ emitExecutorIfNeeded() {
2942
+ if (!this.isBackpatchExecutorEmitted) {
2943
+ return;
2944
+ }
2945
+ const e = {
2946
+ type: "text/javascript"
2947
+ };
2948
+ if (this.renderOptions.serverData?.nonce) {
2949
+ e["nonce"] = this.renderOptions.serverData.nonce;
2950
+ }
2951
+ this.openElement("script", null, e);
2952
+ const t = getQwikBackpatchExecutorScript({
2953
+ debug: isDev7
2954
+ });
2955
+ this.write(t);
2956
+ this.closeElement();
2957
+ }
2958
+ emitPreloaderPre() {
2959
+ preloaderPre(this, this.renderOptions.preloader, this.renderOptions.serverData?.nonce);
2960
+ }
2961
+ isStatic() {
2962
+ return this.serializationCtx.Pt.size === 0;
2963
+ }
2964
+ emitQwikLoaderAtTopIfNeeded() {
2965
+ if (this.qlInclude === 0 /* Module */) {
2966
+ this.qlInclude = 2 /* Done */;
2967
+ const e = this.ce + this.resolvedManifest.manifest.qwikLoader;
2968
+ const t = {
2969
+ rel: "modulepreload",
2970
+ href: e
2971
+ };
2972
+ const r = this.renderOptions.serverData?.nonce;
2973
+ if (r) {
2974
+ t["nonce"] = r;
2975
+ }
2976
+ this.openElement("link", null, t);
2977
+ this.closeElement();
2978
+ const n = {
2979
+ async: true,
2980
+ type: "module",
2981
+ src: e
2982
+ };
2983
+ if (r) {
2984
+ n["nonce"] = r;
2985
+ }
2986
+ this.openElement("script", null, n);
2987
+ this.closeElement();
2988
+ }
2989
+ }
2990
+ emitQwikLoaderInline() {
2991
+ this.qlInclude = 2 /* Done */;
2992
+ const e = getQwikLoaderScript({
2993
+ debug: this.renderOptions.debug
2994
+ });
2995
+ const t = {
2996
+ id: "qwikloader",
2997
+ async: true,
2998
+ type: "module"
2999
+ };
3000
+ if (this.renderOptions.serverData?.nonce) {
3001
+ t["nonce"] = this.renderOptions.serverData.nonce;
3002
+ }
3003
+ this.openElement("script", null, t);
3004
+ this.write(e);
3005
+ this.closeElement();
3006
+ }
3007
+ emitQwikLoaderAtBottomIfNeeded() {
3008
+ if (!this.isStatic()) {
3009
+ if (this.qlInclude !== 2 /* Done */) {
3010
+ this.emitQwikLoaderInline();
3011
+ }
3012
+ this.emitQwikEvents(Array.from(this.serializationCtx._t, e => JSON.stringify(e)));
3013
+ }
3014
+ }
3015
+ emitQwikEvents(e) {
3016
+ if (e.length > 0) {
3017
+ const t = {};
3018
+ const r = this.renderOptions.serverData?.nonce;
3019
+ if (r) {
3020
+ t["nonce"] = r;
3021
+ }
3022
+ this.openElement("script", null, t);
3023
+ this.write(`(window._qwikEv||(window._qwikEv=[])).push(`);
3024
+ this.writeArray(e, Zr);
3025
+ this.write(PAREN_CLOSE);
3026
+ this.closeElement();
3027
+ }
3028
+ }
3029
+ // Keep in sync with process-vnode-data.unit.ts
3030
+ emitVNodeSeparators(e, t) {
3031
+ let r = t - e;
3032
+ while (r != 0) {
3033
+ if (r >= 8192) {
3034
+ this.write(VNodeDataSeparator.ADVANCE_8192_CH);
3035
+ r -= 8192;
3036
+ } else {
3037
+ r & 4096 && this.write(VNodeDataSeparator.ADVANCE_4096_CH);
3038
+ r & 2048 && this.write(VNodeDataSeparator.ADVANCE_2048_CH);
3039
+ r & 1024 && this.write(VNodeDataSeparator.ADVANCE_1024_CH);
3040
+ r & 512 && this.write(VNodeDataSeparator.ADVANCE_512_CH);
3041
+ r & 256 && this.write(VNodeDataSeparator.ADVANCE_256_CH);
3042
+ r & 128 && this.write(VNodeDataSeparator.ADVANCE_128_CH);
3043
+ r & 64 && this.write(VNodeDataSeparator.ADVANCE_64_CH);
3044
+ r & 32 && this.write(VNodeDataSeparator.ADVANCE_32_CH);
3045
+ r & 16 && this.write(VNodeDataSeparator.ADVANCE_16_CH);
3046
+ r & 8 && this.write(VNodeDataSeparator.ADVANCE_8_CH);
3047
+ r & 4 && this.write(VNodeDataSeparator.ADVANCE_4_CH);
3048
+ r & 2 && this.write(VNodeDataSeparator.ADVANCE_2_CH);
3049
+ r & 1 && this.write(VNodeDataSeparator.ADVANCE_1_CH);
3050
+ r = 0;
3051
+ }
3052
+ }
3053
+ return t;
3054
+ }
3055
+ createAndPushFrame(e, t, r) {
3056
+ let n = 10 /* ANYTHING */;
3057
+ if (isDev7) {
3058
+ if (!this.currentElementFrame) {
3059
+ n = initialTag(e);
3060
+ } else {
3061
+ let t = this.currentElementFrame;
3062
+ const s = t.tagNesting;
3063
+ n = isTagAllowed(s, e);
3064
+ if (n === 0 /* NOT_ALLOWED */) {
3065
+ const n = [];
3066
+ while (t) {
3067
+ n.unshift(t);
3068
+ t = t.parent;
3069
+ }
3070
+ const i = [];
3071
+ if (r) {
3072
+ i.push(`Error found in file: ${r}`);
3073
+ }
3074
+ i.push(`HTML rules do not allow '<${e}>' at this location.`, ` (The HTML parser will try to recover by auto-closing or inserting additional tags which will confuse Qwik when it resumes.)`, ` Offending tag: <${e}>`, ` Existing tag context:`);
3075
+ let o = " ";
3076
+ let a = "";
3077
+ for (let e = 0; e < n.length; e++) {
3078
+ const t = n[e];
3079
+ const [r, s] = allowedContent(t.tagNesting);
3080
+ i.push(`${o}<${t.elementName}>${a !== r ? ` [${r}]${s ? ` -> ${s}` : ""}` : ""}`);
3081
+ a = r;
3082
+ o += " ";
3083
+ }
3084
+ i.push(`${o}<${e}> <= is not allowed as a child of ${allowedContent(s)[0]}.`);
3085
+ throw newTagError(i.map(escapeHTML).join("\n"));
3086
+ }
3087
+ }
3088
+ }
3089
+ const s = {
3090
+ tagNesting: n,
3091
+ parent: this.currentElementFrame,
3092
+ elementName: e,
3093
+ depthFirstElementIdx: t,
3094
+ vNodeData: [ 0 /* NONE */ ],
3095
+ currentFile: isDev7 ? r || null : null
3096
+ };
3097
+ this.currentElementFrame = s;
3098
+ this.vNodeDatas.push(s.vNodeData);
3099
+ }
3100
+ popFrame() {
3101
+ const e = this.currentElementFrame;
3102
+ this.currentElementFrame = e.parent;
3103
+ return e;
3104
+ }
3105
+ ////////////////////////////////////
3106
+ write(e) {
3107
+ this.size += e.length;
3108
+ this.writer.write(e);
3109
+ }
3110
+ writeArray(e, t) {
3111
+ for (let r = 0; r < e.length; r++) {
3112
+ const n = e[r];
3113
+ if (r > 0) {
3114
+ this.write(t);
3115
+ }
3116
+ this.write(n);
3117
+ }
3118
+ }
3119
+ writeAttrs(e, t, s, i, o, a) {
3120
+ let l = void 0;
3121
+ for (let c in t) {
3122
+ let u = t[c];
3123
+ if (isSSRUnsafeAttr(c)) {
3124
+ if (isDev7) {
3125
+ throw ge(32 /* unsafeAttr */ , [ c ]);
3126
+ }
3127
+ continue;
3128
+ }
3129
+ if (wr(c)) {
3130
+ u = _setEvent(this.serializationCtx, c, u, a);
3131
+ } else if (c === "ref") {
3132
+ const e = this.getOrCreateLastNode();
3133
+ if (Pl(u)) {
3134
+ u.Zt = new DomRef(e);
3135
+ continue;
3136
+ } else if (typeof u === "function") {
3137
+ u(new DomRef(e));
3138
+ continue;
3139
+ } else if (u == null) {
3140
+ continue;
3141
+ } else {
3142
+ throw ge(15 /* invalidRefValue */ , [ o ]);
3143
+ }
3144
+ } else if (c === er || c === rr) {
3145
+ u = this.serializationCtx.kt(u);
3146
+ } else if (Pl(u)) {
3147
+ const e = this.getOrCreateLastNode();
3148
+ const t = new ls({
3149
+ N: i,
3150
+ et: s
3151
+ });
3152
+ const r = u;
3153
+ u = n(() => this.trackSignalValue(r, e, c, t));
3154
+ }
3155
+ if (hr(u)) {
3156
+ const e = this.getOrCreateLastNode();
3157
+ this.addPromiseAttribute(u);
3158
+ u.then(t => {
3159
+ this.addBackpatchEntry(e.id, c, t);
3160
+ });
3161
+ continue;
3162
+ }
3163
+ if (c === ur) {
3164
+ if (u) {
3165
+ l = String(u);
3166
+ c = Ve;
3167
+ u = "html" /* HTML */;
3168
+ }
3169
+ if (e === "style") {
3170
+ continue;
3171
+ }
3172
+ } else if (isPreventDefault(c)) {
3173
+ addPreventDefaultEventToSerializationContext(this.serializationCtx, c);
3174
+ }
3175
+ if (e === "textarea" && c === "value") {
3176
+ if (u && typeof u !== "string") {
3177
+ if (isDev7) {
3178
+ throw ge(23 /* wrongTextareaValue */ , [ o, u ]);
3179
+ }
3180
+ continue;
3181
+ }
3182
+ l = escapeHTML(u || "");
3183
+ c = Ve;
3184
+ u = "text" /* TEXT */;
3185
+ }
3186
+ const d = r(c, u, i);
3187
+ if (d != null && d !== false) {
3188
+ this.write(Of);
3189
+ this.write(c);
3190
+ if (d !== true) {
3191
+ this.write(ATTR_EQUALS_QUOTE);
3192
+ const e = escapeHTML(String(d));
3193
+ this.write(e);
3194
+ this.write(QUOTE);
3195
+ }
3196
+ }
3197
+ }
3198
+ return l;
3199
+ }
3200
+ addPromiseAttribute(e) {
3201
+ this.promiseAttributes ||= [];
3202
+ this.promiseAttributes.push(e);
3203
+ }
3204
+ async resolvePromiseAttributes() {
3205
+ if (this.promiseAttributes) {
3206
+ await Promise.all(this.promiseAttributes);
3207
+ this.promiseAttributes = null;
3208
+ }
3209
+ }
3210
+ };
3211
+
3212
+ var isQwikStyleElement = (e, t) => {
3213
+ if (e === "style" && t != null) {
3214
+ return Object.prototype.hasOwnProperty.call(t, Oe) || Object.prototype.hasOwnProperty.call(t, Ne);
3215
+ }
3216
+ return false;
3217
+ };
3218
+
3219
+ function newTagError(e) {
3220
+ return ge(12 /* tagError */ , [ e ]);
3221
+ }
3222
+
3223
+ function hasDestroy(e) {
3224
+ return e && typeof e === "object" && typeof e.qn === "function";
3225
+ }
3226
+
3227
+ function isSSRUnsafeAttr(e) {
3228
+ for (let t = 0; t < e.length; t++) {
3229
+ const r = e.charCodeAt(t);
3230
+ if (r === 62 || r === 47 || r === 61 || r === 34 || r === 39 || r === 9 || r === 10 || r === 12 || r === 32) {
3231
+ return true;
3232
+ }
3233
+ }
3234
+ return false;
3235
+ }
3236
+
3237
+ function randomStr() {
3238
+ return (Math.random().toString(36) + "000000").slice(2, 8);
3239
+ }
3240
+
3241
+ function addPreventDefaultEventToSerializationContext(e, t) {
3242
+ const r = "e" + t.substring(14);
3243
+ if (r) {
3244
+ e._t.add(r);
3245
+ }
3246
+ }
3247
+
3248
+ // packages/qwik/src/server/ssr-render.ts
3249
+ import { manifest as builtManifest } from "@qwik-client-manifest";
3250
+
3251
+ // packages/qwik/src/server/ssr-stream-handler.ts
3252
+ var StreamHandler = class {
3253
+ constructor(e, t) {
3254
+ this.opts = e;
3255
+ this.timing = t;
3256
+ this.inOrderStreaming = e.streaming?.inOrder ?? {
3257
+ strategy: "auto",
3258
+ maximumInitialChunk: 2e4,
3259
+ maximumChunk: 1e4
3260
+ };
3261
+ this.nativeStream = e.stream;
3262
+ this.stream = this.setupStreamWriter();
3263
+ }
3264
+ bufferSize=0;
3265
+ buffer="";
3266
+ networkFlushes=0;
3267
+ inOrderStreaming;
3268
+ streamBlockDepth=0;
3269
+ streamBlockBuffer="";
3270
+ streamBlockBufferSize=0;
3271
+ nativeStream;
3272
+ firstFlushTimer=createTimer();
3273
+ stream;
3274
+ setupStreamWriter() {
3275
+ const e = this;
3276
+ let t;
3277
+ switch (this.inOrderStreaming.strategy) {
3278
+ case "disabled":
3279
+ t = {
3280
+ write(t) {
3281
+ if (t === void 0 || t === null) {
3282
+ return;
3283
+ }
3284
+ e.enqueue(t);
3285
+ }
3286
+ };
3287
+ break;
3288
+
3289
+ case "direct":
3290
+ {
3291
+ const e = this.nativeStream;
3292
+ t = {
3293
+ write(t) {
3294
+ if (t === void 0 || t === null) {
3295
+ return;
3296
+ }
3297
+ e.write(t);
3298
+ }
3299
+ };
3300
+ break;
3301
+ }
3302
+
3303
+ default:
3304
+ case "auto":
3305
+ {
3306
+ const r = this.inOrderStreaming.maximumChunk ?? 0;
3307
+ const n = this.inOrderStreaming.maximumInitialChunk ?? 0;
3308
+ t = {
3309
+ write(t) {
3310
+ if (t === void 0 || t === null) {
3311
+ return;
3312
+ }
3313
+ e.enqueue(t);
3314
+ if (e.streamBlockDepth === 0) {
3315
+ const t = e.networkFlushes === 0 ? n : r;
3316
+ if (e.bufferSize >= t) {
3317
+ e.flush();
3318
+ }
3319
+ }
3320
+ }
3321
+ };
3322
+ break;
3323
+ }
3324
+ }
3325
+ return t;
3326
+ }
3327
+ enqueue(e) {
3328
+ const t = e.length;
3329
+ if (this.streamBlockDepth > 0) {
3330
+ this.streamBlockBuffer += e;
3331
+ this.streamBlockBufferSize += t;
3332
+ } else {
3333
+ this.bufferSize += t;
3334
+ this.buffer += e;
3335
+ }
3336
+ }
3337
+ flush() {
3338
+ if (this.buffer) {
3339
+ this.nativeStream.write(this.buffer);
3340
+ this.buffer = "";
3341
+ this.bufferSize = 0;
3342
+ this.networkFlushes++;
3343
+ if (this.networkFlushes === 1) {
3344
+ this.timing.firstFlush = this.firstFlushTimer();
3345
+ }
3346
+ }
3347
+ }
3348
+ streamBlockStart() {
3349
+ this.streamBlockDepth++;
3350
+ }
3351
+ streamBlockEnd() {
3352
+ this.streamBlockDepth--;
3353
+ if (this.streamBlockDepth === 0 && this.streamBlockBuffer) {
3354
+ this.buffer += this.streamBlockBuffer;
3355
+ this.bufferSize += this.streamBlockBufferSize;
3356
+ this.streamBlockBuffer = "";
3357
+ this.streamBlockBufferSize = 0;
3358
+ this.flush();
3359
+ }
3360
+ }
3361
+ };
3362
+
3363
+ // packages/qwik/src/server/ssr-render.ts
3364
+ var renderToString = async (e, t = {}) => {
3365
+ const r = [];
3366
+ const n = {
3367
+ write(e) {
3368
+ r.push(e);
3369
+ }
3370
+ };
3371
+ const s = await renderToStream(e, {
3372
+ ...t,
3373
+ stream: n
3374
+ });
3375
+ return {
3376
+ isStatic: s.isStatic,
3377
+ timing: s.timing,
3378
+ manifest: s.manifest,
3379
+ snapshotResult: s.snapshotResult,
3380
+ html: r.join("")
3381
+ };
3382
+ };
3383
+
3384
+ var renderToStream = async (e, t) => {
3385
+ const r = {
3386
+ firstFlush: 0,
3387
+ render: 0,
3388
+ snapshot: 0
3389
+ };
3390
+ const n = t.containerTagName ?? "html";
3391
+ const s = getBuildBase(t);
3392
+ const i = resolveManifest(t.manifest);
3393
+ const o = typeof t.locale === "function" ? t.locale(t) : t.serverData?.locale || t.locale || t.containerAttributes?.locale || "";
3394
+ const a = new StreamHandler(t, r);
3395
+ const l = ssrCreateContainer({
3396
+ tagName: n,
3397
+ locale: o,
3398
+ writer: a.stream,
3399
+ streamHandler: a,
3400
+ timing: r,
3401
+ buildBase: s,
3402
+ resolvedManifest: i,
3403
+ renderOptions: t
3404
+ });
3405
+ await setServerPlatform(t, i);
3406
+ await l.render(e);
3407
+ await l.l;
3408
+ a.flush();
3409
+ const c = {
3410
+ flushes: a.networkFlushes,
3411
+ manifest: i?.manifest,
3412
+ size: l.size,
3413
+ isStatic: false,
3414
+ timing: r
3415
+ };
3416
+ return c;
3417
+ };
3418
+
3419
+ function resolveManifest(e) {
3420
+ const t = e ? {
3421
+ ...builtManifest,
3422
+ ...e
3423
+ } : builtManifest;
3424
+ if (!t || "mapper" in t) {
3425
+ return t;
3426
+ }
3427
+ if (t.mapping) {
3428
+ const e = {};
3429
+ for (const r in t.mapping) {
3430
+ const n = t.mapping[r];
3431
+ e[getSymbolHash2(r)] = [ r, n ];
3432
+ }
3433
+ return {
3434
+ mapper: e,
3435
+ manifest: t,
3436
+ injections: t.injections || []
3437
+ };
3438
+ }
3439
+ return void 0;
3440
+ }
3441
+
3442
+ var Q_FUNCS_PREFIX = 'document["qFuncs_HASH"]=';
3443
+
3444
+ // packages/qwik/src/server/index.ts
3445
+ async function setServerPlatform2(e) {
3446
+ const t = createPlatform2({
3447
+ manifest: e
3448
+ }, resolveManifest(e));
3449
+ setPlatform2(t);
3450
+ }
3451
+
3452
+ export { getQwikBackpatchExecutorScript, getQwikLoaderScript, getQwikPrefetchWorkerScript, renderToStream, renderToString, resolveManifest, setServerPlatform2 as setServerPlatform, versions };