@qwik.dev/router 2.0.0-beta.11 → 2.0.0-beta.14

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/lib/adapters/azure-swa/vite/index.mjs +28 -207
  2. package/lib/adapters/bun-server/vite/index.mjs +16 -202
  3. package/lib/adapters/cloud-run/vite/index.mjs +15 -201
  4. package/lib/adapters/cloudflare-pages/vite/index.mjs +65 -6
  5. package/lib/adapters/deno-server/vite/index.mjs +18 -204
  6. package/lib/adapters/netlify-edge/vite/index.mjs +58 -246
  7. package/lib/adapters/node-server/vite/index.mjs +16 -202
  8. package/lib/adapters/shared/vite/index.d.ts +4 -4
  9. package/lib/adapters/shared/vite/index.mjs +250 -149
  10. package/lib/adapters/ssg/vite/index.mjs +12 -199
  11. package/lib/adapters/vercel-edge/vite/index.d.ts +1 -1
  12. package/lib/adapters/vercel-edge/vite/index.mjs +50 -235
  13. package/lib/chunks/error-handler.mjs +57 -0
  14. package/lib/chunks/format-error.mjs +137 -0
  15. package/lib/chunks/fs.mjs +254 -0
  16. package/lib/chunks/index.mjs +884 -0
  17. package/lib/chunks/mime-types.mjs +52 -0
  18. package/lib/chunks/routing.qwik.mjs +429 -0
  19. package/lib/chunks/types.qwik.mjs +22 -0
  20. package/lib/index.d.ts +11 -4
  21. package/lib/index.qwik.mjs +533 -1019
  22. package/lib/middleware/aws-lambda/index.mjs +38 -28
  23. package/lib/middleware/azure-swa/index.mjs +65 -48
  24. package/lib/middleware/bun/index.mjs +104 -119
  25. package/lib/middleware/cloudflare-pages/index.mjs +69 -49
  26. package/lib/middleware/deno/index.mjs +94 -114
  27. package/lib/middleware/firebase/index.mjs +26 -18
  28. package/lib/middleware/netlify-edge/index.mjs +53 -38
  29. package/lib/middleware/node/index.mjs +184 -167
  30. package/lib/middleware/request-handler/index.d.ts +22 -4
  31. package/lib/middleware/request-handler/index.mjs +1203 -877
  32. package/lib/middleware/vercel-edge/index.mjs +72 -49
  33. package/lib/service-worker/index.mjs +4 -0
  34. package/lib/ssg/index.mjs +14 -22
  35. package/lib/vite/index.d.ts +13 -7
  36. package/lib/vite/index.mjs +1609 -1217
  37. package/package.json +27 -44
  38. package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +0 -1
  39. package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +0 -651
  40. package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +0 -6
  41. package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +0 -22
  42. package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +0 -11
  43. package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +0 -1
  44. package/lib/adapters/azure-swa/vite/index.cjs +0 -5
  45. package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +0 -1
  46. package/lib/adapters/bun-server/vite/index-CBIchDYq.js +0 -651
  47. package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +0 -6
  48. package/lib/adapters/bun-server/vite/index-CrwlB95_.js +0 -22
  49. package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +0 -11
  50. package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +0 -1
  51. package/lib/adapters/bun-server/vite/index.cjs +0 -5
  52. package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +0 -1
  53. package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +0 -651
  54. package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +0 -6
  55. package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +0 -22
  56. package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +0 -11
  57. package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +0 -1
  58. package/lib/adapters/cloud-run/vite/index.cjs +0 -5
  59. package/lib/adapters/cloudflare-pages/vite/index-Bg_9YkM5.js +0 -22
  60. package/lib/adapters/cloudflare-pages/vite/index-C1aDmh1S.cjs +0 -1
  61. package/lib/adapters/cloudflare-pages/vite/index-CHT9Y93A.js +0 -254
  62. package/lib/adapters/cloudflare-pages/vite/index-Ck7KvpK1.cjs +0 -11
  63. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +0 -6
  64. package/lib/adapters/cloudflare-pages/vite/index-Cp1cjAds.js +0 -645
  65. package/lib/adapters/cloudflare-pages/vite/index-D9RL9dvJ.cjs +0 -5
  66. package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +0 -1
  67. package/lib/adapters/cloudflare-pages/vite/index.cjs +0 -1
  68. package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +0 -1
  69. package/lib/adapters/deno-server/vite/index-CBIchDYq.js +0 -651
  70. package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +0 -6
  71. package/lib/adapters/deno-server/vite/index-CrwlB95_.js +0 -22
  72. package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +0 -11
  73. package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +0 -1
  74. package/lib/adapters/deno-server/vite/index.cjs +0 -5
  75. package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +0 -1
  76. package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +0 -651
  77. package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +0 -6
  78. package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +0 -22
  79. package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +0 -11
  80. package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +0 -1
  81. package/lib/adapters/netlify-edge/vite/index.cjs +0 -6
  82. package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +0 -1
  83. package/lib/adapters/node-server/vite/index-CBIchDYq.js +0 -651
  84. package/lib/adapters/node-server/vite/index-ClHGw5z1.js +0 -6
  85. package/lib/adapters/node-server/vite/index-CrwlB95_.js +0 -22
  86. package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +0 -11
  87. package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +0 -1
  88. package/lib/adapters/node-server/vite/index.cjs +0 -5
  89. package/lib/adapters/shared/vite/index-BqUeglYs.cjs +0 -1
  90. package/lib/adapters/shared/vite/index-CBIchDYq.js +0 -651
  91. package/lib/adapters/shared/vite/index-ClHGw5z1.js +0 -6
  92. package/lib/adapters/shared/vite/index-CrwlB95_.js +0 -22
  93. package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +0 -11
  94. package/lib/adapters/shared/vite/index-vQuPcef3.cjs +0 -1
  95. package/lib/adapters/shared/vite/index.cjs +0 -5
  96. package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +0 -1
  97. package/lib/adapters/ssg/vite/index-CBIchDYq.js +0 -651
  98. package/lib/adapters/ssg/vite/index-ClHGw5z1.js +0 -6
  99. package/lib/adapters/ssg/vite/index-CrwlB95_.js +0 -22
  100. package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +0 -11
  101. package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +0 -1
  102. package/lib/adapters/ssg/vite/index.cjs +0 -5
  103. package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +0 -1
  104. package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +0 -651
  105. package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +0 -6
  106. package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +0 -22
  107. package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +0 -11
  108. package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +0 -1
  109. package/lib/adapters/vercel-edge/vite/index.cjs +0 -5
  110. package/lib/index.qwik.cjs +0 -2126
  111. package/lib/middleware/aws-lambda/index.cjs +0 -1
  112. package/lib/middleware/azure-swa/index.cjs +0 -1
  113. package/lib/middleware/bun/index.cjs +0 -1
  114. package/lib/middleware/cloudflare-pages/index.cjs +0 -1
  115. package/lib/middleware/deno/index.cjs +0 -1
  116. package/lib/middleware/firebase/index.cjs +0 -1
  117. package/lib/middleware/netlify-edge/index.cjs +0 -1
  118. package/lib/middleware/node/index.cjs +0 -1
  119. package/lib/middleware/request-handler/index.cjs +0 -18
  120. package/lib/middleware/vercel-edge/index.cjs +0 -1
  121. package/lib/service-worker.cjs +0 -1
  122. package/lib/service-worker.mjs +0 -5
  123. package/lib/ssg/deno.cjs +0 -1
  124. package/lib/ssg/deno.mjs +0 -6
  125. package/lib/ssg/index-CBIchDYq.js +0 -651
  126. package/lib/ssg/index-ClHGw5z1.js +0 -6
  127. package/lib/ssg/index-DTIOTwZo.cjs +0 -11
  128. package/lib/ssg/index-vQuPcef3.cjs +0 -1
  129. package/lib/ssg/index.cjs +0 -1
  130. package/lib/ssg/node.cjs +0 -11
  131. package/lib/ssg/node.mjs +0 -651
  132. package/lib/vite/index.cjs +0 -42
