@qwik.dev/core 2.0.0-beta.5 → 2.0.0-beta.6

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 (49) hide show
  1. package/dist/build/package.json +1 -1
  2. package/dist/cli.cjs +2 -2
  3. package/dist/core-internal.d.ts +49 -11
  4. package/dist/core.cjs +239 -105
  5. package/dist/core.cjs.map +1 -1
  6. package/dist/core.min.mjs +1 -1
  7. package/dist/core.mjs +224 -105
  8. package/dist/core.mjs.map +1 -1
  9. package/dist/core.prod.cjs +117 -63
  10. package/dist/core.prod.mjs +113 -58
  11. package/dist/loader/package.json +1 -1
  12. package/dist/optimizer.cjs +138 -202
  13. package/dist/optimizer.d.ts +9 -15
  14. package/dist/optimizer.mjs +129 -195
  15. package/dist/server.cjs +33 -16
  16. package/dist/server.mjs +32 -16
  17. package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/vite.config.mts +1 -1
  18. package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +1 -5
  19. package/dist/starters/adapters/azure-swa/adapters/azure-swa/vite.config.mts +1 -1
  20. package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +1 -2
  21. package/dist/starters/adapters/bun/adapters/bun/vite.config.mts +1 -1
  22. package/dist/starters/adapters/bun/src/entry.bun.ts +0 -2
  23. package/dist/starters/adapters/cloud-run/adapters/cloud-run/vite.config.mts +1 -1
  24. package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +0 -2
  25. package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/vite.config.mts +1 -1
  26. package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +1 -2
  27. package/dist/starters/adapters/deno/adapters/deno/vite.config.mts +1 -1
  28. package/dist/starters/adapters/deno/src/entry.deno.ts +0 -2
  29. package/dist/starters/adapters/express/adapters/express/vite.config.mts +1 -1
  30. package/dist/starters/adapters/express/src/entry.express.tsx +0 -2
  31. package/dist/starters/adapters/fastify/adapters/fastify/vite.config.mts +1 -1
  32. package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +1 -2
  33. package/dist/starters/adapters/firebase/adapters/firebase/vite.config.mts +1 -1
  34. package/dist/starters/adapters/firebase/src/entry-firebase.tsx +1 -2
  35. package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/vite.config.mts +1 -1
  36. package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +1 -2
  37. package/dist/starters/adapters/node-server/adapters/node-server/vite.config.mts +1 -1
  38. package/dist/starters/adapters/node-server/src/entry.node-server.tsx +0 -2
  39. package/dist/starters/adapters/{static/adapters/static → ssg/adapters/ssg}/vite.config.mts +2 -2
  40. package/dist/starters/adapters/ssg/package.json +19 -0
  41. package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/vite.config.mts +1 -1
  42. package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +1 -2
  43. package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
  44. package/dist/testing/index.cjs +183 -121
  45. package/dist/testing/index.mjs +176 -115
  46. package/dist/testing/package.json +1 -1
  47. package/package.json +2 -2
  48. package/dist/starters/adapters/static/package.json +0 -19
  49. /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
