@qwik.dev/router 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 (159) hide show
  1. package/README.md +1 -1
  2. package/adapters/static/vite.d.ts +1 -1
  3. package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +1 -0
  4. package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +651 -0
  5. package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +6 -0
  6. package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +22 -0
  7. package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +11 -0
  8. package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +1 -0
  9. package/lib/adapters/azure-swa/vite/index.cjs +5 -96
  10. package/lib/adapters/azure-swa/vite/index.d.ts +13 -13
  11. package/lib/adapters/azure-swa/vite/index.mjs +201 -26
  12. package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +1 -0
  13. package/lib/adapters/bun-server/vite/index-CBIchDYq.js +651 -0
  14. package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +6 -0
  15. package/lib/adapters/bun-server/vite/index-CrwlB95_.js +22 -0
  16. package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +11 -0
  17. package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +1 -0
  18. package/lib/adapters/bun-server/vite/index.cjs +5 -50
  19. package/lib/adapters/bun-server/vite/index.d.ts +14 -14
  20. package/lib/adapters/bun-server/vite/index.mjs +196 -12
  21. package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +1 -0
  22. package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +651 -0
  23. package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +6 -0
  24. package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +22 -0
  25. package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +11 -0
  26. package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +1 -0
  27. package/lib/adapters/cloud-run/vite/index.cjs +5 -47
  28. package/lib/adapters/cloud-run/vite/index.d.ts +13 -13
  29. package/lib/adapters/cloud-run/vite/index.mjs +195 -11
  30. package/lib/adapters/cloudflare-pages/vite/index-BIeHg2Cj.cjs +5 -0
  31. package/lib/adapters/cloudflare-pages/vite/index-C455V8_A.cjs +1 -0
  32. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +6 -0
  33. package/lib/adapters/cloudflare-pages/vite/index-D3HITboM.js +645 -0
  34. package/lib/adapters/cloudflare-pages/vite/index-DKcVHRBy.cjs +11 -0
  35. package/lib/adapters/cloudflare-pages/vite/index-DwovcBp3.js +22 -0
  36. package/lib/adapters/cloudflare-pages/vite/index-bogwy7wh.js +250 -0
  37. package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +1 -0
  38. package/lib/adapters/cloudflare-pages/vite/index.cjs +1 -115
  39. package/lib/adapters/cloudflare-pages/vite/index.d.ts +27 -27
  40. package/lib/adapters/cloudflare-pages/vite/index.mjs +4 -78
  41. package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +1 -0
  42. package/lib/adapters/deno-server/vite/index-CBIchDYq.js +651 -0
  43. package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +6 -0
  44. package/lib/adapters/deno-server/vite/index-CrwlB95_.js +22 -0
  45. package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +11 -0
  46. package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +1 -0
  47. package/lib/adapters/deno-server/vite/index.cjs +5 -62
  48. package/lib/adapters/deno-server/vite/index.d.ts +14 -14
  49. package/lib/adapters/deno-server/vite/index.mjs +198 -14
  50. package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +1 -0
  51. package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +651 -0
  52. package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +6 -0
  53. package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +22 -0
  54. package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +11 -0
  55. package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +1 -0
  56. package/lib/adapters/netlify-edge/vite/index.cjs +6 -129
  57. package/lib/adapters/netlify-edge/vite/index.d.ts +44 -44
  58. package/lib/adapters/netlify-edge/vite/index.mjs +240 -60
  59. package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +1 -0
  60. package/lib/adapters/node-server/vite/index-CBIchDYq.js +651 -0
  61. package/lib/adapters/node-server/vite/index-ClHGw5z1.js +6 -0
  62. package/lib/adapters/node-server/vite/index-CrwlB95_.js +22 -0
  63. package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +11 -0
  64. package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +1 -0
  65. package/lib/adapters/node-server/vite/index.cjs +5 -50
  66. package/lib/adapters/node-server/vite/index.d.ts +14 -14
  67. package/lib/adapters/node-server/vite/index.mjs +196 -12
  68. package/lib/adapters/shared/vite/index-BqUeglYs.cjs +1 -0
  69. package/lib/adapters/shared/vite/index-CBIchDYq.js +651 -0
  70. package/lib/adapters/shared/vite/index-ClHGw5z1.js +6 -0
  71. package/lib/adapters/shared/vite/index-CrwlB95_.js +22 -0
  72. package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +11 -0
  73. package/lib/adapters/shared/vite/index-vQuPcef3.cjs +1 -0
  74. package/lib/adapters/shared/vite/index.cjs +5 -371
  75. package/lib/adapters/shared/vite/index.d.ts +108 -114
  76. package/lib/adapters/shared/vite/index.mjs +158 -288
  77. package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +1 -0
  78. package/lib/adapters/ssg/vite/index-CBIchDYq.js +651 -0
  79. package/lib/adapters/ssg/vite/index-ClHGw5z1.js +6 -0
  80. package/lib/adapters/ssg/vite/index-CrwlB95_.js +22 -0
  81. package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +11 -0
  82. package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +1 -0
  83. package/lib/adapters/ssg/vite/index.cjs +5 -0
  84. package/lib/adapters/ssg/vite/index.d.ts +13 -0
  85. package/lib/adapters/ssg/vite/index.mjs +201 -0
  86. package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +1 -0
  87. package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +651 -0
  88. package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +6 -0
  89. package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +22 -0
  90. package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +11 -0
  91. package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +1 -0
  92. package/lib/adapters/vercel-edge/vite/index.cjs +5 -118
  93. package/lib/adapters/vercel-edge/vite/index.d.ts +45 -45
  94. package/lib/adapters/vercel-edge/vite/index.mjs +230 -51
  95. package/lib/index.d.ts +1000 -810
  96. package/lib/index.qwik.cjs +438 -203
  97. package/lib/index.qwik.mjs +440 -205
  98. package/lib/middleware/aws-lambda/index.cjs +1 -0
  99. package/lib/middleware/aws-lambda/index.d.ts +49 -48
  100. package/lib/middleware/aws-lambda/index.mjs +27 -41
  101. package/lib/middleware/azure-swa/index.cjs +1 -0
  102. package/lib/middleware/azure-swa/index.d.ts +28 -28
  103. package/lib/middleware/azure-swa/index.mjs +46 -269
  104. package/lib/middleware/bun/index.cjs +1 -0
  105. package/lib/middleware/bun/index.d.ts +35 -35
  106. package/lib/middleware/bun/index.mjs +68 -120
  107. package/lib/middleware/cloudflare-pages/index.cjs +1 -0
  108. package/lib/middleware/cloudflare-pages/index.d.ts +35 -35
  109. package/lib/middleware/cloudflare-pages/index.mjs +48 -80
  110. package/lib/middleware/deno/index.cjs +1 -0
  111. package/lib/middleware/deno/index.d.ts +47 -47
  112. package/lib/middleware/deno/index.mjs +63 -110
  113. package/lib/middleware/firebase/index.cjs +1 -0
  114. package/lib/middleware/firebase/index.d.ts +26 -26
  115. package/lib/middleware/firebase/index.mjs +16 -28
  116. package/lib/middleware/netlify-edge/index.cjs +1 -0
  117. package/lib/middleware/netlify-edge/index.d.ts +27 -27
  118. package/lib/middleware/netlify-edge/index.mjs +36 -64
  119. package/lib/middleware/node/index.cjs +1 -314
  120. package/lib/middleware/node/index.d.ts +64 -64
  121. package/lib/middleware/node/index.mjs +116 -198
  122. package/lib/middleware/request-handler/index.cjs +11 -1538
  123. package/lib/middleware/request-handler/index.d.ts +711 -676
  124. package/lib/middleware/request-handler/index.mjs +895 -1281
  125. package/lib/middleware/vercel-edge/index.cjs +1 -0
  126. package/lib/middleware/vercel-edge/index.d.ts +26 -26
  127. package/lib/middleware/vercel-edge/index.mjs +47 -82
  128. package/lib/modules.d.ts +4 -12
  129. package/lib/service-worker.cjs +1 -267
  130. package/lib/service-worker.d.ts +15 -4
  131. package/lib/service-worker.mjs +3 -263
  132. package/lib/ssg/deno.cjs +1 -0
  133. package/lib/ssg/deno.mjs +6 -0
  134. package/lib/ssg/index-CBIchDYq.js +651 -0
  135. package/lib/ssg/index-ClHGw5z1.js +6 -0
  136. package/lib/ssg/index-DTIOTwZo.cjs +11 -0
  137. package/lib/ssg/index-vQuPcef3.cjs +1 -0
  138. package/lib/ssg/index.cjs +1 -0
  139. package/lib/{static → ssg}/index.d.ts +96 -96
  140. package/lib/ssg/index.mjs +22 -0
  141. package/lib/ssg/node.cjs +11 -0
  142. package/lib/ssg/node.mjs +651 -0
  143. package/lib/vite/index.cjs +29 -27484
  144. package/lib/vite/index.d.ts +170 -154
  145. package/lib/vite/index.mjs +1422 -27288
  146. package/modules.d.ts +4 -12
  147. package/package.json +51 -40
  148. package/ssg.d.ts +2 -0
  149. package/static.d.ts +1 -1
  150. package/lib/adapters/static/vite/index.cjs +0 -361
  151. package/lib/adapters/static/vite/index.d.ts +0 -10
  152. package/lib/adapters/static/vite/index.mjs +0 -324
  153. package/lib/static/deno.mjs +0 -8
  154. package/lib/static/index.cjs +0 -67
  155. package/lib/static/index.mjs +0 -48
  156. package/lib/static/node.cjs +0 -1124
  157. package/lib/static/node.mjs +0 -1086
  158. package/middleware/request-handler/generated/not-found-paths.ts +0 -7
  159. package/middleware/request-handler/generated/static-paths.ts +0 -35
