h3 1.15.8 → 1.15.9

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.cjs CHANGED
@@ -1500,7 +1500,7 @@ function formatEventStreamMessage(message) {
1500
1500
  `;
1501
1501
  }
1502
1502
  const data = typeof message.data === "string" ? message.data : "";
1503
- for (const line of data.split("\n")) {
1503
+ for (const line of data.split(/\r\n|\r|\n/)) {
1504
1504
  result += `data: ${line}
1505
1505
  `;
1506
1506
  }
@@ -1671,10 +1671,10 @@ async function serveStatic(event, options) {
1671
1671
  }
1672
1672
  return false;
1673
1673
  }
1674
- const originalId = ufo.decodePath(
1675
- ufo.withLeadingSlash(ufo.withoutTrailingSlash(ufo.parseURL(event.path).pathname))
1674
+ const originalId = ufo.withLeadingSlash(
1675
+ ufo.withoutTrailingSlash(ufo.parseURL(event.path).pathname)
1676
1676
  );
1677
- if (/(^|[\\/])\.\.($|[\\/])/.test(originalId)) {
1677
+ if (/(^|[\\/])(\.\.|%2e%2e|%2e\.|\.%2e)($|[\\/])/i.test(originalId)) {
1678
1678
  if (!options.fallthrough) {
1679
1679
  throw createError({ statusCode: 404 });
1680
1680
  }
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { withoutTrailingSlash, withoutBase, getQuery as getQuery$1, decode, decodePath, withLeadingSlash, parseURL, joinURL } from 'ufo';
1
+ import { withoutTrailingSlash, withoutBase, getQuery as getQuery$1, decode, withLeadingSlash, parseURL, joinURL, decodePath } from 'ufo';
2
2
  import { parse as parse$1, serialize, parseSetCookie } from 'cookie-es';
3
3
  import { createRouter as createRouter$1, toRouteMatcher } from 'radix3';
4
4
  import { defu } from 'defu';
@@ -1493,7 +1493,7 @@ function formatEventStreamMessage(message) {
1493
1493
  `;
1494
1494
  }
1495
1495
  const data = typeof message.data === "string" ? message.data : "";
1496
- for (const line of data.split("\n")) {
1496
+ for (const line of data.split(/\r\n|\r|\n/)) {
1497
1497
  result += `data: ${line}
1498
1498
  `;
1499
1499
  }
@@ -1664,10 +1664,10 @@ async function serveStatic(event, options) {
1664
1664
  }
1665
1665
  return false;
1666
1666
  }
1667
- const originalId = decodePath(
1668
- withLeadingSlash(withoutTrailingSlash(parseURL(event.path).pathname))
1667
+ const originalId = withLeadingSlash(
1668
+ withoutTrailingSlash(parseURL(event.path).pathname)
1669
1669
  );
1670
- if (/(^|[\\/])\.\.($|[\\/])/.test(originalId)) {
1670
+ if (/(^|[\\/])(\.\.|%2e%2e|%2e\.|\.%2e)($|[\\/])/i.test(originalId)) {
1671
1671
  if (!options.fallthrough) {
1672
1672
  throw createError({ statusCode: 404 });
1673
1673
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "1.15.8",
3
+ "version": "1.15.9",
4
4
  "description": "Minimal H(TTP) framework built for high performance and portability.",
5
5
  "license": "MIT",
6
6
  "repository": "h3js/h3",
@@ -45,10 +45,10 @@
45
45
  "devDependencies": {
46
46
  "0x": "^6.0.0",
47
47
  "@types/express": "^5.0.6",
48
- "@types/node": "^25.3.5",
48
+ "@types/node": "^25.5.0",
49
49
  "@types/supertest": "^7.2.0",
50
50
  "@typescript/native-preview": "latest",
51
- "@vitest/coverage-v8": "^4.0.18",
51
+ "@vitest/coverage-v8": "^4.1.0",
52
52
  "autocannon": "^8.0.0",
53
53
  "automd": "^0.4.3",
54
54
  "changelogen": "^0.6.2",
@@ -57,7 +57,7 @@
57
57
  "eslint-config-unjs": "^0.6.2",
58
58
  "express": "^5.2.1",
59
59
  "get-port": "^7.1.0",
60
- "h3": "^1.15.5",
60
+ "h3": "^1.15.8",
61
61
  "jiti": "^2.6.1",
62
62
  "listhen": "^1.9.0",
63
63
  "node-fetch-native": "^1.6.7",
@@ -67,8 +67,8 @@
67
67
  "supertest": "^7.2.2",
68
68
  "typescript": "^5.9.3",
69
69
  "unbuild": "^3.6.1",
70
- "undici": "^7.22.0",
71
- "vitest": "^4.0.18",
70
+ "undici": "^7.24.4",
71
+ "vitest": "^4.1.0",
72
72
  "zod": "^4.3.6"
73
73
  },
74
74
  "resolutions": {