@qwik.dev/core 2.0.0-alpha.9 → 2.0.0-beta.10

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 (132) hide show
  1. package/bindings/qwik.darwin-arm64.node +0 -0
  2. package/bindings/qwik.darwin-x64.node +0 -0
  3. package/bindings/qwik.linux-x64-gnu.node +0 -0
  4. package/bindings/qwik.wasm.cjs +27 -27
  5. package/bindings/qwik.wasm.mjs +27 -27
  6. package/bindings/qwik.win32-x64-msvc.node +0 -0
  7. package/bindings/qwik_wasm_bg.wasm +0 -0
  8. package/dist/backpatch/index.cjs +6 -0
  9. package/dist/backpatch/index.d.ts +2 -0
  10. package/dist/backpatch/index.mjs +5 -0
  11. package/dist/{prefetch → backpatch}/package.json +2 -2
  12. package/dist/backpatch-executor.debug.js +34 -0
  13. package/dist/backpatch-executor.js +1 -0
  14. package/dist/build/index.cjs +3 -3
  15. package/dist/build/index.d.ts +22 -22
  16. package/dist/build/package.json +1 -1
  17. package/dist/cli.cjs +3035 -767
  18. package/dist/core-internal.d.ts +4622 -4153
  19. package/dist/core.cjs +7327 -6169
  20. package/dist/core.cjs.map +1 -1
  21. package/dist/core.min.mjs +1 -1
  22. package/dist/core.mjs +7294 -6163
  23. package/dist/core.mjs.map +1 -1
  24. package/dist/core.prod.cjs +3209 -2612
  25. package/dist/core.prod.mjs +3932 -3294
  26. package/dist/insights/index.qwik.cjs +1 -4142
  27. package/dist/insights/index.qwik.mjs +63 -4133
  28. package/dist/insights/vite/index.cjs +1 -82
  29. package/dist/insights/vite/index.mjs +65 -37
  30. package/dist/insights/vite.d.ts +22 -0
  31. package/dist/{insights/insights.d.ts → insights.d.ts} +33 -22
  32. package/dist/loader/index.cjs +2 -2
  33. package/dist/loader/index.mjs +2 -2
  34. package/dist/loader/package.json +1 -1
  35. package/dist/optimizer.cjs +201 -3817
  36. package/dist/optimizer.d.ts +754 -707
  37. package/dist/optimizer.mjs +2605 -3628
  38. package/dist/preloader.cjs +266 -0
  39. package/dist/preloader.mjs +195 -0
  40. package/dist/qwikloader.debug.js +228 -222
  41. package/dist/qwikloader.js +1 -3
  42. package/dist/server.cjs +915 -621
  43. package/dist/server.d.ts +519 -402
  44. package/dist/server.mjs +900 -615
  45. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/vite.config.mts +1 -1
  46. package/dist/starters/adapters/aws-lambda/package.json +1 -1
  47. package/dist/starters/adapters/aws-lambda/serverless.yml +15 -0
  48. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -8
  49. package/dist/starters/adapters/azure-swa/adapters/azure-swa/vite.config.mts +1 -1
  50. package/dist/starters/adapters/azure-swa/package.json +1 -1
  51. package/dist/starters/adapters/azure-swa/public/staticwebapp.config.json +7 -0
  52. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -4
  53. package/dist/starters/adapters/bun/adapters/bun/vite.config.mts +2 -2
  54. package/dist/starters/adapters/bun/package.json +1 -1
  55. package/dist/starters/adapters/bun/src/entry.bun.ts +3 -4
  56. package/dist/starters/adapters/cloud-run/adapters/cloud-run/vite.config.mts +1 -1
  57. package/dist/starters/adapters/cloud-run/package.json +1 -1
  58. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +2 -6
  59. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/vite.config.mts +1 -1
  60. package/dist/starters/adapters/cloudflare-pages/package.json +1 -1
  61. package/dist/starters/adapters/cloudflare-pages/public/_headers +2 -0
  62. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -4
  63. package/dist/starters/adapters/deno/adapters/deno/vite.config.mts +1 -1
  64. package/dist/starters/adapters/deno/package.json +1 -1
  65. package/dist/starters/adapters/deno/src/entry.deno.ts +3 -4
  66. package/dist/starters/adapters/express/adapters/express/vite.config.mts +1 -1
  67. package/dist/starters/adapters/express/package.json +1 -1
  68. package/dist/starters/adapters/express/src/entry.express.tsx +6 -5
  69. package/dist/starters/adapters/fastify/adapters/fastify/vite.config.mts +1 -1
  70. package/dist/starters/adapters/fastify/package.json +1 -1
  71. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +3 -2
  72. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +10 -3
  73. package/dist/starters/adapters/firebase/adapters/firebase/vite.config.mts +1 -1
  74. package/dist/starters/adapters/firebase/firebase.json +12 -1
  75. package/dist/starters/adapters/firebase/functions/index.js +2 -3
  76. package/dist/starters/adapters/firebase/package.json +1 -1
  77. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -4
  78. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/vite.config.mts +1 -1
  79. package/dist/starters/adapters/netlify-edge/package.json +1 -1
  80. package/dist/starters/adapters/netlify-edge/public/_headers +2 -0
  81. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -4
  82. package/dist/starters/adapters/node-server/adapters/node-server/vite.config.mts +1 -1
  83. package/dist/starters/adapters/node-server/package.json +1 -1
  84. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +3 -4
  85. package/dist/starters/adapters/ssg/README.md +9 -0
  86. package/dist/starters/adapters/{static/adapters/static → ssg/adapters/ssg}/vite.config.mts +2 -2
  87. package/dist/starters/adapters/ssg/package.json +19 -0
  88. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/vite.config.mts +1 -1
  89. package/dist/starters/adapters/vercel-edge/package.json +1 -1
  90. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -4
  91. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  92. package/dist/starters/features/auth/package.json +1 -1
  93. package/dist/starters/features/bootstrap/src/routes/bootstrap/layout.tsx +0 -11
  94. package/dist/starters/features/csr/index.html +23 -0
  95. package/dist/starters/features/csr/package.json +29 -0
  96. package/dist/starters/features/csr/src/root.tsx +15 -0
  97. package/dist/starters/features/csr/vite.config.mts +13 -0
  98. package/dist/starters/features/localize/package.json +3 -3
  99. package/dist/starters/features/localize/src/entry.ssr.tsx +17 -23
  100. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +1 -1
  101. package/dist/starters/features/pandacss/package.json +1 -1
  102. package/dist/starters/features/partytown/package.json +4 -4
  103. package/dist/starters/features/partytown/src/components/partytown/partytown.tsx +2 -2
  104. package/dist/starters/features/playwright/playwright-report/index.html +953 -911
  105. package/dist/starters/features/postcss/postcss.config.js +2 -2
  106. package/dist/starters/features/service-worker/package.json +13 -0
  107. package/dist/starters/features/service-worker/src/routes/service-worker.ts +14 -0
  108. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  109. package/dist/starters/features/tailwind/package.json +4 -3
  110. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  111. package/dist/starters/features/tailwind/src/global.css +1 -1
  112. package/dist/starters/features/tailwind-v3/package.json +1 -1
  113. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  114. package/dist/starters/features/tailwind-v3/tailwind.config.js +2 -2
  115. package/dist/testing/index.cjs +14313 -11732
  116. package/dist/testing/index.d.ts +1112 -141
  117. package/dist/testing/index.mjs +14225 -11661
  118. package/dist/testing/package.json +1 -1
  119. package/package.json +28 -14
  120. package/public.d.ts +5 -0
  121. package/server.d.ts +1 -0
  122. package/dist/insights/index.d.ts +0 -1
  123. package/dist/insights/vite/index.d.ts +0 -1
  124. package/dist/insights/vite/insights-plugin.d.ts +0 -10
  125. package/dist/prefetch/index.cjs +0 -4
  126. package/dist/prefetch/index.d.ts +0 -2
  127. package/dist/prefetch/index.mjs +0 -3
  128. package/dist/qwik-prefetch.debug.js +0 -244
  129. package/dist/qwik-prefetch.js +0 -1
  130. package/dist/starters/adapters/static/README.md +0 -5
  131. package/dist/starters/adapters/static/package.json +0 -19
  132. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const build = require("@qwik.dev/core/build");
