@qwik.dev/core 2.0.0-beta.4 → 2.0.0-beta.40

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 (151) 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 +59 -0
  5. package/dist/backpatch-executor.js +1 -0
  6. package/dist/build/package.json +1 -1
  7. package/dist/cli.mjs +12974 -0
  8. package/dist/core-internal.d.ts +1615 -810
  9. package/dist/core.min.mjs +9 -1
  10. package/dist/core.mjs +14792 -9192
  11. package/dist/core.mjs.map +1 -1
  12. package/dist/core.prod.mjs +10482 -5382
  13. package/dist/insights/index.qwik.mjs +82 -71
  14. package/dist/insights/vite/index.mjs +79 -81
  15. package/dist/loader/index.mjs +2 -2
  16. package/dist/loader/package.json +1 -1
  17. package/dist/optimizer.d.ts +77 -288
  18. package/dist/optimizer.mjs +2966 -4088
  19. package/dist/out-of-order-executor.debug.js +140 -0
  20. package/dist/out-of-order-executor.js +1 -0
  21. package/dist/preloader.mjs +172 -192
  22. package/dist/qwikloader.debug.js +403 -244
  23. package/dist/qwikloader.js +1 -1
  24. package/dist/server-modules.d.ts +1 -0
  25. package/dist/server.d.ts +54 -249
  26. package/dist/server.mjs +2332 -1407
  27. package/dist/server.prod.mjs +3844 -0
  28. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/{vite.config.mts → vite.config.ts} +3 -3
  29. package/dist/starters/adapters/aws-lambda/package.json +3 -2
  30. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -6
  31. package/dist/starters/adapters/azure-swa/adapters/azure-swa/{vite.config.mts → vite.config.ts} +3 -3
  32. package/dist/starters/adapters/azure-swa/package.json +3 -2
  33. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -3
  34. package/dist/starters/adapters/bun/adapters/bun/{vite.config.mts → vite.config.ts} +4 -4
  35. package/dist/starters/adapters/bun/package.json +3 -2
  36. package/dist/starters/adapters/bun/src/entry.bun.ts +37 -10
  37. package/dist/starters/adapters/cloud-run/adapters/cloud-run/{vite.config.mts → vite.config.ts} +3 -3
  38. package/dist/starters/adapters/cloud-run/package.json +3 -2
  39. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +23 -7
  40. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/{vite.config.mts → vite.config.ts} +3 -3
  41. package/dist/starters/adapters/cloudflare-pages/package.json +3 -2
  42. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -3
  43. package/dist/starters/adapters/cloudflare-workers/README.md +52 -0
  44. package/dist/starters/adapters/cloudflare-workers/adapters/cloudflare-workers/vite.config.ts +15 -0
  45. package/dist/starters/adapters/cloudflare-workers/gitignore +3 -0
  46. package/dist/starters/adapters/cloudflare-workers/package.json +31 -0
  47. package/dist/starters/adapters/cloudflare-workers/public/.assetsignore +4 -0
  48. package/dist/starters/adapters/cloudflare-workers/public/_headers +11 -0
  49. package/dist/starters/adapters/cloudflare-workers/public/_redirects +1 -0
  50. package/dist/starters/adapters/cloudflare-workers/src/entry.cloudflare-pages.tsx +23 -0
  51. package/dist/starters/adapters/cloudflare-workers/worker-configuration.d.ts +5 -0
  52. package/dist/starters/adapters/cloudflare-workers/wrangler.jsonc +41 -0
  53. package/dist/starters/adapters/deno/adapters/deno/{vite.config.mts → vite.config.ts} +3 -3
  54. package/dist/starters/adapters/deno/package.json +3 -2
  55. package/dist/starters/adapters/deno/src/entry.deno.ts +43 -10
  56. package/dist/starters/adapters/express/adapters/express/{vite.config.mts → vite.config.ts} +3 -3
  57. package/dist/starters/adapters/express/package.json +4 -3
  58. package/dist/starters/adapters/express/src/entry.express.tsx +22 -7
  59. package/dist/starters/adapters/fastify/adapters/fastify/{vite.config.mts → vite.config.ts} +3 -3
  60. package/dist/starters/adapters/fastify/package.json +5 -4
  61. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +21 -1
  62. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +11 -4
  63. package/dist/starters/adapters/firebase/adapters/firebase/{vite.config.mts → vite.config.ts} +3 -3
  64. package/dist/starters/adapters/firebase/package.json +3 -2
  65. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -3
  66. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/{vite.config.mts → vite.config.ts} +3 -3
  67. package/dist/starters/adapters/netlify-edge/package.json +5 -4
  68. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -3
  69. package/dist/starters/adapters/node-server/adapters/node-server/{vite.config.mts → vite.config.ts} +3 -3
  70. package/dist/starters/adapters/node-server/package.json +3 -2
  71. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +22 -6
  72. package/dist/starters/adapters/{static/adapters/static/vite.config.mts → ssg/adapters/ssg/vite.config.ts} +4 -4
  73. package/dist/starters/adapters/ssg/package.json +20 -0
  74. package/dist/starters/adapters/vercel-edge/README.md +2 -2
  75. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/{vite.config.mts → vite.config.ts} +3 -3
  76. package/dist/starters/adapters/vercel-edge/package.json +3 -2
  77. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -3
  78. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  79. package/dist/starters/features/auth/package.json +1 -1
  80. package/dist/starters/features/compiled-i18n/package.json +37 -0
  81. package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx +30 -0
  82. package/dist/starters/features/compiled-i18n/src/entry.ssr.tsx +31 -0
  83. package/dist/starters/features/compiled-i18n/src/routes/plugin@compiled-i18n.ts +28 -0
  84. package/dist/starters/features/csr/index.html +27 -0
  85. package/dist/starters/features/csr/package.json +29 -0
  86. package/dist/starters/features/csr/src/root.tsx +15 -0
  87. package/dist/starters/features/csr/vite.config.ts +13 -0
  88. package/dist/starters/features/cypress/src/actions/example.action.ts +5 -0
  89. package/dist/starters/features/cypress/src/components/example/example.cy.tsx +50 -8
  90. package/dist/starters/features/cypress/src/components/example/example.tsx +13 -3
  91. package/dist/starters/features/cypress/src/loaders/example.loader.ts +5 -0
  92. package/dist/starters/features/drizzle/package.json +1 -1
  93. package/dist/starters/features/pandacss/package.json +1 -1
  94. package/dist/starters/features/postcss/postcss.config.js +1 -1
  95. package/dist/starters/features/storybook/.storybook/tsconfig.json +0 -1
  96. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  97. package/dist/starters/features/tailwind/package.json +2 -2
  98. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  99. package/dist/starters/features/tailwind-v3/package.json +1 -1
  100. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  101. package/dist/starters/features/vitest/package.json +1 -1
  102. package/dist/testing/index.d.ts +1000 -7
  103. package/dist/testing/index.mjs +16487 -11656
  104. package/dist/testing/package.json +1 -1
  105. package/dist/worker/index.d.mts +21 -0
  106. package/dist/worker/index.mjs +251 -0
  107. package/dist/worker/package.json +9 -0
  108. package/dist/worker/worker.js +13 -0
  109. package/dist/worker/worker.node.js +15 -0
  110. package/dist/worker/worker.shared.js +63 -0
  111. package/handlers.mjs +21 -1
  112. package/package.json +40 -56
  113. package/public.d.ts +14 -2
  114. package/{qwik-cli.cjs → qwik-cli.mjs} +1 -1
  115. package/server.d.ts +2 -0
  116. package/worker.d.ts +2 -0
  117. package/bindings/qwik.darwin-arm64.node +0 -0
  118. package/bindings/qwik.darwin-x64.node +0 -0
  119. package/bindings/qwik.linux-x64-gnu.node +0 -0
  120. package/bindings/qwik.wasm.cjs +0 -471
  121. package/bindings/qwik.wasm.mjs +0 -464
  122. package/bindings/qwik.win32-x64-msvc.node +0 -0
  123. package/bindings/qwik_wasm_bg.wasm +0 -0
  124. package/dist/build/index.cjs +0 -35
  125. package/dist/build/index.cjs.map +0 -7
  126. package/dist/build/index.dev.cjs +0 -37
  127. package/dist/build/index.dev.cjs.map +0 -7
  128. package/dist/build/index.prod.cjs +0 -37
  129. package/dist/build/index.prod.cjs.map +0 -7
  130. package/dist/cli.cjs +0 -5545
  131. package/dist/core.cjs +0 -11870
  132. package/dist/core.cjs.map +0 -1
  133. package/dist/core.prod.cjs +0 -5723
  134. package/dist/insights/index.qwik.cjs +0 -1
  135. package/dist/insights/vite/index.cjs +0 -1
  136. package/dist/loader/index.cjs +0 -4
  137. package/dist/optimizer.cjs +0 -4020
  138. package/dist/preloader.cjs +0 -269
  139. package/dist/server.cjs +0 -3040
  140. package/dist/starters/adapters/static/package.json +0 -19
  141. package/dist/starters/features/localize/package.json +0 -37
  142. package/dist/starters/features/localize/src/entry.ssr.tsx +0 -30
  143. package/dist/starters/features/localize/src/locales/message.en.json +0 -8
  144. package/dist/starters/features/localize/src/locales/message.it.json +0 -8
  145. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +0 -94
  146. package/dist/starters/features/localize/src/routes/[locale]/index.tsx +0 -52
  147. package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +0 -12
  148. package/dist/starters/features/playwright/playwright-report/index.html +0 -22026
  149. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
  150. package/dist/testing/index.cjs +0 -33388
  151. /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
