diff --git a/.changeset/four-mammals-flash.md b/.changeset/four-mammals-flash.md new file mode 100644 index 00000000..2f045b63 --- /dev/null +++ b/.changeset/four-mammals-flash.md @@ -0,0 +1,5 @@ +--- +"@tus/server": minor +--- + +Update srvx diff --git a/package-lock.json b/package-lock.json index 2bd36248..edd7d736 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5661,15 +5661,15 @@ "license": "BSD-3-Clause" }, "node_modules/srvx": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.2.8.tgz", - "integrity": "sha512-9HG8eqhHLsvzhW4nJTg/4Sob1Sw/fB6S8Yzvf+iUD6l5CT4D0CXfPcFfh1r2eJFNHC0JOezK+YrgoufA5goYMQ==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.8.2.tgz", + "integrity": "sha512-anC1+7B6tryHQd4lFVSDZIfZ1QwJwqm5h1iveKwC1E40PA8nOD50hEt7+AlUoGc9jW3OdmztWBqf4yHCdCPdRQ==", "license": "MIT", "dependencies": { "cookie-es": "^2.0.0" }, "engines": { - "node": ">=20.11.1" + "node": ">=20.16.0" } }, "node_modules/standard-as-callback": { @@ -6326,7 +6326,7 @@ "debug": "^4.3.4", "lodash.throttle": "^4.1.1", "set-cookie-parser": "^2.7.1", - "srvx": "^0.2.8" + "srvx": "~0.8.2" }, "devDependencies": { "@types/debug": "^4.1.12", diff --git a/packages/server/README.md b/packages/server/README.md index 714075e6..30399d3f 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -207,7 +207,7 @@ The main server request handler invoked on every request. Use this to integrate into your existing Node.js server. This handler converts `http.IncomingMessage`/`http.ServerResponse` to `Request`/`Response`. -You can still access the Node.js versions via `req.node.req`/`req.node.res` in the hooks. +You can still access the Node.js versions via `req.runtime.node.req`/`req.runtime.node.res` in the hooks. #### `server.handleWeb(req: Request)` diff --git a/packages/server/package.json b/packages/server/package.json index b9100eed..31ae92b3 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -25,7 +25,7 @@ "debug": "^4.3.4", "lodash.throttle": "^4.1.1", "set-cookie-parser": "^2.7.1", - "srvx": "^0.2.8" + "srvx": "~0.8.2" }, "devDependencies": { "@types/debug": "^4.1.12", diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index eaaf2ef4..d66dbdbe 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -1,7 +1,7 @@ import http from 'node:http' import {EventEmitter} from 'node:events' -import type {ServerRequest} from 'srvx/types' +import type {ServerRequest} from 'srvx' import {toNodeHandler} from 'srvx/node' import debug from 'debug' import {EVENTS, ERRORS, REQUEST_METHODS, TUS_RESUMABLE, HEADERS} from '@tus/utils' @@ -130,7 +130,7 @@ export class Server extends EventEmitter { return this.handler(req) } - private async handler(req: Request) { + private async handler(req: Request | ServerRequest) { const context = this.createContext() const headers = new Headers() @@ -138,9 +138,12 @@ export class Server extends EventEmitter { // We handle gracefully request errors such as disconnects or timeouts. // This is important to avoid memory leaks and ensure that the server can // handle subsequent requests without issues. - if ('node' in req && req.node) { - const nodeReq = (req.node as {req: http.IncomingMessage}).req - nodeReq.once('error', () => { + if ((req as ServerRequest)?.runtime?.node) { + // biome-ignore lint/style/noNonNullAssertion: it's fine + const node = (req as ServerRequest).runtime?.node! + // @ts-expect-error backwards compatibility. srvx moved req.node to req.runtime.node. + req.node = node + node.req.once('error', () => { context.abort() }) } diff --git a/packages/server/src/types.ts b/packages/server/src/types.ts index 5d6ace18..7a135b67 100644 --- a/packages/server/src/types.ts +++ b/packages/server/src/types.ts @@ -1,4 +1,4 @@ -import type {ServerRequest as Request} from 'srvx/types' +import type {ServerRequest as Request} from 'srvx' import type {Locker, Upload} from '@tus/utils' /**