4
+ const doc = build.isBrowser ? document : void 0;
5
+ const config = {
6
+ $DEBUG$: false,
7
+ $maxIdlePreloads$: 25,
8
+ $invPreloadProbability$: 0.65
9
+ };
10
+ const rel = build.isBrowser && doc.createElement("link").relList.supports("modulepreload") ? "modulePreload" : "preload";
11
+ const loadStart = Date.now();
12
+ const isJSRegex = /\.[mc]?js$/;
13
+ const BundleImportState_None = 0;
14
+ const BundleImportState_Queued = 1;
15
+ const BundleImportState_Preload = 2;
16
+ const BundleImportState_Alias = 3;
17
+ const BundleImportState_Loaded = 4;
18
+ const bundles = /* @__PURE__ */ new Map();
19
+ let queueDirty;
20
+ let preloadCount = 0;
21
+ const queue = [];
22
+ const log = (...args) => {
23
+ console.log(
24
+ `Preloader ${Date.now() - loadStart}ms ${preloadCount}/${queue.length} queued>`,
25
+ ...args
26
+ );
27
+ };
28
+ const sortQueue = () => {
29
+ if (queueDirty) {
30
+ queue.sort((a, b) => a.$inverseProbability$ - b.$inverseProbability$);
31
+ queueDirty = false;
32
+ }
33
+ };
34
+ const trigger = () => {
35
+ if (!queue.length) {
36
+ return;
37
+ }
38
+ sortQueue();
39
+ while (queue.length) {
40
+ const bundle = queue[0];
41
+ const inverseProbability = bundle.$inverseProbability$;
42
+ const probability = 1 - inverseProbability;
43
+ const allowedPreloads = graph ? config.$maxIdlePreloads$ : (
44
+ // While the graph is not available, we limit to 5 preloads
45
+ 5
46
+ );
47
+ if (probability >= 0.99 || preloadCount < allowedPreloads) {
48
+ queue.shift();
49
+ preloadOne(bundle);
50
+ } else {
51
+ break;
52
+ }
53
+ }
54
+ if (config.$DEBUG$ && !queue.length) {
55
+ const loaded = [...bundles.values()].filter((b) => b.$state$ > BundleImportState_None);
56
+ const waitTime = loaded.reduce((acc, b) => acc + b.$waitedMs$, 0);
57
+ const loadTime = loaded.reduce((acc, b) => acc + b.$loadedMs$, 0);
58
+ log(
59
+ `>>>> done ${loaded.length}/${bundles.size} total: ${waitTime}ms waited, ${loadTime}ms loaded`
60
+ );
61
+ }
62
+ };
63
+ const preloadOne = (bundle) => {
64
+ if (bundle.$state$ >= BundleImportState_Preload) {
65
+ return;
66
+ }
67
+ preloadCount++;
68
+ const start = Date.now();
69
+ bundle.$waitedMs$ = start - bundle.$createdTs$;
70
+ bundle.$state$ = BundleImportState_Preload;
71
+ config.$DEBUG$ && log(
72
+ `<< load ${Math.round((1 - bundle.$inverseProbability$) * 100)}% after ${`${bundle.$waitedMs$}ms`}`,
73
+ bundle.$name$
74
+ );
75
+ const link = doc.createElement("link");
76
+ link.href = new URL(`${base}${bundle.$name$}`, doc.baseURI).toString();
77
+ link.rel = rel;
78
+ link.as = "script";
79
+ link.onload = link.onerror = () => {
80
+ preloadCount--;
81
+ const end = Date.now();
82
+ bundle.$loadedMs$ = end - start;
83
+ bundle.$state$ = BundleImportState_Loaded;
84
+ config.$DEBUG$ && log(`>> done after ${bundle.$loadedMs$}ms`, bundle.$name$);
85
+ link.remove();
86
+ trigger();
87
+ };
88
+ doc.head.appendChild(link);
89
+ };
90
+ const adjustProbabilities = (bundle, newInverseProbability, seen) => {
91
+ if (seen?.has(bundle)) {
92
+ return;
93
+ }
94
+ const previousInverseProbability = bundle.$inverseProbability$;
95
+ bundle.$inverseProbability$ = newInverseProbability;
96
+ if (previousInverseProbability - bundle.$inverseProbability$ < 0.01) {
97
+ return;
98
+ }
99
+ if (
100
+ // don't queue until we have initialized the preloader
101
+ base != null && bundle.$state$ < BundleImportState_Preload
102
+ ) {
103
+ if (bundle.$state$ === BundleImportState_None) {
104
+ bundle.$state$ = BundleImportState_Queued;
105
+ queue.push(bundle);
106
+ config.$DEBUG$ && log(`queued ${Math.round((1 - bundle.$inverseProbability$) * 100)}%`, bundle.$name$);
107
+ }
108
+ queueDirty = true;
109
+ }
110
+ if (bundle.$deps$) {
111
+ seen ||= /* @__PURE__ */ new Set();
112
+ seen.add(bundle);
113
+ const probability = 1 - bundle.$inverseProbability$;
114
+ for (const dep of bundle.$deps$) {
115
+ const depBundle = getBundle(dep.$name$);
116
+ if (depBundle.$inverseProbability$ === 0) {
117
+ continue;
118
+ }
119
+ let newInverseProbability2;
120
+ if (probability === 1 || probability >= 0.99 && depsCount < 100) {
121
+ depsCount++;
122
+ newInverseProbability2 = Math.min(0.01, 1 - dep.$importProbability$);
123
+ } else {
124
+ const newInverseImportProbability = 1 - dep.$importProbability$ * probability;
125
+ const prevAdjust = dep.$factor$;
126
+ const factor = newInverseImportProbability / prevAdjust;
127
+ newInverseProbability2 = Math.max(0.02, depBundle.$inverseProbability$ * factor);
128
+ dep.$factor$ = factor;
129
+ }
130
+ adjustProbabilities(depBundle, newInverseProbability2, seen);
131
+ }
132
+ }
133
+ };
134
+ const handleBundle = (name, inverseProbability) => {
135
+ const bundle = getBundle(name);
136
+ if (bundle && bundle.$inverseProbability$ > inverseProbability) {
137
+ adjustProbabilities(bundle, inverseProbability);
138
+ }
139
+ };
140
+ let depsCount;
141
+ const preload = (name, probability) => {
142
+ if (!name?.length) {
143
+ return;
144
+ }
145
+ depsCount = 0;
146
+ let inverseProbability = probability ? 1 - probability : 0.4;
147
+ if (Array.isArray(name)) {
148
+ for (let i = name.length - 1; i >= 0; i--) {
149
+ const item = name[i];
150
+ if (typeof item === "number") {
151
+ inverseProbability = 1 - item / 10;
152
+ } else {
153
+ handleBundle(item, inverseProbability);
154
+ }
155
+ }
156
+ } else {
157
+ handleBundle(name, inverseProbability);
158
+ }
159
+ if (build.isBrowser) {
160
+ trigger();
161
+ }
162
+ };
163
+ if (build.isBrowser) {
164
+ document.addEventListener("qsymbol", (ev) => {
165
+ const { symbol, href } = ev.detail;
166
+ if (href) {
167
+ const hash = symbol.slice(symbol.lastIndexOf("_") + 1);
168
+ preload(hash, 1);
169
+ }
170
+ });
171
+ }
172
+ let base;
173
+ let graph;
174
+ const makeBundle = (name, deps) => {
175
+ return {
176
+ $name$: name,
177
+ $state$: isJSRegex.test(name) ? BundleImportState_None : BundleImportState_Alias,
178
+ $deps$: deps,
179
+ $inverseProbability$: 1,
180
+ $createdTs$: Date.now(),
181
+ $waitedMs$: 0,
182
+ $loadedMs$: 0
183
+ };
184
+ };
185
+ const parseBundleGraph = (serialized) => {
186
+ const graph2 = /* @__PURE__ */ new Map();
187
+ let i = 0;
188
+ while (i < serialized.length) {
189
+ const name = serialized[i++];
190
+ const deps = [];
191
+ let idx;
192
+ let probability = 1;
193
+ while (idx = serialized[i], typeof idx === "number") {
194
+ if (idx < 0) {
195
+ probability = -idx / 10;
196
+ } else {
197
+ deps.push({
198
+ $name$: serialized[idx],
199
+ $importProbability$: probability,
200
+ $factor$: 1
201
+ });
202
+ }
203
+ i++;
204
+ }
205
+ graph2.set(name, deps);
206
+ }
207
+ return graph2;
208
+ };
209
+ const getBundle = (name) => {
210
+ let bundle = bundles.get(name);
211
+ if (!bundle) {
212
+ let deps;
213
+ if (graph) {
214
+ deps = graph.get(name);
215
+ if (!deps) {
216
+ return;
217
+ }
218
+ if (!deps.length) {
219
+ deps = void 0;
220
+ }
221
+ }
222
+ bundle = makeBundle(name, deps);
223
+ bundles.set(name, bundle);
224
+ }
225
+ return bundle;
226
+ };
227
+ const loadBundleGraph = (basePath, serializedResponse, opts) => {
228
+ if (opts) {
229
+ if ("d" in opts) {
230
+ config.$DEBUG$ = !!opts.d;
231
+ }
232
+ if ("P" in opts) {
233
+ config.$maxIdlePreloads$ = opts["P"];
234
+ }
235
+ if ("Q" in opts) {
236
+ config.$invPreloadProbability$ = 1 - opts["Q"];
237
+ }
238
+ }
239
+ if (!build.isBrowser || basePath == null) {
240
+ return;
241
+ }
242
+ base = basePath;
243
+ if (serializedResponse) {
244
+ serializedResponse.then((r) => r.text()).then((text) => {
245
+ graph = parseBundleGraph(JSON.parse(text));
246
+ const toAdjust = [];
247
+ for (const [name, deps] of graph.entries()) {
248
+ const bundle = getBundle(name);
249
+ bundle.$deps$ = deps;
250
+ if (bundle.$inverseProbability$ < 1) {
251
+ toAdjust.push([bundle, bundle.$inverseProbability$]);
252
+ bundle.$inverseProbability$ = 1;
253
+ }
254
+ }
255
+ config.$DEBUG$ && log(`parseBundleGraph got ${graph.size} bundles, adjusting ${toAdjust.length}`);
256
+ for (const [bundle, inverseProbability] of toAdjust) {
257
+ adjustProbabilities(bundle, inverseProbability);
258
+ }
259
+ trigger();
260
+ }).catch(console.warn);
261
+ }
262
+ };
263
+ exports.g = parseBundleGraph;
264
+ exports.h = handleBundle;
265
+ exports.l = loadBundleGraph;
266
+ exports.p = preload;
@@ -0,0 +1,195 @@
1
+ import { isBrowser } from "@qwik.dev/core/build";
2
+ const doc = isBrowser ? document : void 0;
3
+ const config = { t: 0, o: 25, l: 0.65 };
4
+ const rel = isBrowser && doc.createElement("link").relList.supports("modulepreload") ? "modulePreload" : "preload";
5
+ const loadStart = Date.now();
6
+ const isJSRegex = /\.[mc]?js$/;
7
+ const BundleImportState_None = 0;
8
+ const BundleImportState_Queued = 1;
9
+ const BundleImportState_Preload = 2;
10
+ const BundleImportState_Alias = 3;
11
+ const BundleImportState_Loaded = 4;
12
+ const bundles = /* @__PURE__ */ new Map();
13
+ let queueDirty;
14
+ let preloadCount = 0;
15
+ const queue = [];
16
+ const log = (...e) => {
17
+ console.log(`Preloader ${Date.now() - loadStart}ms ${preloadCount}/${queue.length} queued>`, ...e);
18
+ };
19
+ const sortQueue = () => {
20
+ if (queueDirty) {
21
+ queue.sort((e, t) => e.u - t.u);
22
+ queueDirty = 0;
23
+ }
24
+ };
25
+ const trigger = () => {
26
+ if (!queue.length) return;
27
+ sortQueue();
28
+ while (queue.length) {
29
+ const e = queue[0];
30
+ const t = e.u;
31
+ const o = 1 - t;
32
+ const n = graph ? config.o : (
33
+ // While the graph is not available, we limit to 5 preloads
34
+ 5
35
+ );
36
+ if (o >= 0.99 || preloadCount < n) {
37
+ queue.shift();
38
+ preloadOne(e);
39
+ } else break;
40
+ }
41
+ if (config.t && !queue.length) {
42
+ const e = [...bundles.values()].filter((e2) => e2.i > BundleImportState_None);
43
+ const t = e.reduce((e2, t2) => e2 + t2.p, 0);
44
+ const o = e.reduce((e2, t2) => e2 + t2.$, 0);
45
+ log(`>>>> done ${e.length}/${bundles.size} total: ${t}ms waited, ${o}ms loaded`);
46
+ }
47
+ };
48
+ const preloadOne = (e) => {
49
+ if (e.i >= BundleImportState_Preload) return;
50
+ preloadCount++;
51
+ const t = Date.now();
52
+ e.p = t - e.B;
53
+ e.i = BundleImportState_Preload;
54
+ config.t && log(`<< load ${Math.round((1 - e.u) * 100)}% after ${`${e.p}ms`}`, e.m);
55
+ const o = doc.createElement("link");
56
+ o.href = new URL(`${base}${e.m}`, doc.baseURI).toString();
57
+ o.rel = rel;
58
+ o.as = "script";
59
+ o.onload = o.onerror = () => {
60
+ preloadCount--;
61
+ const n = Date.now();
62
+ e.$ = n - t;
63
+ e.i = BundleImportState_Loaded;
64
+ config.t && log(`>> done after ${e.$}ms`, e.m);
65
+ o.remove();
66
+ trigger();
67
+ };
68
+ doc.head.appendChild(o);
69
+ };
70
+ const adjustProbabilities = (e, t, o) => {
71
+ if (o?.has(e)) return;
72
+ const n = e.u;
73
+ e.u = t;
74
+ if (n - e.u < 0.01) return;
75
+ if (
76
+ // don't queue until we have initialized the preloader
77
+ base != null && e.i < BundleImportState_Preload
78
+ ) {
79
+ if (e.i === BundleImportState_None) {
80
+ e.i = BundleImportState_Queued;
81
+ queue.push(e);
82
+ config.t && log(`queued ${Math.round((1 - e.u) * 100)}%`, e.m);
83
+ }
84
+ queueDirty = 1;
85
+ }
86
+ if (e.h) {
87
+ o ||= /* @__PURE__ */ new Set();
88
+ o.add(e);
89
+ const t2 = 1 - e.u;
90
+ for (const n2 of e.h) {
91
+ const e2 = getBundle(n2.m);
92
+ if (e2.u === 0) continue;
93
+ let r;
94
+ if (t2 === 1 || t2 >= 0.99 && depsCount < 100) {
95
+ depsCount++;
96
+ r = Math.min(0.01, 1 - n2.S);
97
+ } else {
98
+ const o2 = 1 - n2.S * t2;
99
+ const s = n2.q;
100
+ const l = o2 / s;
101
+ r = Math.max(0.02, e2.u * l);
102
+ n2.q = l;
103
+ }
104
+ adjustProbabilities(e2, r, o);
105
+ }
106
+ }
107
+ };
108
+ const handleBundle = (e, t) => {
109
+ const o = getBundle(e);
110
+ if (o && o.u > t) adjustProbabilities(o, t);
111
+ };
112
+ let depsCount;
113
+ const preload = (e, t) => {
114
+ if (!e?.length) return;
115
+ depsCount = 0;
116
+ let o = t ? 1 - t : 0.4;
117
+ if (Array.isArray(e)) for (let t2 = e.length - 1; t2 >= 0; t2--) {
118
+ const n = e[t2];
119
+ if (typeof n === "number") o = 1 - n / 10;
120
+ else handleBundle(n, o);
121
+ }
122
+ else handleBundle(e, o);
123
+ if (isBrowser) trigger();
124
+ };
125
+ if (isBrowser) document.addEventListener("qsymbol", (e) => {
126
+ const { symbol: t, href: o } = e.detail;
127
+ if (o) {
128
+ const e2 = t.slice(t.lastIndexOf("_") + 1);
129
+ preload(e2, 1);
130
+ }
131
+ });
132
+ let base;
133
+ let graph;
134
+ const makeBundle = (e, t) => ({ m: e, i: isJSRegex.test(e) ? BundleImportState_None : BundleImportState_Alias, h: t, u: 1, B: Date.now(), p: 0, $: 0 });
135
+ const parseBundleGraph = (e) => {
136
+ const t = /* @__PURE__ */ new Map();
137
+ let o = 0;
138
+ while (o < e.length) {
139
+ const n = e[o++];
140
+ const r = [];
141
+ let s;
142
+ let l = 1;
143
+ while (s = e[o], typeof s === "number") {
144
+ if (s < 0) l = -s / 10;
145
+ else r.push({ m: e[s], S: l, q: 1 });
146
+ o++;
147
+ }
148
+ t.set(n, r);
149
+ }
150
+ return t;
151
+ };
152
+ const getBundle = (e) => {
153
+ let t = bundles.get(e);
154
+ if (!t) {
155
+ let o;
156
+ if (graph) {
157
+ o = graph.get(e);
158
+ if (!o) return;
159
+ if (!o.length) o = void 0;
160
+ }
161
+ t = makeBundle(e, o);
162
+ bundles.set(e, t);
163
+ }
164
+ return t;
165
+ };
166
+ const loadBundleGraph = (e, t, o) => {
167
+ if (o) {
168
+ if ("d" in o) config.t = !!o.d;
169
+ if ("P" in o) config.o = o["P"];
170
+ if ("Q" in o) config.l = 1 - o["Q"];
171
+ }
172
+ if (!isBrowser || e == null) return;
173
+ base = e;
174
+ if (t) t.then((e2) => e2.text()).then((e2) => {
175
+ graph = parseBundleGraph(JSON.parse(e2));
176
+ const t2 = [];
177
+ for (const [e3, o2] of graph.entries()) {
178
+ const n = getBundle(e3);
179
+ n.h = o2;
180
+ if (n.u < 1) {
181
+ t2.push([n, n.u]);
182
+ n.u = 1;
183
+ }
184
+ }
185
+ config.t && log(`parseBundleGraph got ${graph.size} bundles, adjusting ${t2.length}`);
186
+ for (const [e3, o2] of t2) adjustProbabilities(e3, o2);
187
+ trigger();
188
+ }).catch(console.warn);
189
+ };
190
+ export {
191
+ parseBundleGraph as g,
192
+ handleBundle as h,
193
+ loadBundleGraph as l,
194
+ preload as p
195
+ };