@qwik.dev/core 2.0.0-alpha.9 → 2.0.0-beta.10

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/bindings/qwik.darwin-arm64.node +0 -0
  2. package/bindings/qwik.darwin-x64.node +0 -0
  3. package/bindings/qwik.linux-x64-gnu.node +0 -0
  4. package/bindings/qwik.wasm.cjs +27 -27
  5. package/bindings/qwik.wasm.mjs +27 -27
  6. package/bindings/qwik.win32-x64-msvc.node +0 -0
  7. package/bindings/qwik_wasm_bg.wasm +0 -0
  8. package/dist/backpatch/index.cjs +6 -0
  9. package/dist/backpatch/index.d.ts +2 -0
  10. package/dist/backpatch/index.mjs +5 -0
  11. package/dist/{prefetch → backpatch}/package.json +2 -2
  12. package/dist/backpatch-executor.debug.js +34 -0
  13. package/dist/backpatch-executor.js +1 -0
  14. package/dist/build/index.cjs +3 -3
  15. package/dist/build/index.d.ts +22 -22
  16. package/dist/build/package.json +1 -1
  17. package/dist/cli.cjs +3035 -767
  18. package/dist/core-internal.d.ts +4622 -4153
  19. package/dist/core.cjs +7327 -6169
  20. package/dist/core.cjs.map +1 -1
  21. package/dist/core.min.mjs +1 -1
  22. package/dist/core.mjs +7294 -6163
  23. package/dist/core.mjs.map +1 -1
  24. package/dist/core.prod.cjs +3209 -2612
  25. package/dist/core.prod.mjs +3932 -3294
  26. package/dist/insights/index.qwik.cjs +1 -4142
  27. package/dist/insights/index.qwik.mjs +63 -4133
  28. package/dist/insights/vite/index.cjs +1 -82
  29. package/dist/insights/vite/index.mjs +65 -37
  30. package/dist/insights/vite.d.ts +22 -0
  31. package/dist/{insights/insights.d.ts → insights.d.ts} +33 -22
  32. package/dist/loader/index.cjs +2 -2
  33. package/dist/loader/index.mjs +2 -2
  34. package/dist/loader/package.json +1 -1
  35. package/dist/optimizer.cjs +201 -3817
  36. package/dist/optimizer.d.ts +754 -707
  37. package/dist/optimizer.mjs +2605 -3628
  38. package/dist/preloader.cjs +266 -0
  39. package/dist/preloader.mjs +195 -0
  40. package/dist/qwikloader.debug.js +228 -222
  41. package/dist/qwikloader.js +1 -3
  42. package/dist/server.cjs +915 -621
  43. package/dist/server.d.ts +519 -402
  44. package/dist/server.mjs +900 -615
  45. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/vite.config.mts +1 -1
  46. package/dist/starters/adapters/aws-lambda/package.json +1 -1
  47. package/dist/starters/adapters/aws-lambda/serverless.yml +15 -0
  48. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -8
  49. package/dist/starters/adapters/azure-swa/adapters/azure-swa/vite.config.mts +1 -1
  50. package/dist/starters/adapters/azure-swa/package.json +1 -1
  51. package/dist/starters/adapters/azure-swa/public/staticwebapp.config.json +7 -0
  52. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -4
  53. package/dist/starters/adapters/bun/adapters/bun/vite.config.mts +2 -2
  54. package/dist/starters/adapters/bun/package.json +1 -1
  55. package/dist/starters/adapters/bun/src/entry.bun.ts +3 -4
  56. package/dist/starters/adapters/cloud-run/adapters/cloud-run/vite.config.mts +1 -1
  57. package/dist/starters/adapters/cloud-run/package.json +1 -1
  58. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +2 -6
  59. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/vite.config.mts +1 -1
  60. package/dist/starters/adapters/cloudflare-pages/package.json +1 -1
  61. package/dist/starters/adapters/cloudflare-pages/public/_headers +2 -0
  62. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -4
  63. package/dist/starters/adapters/deno/adapters/deno/vite.config.mts +1 -1
  64. package/dist/starters/adapters/deno/package.json +1 -1
  65. package/dist/starters/adapters/deno/src/entry.deno.ts +3 -4
  66. package/dist/starters/adapters/express/adapters/express/vite.config.mts +1 -1
  67. package/dist/starters/adapters/express/package.json +1 -1
  68. package/dist/starters/adapters/express/src/entry.express.tsx +6 -5
  69. package/dist/starters/adapters/fastify/adapters/fastify/vite.config.mts +1 -1
  70. package/dist/starters/adapters/fastify/package.json +1 -1
  71. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +3 -2
  72. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +10 -3
  73. package/dist/starters/adapters/firebase/adapters/firebase/vite.config.mts +1 -1
  74. package/dist/starters/adapters/firebase/firebase.json +12 -1
  75. package/dist/starters/adapters/firebase/functions/index.js +2 -3
  76. package/dist/starters/adapters/firebase/package.json +1 -1
  77. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -4
  78. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/vite.config.mts +1 -1
  79. package/dist/starters/adapters/netlify-edge/package.json +1 -1
  80. package/dist/starters/adapters/netlify-edge/public/_headers +2 -0
  81. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -4
  82. package/dist/starters/adapters/node-server/adapters/node-server/vite.config.mts +1 -1
  83. package/dist/starters/adapters/node-server/package.json +1 -1
  84. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +3 -4
  85. package/dist/starters/adapters/ssg/README.md +9 -0
  86. package/dist/starters/adapters/{static/adapters/static → ssg/adapters/ssg}/vite.config.mts +2 -2
  87. package/dist/starters/adapters/ssg/package.json +19 -0
  88. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/vite.config.mts +1 -1
  89. package/dist/starters/adapters/vercel-edge/package.json +1 -1
  90. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -4
  91. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  92. package/dist/starters/features/auth/package.json +1 -1
  93. package/dist/starters/features/bootstrap/src/routes/bootstrap/layout.tsx +0 -11
  94. package/dist/starters/features/csr/index.html +23 -0
  95. package/dist/starters/features/csr/package.json +29 -0
  96. package/dist/starters/features/csr/src/root.tsx +15 -0
  97. package/dist/starters/features/csr/vite.config.mts +13 -0
  98. package/dist/starters/features/localize/package.json +3 -3
  99. package/dist/starters/features/localize/src/entry.ssr.tsx +17 -23
  100. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +1 -1
  101. package/dist/starters/features/pandacss/package.json +1 -1
  102. package/dist/starters/features/partytown/package.json +4 -4
  103. package/dist/starters/features/partytown/src/components/partytown/partytown.tsx +2 -2
  104. package/dist/starters/features/playwright/playwright-report/index.html +953 -911
  105. package/dist/starters/features/postcss/postcss.config.js +2 -2
  106. package/dist/starters/features/service-worker/package.json +13 -0
  107. package/dist/starters/features/service-worker/src/routes/service-worker.ts +14 -0
  108. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  109. package/dist/starters/features/tailwind/package.json +4 -3
  110. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  111. package/dist/starters/features/tailwind/src/global.css +1 -1
  112. package/dist/starters/features/tailwind-v3/package.json +1 -1
  113. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  114. package/dist/starters/features/tailwind-v3/tailwind.config.js +2 -2
  115. package/dist/testing/index.cjs +14313 -11732
  116. package/dist/testing/index.d.ts +1112 -141
  117. package/dist/testing/index.mjs +14225 -11661
  118. package/dist/testing/package.json +1 -1
  119. package/package.json +28 -14
  120. package/public.d.ts +5 -0
  121. package/server.d.ts +1 -0
  122. package/dist/insights/index.d.ts +0 -1
  123. package/dist/insights/vite/index.d.ts +0 -1
  124. package/dist/insights/vite/insights-plugin.d.ts +0 -10
  125. package/dist/prefetch/index.cjs +0 -4
  126. package/dist/prefetch/index.d.ts +0 -2
  127. package/dist/prefetch/index.mjs +0 -3
  128. package/dist/qwik-prefetch.debug.js +0 -244
  129. package/dist/qwik-prefetch.js +0 -1
  130. package/dist/starters/adapters/static/README.md +0 -5
  131. package/dist/starters/adapters/static/package.json +0 -19
  132. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