@@ -0,0 +1,140 @@
1
+ //#region packages/qwik/src/out-of-order-executor-shared.ts
2
+ /** Shared out-of-order Suspense executor logic for the inline script and source tests. */
3
+ var Q_RESOLVED_SELECTOR = "template[q\\:r=\"";
4
+ var Q_RESOLVED_ATTR = "q:r";
5
+ var Q_RESULT_PARENT_SELECTOR = "[q\\:rp=\"";
6
+ var Q_GROUP_ATTR = "q:g";
7
+ var Q_INDEX_ATTR = "q:i";
8
+ var Q_ORDER_ATTR = "q:o";
9
+ var Q_CONTAINER_SELECTOR = "[q\\:container]:not([q\\:container=html]):not([q\\:container=text])";
10
+ var installOutOfOrderExecutor = (doc) => {
11
+ const groups = /* @__PURE__ */ new WeakMap();
12
+ const process = (boundaryId, content) => {
13
+ var _executorDoc$qProcess;
14
+ const executorDoc = doc;
15
+ (_executorDoc$qProcess = executorDoc.qProcessOOOS) === null || _executorDoc$qProcess === void 0 || _executorDoc$qProcess.call(executorDoc, boundaryId, content);
16
+ };
17
+ const getScope = () => {
18
+ const script = doc.currentScript;
19
+ return script ? script.closest(Q_CONTAINER_SELECTOR) || doc : doc;
20
+ };
21
+ const group = (scope, groupId, total, order) => {
22
+ let scopedGroups = groups.get(scope);
23
+ if (!scopedGroups) groups.set(scope, scopedGroups = {});
24
+ return scopedGroups[groupId] || (scopedGroups[groupId] = {
25
+ r: {},
26
+ n: 0,
27
+ t: total,
28
+ o: order
29
+ });
30
+ };
31
+ const getResolvedTemplate = (scope, boundaryId) => {
32
+ const currentScript = doc.currentScript;
33
+ const previousElement = currentScript ? currentScript.previousElementSibling : null;
34
+ if (previousElement && previousElement.localName === "template" && previousElement.getAttribute(Q_RESOLVED_ATTR) === String(boundaryId)) return previousElement;
35
+ const templates = scope.querySelectorAll(Q_RESOLVED_SELECTOR + boundaryId + "\"]");
36
+ return templates.length ? templates[templates.length - 1] : null;
37
+ };
38
+ const getPlaceholderTemplate = (content, boundaryId) => {
39
+ return content.querySelector(Q_RESOLVED_SELECTOR + boundaryId + "\"]");
40
+ };
41
+ const getResultParent = (scope, boundaryId) => {
42
+ return scope.querySelector(Q_RESULT_PARENT_SELECTOR + boundaryId + "\"]");
43
+ };
44
+ const reveal = (content, fallback) => {
45
+ if (!content) return 0;
46
+ if (fallback && fallback.style) fallback.style.display = "none";
47
+ if (content.style) content.style.display = "contents";
48
+ return 1;
49
+ };
50
+ const move = (scope, boundaryId, resolved) => {
51
+ if (!resolved) return null;
52
+ const content = getResultParent(scope, boundaryId);
53
+ const placeholder = content ? getPlaceholderTemplate(content, boundaryId) : null;
54
+ const parent = placeholder ? placeholder.parentNode : null;
55
+ if (!placeholder || !content || !parent) return null;
56
+ parent.insertBefore(resolved.content, placeholder);
57
+ placeholder.remove();
58
+ resolved.remove();
59
+ return [content, content.previousElementSibling];
60
+ };
61
+ const flush = (group) => {
62
+ const order = group.o;
63
+ let entry;
64
+ let index;
65
+ let swapped = 0;
66
+ if (order === "p") for (const key in group.r) {
67
+ entry = group.r[key];
68
+ if (entry[0] && reveal(entry[0], entry[1])) {
69
+ entry[0] = 0;
70
+ swapped++;
71
+ }
72
+ }
73
+ else if (order === "s") for (index = group.n; (entry = group.r[index]) && entry[0]; index++) {
74
+ if (!reveal(entry[0], entry[1])) break;
75
+ entry[0] = 0;
76
+ swapped++;
77
+ group.n = index + 1;
78
+ }
79
+ else if (order === "r") {
80
+ if (group.t < 0) return 0;
81
+ if (group.n < 0) group.n = group.t - 1;
82
+ for (index = group.n; (entry = group.r[index]) && entry[0]; index--) {
83
+ if (!reveal(entry[0], entry[1])) break;
84
+ entry[0] = 0;
85
+ swapped++;
86
+ group.n = index - 1;
87
+ }
88
+ } else {
89
+ if (group.t < 0) return 0;
90
+ for (index = 0; index < group.t; index++) {
91
+ entry = group.r[index];
92
+ if (!entry) return 0;
93
+ }
94
+ for (index = 0; index < group.t; index++) {
95
+ entry = group.r[index];
96
+ if (entry[0] && reveal(entry[0], entry[1])) {
97
+ entry[0] = 0;
98
+ swapped++;
99
+ }
100
+ }
101
+ }
102
+ return swapped;
103
+ };
104
+ const qO = ((boundaryId) => {
105
+ const scope = getScope();
106
+ const resolved = getResolvedTemplate(scope, boundaryId);
107
+ if (!resolved) return;
108
+ const entry = move(scope, boundaryId, resolved);
109
+ if (!entry) return;
110
+ process(boundaryId, entry[0] || null);
111
+ const groupId = resolved.getAttribute(Q_GROUP_ATTR);
112
+ if (groupId) {
113
+ const index = +(resolved.getAttribute(Q_INDEX_ATTR) || 0);
114
+ const currentGroup = group(scope, groupId, -1, resolved.getAttribute(Q_ORDER_ATTR) || "p");
115
+ currentGroup.r[index] = entry;
116
+ flush(currentGroup);
117
+ return;
118
+ }
119
+ reveal(entry[0] || null, entry[1]);
120
+ });
121
+ qO.g = (groupId, total, order) => {
122
+ const currentGroup = group(getScope(), groupId, total, order);
123
+ currentGroup.t = total;
124
+ currentGroup.o = order;
125
+ if (currentGroup.o === "r" && currentGroup.n === 0) currentGroup.n = total - 1;
126
+ flush(currentGroup);
127
+ };
128
+ qO.d = doc;
129
+ globalThis.qO = qO;
130
+ };
131
+ //#endregion
132
+ //#region packages/qwik/src/out-of-order-executor.ts
133
+ /**
134
+ * Qwik Out-of-Order Suspense Executor
135
+ *
136
+ * This is the inline script entry. The actual logic lives in out-of-order-executor-shared.ts so
137
+ * source tests can install the same executor.
138
+ */
139
+ installOutOfOrderExecutor(document);
140
+ //#endregion
@@ -0,0 +1 @@
1
+ var t='template[q\\:r="',e="q:r",r='[q\\:rp="',n="q:g",l="q:i",o="q:o",i="[q\\:container]:not([q\\:container=html]):not([q\\:container=text])",u=u=>{const s=new WeakMap,c=()=>{const t=u.currentScript;return t&&t.closest(i)||u},f=(t,e,r,n)=>{let l=s.get(t);return l||s.set(t,l={}),l[e]||(l[e]={r:{},n:0,t:r,o:n})},a=(t,e)=>t?(e&&e.style&&(e.style.display="none"),t.style&&(t.style.display="contents"),1):0,q=t=>{const e=t.o;let r,n,l=0;if("p"===e)for(const e in t.r)r=t.r[e],r[0]&&a(r[0],r[1])&&(r[0]=0,l++);else if("s"===e)for(n=t.n;(r=t.r[n])&&r[0]&&a(r[0],r[1]);n++)r[0]=0,l++,t.n=n+1;else if("r"===e){if(t.t<0)return 0;for(t.n<0&&(t.n=t.t-1),n=t.n;(r=t.r[n])&&r[0]&&a(r[0],r[1]);n--)r[0]=0,l++,t.n=n-1}else{if(t.t<0)return 0;for(n=0;n<t.t;n++)if(r=t.r[n],!r)return 0;for(n=0;n<t.t;n++)r=t.r[n],r[0]&&a(r[0],r[1])&&(r[0]=0,l++)}return l},p=i=>{const s=c(),p=((r,n)=>{const l=u.currentScript,o=l?l.previousElementSibling:null;if(o&&"template"===o.localName&&o.getAttribute(e)===n+"")return o;const i=r.querySelectorAll(t+n+'"]');return i.length?i[i.length-1]:null})(s,i);if(!p)return;const g=((e,n,l)=>{if(!l)return null;const o=((t,e)=>t.querySelector(r+e+'"]'))(e,n),i=o?((e,r)=>e.querySelector(t+r+'"]'))(o,n):null,u=i?i.parentNode:null;return i&&o&&u?(u.insertBefore(l.content,i),i.remove(),l.remove(),[o,o.previousElementSibling]):null})(s,i,p);if(!g)return;((t,e)=>{var r;const n=u;null===(r=n.qProcessOOOS)||void 0===r||r.call(n,t,e)})(i,g[0]||null);const m=p.getAttribute(n);if(m){const t=+(p.getAttribute(l)||0),e=f(s,m,-1,p.getAttribute(o)||"p");return e.r[t]=g,void q(e)}a(g[0]||null,g[1])};p.g=(t,e,r)=>{const n=f(c(),t,e,r);n.t=e,n.o=r,"r"===n.o&&0===n.n&&(n.n=e-1),q(n)},p.d=u,globalThis.qO=p};u(document);
@@ -1,198 +1,178 @@
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);
1
+ import { isServer as e } from "@qwik.dev/core/build";
2
+ var t = (e) => {
3
+ let t;
4
+ if (typeof MessageChannel < "u") {
5
+ let n = new MessageChannel(), r = !0;
6
+ n.port1.onmessage = () => e(), t = () => {
7
+ r && n.port2.postMessage(null);
8
+ }, t.$destroy$ = () => {
9
+ r && (r = !1, n.port1.onmessage = null, n.port1.close(), n.port2.close());
10
+ };
11
+ } else t = () => setTimeout(e);
12
+ return t;
18
13
  };
