@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,6 +1,88 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("node:fs"),d=require("node:path"),j=require("@qwik.dev/router/middleware/request-handler");async function q(e,r,t,i,u){t&&!t.endsWith("/")&&(t+="/");const y=new Set([t+"/"+(globalThis.__QWIK_BUILD_DIR__||"build")+"/",t+"/"+(globalThis.__QWIK_ASSETS_DIR__||"assets")+"/"]),o=new Set(i.map(_)),g=[],c=async(a,l,f)=>{if(f=_(f),y.has(f))return;const p=d.join(a,l);if(l==="index.html"||l==="q-data.json"){!o.has(f)&&u&&await w.promises.unlink(p);return}if(l==="404.html"){const s=await w.promises.readFile(p,"utf-8");g.push([f,s]);return}const P=await w.promises.stat(p);P.isDirectory()?await m(p,f+l+"/"):P.isFile()&&o.add(f+l)},m=async(a,l)=>{const f=await w.promises.readdir(a);await Promise.all(f.map(p=>c(a,p,l)))};w.existsSync(e)&&await m(e,t);const n=E(t,g),h=D(o);await x(h,n,r)}function _(e){return e.endsWith("/")?e:e+"/"}function E(e,r){if(r.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),!r.some(t=>t[0]===e)){const t=j.getErrorHtml(404,"Resource Not Found");r.push([e,t])}return JSON.stringify(r,null,2).slice(1,-1)}function D(e){return JSON.stringify(Array.from(new Set(e)).sort()).slice(1,-1)}const x=async(e,r,t)=>{const i=new Set,u=async o=>{const g=await w.promises.readFile(o,"utf-8");let c=!1;const m=g.replace(/(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,(n,h,a)=>(c=!0,a==="STATIC_PATHS"?e:r));c&&await w.promises.writeFile(o,m)},y=async o=>{const g=await w.promises.readdir(o,{withFileTypes:!0});for(const c of g)if(c.isDirectory())await y(d.join(o,c.name));else if(c.name.endsWith("js")){const m=u(d.join(o,c.name)).finally(()=>{i.delete(m)});i.add(m)}};await y(t),await Promise.all(i)};function O(e){let r=null,t=null,i=null,u=null,y=null,o=!1,g;const c=[];return{name:`vite-plugin-qwik-router-ssg-${e.name}`,enforce:"post",apply:"build",config(n){return typeof e.config=="function"&&(n=e.config(n)),n.define={"process.env.NODE_ENV":JSON.stringify("production"),...n.define},n},configResolved(n){if(o=!!n.build.ssr,g=n.command,o){if(r=n.plugins.find(h=>h.name==="vite-plugin-qwik-router"),!r)throw new Error("Missing vite-plugin-qwik-router");if(t=n.plugins.find(h=>h.name==="vite-plugin-qwik"),!t)throw new Error("Missing vite-plugin-qwik");if(i=n.build.outDir,n.build?.ssr!==!0)throw new Error(`"build.ssr" must be set to "true" in order to use the "${e.name}" adapter.`);if(!n.build?.rollupOptions?.input)throw new Error(`"build.rollupOptions.input" must be set in order to use the "${e.name}" adapter.`)}},buildStart(){if(o&&e.ssg!==null){const{srcDir:n}=t.api.getOptions();g==="build"&&i&&n&&(this.emitFile({id:"@qwik-router-config",type:"chunk",fileName:"@qwik-router-config.js"}),this.emitFile({id:`${n}/entry.ssr`,type:"chunk",fileName:"entry.ssr.js"}))}},generateBundle(n,h){if(o){c.length=0;for(const a in h){const l=h[a];l.type==="chunk"&&l.isEntry&&(c.push(a),l.name==="entry.ssr"?u=d.join(i,a):l.name==="@qwik-router-config"&&(y=d.join(i,a)))}}},closeBundle:{sequential:!0,async handler(){if(o&&i&&r?.api&&t?.api){const n=e.staticPaths||[],h=r.api.getRoutes(),a=r.api.getBasePathname(),l=t.api.getClientOutDir(),f=t.api.getClientPublicOutDir(),p=t.api.getAssetsDir(),P=t.api.getRootDir()??void 0;if(e.ssg!==null&&u&&y&&l&&f){let s=e.ssg?.origin??e.origin;s||(s="https://yoursite.qwik.dev"),s.length>0&&!/:\/\//.test(s)&&(s=`https://${s}`),s.startsWith("//")&&(s=`https:${s}`);try{s=new URL(s).origin}catch{this.warn(`Invalid "origin" option: "${s}". Using default origin: "https://yoursite.qwik.dev"`),s="https://yoursite.qwik.dev"}const v=await Promise.resolve().then(()=>require("./index-BqUeglYs.cjs")),b={maxWorkers:e.maxWorkers,basePathname:a,outDir:f,rootDir:P,...e.ssg,origin:s,renderModulePath:u,qwikRouterConfigModulePath:y},k=await v.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)}n.push(...k.staticPaths)}await q(f,i,p?d.join(a,p):a,n,!!e.cleanStaticGenerated),typeof e.generate=="function"&&await e.generate({outputEntries:c,serverOutDir:i,clientOutDir:l,clientPublicOutDir:f,basePathname:a,routes:h,assetsDir:p,warn:s=>this.warn(s),error:s=>this.error(s)}),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,r){const t=d.resolve("/");let i=e;for(let u=0;u<20;u++){if(i=d.dirname(i),d.basename(i)===r)return i;if(i===t)break}throw new Error(`Unable to find "${r}" directory from "${e}"`)}function T(e={}){const r=process?.env;return O({name:"netlify-edge",origin:r?.ORIGIN??r?.URL??"https://yoursitename.netlify.app",ssg:e.ssg,staticPaths:e.staticPaths,cleanStaticGenerated:!0,config(t){const i=t.build?.outDir||".netlify/edge-functions/entry.netlify-edge";return{resolve:{conditions:["webworker","worker"]},ssr:{target:"webworker",noExternal:!0,external:["node:async_hooks"]},build:{ssr:!0,outDir:i,rollupOptions:{output:{format:"es",hoistTransitiveImports:!1}}},publicDir:!1}},async generate({serverOutDir:t,basePathname:i}){if(e.functionRoutes!==!1){const u=[];typeof e.excludedPath=="string"?u.push(e.excludedPath):Array.isArray(e.excludedPath)?u.push(...e.excludedPath):u.push("/build/*","/favicon.ico","/robots.txt","/mainifest.json","/~partytown/*","/service-worker.js","/sitemap.xml");const y={functions:[{path:i+"*",function:"entry.netlify-edge",cache:"manual",excludedPath:u}],version:1},o=d.join(t,"entry.netlify-edge.js"),g=d.join(t,"entry.netlify-edge.mjs");w.existsSync(g)&&await w.promises.writeFile(o,["import entry_netlifyEdge from './entry.netlify-edge.mjs';","export default entry_netlifyEdge;"].join(`
6
- `));const c=R(t,"edge-functions");await w.promises.writeFile(d.join(c,"manifest.json"),JSON.stringify(y,null,2))}}})}exports.netlifyEdgeAdapter=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 netlifyEdgeAdapter(opts = {}) {
8
+ const env = process?.env;
9
+ return adapters_shared_vite.viteAdapter({
10
+ name: "netlify-edge",
11
+ origin: env?.ORIGIN ?? env?.URL ?? "https://yoursitename.netlify.app",
12
+ ssg: opts.ssg,
13
+ staticPaths: opts.staticPaths,
14
+ cleanStaticGenerated: true,
15
+ config(config) {
16
+ const outDir = config.build?.outDir || ".netlify/edge-functions/entry.netlify-edge";
17
+ return {
18
+ resolve: {
19
+ conditions: ["webworker", "worker"]
20
+ },
21
+ ssr: {
22
+ target: "webworker",
23
+ noExternal: true,
24
+ external: ["node:async_hooks"]
25
+ },
26
+ build: {
27
+ ssr: true,
28
+ outDir,
29
+ rollupOptions: {
30
+ output: {
31
+ format: "es",
32
+ hoistTransitiveImports: false
33
+ }
34
+ }
35
+ },
36
+ publicDir: false
37
+ };
38
+ },
39
+ async generate({ serverOutDir, basePathname }) {
40
+ if (opts.functionRoutes !== false) {
41
+ const excludedPath = [];
42
+ if (typeof opts.excludedPath === "string") {
43
+ excludedPath.push(opts.excludedPath);
44
+ } else if (Array.isArray(opts.excludedPath)) {
45
+ excludedPath.push(...opts.excludedPath);
46
+ } else {
47
+ excludedPath.push(
48
+ "/build/*",
49
+ "/favicon.ico",
50
+ "/robots.txt",
51
+ "/mainifest.json",
52
+ "/~partytown/*",
53
+ "/service-worker.js",
54
+ "/sitemap.xml"
55
+ );
56
+ }
57
+ const netlifyEdgeManifest = {
58
+ functions: [
59
+ {
60
+ path: basePathname + "*",
61
+ function: "entry.netlify-edge",
62
+ cache: "manual",
63
+ excludedPath
64
+ }
65
+ ],
66
+ version: 1
67
+ };
68
+ const jsPath = path.join(serverOutDir, "entry.netlify-edge.js");
69
+ const mjsPath = path.join(serverOutDir, "entry.netlify-edge.mjs");
70
+ if (fs.existsSync(mjsPath)) {
71
+ await fs.promises.writeFile(
72
+ jsPath,
73
+ [
74
+ `import entry_netlifyEdge from './entry.netlify-edge.mjs';`,
75
+ `export default entry_netlifyEdge;`
76
+ ].join("\n")
77
+ );
78
+ }
79
+ const netlifyEdgeFnsDir = adapters_shared_vite.getParentDir(serverOutDir, "edge-functions");
80
+ await fs.promises.writeFile(
81
+ path.join(netlifyEdgeFnsDir, "manifest.json"),
82
+ JSON.stringify(netlifyEdgeManifest, null, 2)
83
+ );
84
+ }
85
+ }
86
+ });
87
+ }
88
+ exports.netlifyEdgeAdapter = netlifyEdgeAdapter;
@@ -1,276 +1,88 @@
1
- import y, { existsSync as E } from "node:fs";
2
- import { join as m, resolve as D, dirname as x, basename as q } from "node:path";
3
- import { getErrorHtml as R } from "@qwik.dev/router/middleware/request-handler";
4
- async function O(e, r, t, i, u) {
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(_)), d = [], c = async (a, l, f) => {
10
- if (f = _(f), h.has(f))
11
- return;
12
- const w = m(a, l);
13
- if (l === "index.html" || l === "q-data.json") {
14
- !o.has(f) && u && await y.promises.unlink(w);
15
- return;
16
- }
17
- if (l === "404.html") {
18
- const s = await y.promises.readFile(w, "utf-8");
19
- d.push([f, s]);
20
- return;
21
- }
22
- const k = await y.promises.stat(w);
23
- k.isDirectory() ? await p(w, f + l + "/") : k.isFile() && o.add(f + l);
24
- }, p = async (a, l) => {
25
- const f = await y.promises.readdir(a);
26
- await Promise.all(f.map((w) => c(a, w, l)));
27
- };
28
- y.existsSync(e) && await p(e, t);
29
- const n = T(t, d), g = j(o);
30
- await A(g, n, r);
31
- }
32
- function _(e) {
33
- return e.endsWith("/") ? e : e + "/";
34
- }
35
- function T(e, r) {
36
- if (r.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), !r.some((t) => t[0] === e)) {
37
- const t = R(404, "Resource Not Found");
38
- r.push([e, t]);
39
- }
40
- return JSON.stringify(r, null, 2).slice(1, -1);
41
- }
42
- function j(e) {
43
- return JSON.stringify(Array.from(new Set(e)).sort()).slice(1, -1);
44
- }
45
- const A = async (e, r, t) => {
46
- const i = /* @__PURE__ */ new Set(), u = async (o) => {
47
- const d = await y.promises.readFile(o, "utf-8");
48
- let c = !1;
49
- const p = d.replace(
50
- /(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,
51
- (n, g, a) => (c = !0, a === "STATIC_PATHS" ? e : r)
52
- );
53
- c && await y.promises.writeFile(o, p);
54
- }, h = async (o) => {
55
- const d = await y.promises.readdir(o, { withFileTypes: !0 });
56
- for (const c of d)
57
- if (c.isDirectory())
58
- await h(m(o, c.name));
59
- else if (c.name.endsWith("js")) {
60
- const p = u(m(o, c.name)).finally(() => {
61
- i.delete(p);
62
- });
63
- i.add(p);
64
- }
65
- };
66
- await h(t), await Promise.all(i);
67
- };
68
- function F(e) {
69
- let r = null, t = null, i = null, u = null, h = null, o = !1, d;
70
- const c = [];
71
- return {
72
- name: `vite-plugin-qwik-router-ssg-${e.name}`,
73
- enforce: "post",
74
- apply: "build",
75
- config(n) {
76
- return typeof e.config == "function" && (n = e.config(n)), n.define = {
77
- "process.env.NODE_ENV": JSON.stringify("production"),
78
- ...n.define
79
- }, n;
80
- },
81
- configResolved(n) {
82
- if (o = !!n.build.ssr, d = n.command, o) {
83
- if (r = n.plugins.find(
84
- (g) => g.name === "vite-plugin-qwik-router"
85
- ), !r)
86
- throw new Error("Missing vite-plugin-qwik-router");
87
- if (t = n.plugins.find(
88
- (g) => g.name === "vite-plugin-qwik"
89
- ), !t)
90
- throw new Error("Missing vite-plugin-qwik");
91
- if (i = n.build.outDir, n.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 (!n.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 (o && e.ssg !== null) {
103
- const { srcDir: n } = t.api.getOptions();
104
- d === "build" && i && n && (this.emitFile({
105
- id: "@qwik-router-config",
106
- type: "chunk",
107
- fileName: "@qwik-router-config.js"
108
- }), this.emitFile({
109
- id: `${n}/entry.ssr`,
110
- type: "chunk",
111
- fileName: "entry.ssr.js"
112
- }));
113
- }
114
- },
115
- generateBundle(n, g) {
116
- if (o) {
117
- c.length = 0;
118
- for (const a in g) {
119
- const l = g[a];
120
- l.type === "chunk" && l.isEntry && (c.push(a), l.name === "entry.ssr" ? u = m(i, a) : l.name === "@qwik-router-config" && (h = m(i, a)));
121
- }
122
- }
123
- },
124
- closeBundle: {
125
- sequential: !0,
126
- async handler() {
127
- if (o && i && r?.api && t?.api) {
128
- const n = e.staticPaths || [], g = r.api.getRoutes(), a = r.api.getBasePathname(), l = t.api.getClientOutDir(), f = t.api.getClientPublicOutDir(), w = t.api.getAssetsDir(), k = t.api.getRootDir() ?? void 0;
129
- if (e.ssg !== null && u && h && l && f) {
130
- let s = e.ssg?.origin ?? e.origin;
131
- s || (s = "https://yoursite.qwik.dev"), s.length > 0 && !/:\/\//.test(s) && (s = `https://${s}`), s.startsWith("//") && (s = `https:${s}`);
132
- try {
133
- s = new URL(s).origin;
134
- } catch {
135
- this.warn(
136
- `Invalid "origin" option: "${s}". Using default origin: "https://yoursite.qwik.dev"`
137
- ), s = "https://yoursite.qwik.dev";
138
- }
139
- const v = await import("./index-CrwlB95_.js"), b = {
140
- maxWorkers: e.maxWorkers,
141
- basePathname: a,
142
- outDir: f,
143
- rootDir: k,
144
- ...e.ssg,
145
- origin: s,
146
- renderModulePath: u,
147
- qwikRouterConfigModulePath: h
148
- }, P = await v.generate(b);
149
- if (P.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
- n.push(...P.staticPaths);
156
- }
157
- await O(
158
- f,
159
- i,
160
- w ? m(a, w) : a,
161
- n,
162
- !!e.cleanStaticGenerated
163
- ), typeof e.generate == "function" && await e.generate({
164
- outputEntries: c,
165
- serverOutDir: i,
166
- clientOutDir: l,
167
- clientPublicOutDir: f,
168
- basePathname: a,
169
- routes: g,
170
- assetsDir: w,
171
- warn: (s) => this.warn(s),
172
- error: (s) => this.error(s)
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 I(e, r) {
192
- const t = D("/");
193
- let i = e;
194
- for (let u = 0; u < 20; u++) {
195
- if (i = x(i), q(i) === r)
196
- return i;
197
- if (i === t)
198
- break;
199
- }
200
- throw new Error(`Unable to find "${r}" directory from "${e}"`);
201
- }
202
- function G(e = {}) {
203
- const r = process?.env;
204
- return F({
1
+ import fs, { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { viteAdapter, getParentDir } from "../../shared/vite/index.mjs";
4
+ import "../../../chunks/error-handler.mjs";
5
+ function netlifyEdgeAdapter(opts = {}) {
6
+ const env = process?.env;
7
+ return viteAdapter({
205
8
  name: "netlify-edge",
206
- origin: r?.ORIGIN ?? r?.URL ?? "https://yoursitename.netlify.app",
207
- ssg: e.ssg,
208
- staticPaths: e.staticPaths,
209
- cleanStaticGenerated: !0,
210
- config(t) {
211
- const i = t.build?.outDir || ".netlify/edge-functions/entry.netlify-edge";
9
+ origin: env?.ORIGIN ?? env?.URL ?? "https://yoursitename.netlify.app",
10
+ ssg: opts.ssg,
11
+ staticPaths: opts.staticPaths,
12
+ cleanStaticGenerated: true,
13
+ config(config) {
14
+ const outDir = config.build?.outDir || ".netlify/edge-functions/entry.netlify-edge";
212
15
  return {
213
16
  resolve: {
214
17
  conditions: ["webworker", "worker"]
215
18
  },
216
19
  ssr: {
217
20
  target: "webworker",
218
- noExternal: !0,
21
+ noExternal: true,
219
22
  external: ["node:async_hooks"]
220
23
  },
221
24
  build: {
222
- ssr: !0,
223
- outDir: i,
25
+ ssr: true,
26
+ outDir,
224
27
  rollupOptions: {
225
28
  output: {
226
29
  format: "es",
227
- hoistTransitiveImports: !1
30
+ hoistTransitiveImports: false
228
31
  }
229
32
  }
230
33
  },
231
- publicDir: !1
34
+ publicDir: false
232
35
  };
233
36
  },
234
- async generate({ serverOutDir: t, basePathname: i }) {
235
- if (e.functionRoutes !== !1) {
236
- const u = [];
237
- typeof e.excludedPath == "string" ? u.push(e.excludedPath) : Array.isArray(e.excludedPath) ? u.push(...e.excludedPath) : u.push(
238
- "/build/*",
239
- "/favicon.ico",
240
- "/robots.txt",
241
- "/mainifest.json",
242
- "/~partytown/*",
243
- "/service-worker.js",
244
- "/sitemap.xml"
245
- );
246
- const h = {
37
+ async generate({ serverOutDir, basePathname }) {
38
+ if (opts.functionRoutes !== false) {
39
+ const excludedPath = [];
40
+ if (typeof opts.excludedPath === "string") {
41
+ excludedPath.push(opts.excludedPath);
42
+ } else if (Array.isArray(opts.excludedPath)) {
43
+ excludedPath.push(...opts.excludedPath);
44
+ } else {
45
+ excludedPath.push(
46
+ "/build/*",
47
+ "/favicon.ico",
48
+ "/robots.txt",
49
+ "/mainifest.json",
50
+ "/~partytown/*",
51
+ "/service-worker.js",
52
+ "/sitemap.xml"
53
+ );
54
+ }
55
+ const netlifyEdgeManifest = {
247
56
  functions: [
248
57
  {
249
- path: i + "*",
58
+ path: basePathname + "*",
250
59
  function: "entry.netlify-edge",
251
60
  cache: "manual",
252
- excludedPath: u
61
+ excludedPath
253
62
  }
254
63
  ],
255
64
  version: 1
256
- }, o = m(t, "entry.netlify-edge.js"), d = m(t, "entry.netlify-edge.mjs");
257
- E(d) && await y.promises.writeFile(
258
- o,
259
- [
260
- "import entry_netlifyEdge from './entry.netlify-edge.mjs';",
261
- "export default entry_netlifyEdge;"
262
- ].join(`
263
- `)
264
- );
265
- const c = I(t, "edge-functions");
266
- await y.promises.writeFile(
267
- m(c, "manifest.json"),
268
- JSON.stringify(h, null, 2)
65
+ };
66
+ const jsPath = join(serverOutDir, "entry.netlify-edge.js");
67
+ const mjsPath = join(serverOutDir, "entry.netlify-edge.mjs");
68
+ if (existsSync(mjsPath)) {
69
+ await fs.promises.writeFile(
70
+ jsPath,
71
+ [
72
+ `import entry_netlifyEdge from './entry.netlify-edge.mjs';`,
73
+ `export default entry_netlifyEdge;`
74
+ ].join("\n")
75
+ );
76
+ }
77
+ const netlifyEdgeFnsDir = getParentDir(serverOutDir, "edge-functions");
78
+ await fs.promises.writeFile(
79
+ join(netlifyEdgeFnsDir, "manifest.json"),
80
+ JSON.stringify(netlifyEdgeManifest, null, 2)
269
81
  );
270
82
  }
271
83
  }
272
84
  });
273
85
  }
274
86
  export {
275
- G as netlifyEdgeAdapter
87
+ netlifyEdgeAdapter
276
88
  };
@@ -1,5 +1,27 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("node:path"),D=require("@qwik.dev/router/middleware/request-handler"),p=require("node:fs");async function b(e,s,t,n,m){t&&!t.endsWith("/")&&(t+="/");const h=new Set([t+"/"+(globalThis.__QWIK_BUILD_DIR__||"build")+"/",t+"/"+(globalThis.__QWIK_ASSETS_DIR__||"assets")+"/"]),o=new Set(n.map(_)),g=[],c=async(a,l,u)=>{if(u=_(u),h.has(u))return;const f=y.join(a,l);if(l==="index.html"||l==="q-data.json"){!o.has(u)&&m&&await p.promises.unlink(f);return}if(l==="404.html"){const r=await p.promises.readFile(f,"utf-8");g.push([u,r]);return}const S=await p.promises.stat(f);S.isDirectory()?await w(f,u+l+"/"):S.isFile()&&o.add(u+l)},w=async(a,l)=>{const u=await p.promises.readdir(a);await Promise.all(u.map(f=>c(a,f,l)))};p.existsSync(e)&&await w(e,t);const i=O(t,g),d=R(o);await T(d,i,s)}function _(e){return e.endsWith("/")?e:e+"/"}function O(e,s){if(s.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),!s.some(t=>t[0]===e)){const t=D.getErrorHtml(404,"Resource Not Found");s.push([e,t])}return JSON.stringify(s,null,2).slice(1,-1)}function R(e){return JSON.stringify(Array.from(new Set(e)).sort()).slice(1,-1)}const T=async(e,s,t)=>{const n=new Set,m=async o=>{const g=await p.promises.readFile(o,"utf-8");let c=!1;const w=g.replace(/(['"])__QWIK_ROUTER_(STATIC_PATHS|NOT_FOUND)_ARRAY__\1/g,(i,d,a)=>(c=!0,a==="STATIC_PATHS"?e:s));c&&await p.promises.writeFile(o,w)},h=async o=>{const g=await p.promises.readdir(o,{withFileTypes:!0});for(const c of g)if(c.isDirectory())await h(y.join(o,c.name));else if(c.name.endsWith("js")){const w=m(y.join(o,c.name)).finally(()=>{n.delete(w)});n.add(w)}};await h(t),await Promise.all(n)};function E(e){let s=null,t=null,n=null,m=null,h=null,o=!1,g;const c=[];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(o=!!i.build.ssr,g=i.command,o){if(s=i.plugins.find(d=>d.name==="vite-plugin-qwik-router"),!s)throw new Error("Missing vite-plugin-qwik-router");if(t=i.plugins.find(d=>d.name==="vite-plugin-qwik"),!t)throw new Error("Missing vite-plugin-qwik");if(n=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(o&&e.ssg!==null){const{srcDir:i}=t.api.getOptions();g==="build"&&n&&i&&(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,d){if(o){c.length=0;for(const a in d){const l=d[a];l.type==="chunk"&&l.isEntry&&(c.push(a),l.name==="entry.ssr"?m=y.join(n,a):l.name==="@qwik-router-config"&&(h=y.join(n,a)))}}},closeBundle:{sequential:!0,async handler(){if(o&&n&&s?.api&&t?.api){const i=e.staticPaths||[],d=s.api.getRoutes(),a=s.api.getBasePathname(),l=t.api.getClientOutDir(),u=t.api.getClientPublicOutDir(),f=t.api.getAssetsDir(),S=t.api.getRootDir()??void 0;if(e.ssg!==null&&m&&h&&l&&u){let r=e.ssg?.origin??e.origin;r||(r="https://yoursite.qwik.dev"),r.length>0&&!/:\/\//.test(r)&&(r=`https://${r}`),r.startsWith("//")&&(r=`https:${r}`);try{r=new URL(r).origin}catch{this.warn(`Invalid "origin" option: "${r}". Using default origin: "https://yoursite.qwik.dev"`),r="https://yoursite.qwik.dev"}const q=await Promise.resolve().then(()=>require("./index-BqUeglYs.cjs")),P={maxWorkers:e.maxWorkers,basePathname:a,outDir:u,rootDir:S,...e.ssg,origin:r,renderModulePath:m,qwikRouterConfigModulePath:h},k=await q.generate(P);if(k.errors>0){const v=new Error(`Error while running SSG from "${e.name}" adapter. At least one path failed to render.`);v.stack=void 0,this.error(v)}i.push(...k.staticPaths)}await b(u,n,f?y.join(a,f):a,i,!!e.cleanStaticGenerated),typeof e.generate=="function"&&await e.generate({outputEntries:c,serverOutDir:n,clientOutDir:l,clientPublicOutDir:u,basePathname:a,routes:d,assetsDir:f,warn:r=>this.warn(r),error:r=>this.error(r)}),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 A(e={}){const s=process?.env;return E({name:e.name||"node-server",origin:s?.ORIGIN??s?.URL??"https://yoursitename.qwik.dev",ssg:e.ssg,cleanStaticGenerated:!0,config(){return{ssr:{target:"node"},build:{ssr:!0},publicDir:!1}}})}exports.nodeServerAdapter=A;
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const adapters_shared_vite = require("../../shared/vite/index.cjs");
4
+ require("node:path");
5
+ require("node:fs");
6
+ require("../../../chunks/error-handler.cjs");
7
+ function nodeServerAdapter(opts = {}) {
8
+ const env = process?.env;
9
+ return adapters_shared_vite.viteAdapter({
10
+ name: opts.name || "node-server",
11
+ origin: env?.ORIGIN ?? env?.URL ?? "https://yoursitename.qwik.dev",
12
+ ssg: opts.ssg,
13
+ cleanStaticGenerated: true,
14
+ config() {
15
+ return {
16
+ ssr: {
17
+ target: "node"
18
+ },
19
+ build: {
20
+ ssr: true
21
+ },
22
+ publicDir: false
23
+ };
24
+ }
25
+ });
26
+ }
27
+ exports.nodeServerAdapter = nodeServerAdapter;