package/README.md CHANGED
@@ -10,6 +10,6 @@ The router for [Qwik](https://qwik.dev/).
10
10
  ## Related
11
11
 
12
12
  - [Qwik](https://qwik.dev/): An open-source framework designed for best possible time to interactive, by focusing on resumability of server-side-rendering of HTML, and fine-grained lazy-loading of code.
13
- - [Partytown](https://partytown.builder.io/): Relocate resource intensive third-party scripts off of the main thread and into a web worker 🎉.
13
+ - [Partytown](https://partytown.qwik.dev/): Relocate resource intensive third-party scripts off of the main thread and into a web worker 🎉.
14
14
  - [Mitosis](https://github.com/BuilderIO/mitosis): Write components once, run everywhere. Compiles to Vue, React, Solid, Angular, Svelte, and more.
15
15
  - [Builder](https://github.com/BuilderIO/builder): Drag and drop page builder and CMS for React, Vue, Angular, and more.
@@ -1,2 +1,2 @@
1
1
  // re-export for typescript in old resolution mode
2
- export * from '../../lib/adapters/static/vite';
2
+ export * from '../../lib/adapters/ssg/vite';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});async function t(r){return await(await o()).generate(r)}function o(){if(e())return Promise.resolve().then(()=>require("./index-vQuPcef3.cjs"));if(n()||s())return Promise.resolve().then(()=>require("./index-DTIOTwZo.cjs"));throw new Error("Unsupported platform")}function e(){return typeof Deno<"u"}function n(){return typeof Bun<"u"}function s(){return!n()&&!e()&&typeof process<"u"&&!!process.versions?.node}exports.generate=t;
@@ -0,0 +1,651 @@
1
+ import E from "node:fs";
2
+ import { normalize as te, isAbsolute as N, resolve as re, join as L, dirname as ne, relative as se } from "node:path";
3
+ import { cpus as oe } from "node:os";
4
+ import { Worker as ie, parentPort as A, isMainThread as V, workerData as j } from "node:worker_threads";
5
+ import { _serialize as ae } from "@qwik.dev/core/internal";
6
+ import { RequestEvShareQData as ce, requestHandler as le, getErrorHtml as ue } from "@qwik.dev/router/middleware/request-handler";
7
+ import { WritableStream as fe } from "node:stream/web";
8
+ import { pathToFileURL as F } from "node:url";
9
+ import { bold as G, green as U, dim as O, red as z, magenta as me } from "kleur/colors";
10
+ import { buildErrorMessage as de } from "vite";
11
+ function I(e) {
12
+ return e < 1 ? e.toFixed(2) + " ms" : e < 1e3 ? e.toFixed(1) + " ms" : e < 6e4 ? (e / 1e3).toFixed(1) + " s" : (e / 6e4).toFixed(1) + " m";
13
+ }
14
+ function ge(e, t, s) {
15
+ let r = e;
16
+ if (t && s)
17
+ for (const i of t) {
18
+ const o = `[${i}]`, n = `[...${i}]`, c = s[i];
19
+ r = r.replace(n, c), r = r.replace(o, c);
20
+ }
21
+ return r;
22
+ }
23
+ function D(e) {
24
+ return he(te(e));
25
+ }
26
+ function he(e) {
27
+ const t = /^\\\\\?\\/.test(e), s = /[^\u0000-\u0080]+/.test(e);
28
+ return t || s || (e = e.replace(/\\/g, "/"), e.endsWith("/") && (e = e.slice(0, e.length - 1))), e;
29
+ }
30
+ async function we(e) {
31
+ delete globalThis.__qwik;
32
+ const t = e.getOptions(), s = /* @__PURE__ */ new Set(), r = {
33
+ ...t,
34
+ render: (await import(F(t.renderModulePath).href)).default,
35
+ qwikRouterConfig: (await import(F(t.qwikRouterConfigModulePath).href)).default
36
+ };
37
+ e.createWorkerProcess(async (i) => {
38
+ switch (i.type) {
39
+ case "render":
40
+ return new Promise((o) => {
41
+ K(e, r, i, s, o);
42
+ });
43
+ case "close": {
44
+ const o = Array.from(s);
45
+ return s.clear(), await Promise.all(o), { type: "close" };
46
+ }
47
+ }
48
+ });
49
+ }
50
+ async function pe(e) {
51
+ delete globalThis.__qwik;
52
+ const t = e.getOptions(), s = /* @__PURE__ */ new Set(), r = {
53
+ ...t,
54
+ render: (await import(F(t.renderModulePath).href)).default,
55
+ qwikRouterConfig: (await import(F(t.qwikRouterConfigModulePath).href)).default
56
+ };
57
+ return (i) => new Promise((o) => {
58
+ K(e, r, i, s, o);
59
+ });
60
+ }
61
+ async function K(e, t, s, r, i) {
62
+ const o = new URL(s.pathname, t.origin), n = {
63
+ type: "render",
64
+ pathname: s.pathname,
65
+ url: o.href,
66
+ ok: !1,
67
+ error: null,
68
+ filePath: null,
69
+ contentType: null,
70
+ resourceType: null
71
+ };
72
+ try {
73
+ let c = null, l;
74
+ const h = new Promise((u) => {
75
+ l = u;
76
+ }), P = new Request(o), y = {
77
+ mode: "static",
78
+ locale: void 0,
79
+ url: o,
80
+ request: P,
81
+ env: {
82
+ get(u) {
83
+ return e.getEnv(u);
84
+ }
85
+ },
86
+ platform: e.platform,
87
+ getClientConn: () => ({}),
88
+ getWritableStream: (u, v, q, p, T) => {
89
+ if (n.ok = u >= 200 && u < 300, !n.ok)
90
+ return Pe;
91
+ n.contentType = (v.get("Content-Type") || "").toLowerCase();
92
+ const g = n.contentType.includes("text/html"), w = o.pathname.endsWith("/404.html"), W = e.getRouteFilePath(o.pathname, g);
93
+ w ? n.resourceType = "404" : g && (n.resourceType = "page");
94
+ const x = g ? t.emitHtml !== !1 : !0, d = g && t.emitData !== !1;
95
+ return new fe({
96
+ async start() {
97
+ try {
98
+ (x || d) && await e.ensureDir(W), x && (c = e.createWriteStream(W), c.on("error", (a) => {
99
+ console.error(a), c = null, n.error = {
100
+ message: a.message,
101
+ stack: a.stack
102
+ };
103
+ }));
104
+ } catch (a) {
105
+ c = null, n.error = {
106
+ message: String(a),
107
+ stack: a.stack || ""
108
+ };
109
+ }
110
+ },
111
+ write(a) {
112
+ try {
113
+ c && c.write(Buffer.from(a.buffer));
114
+ } catch (m) {
115
+ c = null, n.error = {
116
+ message: String(m),
117
+ stack: m.stack || ""
118
+ };
119
+ }
120
+ },
121
+ async close() {
122
+ const a = [];
123
+ try {
124
+ if (d) {
125
+ const m = T.sharedMap.get(ce);
126
+ if (m && !w) {
127
+ const k = e.getDataFilePath(o.pathname), b = e.createWriteStream(k);
128
+ b.on("error", (S) => {
129
+ console.error(S), n.error = {
130
+ message: S.message,
131
+ stack: S.stack
132
+ };
133
+ });
134
+ const R = await ae([m]);
135
+ b.write(R), a.push(
136
+ new Promise((S) => {
137
+ n.filePath = W, b.end(S);
138
+ })
139
+ );
140
+ }
141
+ }
142
+ c && a.push(
143
+ new Promise((m) => {
144
+ n.filePath = W, c.end(m);
145
+ }).finally(l)
146
+ ), a.length > 0 && await Promise.all(a);
147
+ } catch (m) {
148
+ c = null, n.error = {
149
+ message: String(m),
150
+ stack: m.stack || ""
151
+ };
152
+ }
153
+ }
154
+ });
155
+ }
156
+ }, f = le(y, t).then((u) => {
157
+ if (u != null)
158
+ return u.completion.then((v) => c ? h.then(() => v) : v);
159
+ }).then((u) => {
160
+ u !== void 0 && (u instanceof Error ? n.error = {
161
+ message: u.message,
162
+ stack: u.stack
163
+ } : n.error = {
164
+ message: String(u),
165
+ stack: void 0
166
+ });
167
+ }).finally(() => {
168
+ r.delete(f), i(n);
169
+ });
170
+ r.add(f);
171
+ } catch (c) {
172
+ c instanceof Error ? n.error = {
173
+ message: c.message,
174
+ stack: c.stack
175
+ } : n.error = {
176
+ message: String(c),
177
+ stack: void 0
178
+ }, i(n);
179
+ }
180
+ }
181
+ const ke = {
182
+ closed: Promise.resolve(void 0),
183
+ ready: Promise.resolve(void 0),
184
+ desiredSize: 0,
185
+ async close() {
186
+ },
187
+ async abort() {
188
+ },
189
+ async write() {
190
+ },
191
+ releaseLock() {
192
+ }
193
+ }, Pe = {
194
+ get locked() {
195
+ return !1;
196
+ },
197
+ set locked(e) {
198
+ },
199
+ async abort() {
200
+ },
201
+ async close() {
202
+ },
203
+ getWriter() {
204
+ return ke;
205
+ }
206
+ };
207
+ async function ye(e, t) {
208
+ const s = [], r = [];
209
+ let i = null;
210
+ t = { ...t };
211
+ let o = t.outDir;
212
+ if (typeof o != "string")
213
+ throw new Error('Missing "outDir" option');
214
+ if (!N(o))
215
+ throw new Error(`"outDir" must be an absolute file path, received: ${o}`);
216
+ o = D(o);
217
+ let n = oe().length;
218
+ typeof t.maxWorkers == "number" && (n = Math.max(1, Math.min(t.maxWorkers, n)));
219
+ let c = 20;
220
+ typeof t.maxTasksPerWorker == "number" && (c = Math.max(1, Math.min(t.maxTasksPerWorker, 50)));
221
+ let l = t.sitemapOutFile;
222
+ l !== null && (typeof l != "string" && (l = "sitemap.xml"), N(l) || (l = re(o, l)));
223
+ const h = await pe(e), P = (p) => {
224
+ if (p === 0) {
225
+ const d = {
226
+ activeTasks: 0,
227
+ totalTasks: 0,
228
+ render: async (M) => {
229
+ d.activeTasks++, d.totalTasks++;
230
+ const a = await h(M);
231
+ return d.activeTasks--, a;
232
+ },
233
+ terminate: async () => {
234
+ }
235
+ };
236
+ return d;
237
+ }
238
+ let T = null;
239
+ const g = /* @__PURE__ */ new Map();
240
+ let w;
241
+ typeof __filename == "string" ? w = __filename : w = import.meta.url, typeof w == "string" && w.startsWith("file://") && (w = new URL(w));
242
+ const W = new ie(w, { workerData: t }), x = {
243
+ activeTasks: 0,
244
+ totalTasks: 0,
245
+ render: (d) => new Promise((M, a) => {
246
+ try {
247
+ x.activeTasks++, x.totalTasks++, g.set(d.pathname, M), W.postMessage(d);
248
+ } catch (m) {
249
+ x.activeTasks--, g.delete(d.pathname), a(m);
250
+ }
251
+ }),
252
+ terminate: async () => {
253
+ g.clear();
254
+ const d = { type: "close" };
255
+ await new Promise((M) => {
256
+ T = M, W.postMessage(d);
257
+ }), await W.terminate();
258
+ }
259
+ };
260
+ return W.on("message", (d) => {
261
+ switch (d.type) {
262
+ case "render": {
263
+ const M = g.get(d.pathname);
264
+ M && (g.delete(d.pathname), x.activeTasks--, M(d));
265
+ break;
266
+ }
267
+ case "close": {
268
+ T && (T(), T = null);
269
+ break;
270
+ }
271
+ }
272
+ }), W.on("error", (d) => {
273
+ console.error("worker error", d);
274
+ }), W.on("exit", (d) => {
275
+ d !== 1 && console.error(`worker exit ${d}`);
276
+ }), x;
277
+ }, y = () => s.sort(We)[0], f = () => y().activeTasks < c, u = async (p) => {
278
+ const g = await y().render(p);
279
+ if (l && g.ok && g.resourceType === "page" && (r.push(`<url><loc>${g.url}</loc></url>`), r.length > 50)) {
280
+ i && await i;
281
+ const w = r.join(`
282
+ `) + `
283
+ `;
284
+ r.length = 0, i = E.promises.appendFile(l, w);
285
+ }
286
+ return g;
287
+ }, v = async () => {
288
+ const p = [];
289
+ l && (i && await i, r.push("</urlset>"), p.push(E.promises.appendFile(l, r.join(`
290
+ `))), r.length = 0);
291
+ for (const T of s)
292
+ try {
293
+ p.push(T.terminate());
294
+ } catch (g) {
295
+ console.error(g);
296
+ }
297
+ s.length = 0, await Promise.all(p);
298
+ };
299
+ l && (await X(l), await E.promises.writeFile(
300
+ l,
301
+ `<?xml version="1.0" encoding="UTF-8"?>
302
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
303
+ `
304
+ ));
305
+ for (let p = 0; p < n; p++)
306
+ s.push(P(p));
307
+ return {
308
+ hasAvailableWorker: f,
309
+ render: u,
310
+ close: v
311
+ };
312
+ }
313
+ function We(e, t) {
314
+ return e.activeTasks < t.activeTasks ? -1 : e.activeTasks > t.activeTasks ? 1 : e.totalTasks < t.totalTasks ? -1 : 1;
315
+ }
316
+ async function Se(e) {
317
+ A?.on("message", async (t) => {
318
+ A?.postMessage(await e(t));
319
+ });
320
+ }
321
+ async function J(e) {
322
+ const t = (f) => E.createWriteStream(f, {
323
+ flags: "w"
324
+ }), i = () => {
325
+ const f = process.hrtime();
326
+ return () => {
327
+ const u = process.hrtime(f);
328
+ return (u[0] * 1e9 + u[1]) * 1e-6;
329
+ };
330
+ }, o = async () => ({
331
+ debug: e.log === "debug" ? console.debug.bind(console) : () => {
332
+ },
333
+ error: console.error.bind(console),
334
+ info: console.info.bind(console)
335
+ }), n = D(e.outDir), l = (e.basePathname || "/").length, y = {
336
+ createMainProcess: null,
337
+ createWorkerProcess: Se,
338
+ createLogger: o,
339
+ getOptions: () => e,
340
+ ensureDir: X,
341
+ createWriteStream: t,
342
+ createTimer: i,
343
+ access: ve,
344
+ getRouteFilePath: (f, u) => (f = f.slice(l), u ? f.endsWith(".html") || (f.endsWith("/") ? f += "index.html" : f += "/index.html") : f.endsWith("/") && (f = f.slice(0, -1)), L(n, f)),
345
+ getDataFilePath: (f) => (f = f.slice(l), f.endsWith("/") ? f += "q-data.json" : f += "/q-data.json", L(n, f)),
346
+ getEnv: (f) => process.env[f],
347
+ platform: {
348
+ static: !0,
349
+ node: process.versions.node
350
+ }
351
+ };
352
+ return y.createMainProcess = () => ye(y, e), y;
353
+ }
354
+ const X = async (e) => {
355
+ await E.promises.mkdir(ne(e), { recursive: !0 });
356
+ }, ve = async (e) => {
357
+ try {
358
+ return await E.promises.access(e), !0;
359
+ } catch {
360
+ return !1;
361
+ }
362
+ }, Te = (e) => {
363
+ const t = e.stack;
364
+ if (typeof t == "string") {
365
+ const s = t.split(`
366
+ `).filter((r) => !r.includes("/node_modules/") && !r.includes("(node:"));
367
+ for (let r = 1; r < s.length; r++) {
368
+ const i = s[r].replace("file:///", "/");
369
+ if (/^\s+at/.test(i)) {
370
+ const o = i.indexOf("/"), n = i.lastIndexOf(")", o);
371
+ if (o > 0) {
372
+ const l = i.slice(o, n).split(":"), h = Q(l[l.length - 1]), P = Q(l[l.length - 2]);
373
+ return typeof h == "number" && typeof P == "number" ? (l.length -= 2, {
374
+ file: l.join(":"),
375
+ line: P,
376
+ column: h
377
+ }) : typeof h == "number" ? (l.length -= 1, {
378
+ file: l.join(":"),
379
+ line: h,
380
+ column: void 0
381
+ }) : {
382
+ file: l.join(":"),
383
+ line: void 0,
384
+ column: void 0
385
+ };
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }, Q = (e) => {
391
+ try {
392
+ return parseInt(e, 10);
393
+ } catch {
394
+ return;
395
+ }
396
+ }, Y = /\r?\n/, B = 2;
397
+ function xe(e, t) {
398
+ if (typeof t == "number")
399
+ return t;
400
+ if (t.lo != null)
401
+ return t.lo;
402
+ const s = e.split(Y), { line: r, column: i } = t;
403
+ let o = 0;
404
+ for (let n = 0; n < r - 1 && n < s.length; n++)
405
+ o += s[n].length + 1;
406
+ return o + i;
407
+ }
408
+ function be(e, t = 0, s) {
409
+ t = xe(e, t), s = s || t;
410
+ const r = e.split(Y);
411
+ let i = 0;
412
+ const o = [];
413
+ for (let n = 0; n < r.length; n++)
414
+ if (i += r[n].length + 1, i >= t) {
415
+ for (let c = n - B; c <= n + B || s > i; c++) {
416
+ if (c < 0 || c >= r.length)
417
+ continue;
418
+ const l = c + 1;
419
+ o.push(`${l}${" ".repeat(Math.max(3 - String(l).length, 0))}| ${r[c]}`);
420
+ const h = r[c].length;
421
+ if (c === n) {
422
+ const P = Math.max(t - (i - h) + 1, 0), y = Math.max(1, s > i ? h - P : s - t);
423
+ o.push(" | " + " ".repeat(P) + "^".repeat(y));
424
+ } else if (c > n) {
425
+ if (s > i) {
426
+ const P = Math.max(Math.min(s - i, h), 1);
427
+ o.push(" | " + "^".repeat(P));
428
+ }
429
+ i += h + 1;
430
+ }
431
+ }
432
+ break;
433
+ }
434
+ return o.join(`
435
+ `);
436
+ }
437
+ function Me(e) {
438
+ if (e instanceof Error) {
439
+ const t = e;
440
+ let s = t.loc;
441
+ if (!t.frame && !t.plugin && (s || (s = Te(t)), s && (t.loc = s, s.file))) {
442
+ t.id = D(t.loc.file);
443
+ try {
444
+ const r = E.readFileSync(t.loc.file, "utf-8");
445
+ t.frame = be(r, t.loc);
446
+ } catch {
447
+ }
448
+ }
449
+ }
450
+ return e;
451
+ }
452
+ function Re(e) {
453
+ const t = [];
454
+ let s = 0;
455
+ for (; s < e.length; ) {
456
+ const r = e.indexOf("[", s);
457
+ if (r !== -1) {
458
+ const i = e.indexOf("]", r), o = e.slice(r + 1, i);
459
+ t.push(o.startsWith("...") ? o.substring(3) : o), s = i + 1;
460
+ } else
461
+ s = e.length;
462
+ }
463
+ return t;
464
+ }
465
+ var Z = /* @__PURE__ */ ((e) => (e[e.RouteName = 0] = "RouteName", e[e.Loaders = 1] = "Loaders", e[e.OriginalPathname = 2] = "OriginalPathname", e[e.RouteBundleNames = 3] = "RouteBundleNames", e))(Z || {});
466
+ async function Ee(e, t, s) {
467
+ if (t.emit404Pages !== !1) {
468
+ const i = (t.basePathname || "/") + "404.html";
469
+ if (!s.some(
470
+ (n) => n[Z.OriginalPathname] === i
471
+ )) {
472
+ const n = e.getRouteFilePath(i, !0), c = ue(404, "Resource Not Found");
473
+ return await e.ensureDir(n), new Promise((l) => {
474
+ const h = e.createWriteStream(n);
475
+ h.write(c), h.end(l);
476
+ });
477
+ }
478
+ }
479
+ }
480
+ function Fe(e, t, s) {
481
+ const r = H(t), i = H(s);
482
+ return (o) => {
483
+ if (o.endsWith("404.html"))
484
+ return !0;
485
+ e !== "/" && (o = o.slice(e.length - 1));
486
+ for (const n of i)
487
+ if (n.test(o))
488
+ return !1;
489
+ for (const n of r)
490
+ if (n.test(o))
491
+ return !0;
492
+ return !1;
493
+ };
494
+ }
495
+ function H(e) {
496
+ return Array.isArray(e) ? e.filter((t) => typeof t == "string").map(qe) : [];
497
+ }
498
+ function qe(e) {
499
+ let t;
500
+ return e === "/" || e === "/*" ? t = e : e.endsWith("/*") ? t = `${e.substring(0, e.length - 2)}(/*)?` : e.endsWith("/") ? t = `${e.substring(0, e.length - 1)}(/)?` : e.endsWith("*") ? t = e : t = `${e}(/)?`, t = `^${t.replace(/\*/g, ".*")}$`, new RegExp(t);
501
+ }
502
+ async function $e(e) {
503
+ const t = e.getOptions();
504
+ Ce(t);
505
+ const s = await e.createMainProcess(), r = await e.createLogger();
506
+ r.info(`
507
+ ` + G(U("Starting Qwik Router SSG...")));
508
+ const i = (await import(F(t.qwikRouterConfigModulePath).href)).default, o = [], n = /* @__PURE__ */ new Set(), c = i.routes || [], l = !!i.trailingSlash, h = Fe(t.basePathname || "/", t.include, t.exclude);
509
+ return new Promise((P, y) => {
510
+ try {
511
+ const f = e.createTimer(), u = {
512
+ duration: 0,
513
+ rendered: 0,
514
+ errors: 0,
515
+ staticPaths: []
516
+ };
517
+ let v = !1, q = !1;
518
+ const p = async () => {
519
+ const a = s.close();
520
+ if (await Ee(e, t, c), u.duration = f(), u.errors === 0) {
521
+ r.info(`
522
+ ${U("SSG results")}`), u.rendered > 0 && r.info(
523
+ `- Generated: ${O(
524
+ `${u.rendered} page${u.rendered === 1 ? "" : "s"}`
525
+ )}`
526
+ ), r.info(`- Duration: ${O(I(u.duration))}`);
527
+ const m = u.rendered + u.errors;
528
+ m > 0 && r.info(
529
+ `- Average: ${O(I(u.duration / m) + " per page")}`
530
+ ), r.info("");
531
+ }
532
+ a.then(() => {
533
+ setTimeout(() => P(u));
534
+ }).catch(y);
535
+ }, T = () => {
536
+ for (; !v && s.hasAvailableWorker() && o.length > 0; ) {
537
+ const a = o.shift();
538
+ a && W(a);
539
+ }
540
+ !v && q && o.length === 0 && n.size === 0 && (v = !0, p());
541
+ };
542
+ let g = !1;
543
+ const w = () => {
544
+ g || (g = !0, setTimeout(() => {
545
+ g = !1, T();
546
+ }));
547
+ }, W = async (a) => {
548
+ try {
549
+ n.add(a.pathname);
550
+ const m = await s.render({ type: "render", ...a });
551
+ if (n.delete(a.pathname), m.error) {
552
+ const k = new Error(m.error.message);
553
+ k.stack = m.error.stack, r.error(`
554
+ ${G(z(`!!! ${m.pathname}: Error during SSG`))}`), r.error(z(k.message)), r.error(` Pathname: ${me(a.pathname)}`), Object.assign(Me(k), {
555
+ plugin: "qwik-ssg"
556
+ }), r.error(de(k)), u.errors++;
557
+ }
558
+ if (m.filePath != null) {
559
+ u.rendered++, u.staticPaths.push(m.pathname);
560
+ const k = t.rootDir ?? t.outDir, b = se(k, m.filePath), R = b.lastIndexOf("/");
561
+ r.info(`${O(b.slice(0, R + 1))}${b.slice(R + 1)}`);
562
+ }
563
+ w();
564
+ } catch (m) {
565
+ v = !0, y(m);
566
+ }
567
+ }, x = (a, m) => {
568
+ if (a) {
569
+ if (a = new URL(a, "https://qwik.dev").pathname, a !== t.basePathname)
570
+ if (l) {
571
+ if (!a.endsWith("/")) {
572
+ const k = a.split("/");
573
+ k[k.length - 1].includes(".") || (a += "/");
574
+ }
575
+ } else
576
+ a.endsWith("/") && (a = a.slice(0, a.length - 1));
577
+ h(a) && !o.some((k) => k.pathname === a) && (o.push({
578
+ pathname: a,
579
+ params: m
580
+ }), w());
581
+ }
582
+ }, d = async (a) => {
583
+ const [m, k, b] = a, R = await Promise.all(k.map((C) => C())), S = R[R.length - 1], $ = Re(m);
584
+ if (S && (S.default || S.onRequest || S.onGet))
585
+ if (Array.isArray($) && $.length > 0) {
586
+ if (typeof S.onStaticGenerate == "function" && $.length > 0) {
587
+ const C = await S.onStaticGenerate({
588
+ env: {
589
+ get(_) {
590
+ return e.getEnv(_);
591
+ }
592
+ }
593
+ });
594
+ if (Array.isArray(C.params))
595
+ for (const _ of C.params) {
596
+ const ee = ge(
597
+ b,
598
+ $,
599
+ _
600
+ );
601
+ x(ee, _);
602
+ }
603
+ }
604
+ } else
605
+ x(b, void 0);
606
+ };
607
+ (async () => {
608
+ await Promise.all(c.map(d)), q = !0, w();
609
+ })();
610
+ } catch (f) {
611
+ y(f);
612
+ }
613
+ });
614
+ }
615
+ function Ce(e) {
616
+ if (!e.qwikRouterConfigModulePath)
617
+ if (e.qwikCityPlanModulePath)
618
+ console.warn(
619
+ "`qwikCityPlanModulePath` is deprecated. Use `qwikRouterConfigModulePath` instead."
620
+ );
621
+ else
622
+ throw new Error('Missing "qwikRouterConfigModulePath" option');
623
+ if (!e.renderModulePath)
624
+ throw new Error('Missing "renderModulePath" option');
625
+ let t = e.origin;
626
+ if (typeof t != "string" || t.trim().length === 0)
627
+ throw new Error('Missing "origin" option');
628
+ if (t = t.trim(), !/:\/\//.test(t) || t.startsWith("://"))
629
+ throw new Error(
630
+ `"origin" must start with a valid protocol, such as "https://" or "http://", received "${t}"`
631
+ );
632
+ try {
633
+ new URL(t);
634
+ } catch (s) {
635
+ throw new Error(`Invalid "origin": ${s}`);
636
+ }
637
+ }
638
+ async function Qe(e) {
639
+ if (V) {
640
+ const t = await J(e);
641
+ return await $e(t);
642
+ }
643
+ throw new Error("generate() cannot be called from a worker thread");
644
+ }
645
+ !V && j && (async () => {
646
+ const e = await J(j);
647
+ await we(e);
648
+ })();
649
+ export {
650
+ Qe as generate
651
+ };
@@ -0,0 +1,6 @@
1
+ async function n(e) {
2
+ console.error("Deno not implemented"), Deno.exit(1);
3
+ }
4
+ export {
5
+ n as generate
6
+ };
@@ -0,0 +1,22 @@
1
+ async function i(t) {
2
+ return await (await r()).generate(t);
3
+ }
4
+ function r() {
5
+ if (n())
6
+ return import("./index-ClHGw5z1.js");
7
+ if (e() || o())
8
+ return import("./index-CBIchDYq.js");
9
+ throw new Error("Unsupported platform");
10
+ }
11
+ function n() {
12
+ return typeof Deno < "u";
13
+ }
14
+ function e() {
15
+ return typeof Bun < "u";
16
+ }
17
+ function o() {
18
+ return !e() && !n() && typeof process < "u" && !!process.versions?.node;
19
+ }
20
+ export {
21
+ i as generate
22
+ };