@@ -13,7 +13,7 @@ export default extendConfig(baseConfig, () => {
13
13
  minify: false,
14
14
  ssr: true,
15
15
  rollupOptions: {
16
- input: ["./src/entry_aws-lambda.tsx", "@qwik-router-config"],
16
+ input: ["./src/entry_aws-lambda.tsx"],
17
17
  },
18
18
  },
19
19
  plugins: [nodeServerAdapter({ name: "aws-lambda" })],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "AWS Lambda",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/aws-lambda/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/aws-lambda/vite.config.mts",
5
5
  "serve": "qwik build && serverless offline",
6
6
  "deploy": "serverless deploy"
7
7
  },
@@ -18,6 +18,21 @@ functions:
18
18
  custom:
19
19
  serverless-offline:
20
20
  httpPort: 4000
21
+ serverless-http:
22
+ # Make sure serverless-http serves files correctly
23
+ binary:
24
+ contentTypes:
25
+ - "application/javascript"
26
+ - "text/javascript"
27
+ - "application/json"
28
+ - "text/html"
29
+ - "text/css"
30
+ - "image/*"
31
+ - "font/*"
32
+ # the js files under build have hash names and are immutable
33
+ cacheControl:
34
+ - pattern: "build/**/*.js"
35
+ value: "public, max-age=31536000, immutable"
21
36
 
