@qwik.dev/core 2.0.0-beta.4 → 2.0.0-beta.41

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 (151) hide show
  1. package/dist/backpatch/index.d.ts +2 -0
  2. package/dist/backpatch/index.mjs +5 -0
  3. package/dist/backpatch/package.json +8 -0
  4. package/dist/backpatch-executor.debug.js +59 -0
  5. package/dist/backpatch-executor.js +1 -0
  6. package/dist/build/package.json +1 -1
  7. package/dist/cli.mjs +12974 -0
  8. package/dist/core-internal.d.ts +1579 -818
  9. package/dist/core.min.mjs +9 -1
  10. package/dist/core.mjs +14777 -9194
  11. package/dist/core.mjs.map +1 -1
  12. package/dist/core.prod.mjs +10480 -5372
  13. package/dist/insights/index.qwik.mjs +82 -71
  14. package/dist/insights/vite/index.mjs +79 -81
  15. package/dist/loader/index.mjs +2 -2
  16. package/dist/loader/package.json +1 -1
  17. package/dist/optimizer.d.ts +78 -295
  18. package/dist/optimizer.mjs +2948 -4088
  19. package/dist/out-of-order-executor.debug.js +140 -0
  20. package/dist/out-of-order-executor.js +1 -0
  21. package/dist/preloader.mjs +172 -192
  22. package/dist/qwikloader.debug.js +403 -244
  23. package/dist/qwikloader.js +1 -1
  24. package/dist/server-modules.d.ts +1 -0
  25. package/dist/server.d.ts +54 -249
  26. package/dist/server.mjs +2332 -1407
  27. package/dist/server.prod.mjs +3844 -0
  28. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/{vite.config.mts → vite.config.ts} +3 -3
  29. package/dist/starters/adapters/aws-lambda/package.json +3 -2
  30. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -6
  31. package/dist/starters/adapters/azure-swa/adapters/azure-swa/{vite.config.mts → vite.config.ts} +3 -3
  32. package/dist/starters/adapters/azure-swa/package.json +3 -2
  33. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -3
  34. package/dist/starters/adapters/bun/adapters/bun/{vite.config.mts → vite.config.ts} +4 -4
  35. package/dist/starters/adapters/bun/package.json +3 -2
  36. package/dist/starters/adapters/bun/src/entry.bun.ts +37 -10
  37. package/dist/starters/adapters/cloud-run/adapters/cloud-run/{vite.config.mts → vite.config.ts} +3 -3
  38. package/dist/starters/adapters/cloud-run/package.json +3 -2
  39. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +23 -7
  40. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/{vite.config.mts → vite.config.ts} +3 -3
  41. package/dist/starters/adapters/cloudflare-pages/package.json +3 -2
  42. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -3
  43. package/dist/starters/adapters/cloudflare-workers/README.md +52 -0
  44. package/dist/starters/adapters/cloudflare-workers/adapters/cloudflare-workers/vite.config.ts +15 -0
  45. package/dist/starters/adapters/cloudflare-workers/gitignore +3 -0
  46. package/dist/starters/adapters/cloudflare-workers/package.json +31 -0
  47. package/dist/starters/adapters/cloudflare-workers/public/.assetsignore +4 -0
  48. package/dist/starters/adapters/cloudflare-workers/public/_headers +11 -0
  49. package/dist/starters/adapters/cloudflare-workers/public/_redirects +1 -0
  50. package/dist/starters/adapters/cloudflare-workers/src/entry.cloudflare-pages.tsx +22 -0
  51. package/dist/starters/adapters/cloudflare-workers/worker-configuration.d.ts +5 -0
  52. package/dist/starters/adapters/cloudflare-workers/wrangler.jsonc +41 -0
  53. package/dist/starters/adapters/deno/adapters/deno/{vite.config.mts → vite.config.ts} +3 -3
  54. package/dist/starters/adapters/deno/package.json +3 -2
  55. package/dist/starters/adapters/deno/src/entry.deno.ts +43 -10
  56. package/dist/starters/adapters/express/adapters/express/{vite.config.mts → vite.config.ts} +3 -3
  57. package/dist/starters/adapters/express/package.json +4 -3
  58. package/dist/starters/adapters/express/src/entry.express.tsx +22 -7
  59. package/dist/starters/adapters/fastify/adapters/fastify/{vite.config.mts → vite.config.ts} +3 -3
  60. package/dist/starters/adapters/fastify/package.json +5 -4
  61. package/dist/starters/adapters/fastify/src/entry.fastify.tsx +21 -1
  62. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +11 -4
  63. package/dist/starters/adapters/firebase/adapters/firebase/{vite.config.mts → vite.config.ts} +3 -3
  64. package/dist/starters/adapters/firebase/package.json +3 -2
  65. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -3
  66. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/{vite.config.mts → vite.config.ts} +3 -3
  67. package/dist/starters/adapters/netlify-edge/package.json +5 -4
  68. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -3
  69. package/dist/starters/adapters/node-server/adapters/node-server/{vite.config.mts → vite.config.ts} +3 -3
  70. package/dist/starters/adapters/node-server/package.json +3 -2
  71. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +22 -6
  72. package/dist/starters/adapters/{static/adapters/static/vite.config.mts → ssg/adapters/ssg/vite.config.ts} +4 -4
  73. package/dist/starters/adapters/ssg/package.json +20 -0
  74. package/dist/starters/adapters/vercel-edge/README.md +2 -2
  75. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/{vite.config.mts → vite.config.ts} +3 -3
  76. package/dist/starters/adapters/vercel-edge/package.json +3 -2
  77. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -3
  78. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  79. package/dist/starters/features/auth/package.json +1 -1
  80. package/dist/starters/features/compiled-i18n/package.json +37 -0
  81. package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx +30 -0
  82. package/dist/starters/features/compiled-i18n/src/entry.ssr.tsx +31 -0
  83. package/dist/starters/features/compiled-i18n/src/routes/plugin@compiled-i18n.ts +28 -0
  84. package/dist/starters/features/csr/index.html +27 -0
  85. package/dist/starters/features/csr/package.json +29 -0
  86. package/dist/starters/features/csr/src/root.tsx +15 -0
  87. package/dist/starters/features/csr/vite.config.ts +13 -0
  88. package/dist/starters/features/cypress/src/actions/example.action.ts +5 -0
  89. package/dist/starters/features/cypress/src/components/example/example.cy.tsx +50 -8
  90. package/dist/starters/features/cypress/src/components/example/example.tsx +13 -3
  91. package/dist/starters/features/cypress/src/loaders/example.loader.ts +5 -0
  92. package/dist/starters/features/drizzle/package.json +1 -1
  93. package/dist/starters/features/pandacss/package.json +1 -1
  94. package/dist/starters/features/postcss/postcss.config.js +1 -1
  95. package/dist/starters/features/storybook/.storybook/tsconfig.json +0 -1
  96. package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
  97. package/dist/starters/features/tailwind/package.json +2 -2
  98. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  99. package/dist/starters/features/tailwind-v3/package.json +1 -1
  100. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  101. package/dist/starters/features/vitest/package.json +1 -1
  102. package/dist/testing/index.d.ts +1000 -7
  103. package/dist/testing/index.mjs +16487 -11656
  104. package/dist/testing/package.json +1 -1
  105. package/dist/worker/index.d.mts +21 -0
  106. package/dist/worker/index.mjs +251 -0
  107. package/dist/worker/package.json +9 -0
  108. package/dist/worker/worker.js +13 -0
  109. package/dist/worker/worker.node.js +15 -0
  110. package/dist/worker/worker.shared.js +63 -0
  111. package/handlers.mjs +21 -1
  112. package/package.json +40 -56
  113. package/public.d.ts +12 -2
  114. package/{qwik-cli.cjs → qwik-cli.mjs} +1 -1
  115. package/server.d.ts +2 -0
  116. package/worker.d.ts +2 -0
  117. package/bindings/qwik.darwin-arm64.node +0 -0
  118. package/bindings/qwik.darwin-x64.node +0 -0
  119. package/bindings/qwik.linux-x64-gnu.node +0 -0
  120. package/bindings/qwik.wasm.cjs +0 -471
  121. package/bindings/qwik.wasm.mjs +0 -464
  122. package/bindings/qwik.win32-x64-msvc.node +0 -0
  123. package/bindings/qwik_wasm_bg.wasm +0 -0
  124. package/dist/build/index.cjs +0 -35
  125. package/dist/build/index.cjs.map +0 -7
  126. package/dist/build/index.dev.cjs +0 -37
  127. package/dist/build/index.dev.cjs.map +0 -7
  128. package/dist/build/index.prod.cjs +0 -37
  129. package/dist/build/index.prod.cjs.map +0 -7
  130. package/dist/cli.cjs +0 -5545
  131. package/dist/core.cjs +0 -11870
  132. package/dist/core.cjs.map +0 -1
  133. package/dist/core.prod.cjs +0 -5723
  134. package/dist/insights/index.qwik.cjs +0 -1
  135. package/dist/insights/vite/index.cjs +0 -1
  136. package/dist/loader/index.cjs +0 -4
  137. package/dist/optimizer.cjs +0 -4020
  138. package/dist/preloader.cjs +0 -269
  139. package/dist/server.cjs +0 -3040
  140. package/dist/starters/adapters/static/package.json +0 -19
  141. package/dist/starters/features/localize/package.json +0 -37
  142. package/dist/starters/features/localize/src/entry.ssr.tsx +0 -30
  143. package/dist/starters/features/localize/src/locales/message.en.json +0 -8
  144. package/dist/starters/features/localize/src/locales/message.it.json +0 -8
  145. package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +0 -94
  146. package/dist/starters/features/localize/src/routes/[locale]/index.tsx +0 -52
  147. package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +0 -12
  148. package/dist/starters/features/playwright/playwright-report/index.html +0 -22026
  149. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
  150. package/dist/testing/index.cjs +0 -33388
  151. /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
