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

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 (140) hide show
  1. package/lib/adapters/azure-swa/vite/index.cjs +61 -5
  2. package/lib/adapters/azure-swa/vite/index.mjs +26 -205
  3. package/lib/adapters/bun-server/vite/index.cjs +27 -5
  4. package/lib/adapters/bun-server/vite/index.mjs +14 -200
  5. package/lib/adapters/cloud-run/vite/index.cjs +24 -5
  6. package/lib/adapters/cloud-run/vite/index.mjs +13 -199
  7. package/lib/adapters/cloudflare-pages/vite/index.cjs +65 -1
  8. package/lib/adapters/cloudflare-pages/vite/index.mjs +63 -4
  9. package/lib/adapters/deno-server/vite/index.cjs +39 -5
  10. package/lib/adapters/deno-server/vite/index.mjs +16 -202
  11. package/lib/adapters/netlify-edge/vite/index.cjs +88 -6
  12. package/lib/adapters/netlify-edge/vite/index.mjs +56 -244
  13. package/lib/adapters/node-server/vite/index.cjs +27 -5
  14. package/lib/adapters/node-server/vite/index.mjs +14 -200
  15. package/lib/adapters/shared/vite/index.cjs +303 -2
  16. package/lib/adapters/shared/vite/index.d.ts +4 -4
  17. package/lib/adapters/shared/vite/index.mjs +248 -147
  18. package/lib/adapters/ssg/vite/index.cjs +19 -5
  19. package/lib/adapters/ssg/vite/index.mjs +11 -197
  20. package/lib/adapters/vercel-edge/vite/index.cjs +81 -5
  21. package/lib/adapters/vercel-edge/vite/index.d.ts +1 -1
  22. package/lib/adapters/vercel-edge/vite/index.mjs +48 -233
  23. package/lib/chunks/error-handler.cjs +58 -0
  24. package/lib/chunks/error-handler.mjs +59 -0
  25. package/lib/chunks/format-error.cjs +136 -0
  26. package/lib/chunks/format-error.mjs +137 -0
  27. package/lib/chunks/fs.cjs +274 -0
  28. package/lib/chunks/fs.mjs +275 -0
  29. package/lib/chunks/index.cjs +877 -0
  30. package/lib/chunks/index.mjs +876 -0
  31. package/lib/chunks/mime-types.cjs +52 -0
  32. package/lib/chunks/mime-types.mjs +53 -0
  33. package/lib/chunks/routing.qwik.cjs +452 -0
  34. package/lib/chunks/routing.qwik.mjs +453 -0
  35. package/lib/chunks/types.qwik.cjs +24 -0
  36. package/lib/chunks/types.qwik.mjs +25 -0
  37. package/lib/index.d.ts +9 -3
  38. package/lib/index.qwik.cjs +530 -994
  39. package/lib/index.qwik.mjs +499 -965
  40. package/lib/middleware/aws-lambda/index.cjs +52 -1
  41. package/lib/middleware/aws-lambda/index.mjs +37 -26
  42. package/lib/middleware/azure-swa/index.cjs +92 -1
  43. package/lib/middleware/azure-swa/index.mjs +64 -46
  44. package/lib/middleware/bun/index.cjs +143 -1
  45. package/lib/middleware/bun/index.mjs +103 -117
  46. package/lib/middleware/cloudflare-pages/index.cjs +96 -1
  47. package/lib/middleware/cloudflare-pages/index.mjs +68 -47
  48. package/lib/middleware/deno/index.cjs +130 -1
  49. package/lib/middleware/deno/index.mjs +93 -112
  50. package/lib/middleware/firebase/index.cjs +33 -1
  51. package/lib/middleware/firebase/index.mjs +25 -16
  52. package/lib/middleware/netlify-edge/index.cjs +71 -1
  53. package/lib/middleware/netlify-edge/index.mjs +52 -36
  54. package/lib/middleware/node/index.cjs +219 -1
  55. package/lib/middleware/node/index.mjs +178 -165
  56. package/lib/middleware/request-handler/index.cjs +1488 -18
  57. package/lib/middleware/request-handler/index.d.ts +20 -2
  58. package/lib/middleware/request-handler/index.mjs +1223 -882
  59. package/lib/middleware/vercel-edge/index.cjs +98 -1
  60. package/lib/middleware/vercel-edge/index.mjs +71 -47
  61. package/lib/service-worker/index.cjs +5 -0
  62. package/lib/service-worker/index.mjs +5 -0
  63. package/lib/ssg/index.cjs +15 -1
  64. package/lib/ssg/index.mjs +12 -19
  65. package/lib/vite/index.cjs +2006 -27
  66. package/lib/vite/index.d.ts +6 -6
  67. package/lib/vite/index.mjs +1592 -1223
  68. package/package.json +9 -8
  69. package/lib/adapters/azure-swa/vite/index-BqUeglYs.cjs +0 -1
  70. package/lib/adapters/azure-swa/vite/index-CBIchDYq.js +0 -651
  71. package/lib/adapters/azure-swa/vite/index-ClHGw5z1.js +0 -6
  72. package/lib/adapters/azure-swa/vite/index-CrwlB95_.js +0 -22
  73. package/lib/adapters/azure-swa/vite/index-DTIOTwZo.cjs +0 -11
  74. package/lib/adapters/azure-swa/vite/index-vQuPcef3.cjs +0 -1
  75. package/lib/adapters/bun-server/vite/index-BqUeglYs.cjs +0 -1
  76. package/lib/adapters/bun-server/vite/index-CBIchDYq.js +0 -651
  77. package/lib/adapters/bun-server/vite/index-ClHGw5z1.js +0 -6
  78. package/lib/adapters/bun-server/vite/index-CrwlB95_.js +0 -22
  79. package/lib/adapters/bun-server/vite/index-DTIOTwZo.cjs +0 -11
  80. package/lib/adapters/bun-server/vite/index-vQuPcef3.cjs +0 -1
  81. package/lib/adapters/cloud-run/vite/index-BqUeglYs.cjs +0 -1
  82. package/lib/adapters/cloud-run/vite/index-CBIchDYq.js +0 -651
  83. package/lib/adapters/cloud-run/vite/index-ClHGw5z1.js +0 -6
  84. package/lib/adapters/cloud-run/vite/index-CrwlB95_.js +0 -22
  85. package/lib/adapters/cloud-run/vite/index-DTIOTwZo.cjs +0 -11
  86. package/lib/adapters/cloud-run/vite/index-vQuPcef3.cjs +0 -1
  87. package/lib/adapters/cloudflare-pages/vite/index-Bg_9YkM5.js +0 -22
  88. package/lib/adapters/cloudflare-pages/vite/index-C1aDmh1S.cjs +0 -1
  89. package/lib/adapters/cloudflare-pages/vite/index-CHT9Y93A.js +0 -254
  90. package/lib/adapters/cloudflare-pages/vite/index-Ck7KvpK1.cjs +0 -11
  91. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +0 -6
  92. package/lib/adapters/cloudflare-pages/vite/index-Cp1cjAds.js +0 -645
  93. package/lib/adapters/cloudflare-pages/vite/index-D9RL9dvJ.cjs +0 -5
  94. package/lib/adapters/cloudflare-pages/vite/index-vQuPcef3.cjs +0 -1
  95. package/lib/adapters/deno-server/vite/index-BqUeglYs.cjs +0 -1
  96. package/lib/adapters/deno-server/vite/index-CBIchDYq.js +0 -651
  97. package/lib/adapters/deno-server/vite/index-ClHGw5z1.js +0 -6
  98. package/lib/adapters/deno-server/vite/index-CrwlB95_.js +0 -22
  99. package/lib/adapters/deno-server/vite/index-DTIOTwZo.cjs +0 -11
  100. package/lib/adapters/deno-server/vite/index-vQuPcef3.cjs +0 -1
  101. package/lib/adapters/netlify-edge/vite/index-BqUeglYs.cjs +0 -1
  102. package/lib/adapters/netlify-edge/vite/index-CBIchDYq.js +0 -651
  103. package/lib/adapters/netlify-edge/vite/index-ClHGw5z1.js +0 -6
  104. package/lib/adapters/netlify-edge/vite/index-CrwlB95_.js +0 -22
  105. package/lib/adapters/netlify-edge/vite/index-DTIOTwZo.cjs +0 -11
  106. package/lib/adapters/netlify-edge/vite/index-vQuPcef3.cjs +0 -1
  107. package/lib/adapters/node-server/vite/index-BqUeglYs.cjs +0 -1
  108. package/lib/adapters/node-server/vite/index-CBIchDYq.js +0 -651
  109. package/lib/adapters/node-server/vite/index-ClHGw5z1.js +0 -6
  110. package/lib/adapters/node-server/vite/index-CrwlB95_.js +0 -22
  111. package/lib/adapters/node-server/vite/index-DTIOTwZo.cjs +0 -11
  112. package/lib/adapters/node-server/vite/index-vQuPcef3.cjs +0 -1
  113. package/lib/adapters/shared/vite/index-BqUeglYs.cjs +0 -1
  114. package/lib/adapters/shared/vite/index-CBIchDYq.js +0 -651
  115. package/lib/adapters/shared/vite/index-ClHGw5z1.js +0 -6
  116. package/lib/adapters/shared/vite/index-CrwlB95_.js +0 -22
  117. package/lib/adapters/shared/vite/index-DTIOTwZo.cjs +0 -11
  118. package/lib/adapters/shared/vite/index-vQuPcef3.cjs +0 -1
  119. package/lib/adapters/ssg/vite/index-BqUeglYs.cjs +0 -1
  120. package/lib/adapters/ssg/vite/index-CBIchDYq.js +0 -651
  121. package/lib/adapters/ssg/vite/index-ClHGw5z1.js +0 -6
  122. package/lib/adapters/ssg/vite/index-CrwlB95_.js +0 -22
  123. package/lib/adapters/ssg/vite/index-DTIOTwZo.cjs +0 -11
  124. package/lib/adapters/ssg/vite/index-vQuPcef3.cjs +0 -1
  125. package/lib/adapters/vercel-edge/vite/index-BqUeglYs.cjs +0 -1
  126. package/lib/adapters/vercel-edge/vite/index-CBIchDYq.js +0 -651
  127. package/lib/adapters/vercel-edge/vite/index-ClHGw5z1.js +0 -6
  128. package/lib/adapters/vercel-edge/vite/index-CrwlB95_.js +0 -22
  129. package/lib/adapters/vercel-edge/vite/index-DTIOTwZo.cjs +0 -11
  130. package/lib/adapters/vercel-edge/vite/index-vQuPcef3.cjs +0 -1
  131. package/lib/service-worker.cjs +0 -1
  132. package/lib/service-worker.mjs +0 -5
  133. package/lib/ssg/deno.cjs +0 -1
  134. package/lib/ssg/deno.mjs +0 -6
  135. package/lib/ssg/index-CBIchDYq.js +0 -651
  136. package/lib/ssg/index-ClHGw5z1.js +0 -6
  137. package/lib/ssg/index-DTIOTwZo.cjs +0 -11
  138. package/lib/ssg/index-vQuPcef3.cjs +0 -1
  139. package/lib/ssg/node.cjs +0 -11
  140. package/lib/ssg/node.mjs +0 -651