22
37
  package:
23
38
  excludeDevDependencies: true
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/aws/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformAwsLambda,
@@ -18,14 +16,10 @@ import "source-map-support/register";
18
16
  import render from "./entry.ssr";
19
17
 
20
18
  declare global {
21
- interface QwikRouterPlatform extends PlatformAwsLambda {}
19
+ type QwikRouterPlatform = PlatformAwsLambda;
22
20
  }
23
21
 
24
- export const { handle } = createQwikRouter({
25
- render,
26
- qwikRouterConfig,
27
- manifest,
28
- });
22
+ export const { handle } = createQwikRouter({ render });
29
23
 
30
24
  export const qwikApp = serverless({ handle }, { binary: true });
31
25
  // handler is the default export for the lambda functions
@@ -8,7 +8,7 @@ export default extendConfig(baseConfig, () => {
8
8
  ssr: true,
9
9
  outDir: "azure-functions/render",
10
10
  rollupOptions: {
11
- input: ["src/entry.azure-swa.tsx", "@qwik-router-config"],
11
+ input: ["src/entry.azure-swa.tsx"],
12
12
  output: {
13
13
  entryFileNames: `[name].[hash].mjs`,
14
14
  chunkFileNames: `[name].[hash].mjs`,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Azure Static Web Apps",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/azure-swa/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/azure-swa/vite.config.mts",
5
5
  "serve": "swa start"
6
6
  },
7
7
  "devDependencies": {
@@ -19,5 +19,12 @@
19
19
  },
20
20
  "platform": {
21
21
  "apiRuntime": "node:18"
22
+ },
23
+ "responseOverrides": {
24
+ "build/**/*.js": {
25
+ "headers": {
26
+ "Cache-Control": "public, max-age=31536000, immutable"
27
+ }
28
+ }
22
29
  }
23
30
  }
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/azure-swa/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformAzure,
@@ -16,7 +14,7 @@ import {
16
14
  import render from "./entry.ssr";
17
15
 
18
16
  declare global {
19
- interface QwikRouterPlatform extends PlatformAzure {}
17
+ type QwikRouterPlatform = PlatformAzure;
20
18
  }
21
19
 
22
- export default createQwikRouter({ render, qwikRouterConfig, manifest });
20
+ export default createQwikRouter({ render });
@@ -11,7 +11,7 @@ export default extendConfig(baseConfig, () => {
11
11
  build: {
12
12
  ssr: true,
13
13
  rollupOptions: {
14
- input: ["src/entry.bun.ts", "@qwik-router-config"],
14
+ input: ["src/entry.bun.ts"],
15
15
  },
16
16
  minify: false,
17
17
  },
@@ -20,7 +20,7 @@ export default extendConfig(baseConfig, () => {
20
20
  ssg: {
21
21
  include: ["/*"],
22
22
  origin: "https://yoursite.dev",
23
- maxWorkers: 1, // Limit Workers to 1, otherwise SSG will hang when compiling Qwik City app with `bun run --bun build`.
23
+ maxWorkers: 1, // Limit Workers to 1, otherwise SSG will hang when compiling Qwik Router app with `bun run --bun build`.
24
24
  },
25
25
  }),
26
26
  ],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Bun server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/bun/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/bun/vite.config.mts",
5
5
  "serve": "bun server/entry.bun.js"
6
6
  },
7
7
  "__qwik__": {
@@ -8,16 +8,15 @@
8
8
  * - https://bun.sh/docs/api/http
9
9
  *
10
10
  */
11
- import { manifest } from "@qwik-client-manifest";
12
- import qwikRouterConfig from "@qwik-router-config";
13
11
  import { createQwikRouter } from "@qwik.dev/router/middleware/bun";
14
12
  import render from "./entry.ssr";
15
13
 
16
14
  // Create the Qwik Router Bun middleware
17
15
  const { router, notFound, staticFile } = createQwikRouter({
18
16
  render,
19
- qwikRouterConfig,
20
- manifest,
17
+ static: {
18
+ cacheControl: "public, max-age=31536000, immutable",
19
+ },
21
20
  });
22
21
 
23
22
  // Allow for dynamic port
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.cloud-run.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.cloud-run.tsx"],
11
11
  },
12
12
  },
13
13
  plugins: [cloudRunAdapter()],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Google Cloud Run server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/cloud-run/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/cloud-run/vite.config.mts",
5
5
  "deploy": "gcloud run deploy my-cloud-run-app --source ."
6
6
  },
7
7
  "__qwik__": {
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/gcp-cloud-run/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformNode,
@@ -17,7 +15,7 @@ import { createServer } from "node:http";
17
15
  import render from "./entry.ssr";
18
16
 
19
17
  declare global {
20
- interface QwikRouterPlatform extends PlatformNode {}
18
+ type QwikRouterPlatform = PlatformNode;
21
19
  }
22
20
 
23
21
  /** The default headers used by helmet */
@@ -51,10 +49,8 @@ const DEFAULT_HEADERS = {
51
49
 
52
50
  const { router, notFound, staticFile } = createQwikRouter({
53
51
  render,
54
- qwikRouterConfig,
55
- manifest,
56
52
  static: {
57
- cacheControl: "public, max-age=31557600",
53
+ cacheControl: "public, max-age=31536000, immutable",
58
54
  },
59
55
  getOrigin(req) {
60
56
  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.cloudflare-pages.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.cloudflare-pages.tsx"],
11
11
  },
12
12
  },
13
13
  plugins: [cloudflarePagesAdapter()],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Cloudflare Pages",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/cloudflare-pages/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/cloudflare-pages/vite.config.mts",
5
5
  "deploy": "wrangler pages deploy ./dist",
6
6
  "serve": "wrangler pages dev ./dist --compatibility-flags=nodejs_als"
7
7
  },
@@ -7,3 +7,5 @@
7
7
 
8
8
  /build/*
9
9
  Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
10
+ /assets/*
11
+ Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/cloudflare-pages/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformCloudflarePages,
@@ -16,9 +14,9 @@ import {
16
14
  import render from "./entry.ssr";
17
15
 
18
16
  declare global {
19
- interface QwikRouterPlatform extends PlatformCloudflarePages {}
17
+ type QwikRouterPlatform = PlatformCloudflarePages;
20
18
  }
21
19
 
22
- const fetch = createQwikRouter({ render, qwikRouterConfig, manifest });
20
+ const fetch = createQwikRouter({ render });
23
21
 
24
22
  export { fetch };
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.deno.ts", "@qwik-router-config"],
10
+ input: ["src/entry.deno.ts"],
11
11
  },
12
12
  minify: false,
13
13
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Deno server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/deno/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/deno/vite.config.mts",
5
5
  "serve": "deno run --allow-net --allow-read --allow-env server/entry.deno.js"
6
6
  },
7
7
  "__qwik__": {
@@ -8,16 +8,15 @@
8
8
  * - https://docs.deno.com/runtime/tutorials/http_server
9
9
  *
10
10
  */
11
- import { manifest } from "@qwik-client-manifest";
12
- import qwikRouterConfig from "@qwik-router-config";
13
11
  import { createQwikRouter } from "@qwik.dev/router/middleware/deno";
14
12
  import render from "./entry.ssr";
15
13
 
16
14
  // Create the Qwik Router Deno middleware
17
15
  const { router, notFound, staticFile } = createQwikRouter({
18
16
  render,
19
- qwikRouterConfig,
20
- manifest,
17
+ static: {
18
+ cacheControl: "public, max-age=31536000, immutable",
19
+ },
21
20
  });
22
21
 
23
22
  // Allow for dynamic port
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.express.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.express.tsx"],
11
11
  },
12
12
  },
13
13
  plugins: [nodeServerAdapter({ name: "express" })],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Express.js server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/express/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/express/vite.config.mts",
5
5
  "serve": "node server/entry.express"
6
6
  },