@@ -1,205 +1,18 @@
1
- import { join as y } from "node:path";
2
- import { getErrorHtml as D } from "@qwik.dev/router/middleware/request-handler";
3
- import p from "node:fs";
4
- async function O(e, l, t, n, m) {
5
- t && !t.endsWith("/") && (t += "/");
6
- const w = /* @__PURE__ */ new Set([
7
- t + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
8
- t + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
9
- ]), s = new Set(n.map(P)), g = [], c = async (o, a, u) => {
10
- if (u = P(u), w.has(u))
11
- return;
12
- const f = y(o, a);
13
- if (a === "index.html" || a === "q-data.json") {
14
- !s.has(u) && m && await p.promises.unlink(f);
15
- return;
16
- }
17
- if (a === "404.html") {
18
- const r = await p.promises.readFile(f, "utf-8");
19
- g.push([u, r]);
20
- return;
21
- }
22
- const k = await p.promises.stat(f);
23
- k.isDirectory() ? await h(f, u + a + "/") : k.isFile() && s.add(u + a);
24
- }, h = async (o, a) => {
25
- const u = await p.promises.readdir(o);
26
- await Promise.all(u.map((f) => c(o, f, a)));
27
- };
28
- p.existsSync(e) && await h(e, t);
29
- const i = R(t, g), d = T(s);
30
- await b(d, i, l);
31
- }
32
- function P(e) {
33
- return e.endsWith("/") ? e : e + "/";
34
- }
35
- function R(e, l) {
36
- if (l.sort((t, n) => t[0].length > n[0].length ? -1 : t[0].length < n[0].length ? 1 : t[0] < n[0] ? -1 : t[0] > n[0] ? 1 : 0), !l.some((t) => t[0] === e)) {
37
- const t = D(404, "Resource Not Found");
38
- l.push([e, t]);
39
- }
40
- return JSON.stringify(l, null, 2).slice(1, -1);
41
- }
42
- function T(e) {
43
- return JSON.stringify(Array.from(new Set(e)).sort()).slice(1, -1);
44
- }
45
- const b = async (e, l, t) => {
46
- const n = /* @__PURE__ */ new Set(), m = async (s) => {
47
- const g = await p.promises.readFile(s, "utf-8");
48
- let c = !1;
49
- const h = g.replace(
50
- /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (i, d, o) => (c = !0, o === "STATIC_PATHS" ? e : l)
52
- );
53
- c && await p.promises.writeFile(s, h);
54
- }, w = async (s) => {
55
- const g = await p.promises.readdir(s, { withFileTypes: !0 });
56
- for (const c of g)
57
- if (c.isDirectory())
58
- await w(y(s, c.name));
59
- else if (c.name.endsWith("js")) {
60
- const h = m(y(s, c.name)).finally(() => {
61
- n.delete(h);
62
- });
63
- n.add(h);
64
- }
65
- };
66
- await w(t), await Promise.all(n);
67
- };
68
- function E(e) {
69
- let l = null, t = null, n = null, m = null, w = null, s = !1, g;
70
- const c = [];
71
- return {
72
- name: `vite-plugin-qwik-router-ssg-${e.name}`,
73
- enforce: "post",
74
- apply: "build",
75
- config(i) {
76
- return typeof e.config == "function" && (i = e.config(i)), i.define = {
77
- "process.env.NODE_ENV": JSON.stringify("production"),
78
- ...i.define
79
- }, i;
80
- },
81
- configResolved(i) {
82
- if (s = !!i.build.ssr, g = i.command, s) {
83
- if (l = i.plugins.find(
84
- (d) => d.name === "vite-plugin-qwik-router"
85
- ), !l)
86
- throw new Error("Missing vite-plugin-qwik-router");
87
- if (t = i.plugins.find(
88
- (d) => d.name === "vite-plugin-qwik"
89
- ), !t)
90
- throw new Error("Missing vite-plugin-qwik");
91
- if (n = i.build.outDir, i.build?.ssr !== !0)
92
- throw new Error(
93
- `"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`
94
- );
95
- if (!i.build?.rollupOptions?.input)
96
- throw new Error(
97
- `"build.rollupOptions.input" must be set in order to use the "${e.name}" adapter.`
98
- );
99
- }
100
- },
101
- buildStart() {
102
- if (s && e.ssg !== null) {
103
- const { srcDir: i } = t.api.getOptions();
104
- g === "build" && n && i && (this.emitFile({
105
- id: "@qwik-router-config",
106
- type: "chunk",
107
- fileName: "@qwik-router-config.js"
108
- }), this.emitFile({
109
- id: `${i}/entry.ssr`,
110
- type: "chunk",
111
- fileName: "entry.ssr.js"
112
- }));
113
- }
114
- },
115
- generateBundle(i, d) {
116
- if (s) {
117
- c.length = 0;
118
- for (const o in d) {
119
- const a = d[o];
120
- a.type === "chunk" && a.isEntry && (c.push(o), a.name === "entry.ssr" ? m = y(n, o) : a.name === "@qwik-router-config" && (w = y(n, o)));
121
- }
122
- }
123
- },
124
- closeBundle: {
125
- sequential: !0,
126
- async handler() {
127
- if (s && n && l?.api && t?.api) {
128
- const i = e.staticPaths || [], d = l.api.getRoutes(), o = l.api.getBasePathname(), a = t.api.getClientOutDir(), u = t.api.getClientPublicOutDir(), f = t.api.getAssetsDir(), k = t.api.getRootDir() ?? void 0;
129
- if (e.ssg !== null && m && w && a && u) {
130
- let r = e.ssg?.origin ?? e.origin;
131
- r || (r = "https://yoursite.qwik.dev"), r.length > 0 && !/:\/\//.test(r) && (r = `https://${r}`), r.startsWith("//") && (r = `https:${r}`);
132
- try {
133
- r = new URL(r).origin;
134
- } catch {
135
- this.warn(
136
- `Invalid "origin" option: "${r}". Using default origin: "https://yoursite.qwik.dev"`
137
- ), r = "https://yoursite.qwik.dev";
138
- }
139
- const v = await import("./index-CrwlB95_.js"), q = {
140
- maxWorkers: e.maxWorkers,
141
- basePathname: o,
142
- outDir: u,
143
- rootDir: k,
144
- ...e.ssg,
145
- origin: r,
146
- renderModulePath: m,
147
- qwikRouterConfigModulePath: w
148
- }, S = await v.generate(q);
149
- if (S.errors > 0) {
150
- const _ = new Error(
151
- `Error while running SSG from "${e.name}" adapter. At least one path failed to render.`
152
- );
153
- _.stack = void 0, this.error(_);
154
- }
155
- i.push(...S.staticPaths);
156
- }
157
- await O(
158
- u,
159
- n,
160
- f ? y(o, f) : o,
161
- i,
162
- !!e.cleanStaticGenerated
163
- ), typeof e.generate == "function" && await e.generate({
164
- outputEntries: c,
165
- serverOutDir: n,
166
- clientOutDir: a,
167
- clientPublicOutDir: u,
168
- basePathname: o,
169
- routes: d,
170
- assetsDir: f,
171
- warn: (r) => this.warn(r),
172
- error: (r) => this.error(r)
173
- }), this.warn(
174
- `
175
- ==============================================
176
- Note: Make sure that you are serving the built files with proper cache headers.
177
- See https://qwik.dev/docs/deployments/#cache-headers for more information.
178
- ==============================================`
179
- ), e.ssg !== null && setTimeout(() => {
180
- console.warn(
181
- "SSG seems to be hanging after completion, forcing process to exit. Everything is likely fine."
182
- ), process.exit(0);
183
- }, 5e3).unref(), e.ssg !== null && setTimeout(() => {
184
- process.exit(0);
185
- }, 5e3).unref();
186
- }
187
- }
188
- }
189
- };
190
- }
191
- function A(e) {
192
- return E({
1
+ import { viteAdapter } from '../../shared/vite/index.mjs';
2
+ import 'node:path';
3
+ import 'node:fs';
4
+ import '../../../chunks/error-handler.mjs';
5
+
6
+ function ssgAdapter(opts) {
7
+ return viteAdapter({
193
8
  name: "static-site-generation",
194
- origin: e.origin,
9
+ origin: opts.origin,
195
10
  ssg: {
196
11
  include: ["/*"],
197
- ...e
12
+ ...opts
198
13
  }
199
14
  });
200
15
  }
201
- const W = A;
202
- export {
203
- A as ssgAdapter,
204
- W as staticAdapter
205
- };
16
+ const staticAdapter = ssgAdapter;
17
+
18
+ export { ssgAdapter, staticAdapter };
@@ -35,7 +35,7 @@ export declare interface VercelEdgeAdapterOptions extends ServerAdapterOptions {
35
35
  */
36
36
  staticPaths?: string[];
37
37
  /**
38
- * Define the `target` property in the `ssr` object in the `vite.config.mts` file.
38
+ * Define the `target` property in the `ssr` object in the `vite.config.ts` file.
39
39
  *
40
40
  * Defaults to `webworker`.
41
41
  */
@@ -1,266 +1,81 @@
1
- import g from "node:fs";
2
- import { join as p, resolve as E, dirname as P, basename as q } from "node:path";
3
- import { getErrorHtml as O } from "@qwik.dev/router/middleware/request-handler";
4
- async function C(e, n, t, i, w) {
5
- t && !t.endsWith("/") && (t += "/");
6
- const m = /* @__PURE__ */ new Set([
7
- t + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
8
- t + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
9
- ]), s = new Set(i.map(_)), h = [], c = async (l, u, d) => {
10
- if (d = _(d), m.has(d))
11
- return;
12
- const y = p(l, u);
13
- if (u === "index.html" || u === "q-data.json") {
14
- !s.has(d) && w && await g.promises.unlink(y);
15
- return;
16
- }
17
- if (u === "404.html") {
18
- const o = await g.promises.readFile(y, "utf-8");
19
- h.push([d, o]);
20
- return;
21
- }
22
- const v = await g.promises.stat(y);
23
- v.isDirectory() ? await f(y, d + u + "/") : v.isFile() && s.add(d + u);
24
- }, f = async (l, u) => {
25
- const d = await g.promises.readdir(l);
26
- await Promise.all(d.map((y) => c(l, y, u)));
27
- };
28
- g.existsSync(e) && await f(e, t);
29
- const r = R(t, h), a = T(s);
30
- await I(a, r, n);
31
- }
32
- function _(e) {
33
- return e.endsWith("/") ? e : e + "/";
34
- }
35
- function R(e, n) {
36
- if (n.sort((t, i) => t[0].length > i[0].length ? -1 : t[0].length < i[0].length ? 1 : t[0] < i[0] ? -1 : t[0] > i[0] ? 1 : 0), !n.some((t) => t[0] === e)) {
37
- const t = O(404, "Resource Not Found");
38
- n.push([e, t]);
39
- }
40
- return JSON.stringify(n, null, 2).slice(1, -1);
41
- }
42
- function T(e) {
43
- return JSON.stringify(Array.from(new Set(e)).sort()).slice(1, -1);
44
- }
45
- const I = async (e, n, t) => {
46
- const i = /* @__PURE__ */ new Set(), w = async (s) => {
47
- const h = await g.promises.readFile(s, "utf-8");
48
- let c = !1;
49
- const f = h.replace(
50
- /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (r, a, l) => (c = !0, l === "STATIC_PATHS" ? e : n)
52
- );
53
- c && await g.promises.writeFile(s, f);
54
- }, m = async (s) => {
55
- const h = await g.promises.readdir(s, { withFileTypes: !0 });
56
- for (const c of h)
57
- if (c.isDirectory())
58
- await m(p(s, c.name));
59
- else if (c.name.endsWith("js")) {
60
- const f = w(p(s, c.name)).finally(() => {
61
- i.delete(f);
62
- });
63
- i.add(f);
64
- }
65
- };
66
- await m(t), await Promise.all(i);
67
- };
68
- function A(e) {
69
- let n = null, t = null, i = null, w = null, m = null, s = !1, h;
70
- const c = [];
71
- return {
72
- name: `vite-plugin-qwik-router-ssg-${e.name}`,
73
- enforce: "post",
74
- apply: "build",
75
- config(r) {
76
- return typeof e.config == "function" && (r = e.config(r)), r.define = {
77
- "process.env.NODE_ENV": JSON.stringify("production"),
78
- ...r.define
79
- }, r;
80
- },
81
- configResolved(r) {
82
- if (s = !!r.build.ssr, h = r.command, s) {
83
- if (n = r.plugins.find(
84
- (a) => a.name === "vite-plugin-qwik-router"
85
- ), !n)
86
- throw new Error("Missing vite-plugin-qwik-router");
87
- if (t = r.plugins.find(
88
- (a) => a.name === "vite-plugin-qwik"
89
- ), !t)
90
- throw new Error("Missing vite-plugin-qwik");
91
- if (i = r.build.outDir, r.build?.ssr !== !0)
92
- throw new Error(
93
- `"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`
94
- );
95
- if (!r.build?.rollupOptions?.input)
96
- throw new Error(
97
- `"build.rollupOptions.input" must be set in order to use the "${e.name}" adapter.`
98
- );
99
- }
100
- },
101
- buildStart() {
102
- if (s && e.ssg !== null) {
103
- const { srcDir: r } = t.api.getOptions();
104
- h === "build" && i && r && (this.emitFile({
105
- id: "@qwik-router-config",
106
- type: "chunk",
107
- fileName: "@qwik-router-config.js"
108
- }), this.emitFile({
109
- id: `${r}/entry.ssr`,
110
- type: "chunk",
111
- fileName: "entry.ssr.js"
112
- }));
113
- }
114
- },
115
- generateBundle(r, a) {
116
- if (s) {
117
- c.length = 0;
118
- for (const l in a) {
119
- const u = a[l];
120
- u.type === "chunk" && u.isEntry && (c.push(l), u.name === "entry.ssr" ? w = p(i, l) : u.name === "@qwik-router-config" && (m = p(i, l)));
121
- }
122
- }
123
- },
124
- closeBundle: {
125
- sequential: !0,
126
- async handler() {
127
- if (s && i && n?.api && t?.api) {
128
- const r = e.staticPaths || [], a = n.api.getRoutes(), l = n.api.getBasePathname(), u = t.api.getClientOutDir(), d = t.api.getClientPublicOutDir(), y = t.api.getAssetsDir(), v = t.api.getRootDir() ?? void 0;
129
- if (e.ssg !== null && w && m && u && d) {
130
- let o = e.ssg?.origin ?? e.origin;
131
- o || (o = "https://yoursite.qwik.dev"), o.length > 0 && !/:\/\//.test(o) && (o = `https://${o}`), o.startsWith("//") && (o = `https:${o}`);
132
- try {
133
- o = new URL(o).origin;
134
- } catch {
135
- this.warn(
136
- `Invalid "origin" option: "${o}". Using default origin: "https://yoursite.qwik.dev"`
137
- ), o = "https://yoursite.qwik.dev";
138
- }
139
- const b = await import("./index-CrwlB95_.js"), D = {
140
- maxWorkers: e.maxWorkers,
141
- basePathname: l,
142
- outDir: d,
143
- rootDir: v,
144
- ...e.ssg,
145
- origin: o,
146
- renderModulePath: w,
147
- qwikRouterConfigModulePath: m
148
- }, k = await b.generate(D);
149
- if (k.errors > 0) {
150
- const S = new Error(
151
- `Error while running SSG from "${e.name}" adapter. At least one path failed to render.`
152
- );
153
- S.stack = void 0, this.error(S);
154
- }
155
- r.push(...k.staticPaths);
156
- }
157
- await C(
158
- d,
159
- i,
160
- y ? p(l, y) : l,
161
- r,
162
- !!e.cleanStaticGenerated
163
- ), typeof e.generate == "function" && await e.generate({
164
- outputEntries: c,
165
- serverOutDir: i,
166
- clientOutDir: u,
167
- clientPublicOutDir: d,
168
- basePathname: l,
169
- routes: a,
170
- assetsDir: y,
171
- warn: (o) => this.warn(o),
172
- error: (o) => this.error(o)
173
- }), this.warn(
174
- `
175
- ==============================================
176
- Note: Make sure that you are serving the built files with proper cache headers.
177
- See https://qwik.dev/docs/deployments/#cache-headers for more information.
178
- ==============================================`
179
- ), e.ssg !== null && setTimeout(() => {
180
- console.warn(
181
- "SSG seems to be hanging after completion, forcing process to exit. Everything is likely fine."
182
- ), process.exit(0);
183
- }, 5e3).unref(), e.ssg !== null && setTimeout(() => {
184
- process.exit(0);
185
- }, 5e3).unref();
186
- }
187
- }
188
- }
189
- };
190
- }
191
- function F(e, n) {
192
- const t = E("/");
193
- let i = e;
194
- for (let w = 0; w < 20; w++) {
195
- if (i = P(i), q(i) === n)
196
- return i;
197
- if (i === t)
198
- break;
199
- }
200
- throw new Error(`Unable to find "${n}" directory from "${e}"`);
201
- }
202
- function U(e = {}) {
203
- return A({
1
+ import fs from 'node:fs';
2
+ import { join, dirname } from 'node:path';
3
+ import { viteAdapter, getParentDir } from '../../shared/vite/index.mjs';
4
+ import '../../../chunks/error-handler.mjs';
5
+
6
+ function vercelEdgeAdapter(opts = {}) {
7
+ return viteAdapter({
204
8
  name: "vercel-edge",
205
9
  origin: process?.env?.VERCEL_URL || "https://yoursitename.vercel.app",
206
- ssg: e.ssg,
207
- staticPaths: e.staticPaths,
208
- cleanStaticGenerated: !0,
209
- config(n) {
210
- const t = n.build?.outDir || p(".vercel", "output", "functions", "_qwik-router.func");
10
+ ssg: opts.ssg,
11
+ staticPaths: opts.staticPaths,
12
+ cleanStaticGenerated: true,
13
+ config(config) {
14
+ const outDir = config.build?.outDir || join(".vercel", "output", "functions", "_qwik-router.func");
211
15
  return {
212
16
  resolve: {
213
- conditions: e.target === "node" ? ["node", "import", "module", "browser", "default"] : ["edge-light", "webworker", "worker", "browser", "module", "main"]
17
+ conditions: opts.target === "node" ? ["node", "import", "module", "browser", "default"] : ["edge-light", "webworker", "worker", "browser", "module", "main"]
214
18
  },
215
19
  ssr: {
216
- target: e.target === "node" ? "node" : "webworker",
217
- noExternal: !0
20
+ target: opts.target === "node" ? "node" : "webworker",
21
+ noExternal: true
218
22
  },
219
23
  build: {
220
- ssr: !0,
221
- outDir: t,
24
+ ssr: true,
25
+ outDir,
222
26
  rollupOptions: {
223
27
  output: {
224
28
  format: "es",
225
- hoistTransitiveImports: !1
29
+ hoistTransitiveImports: false
226
30
  }
227
31
  }
228
32
  },
229
- publicDir: !1
33
+ publicDir: false
230
34
  };
231
35
  },
232
- async generate({ clientPublicOutDir: n, serverOutDir: t, basePathname: i, outputEntries: w }) {
233
- const m = F(t, "output");
234
- if (e.outputConfig !== !1) {
235
- const a = {
36
+ async generate({ clientPublicOutDir, serverOutDir, basePathname, outputEntries }) {
37
+ const vercelOutputDir = getParentDir(serverOutDir, "output");
38
+ if (opts.outputConfig !== false) {
39
+ const vercelOutputConfig = {
236
40
  routes: [
237
41
  { handle: "filesystem" },
238
42
  {
239
- src: i + ".*",
43
+ src: basePathname + ".*",
240
44
  dest: "/_qwik-router"
241
45
  }
242
46
  ],
243
47
  version: 3
244
48
  };
245
- await g.promises.writeFile(
246
- p(m, "config.json"),
247
- JSON.stringify(a, null, 2)
49
+ await fs.promises.writeFile(
50
+ join(vercelOutputDir, "config.json"),
51
+ JSON.stringify(vercelOutputConfig, null, 2)
248
52
  );
249
53
  }
250
- let s = e.vcConfigEntryPoint;
251
- s || (w.some((a) => a === "entry.vercel-edge.mjs") ? s = "entry.vercel-edge.mjs" : s = "entry.vercel-edge.js");
252
- const h = p(t, ".vc-config.json"), c = {
54
+ let entrypoint = opts.vcConfigEntryPoint;
55
+ if (!entrypoint) {
56
+ if (outputEntries.some((n) => n === "entry.vercel-edge.mjs")) {
57
+ entrypoint = "entry.vercel-edge.mjs";
58
+ } else {
59
+ entrypoint = "entry.vercel-edge.js";
60
+ }
61
+ }
62
+ const vcConfigPath = join(serverOutDir, ".vc-config.json");
63
+ const vcConfig = {
253
64
  runtime: "edge",
254
- entrypoint: s,
255
- envVarsInUse: e.vcConfigEnvVarsInUse
65
+ entrypoint,
66
+ envVarsInUse: opts.vcConfigEnvVarsInUse
256
67
  };
257
- await g.promises.writeFile(h, JSON.stringify(c, null, 2));
258
- let f = p(m, "static");
259
- const r = i.split("/").filter((a) => a.length > 0);
260
- r.length > 0 && (f = p(f, ...r)), await g.promises.rm(f, { recursive: !0, force: !0 }), await g.promises.mkdir(P(f), { recursive: !0 }), await g.promises.rename(n, f);
68
+ await fs.promises.writeFile(vcConfigPath, JSON.stringify(vcConfig, null, 2));
69
+ let vercelStaticDir = join(vercelOutputDir, "static");
70
+ const basePathnameParts = basePathname.split("/").filter((p) => p.length > 0);
71
+ if (basePathnameParts.length > 0) {
72
+ vercelStaticDir = join(vercelStaticDir, ...basePathnameParts);
73
+ }
74
+ await fs.promises.rm(vercelStaticDir, { recursive: true, force: true });
75
+ await fs.promises.mkdir(dirname(vercelStaticDir), { recursive: true });
76
+ await fs.promises.rename(clientPublicOutDir, vercelStaticDir);
261
77
  }
262
78
  });
263
79
  }
264
- export {
265
- U as vercelEdgeAdapter
266
- };
80
+
81
+ export { vercelEdgeAdapter };
@@ -0,0 +1,57 @@
1
+ function getErrorHtml(status, e) {
2
+ let message = "Server Error";
3
+ if (e != null) {
4
+ if (typeof e.message === "string") {
5
+ message = e.message;
6
+ } else {
7
+ message = String(e);
8
+ }
9
+ }
10
+ return `<html>` + minimalHtmlResponse(status, message) + `</html>`;
11
+ }
12
+ function minimalHtmlResponse(status, message) {
13
+ if (typeof status !== "number") {
14
+ status = 500;
15
+ }
16
+ if (typeof message === "string") {
17
+ message = escapeHtml(message);
18
+ } else {
19
+ message = "";
20
+ }
21
+ const width = typeof message === "string" ? "600px" : "300px";
22
+ const color = status >= 500 ? COLOR_500 : COLOR_400;
23
+ return `
24
+ <head>
25
+ <meta charset="utf-8">
26
+ <meta http-equiv="Status" content="${status}">
27
+ <title>${status} ${message}</title>
28
+ <meta name="viewport" content="width=device-width,initial-scale=1">
29
+ <style>
30
+ body { color: ${color}; background-color: #fafafa; padding: 30px; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Roboto, sans-serif; }
31
+ p { max-width: ${width}; margin: 60px auto 30px auto; background: white; border-radius: 4px; box-shadow: 0px 0px 50px -20px ${color}; overflow: hidden; }
32
+ strong { display: inline-block; padding: 15px; background: ${color}; color: white; }
33
+ span { display: inline-block; padding: 15px; }
34
+ </style>
35
+ </head>
36
+ <body><p><strong>${status}</strong> <span>${message}</span></p></body>
37
+ `;
38
+ }
39
+ const ESCAPE_HTML = /[&<>]/g;
40
+ const escapeHtml = (s) => {
41
+ return s.replace(ESCAPE_HTML, (c) => {
42
+ switch (c) {
43
+ case "&":
44
+ return "&amp;";
45
+ case "<":
46
+ return "&lt;";
47
+ case ">":
48
+ return "&gt;";
49
+ default:
50
+ return "";
51
+ }
52
+ });
53
+ };
54
+ const COLOR_400 = "#006ce9";
55
+ const COLOR_500 = "#713fc2";
56
+
57
+ export { getErrorHtml as g, minimalHtmlResponse as m };