@@ -1,205 +1,19 @@
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
+ function ssgAdapter(opts) {
6
+ return viteAdapter({
193
7
  name: "static-site-generation",
194
- origin: e.origin,
8
+ origin: opts.origin,
195
9
  ssg: {
196
10
  include: ["/*"],
197
- ...e
11
+ ...opts
198
12
  }
199
13
  });
200
14
  }
201
- const W = A;
15
+ const staticAdapter = ssgAdapter;
202
16
  export {
203
- A as ssgAdapter,
204
- W as staticAdapter
17
+ ssgAdapter,
18
+ staticAdapter
205
19
  };
@@ -1,5 +1,81 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("node:fs"),d=require("node:path"),q=require("@qwik.dev/router/middleware/request-handler");async function j(e,n,t,i,h){t&&!t.endsWith("/")&&(t+="/");const m=new Set([t+"/"+(globalThis.__QWIK_BUILD_DIR__||"build")+"/",t+"/"+(globalThis.__QWIK_ASSETS_DIR__||"assets")+"/"]),s=new Set(i.map(_)),p=[],c=async(l,u,g)=>{if(g=_(g),m.has(g))return;const y=d.join(l,u);if(u==="index.html"||u==="q-data.json"){!s.has(g)&&h&&await w.promises.unlink(y);return}if(u==="404.html"){const o=await w.promises.readFile(y,"utf-8");p.push([g,o]);return}const v=await w.promises.stat(y);v.isDirectory()?await f(y,g+u+"/"):v.isFile()&&s.add(g+u)},f=async(l,u)=>{const g=await w.promises.readdir(l);await Promise.all(g.map(y=>c(l,y,u)))};w.existsSync(e)&&await f(e,t);const r=D(t,p),a=E(s);await O(a,r,n)}function _(e){return e.endsWith("/")?e:e+"/"}function D(e,n){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)){const t=q.getErrorHtml(404,"Resource Not Found");n.push([e,t])}return JSON.stringify(n,null,2).slice(1,-1)}function E(e){return JSON.stringify(Array.from(new Set(e)).sort()).slice(1,-1)}const O=async(e,n,t)=>{const i=new Set,h=async s=>{const p=await w.promises.readFile(s,"utf-8");let c=!1;const f=p.replace(/(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,(r,a,l)=>(c=!0,l==="STATIC_PATHS"?e:n));c&&await w.promises.writeFile(s,f)},m=async s=>{const p=await w.promises.readdir(s,{withFileTypes:!0});for(const c of p)if(c.isDirectory())await m(d.join(s,c.name));else if(c.name.endsWith("js")){const f=h(d.join(s,c.name)).finally(()=>{i.delete(f)});i.add(f)}};await m(t),await Promise.all(i)};function C(e){let n=null,t=null,i=null,h=null,m=null,s=!1,p;const c=[];return{name:`vite-plugin-qwik-router-ssg-${e.name}`,enforce:"post",apply:"build",config(r){return typeof e.config=="function"&&(r=e.config(r)),r.define={"process.env.NODE_ENV":JSON.stringify("production"),...r.define},r},configResolved(r){if(s=!!r.build.ssr,p=r.command,s){if(n=r.plugins.find(a=>a.name==="vite-plugin-qwik-router"),!n)throw new Error("Missing vite-plugin-qwik-router");if(t=r.plugins.find(a=>a.name==="vite-plugin-qwik"),!t)throw new Error("Missing vite-plugin-qwik");if(i=r.build.outDir,r.build?.ssr!==!0)throw new Error(`"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`);if(!r.build?.rollupOptions?.input)throw new Error(`"build.rollupOptions.input" must be set in order to use the "${e.name}" adapter.`)}},buildStart(){if(s&&e.ssg!==null){const{srcDir:r}=t.api.getOptions();p==="build"&&i&&r&&(this.emitFile({id:"@qwik-router-config",type:"chunk",fileName:"@qwik-router-config.js"}),this.emitFile({id:`${r}/entry.ssr`,type:"chunk",fileName:"entry.ssr.js"}))}},generateBundle(r,a){if(s){c.length=0;for(const l in a){const u=a[l];u.type==="chunk"&&u.isEntry&&(c.push(l),u.name==="entry.ssr"?h=d.join(i,l):u.name==="@qwik-router-config"&&(m=d.join(i,l)))}}},closeBundle:{sequential:!0,async handler(){if(s&&i&&n?.api&&t?.api){const r=e.staticPaths||[],a=n.api.getRoutes(),l=n.api.getBasePathname(),u=t.api.getClientOutDir(),g=t.api.getClientPublicOutDir(),y=t.api.getAssetsDir(),v=t.api.getRootDir()??void 0;if(e.ssg!==null&&h&&m&&u&&g){let o=e.ssg?.origin??e.origin;o||(o="https://yoursite.qwik.dev"),o.length>0&&!/:\/\//.test(o)&&(o=`https://${o}`),o.startsWith("//")&&(o=`https:${o}`);try{o=new URL(o).origin}catch{this.warn(`Invalid "origin" option: "${o}". Using default origin: "https://yoursite.qwik.dev"`),o="https://yoursite.qwik.dev"}const P=await Promise.resolve().then(()=>require("./index-BqUeglYs.cjs")),b={maxWorkers:e.maxWorkers,basePathname:l,outDir:g,rootDir:v,...e.ssg,origin:o,renderModulePath:h,qwikRouterConfigModulePath:m},k=await P.generate(b);if(k.errors>0){const S=new Error(`Error while running SSG from "${e.name}" adapter. At least one path failed to render.`);S.stack=void 0,this.error(S)}r.push(...k.staticPaths)}await j(g,i,y?d.join(l,y):l,r,!!e.cleanStaticGenerated),typeof e.generate=="function"&&await e.generate({outputEntries:c,serverOutDir:i,clientOutDir:u,clientPublicOutDir:g,basePathname:l,routes:a,assetsDir:y,warn:o=>this.warn(o),error:o=>this.error(o)}),this.warn(`
2
- ==============================================
3
- Note: Make sure that you are serving the built files with proper cache headers.
4
- See https://qwik.dev/docs/deployments/#cache-headers for more information.
5
- ==============================================`),e.ssg!==null&&setTimeout(()=>{console.warn("SSG seems to be hanging after completion, forcing process to exit. Everything is likely fine."),process.exit(0)},5e3).unref(),e.ssg!==null&&setTimeout(()=>{process.exit(0)},5e3).unref()}}}}}function R(e,n){const t=d.resolve("/");let i=e;for(let h=0;h<20;h++){if(i=d.dirname(i),d.basename(i)===n)return i;if(i===t)break}throw new Error(`Unable to find "${n}" directory from "${e}"`)}function T(e={}){return C({name:"vercel-edge",origin:process?.env?.VERCEL_URL||"https://yoursitename.vercel.app",ssg:e.ssg,staticPaths:e.staticPaths,cleanStaticGenerated:!0,config(n){const t=n.build?.outDir||d.join(".vercel","output","functions","_qwik-router.func");return{resolve:{conditions:e.target==="node"?["node","import","module","browser","default"]:["edge-light","webworker","worker","browser","module","main"]},ssr:{target:e.target==="node"?"node":"webworker",noExternal:!0},build:{ssr:!0,outDir:t,rollupOptions:{output:{format:"es",hoistTransitiveImports:!1}}},publicDir:!1}},async generate({clientPublicOutDir:n,serverOutDir:t,basePathname:i,outputEntries:h}){const m=R(t,"output");if(e.outputConfig!==!1){const a={routes:[{handle:"filesystem"},{src:i+".*",dest:"/_qwik-router"}],version:3};await w.promises.writeFile(d.join(m,"config.json"),JSON.stringify(a,null,2))}let s=e.vcConfigEntryPoint;s||(h.some(a=>a==="entry.vercel-edge.mjs")?s="entry.vercel-edge.mjs":s="entry.vercel-edge.js");const p=d.join(t,".vc-config.json"),c={runtime:"edge",entrypoint:s,envVarsInUse:e.vcConfigEnvVarsInUse};await w.promises.writeFile(p,JSON.stringify(c,null,2));let f=d.join(m,"static");const r=i.split("/").filter(a=>a.length>0);r.length>0&&(f=d.join(f,...r)),await w.promises.rm(f,{recursive:!0,force:!0}),await w.promises.mkdir(d.dirname(f),{recursive:!0}),await w.promises.rename(n,f)}})}exports.vercelEdgeAdapter=T;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const fs = require("node:fs");
4
+ const path = require("node:path");
5
+ const adapters_shared_vite = require("../../shared/vite/index.cjs");
6
+ require("../../../chunks/error-handler.cjs");
7
+ function vercelEdgeAdapter(opts = {}) {
8
+ return adapters_shared_vite.viteAdapter({
9
+ name: "vercel-edge",
10
+ origin: process?.env?.VERCEL_URL || "https://yoursitename.vercel.app",
11
+ ssg: opts.ssg,
12
+ staticPaths: opts.staticPaths,
13
+ cleanStaticGenerated: true,
14
+ config(config) {
15
+ const outDir = config.build?.outDir || path.join(".vercel", "output", "functions", "_qwik-router.func");
16
+ return {
17
+ resolve: {
18
+ conditions: opts.target === "node" ? ["node", "import", "module", "browser", "default"] : ["edge-light", "webworker", "worker", "browser", "module", "main"]
19
+ },
20
+ ssr: {
21
+ target: opts.target === "node" ? "node" : "webworker",
22
+ noExternal: true
23
+ },
24
+ build: {
25
+ ssr: true,
26
+ outDir,
27
+ rollupOptions: {
28
+ output: {
29
+ format: "es",
30
+ hoistTransitiveImports: false
31
+ }
32
+ }
33
+ },
34
+ publicDir: false
35
+ };
36
+ },
37
+ async generate({ clientPublicOutDir, serverOutDir, basePathname, outputEntries }) {
38
+ const vercelOutputDir = adapters_shared_vite.getParentDir(serverOutDir, "output");
39
+ if (opts.outputConfig !== false) {
40
+ const vercelOutputConfig = {
41
+ routes: [
42
+ { handle: "filesystem" },
43
+ {
44
+ src: basePathname + ".*",
45
+ dest: "/_qwik-router"
46
+ }
47
+ ],
48
+ version: 3
49
+ };
50
+ await fs.promises.writeFile(
51
+ path.join(vercelOutputDir, "config.json"),
52
+ JSON.stringify(vercelOutputConfig, null, 2)
53
+ );
54
+ }
55
+ let entrypoint = opts.vcConfigEntryPoint;
56
+ if (!entrypoint) {
57
+ if (outputEntries.some((n) => n === "entry.vercel-edge.mjs")) {
58
+ entrypoint = "entry.vercel-edge.mjs";
59
+ } else {
60
+ entrypoint = "entry.vercel-edge.js";
61
+ }
62
+ }
63
+ const vcConfigPath = path.join(serverOutDir, ".vc-config.json");
64
+ const vcConfig = {
65
+ runtime: "edge",
66
+ entrypoint,
67
+ envVarsInUse: opts.vcConfigEnvVarsInUse
68
+ };
69
+ await fs.promises.writeFile(vcConfigPath, JSON.stringify(vcConfig, null, 2));
70
+ let vercelStaticDir = path.join(vercelOutputDir, "static");
71
+ const basePathnameParts = basePathname.split("/").filter((p) => p.length > 0);
72
+ if (basePathnameParts.length > 0) {
73
+ vercelStaticDir = path.join(vercelStaticDir, ...basePathnameParts);
74
+ }
75
+ await fs.promises.rm(vercelStaticDir, { recursive: true, force: true });
76
+ await fs.promises.mkdir(path.dirname(vercelStaticDir), { recursive: true });
77
+ await fs.promises.rename(clientPublicOutDir, vercelStaticDir);
78
+ }
79
+ });
80
+ }
81
+ exports.vercelEdgeAdapter = vercelEdgeAdapter;
@@ -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
+ function vercelEdgeAdapter(opts = {}) {
6
+ return viteAdapter({
204
7
  name: "vercel-edge",
205
8
  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");
9
+ ssg: opts.ssg,
10
+ staticPaths: opts.staticPaths,
11
+ cleanStaticGenerated: true,
12
+ config(config) {
13
+ const outDir = config.build?.outDir || join(".vercel", "output", "functions", "_qwik-router.func");
211
14
  return {
212
15
  resolve: {
213
- conditions: e.target === "node" ? ["node", "import", "module", "browser", "default"] : ["edge-light", "webworker", "worker", "browser", "module", "main"]
16
+ conditions: opts.target === "node" ? ["node", "import", "module", "browser", "default"] : ["edge-light", "webworker", "worker", "browser", "module", "main"]
214
17
  },
215
18
  ssr: {
216
- target: e.target === "node" ? "node" : "webworker",
217
- noExternal: !0
19
+ target: opts.target === "node" ? "node" : "webworker",
20
+ noExternal: true
218
21
  },
219
22
  build: {
220
- ssr: !0,
221
- outDir: t,
23
+ ssr: true,
24
+ outDir,
222
25
  rollupOptions: {
223
26
  output: {
224
27
  format: "es",
225
- hoistTransitiveImports: !1
28
+ hoistTransitiveImports: false
226
29
  }
227
30
  }
228
31
  },
229
- publicDir: !1
32
+ publicDir: false
230
33
  };
231
34
  },
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 = {
35
+ async generate({ clientPublicOutDir, serverOutDir, basePathname, outputEntries }) {
36
+ const vercelOutputDir = getParentDir(serverOutDir, "output");
37
+ if (opts.outputConfig !== false) {
38
+ const vercelOutputConfig = {
236
39
  routes: [
237
40
  { handle: "filesystem" },
238
41
  {
239
- src: i + ".*",
42
+ src: basePathname + ".*",
240
43
  dest: "/_qwik-router"
241
44
  }
242
45
  ],
243
46
  version: 3
244
47
  };
245
- await g.promises.writeFile(
246
- p(m, "config.json"),
247
- JSON.stringify(a, null, 2)
48
+ await fs.promises.writeFile(
49
+ join(vercelOutputDir, "config.json"),
50
+ JSON.stringify(vercelOutputConfig, null, 2)
248
51
  );
249
52
  }
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 = {
53
+ let entrypoint = opts.vcConfigEntryPoint;
54
+ if (!entrypoint) {
55
+ if (outputEntries.some((n) => n === "entry.vercel-edge.mjs")) {
56
+ entrypoint = "entry.vercel-edge.mjs";
57
+ } else {
58
+ entrypoint = "entry.vercel-edge.js";
59
+ }
60
+ }
61
+ const vcConfigPath = join(serverOutDir, ".vc-config.json");
62
+ const vcConfig = {
253
63
  runtime: "edge",
254
- entrypoint: s,
255
- envVarsInUse: e.vcConfigEnvVarsInUse
64
+ entrypoint,
65
+ envVarsInUse: opts.vcConfigEnvVarsInUse
256
66
  };
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);
67
+ await fs.promises.writeFile(vcConfigPath, JSON.stringify(vcConfig, null, 2));
68
+ let vercelStaticDir = join(vercelOutputDir, "static");
69
+ const basePathnameParts = basePathname.split("/").filter((p) => p.length > 0);
70
+ if (basePathnameParts.length > 0) {
71
+ vercelStaticDir = join(vercelStaticDir, ...basePathnameParts);
72
+ }
73
+ await fs.promises.rm(vercelStaticDir, { recursive: true, force: true });
74
+ await fs.promises.mkdir(dirname(vercelStaticDir), { recursive: true });
75
+ await fs.promises.rename(clientPublicOutDir, vercelStaticDir);
261
76
  }
262
77
  });
263
78
  }
264
79
  export {
265
- U as vercelEdgeAdapter
80
+ vercelEdgeAdapter
266
81
  };