7
7
  "dependencies": {
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/node/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformNode,
@@ -20,12 +18,13 @@ import { fileURLToPath } from "node:url";
20
18
  import render from "./entry.ssr";
21
19
 
22
20
  declare global {
23
- interface QwikRouterPlatform extends PlatformNode {}
21
+ type QwikRouterPlatform = PlatformNode;
24
22
  }
25
23
 
26
24
  // Directories where the static assets are located
27
25
  const distDir = join(fileURLToPath(import.meta.url), "..", "..", "dist");
28
26
  const buildDir = join(distDir, "build");
27
+ const assetsDir = join(distDir, "assets");
29
28
 
30
29
  // Allow for dynamic port
31
30
  const PORT = process.env.PORT ?? 3000;
@@ -33,8 +32,6 @@ const PORT = process.env.PORT ?? 3000;
33
32
  // Create the Qwik Router Node middleware
34
33
  const { router, notFound } = createQwikRouter({
35
34
  render,
36
- qwikRouterConfig,
37
- manifest,
38
35
  // getOrigin(req) {
39
36
  // // If deploying under a proxy, you may need to build the origin from the request headers
40
37
  // // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
@@ -55,6 +52,10 @@ const app = express();
55
52
  // Static asset handlers
56
53
  // https://expressjs.com/en/starter/static-files.html
57
54
  app.use(`/build`, express.static(buildDir, { immutable: true, maxAge: "1y" }));
55
+ app.use(
56
+ `/assets`,
57
+ express.static(assetsDir, { immutable: true, maxAge: "1y" }),
58
+ );
58
59
  app.use(express.static(distDir, { redirect: false }));
59
60
 
60
61
  // Use Qwik Router's page and endpoint request handler
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.fastify.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.fastify.tsx"],
11
11
  },
12
12
  },
13
13
  plugins: [nodeServerAdapter({ name: "fastify" })],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Fastify server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/fastify/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/fastify/vite.config.mts",
5
5
  "serve": "node server/entry.fastify"
6
6
  },
