@cloudflare/vite-plugin 0.0.0-db300ef98 → 0.0.0-db5ea8f1f

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.
package/dist/index.js CHANGED
@@ -489,7 +489,7 @@ import assert10 from "node:assert";
489
489
  import * as fs5 from "node:fs";
490
490
  import * as fsp2 from "node:fs/promises";
491
491
  import * as path9 from "node:path";
492
- import { createMiddleware } from "@hattip/adapter-node";
492
+ import { createRequest, sendResponse } from "@mjackson/node-fetch-server";
493
493
  import replace from "@rollup/plugin-replace";
494
494
 
495
495
  // ../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
@@ -1558,7 +1558,7 @@ var MagicString = class _MagicString {
1558
1558
 
1559
1559
  // src/index.ts
1560
1560
  import { Miniflare } from "miniflare";
1561
- import colors2 from "picocolors";
1561
+ import colors3 from "picocolors";
1562
1562
  import * as vite7 from "vite";
1563
1563
 
1564
1564
  // src/constants.ts
@@ -13029,19 +13029,6 @@ function toMiniflareRequest(request) {
13029
13029
  duplex: "half"
13030
13030
  });
13031
13031
  }
13032
- function nodeHeadersToWebHeaders(nodeHeaders) {
13033
- const headers = new Headers();
13034
- for (const [key, value] of Object.entries(nodeHeaders)) {
13035
- if (typeof value === "string") {
13036
- headers.append(key, value);
13037
- } else if (Array.isArray(value)) {
13038
- for (const item of value) {
13039
- headers.append(key, item);
13040
- }
13041
- }
13042
- }
13043
- return headers;
13044
- }
13045
13032
  var postfixRE = /[?#].*$/;
13046
13033
  function cleanUrl(url) {
13047
13034
  return url.replace(postfixRE, "");
@@ -13355,6 +13342,7 @@ import {
13355
13342
  LogLevel,
13356
13343
  Response as MiniflareResponse
13357
13344
  } from "miniflare";
13345
+ import colors2 from "picocolors";
13358
13346
  import { globSync } from "tinyglobby";
13359
13347
  import "vite";
13360
13348
  import { unstable_getMiniflareWorkerOptions } from "wrangler";
@@ -13459,6 +13447,29 @@ function getEntryWorkerConfig(resolvedPluginConfig) {
13459
13447
  }
13460
13448
  return resolvedPluginConfig.workers[resolvedPluginConfig.entryWorkerEnvironmentName];
13461
13449
  }
13450
+ function filterTails(tails, userWorkers, log) {
13451
+ return tails?.filter((tailService) => {
13452
+ let name;
13453
+ if (typeof tailService === "string") {
13454
+ name = tailService;
13455
+ } else if (typeof tailService === "object" && "name" in tailService && typeof tailService.name === "string") {
13456
+ name = tailService.name;
13457
+ } else {
13458
+ return true;
13459
+ }
13460
+ const found = userWorkers.some((w) => w.name === name);
13461
+ if (!found) {
13462
+ log(
13463
+ colors2.dim(
13464
+ colors2.yellow(
13465
+ `Tail consumer "${name}" was not found in your config. Make sure you add it if you'd like to simulate receiving tail events locally.`
13466
+ )
13467
+ )
13468
+ );
13469
+ }
13470
+ return found;
13471
+ });
13472
+ }
13462
13473
  function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPort) {
13463
13474
  const resolvedViteConfig = viteDevServer.config;
13464
13475
  const entryWorkerConfig = getEntryWorkerConfig(resolvedPluginConfig);
@@ -13650,6 +13661,11 @@ function getDevMiniflareOptions(resolvedPluginConfig, viteDevServer, inspectorPo
13650
13661
  }
13651
13662
  return {
13652
13663
  ...workerOptions,
13664
+ tails: filterTails(
13665
+ workerOptions.tails,
13666
+ userWorkers,
13667
+ viteDevServer.config.logger.warn
13668
+ ),
13653
13669
  modules: [
13654
13670
  {
13655
13671
  type: "ESModule",
@@ -13740,6 +13756,11 @@ function getPreviewMiniflareOptions(vitePreviewServer, workerConfigs, persistSta
13740
13756
  return [
13741
13757
  {
13742
13758
  ...workerOptions,
13759
+ tails: filterTails(
13760
+ workerOptions.tails,
13761
+ workerConfigs,
13762
+ vitePreviewServer.config.logger.warn
13763
+ ),
13743
13764
  name: workerOptions.name ?? config.name,
13744
13765
  unsafeInspectorProxy: inspectorPort !== false,
13745
13766
  ...miniflareWorkerOptions.main ? getPreviewModules(miniflareWorkerOptions.main, modulesRules) : { modules: true, script: "" }
@@ -14148,6 +14169,7 @@ function resolvePluginConfig(pluginConfig, userConfig, viteEnv) {
14148
14169
  }
14149
14170
 
14150
14171
  // src/websockets.ts
14172
+ import { createHeaders } from "@mjackson/node-fetch-server";
14151
14173
  import { coupleWebSocket } from "miniflare";
14152
14174
  import { WebSocketServer } from "ws";
14153
14175
  function handleWebSocket(httpServer, getFetcher) {
@@ -14159,7 +14181,7 @@ function handleWebSocket(httpServer, getFetcher) {
14159
14181
  if (request.headers["sec-websocket-protocol"]?.startsWith("vite")) {
14160
14182
  return;
14161
14183
  }
14162
- const headers = nodeHeadersToWebHeaders(request.headers);
14184
+ const headers = createHeaders(request);
14163
14185
  const fetcher = await getFetcher();
14164
14186
  const response = await fetcher(url, {
14165
14187
  headers,
@@ -14426,10 +14448,6 @@ function cloudflare2(pluginConfig = {}) {
14426
14448
  }
14427
14449
  },
14428
14450
  async configureServer(viteDevServer) {
14429
- assert10(
14430
- viteDevServer.httpServer,
14431
- "Unexpected error: No Vite HTTP server"
14432
- );
14433
14451
  const inputInspectorPort = await getInputInspectorPortOption(
14434
14452
  pluginConfig,
14435
14453
  viteDevServer
@@ -14452,24 +14470,32 @@ function cloudflare2(pluginConfig = {}) {
14452
14470
  );
14453
14471
  }
14454
14472
  await initRunners(resolvedPluginConfig, viteDevServer, miniflare);
14455
- const middleware = createMiddleware(
14456
- async ({ request }) => {
14473
+ if (viteDevServer.httpServer) {
14474
+ handleWebSocket(viteDevServer.httpServer, async () => {
14457
14475
  assert10(miniflare, `Miniflare not defined`);
14458
14476
  const routerWorker = await getRouterWorker(miniflare);
14459
- return routerWorker.fetch(toMiniflareRequest(request), {
14460
- redirect: "manual"
14461
- });
14462
- },
14463
- { alwaysCallNext: false }
14464
- );
14465
- handleWebSocket(viteDevServer.httpServer, async () => {
14466
- assert10(miniflare, `Miniflare not defined`);
14467
- const routerWorker = await getRouterWorker(miniflare);
14468
- return routerWorker.fetch;
14469
- });
14477
+ return routerWorker.fetch;
14478
+ });
14479
+ }
14470
14480
  return () => {
14471
- viteDevServer.middlewares.use((req, res, next) => {
14472
- middleware(req, res, next);
14481
+ viteDevServer.middlewares.use(async (req, res, next) => {
14482
+ try {
14483
+ assert10(miniflare, `Miniflare not defined`);
14484
+ const routerWorker = await getRouterWorker(miniflare);
14485
+ const request = createRequest(req, res);
14486
+ const response = await routerWorker.fetch(
14487
+ toMiniflareRequest(request),
14488
+ {
14489
+ redirect: "manual"
14490
+ }
14491
+ );
14492
+ if (req.httpVersionMajor === 2) {
14493
+ response.headers.delete("transfer-encoding");
14494
+ }
14495
+ await sendResponse(res, response);
14496
+ } catch (error) {
14497
+ next(error);
14498
+ }
14473
14499
  });
14474
14500
  };
14475
14501
  },
@@ -14487,20 +14513,24 @@ function cloudflare2(pluginConfig = {}) {
14487
14513
  inputInspectorPort
14488
14514
  )
14489
14515
  );
14490
- const middleware = createMiddleware(
14491
- ({ request }) => {
14492
- return miniflare2.dispatchFetch(toMiniflareRequest(request), {
14493
- redirect: "manual"
14494
- });
14495
- },
14496
- { alwaysCallNext: false }
14497
- );
14498
14516
  handleWebSocket(
14499
14517
  vitePreviewServer.httpServer,
14500
14518
  () => miniflare2.dispatchFetch
14501
14519
  );
14502
- vitePreviewServer.middlewares.use((req, res, next) => {
14503
- middleware(req, res, next);
14520
+ vitePreviewServer.middlewares.use(async (req, res, next) => {
14521
+ try {
14522
+ const request = createRequest(req, res);
14523
+ const response = await miniflare2.dispatchFetch(
14524
+ toMiniflareRequest(request),
14525
+ { redirect: "manual" }
14526
+ );
14527
+ if (req.httpVersionMajor === 2) {
14528
+ response.headers.delete("transfer-encoding");
14529
+ }
14530
+ await sendResponse(res, response);
14531
+ } catch (error) {
14532
+ next(error);
14533
+ }
14504
14534
  });
14505
14535
  }
14506
14536
  },
@@ -14839,7 +14869,7 @@ async function getInputInspectorPortOption(pluginConfig, viteServer) {
14839
14869
  const inputInspectorPort = pluginConfig.inspectorPort ?? await getFirstAvailablePort(DEFAULT_INSPECTOR_PORT);
14840
14870
  if (pluginConfig.inspectorPort === void 0 && inputInspectorPort !== DEFAULT_INSPECTOR_PORT) {
14841
14871
  viteServer.config.logger.warn(
14842
- colors2.dim(
14872
+ colors3.dim(
14843
14873
  `Default inspector port ${DEFAULT_INSPECTOR_PORT} not available, using ${inputInspectorPort} instead
14844
14874
  `
14845
14875
  )
@@ -29,7 +29,7 @@ function stripInternalEnv(internalEnv) {
29
29
  return userEnv;
30
30
  }
31
31
 
32
- // ../../node_modules/.pnpm/vite@6.1.0_@types+node@18.19.76_jiti@2.4.2_lightningcss@1.29.2/node_modules/vite/dist/node/module-runner.js
32
+ // ../../node_modules/.pnpm/vite@6.1.0_@types+node@20.17.32_jiti@2.4.2_lightningcss@1.29.2/node_modules/vite/dist/node/module-runner.js
33
33
  var VALID_ID_PREFIX = "/@id/";
34
34
  var NULL_BYTE_PLACEHOLDER = "__x00__";
35
35
  var SOURCEMAPPING_URL = "sourceMa";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/vite-plugin",
3
- "version": "0.0.0-db300ef98",
3
+ "version": "0.0.0-db5ea8f1f",
4
4
  "description": "Cloudflare plugin for Vite",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -33,19 +33,19 @@
33
33
  "dist"
34
34
  ],
35
35
  "dependencies": {
36
- "@hattip/adapter-node": "^0.0.49",
36
+ "@cloudflare/unenv-preset": "2.3.2",
37
+ "@mjackson/node-fetch-server": "^0.6.1",
37
38
  "@rollup/plugin-replace": "^6.0.1",
38
39
  "get-port": "^7.1.0",
39
40
  "picocolors": "^1.1.1",
40
41
  "tinyglobby": "^0.2.12",
41
- "unenv": "2.0.0-rc.15",
42
+ "unenv": "2.0.0-rc.17",
42
43
  "ws": "8.18.0",
43
- "wrangler": "0.0.0-db300ef98",
44
- "@cloudflare/unenv-preset": "0.0.0-db300ef98",
45
- "miniflare": "0.0.0-db300ef98"
44
+ "wrangler": "0.0.0-db5ea8f1f",
45
+ "miniflare": "0.0.0-db5ea8f1f"
46
46
  },
47
47
  "devDependencies": {
48
- "@cloudflare/workers-types": "^4.20250424.0",
48
+ "@cloudflare/workers-types": "^4.20250508.0",
49
49
  "@types/node": "^22.10.1",
50
50
  "@types/ws": "^8.5.13",
51
51
  "magic-string": "^0.30.12",
@@ -56,8 +56,8 @@
56
56
  "vite": "^6.1.0",
57
57
  "vitest": "~3.1.1",
58
58
  "@cloudflare/mock-npm-registry": "0.0.0",
59
- "@cloudflare/workers-shared": "0.0.0-db300ef98",
60
- "@cloudflare/workers-tsconfig": "0.0.0"
59
+ "@cloudflare/workers-tsconfig": "0.0.0",
60
+ "@cloudflare/workers-shared": "0.0.0-db5ea8f1f"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "vite": "^6.1.0",