19
- const sortQueue = () => {
20
- if (queueDirty) {
21
- queue.sort((e, t) => e.u - t.u);
22
- queueDirty = 0;
23
- }
14
+ globalThis.qDev, globalThis.qInspector, globalThis.qDynamicPlatform, globalThis.qRuntimeQrl;
15
+ var n = function(e) {
16
+ return e.PAUSED = "paused", e.RESUMED = "resumed", e.HTML = "html", e.TEXT = "text", e;
17
+ }({});
18
+ "" + n.HTML + n.TEXT;
19
+ var r = !e && typeof document < "u", i = r ? document : void 0, a = {
20
+ $DEBUG$: !1,
21
+ $maxIdlePreloads$: 25
22
+ }, o = r && i.createElement("link").relList?.supports?.("modulepreload") ? "modulePreload" : "preload", s = /\.[mc]?js$/, c = new Map(), l, u, d = 0, f = [], p = t(b), m = t(C), h = !1, g = !1, _ = !1, v = [], y = () => {
23
+ u &&= (f.sort((e, t) => e.$inverseProbability$ - t.$inverseProbability$), !1);
24
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 ? (
33
- // The more likely the bundle, the more simultaneous preloads we want to allow
34
- Math.max(1, config.o * o)
35
- ) : (
36
- // While the graph is not available, we limit to 2 preloads
37
- 2
38
- );
39
- if (o >= 0.99 || preloadCount < n) {
40
- queue.shift();
41
- preloadOne(e);
42
- } else break;
43
- }
44
- if (config.t && !queue.length) {
45
- const e = [...bundles.values()].filter((e2) => e2.i > BundleImportState_None);
46
- const t = e.reduce((e2, t2) => e2 + t2.p, 0);
47
- const o = e.reduce((e2, t2) => e2 + t2.$, 0);
48
- log(`>>>> done ${e.length}/${bundles.size} total: ${t}ms waited, ${o}ms loaded`);
49
- }
25
+ function b() {
26
+ if (h = !1, !f.length) return;
27
+ y();
28
+ let e = performance.now() + 10, t = !1;
29
+ for (; f.length;) {
30
+ let n = f[0];
31
+ if (1 - n.$inverseProbability$ >= .99 || d < a.$maxIdlePreloads$) {
32
+ if (f.shift(), w(n), performance.now() >= e) {
33
+ t = !0;
34
+ break;
35
+ }
36
+ } else break;
37
+ }
38
+ t && f.length && !h && (h = !0, p());
39
+ }
40
+ var x = (e, t, n) => {
41
+ v.unshift({
42
+ $bundle$: e,
43
+ $inverseProbability$: t,
44
+ $seen$: n
45
+ });
46
+ }, S = () => {
47
+ let e = v[v.length - 1], t = e.$bundle$;
48
+ if (e.$deps$) {
49
+ let n = e.$index$;
50
+ if (n >= e.$deps$.length) return v.pop(), !1;
51
+ let r = e.$deps$[n];
52
+ e.$index$ = n + 1;
53
+ let i = M(r.$name$);
54
+ if (i.$inverseProbability$ === 0) return !0;
55
+ let a = 1 - t.$inverseProbability$, o;
56
+ if (a === 1 || a >= .99) o = Math.min(.01, 1 - r.$importProbability$);
57
+ else {
58
+ let e = (1 - r.$importProbability$ * a) / r.$factor$;
59
+ o = Math.max(.02, i.$inverseProbability$ * e), r.$factor$ = e;
60
+ }
61
+ return v.push({
62
+ $bundle$: i,
63
+ $inverseProbability$: o,
64
+ $seen$: e.$seen$
65
+ }), !0;
66
+ }
67
+ if (e.$seen$?.has(t)) return v.pop(), !1;
68
+ let n = t.$inverseProbability$;
69
+ if (t.$inverseProbability$ = e.$inverseProbability$, n - t.$inverseProbability$ < .01) return v.pop(), !1;
70
+ if (O != null && t.$state$ < 2 && (t.$state$ === 0 && (t.$state$ = 1, f.push(t)), u = !0), t.$deps$?.length) {
71
+ let n = e.$seen$ || new Set();
72
+ return n.add(t), e.$seen$ = n, e.$deps$ = t.$deps$, e.$index$ = 0, !1;
73
+ }
74
+ return v.pop(), !1;
50
75
  };
51
- const preloadOne = (e) => {
52
- if (e.i >= BundleImportState_Preload) return;
53
- preloadCount++;
54
- const t = Date.now();
55
- e.p = t - e.B;
56
- e.i = BundleImportState_Preload;
57
- config.t && log(`<< load ${Math.round((1 - e.u) * 100)}% after ${`${e.p}ms`}`, e.m);
58
- const o = doc.createElement("link");
59
- o.href = new URL(`${base}${e.m}`, doc.baseURI).toString();
60
- o.rel = rel;
61
- o.as = "script";
62
- o.onload = o.onerror = () => {
63
- preloadCount--;
64
- const n = Date.now();
65
- e.$ = n - t;
66
- e.i = BundleImportState_Loaded;
67
- config.t && log(`>> done after ${e.$}ms`, e.m);
68
- o.remove();
69
- trigger();
70
- };
71
- doc.head.appendChild(o);
76
+ function C() {
77
+ if (_ || !v.length) return;
78
+ g = !1, _ = !0;
79
+ let e = r ? performance.now() + 10 : 0, t = !1;
80
+ for (; v.length;) {
81
+ t = !0;
82
+ let n = S();
83
+ if (r && n && performance.now() >= e) {
84
+ g || (g = !0, m());
85
+ break;
86
+ }
87
+ }
88
+ _ = !1, t && r && p();
89
+ }
90
+ var w = (e) => {
91
+ if (e.$state$ >= 2) return;
92
+ d++;
93
+ let t = performance.now();
94
+ e.$waitedMs$ = t - e.$createdTs$, e.$state$ = 2;
95
+ let n = i.createElement("link");
96
+ n.href = new URL(`${O}${e.$name$}`, i.baseURI).toString(), n.rel = o, n.as = "script", n.onload = n.onerror = () => {
97
+ d--, e.$loadedMs$ = performance.now() - t, e.$state$ = 4, n.remove(), p();
98
+ }, i.head.appendChild(n);
99
+ }, T = (e, t, n) => {
100
+ x(e, t, n), r ? m() : C();
101
+ }, E = (e, t) => {
102
+ let n = M(e);
103
+ n && x(n, t);
104
+ }, D = (e, t) => {
105
+ if (!e?.length) return;
106
+ let n = t ? 1 - t : .4;
107
+ if (Array.isArray(e)) for (let t = e.length - 1; t >= 0; t--) {
108
+ let r = e[t];
109
+ E(r, n);
110
+ }
111
+ else E(e, n);
112
+ r ? m() : C();
72
113
  };
73
- const adjustProbabilities = (e, t, o) => {
74
- if (o?.has(e)) return;
75
- const n = e.u;
76
- e.u = t;
77
- if (n - e.u < 0.01) return;
78
- if (
79
- // don't queue until we have initialized the preloader
80
- base != null && e.i < BundleImportState_Preload && e.u < config.l
81
- ) {
82
- if (e.i === BundleImportState_None) {
83
- e.i = BundleImportState_Queued;
84
- queue.push(e);
85
- config.t && log(`queued ${Math.round((1 - e.u) * 100)}%`, e.m);
86
- }
87
- queueDirty = 1;
88
- }
89
- if (e.h) {
90
- o ||= /* @__PURE__ */ new Set();
91
- o.add(e);
92
- const t2 = 1 - e.u;
93
- for (const n2 of e.h) {
94
- const e2 = getBundle(n2.m);
95
- if (e2.u === 0) continue;
96
- let r;
97
- if (n2.S > 0.5 && (t2 === 1 || t2 >= 0.99 && depsCount < 100)) {
98
- depsCount++;
99
- r = Math.min(0.01, 1 - n2.S);
100
- } else {
101
- const o2 = 1 - n2.S * t2;
102
- const s = n2.q;
103
- const l = o2 / s;
104
- r = Math.max(0.02, e2.u * l);
105
- n2.q = l;
106
- }
107
- adjustProbabilities(e2, r, o);
108
- }
109
- }
110
- };
111
- const handleBundle = (e, t) => {
112
- const o = getBundle(e);
113
- if (o && o.u > t) adjustProbabilities(o, t);
114
- };
115
- let depsCount;
116
- const preload = (e, t) => {
117
- if (!e?.length) return;
118
- depsCount = 0;
119
- let o = t ? 1 - t : 0.4;
120
- if (Array.isArray(e)) for (let t2 = e.length - 1; t2 >= 0; t2--) {
121
- const n = e[t2];
122
- if (typeof n === "number") o = 1 - n / 10;
123
- else handleBundle(n, o);
124
- }
125
- else handleBundle(e, o);
126
- if (isBrowser) trigger();
127
- };
128
- if (isBrowser) document.addEventListener("qsymbol", (e) => {
129
- const { symbol: t, href: o } = e.detail;
130
- if (o) {
131
- const e2 = t.slice(t.lastIndexOf("_") + 1);
132
- preload(e2, 1);
133
- }
114
+ r && document.addEventListener("qsymbol", (e) => {
115
+ let { symbol: t, href: n } = e.detail;
116
+ n && D(t.slice(t.lastIndexOf("_") + 1), 1);
134
117
  });
135
- let base;
136
- let graph;
137
- const makeBundle = (e, t) => ({ m: e, i: isJSRegex.test(e) ? BundleImportState_None : BundleImportState_Alias, h: t, u: 1, B: Date.now(), p: 0, $: 0 });
138
- const parseBundleGraph = (e) => {
139
- const t = /* @__PURE__ */ new Map();
140
- let o = 0;
141
- while (o < e.length) {
142
- const n = e[o++];
143
- const r = [];
144
- let s;
145
- let l = 1;
146
- while (s = e[o], typeof s === "number") {
147
- if (s < 0) l = -s / 10;
148
- else r.push({ m: e[s], S: l, q: 1 });
149
- o++;
150
- }
151
- t.set(n, r);
152
- }
153
- return t;
154
- };
155
- const getBundle = (e) => {
156
- let t = bundles.get(e);
157
- if (!t) {
158
- let o;
159
- if (graph) {
160
- o = graph.get(e);
161
- if (!o) return;
162
- if (!o.length) o = void 0;
163
- }
164
- t = makeBundle(e, o);
165
- bundles.set(e, t);
166
- }
167
- return t;
168
- };
169
- const loadBundleGraph = (e, t, o) => {
170
- if (o) {
171
- if ("d" in o) config.t = !!o.d;
172
- if ("P" in o) config.o = o["P"];
173
- if ("Q" in o) config.l = 1 - o["Q"];
174
- }
175
- if (!isBrowser || e == null) return;
176
- base = e;
177
- if (t) t.then((e2) => e2.text()).then((e2) => {
178
- graph = parseBundleGraph(JSON.parse(e2));
179
- const t2 = [];
180
- for (const [e3, o2] of graph.entries()) {
181
- const n = getBundle(e3);
182
- n.h = o2;
183
- if (n.u < 1) {
184
- t2.push([n, n.u]);
185
- n.u = 1;
186
- }
187
- }
188
- config.t && log(`parseBundleGraph got ${graph.size} bundles, adjusting ${t2.length}`);
189
- for (const [e3, o2] of t2) adjustProbabilities(e3, o2);
190
- trigger();
191
- }).catch(console.warn);
192
- };
193
- export {
194
- parseBundleGraph as g,
195
- handleBundle as h,
196
- loadBundleGraph as l,
197
- preload as p
118
+ var O, k, A = (e, t) => ({
119
+ $name$: e,
120
+ $state$: s.test(e) ? 0 : 3,
121
+ $deps$: l ? t?.map((e) => ({
122
+ ...e,
123
+ $factor$: 1
124
+ })) : t,
125
+ $inverseProbability$: 1,
126
+ $createdTs$: performance.now(),
127
+ $waitedMs$: 0,
128
+ $loadedMs$: 0
129
+ }), j = (e) => {
130
+ let t = new Map(), n = 0;
131
+ for (; n < e.length;) {
132
+ let r = e[n++], i = [], a, o = 1;
133
+ for (; a = e[n], typeof a == "number";) a < 0 ? o = -a / 10 : i.push({
134
+ $name$: e[a],
135
+ $importProbability$: o,
136
+ $factor$: 1
137
+ }), n++;
138
+ t.set(r, i);
139
+ }
140
+ return t;
141
+ }, M = (e) => {
142
+ let t = c.get(e);
143
+ if (!t) {
144
+ let n;
145
+ if (k) {
146
+ if (n = k.get(e), !n) return;
147
+ n.length || (n = void 0);
148
+ }
149
+ t = A(e, n), c.set(e, t);
150
+ }
151
+ return t;
152
+ }, N = (e, n, i) => {
153
+ i && "P" in i && (a.$maxIdlePreloads$ = i.P), !(!r || e == null) && (O = e, n && n.then((e) => e.text()).then((e) => {
154
+ k = j(JSON.parse(e));
155
+ let n = [];
156
+ for (let [e, t] of k.entries()) {
157
+ let r = M(e);
158
+ r.$deps$ = t, r.$inverseProbability$ < 1 && (n.push([r, r.$inverseProbability$]), r.$inverseProbability$ = 1);
159
+ }
160
+ if (!n.length) {
161
+ p();
162
+ return;
163
+ }
164
+ let r = 0, i = t(() => {
165
+ let e = performance.now() + 10;
166
+ for (; r < n.length;) {
167
+ let [t, a] = n[r];
168
+ if (r++, T(t, a), r < n.length && performance.now() >= e) {
169
+ i();
170
+ return;
171
+ }
172
+ }
173
+ p();
174
+ });
175
+ i();
176
+ }).catch(console.warn));
198
177
  };
178
+ export { j as g, N as l, D as p };