@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,306 @@
1
- import { join as y, resolve as D, dirname as b, basename as O } from "node:path";
2
- import { getErrorHtml as E } from "@qwik.dev/router/middleware/request-handler";
3
- import m from "node:fs";
4
- async function R(e, s, t, i, d) {
5
- t && !t.endsWith("/") && (t += "/");
6
- const h = /* @__PURE__ */ new Set([
7
- t + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
8
- t + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
9
- ]), o = new Set(i.map(P)), w = [], c = async (a, l, u) => {
10
- if (u = P(u), h.has(u))
1
+ import { join, resolve, dirname, basename } from 'node:path';
2
+ import fs from 'node:fs';
3
+ import { g as getErrorHtml } from '../../../chunks/error-handler.mjs';
4
+
5
+ async function postBuild(clientOutDir, serverOutDir, pathName, userStaticPaths, cleanStatic) {
6
+ if (pathName && !pathName.endsWith("/")) {
7
+ pathName += "/";
8
+ }
9
+ const ignorePathnames = /* @__PURE__ */ new Set([
10
+ pathName + "/" + (globalThis.__QWIK_BUILD_DIR__ || "build") + "/",
11
+ pathName + "/" + (globalThis.__QWIK_ASSETS_DIR__ || "assets") + "/"
12
+ ]);
13
+ const staticPaths = new Set(userStaticPaths.map(normalizeTrailingSlash));
14
+ const notFounds = [];
15
+ const loadItem = async (fsDir, fsName, pathname) => {
16
+ pathname = normalizeTrailingSlash(pathname);
17
+ if (ignorePathnames.has(pathname)) {
11
18
  return;
12
- const g = y(a, l);
13
- if (l === "index.html" || l === "q-data.json") {
14
- !o.has(u) && d && await m.promises.unlink(g);
19
+ }
20
+ const fsPath = join(fsDir, fsName);
21
+ if (fsName === "index.html" || fsName === "q-data.json") {
22
+ if (!staticPaths.has(pathname) && cleanStatic) {
23
+ await fs.promises.unlink(fsPath);
24
+ }
15
25
  return;
16
26
  }
17
- if (l === "404.html") {
18
- const n = await m.promises.readFile(g, "utf-8");
19
- w.push([u, n]);
27
+ if (fsName === "404.html") {
28
+ const notFoundHtml = await fs.promises.readFile(fsPath, "utf-8");
29
+ notFounds.push([pathname, notFoundHtml]);
20
30
  return;
21
31
  }
22
- const k = await m.promises.stat(g);
23
- k.isDirectory() ? await p(g, u + l + "/") : k.isFile() && o.add(u + l);
24
- }, p = async (a, l) => {
25
- const u = await m.promises.readdir(a);
26
- await Promise.all(u.map((g) => c(a, g, l)));
32
+ const stat = await fs.promises.stat(fsPath);
33
+ if (stat.isDirectory()) {
34
+ await loadDir(fsPath, pathname + fsName + "/");
35
+ } else if (stat.isFile()) {
36
+ staticPaths.add(pathname + fsName);
37
+ }
38
+ };
39
+ const loadDir = async (fsDir, pathname) => {
40
+ const itemNames = await fs.promises.readdir(fsDir);
41
+ await Promise.all(itemNames.map((i) => loadItem(fsDir, i, pathname)));
27
42
  };
28
- m.existsSync(e) && await p(e, t);
29
- const r = T(t, w), f = A(o);
30
- await C(f, r, s);
43
+ if (fs.existsSync(clientOutDir)) {
44
+ await loadDir(clientOutDir, pathName);
45
+ }
46
+ const notFoundPathsCode = createNotFoundPathsCode(pathName, notFounds);
47
+ const staticPathsCode = createStaticPathsCode(staticPaths);
48
+ await injectStatics(staticPathsCode, notFoundPathsCode, serverOutDir);
31
49
  }
32
- function P(e) {
33
- return e.endsWith("/") ? e : e + "/";
50
+ function normalizeTrailingSlash(pathname) {
51
+ if (!pathname.endsWith("/")) {
52
+ return pathname + "/";
53
+ }
54
+ return pathname;
34
55
  }
35
- function T(e, s) {
36
- if (s.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), !s.some((t) => t[0] === e)) {
37
- const t = E(404, "Resource Not Found");
38
- s.push([e, t]);
56
+ function createNotFoundPathsCode(basePathname, notFounds) {
57
+ notFounds.sort((a, b) => {
58
+ if (a[0].length > b[0].length) {
59
+ return -1;
60
+ }
61
+ if (a[0].length < b[0].length) {
62
+ return 1;
63
+ }
64
+ if (a[0] < b[0]) {
65
+ return -1;
66
+ }
67
+ if (a[0] > b[0]) {
68
+ return 1;
69
+ }
70
+ return 0;
71
+ });
72
+ if (!notFounds.some((r) => r[0] === basePathname)) {
73
+ const html = getErrorHtml(404, "Resource Not Found");
74
+ notFounds.push([basePathname, html]);
39
75
  }
40
- return JSON.stringify(s, null, 2).slice(1, -1);
76
+ return JSON.stringify(notFounds, null, 2).slice(1, -1);
41
77
  }
42
- function A(e) {
43
- return JSON.stringify(Array.from(new Set(e)).sort()).slice(1, -1);
78
+ function createStaticPathsCode(staticPaths) {
79
+ return JSON.stringify(Array.from(new Set(staticPaths)).sort()).slice(1, -1);
44
80
  }
45
- const C = async (e, s, t) => {
46
- const i = /* @__PURE__ */ new Set(), d = async (o) => {
47
- const w = await m.promises.readFile(o, "utf-8");
48
- let c = !1;
49
- const p = w.replace(
81
+ const injectStatics = async (staticPathsCode, notFoundPathsCode, outDir) => {
82
+ const promises = /* @__PURE__ */ new Set();
83
+ const doReplace = async (path) => {
84
+ const code = await fs.promises.readFile(path, "utf-8");
85
+ let replaced = false;
86
+ const newCode = code.replace(
50
87
  /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (r, f, a) => (c = !0, a === "STATIC_PATHS" ? e : s)
88
+ (_, _quote, type) => {
89
+ replaced = true;
90
+ return type === "STATIC_PATHS" ? staticPathsCode : notFoundPathsCode;
91
+ }
52
92
  );
53
- c && await m.promises.writeFile(o, p);
54
- }, h = async (o) => {
55
- const w = await m.promises.readdir(o, { withFileTypes: !0 });
56
- for (const c of w)
57
- if (c.isDirectory())
58
- await h(y(o, c.name));
59
- else if (c.name.endsWith("js")) {
60
- const p = d(y(o, c.name)).finally(() => {
61
- i.delete(p);
93
+ if (replaced) {
94
+ await fs.promises.writeFile(path, newCode);
95
+ }
96
+ };
97
+ const walk = async (dir) => {
98
+ const entries = await fs.promises.readdir(dir, { withFileTypes: true });
99
+ for (const entry of entries) {
100
+ if (entry.isDirectory()) {
101
+ await walk(join(dir, entry.name));
102
+ } else if (entry.name.endsWith("js")) {
103
+ const p = doReplace(join(dir, entry.name)).finally(() => {
104
+ promises.delete(p);
62
105
  });
63
- i.add(p);
106
+ promises.add(p);
64
107
  }
108
+ }
65
109
  };
66
- await h(t), await Promise.all(i);
110
+ await walk(outDir);
111
+ await Promise.all(promises);
67
112
  };
68
- function W(e) {
69
- let s = null, t = null, i = null, d = null, h = null, o = !1, w;
70
- const c = [];
71
- return {
72
- name: `vite-plugin-qwik-router-ssg-${e.name}`,
113
+
114
+ function viteAdapter(opts) {
115
+ let qwikRouterPlugin = null;
116
+ let qwikVitePlugin = null;
117
+ let serverOutDir = null;
118
+ let renderModulePath = null;
119
+ let qwikRouterConfigModulePath = null;
120
+ let isSsrBuild = false;
121
+ let viteCommand;
122
+ const outputEntries = [];
123
+ const plugin = {
124
+ name: `vite-plugin-qwik-router-ssg-${opts.name}`,
73
125
  enforce: "post",
74
126
  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;
127
+ config(config) {
128
+ if (typeof opts.config === "function") {
129
+ config = opts.config(config);
130
+ }
131
+ config.define = {
132
+ "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || "production"),
133
+ ...config.define
134
+ };
135
+ return config;
80
136
  },
81
- configResolved(r) {
82
- if (o = !!r.build.ssr, w = r.command, o) {
83
- if (s = r.plugins.find(
84
- (f) => f.name === "vite-plugin-qwik-router"
85
- ), !s)
137
+ configResolved(config) {
138
+ isSsrBuild = !!config.build.ssr;
139
+ viteCommand = config.command;
140
+ if (isSsrBuild) {
141
+ qwikRouterPlugin = config.plugins.find(
142
+ (p) => p.name === "vite-plugin-qwik-router"
143
+ );
144
+ if (!qwikRouterPlugin) {
86
145
  throw new Error("Missing vite-plugin-qwik-router");
87
- if (t = r.plugins.find(
88
- (f) => f.name === "vite-plugin-qwik"
89
- ), !t)
146
+ }
147
+ qwikVitePlugin = config.plugins.find(
148
+ (p) => p.name === "vite-plugin-qwik"
149
+ );
150
+ if (!qwikVitePlugin) {
90
151
  throw new Error("Missing vite-plugin-qwik");
91
- if (i = r.build.outDir, r.build?.ssr !== !0)
152
+ }
153
+ serverOutDir = config.build.outDir;
154
+ if (config.build?.ssr !== true) {
92
155
  throw new Error(
93
- `"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`
156
+ `"build.ssr" must be set to "true" in order to use the "${opts.name}" adapter.`
94
157
  );
95
- if (!r.build?.rollupOptions?.input)
158
+ }
159
+ if (!config.build?.rollupOptions?.input) {
96
160
  throw new Error(
97
- `"build.rollupOptions.input" must be set in order to use the "${e.name}" adapter.`
161
+ `"build.rollupOptions.input" must be set in order to use the "${opts.name}" adapter.`
98
162
  );
163
+ }
99
164
  }
100
165
  },
101
166
  buildStart() {
102
- if (o && e.ssg !== null) {
103
- const { srcDir: r } = t.api.getOptions();
104
- w === "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
- }));
167
+ if (isSsrBuild && opts.ssg !== null) {
168
+ const { srcDir } = qwikVitePlugin.api.getOptions();
169
+ if (viteCommand === "build" && serverOutDir && srcDir) {
170
+ this.emitFile({
171
+ id: "@qwik-router-config",
172
+ type: "chunk",
173
+ fileName: "@qwik-router-config.js"
174
+ });
175
+ this.emitFile({
176
+ id: `${srcDir}/entry.ssr`,
177
+ type: "chunk",
178
+ fileName: "entry.ssr.js"
179
+ });
180
+ }
113
181
  }
114
182
  },
115
- generateBundle(r, f) {
116
- if (o) {
117
- c.length = 0;
118
- for (const a in f) {
119
- const l = f[a];
120
- l.type === "chunk" && l.isEntry && (c.push(a), l.name === "entry.ssr" ? d = y(i, a) : l.name === "@qwik-router-config" && (h = y(i, a)));
183
+ generateBundle(_, bundles) {
184
+ if (isSsrBuild) {
185
+ outputEntries.length = 0;
186
+ for (const fileName in bundles) {
187
+ const chunk = bundles[fileName];
188
+ if (chunk.type === "chunk" && chunk.isEntry) {
189
+ outputEntries.push(fileName);
190
+ if (chunk.name === "entry.ssr") {
191
+ renderModulePath = join(serverOutDir, fileName);
192
+ } else if (chunk.name === "@qwik-router-config") {
193
+ qwikRouterConfigModulePath = join(serverOutDir, fileName);
194
+ }
195
+ }
121
196
  }
122
197
  }
123
198
  },
124
199
  closeBundle: {
125
- sequential: !0,
200
+ sequential: true,
126
201
  async handler() {
127
- if (o && i && s?.api && t?.api) {
128
- const r = e.staticPaths || [], f = s.api.getRoutes(), a = s.api.getBasePathname(), l = t.api.getClientOutDir(), u = t.api.getClientPublicOutDir(), g = t.api.getAssetsDir(), k = t.api.getRootDir() ?? void 0;
129
- if (e.ssg !== null && d && h && l && u) {
130
- let n = e.ssg?.origin ?? e.origin;
131
- n || (n = "https://yoursite.qwik.dev"), n.length > 0 && !/:\/\//.test(n) && (n = `https://${n}`), n.startsWith("//") && (n = `https:${n}`);
202
+ if (isSsrBuild && serverOutDir && qwikRouterPlugin?.api && qwikVitePlugin?.api) {
203
+ const staticPaths = opts.staticPaths || [];
204
+ const routes = qwikRouterPlugin.api.getRoutes();
205
+ const basePathname = qwikRouterPlugin.api.getBasePathname();
206
+ const clientOutDir = qwikVitePlugin.api.getClientOutDir();
207
+ const clientPublicOutDir = qwikVitePlugin.api.getClientPublicOutDir();
208
+ const assetsDir = qwikVitePlugin.api.getAssetsDir();
209
+ const rootDir = qwikVitePlugin.api.getRootDir() ?? void 0;
210
+ if (opts.ssg !== null && renderModulePath && qwikRouterConfigModulePath && clientOutDir && clientPublicOutDir) {
211
+ let ssgOrigin = opts.ssg?.origin ?? opts.origin;
212
+ if (!ssgOrigin) {
213
+ ssgOrigin = `https://yoursite.qwik.dev`;
214
+ }
215
+ if (ssgOrigin.length > 0 && !/:\/\//.test(ssgOrigin)) {
216
+ ssgOrigin = `https://${ssgOrigin}`;
217
+ }
218
+ if (ssgOrigin.startsWith("//")) {
219
+ ssgOrigin = `https:${ssgOrigin}`;
220
+ }
132
221
  try {
133
- n = new URL(n).origin;
222
+ ssgOrigin = new URL(ssgOrigin).origin;
134
223
  } catch {
135
224
  this.warn(
136
- `Invalid "origin" option: "${n}". Using default origin: "https://yoursite.qwik.dev"`
137
- ), n = "https://yoursite.qwik.dev";
225
+ `Invalid "origin" option: "${ssgOrigin}". Using default origin: "https://yoursite.qwik.dev"`
226
+ );
227
+ ssgOrigin = `https://yoursite.qwik.dev`;
138
228
  }
139
- const v = await import("./index-CrwlB95_.js"), q = {
140
- maxWorkers: e.maxWorkers,
141
- basePathname: a,
142
- outDir: u,
143
- rootDir: k,
144
- ...e.ssg,
145
- origin: n,
146
- renderModulePath: d,
147
- qwikRouterConfigModulePath: h
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.`
229
+ const staticGenerate = await import('../../../ssg/index.mjs');
230
+ const generateOpts = {
231
+ maxWorkers: opts.maxWorkers,
232
+ basePathname,
233
+ outDir: clientPublicOutDir,
234
+ rootDir,
235
+ ...opts.ssg,
236
+ origin: ssgOrigin,
237
+ renderModulePath,
238
+ qwikRouterConfigModulePath
239
+ };
240
+ const staticGenerateResult = await staticGenerate.generate(generateOpts);
241
+ if (staticGenerateResult.errors > 0) {
242
+ const err = new Error(
243
+ `Error while running SSG from "${opts.name}" adapter. At least one path failed to render.`
152
244
  );
153
- _.stack = void 0, this.error(_);
245
+ err.stack = void 0;
246
+ this.error(err);
154
247
  }
155
- r.push(...S.staticPaths);
248
+ staticPaths.push(...staticGenerateResult.staticPaths);
156
249
  }
157
- await R(
158
- u,
159
- i,
160
- g ? y(a, g) : a,
161
- r,
162
- !!e.cleanStaticGenerated
163
- ), typeof e.generate == "function" && await e.generate({
164
- outputEntries: c,
165
- serverOutDir: i,
166
- clientOutDir: l,
167
- clientPublicOutDir: u,
168
- basePathname: a,
169
- routes: f,
170
- assetsDir: g,
171
- warn: (n) => this.warn(n),
172
- error: (n) => this.error(n)
173
- }), this.warn(
250
+ await postBuild(
251
+ clientPublicOutDir,
252
+ serverOutDir,
253
+ assetsDir ? join(basePathname, assetsDir) : basePathname,
254
+ staticPaths,
255
+ !!opts.cleanStaticGenerated
256
+ );
257
+ if (typeof opts.generate === "function") {
258
+ await opts.generate({
259
+ outputEntries,
260
+ serverOutDir,
261
+ clientOutDir,
262
+ clientPublicOutDir,
263
+ basePathname,
264
+ routes,
265
+ assetsDir,
266
+ warn: (message) => this.warn(message),
267
+ error: (message) => this.error(message)
268
+ });
269
+ }
270
+ this.warn(
174
271
  `
175
272
  ==============================================
176
273
  Note: Make sure that you are serving the built files with proper cache headers.
177
274
  See https://qwik.dev/docs/deployments/#cache-headers for more information.
178
275
  ==============================================`
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();
276
+ );
277
+ if (opts.ssg !== null) {
278
+ setTimeout(() => {
279
+ console.warn(
280
+ "SSG seems to be hanging after completion, forcing process to exit. Everything is likely fine."
281
+ );
282
+ process.exit(0);
283
+ }, 5e3).unref();
284
+ }
186
285
  }
187
286
  }
188
287
  }
189
288
  };
289
+ return plugin;
190
290
  }
191
- function x(e, s) {
192
- const t = D("/");
193
- let i = e;
194
- for (let d = 0; d < 20; d++) {
195
- if (i = b(i), O(i) === s)
196
- return i;
197
- if (i === t)
291
+ function getParentDir(startDir, dirName) {
292
+ const root = resolve("/");
293
+ let dir = startDir;
294
+ for (let i = 0; i < 20; i++) {
295
+ dir = dirname(dir);
296
+ if (basename(dir) === dirName) {
297
+ return dir;
298
+ }
299
+ if (dir === root) {
198
300
  break;
301
+ }
199
302
  }
200
- throw new Error(`Unable to find "${s}" directory from "${e}"`);
303
+ throw new Error(`Unable to find "${dirName}" directory from "${startDir}"`);
201
304
  }
202
- export {
203
- x as getParentDir,
204
- W as viteAdapter
205
- };
305
+
306
+ export { getParentDir, viteAdapter };