From 9aa38bbef065861d797d123db1a441053f0dc5b1 Mon Sep 17 00:00:00 2001 From: jack shelton Date: Thu, 11 Jul 2024 11:00:23 -0500 Subject: [PATCH] feat: major perf improvements --- .changeset/small-ways-taste.md | 6 ++++ apps/node-demo/package.json | 2 +- .../stubs/templates/deno-biome/package.json | 2 +- .../stubs/templates/deno/package.json | 2 +- .../stubs/templates/node-biome/package.json | 2 +- .../stubs/templates/node/package.json | 2 +- libs/qwikdev-astro/package.json | 4 +-- libs/qwikdev-astro/server.ts | 3 +- libs/qwikdev-astro/src/index.ts | 26 ++++++++++++----- pnpm-lock.yaml | 29 ++++++++++++++++--- 10 files changed, 59 insertions(+), 19 deletions(-) create mode 100644 .changeset/small-ways-taste.md diff --git a/.changeset/small-ways-taste.md b/.changeset/small-ways-taste.md new file mode 100644 index 00000000..b53211e1 --- /dev/null +++ b/.changeset/small-ways-taste.md @@ -0,0 +1,6 @@ +--- +"@qwikdev/create-astro": minor +"@qwikdev/astro": minor +--- + +refactor: major performance improvements diff --git a/apps/node-demo/package.json b/apps/node-demo/package.json index 0d7ff0e3..8fa485dc 100644 --- a/apps/node-demo/package.json +++ b/apps/node-demo/package.json @@ -14,7 +14,7 @@ "dependencies": { "@astrojs/node": "^8.2.3", "@astrojs/react": "^3.0.10", - "@builder.io/qwik": "^1.7", + "@builder.io/qwik": "^1.7.1", "@qwikdev/astro": "workspace:*", "@types/react": "^18.2.64", "@types/react-dom": "^18.2.21", diff --git a/libs/create-qwikdev-astro/stubs/templates/deno-biome/package.json b/libs/create-qwikdev-astro/stubs/templates/deno-biome/package.json index cf065fef..d38b5a73 100644 --- a/libs/create-qwikdev-astro/stubs/templates/deno-biome/package.json +++ b/libs/create-qwikdev-astro/stubs/templates/deno-biome/package.json @@ -22,7 +22,7 @@ "dependencies": { "@astrojs/check": "^0.5.10", "@astrojs/deno": "^5.0.1", - "@builder.io/qwik": "1.5.6", + "@builder.io/qwik": "^1.7.1", "@qwikdev/astro": "^0.5.13", "astro": "^4.5.12", "typescript": "^5.4.3" diff --git a/libs/create-qwikdev-astro/stubs/templates/deno/package.json b/libs/create-qwikdev-astro/stubs/templates/deno/package.json index 0cc07df1..a713c213 100644 --- a/libs/create-qwikdev-astro/stubs/templates/deno/package.json +++ b/libs/create-qwikdev-astro/stubs/templates/deno/package.json @@ -23,7 +23,7 @@ "dependencies": { "@astrojs/check": "^0.5.10", "@astrojs/deno": "^5.0.1", - "@builder.io/qwik": "1.5.6", + "@builder.io/qwik": "^1.7.1", "@qwikdev/astro": "^0.5.14", "astro": "^4.6.3", "typescript": "^5.4.5" diff --git a/libs/create-qwikdev-astro/stubs/templates/node-biome/package.json b/libs/create-qwikdev-astro/stubs/templates/node-biome/package.json index fc951f22..4c7d046b 100644 --- a/libs/create-qwikdev-astro/stubs/templates/node-biome/package.json +++ b/libs/create-qwikdev-astro/stubs/templates/node-biome/package.json @@ -21,7 +21,7 @@ "dependencies": { "@astrojs/check": "^0.5.10", "@astrojs/node": "^8.2.5", - "@builder.io/qwik": "1.5.6", + "@builder.io/qwik": "^1.7.1", "@qwikdev/astro": "^0.5.14", "astro": "^4.6.3", "typescript": "^5.4.5" diff --git a/libs/create-qwikdev-astro/stubs/templates/node/package.json b/libs/create-qwikdev-astro/stubs/templates/node/package.json index 965ab623..6f31208a 100644 --- a/libs/create-qwikdev-astro/stubs/templates/node/package.json +++ b/libs/create-qwikdev-astro/stubs/templates/node/package.json @@ -22,7 +22,7 @@ "dependencies": { "@astrojs/check": "^0.5.10", "@astrojs/node": "^8.2.5", - "@builder.io/qwik": "1.5.6", + "@builder.io/qwik": "^1.7.1", "@qwikdev/astro": "^0.5.14", "astro": "^4.6.3", "typescript": "^5.4.5" diff --git a/libs/qwikdev-astro/package.json b/libs/qwikdev-astro/package.json index 9d34e029..3d61dac2 100644 --- a/libs/qwikdev-astro/package.json +++ b/libs/qwikdev-astro/package.json @@ -50,7 +50,7 @@ "vite-tsconfig-paths": "^4.2.1" }, "devDependencies": { - "@builder.io/qwik": "^1.7", + "@builder.io/qwik": "^1.7.1", "@types/fs-extra": "^11.0.4", "@types/node": "^20.10.0", "astro": "^4.5", @@ -58,7 +58,7 @@ "vite": "^5.3" }, "peerDependencies": { - "@builder.io/qwik": "^1.7", + "@builder.io/qwik": "^1.7.1", "typescript": "^5.4.2" } } diff --git a/libs/qwikdev-astro/server.ts b/libs/qwikdev-astro/server.ts index 007fb8c6..99b6afd6 100644 --- a/libs/qwikdev-astro/server.ts +++ b/libs/qwikdev-astro/server.ts @@ -9,6 +9,7 @@ import { import { isDev } from "@builder.io/qwik/build"; import { getQwikLoaderScript, renderToString } from "@builder.io/qwik/server"; import { manifest } from "@qwik-client-manifest"; +import { type QwikManifest } from "@builder.io/qwik/optimizer"; const qwikLoaderAdded = new WeakMap(); @@ -107,7 +108,7 @@ export async function renderToStaticMarkup( containerTagName: "div", containerAttributes: { style: "display: contents" }, ...(isDev - ? { manifest: {} as QwikManifest, symbolMapper: globalThis._mymapper } + ? { manifest: {} as QwikManifest, symbolMapper: globalThis.symbolMapper } : { manifest }), qwikLoader: { include: "never" } }); diff --git a/libs/qwikdev-astro/src/index.ts b/libs/qwikdev-astro/src/index.ts index c2281fd6..75ccafff 100644 --- a/libs/qwikdev-astro/src/index.ts +++ b/libs/qwikdev-astro/src/index.ts @@ -11,14 +11,18 @@ import type { AstroConfig } from "astro"; import { z } from "astro/zod"; import ts from "typescript"; -import { qwikVite } from "@builder.io/qwik/optimizer"; +import { qwikVite, type SymbolMapperFn } from "@builder.io/qwik/optimizer"; import { defineIntegration } from "astro-integration-kit"; import { watchIntegrationPlugin } from "astro-integration-kit/plugins"; -import { symbolMapper, type QwikManifest } from '@builder.io/qwik/optimizer'; +import { symbolMapper } from '@builder.io/qwik/optimizer'; import { type InlineConfig, build, createFilter } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; +declare global { + var symbolMapper: SymbolMapperFn; +} + /* Similar to vite's FilterPattern */ const FilternPatternSchema = z.union([ z.string(), @@ -108,10 +112,18 @@ export default defineIntegration({ }, plugins: [ - {name:"grabSymbolMapper", configResolved() { globalThis._mymapper = symbolMapper }}, + { + name: "grabSymbolMapper", + configResolved() { + /** We need to get the symbolMapper straight from qwikVite here. You can think of it as the "manifest" for dev mode. */ + globalThis.symbolMapper = symbolMapper; + setTimeout(() => { + console.log("\x1b[32m[Qwik Astro]: Ignore the Vite emitFile warning, as it's not an issue and this error message will be resolved in the next Qwik version.\x1b[0m"); + }, 5000) + } + }, qwikVite({ /* user passed include & exclude config (to use multiple JSX frameworks) */ - debug: true, fileFilter: (id: string, hook: string) => { if (hook === "transform" && !filter(id)) { return false; @@ -131,7 +143,7 @@ export default defineIntegration({ }, ssr: { input: "@qwikdev/astro/server" - } + }, }), tsconfigPaths(), { @@ -166,7 +178,7 @@ export default defineIntegration({ enforce: "pre", name: "astro-noop", - load(id) { + load(id: string) { if (id.endsWith(".astro")) { return "export default function() {}"; } @@ -174,7 +186,7 @@ export default defineIntegration({ } } ] - } as InlineConfig); + } as unknown as InlineConfig); await moveArtifacts(distDir, tempDir); } else { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1fe2dc67..984f596b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,8 +72,8 @@ importers: specifier: ^3.0.10 version: 3.3.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(vite@5.3.3(@types/node@20.12.7)) '@builder.io/qwik': - specifier: ^1.7 - version: 1.7.0(@types/node@20.12.7)(undici@6.13.0) + specifier: ^1.7.1 + version: 1.7.1(@types/node@20.12.7)(undici@6.13.0) '@qwikdev/astro': specifier: workspace:* version: link:../../libs/qwikdev-astro @@ -158,8 +158,8 @@ importers: version: 4.3.2(typescript@5.4.5)(vite@5.3.3(@types/node@20.12.7)) devDependencies: '@builder.io/qwik': - specifier: ^1.7 - version: 1.7.0(@types/node@20.12.7)(undici@6.13.0) + specifier: ^1.7.1 + version: 1.7.1(@types/node@20.12.7)(undici@6.13.0) '@types/fs-extra': specifier: ^11.0.4 version: 11.0.4 @@ -433,6 +433,13 @@ packages: peerDependencies: undici: '*' + '@builder.io/qwik@1.7.1': + resolution: {integrity: sha512-Ncf4amVMxCNWlf4lsi+KVuU4SoVXcqLAeZfceWLfptZldOWFscF0Hm+NOopSOO7lkpARlhi7PhlBaPOJZkR3rw==} + engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} + hasBin: true + peerDependencies: + undici: '*' + '@changesets/apply-release-plan@7.0.0': resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} @@ -4352,6 +4359,20 @@ snapshots: - sugarss - terser + '@builder.io/qwik@1.7.1(@types/node@20.12.7)(undici@6.13.0)': + dependencies: + csstype: 3.1.3 + undici: 6.13.0 + vite: 5.3.3(@types/node@20.12.7) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - terser + '@changesets/apply-release-plan@7.0.0': dependencies: '@babel/runtime': 7.24.4