@qwik.dev/router 2.0.0-beta.10 → 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 -201
  3. package/lib/adapters/bun-server/vite/index.cjs +27 -5
  4. package/lib/adapters/bun-server/vite/index.mjs +14 -196
  5. package/lib/adapters/cloud-run/vite/index.cjs +24 -5
  6. package/lib/adapters/cloud-run/vite/index.mjs +13 -195
  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 -198
  11. package/lib/adapters/netlify-edge/vite/index.cjs +88 -6
  12. package/lib/adapters/netlify-edge/vite/index.mjs +56 -240
  13. package/lib/adapters/node-server/vite/index.cjs +27 -5
  14. package/lib/adapters/node-server/vite/index.mjs +14 -196
  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 -143
  18. package/lib/adapters/ssg/vite/index.cjs +19 -5
  19. package/lib/adapters/ssg/vite/index.mjs +11 -193
  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 -229
  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 +543 -1001
  39. package/lib/index.qwik.mjs +512 -972
  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 +1225 -873
  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 +9 -9
  67. package/lib/vite/index.mjs +1597 -1216
  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-BIeHg2Cj.cjs +0 -5
  88. package/lib/adapters/cloudflare-pages/vite/index-C455V8_A.cjs +0 -1
  89. package/lib/adapters/cloudflare-pages/vite/index-ClHGw5z1.js +0 -6
  90. package/lib/adapters/cloudflare-pages/vite/index-D3HITboM.js +0 -645
  91. package/lib/adapters/cloudflare-pages/vite/index-DKcVHRBy.cjs +0 -11
  92. package/lib/adapters/cloudflare-pages/vite/index-DwovcBp3.js +0 -22
  93. package/lib/adapters/cloudflare-pages/vite/index-bogwy7wh.js +0 -250
  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,201 +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 v(t, o, e, n, m) {
5
- e && !e.endsWith("/") && (e += "/");
6
- const w = /* @__PURE__ */ new Set([
7
- e + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
8
- e + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
9
- ]), s = new Set(n.map(P)), f = [], g = async (a, l, u) => {
10
- if (u = P(u), w.has(u))
11
- return;
12
- const h = y(a, l);
13
- if (l === "index.html" || l === "q-data.json") {
14
- !s.has(u) && m && await p.promises.unlink(h);
15
- return;
16
- }
17
- if (l === "404.html") {
18
- const _ = await p.promises.readFile(h, "utf-8");
19
- f.push([u, _]);
20
- return;
21
- }
22
- const r = await p.promises.stat(h);
23
- r.isDirectory() ? await i(h, u + l + "/") : r.isFile() && s.add(u + l);
24
- }, i = async (a, l) => {
25
- const u = await p.promises.readdir(a);
26
- await Promise.all(u.map((h) => g(a, h, l)));
27
- };
28
- p.existsSync(t) && await i(t, e);
29
- const d = O(e, f), c = R(s);
30
- await T(c, d, o);
31
- }
32
- function P(t) {
33
- return t.endsWith("/") ? t : t + "/";
34
- }
35
- function O(t, o) {
36
- if (o.sort((e, n) => e[0].length > n[0].length ? -1 : e[0].length < n[0].length ? 1 : e[0] < n[0] ? -1 : e[0] > n[0] ? 1 : 0), !o.some((e) => e[0] === t)) {
37
- const e = D(404, "Resource Not Found");
38
- o.push([t, e]);
39
- }
40
- return JSON.stringify(o, null, 2).slice(1, -1);
41
- }
42
- function R(t) {
43
- return JSON.stringify(Array.from(new Set(t)).sort()).slice(1, -1);
44
- }
45
- const T = async (t, o, e) => {
46
- const n = /* @__PURE__ */ new Set(), m = async (s) => {
47
- const f = await p.promises.readFile(s, "utf-8");
48
- let g = !1;
49
- const i = f.replace(
50
- /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (d, c, a) => (g = !0, a === "STATIC_PATHS" ? t : o)
52
- );
53
- g && await p.promises.writeFile(s, i);
54
- }, w = async (s) => {
55
- const f = await p.promises.readdir(s, { withFileTypes: !0 });
56
- for (const g of f)
57
- if (g.isDirectory())
58
- await w(y(s, g.name));
59
- else if (g.name.endsWith("js")) {
60
- const i = m(y(s, g.name)).finally(() => {
61
- n.delete(i);
62
- });
63
- n.add(i);
64
- }
65
- };
66
- await w(e), await Promise.all(n);
67
- };
68
- function A(t) {
69
- let o = null, e = null, n = null, m = null, w = null, s = !1;
70
- const f = [];
71
- return {
72
- name: `vite-plugin-qwik-router-ssg-${t.name}`,
73
- enforce: "post",
74
- apply: "build",
75
- config(i) {
76
- return typeof t.config == "function" && (i = t.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, s) {
83
- if (o = i.plugins.find(
84
- (d) => d.name === "vite-plugin-qwik-router"
85
- ), !o)
86
- throw new Error("Missing vite-plugin-qwik-router");
87
- if (e = i.plugins.find(
88
- (d) => d.name === "vite-plugin-qwik"
89
- ), !e)
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 "${t.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 "${t.name}" adapter.`
98
- );
99
- }
100
- },
101
- buildStart() {
102
- if (s && t.ssg !== null) {
103
- const { srcDir: i } = e.api.getOptions();
104
- 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
- f.length = 0;
118
- for (const c in d) {
119
- const a = d[c];
120
- a.type === "chunk" && a.isEntry && (f.push(c), a.name === "entry.ssr" ? m = y(n, c) : a.name === "@qwik-router-config" && (w = y(n, c)));
121
- }
122
- }
123
- },
124
- closeBundle: {
125
- sequential: !0,
126
- async handler() {
127
- if (s && n && o?.api && e?.api) {
128
- const i = t.staticPaths || [], d = o.api.getRoutes(), c = o.api.getBasePathname(), a = e.api.getClientOutDir(), l = e.api.getClientPublicOutDir(), u = e.api.getAssetsDir(), h = e.api.getRootDir() ?? void 0;
129
- if (t.ssg !== null && m && w && a && l) {
130
- let r = t.ssg?.origin ?? t.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 _ = await import("./index-CrwlB95_.js"), q = {
140
- maxWorkers: t.maxWorkers,
141
- basePathname: c,
142
- outDir: l,
143
- rootDir: h,
144
- ...t.ssg,
145
- origin: r,
146
- renderModulePath: m,
147
- qwikRouterConfigModulePath: w
148
- }, k = await _.generate(q);
149
- if (k.errors > 0) {
150
- const S = new Error(
151
- `Error while running SSG from "${t.name}" adapter. At least one path failed to render.`
152
- );
153
- S.stack = void 0, this.error(S);
154
- }
155
- i.push(...k.staticPaths);
156
- }
157
- await v(
158
- l,
159
- n,
160
- u ? y(c, u) : c,
161
- i,
162
- !!t.cleanStaticGenerated
163
- ), typeof t.generate == "function" && await t.generate({
164
- outputEntries: f,
165
- serverOutDir: n,
166
- clientOutDir: a,
167
- clientPublicOutDir: l,
168
- basePathname: c,
169
- routes: d,
170
- assetsDir: u,
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
- ), t.ssg !== null && setTimeout(() => {
180
- process.exit(0);
181
- }, 5e3).unref();
182
- }
183
- }
184
- }
185
- };
186
- }
187
- function E(t) {
188
- return A({
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({
189
7
  name: "static-site-generation",
190
- origin: t.origin,
8
+ origin: opts.origin,
191
9
  ssg: {
192
10
  include: ["/*"],
193
- ...t
11
+ ...opts
194
12
  }
195
13
  });
196
14
  }
197
- const I = E;
15
+ const staticAdapter = ssgAdapter;
198
16
  export {
199
- E as ssgAdapter,
200
- I as staticAdapter
17
+ ssgAdapter,
18
+ staticAdapter
201
19
  };
@@ -1,5 +1,81 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("node:fs"),l=require("node:path"),q=require("@qwik.dev/router/middleware/request-handler");async function b(e,n,t,r,w){t&&!t.endsWith("/")&&(t+="/");const m=new Set([t+"/"+(globalThis.__QWIK_BUILD_DIR__||"build")+"/",t+"/"+(globalThis.__QWIK_ASSETS_DIR__||"assets")+"/"]),s=new Set(r.map(_)),h=[],p=async(c,d,f)=>{if(f=_(f),m.has(f))return;const y=l.join(c,d);if(d==="index.html"||d==="q-data.json"){!s.has(f)&&w&&await g.promises.unlink(y);return}if(d==="404.html"){const v=await g.promises.readFile(y,"utf-8");h.push([f,v]);return}const o=await g.promises.stat(y);o.isDirectory()?await i(y,f+d+"/"):o.isFile()&&s.add(f+d)},i=async(c,d)=>{const f=await g.promises.readdir(c);await Promise.all(f.map(y=>p(c,y,d)))};g.existsSync(e)&&await i(e,t);const u=j(t,h),a=D(s);await E(a,u,n)}function _(e){return e.endsWith("/")?e:e+"/"}function j(e,n){if(n.sort((t,r)=>t[0].length>r[0].length?-1:t[0].length<r[0].length?1:t[0]<r[0]?-1:t[0]>r[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 D(e){return JSON.stringify(Array.from(new Set(e)).sort()).slice(1,-1)}const E=async(e,n,t)=>{const r=new Set,w=async s=>{const h=await g.promises.readFile(s,"utf-8");let p=!1;const i=h.replace(/(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,(u,a,c)=>(p=!0,c==="STATIC_PATHS"?e:n));p&&await g.promises.writeFile(s,i)},m=async s=>{const h=await g.promises.readdir(s,{withFileTypes:!0});for(const p of h)if(p.isDirectory())await m(l.join(s,p.name));else if(p.name.endsWith("js")){const i=w(l.join(s,p.name)).finally(()=>{r.delete(i)});r.add(i)}};await m(t),await Promise.all(r)};function O(e){let n=null,t=null,r=null,w=null,m=null,s=!1;const h=[];return{name:`vite-plugin-qwik-router-ssg-${e.name}`,enforce:"post",apply:"build",config(i){return typeof e.config=="function"&&(i=e.config(i)),i.define={"process.env.NODE_ENV":JSON.stringify("production"),...i.define},i},configResolved(i){if(s=!!i.build.ssr,s){if(n=i.plugins.find(u=>u.name==="vite-plugin-qwik-router"),!n)throw new Error("Missing vite-plugin-qwik-router");if(t=i.plugins.find(u=>u.name==="vite-plugin-qwik"),!t)throw new Error("Missing vite-plugin-qwik");if(r=i.build.outDir,i.build?.ssr!==!0)throw new Error(`"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`);if(!i.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:i}=t.api.getOptions();this.emitFile({id:"@qwik-router-config",type:"chunk",fileName:"@qwik-router-config.js"}),this.emitFile({id:`${i}/entry.ssr`,type:"chunk",fileName:"entry.ssr.js"})}},generateBundle(i,u){if(s){h.length=0;for(const a in u){const c=u[a];c.type==="chunk"&&c.isEntry&&(h.push(a),c.name==="entry.ssr"?w=l.join(r,a):c.name==="@qwik-router-config"&&(m=l.join(r,a)))}}},closeBundle:{sequential:!0,async handler(){if(s&&r&&n?.api&&t?.api){const i=e.staticPaths||[],u=n.api.getRoutes(),a=n.api.getBasePathname(),c=t.api.getClientOutDir(),d=t.api.getClientPublicOutDir(),f=t.api.getAssetsDir(),y=t.api.getRootDir()??void 0;if(e.ssg!==null&&w&&m&&c&&d){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 v=await Promise.resolve().then(()=>require("./index-BqUeglYs.cjs")),P={maxWorkers:e.maxWorkers,basePathname:a,outDir:d,rootDir:y,...e.ssg,origin:o,renderModulePath:w,qwikRouterConfigModulePath:m},k=await v.generate(P);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)}i.push(...k.staticPaths)}await b(d,r,f?l.join(a,f):a,i,!!e.cleanStaticGenerated),typeof e.generate=="function"&&await e.generate({outputEntries:h,serverOutDir:r,clientOutDir:c,clientPublicOutDir:d,basePathname:a,routes:u,assetsDir:f,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(()=>{process.exit(0)},5e3).unref()}}}}}function C(e,n){const t=l.resolve("/");let r=e;for(let w=0;w<20;w++){if(r=l.dirname(r),l.basename(r)===n)return r;if(r===t)break}throw new Error(`Unable to find "${n}" directory from "${e}"`)}function R(e={}){return O({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||l.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:r,outputEntries:w}){const m=C(t,"output");if(e.outputConfig!==!1){const a={routes:[{handle:"filesystem"},{src:r+".*",dest:"/_qwik-router"}],version:3};await g.promises.writeFile(l.join(m,"config.json"),JSON.stringify(a,null,2))}let s=e.vcConfigEntryPoint;s||(w.some(a=>a==="entry.vercel-edge.mjs")?s="entry.vercel-edge.mjs":s="entry.vercel-edge.js");const h=l.join(t,".vc-config.json"),p={runtime:"edge",entrypoint:s,envVarsInUse:e.vcConfigEnvVarsInUse};await g.promises.writeFile(h,JSON.stringify(p,null,2));let i=l.join(m,"static");const u=r.split("/").filter(a=>a.length>0);u.length>0&&(i=l.join(i,...u)),await g.promises.rm(i,{recursive:!0,force:!0}),await g.promises.mkdir(l.dirname(i),{recursive:!0}),await g.promises.rename(n,i)}})}exports.vercelEdgeAdapter=R;
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,262 +1,81 @@
1
- import d from "node:fs";
2
- import { join as m, resolve as D, dirname as P, basename as q } from "node:path";
3
- import { getErrorHtml as E } from "@qwik.dev/router/middleware/request-handler";
4
- async function O(e, n, t, r, g) {
5
- t && !t.endsWith("/") && (t += "/");
6
- const p = /* @__PURE__ */ new Set([
7
- t + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
8
- t + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
9
- ]), s = new Set(r.map(S)), w = [], h = async (u, c, f) => {
10
- if (f = S(f), p.has(f))
11
- return;
12
- const y = m(u, c);
13
- if (c === "index.html" || c === "q-data.json") {
14
- !s.has(f) && g && await d.promises.unlink(y);
15
- return;
16
- }
17
- if (c === "404.html") {
18
- const v = await d.promises.readFile(y, "utf-8");
19
- w.push([f, v]);
20
- return;
21
- }
22
- const o = await d.promises.stat(y);
23
- o.isDirectory() ? await i(y, f + c + "/") : o.isFile() && s.add(f + c);
24
- }, i = async (u, c) => {
25
- const f = await d.promises.readdir(u);
26
- await Promise.all(f.map((y) => h(u, y, c)));
27
- };
28
- d.existsSync(e) && await i(e, t);
29
- const l = C(t, w), a = R(s);
30
- await T(a, l, n);
31
- }
32
- function S(e) {
33
- return e.endsWith("/") ? e : e + "/";
34
- }
35
- function C(e, n) {
36
- if (n.sort((t, r) => t[0].length > r[0].length ? -1 : t[0].length < r[0].length ? 1 : t[0] < r[0] ? -1 : t[0] > r[0] ? 1 : 0), !n.some((t) => t[0] === e)) {
37
- const t = E(404, "Resource Not Found");
38
- n.push([e, t]);
39
- }
40
- return JSON.stringify(n, null, 2).slice(1, -1);
41
- }
42
- function R(e) {
43
- return JSON.stringify(Array.from(new Set(e)).sort()).slice(1, -1);
44
- }
45
- const T = async (e, n, t) => {
46
- const r = /* @__PURE__ */ new Set(), g = async (s) => {
47
- const w = await d.promises.readFile(s, "utf-8");
48
- let h = !1;
49
- const i = w.replace(
50
- /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (l, a, u) => (h = !0, u === "STATIC_PATHS" ? e : n)
52
- );
53
- h && await d.promises.writeFile(s, i);
54
- }, p = async (s) => {
55
- const w = await d.promises.readdir(s, { withFileTypes: !0 });
56
- for (const h of w)
57
- if (h.isDirectory())
58
- await p(m(s, h.name));
59
- else if (h.name.endsWith("js")) {
60
- const i = g(m(s, h.name)).finally(() => {
61
- r.delete(i);
62
- });
63
- r.add(i);
64
- }
65
- };
66
- await p(t), await Promise.all(r);
67
- };
68
- function I(e) {
69
- let n = null, t = null, r = null, g = null, p = null, s = !1;
70
- const w = [];
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, s) {
83
- if (n = i.plugins.find(
84
- (l) => l.name === "vite-plugin-qwik-router"
85
- ), !n)
86
- throw new Error("Missing vite-plugin-qwik-router");
87
- if (t = i.plugins.find(
88
- (l) => l.name === "vite-plugin-qwik"
89
- ), !t)
90
- throw new Error("Missing vite-plugin-qwik");
91
- if (r = 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
- 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, l) {
116
- if (s) {
117
- w.length = 0;
118
- for (const a in l) {
119
- const u = l[a];
120
- u.type === "chunk" && u.isEntry && (w.push(a), u.name === "entry.ssr" ? g = m(r, a) : u.name === "@qwik-router-config" && (p = m(r, a)));
121
- }
122
- }
123
- },
124
- closeBundle: {
125
- sequential: !0,
126
- async handler() {
127
- if (s && r && n?.api && t?.api) {
128
- const i = e.staticPaths || [], l = n.api.getRoutes(), a = n.api.getBasePathname(), u = t.api.getClientOutDir(), c = t.api.getClientPublicOutDir(), f = t.api.getAssetsDir(), y = t.api.getRootDir() ?? void 0;
129
- if (e.ssg !== null && g && p && u && c) {
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 v = await import("./index-CrwlB95_.js"), b = {
140
- maxWorkers: e.maxWorkers,
141
- basePathname: a,
142
- outDir: c,
143
- rootDir: y,
144
- ...e.ssg,
145
- origin: o,
146
- renderModulePath: g,
147
- qwikRouterConfigModulePath: p
148
- }, k = await v.generate(b);
149
- if (k.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(...k.staticPaths);
156
- }
157
- await O(
158
- c,
159
- r,
160
- f ? m(a, f) : a,
161
- i,
162
- !!e.cleanStaticGenerated
163
- ), typeof e.generate == "function" && await e.generate({
164
- outputEntries: w,
165
- serverOutDir: r,
166
- clientOutDir: u,
167
- clientPublicOutDir: c,
168
- basePathname: a,
169
- routes: l,
170
- assetsDir: f,
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
- process.exit(0);
181
- }, 5e3).unref();
182
- }
183
- }
184
- }
185
- };
186
- }
187
- function A(e, n) {
188
- const t = D("/");
189
- let r = e;
190
- for (let g = 0; g < 20; g++) {
191
- if (r = P(r), q(r) === n)
192
- return r;
193
- if (r === t)
194
- break;
195
- }
196
- throw new Error(`Unable to find "${n}" directory from "${e}"`);
197
- }
198
- function U(e = {}) {
199
- return I({
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({
200
7
  name: "vercel-edge",
201
8
  origin: process?.env?.VERCEL_URL || "https://yoursitename.vercel.app",
202
- ssg: e.ssg,
203
- staticPaths: e.staticPaths,
204
- cleanStaticGenerated: !0,
205
- config(n) {
206
- const t = n.build?.outDir || m(".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");
207
14
  return {
208
15
  resolve: {
209
- 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"]
210
17
  },
211
18
  ssr: {
212
- target: e.target === "node" ? "node" : "webworker",
213
- noExternal: !0
19
+ target: opts.target === "node" ? "node" : "webworker",
20
+ noExternal: true
214
21
  },
215
22
  build: {
216
- ssr: !0,
217
- outDir: t,
23
+ ssr: true,
24
+ outDir,
218
25
  rollupOptions: {
219
26
  output: {
220
27
  format: "es",
221
- hoistTransitiveImports: !1
28
+ hoistTransitiveImports: false
222
29
  }
223
30
  }
224
31
  },
225
- publicDir: !1
32
+ publicDir: false
226
33
  };
227
34
  },
228
- async generate({ clientPublicOutDir: n, serverOutDir: t, basePathname: r, outputEntries: g }) {
229
- const p = A(t, "output");
230
- if (e.outputConfig !== !1) {
231
- const a = {
35
+ async generate({ clientPublicOutDir, serverOutDir, basePathname, outputEntries }) {
36
+ const vercelOutputDir = getParentDir(serverOutDir, "output");
37
+ if (opts.outputConfig !== false) {
38
+ const vercelOutputConfig = {
232
39
  routes: [
233
40
  { handle: "filesystem" },
234
41
  {
235
- src: r + ".*",
42
+ src: basePathname + ".*",
236
43
  dest: "/_qwik-router"
237
44
  }
238
45
  ],
239
46
  version: 3
240
47
  };
241
- await d.promises.writeFile(
242
- m(p, "config.json"),
243
- JSON.stringify(a, null, 2)
48
+ await fs.promises.writeFile(
49
+ join(vercelOutputDir, "config.json"),
50
+ JSON.stringify(vercelOutputConfig, null, 2)
244
51
  );
245
52
  }
246
- let s = e.vcConfigEntryPoint;
247
- s || (g.some((a) => a === "entry.vercel-edge.mjs") ? s = "entry.vercel-edge.mjs" : s = "entry.vercel-edge.js");
248
- const w = m(t, ".vc-config.json"), h = {
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 = {
249
63
  runtime: "edge",
250
- entrypoint: s,
251
- envVarsInUse: e.vcConfigEnvVarsInUse
64
+ entrypoint,
65
+ envVarsInUse: opts.vcConfigEnvVarsInUse
252
66
  };
253
- await d.promises.writeFile(w, JSON.stringify(h, null, 2));
254
- let i = m(p, "static");
255
- const l = r.split("/").filter((a) => a.length > 0);
256
- l.length > 0 && (i = m(i, ...l)), await d.promises.rm(i, { recursive: !0, force: !0 }), await d.promises.mkdir(P(i), { recursive: !0 }), await d.promises.rename(n, i);
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);
257
76
  }
258
77
  });
259
78
  }
260
79
  export {
261
- U as vercelEdgeAdapter
80
+ vercelEdgeAdapter
262
81
  };