Commit Graph
422 Commits
Author SHA1 Message Date
b778057568 Polish HTML structure of the response in the res.redirect() function (#5167)
* structure the DOM body

* structure the DOM body

* test: add html title to redirect test

* fix: update HTML structure for include body and head tags

* docs: improve HTML structure in res.redirect() responses for better browser compatibility

---------

Co-authored-by: Sebastian Beltran <[email protected]>
2026-01-16 10:29:01 -05:00
Sebastian BeltranandGitHub 75c54fe017 feat: add deprecation warnings for redirect arguments undefined (#6405) 2025-07-14 22:18:10 -05:00
Shivam SharmaandGitHub e270ec050a chore: enforce explicit Buffer import and add lint rule (#6525)
Signed-off-by: Shivam Sharma <[email protected]>
2025-06-27 20:10:36 -05:00
Andrea PolverinoandGitHub 06972ceebe feat: Extend res.links() to allow adding multiple links with the same rel (closes #2729) (#4885) 2025-02-14 10:20:53 -06:00
Juan JoséandGitHub 3fc8cdfba0 feat: add support for ETag option in res.sendFile (#6073)
This patch introduces the ability to control the ETag generation
through the `res.sendFile` function. Specifically, the ETag option
is wired to the application's configuration, allowing it to be
enabled or disabled based on the app's settings.

Fixes: https://github.com/expressjs/express/issues/2294

Signed-off-by: Juan José Arboleda <[email protected]>
2025-02-13 13:39:31 -06:00
Alexander CeruttiandWes Todd 2475959fe5 feat: Added check to support Uint8Array in response sending (#6285)
Unified usage of ArrayBuffer.isView to comprehend Buffer and removed isView function check

Co-authored-by: Wes Todd <[email protected]>

Added Uint8Array test with encoding

fix: added history.md entry
2025-02-10 11:23:02 -06:00
Szymon ŁągiewkaandWes Todd 4199d3218f fix(refactor): prefix built-in node module imports
Since v5 relies on node >= 18, this is now possible (since v16, v14.18.0
[^1][^2]).

It's functionally irrelevant:
1. It's not required for CJS nor ESM (with a few exceptions [^3])
2. It has no performance promises

However, there are upsides to this approach:
1. It brings clear boundaries to what's a built-in and what's an
external dependency
2. It reduces the risk of importing unwanted deps where a built-in is
expected
3. It's slightly more interoperable with other JS runtimes that provide
node compatibility[^4], albeit only during development. Once imported
from npm, built-ins are assumed.

[^1]:https://nodejs.org/docs/latest-v22.x/api/modules.html#built-in-modules
[^2]:https://github.com/nodejs/node/pull/37246
[^3]:https://nodejs.org/api/modules.html#built-in-modules-with-mandatory-node-prefix
[^4]:https://docs.deno.com/runtime/fundamentals/node/#using-node's-built-in-modules
2025-01-10 11:53:44 -06:00
Phillip BartaandGitHub f7919e4c27 fix: Remove utils-merge dependency - use spread syntax instead (#6091) 2025-01-08 09:56:16 -06:00
Phillip9587andWes Todd b748a0d705 cleanup: remove unnecessary require for global Buffer
The Buffer object is globally available in Node.js, so there is no need to explicitly require it.
2024-11-15 10:16:29 -06:00
Bhavya DhimanandGitHub 72e2b8aed2 fix(buffer): use node:buffer instead of safe-buffer (#6071)
Main Changes:
- Removed dependency `[email protected]`
- Use `node:buffer` core library instead of safe-buffer
2024-10-27 11:10:33 +01:00
Blake EmbreyandGitHub cae0b6acdc Delete back as a magic string (#5933) 2024-09-09 20:28:55 -07:00
Wes ToddandGitHub d5650ec1f6 Merge branch '5.0' into 5-merge 2024-09-09 21:11:23 -05:00
Wes Todd fb7a3fdd7c Merge tag '4.20.0' into 5.0 2024-09-09 21:07:57 -05:00
Chris de AlmeidaandUlises Gascón 4dcef0f50f fix: don't render redirect values in anchor href
Co-authored-by: Ulises Gascón <[email protected]>
2024-09-10 04:00:58 +02:00
Carlos SerranoandGitHub 9e947d625c refactor: replace 'path-is-absolute' dep with node:path isAbsolute method (#5830)
* refactor: replace 'path-is-absolute' dep with node:path isAbsolute method

* docs: add path-is-absolute dep removal to History.md
2024-08-17 10:21:29 -05:00
ctcpip 6314bfc671 Merge branch '5.0' into 5-merge 2024-08-02 15:38:18 -05:00
e8fe8b0caf Ignore expires and maxAge in res.clearCookie() (#5792)
* add test for removing user provided expires

* rework impl and tests to ignore maxAge, do not set it

this is to take into account the built-in relative expires when passing
a maxAge to res.cookie

I realized that using maxAge to invalidate cookies inherrently hit this
relativee expires behavior, and the goal of this PR is not to rework
that relative expires behavior w/ maxAge, but to prevent users from
overwriting these values by accident when clearing cookies

* update history.md

* explicitly delete maxAge instead of setting as undefined

* drop the spread, use object.assign

* wording, review comment on history.md

Co-authored-by: Chris de Almeida <[email protected]>

* ♻️ use spread, update supported ecmascript version

---------

Co-authored-by: Chris de Almeida <[email protected]>
2024-08-02 15:26:45 -05:00
8a58eb4126 Throw on invalid status codes (#4212)
* check status code is integer, or string integer, in range

* fix tests, update jsdoc comment for res.status

* throw if number is string

* narrow valid range to between 1xx and 5xx

* disambiguate the error message

* update skipped tests, remove invalid string test

* remove invalid float test

* fixup! remove invalid float test

* fix invalid range tests error assertions

* remove unused deprecate function

* add test to assert on 200.00 coming through as 200

this is the behavior of node's underlying HTTP module

* revert back to throwing only on > 999 and < 100

* update implementation for > 999

* add test for 700 status code

* update history with change

* update jsdoc

* clarify jsdoc comment

* one more round of jsdoc

* update 501 test

* add invalid status code test for res.sendStatus

* add test describe block for valid range

* fixup! add test describe block for valid range

* reduce the describe nesting

* switch to testing status 100, to avoid 100-continue behavior

* fix 900 test

* stringify code in thrown RangeError message

* remove accidentally duplicated res.status method

* fix error range message

Co-authored-by: Chris de Almeida <[email protected]>

* update sendStatus invalid code test to use sendStatus

---------

Co-authored-by: Chris de Almeida <[email protected]>
2024-07-30 14:49:13 -07:00
ctcpip c22ef5bb15 Merge branch 'master' into 5.0 2024-07-25 16:55:48 -05:00
0792674d83 [v4] Deprecate res.clearCookie accepting options.maxAge and options.expires (#5672)
* add deprecation notice for res.clearCookie maxAge/expires

* update History.md for clearCookie deprecation change

* add tests to codify deprecated behavior

Co-authored-by: Chris de Almeida <[email protected]>

---------

Co-authored-by: Chris de Almeida <[email protected]>
2024-06-07 19:48:48 -04:00
Blake EmbreyandGitHub 67f5068627 deps: encodeurl@~2.0.0 (#5569) 2024-05-04 16:53:09 -04:00
Wes Todd 6b81c643c9 Merge tag '4.19.2' into 5.0
4.19.2
2024-03-25 09:37:02 -05:00
baa5bcd838 Improved fix for open redirect allow list bypass
Co-authored-by: Jon Church <[email protected]>
Co-authored-by: Blake Embrey <[email protected]>
2024-03-25 09:29:41 -05:00
c4aa56593d Improved fix for open redirect allow list bypass
Co-authored-by: Jon Church <[email protected]>
Co-authored-by: Blake Embrey <[email protected]>
2024-03-25 09:22:34 -05:00
Wes Todd 21a757e824 Merge tag '4.19.1' into 5.x
4.19.1
2024-03-20 21:17:26 -05:00
Wes Todd 408d869385 Merge tag '4.19.0' into 5.x
4.19.0
2024-03-20 21:14:00 -05:00
Wes Todd 39f5f7e492 Allow passing non-strings to res.location with new encoding handling checks fixes #5554 #5555 2024-03-20 17:12:46 -05:00
acdb4fd0a0 Prevent open redirect allow list bypass due to encodeurl
Co-authored-by: Jon Church <[email protected]>
2024-03-20 10:18:54 -05:00
3imed-jaberiandDouglas Christopher Wilson 980d881e3b deps: [email protected]
closes #4336
2022-04-02 22:39:35 -04:00
Douglas Christopher Wilson a10770286e Use http-errors for res.format error 2022-03-27 23:41:31 -04:00
Chris BarthandDouglas Christopher Wilson 5855339455 Fix behavior of null/undefined as "maxAge" in res.cookie
fixes #3935
closes #3936
2022-03-26 23:11:48 -04:00
Nadav IvgiandDouglas Christopher Wilson 9482b82d0b Invoke default with same arguments as types in res.format
closes #3587
2022-03-26 01:29:40 -04:00
Douglas Christopher Wilson 03dc367187 Allow options without filename in res.download 2022-03-25 18:13:42 -04:00
Tommaso TofacchiandDouglas Christopher Wilson 0def9bb659 Add "root" option to res.download
fixes #4834
closes #4855
2022-03-25 00:08:38 -04:00
Jon ChurchandDouglas Christopher Wilson 4847d0efa1 Deprecate string and non-integer arguments to res.status
closes #4223
2022-03-23 23:14:08 -04:00
Tito D. Kesumo SiregarandDouglas Christopher Wilson 87279c08aa Support proper 205 responses using res.send
closes #4592
closes #4596
2022-03-23 20:05:05 -04:00
apeltopandDouglas Christopher Wilson d0e166c3c6 docs: fix typo in private api jsdoc
closes #4843
2022-02-28 18:37:41 -05:00
Douglas Christopher Wilson 318fd4b543 Merge tag '4.17.3' 2022-02-17 00:27:11 -05:00
Douglas Christopher Wilson a0276c6c91 Use mime-types for file to content type mapping 2022-02-06 10:26:18 -05:00
caioagianiandDouglas Christopher Wilson 89bb531b31 docs: fix typo in res.download jsdoc
closes #4805
2022-02-03 23:26:17 -05:00
Douglas Christopher Wilson c7d528cdc0 Merge tag '4.17.2' 2021-12-16 23:01:28 -05:00
drewmandDouglas Christopher Wilson f275e87dff Fix handling of undefined when "json escape" is enabled
closes #4744
2021-11-17 00:00:56 -05:00
Douglas Christopher Wilson 9dd0e7afdb Fix handling of undefined in res.jsonp 2021-11-16 23:58:17 -05:00
KimandDouglas Christopher Wilson a1dbb11377 Fix res.jsonp(obj, status) deprecation message
closes #4155
2021-11-16 00:41:19 -05:00
Douglas Christopher Wilson de081eb70f build: [email protected] 2021-09-01 19:27:00 -04:00
zhangkyandDouglas Christopher Wilson f9a0560a9c docs: fix res.sendStatus/sendFile jsdoc comments
closes #4673
2021-08-14 00:39:56 -04:00
Hussein MohamedandDouglas Christopher Wilson 135a05c524 docs: fix typos in jsdoc
closes #4564
2021-07-31 16:00:00 -04:00
Douglas Christopher Wilson 121fe9982b Merge tag '4.17.1' 2019-06-08 19:43:21 -04:00
Douglas Christopher Wilson 0a48e18056 Revert "Improve error message for null/undefined to res.status"
fixes #3968
2019-05-25 18:15:13 -04:00
Douglas Christopher Wilson b8e50568af tests: ignore unreachable line 2019-05-16 10:04:24 -04:00