7
7
  "dependencies": {
@@ -15,12 +15,13 @@ import { fileURLToPath } from "node:url";
15
15
  import FastifyQwik from "./plugins/fastify-qwik";
16
16
 
17
17
  declare global {
18
- interface QwikRouterPlatform extends PlatformNode {}
18
+ type QwikRouterPlatform = PlatformNode;
19
19
  }
20
20
 
21
21
  // Directories where the static assets are located
22
22
  const distDir = join(fileURLToPath(import.meta.url), "..", "..", "dist");
23
23
  const buildDir = join(distDir, "build");
24
+ const assetsDir = join(distDir, "assets");
24
25
 
25
26
  // Allow for dynamic port and host
26
27
  const PORT = parseInt(process.env.PORT ?? "3000");
@@ -39,7 +40,7 @@ const start = async () => {
39
40
  // await fastify.register(import('@fastify/compress'))
40
41
 
41
42
  // Handle Qwik Router using a plugin
42
- await fastify.register(FastifyQwik, { distDir, buildDir });
43
+ await fastify.register(FastifyQwik, { distDir, buildDir, assetsDir });
43
44
 
44
45
  // Start the fastify server
45
46
  await fastify.listen({ port: PORT, host: HOST });
@@ -1,5 +1,4 @@
1
1
  import fastifyStatic from "@fastify/static";
2
- import qwikRouterConfig from "@qwik-router-config";
3
2
  import { createQwikRouter } from "@qwik.dev/router/middleware/node";
4
3
  import type { FastifyPluginAsync } from "fastify";
5
4
  import fastifyPlugin from "fastify-plugin";
@@ -9,15 +8,16 @@ import render from "../entry.ssr";
9
8
  export interface FastifyQwikOptions {
10
9
  distDir: string;
11
10
  buildDir: string;
11
+ assetsDir: string;
12
12
  }
13
13
 
14
- const { router, notFound } = createQwikRouter({ render, qwikRouterConfig });
14
+ const { router, notFound } = createQwikRouter({ render });
15
15
 
16
16
  const qwikPlugin: FastifyPluginAsync<FastifyQwikOptions> = async (
17
17
  fastify,
18
18
  options,
19
19
  ) => {
20
- const { buildDir, distDir } = options;
20
+ const { buildDir, distDir, assetsDir } = options;
21
21
 
22
22
  fastify.register(fastifyStatic, {
23
23
  root: buildDir,
@@ -27,6 +27,13 @@ const qwikPlugin: FastifyPluginAsync<FastifyQwikOptions> = async (
27
27
  decorateReply: false,
28
28
  });
29
29
 
30
+ fastify.register(fastifyStatic, {
31
+ root: assetsDir,
32
+ prefix: "/assets",
33
+ immutable: true,
34
+ maxAge: "1y",
35
+ });
36
+
30
37
  fastify.register(fastifyStatic, {
31
38
  root: distDir,
32
39
  redirect: false,
@@ -12,7 +12,7 @@ export default extendConfig(baseConfig, () => {
12
12
  minify: false,
13
13
  ssr: true,
14
14
  rollupOptions: {
15
- input: ["./src/entry-firebase.tsx", "@qwik-router-config"],
15
+ input: ["./src/entry-firebase.tsx"],
16
16
  },
17
17
  outDir: "./functions/server",
18
18
  },
@@ -19,6 +19,17 @@
19
19
  "function": "app"
20
20
  }
21
21
  ],
22
- "ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
22
+ "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
23
+ "headers": [
24
+ {
25
+ "source": "build/**/*.js",
26
+ "headers": [
27
+ {
28
+ "key": "Cache-Control",
29
+ "value": "public, max-age=31536000, s-maxage=31536000, immutable"
30
+ }
31
+ ]
32
+ }
33
+ ]
23
34
  }
24
35
  }
@@ -1,5 +1,4 @@
1
1
  import { https } from "firebase-functions";
2
- import qwikApp from './server/entry-firebase.mjs';
2
+ import qwikApp from "./server/entry-firebase.mjs";
3
3
 
4
-
5
- export const app = https.onRequest(qwikApp)
4
+ export const app = https.onRequest(qwikApp);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Firebase",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/firebase/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/firebase/vite.config.mts",
5
5
  "serve": "qwik build && firebase emulators:start",
6
6
  "deploy": "firebase deploy"
7
7
  },
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/firebase/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformFirebase,
@@ -16,7 +14,7 @@ import {
16
14
  import render from "./entry.ssr";
17
15
 
18
16
  declare global {
19
- interface QwikRouterPlatform extends PlatformFirebase {}
17
+ type QwikRouterPlatform = PlatformFirebase;
20
18
  }
21
19
 
22
- export default createQwikRouter({ render, qwikRouterConfig, manifest });
20
+ export default createQwikRouter({ render });
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.netlify-edge.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.netlify-edge.tsx"],
11
11
  },
12
12
  outDir: ".netlify/edge-functions/entry.netlify-edge",
13
13
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Netlify Edge Functions",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/netlify-edge/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/netlify-edge/vite.config.mts",
5
5
  "deploy": "netlify deploy --build"
6
6
  },
7
7
  "devDependencies": {
@@ -1,2 +1,4 @@
1
+ /assets/*
2
+ Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
1
3
  /build/*
2
4
  Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/netlify-edge/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import {
13
11
  createQwikRouter,
14
12
  type PlatformNetlify,
@@ -16,7 +14,7 @@ import {
16
14
  import render from "./entry.ssr";
17
15
 
18
16
  declare global {
19
- interface QwikRouterPlatform extends PlatformNetlify {}
17
+ type QwikRouterPlatform = PlatformNetlify;
20
18
  }
21
19
 
22
- export default createQwikRouter({ render, qwikRouterConfig, manifest });
20
+ export default createQwikRouter({ render });
@@ -7,7 +7,7 @@ export default extendConfig(baseConfig, () => {
7
7
  build: {
8
8
  ssr: true,
9
9
  rollupOptions: {
10
- input: ["src/entry.node-server.tsx", "@qwik-router-config"],
10
+ input: ["src/entry.node-server.tsx"],
11
11
  },
12
12
  },
13
13
  plugins: [nodeServerAdapter({ name: "node-server" })],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "Vanilla Node server",
3
3
  "scripts": {
4
- "build.server": "vite build -c adapters/node-server/vite.config.mts",
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/node-server/vite.config.mts",
5
5
  "serve": "node server/entry.node-server"
6
6
  },
7
7
  "__qwik__": {
@@ -7,8 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/node/
8
8
  *
9
9
  */
10
- import { manifest } from "@qwik-client-manifest";
11
- import qwikRouterConfig from "@qwik-router-config";
12
10
  import { createQwikRouter } from "@qwik.dev/router/middleware/node";
13
11
  import { createServer } from "node:http";
14
12
  import render from "./entry.ssr";
@@ -19,8 +17,9 @@ const PORT = process.env.PORT ?? 3004;
19
17
  // Create the Qwik Router express middleware
20
18
  const { router, notFound, staticFile } = createQwikRouter({
21
19
  render,
22
- qwikRouterConfig,
23
- manifest,
20
+ static: {
21
+ cacheControl: "public, max-age=31536000, immutable",
22
+ },
24
23
  });
25
24
 
26
25
  const server = createServer();
@@ -0,0 +1,9 @@
1
+ ## Static Site Generator (Node.js)
2
+
3
+ Be sure to configure your server to serve very long cache headers for the `build/**/*.js` files.
4
+
5
+ Typically you'd set the `Cache-Control` header for those files to `public, max-age=31536000, immutable`.
6
+
7
+ ```shell
8
+ npm run build.server
9
+ ```
@@ -1,4 +1,4 @@
1
- import { staticAdapter } from "@qwik.dev/router/adapters/static/vite";
1
+ import { ssgAdapter } from "@qwik.dev/router/adapters/ssg/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
3
  import baseConfig from "../../vite.config.mts";
4
4
 
@@ -11,7 +11,7 @@ export default extendConfig(baseConfig, () => {
11
11
  },
12
12
  },
13
13
  plugins: [
14
- staticAdapter({
14
+ ssgAdapter({
15
15
  origin: "https://yoursite.qwik.dev",
16
16
  }),
17
17
  ],