@@ -1,7 +1,7 @@
1
1
  import { nodeServerAdapter } from "@qwik.dev/router/adapters/node-server/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
3
  import { builtinModules } from "module";
4
- import baseConfig from "../../vite.config.mts";
4
+ import baseConfig from "../../vite.config.ts";
5
5
  export default extendConfig(baseConfig, () => {
6
6
  return {
7
7
  ssr: {
@@ -12,8 +12,8 @@ export default extendConfig(baseConfig, () => {
12
12
  build: {
13
13
  minify: false,
14
14
  ssr: true,
15
- rollupOptions: {
16
- input: ["./src/entry_aws-lambda.tsx", "@qwik-router-config"],
15
+ rolldownOptions: {
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.ts",
5
5
  "serve": "qwik build && serverless offline",
6
6
  "deploy": "serverless deploy"
7
7
  },
@@ -19,5 +19,6 @@
19
19
  "https://aws.amazon.com/es/lambda/",
20
20
  "https://www.serverless.com/cloud/docs/get-started"
21
21
  ]
22
- }
22
+ },
23
+ "type": "module"
23
24
  }
@@ -7,7 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/aws/
8
8
  *
9
9
  */
10
- import qwikRouterConfig from "@qwik-router-config";
11
10
  import {
12
11
  createQwikRouter,
13
12
  type PlatformAwsLambda,
@@ -17,13 +16,10 @@ import "source-map-support/register";
17
16
  import render from "./entry.ssr";
18
17
 
19
18
  declare global {
20
- interface QwikRouterPlatform extends PlatformAwsLambda {}
19
+ type QwikRouterPlatform = PlatformAwsLambda;
21
20
  }
22
21
 
23
- export const { handle } = createQwikRouter({
24
- render,
25
- qwikRouterConfig,
26
- });
22
+ export const { handle } = createQwikRouter({ render });
27
23
 
28
24
  export const qwikApp = serverless({ handle }, { binary: true });
29
25
  // handler is the default export for the lambda functions
@@ -1,14 +1,14 @@
1
1
  import { azureSwaAdapter } from "@qwik.dev/router/adapters/azure-swa/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
- import baseConfig from "../../vite.config.mts";
3
+ import baseConfig from "../../vite.config.ts";
4
4
 
5
5
  export default extendConfig(baseConfig, () => {
6
6
  return {
7
7
  build: {
8
8
  ssr: true,
9
9
  outDir: "azure-functions/render",
10
- rollupOptions: {
11
- input: ["src/entry.azure-swa.tsx", "@qwik-router-config"],
10
+ rolldownOptions: {
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.ts",
5
5
  "serve": "swa start"
6
6
  },
7
7
  "devDependencies": {
@@ -24,5 +24,6 @@
24
24
  "- pnpm run deploy: it will use the SWA CLI to deploy your site"
25
25
  ]
26
26
  }
27
- }
27
+ },
28
+ "type": "module"
28
29
  }
@@ -7,7 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/azure-swa/
8
8
  *
9
9
  */
10
- import qwikRouterConfig from "@qwik-router-config";
11
10
  import {
12
11
  createQwikRouter,
13
12
  type PlatformAzure,
@@ -15,7 +14,7 @@ import {
15
14
  import render from "./entry.ssr";
16
15
 
17
16
  declare global {
18
- interface QwikRouterPlatform extends PlatformAzure {}
17
+ type QwikRouterPlatform = PlatformAzure;
19
18
  }
20
19
 
21
- export default createQwikRouter({ render, qwikRouterConfig });
20
+ export default createQwikRouter({ render });
@@ -1,7 +1,7 @@
1
1
  import { bunServerAdapter } from "@qwik.dev/router/adapters/bun-server/vite";
2
2
  import { _TextEncoderStream_polyfill } from "@qwik.dev/router/middleware/request-handler";
3
3
  import { extendConfig } from "@qwik.dev/router/vite";
4
- import baseConfig from "../../vite.config.mts";
4
+ import baseConfig from "../../vite.config.ts";
5
5
 
6
6
  // This polyfill is required when you use SSG and build your app with Bun, because Bun does not have TextEncoderStream. See: https://github.com/oven-sh/bun/issues/5648
7
7
  globalThis.TextEncoderStream ||= _TextEncoderStream_polyfill;
@@ -10,8 +10,8 @@ export default extendConfig(baseConfig, () => {
10
10
  return {
11
11
  build: {
12
12
  ssr: true,
13
- rollupOptions: {
14
- input: ["src/entry.bun.ts", "@qwik-router-config"],
13
+ rolldownOptions: {
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.ts",
5
5
  "serve": "bun server/entry.bun.js"
6
6
  },
7
7
  "__qwik__": {
@@ -23,5 +23,6 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/bun": "*"
26
- }
26
+ },
27
+ "type": "module"
27
28
  }
@@ -8,14 +8,13 @@
8
8
  * - https://bun.sh/docs/api/http
9
9
  *
10
10
  */
11
- import qwikRouterConfig from "@qwik-router-config";
11
+ import { getRequestEvent } from "@qwik.dev/router";
12
12
  import { createQwikRouter } from "@qwik.dev/router/middleware/bun";
13
13
  import render from "./entry.ssr";
14
14
 
15
15
  // Create the Qwik Router Bun middleware
16
- const { router, notFound, staticFile } = createQwikRouter({
16
+ const { router, staticFile } = createQwikRouter({
17
17
  render,
18
- qwikRouterConfig,
19
18
  static: {
20
19
  cacheControl: "public, max-age=31536000, immutable",
21
20
  },
@@ -27,7 +26,41 @@ const port = Number(Bun.env.PORT ?? 3000);
27
26
  // eslint-disable-next-line no-console
28
27
  console.log(`Server started: http://localhost:${port}/`);
29
28
 
29
+ // Optional request-aware diagnostics for crashes that escape request boundaries.
30
+ // This does not prevent Bun from crashing, but it does provide better diagnostics.
31
+ // See Bun and Node process event docs for runtime-specific behavior.
32
+ process.on("uncaughtException", (error) => {
33
+ const requestEv = getRequestEvent();
34
+ if (requestEv) {
35
+ console.error("Unhandled exception during request", {
36
+ method: requestEv.method,
37
+ url: requestEv.url.href,
38
+ headersSent: requestEv.headersSent,
39
+ error,
40
+ });
41
+ return;
42
+ }
43
+
44
+ console.error("Unhandled exception outside request", { error });
45
+ });
46
+
47
+ process.on("unhandledRejection", (reason) => {
48
+ const requestEv = getRequestEvent();
49
+ if (requestEv) {
50
+ console.error("Unhandled rejection during request", {
51
+ method: requestEv.method,
52
+ url: requestEv.url.href,
53
+ headersSent: requestEv.headersSent,
54
+ reason,
55
+ });
56
+ return;
57
+ }
58
+
59
+ console.error("Unhandled rejection outside request", { reason });
60
+ });
61
+
30
62
  Bun.serve({
63
+ maxRequestBodySize: 10 * 1024 * 1024,
31
64
  async fetch(request: Request) {
32
65
  const staticResponse = await staticFile(request);
33
66
  if (staticResponse) {
@@ -35,13 +68,7 @@ Bun.serve({
35
68
  }
36
69
 
37
70
  // Server-side render this request with Qwik Router
38
- const qwikRouterResponse = await router(request);
39
- if (qwikRouterResponse) {
40
- return qwikRouterResponse;
41
- }
42
-
43
- // Path not found
44
- return notFound(request);
71
+ return (await router(request))!;
45
72
  },
46
73
  port,
47
74
  });
@@ -1,13 +1,13 @@
1
1
  import { cloudRunAdapter } from "@qwik.dev/router/adapters/cloud-run/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
- import baseConfig from "../../vite.config.mts";
3
+ import baseConfig from "../../vite.config.ts";
4
4
 
5
5
  export default extendConfig(baseConfig, () => {
6
6
  return {
7
7
  build: {
8
8
  ssr: true,
9
- rollupOptions: {
10
- input: ["src/entry.cloud-run.tsx", "@qwik-router-config"],
9
+ rolldownOptions: {
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.ts",
5
5
  "deploy": "gcloud run deploy my-cloud-run-app --source ."
6
6
  },
7
7
  "__qwik__": {
@@ -20,5 +20,6 @@
20
20
  "- pnpm run deploy: it will use the gcloud CLI to deploy your site"
21
21
  ]
22
22
  }
23
- }
23
+ },
24
+ "type": "module"
24
25
  }
@@ -7,7 +7,7 @@
7
7
  * - https://qwik.dev/docs/deployments/gcp-cloud-run/
8
8
  *
9
9
  */
10
- import qwikRouterConfig from "@qwik-router-config";
10
+ import { getRequestEvent } from "@qwik.dev/router";
11
11
  import {
12
12
  createQwikRouter,
13
13
  type PlatformNode,
@@ -16,7 +16,7 @@ import { createServer } from "node:http";
16
16
  import render from "./entry.ssr";
17
17
 
18
18
  declare global {
19
- interface QwikRouterPlatform extends PlatformNode {}
19
+ type QwikRouterPlatform = PlatformNode;
20
20
  }
21
21
 
22
22
  /** The default headers used by helmet */
@@ -48,9 +48,8 @@ const DEFAULT_HEADERS = {
48
48
  "X-XSS-Protection": "0",
49
49
  };
50
50
 
51
- const { router, notFound, staticFile } = createQwikRouter({
51
+ const { router, staticFile } = createQwikRouter({
52
52
  render,
53
- qwikRouterConfig,
54
53
  static: {
55
54
  cacheControl: "public, max-age=31536000, immutable",
56
55
  },
@@ -79,15 +78,32 @@ const { router, notFound, staticFile } = createQwikRouter({
79
78
 
80
79
  const server = createServer();
81
80
 
81
+ // Optional request-aware diagnostics for crashes that escape request boundaries.
82
+ // This does not prevent Node from crashing, but it does provide better diagnostics for uncaught exceptions.
83
+ // See the Node documentation to handle uncaught exceptions and unhandled rejections in your app.
84
+ process.on("uncaughtExceptionMonitor", (error, origin) => {
85
+ const requestEv = getRequestEvent();
86
+ if (requestEv) {
87
+ console.error("Unhandled exception during request", {
88
+ origin,
89
+ method: requestEv.method,
90
+ url: requestEv.url.href,
91
+ headersSent: requestEv.headersSent,
92
+ error,
93
+ });
94
+ return;
95
+ }
96
+
97
+ console.error("Unhandled exception outside request", { origin, error });
98
+ });
99
+
82
100
  server.on("request", (req, res) => {
83
101
  for (const header of Object.entries(DEFAULT_HEADERS)) {
84
102
  res.setHeader(...header);
85
103
  }
86
104
 
87
105
  staticFile(req, res, () => {
88
- router(req, res, () => {
89
- notFound(req, res, () => {});
90
- });
106
+ router(req, res, () => {});
91
107
  });
92
108
  });
93
109
 
@@ -1,13 +1,13 @@
1
1
  import { cloudflarePagesAdapter } from "@qwik.dev/router/adapters/cloudflare-pages/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
- import baseConfig from "../../vite.config.mts";
3
+ import baseConfig from "../../vite.config.ts";
4
4
 
5
5
  export default extendConfig(baseConfig, () => {
6
6
  return {
7
7
  build: {
8
8
  ssr: true,
9
- rollupOptions: {
10
- input: ["src/entry.cloudflare-pages.tsx", "@qwik-router-config"],
9
+ rolldownOptions: {
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.ts",
5
5
  "deploy": "wrangler pages deploy ./dist",
6
6
  "serve": "wrangler pages dev ./dist --compatibility-flags=nodejs_als"
7
7
  },
@@ -24,5 +24,6 @@
24
24
  "- pnpm run deploy: it will use the Cloudflare CLI to deploy your site"
25
25
  ]
26
26
  }
27
- }
27
+ },
28
+ "type": "module"
28
29
  }
@@ -7,7 +7,6 @@
7
7
  * - https://qwik.dev/docs/deployments/cloudflare-pages/
8
8
  *
9
9
  */
10
- import qwikRouterConfig from "@qwik-router-config";
11
10
  import {
12
11
  createQwikRouter,
13
12
  type PlatformCloudflarePages,
@@ -15,9 +14,9 @@ import {
15
14
  import render from "./entry.ssr";
16
15
 
17
16
  declare global {
18
- interface QwikRouterPlatform extends PlatformCloudflarePages {}
17
+ type QwikRouterPlatform = PlatformCloudflarePages;
19
18
  }
20
19
 
21
- const fetch = createQwikRouter({ render, qwikRouterConfig });
20
+ const fetch = createQwikRouter({ render });
22
21
 
23
22
  export { fetch };
@@ -0,0 +1,52 @@
1
+ ## Cloudflare Workers
2
+
3
+ Cloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run:
4
+
5
+ ```
6
+ npm run serve
7
+ ```
8
+
9
+ Then visit [http://localhost:8787/](http://localhost:8787/)
10
+
11
+ ### Deployments
12
+
13
+ [Cloudflare Workers](https://workers.cloudflare.com/) can be deployed using the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/).
14
+
15
+ If you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/workers-and-pages).
16
+
17
+ Once authenticated, you can deploy your Worker:
18
+
19
+ ```
20
+ npm run deploy
21
+ ```
22
+
23
+ ### Configuration
24
+
25
+ The `wrangler.jsonc` file contains your Worker configuration. Key settings include:
26
+
27
+ - **name**: Your Worker's name
28
+ - **main**: Path to your Worker script (default: `./dist/_worker.js`)
29
+ - **compatibility_date**: The date used for compatibility with the Workers runtime
30
+ - **assets**: Configuration for serving static assets
31
+ - **bindings**: Resources your Worker can interact with (KV, R2, D1, etc.)
32
+
33
+ After adding any binding, use this command to regenerate the worker-configuration.d.ts file
34
+
35
+ ```
36
+ npm run cf-typegen
37
+ ```
38
+
39
+ For more details, see the [Wrangler configuration documentation](https://developers.cloudflare.com/workers/wrangler/configuration/).
40
+
41
+ ### Bindings
42
+
43
+ Cloudflare Workers can interact with various Cloudflare resources through bindings:
44
+
45
+ - **KV**: Key-value storage
46
+ - **R2**: Object storage
47
+ - **D1**: SQL database
48
+ - **Durable Objects**: Strongly consistent storage
49
+ - **Queues**: Message queues
50
+ - **AI**: AI inference
51
+
52
+ Configure bindings in your `wrangler.jsonc` file. See the [bindings documentation](https://developers.cloudflare.com/workers/runtime-apis/bindings/) for more information.
@@ -0,0 +1,15 @@
1
+ import { cloudflarePagesAdapter as cloudflareWorkersAdapter } from "@qwik.dev/router/adapters/cloudflare-pages/vite";
2
+ import { extendConfig } from "@qwik.dev/router/vite";
3
+ import baseConfig from "../../vite.config";
4
+
5
+ export default extendConfig(baseConfig, () => {
6
+ return {
7
+ build: {
8
+ ssr: true,
9
+ rolldownOptions: {
10
+ input: ["src/entry.cloudflare-pages.tsx"],
11
+ },
12
+ },
13
+ plugins: [cloudflareWorkersAdapter()],
14
+ };
15
+ });
@@ -0,0 +1,3 @@
1
+ # Cloudflare
2
+ functions/**/*.js
3
+ .wrangler/
@@ -0,0 +1,31 @@
1
+ {
2
+ "description": "Cloudflare Workers",
3
+ "scripts": {
4
+ "build.server": "qwik check-client src dist && vite build -c adapters/cloudflare-workers/vite.config.ts",
5
+ "deploy": "wrangler deploy",
6
+ "serve": "wrangler dev",
7
+ "cf-typegen": "wrangler types"
8
+ },
9
+ "devDependencies": {
10
+ "@cloudflare/workers-types": "^4.20251228.0",
11
+ "wrangler": "^3.0.0"
12
+ },
13
+ "__qwik__": {
14
+ "priority": 40,
15
+ "displayName": "Adapter: Cloudflare Workers",
16
+ "docs": [
17
+ "https://qwik.dev/deployments/cloudflare-workers/",
18
+ "https://developers.cloudflare.com/workers"
19
+ ],
20
+ "nextSteps": {
21
+ "title": "Next Steps",
22
+ "lines": [
23
+ "Make sure to follow the instructions in the [Cloudflare Workers documentation](https://qwik.dev/deployments/cloudflare-workers/) to setup your Qwik app.",
24
+ "Now you can build and deploy to Cloudflare Workers with:",
25
+ "",
26
+ "- pnpm run build: production build for Cloudflare",
27
+ "- pnpm run deploy: it will use the Cloudflare CLI to deploy your site"
28
+ ]
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,4 @@
1
+ _worker.js
2
+ _routes.json
3
+ _headers
4
+ _redirects
@@ -0,0 +1,11 @@
1
+ # https://developers.cloudflare.com/pages/platform/headers/
2
+
3
+ /*service-worker.js
4
+ Cache-Control: no-store
5
+ Content-Type: application/javascript
6
+ X-Content-Type-Options: nosniff
7
+
8
+ /build/*
9
+ Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
10
+ /assets/*
11
+ Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable
@@ -0,0 +1 @@
1
+ # https://developers.cloudflare.com/pages/platform/redirects/
@@ -0,0 +1,22 @@
1
+ /*
2
+ * WHAT IS THIS FILE?
3
+ *
4
+ * It's the entry point for Cloudflare Workers when building for production.
5
+ *
6
+ * Learn more about the Cloudflare Workers integration here:
7
+ * - https://qwik.dev/docs/deployments/cloudflare-workers/
8
+ *
9
+ */
10
+ import {
11
+ createQwikRouter,
12
+ type PlatformCloudflarePages as PlatformCloudflareWorkers,
13
+ } from "@qwik.dev/router/middleware/cloudflare-pages";
14
+ import render from "./entry.ssr";
15
+
16
+ declare global {
17
+ type QwikRouterPlatform = PlatformCloudflareWorkers;
18
+ }
19
+
20
+ const fetch = createQwikRouter({ render });
21
+
22
+ export { fetch };
@@ -0,0 +1,5 @@
1
+ // Generated by Wrangler
2
+ // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
3
+ interface Env {
4
+ ASSET: Fetcher;
5
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * For more details on how to configure Wrangler, refer to:
3
+ * https://developers.cloudflare.com/workers/wrangler/configuration/
4
+ */
5
+ {
6
+ "$schema": "node_modules/wrangler/config-schema.json",
7
+ "name": "my-qwik-app",
8
+ "main": "./dist/_worker.js",
9
+ "compatibility_date": "2025-12-28",
10
+ "compatibility_flags": ["nodejs_compat", "global_fetch_strictly_public"],
11
+ "assets": {
12
+ "binding": "ASSET",
13
+ "directory": "./dist",
14
+ },
15
+ "observability": {
16
+ "enabled": true,
17
+ },
18
+ /**
19
+ * Smart Placement
20
+ * https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement
21
+ */
22
+ // "placement": { "mode": "smart" }
23
+ /**
24
+ * Bindings
25
+ * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including
26
+ * databases, object storage, AI inference, real-time communication and more.
27
+ * https://developers.cloudflare.com/workers/runtime-apis/bindings/
28
+ */
29
+ /**
30
+ * Environment Variables
31
+ * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
32
+ * Note: Use secrets to store sensitive data.
33
+ * https://developers.cloudflare.com/workers/configuration/secrets/
34
+ */
35
+ // "vars": { "MY_VARIABLE": "production_value" }
36
+ /**
37
+ * Service Bindings (communicate between multiple Workers)
38
+ * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
39
+ */
40
+ // "services": [ { "binding": "MY_SERVICE", "service": "my-service" } ]
41
+ }
@@ -1,13 +1,13 @@
1
1
  import { denoServerAdapter } from "@qwik.dev/router/adapters/deno-server/vite";
2
2
  import { extendConfig } from "@qwik.dev/router/vite";
3
- import baseConfig from "../../vite.config.mts";
3
+ import baseConfig from "../../vite.config.ts";
4
4
 
5
5
  export default extendConfig(baseConfig, () => {
6
6
  return {
7
7
  build: {
8
8
  ssr: true,
9
- rollupOptions: {
10
- input: ["src/entry.deno.ts", "@qwik-router-config"],
9
+ rolldownOptions: {
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.ts",
5
5
  "serve": "deno run --allow-net --allow-read --allow-env server/entry.deno.js"
6
6
  },
7
7
  "__qwik__": {
@@ -20,5 +20,6 @@
20
20
  "- pnpm run serve: runs the production server locally"
21
21
  ]
22
22
  }
23
- }
23
+ },
24
+ "type": "module"
24
25
  }