@@ -19,8 +19,6 @@ export declare interface ComponentEntryStrategy {
19
19
  /** @public */
20
20
  export declare const createOptimizer: (optimizerOptions?: OptimizerOptions) => Promise<Optimizer>;
21
21
 
22
- declare function createSymbolMapper(base: string): SymbolMapperFn;
23
-
24
22
  /** @public */
25
23
  export declare interface Diagnostic {
26
24
  scope: string;
@@ -60,7 +58,7 @@ export declare enum ExperimentalFeatures {
60
58
  enableRequestRewrite = "enableRequestRewrite",
61
59
  /** Enable worker$ */
62
60
  webWorker = "webWorker",
63
- /** Enable the ability to use the Qwik Insights vite plugin and <Insights/> component */
61
+ /** Enable the ability to use the Qwik Insights vite plugin and `<Insights/>` component */
64
62
  insights = "insights"
65
63
  }
66
64
 
@@ -92,11 +90,11 @@ export declare interface InlineEntryStrategy {
92
90
  /** @public */
93
91
  export declare type MinifyMode = 'simplify' | 'none';
94
92
 
95
- declare interface NormalizedQwikPluginOptions extends Omit<Required<QwikPluginOptions>, 'vendorRoots' | 'experimental'> {
93
+ declare interface NormalizedQwikPluginOptions extends Omit<Required<QwikPluginOptions>, 'input' | 'vendorRoots' | 'srcInputs' | 'experimental'> {
96
94
  input: string[] | {
97
95
  [entry: string]: string;
98
- };
99
- experimental?: Record<keyof typeof ExperimentalFeatures, boolean>;
96
+ } | undefined;
97
+ experimental: Record<keyof typeof ExperimentalFeatures, boolean> | undefined;
100
98
  }
101
99
 
102
100
  /** @public */
@@ -285,9 +283,12 @@ declare interface QwikPluginOptions {
285
283
  [entry: string]: string;
286
284
  };
287
285
  outDir?: string;
286
+ ssrOutDir?: string;
287
+ clientOutDir?: string;
288
288
  assetsDir?: string;
289
289
  srcDir?: string | null;
290
290
  scope?: string | null;
291
+ /** @deprecated Not used */
291
292
  srcInputs?: TransformModuleInput[] | null;
292
293
  sourcemap?: boolean;
293
294
  resolveQwikBuild?: boolean;
@@ -702,15 +703,8 @@ export declare type SourceMapsOption = 'external' | 'inline' | undefined | null;
702
703
  /** @public */
703
704
  export declare type SymbolMapper = Record<string, readonly [symbol: string, chunk: string]>;
704
705
 
705
- /**
706
- * @beta
707
- * For a given symbol (QRL such as `onKeydown$`) the server needs to know which bundle the symbol is in.
708
- *
709
- * Normally this is provided by Qwik's `q-manifest` . But `q-manifest` only exists after a full client build.
710
- *
711
- * This would be a problem in dev mode. So in dev mode the symbol is mapped to the expected URL using the symbolMapper function below. For Vite the given path is fixed for a given symbol.
712
- */
713
- export declare let symbolMapper: ReturnType<typeof createSymbolMapper>;
706
+ /** @alpha @deprecated No longer needed, it is automatic now */
707
+ export declare const symbolMapper: undefined;
714
708
 
715
709
  /** @public */
716
710
  export declare type SymbolMapperFn = (symbolName: string, mapper: SymbolMapper | undefined, parent?: string) => readonly [symbol: string, chunk: string] | undefined;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/optimizer 2.0.0-beta.5-dev+8887f7e
3
+ * @qwik.dev/core/optimizer 2.0.0-beta.6-dev+c42693f
4
4
  * Copyright QwikDev. All Rights Reserved.
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://github.com/QwikDev/qwik/blob/main/LICENSE
@@ -1282,7 +1282,7 @@ var QWIK_BINDING_MAP = {
1282
1282
  };
1283
1283
 
1284
1284
  var versions = {
1285
- qwik: "2.0.0-beta.5-dev+8887f7e"
1285
+ qwik: "2.0.0-beta.6-dev+c42693f"
1286
1286
  };
1287
1287
 
1288
1288
  async function getSystem() {
@@ -1306,6 +1306,10 @@ async function getSystem() {
1306
1306
  sys.path = await sys.dynamicImport("node:path");
1307
1307
  sys.cwd = () => process.cwd();
1308
1308
  sys.os = process.platform;
1309
+ } else if ("deno" === sysEnv) {
1310
+ sys.path = await sys.dynamicImport("node:path");
1311
+ sys.cwd = () => Deno.cwd();
1312
+ sys.os = Deno.platform();
1309
1313
  }
1310
1314
  return sys;
1311
1315
  }
@@ -2141,15 +2145,16 @@ function createQwikPlugin(optimizerOptions = {}) {
2141
2145
  target: "client",
2142
2146
  buildMode: "development",
2143
2147
  debug: false,
2144
- rootDir: null,
2148
+ rootDir: void 0,
2145
2149
  tsconfigFileNames: [ "./tsconfig.json" ],
2146
- input: null,
2147
- outDir: "",
2148
- assetsDir: null,
2150
+ input: void 0,
2151
+ outDir: void 0,
2152
+ assetsDir: void 0,
2149
2153
  resolveQwikBuild: true,
2150
- entryStrategy: null,
2151
- srcDir: null,
2152
- srcInputs: null,
2154
+ entryStrategy: void 0,
2155
+ srcDir: void 0,
2156
+ ssrOutDir: void 0,
2157
+ clientOutDir: void 0,
2153
2158
  sourcemap: !!optimizerOptions.sourcemap,
2154
2159
  manifestInput: null,
2155
2160
  manifestOutput: null,
@@ -2164,10 +2169,14 @@ function createQwikPlugin(optimizerOptions = {}) {
2164
2169
  experimental: void 0
2165
2170
  };
2166
2171
  let lazyNormalizePath;
2172
+ let maybeFs;
2167
2173
  const init2 = async () => {
2168
2174
  if (!internalOptimizer) {
2169
2175
  internalOptimizer = await createOptimizer(optimizerOptions);
2170
2176
  lazyNormalizePath = makeNormalizePath(internalOptimizer.sys);
2177
+ try {
2178
+ maybeFs = await internalOptimizer.sys.dynamicImport("node:fs");
2179
+ } catch {}
2171
2180
  }
2172
2181
  };
2173
2182
  const getOptimizer = () => {
@@ -2188,7 +2197,7 @@ function createQwikPlugin(optimizerOptions = {}) {
2188
2197
  const configureServer = server => {
2189
2198
  devServer = server;
2190
2199
  };
2191
- const normalizeOptions = inputOpts => {
2200
+ const normalizeOptions = async inputOpts => {
2192
2201
  const updatedOpts = Object.assign({}, inputOpts);
2193
2202
  const optimizer2 = getOptimizer();
2194
2203
  const path = optimizer2.sys.path;
@@ -2215,59 +2224,59 @@ function createQwikPlugin(optimizerOptions = {}) {
2215
2224
  if ("string" === typeof updatedOpts.srcDir) {
2216
2225
  opts.srcDir = normalizePath(path.resolve(opts.rootDir, updatedOpts.srcDir));
2217
2226
  srcDir = opts.srcDir;
2218
- opts.srcInputs = null;
2219
- } else if (Array.isArray(updatedOpts.srcInputs)) {
2220
- opts.srcInputs = [ ...updatedOpts.srcInputs ];
2221
- opts.srcDir = null;
2222
2227
  } else {
2223
2228
  opts.srcDir || (opts.srcDir = srcDir);
2224
2229
  }
2230
+ opts.srcDir = normalizePath(path.resolve(opts.rootDir, normalizePath(opts.srcDir)));
2225
2231
  Array.isArray(updatedOpts.tsconfigFileNames) && updatedOpts.tsconfigFileNames.length > 0 && (opts.tsconfigFileNames = updatedOpts.tsconfigFileNames);
2226
- Array.isArray(opts.srcInputs) ? opts.srcInputs.forEach(i => {
2227
- i.path = normalizePath(path.resolve(opts.rootDir, i.path));
2228
- }) : "string" === typeof opts.srcDir && (opts.srcDir = normalizePath(path.resolve(opts.rootDir, normalizePath(opts.srcDir))));
2232
+ updatedOpts.input || opts.input || ("ssr" === opts.target ? opts.input = [ path.resolve(srcDir, "entry.ssr") ] : "client" === opts.target ? opts.input = [ path.resolve(srcDir, "root") ] : opts.input = void 0);
2229
2233
  if (!updatedOpts.csr) {
2230
- if (Array.isArray(updatedOpts.input)) {
2231
- opts.input = [ ...updatedOpts.input ];
2232
- } else if ("string" === typeof updatedOpts.input) {
2233
- opts.input = [ updatedOpts.input ];
2234
- } else if ("ssr" === opts.target) {
2235
- opts.input || (opts.input = [ path.resolve(srcDir, "entry.ssr") ]);
2236
- } else if ("client" === opts.target) {
2237
- opts.input || (opts.input = [ path.resolve(srcDir, "root") ]);
2238
- } else if ("lib" === opts.target) {
2239
- if ("object" === typeof updatedOpts.input) {
2240
- for (const key in updatedOpts.input) {
2241
- const resolvedPaths = {};
2242
- if (Object.hasOwnProperty.call(updatedOpts.input, key)) {
2243
- const relativePath = updatedOpts.input[key];
2244
- const absolutePath = path.resolve(opts.rootDir, relativePath);
2245
- resolvedPaths[key] = absolutePath;
2246
- }
2247
- opts.input = {
2248
- ...opts.input,
2249
- ...resolvedPaths
2250
- };
2234
+ updatedOpts.outDir && (opts.outDir = normalizePath(path.resolve(opts.rootDir, normalizePath(updatedOpts.outDir))));
2235
+ opts.clientOutDir = normalizePath(path.resolve(opts.rootDir, updatedOpts.clientOutDir || CLIENT_OUT_DIR));
2236
+ opts.ssrOutDir = normalizePath(path.resolve(opts.rootDir, updatedOpts.ssrOutDir || SSR_OUT_DIR));
2237
+ "ssr" === opts.target ? opts.outDir || (opts.outDir = opts.ssrOutDir) : "lib" === opts.target ? opts.outDir || (opts.outDir = normalizePath(path.resolve(opts.rootDir, LIB_OUT_DIR))) : opts.outDir || (opts.outDir = opts.clientOutDir);
2238
+ }
2239
+ "function" === typeof updatedOpts.manifestOutput && (opts.manifestOutput = updatedOpts.manifestOutput);
2240
+ updatedOpts.manifestInput && (opts.manifestInput = getValidManifest(updatedOpts.manifestInput) || null);
2241
+ if (!opts.manifestInput && "ssr" === opts.target && "production" === opts.buildMode && maybeFs) {
2242
+ let clientManifestPath = normalizePath(path.resolve(opts.clientOutDir, Q_MANIFEST_FILENAME));
2243
+ await maybeFs.promises.stat(clientManifestPath).catch(() => false) || (clientManifestPath = normalizePath(path.resolve(opts.rootDir, CLIENT_OUT_DIR, Q_MANIFEST_FILENAME)));
2244
+ try {
2245
+ const clientManifestStr = await maybeFs.promises.readFile(clientManifestPath, "utf-8");
2246
+ opts.manifestInput = getValidManifest(JSON.parse(clientManifestStr)) || null;
2247
+ console.info("Read client manifest from", clientManifestPath);
2248
+ } catch (e) {
2249
+ console.warn(`could not read Qwik client manifest ${clientManifestPath}, ignoring. Make sure you provide it to the SSR renderer. (${e})`);
2250
+ }
2251
+ }
2252
+ "function" === typeof updatedOpts.transformedModuleOutput && (opts.transformedModuleOutput = updatedOpts.transformedModuleOutput);
2253
+ if (void 0 !== updatedOpts.scope) {
2254
+ opts.scope = updatedOpts.scope;
2255
+ } else if (!opts.scope && maybeFs) {
2256
+ let pkgPath = "";
2257
+ try {
2258
+ let pkgDir = opts.rootDir;
2259
+ while (true) {
2260
+ pkgPath = path.resolve(pkgDir, "package.json");
2261
+ if (await maybeFs.promises.stat(pkgPath).catch(() => false)) {
2262
+ break;
2251
2263
  }
2252
- } else {
2253
- opts.input || (opts.input = [ path.resolve(srcDir, "index.ts") ]);
2264
+ const parent = path.resolve(pkgDir, "..");
2265
+ if (parent === pkgDir) {
2266
+ break;
2267
+ }
2268
+ pkgDir = parent;
2269
+ pkgPath = "";
2254
2270
  }
2255
- } else {
2256
- opts.input || (opts.input = []);
2271
+ if (pkgPath) {
2272
+ const pkgString = await maybeFs.promises.readFile(pkgPath, "utf-8");
2273
+ const pkg = JSON.parse(pkgString);
2274
+ "string" === typeof pkg.name && (opts.scope = pkg.name);
2275
+ }
2276
+ } catch (e) {
2277
+ console.warn(`could not read ${pkgPath || "package.json"} to determine package name, ignoring. (${e})`);
2257
2278
  }
2258
- Array.isArray(opts.input) && (opts.input = opts.input.reduce((inputs, i) => {
2259
- let input = i;
2260
- i.startsWith("@") || i.startsWith("~") || i.startsWith("#") || (input = normalizePath(path.resolve(opts.rootDir, i)));
2261
- inputs.includes(input) || inputs.push(input);
2262
- return inputs;
2263
- }, []));
2264
- "string" === typeof updatedOpts.outDir ? opts.outDir = normalizePath(path.resolve(opts.rootDir, normalizePath(updatedOpts.outDir))) : opts.outDir || ("ssr" === opts.target ? opts.outDir = normalizePath(path.resolve(opts.rootDir, SSR_OUT_DIR)) : "lib" === opts.target ? opts.outDir = normalizePath(path.resolve(opts.rootDir, LIB_OUT_DIR)) : opts.outDir = normalizePath(path.resolve(opts.rootDir, CLIENT_OUT_DIR)));
2265
2279
  }
2266
- "function" === typeof updatedOpts.manifestOutput && (opts.manifestOutput = updatedOpts.manifestOutput);
2267
- const clientManifest = getValidManifest(updatedOpts.manifestInput);
2268
- clientManifest && (opts.manifestInput = clientManifest);
2269
- "function" === typeof updatedOpts.transformedModuleOutput && (opts.transformedModuleOutput = updatedOpts.transformedModuleOutput);
2270
- void 0 !== updatedOpts.scope && (opts.scope = updatedOpts.scope);
2271
2280
  "boolean" === typeof updatedOpts.resolveQwikBuild && (opts.resolveQwikBuild = updatedOpts.resolveQwikBuild);
2272
2281
  if ("object" === typeof updatedOpts.devTools) {
2273
2282
  "imageDevTools" in updatedOpts.devTools && (opts.devTools.imageDevTools = updatedOpts.devTools.imageDevTools);
@@ -2282,9 +2291,12 @@ function createQwikPlugin(optimizerOptions = {}) {
2282
2291
  ExperimentalFeatures[feature] ? (opts.experimental || (opts.experimental = {}))[feature] = true : console.error(`Qwik plugin: Unknown experimental feature: ${feature}`);
2283
2292
  }
2284
2293
  }
2285
- return {
2294
+ const out = {
2286
2295
  ...opts
2287
2296
  };
2297
+ opts.input || (opts.input = updatedOpts.input);
2298
+ opts.input && "string" === typeof opts.input && (opts.input = [ opts.input ]);
2299
+ return out;
2288
2300
  };
2289
2301
  let hasValidatedSource = false;
2290
2302
  const validateSource = async resolver => {
@@ -2319,17 +2331,6 @@ function createQwikPlugin(optimizerOptions = {}) {
2319
2331
  linter = await createLinter(optimizer.sys, opts.rootDir, opts.tsconfigFileNames);
2320
2332
  } catch {}
2321
2333
  }
2322
- const path = getPath();
2323
- if (Array.isArray(opts.srcInputs)) {
2324
- optimizer.sys.getInputFiles = async rootDir => opts.srcInputs.map(i => {
2325
- const relInput = {
2326
- path: normalizePath(path.relative(rootDir, i.path)),
2327
- code: i.code
2328
- };
2329
- return relInput;
2330
- });
2331
- debug(`buildStart() opts.srcInputs (${opts.srcInputs.length} files)`);
2332
- }
2333
2334
  debug("transformedOutputs.clear()");
2334
2335
  clientTransformedOutputs.clear();
2335
2336
  serverTransformedOutputs.clear();
@@ -2593,18 +2594,11 @@ function createQwikPlugin(optimizerOptions = {}) {
2593
2594
  parentIds.set(key, id2);
2594
2595
  currentOutputs.set(key, [ mod, id2 ]);
2595
2596
  deps.add(key);
2596
- if ("client" === opts.target) {
2597
- if (devServer) {
2598
- const rollupModule = devServer.moduleGraph.getModuleById(key);
2599
- rollupModule && devServer.moduleGraph.invalidateModule(rollupModule);
2600
- } else {
2601
- ctx.emitFile({
2602
- id: key,
2603
- type: "chunk",
2604
- preserveSignature: "allow-extension"
2605
- });
2606
- }
2607
- }
2597
+ "client" !== opts.target || devServer || ctx.emitFile({
2598
+ id: key,
2599
+ type: "chunk",
2600
+ preserveSignature: "allow-extension"
2601
+ });
2608
2602
  }
2609
2603
  }
2610
2604
  for (const id3 of deps.values()) {
@@ -2666,8 +2660,8 @@ function createQwikPlugin(optimizerOptions = {}) {
2666
2660
  };
2667
2661
  const normalizePath = id2 => lazyNormalizePath(id2);
2668
2662
  function getQwikBuildModule(isServer, _target) {
2669
- const isDev2 = "development" === opts.buildMode;
2670
- return `// @qwik.dev/core/build\nexport const isServer = ${JSON.stringify(isServer)};\nexport const isBrowser = ${JSON.stringify(!isServer)};\nexport const isDev = ${JSON.stringify(isDev2)};\n`;
2663
+ const isDev = "development" === opts.buildMode;
2664
+ return `// @qwik.dev/core/build\nexport const isServer = ${JSON.stringify(isServer)};\nexport const isBrowser = ${JSON.stringify(!isServer)};\nexport const isDev = ${JSON.stringify(isDev)};\n`;
2671
2665
  }
2672
2666
  async function getQwikServerManifestModule(isServer) {
2673
2667
  const manifest = isServer ? opts.manifestInput : null;
@@ -2760,7 +2754,6 @@ function createQwikPlugin(optimizerOptions = {}) {
2760
2754
  });
2761
2755
  "function" === typeof opts.manifestOutput && await opts.manifestOutput(manifest);
2762
2756
  "function" === typeof opts.transformedModuleOutput && await opts.transformedModuleOutput(getTransformedOutputs());
2763
- return manifestStr;
2764
2757
  }
2765
2758
  return {
2766
2759
  buildStart: buildStart,
@@ -2879,8 +2872,9 @@ function qwikRollup(qwikRollupOpts = {}) {
2879
2872
  lint: qwikRollupOpts.lint,
2880
2873
  experimental: qwikRollupOpts.experimental
2881
2874
  };
2882
- const opts = qwikPlugin.normalizeOptions(pluginOpts);
2883
- inputOpts.input || (inputOpts.input = opts.input);
2875
+ await qwikPlugin.normalizeOptions(pluginOpts);
2876
+ const {input: input} = qwikPlugin.getOptions();
2877
+ inputOpts.input = input;
2884
2878
  return inputOpts;
2885
2879
  },
2886
2880
  outputOptions: rollupOutputOpts => normalizeRollupOutputOptionsObject(qwikPlugin, rollupOutputOpts, false),
@@ -2933,6 +2927,18 @@ function normalizeRollupOutputOptions(qwikPlugin, rollupOutputOpts, useAssetsDir
2933
2927
  };
2934
2928
  }
2935
2929
 
2930
+ var getChunkFileName = (prefix, opts, optimizer) => "production" !== opts.buildMode || opts.debug ? chunkInfo => {
2931
+ if (chunkInfo.moduleIds?.some(id => id.endsWith("core.prod.mjs"))) {
2932
+ return `${prefix}build/core.js`;
2933
+ }
2934
+ if (chunkInfo.moduleIds?.some(id => id.endsWith("qwik-router/lib/index.qwik.mjs"))) {
2935
+ return `${prefix}build/qwik-router.js`;
2936
+ }
2937
+ const relativePath = optimizer.sys.path.relative(optimizer.sys.cwd(), chunkInfo.name);
2938
+ const sanitized = relativePath.replace(/^(\.\.\/)+/, "").replace(/^\/+/, "").replace(/\//g, "-");
2939
+ return `${prefix}build/${sanitized}.js`;
2940
+ } : `${prefix}build/q-[hash].js`;
2941
+
2936
2942
  function normalizeRollupOutputOptionsObject(qwikPlugin, rollupOutputOptsObj, useAssetsDir) {
2937
2943
  const outputOpts = {
2938
2944
  ...rollupOutputOptsObj
@@ -2940,38 +2946,19 @@ function normalizeRollupOutputOptionsObject(qwikPlugin, rollupOutputOptsObj, use
2940
2946
  const opts = qwikPlugin.getOptions();
2941
2947
  const optimizer = qwikPlugin.getOptimizer();
2942
2948
  const manualChunks = qwikPlugin.manualChunks;
2949
+ outputOpts.assetFileNames || (outputOpts.assetFileNames = (useAssetsDir ? `${opts.assetsDir}/` : "") + "assets/[hash]-[name].[ext]");
2950
+ const chunkFileName = getChunkFileName(useAssetsDir ? `${opts.assetsDir}` : "", opts, optimizer);
2943
2951
  if ("client" === opts.target) {
2944
- if (!outputOpts.assetFileNames) {
2945
- const assetFileNames = "assets/[hash]-[name].[ext]";
2946
- outputOpts.assetFileNames = useAssetsDir ? `${opts.assetsDir}/${assetFileNames}` : assetFileNames;
2947
- }
2948
- let fileName;
2949
- fileName = "production" !== opts.buildMode || opts.debug ? chunkInfo => {
2950
- if (chunkInfo.moduleIds?.some(id => id.endsWith("core.prod.mjs"))) {
2951
- return "build/core.js";
2952
- }
2953
- if (chunkInfo.moduleIds?.some(id => id.endsWith("qwik-router/lib/index.qwik.mjs"))) {
2954
- return "build/qwik-router.js";
2955
- }
2956
- const path = optimizer.sys.path;
2957
- const relativePath = path.relative(optimizer.sys.cwd(), chunkInfo.name);
2958
- const sanitized = relativePath.replace(/^(\.\.\/)+/, "").replace(/^\/+/, "").replace(/\//g, "-");
2959
- return `build/${sanitized}.js`;
2960
- } : "build/q-[hash].js";
2961
- const getFilePath = fileNamePattern => "string" === typeof fileNamePattern ? useAssetsDir ? `${opts.assetsDir}/${fileNamePattern}` : fileNamePattern : useAssetsDir ? chunkInfo => `${opts.assetsDir}/${fileNamePattern(chunkInfo)}` : chunkInfo => fileNamePattern(chunkInfo);
2962
- outputOpts.entryFileNames || (outputOpts.entryFileNames = getFilePath(fileName));
2963
- outputOpts.chunkFileNames || (outputOpts.chunkFileNames = getFilePath(fileName));
2964
- } else {
2965
- "production" === opts.buildMode && (outputOpts.chunkFileNames || (outputOpts.chunkFileNames = "q-[hash].js"));
2966
- }
2967
- outputOpts.assetFileNames || (outputOpts.assetFileNames = "assets/[hash]-[name].[ext]");
2968
- if ("client" === opts.target) {
2952
+ outputOpts.entryFileNames || (outputOpts.entryFileNames = chunkFileName);
2953
+ outputOpts.chunkFileNames || (outputOpts.chunkFileNames = chunkFileName);
2969
2954
  outputOpts.format = "es";
2970
2955
  const prevManualChunks = outputOpts.manualChunks;
2971
2956
  if (prevManualChunks && "function" !== typeof prevManualChunks) {
2972
2957
  throw new Error("manualChunks must be a function");
2973
2958
  }
2974
2959
  outputOpts.manualChunks = prevManualChunks ? (id, meta) => prevManualChunks(id, meta) || manualChunks(id, meta) : manualChunks;
2960
+ } else {
2961
+ outputOpts.chunkFileNames || (outputOpts.chunkFileNames = chunkFileName);
2975
2962
  }
2976
2963
  outputOpts.dir || (outputOpts.dir = opts.outDir);
2977
2964
  "cjs" === outputOpts.format && "string" !== typeof outputOpts.exports && (outputOpts.exports = "auto");
@@ -3329,8 +3316,6 @@ var perf_warning_default = "<script>\n if (!window.__qwikViteLog) {\n window
3329
3316
 
3330
3317
  var VITE_ERROR_OVERLAY_STYLES = "\nvite-error-overlay {\n --color-bright: rgba(255, 255, 255, 0.8);\n --color-yellow: rgba(255,246,85,0.8);\n --qwik-dark-blue: #006ce9;\n --qwik-light-blue: #3ec2f7;\n --qwik-light-purple: #ac7ff4;\n --qwik-dark-purple: #713fc2;\n --yellow: #fff; /* override vite yellow */\n --purple: var(--color-bright); /* override vite purple */\n --red: var(--qwik-light-blue); /* override vite red */\n\n --vertical-box-spacing: 15px;\n --box-padding: 20px;\n --box-margin: 0 0 var(--vertical-box-spacing) 0;\n --box-background: rgba(0, 0, 0, 0.5);\n --box-border-radius: 8px;\n}\n\nvite-error-overlay::part(backdrop) {\n background: rgb(2 11 17 / 60%);\n}\n\nvite-error-overlay::part(window) {\n background: transparent;\n border: none;\n box-shadow: none;\n box-sizing: border-box;\n margin: 50px auto;\n max-width: 1200px;\n padding: var(--box-padding);\n width: 90%;\n}\n\nvite-error-overlay::part(message) {\n display: flex;\n flex-direction: column;\n font-size: 1.6rem;\n line-height: 1.7;\n margin-bottom: 30px;\n}\n\nvite-error-overlay::part(plugin) {\n font-size: 0.8rem;\n font-weight: 100;\n}\n\nvite-error-overlay::part(file),\nvite-error-overlay::part(frame),\nvite-error-overlay::part(stack),\nvite-error-overlay::part(tip) {\n background: var(--box-background);\n border-left: 5px solid transparent;\n border-radius: var(--box-border-radius);\n margin: var(--box-margin);\n min-height: 50px;\n padding: var(--box-padding);\n position: relative;\n}\n\nvite-error-overlay::part(file) {\n border-left-color: rgb(25 182 246);\n color: var(--color-bright);\n}\n\nvite-error-overlay::part(frame) {\n border-left-color: var(--color-yellow);\n color: var(--color-yellow);\n}\n\nvite-error-overlay::part(stack) {\n border-left-color: #FF5722;\n}\n\n\nvite-error-overlay::part(tip) {\n border-top: none;\n border-left-color: rgb(172, 127, 244);\n}\n\nvite-error-overlay::part(file):before,\nvite-error-overlay::part(frame):before,\nvite-error-overlay::part(stack):before {\n border-bottom: 1px solid #222;\n color: var(--color-bright);\n display: block;\n margin-bottom: 15px;\n padding-bottom: 5px;\n padding-left: 30px; /* space for icon */\n font-size: .8rem;\n}\n\nvite-error-overlay::part(file):before {\n content: 'File';\n}\n\nvite-error-overlay::part(frame):before {\n content: 'Frame';\n}\n\nvite-error-overlay::part(stack):before {\n content: 'Stack Trace';\n}\n\nvite-error-overlay::part(file):after,\nvite-error-overlay::part(frame):after,\nvite-error-overlay::part(stack):after {\n content: '';\n display: block;\n height: 20px;\n position: absolute;\n left: var(--box-padding);\n top: var(--box-padding);\n width: 20px;\n}\n\nvite-error-overlay::part(file):after {\n background-image: url(\"data:image/svg+xml,%3Csvg width='20px' height='20px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3EFile-Generic%3C/title%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='File-Generic'%3E%3Crect id='Rectangle' fill-rule='nonzero' x='0' y='0' width='24' height='24'%3E%3C/rect%3E%3Cpath d='M4 5 C4 3.89543 4.89543 3 6 3 L15.1716 3 C15.702 3 16.2107 3.21071 16.5858 3.58579 L19.4142 6.41421 C19.7893 6.78929 20 7.29799 20 7.82843 L20 19 C20 20.1046 19.1046 21 18 21 L6 21 C4.89543 21 4 20.1046 4 19 L4 5 Z' id='Path' stroke='rgba(255,255,255,0.7)' stroke-width='1' stroke-linecap='round'%3E%3C/path%3E%3Cpath d='M15 4 L15 6 C15 7.10457 15.8954 8 17 8 L19 8' id='Path' stroke='rgba(255,255,255,0.7)' stroke-width='1' stroke-linecap='round'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\n}\n\nvite-error-overlay::part(frame):after {\n background-image: url(\"data:image/svg+xml,%3Csvg width='20px' height='20px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M15.6602 2.84952H19.1516C20.2555 2.84952 21.1504 3.74444 21.1504 4.84839V8.3398' stroke='rgba(255,255,255,0.7)' stroke-width='1.69904' stroke-linecap='round'/%3E%3Cpath d='M2.84949 8.33981L2.84949 4.8484C2.84949 3.74446 3.74441 2.84953 4.84836 2.84953L8.33977 2.84953' stroke='rgba(255,255,255,0.7)' stroke-width='1.69904' stroke-linecap='round'/%3E%3Cpath d='M21.1505 15.6602L21.1505 19.1516C21.1505 20.2555 20.2556 21.1505 19.1516 21.1505L15.6602 21.1505' stroke='rgba(255,255,255,0.7)' stroke-width='1.69904' stroke-linecap='round'/%3E%3Cpath d='M8.33984 21.1505L4.84843 21.1505C3.74449 21.1505 2.84956 20.2555 2.84956 19.1516L2.84956 15.6602' stroke='rgba(255,255,255,0.7)' stroke-width='1.69904' stroke-linecap='round'/%3E%3C/svg%3E\");\n}\n\nvite-error-overlay::part(stack):after {\n background-image: url(\"data:image/svg+xml,%3Csvg width='20px' height='20px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.78 20H9.78C7.98 20 4.58 19.09 4.58 15.64C4.58 12.19 7.98 11.28 9.78 11.28H14.22C14.37 11.28 17.92 11.23 17.92 8.42C17.92 5.61 14.37 5.56 14.22 5.56H9.22C9.02109 5.56 8.83032 5.48098 8.68967 5.34033C8.54902 5.19968 8.47 5.00891 8.47 4.81C8.47 4.61109 8.54902 4.42032 8.68967 4.27967C8.83032 4.13902 9.02109 4.06 9.22 4.06H14.22C16.02 4.06 19.42 4.97 19.42 8.42C19.42 11.87 16.02 12.78 14.22 12.78H9.78C9.63 12.78 6.08 12.83 6.08 15.64C6.08 18.45 9.63 18.5 9.78 18.5H14.78C14.9789 18.5 15.1697 18.579 15.3103 18.7197C15.451 18.8603 15.53 19.0511 15.53 19.25C15.53 19.4489 15.451 19.6397 15.3103 19.7803C15.1697 19.921 14.9789 20 14.78 20Z' fill='rgba(255,255,255,0.7)'/%3E%3Cpath d='M6.44 8.31C5.74314 8.30407 5.06363 8.09202 4.48708 7.70056C3.91054 7.30909 3.46276 6.75573 3.20018 6.11021C2.93759 5.46469 2.87195 4.75589 3.01153 4.07312C3.1511 3.39036 3.48965 2.76418 3.9845 2.2735C4.47935 1.78281 5.10837 1.44958 5.79229 1.31579C6.47622 1.182 7.18444 1.25363 7.82771 1.52167C8.47099 1.78971 9.02054 2.24215 9.40711 2.82199C9.79368 3.40182 9.99998 4.08311 10 4.78C10 5.2461 9.90773 5.70759 9.72846 6.13783C9.54919 6.56808 9.28648 6.95856 8.95551 7.28675C8.62453 7.61494 8.23184 7.87433 7.80009 8.04995C7.36834 8.22558 6.90609 8.31396 6.44 8.31ZM6.44 2.75C6.04444 2.75 5.65776 2.86729 5.32886 3.08706C4.99996 3.30682 4.74362 3.61918 4.59224 3.98463C4.44087 4.35008 4.40126 4.75221 4.47843 5.14018C4.5556 5.52814 4.74609 5.8845 5.02579 6.16421C5.3055 6.44391 5.66186 6.6344 6.04982 6.71157C6.43779 6.78874 6.83992 6.74913 7.20537 6.59776C7.57082 6.44638 7.88318 6.19003 8.10294 5.86114C8.32271 5.53224 8.44 5.14556 8.44 4.75C8.44 4.48735 8.38827 4.22728 8.28776 3.98463C8.18725 3.74198 8.03993 3.5215 7.85422 3.33578C7.6685 3.15007 7.44802 3.00275 7.20537 2.90224C6.96272 2.80173 6.70265 2.75 6.44 2.75Z' fill='rgba(255,255,255,0.7)'/%3E%3Cpath d='M17.56 22.75C16.8614 22.752 16.1779 22.5466 15.5961 22.1599C15.0143 21.7733 14.5603 21.2227 14.2916 20.5778C14.0229 19.933 13.9515 19.2229 14.0866 18.5375C14.2217 17.8521 14.5571 17.2221 15.0504 16.7275C15.5437 16.2328 16.1726 15.8956 16.8577 15.7586C17.5427 15.6215 18.253 15.6909 18.8986 15.9577C19.5442 16.2246 20.0961 16.6771 20.4844 17.2578C20.8727 17.8385 21.08 18.5214 21.08 19.22C21.08 20.1545 20.7095 21.0508 20.0496 21.7125C19.3898 22.3743 18.4945 22.7473 17.56 22.75ZM17.56 17.19C17.1644 17.19 16.7778 17.3073 16.4489 17.5271C16.12 17.7468 15.8636 18.0592 15.7122 18.4246C15.5609 18.7901 15.5213 19.1922 15.5984 19.5802C15.6756 19.9681 15.8661 20.3245 16.1458 20.6042C16.4255 20.8839 16.7819 21.0744 17.1698 21.1516C17.5578 21.2287 17.9599 21.1891 18.3254 21.0377C18.6908 20.8864 19.0032 20.63 19.2229 20.3011C19.4427 19.9722 19.56 19.5856 19.56 19.19C19.56 18.6596 19.3493 18.1508 18.9742 17.7758C18.5991 17.4007 18.0904 17.19 17.56 17.19Z' fill='rgba(255,255,255,0.7)'/%3E%3C/svg%3E\");\n}\n\nvite-error-overlay::part(tip):before {\n content: \"Not sure how to solve this? Visit https://qwik.dev or connect with the community on Discord.\";\n display: block;\n margin-bottom: 1em;\n}\n";
3331
3318
 
3332
- var SYNC_QRL = "<sync>";
3333
-
3334
3319
  function getOrigin(req) {
3335
3320
  const {PROTOCOL_HEADER: PROTOCOL_HEADER, HOST_HEADER: HOST_HEADER} = process.env;
3336
3321
  const headers = req.headers;
@@ -3339,37 +3324,7 @@ function getOrigin(req) {
3339
3324
  return `${protocol}://${host}`;
3340
3325
  }
3341
3326
 
3342
- function createSymbolMapper(base) {
3343
- return (symbolName, _mapper, parent) => {
3344
- if (symbolName === SYNC_QRL) {
3345
- return [ symbolName, "" ];
3346
- }
3347
- if (!parent) {
3348
- if (symbolName.startsWith("_")) {
3349
- return [ symbolName, `${base}${QWIK_HANDLERS_ID}` ];
3350
- }
3351
- console.error("qwik vite-dev-server symbolMapper: unknown qrl requested without parent:", symbolName);
3352
- return [ symbolName, `${base}${symbolName}.js` ];
3353
- }
3354
- const qrlFile = `${base}${parent.startsWith("/") ? parent.slice(1) : parent}_${symbolName}.js`;
3355
- return [ symbolName, qrlFile ];
3356
- };
3357
- }
3358
-
3359
- var lazySymbolMapper = null;
3360
-
3361
- var symbolMapper = (symbolName, mapper, parent) => {
3362
- if (lazySymbolMapper) {
3363
- return lazySymbolMapper(symbolName, mapper, parent);
3364
- }
3365
- throw new Error("symbolMapper not initialized");
3366
- };
3367
-
3368
- async function configureDevServer(base, server, opts, sys, path, isClientDevOnly, clientDevInput, devSsrServer) {
3369
- symbolMapper = lazySymbolMapper = createSymbolMapper(base);
3370
- if (!devSsrServer) {
3371
- return;
3372
- }
3327
+ async function configureDevServer(base, server, opts, sys, path, isClientDevOnly, clientDevInput) {
3373
3328
  const hasQwikRouter = server.config.plugins?.some(plugin => "vite-plugin-qwik-router" === plugin.name);
3374
3329
  const cssImportedByCSS = new Set;
3375
3330
  server.middlewares.use(async (req, res, next) => {
@@ -3406,6 +3361,14 @@ async function configureDevServer(base, server, opts, sys, path, isClientDevOnly
3406
3361
  return;
3407
3362
  }
3408
3363
  const firstInput = opts.input && Object.values(opts.input)[0];
3364
+ if (!firstInput) {
3365
+ console.error("no entry found for dev server");
3366
+ res.statusCode || (res.statusCode = 404);
3367
+ res.setHeader("Content-Type", "text/plain");
3368
+ res.writeHead(res.statusCode);
3369
+ res.end("No entry found for dev server");
3370
+ return;
3371
+ }
3409
3372
  const ssrModule = await server.ssrLoadModule(firstInput);
3410
3373
  const render = ssrModule.default ?? ssrModule.render;
3411
3374
  if ("function" === typeof render) {
@@ -3456,7 +3419,6 @@ async function configureDevServer(base, server, opts, sys, path, isClientDevOnly
3456
3419
  stream: res,
3457
3420
  snapshot: !isClientDevOnly,
3458
3421
  manifest: isClientDevOnly ? void 0 : manifest,
3459
- symbolMapper: isClientDevOnly ? void 0 : symbolMapper,
3460
3422
  serverData: serverData,
3461
3423
  containerAttributes: {
3462
3424
  ...serverData.containerAttributes
@@ -3638,7 +3600,6 @@ var FONTS = [ ".woff", ".woff2", ".ttf" ];
3638
3600
  function qwikVite(qwikViteOpts = {}) {
3639
3601
  let isClientDevOnly = false;
3640
3602
  let clientDevInput;
3641
- let tmpClientManifestPath;
3642
3603
  let viteCommand = "serve";
3643
3604
  let manifestInput = null;
3644
3605
  let clientOutDir = null;
@@ -3685,6 +3646,10 @@ function qwikVite(qwikViteOpts = {}) {
3685
3646
  } : "lib" === target && (qwikViteOpts.entryStrategy = {
3686
3647
  type: "inline"
3687
3648
  });
3649
+ const ssrInput = "ssr" === target ? "string" === typeof viteConfig.build?.ssr ? viteConfig.build.ssr : qwikViteOpts.ssr?.input : void 0;
3650
+ const clientInput = "client" === target ? qwikViteOpts.client?.input : void 0;
3651
+ let input = viteConfig.build?.rollupOptions?.input || clientInput || ssrInput;
3652
+ input && "string" === typeof input && (input = [ input ]);
3688
3653
  const shouldFindVendors = !qwikViteOpts.disableVendorScan && ("lib" !== target || "serve" === viteCommand);
3689
3654
  viteAssetsDir = viteConfig.build?.assetsDir;
3690
3655
  const useAssetsDir = "client" === target && !!viteAssetsDir && "_astro" !== viteAssetsDir;
@@ -3700,56 +3665,26 @@ function qwikVite(qwikViteOpts = {}) {
3700
3665
  resolveQwikBuild: true,
3701
3666
  transformedModuleOutput: qwikViteOpts.transformedModuleOutput,
3702
3667
  outDir: viteConfig.build?.outDir,
3668
+ ssrOutDir: qwikViteOpts.ssr?.outDir || viteConfig.build?.outDir,
3669
+ clientOutDir: qwikViteOpts.client?.outDir || (viteConfig.build?.ssr ? void 0 : viteConfig.build?.outDir),
3703
3670
  assetsDir: useAssetsDir ? viteAssetsDir : void 0,
3704
3671
  devTools: qwikViteOpts.devTools,
3705
3672
  sourcemap: !!viteConfig.build?.sourcemap,
3706
3673
  lint: qwikViteOpts.lint,
3707
- experimental: qwikViteOpts.experimental
3674
+ experimental: qwikViteOpts.experimental,
3675
+ input: input,
3676
+ manifestInput: qwikViteOpts.ssr?.manifestInput,
3677
+ manifestOutput: qwikViteOpts.client?.manifestOutput
3708
3678
  };
3709
- if (!qwikViteOpts.csr) {
3710
- if ("ssr" === target) {
3711
- "string" === typeof viteConfig.build?.ssr ? pluginOpts.input = viteConfig.build.ssr : "string" === typeof qwikViteOpts.ssr?.input && (pluginOpts.input = qwikViteOpts.ssr.input);
3712
- qwikViteOpts.ssr?.outDir && (pluginOpts.outDir = qwikViteOpts.ssr.outDir);
3713
- pluginOpts.manifestInput = qwikViteOpts.ssr?.manifestInput;
3714
- } else if ("client" === target) {
3715
- pluginOpts.input = qwikViteOpts.client?.input;
3716
- qwikViteOpts.client?.outDir && (pluginOpts.outDir = qwikViteOpts.client.outDir);
3717
- pluginOpts.manifestOutput = qwikViteOpts.client?.manifestOutput;
3718
- } else {
3719
- "object" === typeof viteConfig.build?.lib && (pluginOpts.input = viteConfig.build?.lib.entry);
3720
- }
3721
- if ("node" === sys.env || "bun" === sys.env) {
3722
- const fs = await sys.dynamicImport("node:fs");
3723
- try {
3724
- const rootDir2 = pluginOpts.rootDir ?? sys.cwd();
3725
- const packageJsonPath = sys.path.join(rootDir2, "package.json");
3726
- const pkgString = await fs.promises.readFile(packageJsonPath, "utf-8");
3727
- try {
3728
- const data = JSON.parse(pkgString);
3729
- "string" === typeof data.name && (pluginOpts.scope = data.name);
3730
- } catch (e) {
3731
- console.error(e);
3732
- }
3733
- } catch {}
3734
- const nodeOs = await sys.dynamicImport("node:os");
3735
- const scopeSuffix = pluginOpts.scope ? `-${pluginOpts.scope.replace(/\//g, "--")}` : "";
3736
- tmpClientManifestPath = path.join(nodeOs.tmpdir(), `vite-plugin-qwik-q-manifest${scopeSuffix}.json`);
3737
- if ("ssr" === target && !pluginOpts.manifestInput) {
3738
- try {
3739
- const clientManifestStr = await fs.promises.readFile(tmpClientManifestPath, "utf-8");
3740
- pluginOpts.manifestInput = JSON.parse(clientManifestStr);
3741
- } catch {}
3742
- }
3743
- }
3744
- }
3745
- const opts = qwikPlugin.normalizeOptions(pluginOpts);
3746
- manifestInput = pluginOpts.manifestInput || null;
3679
+ const opts = await qwikPlugin.normalizeOptions(pluginOpts);
3680
+ input || (input = opts.input);
3681
+ manifestInput = opts.manifestInput;
3747
3682
  srcDir = opts.srcDir;
3748
3683
  rootDir = opts.rootDir;
3749
3684
  if (!qwikViteOpts.csr) {
3750
- clientOutDir = qwikPlugin.normalizePath(sys.path.resolve(opts.rootDir, qwikViteOpts.client?.outDir || CLIENT_OUT_DIR));
3685
+ clientOutDir = opts.clientOutDir;
3751
3686
  clientPublicOutDir = viteConfig.base ? path.join(clientOutDir, viteConfig.base) : clientOutDir;
3752
- ssrOutDir = qwikPlugin.normalizePath(sys.path.resolve(opts.rootDir, qwikViteOpts.ssr?.outDir || SSR_OUT_DIR));
3687
+ ssrOutDir = opts.ssrOutDir;
3753
3688
  clientDevInput = "string" === typeof qwikViteOpts.client?.devInput ? path.resolve(opts.rootDir, qwikViteOpts.client.devInput) : opts.srcDir ? path.resolve(opts.srcDir, CLIENT_DEV_INPUT) : path.resolve(opts.rootDir, "src", CLIENT_DEV_INPUT);
3754
3689
  clientDevInput = qwikPlugin.normalizePath(clientDevInput);
3755
3690
  }
@@ -3798,6 +3733,7 @@ function qwikVite(qwikViteOpts = {}) {
3798
3733
  },
3799
3734
  rollupOptions: {
3800
3735
  maxParallelFileOps: 1,
3736
+ input: input,
3801
3737
  output: {
3802
3738
  manualChunks: qwikPlugin.manualChunks
3803
3739
  }
@@ -3816,7 +3752,7 @@ function qwikVite(qwikViteOpts = {}) {
3816
3752
  updatedViteConfig.build.outDir = buildOutputDir;
3817
3753
  const origOnwarn = updatedViteConfig.build.rollupOptions?.onwarn;
3818
3754
  updatedViteConfig.build.rollupOptions = {
3819
- input: opts.input,
3755
+ ...updatedViteConfig.build.rollupOptions,
3820
3756
  output: normalizeRollupOutputOptions(qwikPlugin, viteConfig.build?.rollupOptions?.output, useAssetsDir, buildOutputDir),
3821
3757
  preserveEntrySignatures: "exports-only",
3822
3758
  onwarn: (warning, warn) => {
@@ -3830,7 +3766,7 @@ function qwikVite(qwikViteOpts = {}) {
3830
3766
  if ("build" === viteCommand) {
3831
3767
  updatedViteConfig.publicDir = false;
3832
3768
  updatedViteConfig.build.ssr = true;
3833
- null == viteConfig.build?.minify && "production" === buildMode && (updatedViteConfig.build.minify = "esbuild");
3769
+ null == viteConfig.build?.minify && "production" === buildMode && (updatedViteConfig.build.minify = true);
3834
3770
  }
3835
3771
  } else if ("client" === opts.target) {
3836
3772
  isClientDevOnly && !opts.csr && (updatedViteConfig.build.rollupOptions.input = clientDevInput);
@@ -3861,6 +3797,7 @@ function qwikVite(qwikViteOpts = {}) {
3861
3797
  qwikPlugin.normalizeOptions(qwikViteOpts);
3862
3798
  },
3863
3799
  async buildStart() {
3800
+ injections.length = 0;
3864
3801
  const resolver = this.resolve.bind(this);
3865
3802
  await qwikPlugin.validateSource(resolver);
3866
3803
  qwikPlugin.onDiagnostics((diagnostics, optimizer, srcDir2) => {
@@ -3950,17 +3887,12 @@ function qwikVite(qwikViteOpts = {}) {
3950
3887
  }
3951
3888
  }
3952
3889
  }
3953
- const clientManifestStr = await qwikPlugin.generateManifest(this, rollupBundle, bundleGraphAdders, {
3890
+ await qwikPlugin.generateManifest(this, rollupBundle, bundleGraphAdders, {
3954
3891
  injections: injections,
3955
3892
  platform: {
3956
3893
  vite: ""
3957
3894
  }
3958
3895
  });
3959
- const sys = qwikPlugin.getSys();
3960
- if (tmpClientManifestPath && ("node" === sys.env || "bun" === sys.env)) {
3961
- const fs = await sys.dynamicImport("node:fs");
3962
- await fs.promises.writeFile(tmpClientManifestPath, clientManifestStr);
3963
- }
3964
3896
  }
3965
3897
  }
3966
3898
  },
@@ -4000,15 +3932,15 @@ function qwikVite(qwikViteOpts = {}) {
4000
3932
  },
4001
3933
  configureServer(server) {
4002
3934
  qwikPlugin.configureServer(server);
4003
- const devSsrServer = !("devSsrServer" in qwikViteOpts) || !!qwikViteOpts.devSsrServer;
3935
+ const devSsrServer = !qwikViteOpts.csr && (!("devSsrServer" in qwikViteOpts) || !!qwikViteOpts.devSsrServer);
4004
3936
  const imageDevTools = !qwikViteOpts.devTools || !("imageDevTools" in qwikViteOpts.devTools) || qwikViteOpts.devTools.imageDevTools;
4005
3937
  imageDevTools && server.middlewares.use(getImageSizeServer(qwikPlugin.getSys(), rootDir, srcDir));
4006
- if (!qwikViteOpts.csr) {
3938
+ if (devSsrServer) {
4007
3939
  const plugin = async () => {
4008
3940
  const opts = qwikPlugin.getOptions();
4009
3941
  const sys = qwikPlugin.getSys();
4010
3942
  const path = qwikPlugin.getPath();
4011
- await configureDevServer(basePathname, server, opts, sys, path, isClientDevOnly, clientDevInput, devSsrServer);
3943
+ await configureDevServer(basePathname, server, opts, sys, path, isClientDevOnly, clientDevInput);
4012
3944
  };
4013
3945
  const isNEW = true === globalThis.__qwikRouterNew || true === globalThis.__qwikCityNew || server.config.build.lib;
4014
3946
  return isNEW ? plugin : plugin();
@@ -4142,4 +4074,6 @@ var VITE_CLIENT_MODULE = "@qwik.dev/core/vite-client";
4142
4074
 
4143
4075
  var CLIENT_DEV_INPUT = "entry.dev";
4144
4076
 
4077
+ var symbolMapper = void 0;
4078
+
4145
4079
  export { createOptimizer, qwikRollup, qwikVite, symbolMapper, versions };