Fix stream auto-end for empty PATCH/DELETE/OPTIONS 4d5168c
The bug was introduced in b65b0e1, where it incorrectly auto-closed streams for empty PATCH/DELETE/OPTIONS when using streams. This broke the documented use case of piping data to a got stream for these methods.
Docs:
got.stream does not auto-end for OPTIONS, DELETE, or PATCH so you can pipe or write a body without getting write after end. Call stream.end() when you are not piping a body.
Why not target the oldest active Node.js LTS, which is Node.js 18? I usually strictly follow this convention in my packages. However, this package is the exception because the HTTP part of Node.js is consistently buggy, and I don't have time to work around issues in older Node.js releases. I you need to still support Node.js 18, I suggest staying on Got v13, which is quite stable. Node.js 18 will be out of active LTS in 5 months.
Improvements
Make followRedirect option accept a function (#2306) 7c3f147
Long time no see! The latest Got version (v11.8.2) was released just in February ❄️
We have been working hard on squashing bugs and improving overall experience.
Please don't open issues about [ERR_REQUIRE_ESM] and Must use import to load ES Module errors. This is a problem with your setup, not Got.
Please don't open issues about using Got with Jest. Jest does not fully support ESM.
Pretty much any problem with loading this package is a problem with your bundler, test framework, etc, not Got.
If you use TypeScript, you will want to stay on Got v11 until TypeScript 4.6 is out. Why.
If you use a bundler, make sure it supports ESM and that you have correctly configured it for ESM.
The Got issue tracker is not a support channel for your favorite build/bundler tool.
Required Node.js >=14
While working with streams, we encountered more Node.js bugs that needed workarounds.
In order to keep our code clean, we had to drop Node.js v12 as the code would get more messy.
We strongly recommend that you update Node.js to v14 LTS.
HTTP/2 support
Every Node.js release, the native http2 module gets more stable.
Unfortunately there are still some issues on the Node.js side, so we decided to keep HTTP/2 disabled for now.
We may enable it by default in Got v13. It is still possible to turn it on via the http2 option.
To run HTTP/2 requests, it is required to use Node.js v15.10 or above.
Bug fixes
Woah, we possibly couldn't make a release if we didn't fix some bugs!
Do not throw on custom stack traces (#1491) 49c16ee
Remove automatic content-length on ReadStream (#1510) 472b8ef
Got exports an Option class that is specifically designed to parse and validate Got options.
It is made of setters and getters that provide fast normalization and more consistent behavior.
When passing an option does not exist, Got will throw an error. In order to retrieve the options before the error, use error.options.
The options argument has been removed, however it's still accessible via error.options. All modifications on error.options will be reflected in the next requests (no behavior change, same as with Got 11).
The beforeRedirect hook's first argument (options) is now a cloned instance of the Request options.
This was done to make retrieving the original options possible: plainResponse.request.options.
await got('http://szmarczak.com', {
hooks: {
beforeRedirect: [
(options, response) => {
- console.log(options === response.request.options); //=> true [invalid! our original options were overriden]
+ console.log(options === response.request.options); //=> false [we can access the original options now]
}
]
}
})
The redirect event now takes two arguments in this order: updatedOptions and plainResponse.
When passing a url option when paginating, it now needs to be an absolute URL - the prefixUrl option is always reset from now on. The same when retrying in an afterResponse hook.
- return {url: '/location'};
+ return {url: new URL('/location', response.request.options.url)};
There was confusion around the prefixUrl option. It was counterintuitive if used with the Pagination API. For example, it worked fine if the server replied with a relative URL, but if it was an absolute URL then the prefixUrl would end up duplicated. In order to fix this, Got now requires an absolute URL - no prefixUrl will be applied.
got.extend(…) will throw when passing some options that don't accept undefined - undefined no longer retains the old value, as setting undefined explicitly may reset the option
Documentation
We have redesigned the documentation so it's easier to navigate and find exactly what you are looking for. We hope you like it ❤️
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [got](https://github.com/sindresorhus/got) | dependencies | major | [`^11.8.3` → `^14.0.0`](https://renovatebot.com/diffs/npm/got/11.8.3/14.6.6) |
---
### Release Notes
<details>
<summary>sindresorhus/got (got)</summary>
### [`v14.6.6`](https://github.com/sindresorhus/got/releases/tag/v14.6.6)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.5...v14.6.6)
- Fix stream auto-end for empty PATCH/DELETE/OPTIONS [`4d5168c`](https://github.com/sindresorhus/got/commit/4d5168c)
- The bug was introduced in [`b65b0e1`](https://github.com/sindresorhus/got/commit/b65b0e1c300d745eb6956a4fb0bd19f3b177e144), where it incorrectly auto-closed streams for empty PATCH/DELETE/OPTIONS when using streams. This broke the documented use case of piping data *to* a got stream for these methods.
- Docs:
> `got.stream` does not auto-end for `OPTIONS`, `DELETE`, or `PATCH` so you can pipe or write a body without getting `write after end`. Call `stream.end()` when you are not piping a body.
***
### [`v14.6.5`](https://github.com/sindresorhus/got/releases/tag/v14.6.5)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.4...v14.6.5)
- Fix TypeScript type inference for `got.extend()` with `responseType` option [`f7ab6e9`](https://github.com/sindresorhus/got/commit/f7ab6e9)
***
### [`v14.6.4`](https://github.com/sindresorhus/got/releases/tag/v14.6.4)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.3...v14.6.4)
- Fix `dnsLookup` option type to accept Node.js `dns.lookup` [`47c3155`](https://github.com/sindresorhus/got/commit/47c3155)
***
### [`v14.6.3`](https://github.com/sindresorhus/got/releases/tag/v14.6.3)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.2...v14.6.3)
- Fix socket reuse timing and DNS timing [`fb03d84`](https://github.com/sindresorhus/got/commit/fb03d84) [`61d5e3b`](https://github.com/sindresorhus/got/commit/61d5e3b)
***
### [`v14.6.2`](https://github.com/sindresorhus/got/releases/tag/v14.6.2)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.1...v14.6.2)
- Fix path segments containing colons being misidentified as absolute URLs [`0a16a9c`](https://github.com/sindresorhus/got/commit/0a16a9c)
***
### [`v14.6.1`](https://github.com/sindresorhus/got/releases/tag/v14.6.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.6.0...v14.6.1)
- Fix the TS code not being built in 14.6.0.
***
### [`v14.6.0`](https://github.com/sindresorhus/got/releases/tag/v14.6.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.5.0...v14.6.0)
##### Improvements
- Add [`beforeCache`](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/9-hooks.md?plain=1#L237) hook [`1c3a041`](https://github.com/sindresorhus/got/commit/1c3a041)
- Add `retryCount` to `beforeRequest` hook context [`91cdc48`](https://github.com/sindresorhus/got/commit/91cdc48)
- Improve `HTTPError` message to include method and URL [`6dd7574`](https://github.com/sindresorhus/got/commit/6dd7574)
- Add support for typed arrays as request body [`ecf5633`](https://github.com/sindresorhus/got/commit/ecf5633)
- Add Node.js [diagnostic channel support](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/diagnostics-channel.md) [`3e2a781`](https://github.com/sindresorhus/got/commit/3e2a781)
- Allow custom Error classes in `beforeError` hook [`1c71194`](https://github.com/sindresorhus/got/commit/1c71194)
- Add zstd (Zstandard) compression support [`449833a`](https://github.com/sindresorhus/got/commit/449833a)
- Improve validation error messages by including option names [`f5c54a3`](https://github.com/sindresorhus/got/commit/f5c54a3)
- Add [`strictContentLength`](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/2-options.md?plain=1#L854) option [`4206f0e`](https://github.com/sindresorhus/got/commit/4206f0e)
- Add support for [`https.secureOptions`](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/5-https.md?plain=1#L136) option [`7ec1714`](https://github.com/sindresorhus/got/commit/7ec1714)
- Add [`copyPipedHeaders`](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/2-options.md?plain=1#L526) option to control automatic header copying from piped streams [`d83dadd`](https://github.com/sindresorhus/got/commit/d83dadd)
- Add [`stream.isReadonly`](https://github.com/sindresorhus/got/blob/599ae74e9f2a002eade81a0ec1722cf7dc28a9cd/documentation/3-streams.md?plain=1#L172) property to detect read-only streams [`030dfbb`](https://github.com/sindresorhus/got/commit/030dfbb)
##### Fixes
- Fix HTTP/2 timings NaN issue [`398c11a`](https://github.com/sindresorhus/got/commit/398c11a)
- Fix shortcut methods ignoring handler errors [`f004564`](https://github.com/sindresorhus/got/commit/f004564)
- Fix body reassignment in `beforeRetry` hooks [`bf84d36`](https://github.com/sindresorhus/got/commit/bf84d36)
- Fix `beforeError` hook not being called for `ERR_UNSUPPORTED_PROTOCOL` error [`fb86418`](https://github.com/sindresorhus/got/commit/fb86418)
- FIx preserving `prefixUrl` in hooks [`9725fbd`](https://github.com/sindresorhus/got/commit/9725fbd)
- Fix race condition causing retry after promise settles [`1e49781`](https://github.com/sindresorhus/got/commit/1e49781)
- Fix stream validation errors causing unhandled rejections [`2527bf6`](https://github.com/sindresorhus/got/commit/2527bf6)
- Fix incorrect `content-length` when piping decompressed responses [`30b3b79`](https://github.com/sindresorhus/got/commit/30b3b79)
- Fix EPIPE errors bypassing retry logic in Promise API [`6ae3e7f`](https://github.com/sindresorhus/got/commit/6ae3e7f)
- Fix silent hang when returning cached response with FormData body from beforeRequest hook [`e09a9bd`](https://github.com/sindresorhus/got/commit/e09a9bd)
- Fix hook type definitions to reflect normalized runtime state [`6a544a3`](https://github.com/sindresorhus/got/commit/6a544a3)
- Fix `afterResponse` hook validation to allow `null` body values [`60a4419`](https://github.com/sindresorhus/got/commit/60a4419)
- Fix DNS timing being non-zero when connecting to IP addresses [`3d66aec`](https://github.com/sindresorhus/got/commit/3d66aec)
- Fix `timings.end` being undefined when stream is destroyed before completion [`4e75679`](https://github.com/sindresorhus/got/commit/4e75679)
- Fix properly treating different UNIX socket paths as different origins [`e5659d4`](https://github.com/sindresorhus/got/commit/e5659d4)
##### Meta
I managed to get it almost down to zero issues! 🎉
***
### [`v14.5.0`](https://github.com/sindresorhus/got/releases/tag/v14.5.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.9...v14.5.0)
- Add `retry.enforceRetryRules` option to fix statusCodes/limit bypassing [`7c0aee6`](https://github.com/sindresorhus/got/commit/7c0aee6)
- Add support for `serverName` HTTPS option [`cdaab63`](https://github.com/sindresorhus/got/commit/cdaab63)
- Add `preserveHooks` option for `retryWithMergedOptions` [`1abeba4`](https://github.com/sindresorhus/got/commit/1abeba4)
- Support `Iterable` and `AsyncIterable` as request body [`b65b0e1`](https://github.com/sindresorhus/got/commit/b65b0e1)
- Fix hang on revalidated cached responses [`2ab94fd`](https://github.com/sindresorhus/got/commit/2ab94fd)
- Fix handling of FormData getLength errors [`a2812de`](https://github.com/sindresorhus/got/commit/a2812de)
- Fix `downloadProgress` firing for redirect responses [`9ec6ff0`](https://github.com/sindresorhus/got/commit/9ec6ff0)
- Fix TypeScript type definition for retry event's createRetryStream parameter [`e899c07`](https://github.com/sindresorhus/got/commit/e899c07)
- Fix validation to accept `false` as agent value [`6961284`](https://github.com/sindresorhus/got/commit/6961284)
- Fix HTTP/2 memory leak from timeout listeners with connection reuse [`d1d4ed2`](https://github.com/sindresorhus/got/commit/d1d4ed2)
- Fix QuickLRU v7+ compatibility [`23d0b6b`](https://github.com/sindresorhus/got/commit/23d0b6b)
- Fix it not using HTTP/2 connection reuse by default [`724d592`](https://github.com/sindresorhus/got/commit/724d592)
- Fix hang with stream requests without body for methods like OPTIONS [`dc4f1e3`](https://github.com/sindresorhus/got/commit/dc4f1e3)
***
### [`v14.4.9`](https://github.com/sindresorhus/got/releases/tag/v14.4.9)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.8...v14.4.9)
- Fix hang with responses containing `content-encoding` headers but no body [`cc434bc`](https://github.com/sindresorhus/got/commit/cc434bc)
***
### [`v14.4.8`](https://github.com/sindresorhus/got/releases/tag/v14.4.8)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.7...v14.4.8)
- Fix infinite loop when retrying with `request.options` in `afterResponse` hook [`dad6a91`](https://github.com/sindresorhus/got/commit/dad6a91)
***
### [`v14.4.7`](https://github.com/sindresorhus/got/releases/tag/v14.4.7)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.6...v14.4.7)
- Fix: Gracefully handle undefined request ([#​2404](https://github.com/sindresorhus/got/issues/2404)) [`06029e0`](https://github.com/sindresorhus/got/commit/06029e0)
***
### [`v14.4.6`](https://github.com/sindresorhus/got/releases/tag/v14.4.6)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.5...v14.4.6)
- Fix timeout error firing even though it's cancelled ([#​2399](https://github.com/sindresorhus/got/issues/2399)) [`7a92064`](https://github.com/sindresorhus/got/commit/7a92064)
### [`v14.4.5`](https://github.com/sindresorhus/got/releases/tag/v14.4.5)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.4...v14.4.5)
- Fix a crash with Got accessing a non-existent request ([#​2391](https://github.com/sindresorhus/got/issues/2391)) [`c079b93`](https://github.com/sindresorhus/got/commit/c079b93)
### [`v14.4.4`](https://github.com/sindresorhus/got/releases/tag/v14.4.4)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.3...v14.4.4)
- Fix support for `AbortSignal#timeout()` ([#​2388](https://github.com/sindresorhus/got/issues/2388)) [`92b378e`](https://github.com/sindresorhus/got/commit/92b378e)
### [`v14.4.3`](https://github.com/sindresorhus/got/releases/tag/v14.4.3)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.2...v14.4.3)
- Fix cache with HTTP2 ([#​2380](https://github.com/sindresorhus/got/issues/2380)) [`f2f8cb2`](https://github.com/sindresorhus/got/commit/f2f8cb2)
### [`v14.4.2`](https://github.com/sindresorhus/got/releases/tag/v14.4.2)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.1...v14.4.2)
- Fix handling of invalid arguments ([#​2367](https://github.com/sindresorhus/got/issues/2367)) [`f44ef43`](https://github.com/sindresorhus/got/commit/f44ef43)
### [`v14.4.1`](https://github.com/sindresorhus/got/releases/tag/v14.4.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.4.0...v14.4.1)
- Fix missing dependency [`dfc54d9`](https://github.com/sindresorhus/got/commit/dfc54d9)
### [`v14.4.0`](https://github.com/sindresorhus/got/releases/tag/v14.4.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.3.0...v14.4.0)
- Improve TypeScript types with generic extend ([#​2353](https://github.com/sindresorhus/got/issues/2353)) [`15ca4a0`](https://github.com/sindresorhus/got/commit/15ca4a0)
### [`v14.3.0`](https://github.com/sindresorhus/got/releases/tag/v14.3.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.2.1...v14.3.0)
- Update dependencies [`dbab6c3`](https://github.com/sindresorhus/got/commit/dbab6c3)
### [`v14.2.1`](https://github.com/sindresorhus/got/releases/tag/v14.2.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.2.0...v14.2.1)
- Fix error handling when UTF-8 decoding fails ([#​2336](https://github.com/sindresorhus/got/issues/2336)) [`c81a611`](https://github.com/sindresorhus/got/commit/c81a611)
### [`v14.2.0`](https://github.com/sindresorhus/got/releases/tag/v14.2.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.1.0...v14.2.0)
- Add `cause` property with the original error to `RequestError` ([#​2327](https://github.com/sindresorhus/got/issues/2327)) [`4cbd01d`](https://github.com/sindresorhus/got/commit/4cbd01d)
### [`v14.1.0`](https://github.com/sindresorhus/got/releases/tag/v14.1.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v14.0.0...v14.1.0)
- Allow typing the body of a `RequestError` response ([#​2325](https://github.com/sindresorhus/got/issues/2325)) [`5e4f6ff`](https://github.com/sindresorhus/got/commit/5e4f6ff)
### [`v14.0.0`](https://github.com/sindresorhus/got/releases/tag/v14.0.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v13.0.0...v14.0.0)
##### Breaking
- Require Node.js 20 ([#​2313](https://github.com/sindresorhus/got/issues/2313)) [`a004263`](https://github.com/sindresorhus/got/commit/a004263)
- Why not target the oldest active Node.js LTS, which is Node.js 18? I usually strictly follow this convention in my packages. However, this package is the exception because the HTTP part of Node.js is consistently buggy, and I don't have time to work around issues in older Node.js releases. I you need to still support Node.js 18, I suggest staying on Got v13, which is quite stable. Node.js 18 will be out of active LTS in 5 months.
##### Improvements
- Make `followRedirect` option accept a function ([#​2306](https://github.com/sindresorhus/got/issues/2306)) [`7c3f147`](https://github.com/sindresorhus/got/commit/7c3f147)
### [`v13.0.0`](https://github.com/sindresorhus/got/releases/tag/v13.0.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.6.1...v13.0.0)
As a reminder, Got continues to require ESM. For TypeScript users, this includes having [`"module": "node16", "moduleResolution": "node16"` in your tsconfig](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-make-my-typescript-project-output-esm).
##### Breaking
- Require Node.js 16 [`52a1063`](https://github.com/sindresorhus/got/commit/52a1063)
- Change the [`enableUnixSockets`](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md#enableunixsockets) option to be `false` by default [`852c312`](https://github.com/sindresorhus/got/commit/852c312)
- Most users don't need it.
##### Improvements
- Allow specifying `undefined` for options ([#​2258](https://github.com/sindresorhus/got/issues/2258)) [`1cefe8b`](https://github.com/sindresorhus/got/commit/1cefe8b)
### [`v12.6.1`](https://github.com/sindresorhus/got/releases/tag/v12.6.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.6.0...v12.6.1)
- Fix `get-stream` import statement ([#​2266](https://github.com/sindresorhus/got/issues/2266)) [`67d5039`](https://github.com/sindresorhus/got/commit/67d5039)
### [`v12.6.0`](https://github.com/sindresorhus/got/releases/tag/v12.6.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.5.3...v12.6.0)
- Update dependencies [`88c88fb`](https://github.com/sindresorhus/got/commit/88c88fb) [`979272e`](https://github.com/sindresorhus/got/commit/979272e)
- Loosen URL validation strictness ([#​2200](https://github.com/sindresorhus/got/issues/2200)) [`0ca0b7f`](https://github.com/sindresorhus/got/commit/0ca0b7f)
### [`v12.5.3`](https://github.com/sindresorhus/got/releases/tag/v12.5.3)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.5.2...v12.5.3)
- Fix abort event listeners not always being cleaned up ([#​2162](https://github.com/sindresorhus/got/issues/2162)) [`3cc40b5`](https://github.com/sindresorhus/got/commit/3cc40b5)
### [`v12.5.2`](https://github.com/sindresorhus/got/releases/tag/v12.5.2)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.5.1...v12.5.2)
- Improve TypeScript 4.9 compatibility ([#​2163](https://github.com/sindresorhus/got/issues/2163)) [`39f83b6`](https://github.com/sindresorhus/got/commit/39f83b6)
### [`v12.5.1`](https://github.com/sindresorhus/got/releases/tag/v12.5.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.5.0...v12.5.1)
- Fix compatibility with TypeScript and ESM [`3b3ea67`](https://github.com/sindresorhus/got/commit/3b3ea67)
- Fix request body not being properly cached ([#​2150](https://github.com/sindresorhus/got/issues/2150)) [`3e9d3af`](https://github.com/sindresorhus/got/commit/3e9d3af)
### [`v12.5.0`](https://github.com/sindresorhus/got/releases/tag/v12.5.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.4.1...v12.5.0)
- Disable method rewriting on 307 and 308 status codes ([#​2145](https://github.com/sindresorhus/got/issues/2145)) [`e049e94`](https://github.com/sindresorhus/got/commit/e049e94)
- Upgrade dependencies [`8630815`](https://github.com/sindresorhus/got/commit/8630815) [`f0ac0b3`](https://github.com/sindresorhus/got/commit/f0ac0b3) [`4c3762a`](https://github.com/sindresorhus/got/commit/4c3762a)
### [`v12.4.1`](https://github.com/sindresorhus/got/releases/tag/v12.4.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.4.0...v12.4.1)
##### Fixes
- Fix `options.context` being not extensible [`b671480`](https://github.com/sindresorhus/got/commit/b671480715dbbff908e9a385f5e714570c663cd7)
- Don't emit `uploadProgress` after promise cancelation [`693de21`](https://github.com/sindresorhus/got/commit/693de217b030816f574d6e4cb505ee2e77b21c29)
### [`v12.4.0`](https://github.com/sindresorhus/got/releases/tag/v12.4.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.3.1...v12.4.0)
##### Improvements
- Support FormData without known length ([#​2120](https://github.com/sindresorhus/got/issues/2120)) [`850773c`](https://github.com/sindresorhus/got/commit/850773c)
##### Fixes
- Don't call `beforeError` hooks with `HTTPError` if the `throwHttpErrors` option is `false` ([#​2104](https://github.com/sindresorhus/got/issues/2104)) [`3927348`](https://github.com/sindresorhus/got/commit/3927348)
### [`v12.3.1`](https://github.com/sindresorhus/got/releases/tag/v12.3.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.3.0...v12.3.1)
- Don't freeze signal when freezing Options ([#​2100](https://github.com/sindresorhus/got/issues/2100)) [`43b1467`](https://github.com/sindresorhus/got/commit/43b1467)
### [`v12.3.0`](https://github.com/sindresorhus/got/releases/tag/v12.3.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.2.0...v12.3.0)
- Add `.off()` method for events ([#​2092](https://github.com/sindresorhus/got/issues/2092)) [`88056be`](https://github.com/sindresorhus/got/commit/88056be)
### [`v12.2.0`](https://github.com/sindresorhus/got/releases/tag/v12.2.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.1.0...v12.2.0)
- [Support `AbortController`](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md#signal) ([#​2020](https://github.com/sindresorhus/got/issues/2020)) [`6a6d2a9`](https://github.com/sindresorhus/got/commit/6a6d2a9)
- Add [`enableUnixSockets`](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md#enableunixsockets) option ([#​2062](https://github.com/sindresorhus/got/issues/2062)) [`461b3d4`](https://github.com/sindresorhus/got/commit/461b3d4)
### [`v12.1.0`](https://github.com/sindresorhus/got/releases/tag/v12.1.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.0.4...v12.1.0)
##### Improvements
- Add `response.ok` ([#​2043](https://github.com/sindresorhus/got/issues/2043)) [`22d58fb`](https://github.com/sindresorhus/got/commit/22d58fb)
- This is only useful if you have [`{throwHttpErrors: false}`](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md#throwhttperrors)
##### Fixes
- Do not redirect to UNIX sockets ([#​2047](https://github.com/sindresorhus/got/issues/2047)) [`861ccd9`](https://github.com/sindresorhus/got/commit/861ccd9)
- [CVE-2022-33987](https://nvd.nist.gov/vuln/detail/CVE-2022-33987)
- [Also back ported to v11](https://github.com/sindresorhus/got/releases/tag/v11.8.5)
### [`v12.0.4`](https://github.com/sindresorhus/got/releases/tag/v12.0.4)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.0.3...v12.0.4)
- Remove stream lock - unreliable since Node 17.3.0 [`bb8eca9`](https://github.com/sindresorhus/got/commit/bb8eca924c338ca12d5b90d6a26aa28dbddb42ee)
### [`v12.0.3`](https://github.com/sindresorhus/got/releases/tag/v12.0.3)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.0.2...v12.0.3)
- Allow more types in the `json` option ([#​2015](https://github.com/sindresorhus/got/issues/2015)) [`eb045bf`](https://github.com/sindresorhus/got/commit/eb045bf)
### [`v12.0.2`](https://github.com/sindresorhus/got/releases/tag/v12.0.2)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.0.1...v12.0.2)
- Fix `encoding` option with `{responseType: 'json'}` ([#​1996](https://github.com/sindresorhus/got/issues/1996)) [`0703318`](https://github.com/sindresorhus/got/commit/0703318)
### [`v12.0.1`](https://github.com/sindresorhus/got/releases/tag/v12.0.1)
[Compare Source](https://github.com/sindresorhus/got/compare/v12.0.0...v12.0.1)
- Fix `nock` compatibility ([#​1959](https://github.com/sindresorhus/got/issues/1959)) [`bf39d2c`](https://github.com/sindresorhus/got/commit/bf39d2c)
- Fix missing export of `Request` TypeScript type ([#​1940](https://github.com/sindresorhus/got/issues/1940)) [`0f9f2b8`](https://github.com/sindresorhus/got/commit/0f9f2b8)
### [`v12.0.0`](https://github.com/sindresorhus/got/releases/tag/v12.0.0)
[Compare Source](https://github.com/sindresorhus/got/compare/v11.8.6...v12.0.0)
##### Introducing Got v12.0.0 :tada:
Long time no see! The latest Got version (v11.8.2) was released just in February ❄️
We have been working hard on squashing bugs and improving overall experience.
If you find Got useful, you might want to [sponsor the Got maintainers](https://github.com/sindresorhus/got?sponsor=1).
##### This package is now pure ESM
**Please [read this](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).** Also see [#​1789](https://github.com/sindresorhus/got/issues/1789).
- **Please don't open issues about `[ERR_REQUIRE_ESM]` and `Must use import to load ES Module` errors.** This is a problem with your setup, not Got.
- Please don't open issues about using Got with Jest. Jest does not fully support ESM.
- Pretty much any problem with loading this package is a problem with your bundler, test framework, etc, not Got.
- If you use TypeScript, you will want to stay on Got v11 until TypeScript 4.6 is out. [Why.](https://github.com/microsoft/TypeScript/issues/46452)
- If you use a bundler, make sure it supports ESM and that you have correctly configured it for ESM.
- The Got issue tracker is not a support channel for your favorite build/bundler tool.
##### Required Node.js >=14
While working with streams, we encountered more Node.js bugs that needed workarounds.
In order to keep our code clean, we had to drop Node.js v12 as the code would get more messy.
We strongly recommend that you update Node.js to **v14 LTS**.
##### HTTP/2 support
Every Node.js release, the native `http2` module gets more stable.
Unfortunately there are still some issues on the Node.js side, so we decided to keep HTTP/2 disabled for now.
We may enable it by default in Got v13. It is still possible to turn it on via the `http2` option.
To run HTTP/2 requests, it is required to use Node.js **v15.10** or above.
##### Bug fixes
Woah, we possibly couldn't make a release if we didn't fix some bugs!
- Do not throw on custom stack traces ([#​1491](https://github.com/sindresorhus/got/issues/1491)) [`49c16ee`](https://github.com/sindresorhus/got/commit/49c16ee54fb19ea7aa77e24ac8c2b602f0aad265)
- Remove automatic `content-length` on ReadStream ([#​1510](https://github.com/sindresorhus/got/issues/1510)) [`472b8ef`](https://github.com/sindresorhus/got/commit/472b8ef9d9fc7713b740981a8b1103a7a9111b26)
- Fix promise shortcuts in case of error status code ([#​1543](https://github.com/sindresorhus/got/issues/1543)) [`ff918fb`](https://github.com/sindresorhus/got/commit/ff918fb6dedb6d8b23421497ec890d43f45121b7) [`1107cc6`](https://github.com/sindresorhus/got/commit/1107cc625e4cc469276483316c48896a21f6251a)
- Invert the `methodRewriting` option [`51d88a0`](https://github.com/sindresorhus/got/commit/51d88a0efed56760d116c5b911cea71e3265c787)
- Fix `url` not being reused on retry in rare case ([#​1487](https://github.com/sindresorhus/got/issues/1487)) [`462bc63`](https://github.com/sindresorhus/got/commit/462bc630015064fa4ad4358cf28d24f95e1c958b)
- Fix hanging promise on HTTP/2 timeout ([#​1492](https://github.com/sindresorhus/got/issues/1492)) [`a59fac4`](https://github.com/sindresorhus/got/commit/a59fac415ac013a48b1d514837628a5cf81d6878)
- Prevent uncaught ParseErrors on initial successful response ([#​1527](https://github.com/sindresorhus/got/issues/1527)) [`77df9c3`](https://github.com/sindresorhus/got/commit/77df9c33db5ba3126f54317171e1cfcfceefc3d5)
- Throw an error when retrying with consumed body ([#​1507](https://github.com/sindresorhus/got/issues/1507)) [`62305d7`](https://github.com/sindresorhus/got/commit/62305d77d3428b5c714d21b4bbee68cc75b5f787)
- Fix a Node.js 16 bug that hangs Got streams [`06a2d3d`](https://github.com/sindresorhus/got/commit/06a2d3d7d8d4fcc6898b6364d1a18ca1d407092b)
- Fix default pagination handling for empty Link header ([#​1768](https://github.com/sindresorhus/got/issues/1768)) [`1e1e506`](https://github.com/sindresorhus/got/commit/1e1e50647e93d038a4cc6a9bbbfbf61165d8fd39)
- Fix incorrect `response.complete` when using cache [`9e15d88`](https://github.com/sindresorhus/got/commit/9e15d887da3b065940bbc8ca38f9c748a0bbc75e)
- Fix `Cannot call end` error when `request` returns a `Writable` [`226cc39`](https://github.com/sindresorhus/got/commit/226cc3995f6e16938163ebde24d8762e7dcd15e2)
- Fix Request options not being reused on retry [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- Fix types being not compatible with CommonJS [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- Fix `got.paginate does not call init hooks` ([#​1574](https://github.com/sindresorhus/got/issues/1574)) [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- Generate a new object when passing options to the native `https` module ([#​1567](https://github.com/sindresorhus/got/issues/1567)) [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- Remove stream reuse check ([#​1803](https://github.com/sindresorhus/got/issues/1803)) [`9ecc5ee`](https://github.com/sindresorhus/got/commit/9ecc5ee76f77aafd5100520d9d8789c491c8fb24)
- Fix merging `searchParams` ([#​1814](https://github.com/sindresorhus/got/issues/1814)) [`1018c20`](https://github.com/sindresorhus/got/commit/1018c2029eea1f5b75b5120265996f1c0b3c12ae) [`732e9bd`](https://github.com/sindresorhus/got/commit/732e9bd9406ba1c3dd64b445264e891f33fc0254)
- Fix unhandled exception when lookup returns invalid IP early ([#​1737](https://github.com/sindresorhus/got/issues/1737)) [`2453e5e`](https://github.com/sindresorhus/got/commit/2453e5e4213fe036a0108de3e4db414dcf2b4c30)
- Fix relative URLs when paginating [`439fb82`](https://github.com/sindresorhus/got/commit/439fb82d2a07cece417a18c47e37cfdeaaf38db7)
- Require url to be an instance of URL when paginating ([#​1818](https://github.com/sindresorhus/got/issues/1818)) [`eda69ff`](https://github.com/sindresorhus/got/commit/eda69ff924a621e499d31cbc590993a32ddb48d3)
- Fix `username` and `password` encoding in URL ([#​1169](https://github.com/sindresorhus/got/issues/1169) [#​1317](https://github.com/sindresorhus/got/issues/1317)) [`d65d0ca`](https://github.com/sindresorhus/got/commit/d65d0caf627e8d1f5367db34d7d9b55d332c1efb)
- Clone raw options [`1c4cefc`](https://github.com/sindresorhus/got/commit/1c4cefc9b49f891712c3758f853d8c6214a1c904)
- Fix invalid `afterResponse` return check [`cbc8902`](https://github.com/sindresorhus/got/commit/cbc8902)
- Fix `https.alpnProtocols` not having an effect [`e1099fb`](https://github.com/sindresorhus/got/commit/e1099fb)
##### Improvements
- Make the `context` option mergeable ([#​1459](https://github.com/sindresorhus/got/issues/1459)) [`2b8ed1f`](https://github.com/sindresorhus/got/commit/2b8ed1f5a185f30603d24e2ceb8181782de3bc5a)
- Add generic argument to AfterResponseHook TypeScript type ([#​1589](https://github.com/sindresorhus/got/issues/1589)) [`6fc04a9`](https://github.com/sindresorhus/got/commit/6fc04a9b92f07b07b9fba010f2231a90082a039b)
- Add read timeout ([#​1518](https://github.com/sindresorhus/got/issues/1518)) [`e943672`](https://github.com/sindresorhus/got/commit/e9436720fcb32b77d39d5477b420b18083e41c02) *(blocked by [nodejs/node#35923](https://github.com/nodejs/node/issues/35923))*
- Improve the pagination API ([#​1644](https://github.com/sindresorhus/got/issues/1644)) [`2675046`](https://github.com/sindresorhus/got/commit/2675046a83c7f03613f553a8da2912d491be900d)
- Change the stackAllItems option to be false by default ([#​1645](https://github.com/sindresorhus/got/issues/1645)) [`1120370`](https://github.com/sindresorhus/got/commit/1120370e05fd8d9e768677d8474d0c82cf91a6a6)
- Throw when afterResponse hook returns an invalid value [`4f21eb3`](https://github.com/sindresorhus/got/commit/4f21eb3db705c90797ef8ee1503704f78fea3c1b)
- Add `retry.backoffLimit` option [`41c4136`](https://github.com/sindresorhus/got/commit/41c4136632b9391adb3ac53332b312089bc4dc16)
- Add `noise` retry option [`e830077`](https://github.com/sindresorhus/got/commit/e83007704670b5f567ca338c156441f6c569ecb5)
- Enable more HTTPS options [`83575d5`](https://github.com/sindresorhus/got/commit/83575d590a119027d319bd9208681973087564a9) [`fe723a0`](https://github.com/sindresorhus/got/commit/fe723a0477dc02785a0b477e3d5f85d0233e5b84) (thanks [@​Giotino](https://github.com/Giotino))
- Define `error.code` [`f27e8d3`](https://github.com/sindresorhus/got/commit/f27e8d331627074e76e4a9ec85a2c8d0a0625e5f)
- Set `options.url` even if some options are invalid [`8d6a680`](https://github.com/sindresorhus/got/commit/8d6a6807883323a83ea5f126ca56b55d9ce5f299)
- Improve memory usage when merging options [`2db5ec5`](https://github.com/sindresorhus/got/commit/2db5ec5d366efbbf9e0838eabfa6be774a0518a0)
- Support async generators as body [`854430f`](https://github.com/sindresorhus/got/commit/854430f01350811fe8a0ccf20cd820aabfbd3926) [`3df52f3`](https://github.com/sindresorhus/got/commit/3df52f38edbadb45158c37d499817bc5486989c6)
- Add missing `once` types for Stream API [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- New error type: `RetryError` which always triggers a new retry when thrown [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- `error.options` is now enumerable [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- `defaults.handlers` don't need a default handler now [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- Add a parser for the `Link` header [`3c23eea`](https://github.com/sindresorhus/got/commit/3c23eea5a096f6f8ea0edf3e2a27e1caca88acf9)
- General code improvements [`a5dd9aa`](https://github.com/sindresorhus/got/commit/a5dd9aa37e7891b2620798560799c7f8bd380877)
##### Breaking changes
##### Improved option normalization
- Got exports an `Option` class that is specifically designed to parse and validate Got options.
It is made of setters and getters that provide fast normalization and more consistent behavior.
When passing an option does not exist, Got will throw an error. In order to retrieve the options before the error, use `error.options`.
```js
import got from 'got';
try {
await got('https://httpbin.org/anything', {
thisOptionDoesNotExist: true
});
} catch (error) {
console.error(error);
console.error(error.options.url.href);
// Unexpected option: thisOptionDoesNotExist
// https://httpbin.org/anything
}
```
- The `init` hook now accepts a second argument: `self`, which points to an `Options` instance.
In order to define your own options, you have to move them to `options.context` in an [`init` hook](https://github.com/sindresorhus/got/blob/main/documentation/lets-make-a-plugin.md#authorization) or store them in `options.context` directly.
- The `init` hooks are ran only when passing an options object explicitly.
```diff
- await got('https://example.com'); // this will *not* trigger the init hooks
+ await got('https://example.com', {}); // this *will** trigger init hooks
```
- [`options.merge()`](2-options.md) replaced `got.mergeOptions` and `Request.normalizeArguments`
```diff
- got.defaults.options = got.mergeOptions(got.defaults.options, {…});
+ got.defaults.options.merge(…);
```
This fixes issues like [#​1450](https://github.com/sindresorhus/got/issues/1450)
- Legacy `Url` instances are not supported anymore. You need to use WHATWG URL instead.
```diff
- await got(string, {port: 8443});
+ const url = new URL(string);
+ url.port = 8443;
+ await got(url);
```
- No implicit timeout declaration.
```diff
- await got('https://example.com', {timeout: 5000})
+ await got('https://example.com', {timeout: {request: 5000})
```
- No implicit retry declaration.
```diff
- await got('https://example.com', {retry: 5})
+ await got('https://example.com', {retry: {limit: 5})
```
- `dnsLookupIpVersion` is now a number (4 or 6) or undefined
```diff
- await got('https://example.com', {dnsLookupIpVersion: 'ipv4'})
+ await got('https://example.com', {dnsLookupIpVersion: 4})
```
- `redirectUrls` and `requestUrl` now give URL instances
```diff
- request.requestUrl
+ request.requestUrl.origin
+ request.requestUrl.href
+ request.requestUrl.toString()
```
```diff
- request.redirectUrls[0]
+ request.redirectUrls[0].origin
+ request.redirectUrls[0].href
+ request.redirectUrls[0].toString()
```
- Renamed `request.aborted` to `request.isAborted`
```diff
- request.aborted
+ request.isAborted
```
Reason: consistency with `options.isStream`.
- Renamed the `lookup` option to `dnsLookup`
```diff
- await got('https://example.com', {lookup: cacheable.lookup})
+ await got('https://example.com', {dnsLookup: cacheable.lookup})
```
- The `beforeRetry` hook now accepts only two arguments: `error` and `retryCount`
```diff
await got('https://example.com', {
hooks: {
beforeRetry: [
- (options, error, retryCount) => {
- console.log(options, error, retryCount);
- }
+ (error, retryCount) => {
+ console.log(error.options, error, retryCount);
+ }
]
}
})
```
The `options` argument has been removed, however it's still accessible via `error.options`. All modifications on `error.options` will be reflected in the next requests (no behavior change, same as with Got 11).
- The `beforeRedirect` hook's first argument (options) is now a cloned instance of the Request options.
This was done to make retrieving the original options possible: `plainResponse.request.options`.
```diff
await got('http://szmarczak.com', {
hooks: {
beforeRedirect: [
(options, response) => {
- console.log(options === response.request.options); //=> true [invalid! our original options were overriden]
+ console.log(options === response.request.options); //=> false [we can access the original options now]
}
]
}
})
```
- The `redirect` event now takes two arguments in this order: `updatedOptions` and `plainResponse`.
```diff
- stream.on('redirect', (response, options) => …)
+ stream.on('redirect', (options, response) => …)
```
Reason: consistency with the `beforeRedirect` hook.
- The `socketPath` option has been removed. Use the `unix:` protocol instead.
```diff
- got('/containers/json', {socketPath: '/var/run/docker.sock'})
+ got('unix:/var/run/docker.sock:/containers/json')
+ got('http://unix:/var/run/docker.sock:/containers/json')
```
- The `retryWithMergedOptions` function in an `afterResponse` hook no longer returns a `Promise`.
It now throws `RetryError`, so this should this should be the last function being executed.
This was done to allow `beforeRetry` hooks getting called.
- You can no longer set `options.agent` to `false`.
To do so, you need to define all the `options.agent` properties: `http`, `https` and `http2`.
```diff
await got('https://example.com', {
- agent: false
+ agent: {
+ http: false,
+ https: false,
+ http2: false
+ }
})
```
- When passing a `url` option when paginating, it now needs to be an absolute URL - the `prefixUrl` option is always reset from now on. The same when retrying in an `afterResponse` hook.
```diff
- return {url: '/location'};
+ return {url: new URL('/location', response.request.options.url)};
```
There was confusion around the `prefixUrl` option. It was counterintuitive if used with the Pagination API. For example, it worked fine if the server replied with a relative URL, but if it was an absolute URL then the `prefixUrl` would end up duplicated. In order to fix this, Got now requires an absolute URL - no `prefixUrl` will be applied.
- `got.extend(…)` will throw when passing some options that don't accept undefined - undefined no longer retains the old value, as setting undefined explicitly may reset the option
##### Documentation
We have redesigned the documentation so it's easier to navigate and find exactly what you are looking for. We hope you like it :heart:
### [`v11.8.6`](https://github.com/sindresorhus/got/releases/tag/v11.8.6)
[Compare Source](https://github.com/sindresorhus/got/compare/v11.8.5...v11.8.6)
- Destroy request object after successful response
### [`v11.8.5`](https://github.com/sindresorhus/got/releases/tag/v11.8.5)
[Compare Source](https://github.com/sindresorhus/got/compare/v11.8.3...v11.8.5)
- Backport security fix [`861ccd9`](https://github.com/sindresorhus/got/commit/861ccd9ac2237df762a9e2beed7edd88c60782dc)
- [CVE-2022-33987](https://nvd.nist.gov/vuln/detail/CVE-2022-33987)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44OS4wIiwidXBkYXRlZEluVmVyIjoiNDIuODkuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6W119-->
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: package-lock.json
npm ERR! Invalid Version: >=1.0.7
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/renovate/cache/others/npm/_logs/2026-01-22T10_03_50_573Z-debug-0.log
### ⚠️ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
##### File name: package-lock.json
```
npm ERR! Invalid Version: >=1.0.7
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/renovate/cache/others/npm/_logs/2026-01-22T10_03_50_573Z-debug-0.log
```
This repo is archived. You cannot comment on pull requests.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
^11.8.3→^14.0.0Release Notes
sindresorhus/got (got)
v14.6.6Compare Source
4d5168cb65b0e1, where it incorrectly auto-closed streams for empty PATCH/DELETE/OPTIONS when using streams. This broke the documented use case of piping data to a got stream for these methods.v14.6.5Compare Source
got.extend()withresponseTypeoptionf7ab6e9v14.6.4Compare Source
dnsLookupoption type to accept Node.jsdns.lookup47c3155v14.6.3Compare Source
fb03d8461d5e3bv14.6.2Compare Source
0a16a9cv14.6.1Compare Source
v14.6.0Compare Source
Improvements
beforeCachehook1c3a041retryCounttobeforeRequesthook context91cdc48HTTPErrormessage to include method and URL6dd7574ecf56333e2a781beforeErrorhook1c71194449833af5c54a3strictContentLengthoption4206f0ehttps.secureOptionsoption7ec1714copyPipedHeadersoption to control automatic header copying from piped streamsd83daddstream.isReadonlyproperty to detect read-only streams030dfbbFixes
398c11af004564beforeRetryhooksbf84d36beforeErrorhook not being called forERR_UNSUPPORTED_PROTOCOLerrorfb86418prefixUrlin hooks9725fbd1e497812527bf6content-lengthwhen piping decompressed responses30b3b796ae3e7fe09a9bd6a544a3afterResponsehook validation to allownullbody values60a44193d66aectimings.endbeing undefined when stream is destroyed before completion4e75679e5659d4Meta
I managed to get it almost down to zero issues! 🎉
v14.5.0Compare Source
retry.enforceRetryRulesoption to fix statusCodes/limit bypassing7c0aee6serverNameHTTPS optioncdaab63preserveHooksoption forretryWithMergedOptions1abeba4IterableandAsyncIterableas request bodyb65b0e12ab94fda2812dedownloadProgressfiring for redirect responses9ec6ff0e899c07falseas agent value6961284d1d4ed223d0b6b724d592dc4f1e3v14.4.9Compare Source
content-encodingheaders but no bodycc434bcv14.4.8Compare Source
request.optionsinafterResponsehookdad6a91v14.4.7Compare Source
06029e0v14.4.6Compare Source
7a92064v14.4.5Compare Source
c079b93v14.4.4Compare Source
AbortSignal#timeout()(#2388)92b378ev14.4.3Compare Source
f2f8cb2v14.4.2Compare Source
f44ef43v14.4.1Compare Source
dfc54d9v14.4.0Compare Source
15ca4a0v14.3.0Compare Source
dbab6c3v14.2.1Compare Source
c81a611v14.2.0Compare Source
causeproperty with the original error toRequestError(#2327)4cbd01dv14.1.0Compare Source
RequestErrorresponse (#2325)5e4f6ffv14.0.0Compare Source
Breaking
a004263Improvements
followRedirectoption accept a function (#2306)7c3f147v13.0.0Compare Source
As a reminder, Got continues to require ESM. For TypeScript users, this includes having
"module": "node16", "moduleResolution": "node16"in your tsconfig.Breaking
52a1063enableUnixSocketsoption to befalseby default852c312Improvements
undefinedfor options (#2258)1cefe8bv12.6.1Compare Source
get-streamimport statement (#2266)67d5039v12.6.0Compare Source
88c88fb979272e0ca0b7fv12.5.3Compare Source
3cc40b5v12.5.2Compare Source
39f83b6v12.5.1Compare Source
3b3ea673e9d3afv12.5.0Compare Source
e049e948630815f0ac0b34c3762av12.4.1Compare Source
Fixes
options.contextbeing not extensibleb671480uploadProgressafter promise cancelation693de21v12.4.0Compare Source
Improvements
850773cFixes
beforeErrorhooks withHTTPErrorif thethrowHttpErrorsoption isfalse(#2104)3927348v12.3.1Compare Source
43b1467v12.3.0Compare Source
.off()method for events (#2092)88056bev12.2.0Compare Source
AbortController(#2020)6a6d2a9enableUnixSocketsoption (#2062)461b3d4v12.1.0Compare Source
Improvements
response.ok(#2043)22d58fb{throwHttpErrors: false}Fixes
861ccd9v12.0.4Compare Source
bb8eca9v12.0.3Compare Source
jsonoption (#2015)eb045bfv12.0.2Compare Source
encodingoption with{responseType: 'json'}(#1996)0703318v12.0.1Compare Source
nockcompatibility (#1959)bf39d2cRequestTypeScript type (#1940)0f9f2b8v12.0.0Compare Source
Introducing Got v12.0.0 🎉
Long time no see! The latest Got version (v11.8.2) was released just in February ❄️
We have been working hard on squashing bugs and improving overall experience.
If you find Got useful, you might want to sponsor the Got maintainers.
This package is now pure ESM
Please read this. Also see #1789.
[ERR_REQUIRE_ESM]andMust use import to load ES Moduleerrors. This is a problem with your setup, not Got.Required Node.js >=14
While working with streams, we encountered more Node.js bugs that needed workarounds.
In order to keep our code clean, we had to drop Node.js v12 as the code would get more messy.
We strongly recommend that you update Node.js to v14 LTS.
HTTP/2 support
Every Node.js release, the native
http2module gets more stable.Unfortunately there are still some issues on the Node.js side, so we decided to keep HTTP/2 disabled for now.
We may enable it by default in Got v13. It is still possible to turn it on via the
http2option.To run HTTP/2 requests, it is required to use Node.js v15.10 or above.
Bug fixes
Woah, we possibly couldn't make a release if we didn't fix some bugs!
49c16eecontent-lengthon ReadStream (#1510)472b8efff918fb1107cc6methodRewritingoption51d88a0urlnot being reused on retry in rare case (#1487)462bc63a59fac477df9c362305d706a2d3d1e1e506response.completewhen using cache9e15d88Cannot call enderror whenrequestreturns aWritable226cc393c23eea3c23eeagot.paginate does not call init hooks(#1574)3c23eeahttpsmodule (#1567)3c23eea9ecc5eesearchParams(#1814)1018c20732e9bd2453e5e439fb82eda69ffusernameandpasswordencoding in URL (#1169 #1317)d65d0ca1c4cefcafterResponsereturn checkcbc8902https.alpnProtocolsnot having an effecte1099fbImprovements
contextoption mergeable (#1459)2b8ed1f6fc04a9e943672(blocked by nodejs/node#35923)267504611203704f21eb3retry.backoffLimitoption41c4136noiseretry optione83007783575d5fe723a0(thanks @Giotino)error.codef27e8d3options.urleven if some options are invalid8d6a6802db5ec5854430f3df52f3oncetypes for Stream API3c23eeaRetryErrorwhich always triggers a new retry when thrown3c23eeaerror.optionsis now enumerable3c23eeadefaults.handlersdon't need a default handler now3c23eeaLinkheader3c23eeaa5dd9aaBreaking changes
Improved option normalization
Optionclass that is specifically designed to parse and validate Got options.It is made of setters and getters that provide fast normalization and more consistent behavior.
When passing an option does not exist, Got will throw an error. In order to retrieve the options before the error, use
error.options.inithook now accepts a second argument:self, which points to anOptionsinstance.In order to define your own options, you have to move them to
options.contextin aninithook or store them inoptions.contextdirectly.inithooks are ran only when passing an options object explicitly.options.merge()replacedgot.mergeOptionsandRequest.normalizeArgumentsThis fixes issues like #1450
Urlinstances are not supported anymore. You need to use WHATWG URL instead.dnsLookupIpVersionis now a number (4 or 6) or undefinedredirectUrlsandrequestUrlnow give URL instancesrequest.abortedtorequest.isAbortedReason: consistency with
options.isStream.lookupoption todnsLookupbeforeRetryhook now accepts only two arguments:errorandretryCountThe
optionsargument has been removed, however it's still accessible viaerror.options. All modifications onerror.optionswill be reflected in the next requests (no behavior change, same as with Got 11).beforeRedirecthook's first argument (options) is now a cloned instance of the Request options.This was done to make retrieving the original options possible:
plainResponse.request.options.redirectevent now takes two arguments in this order:updatedOptionsandplainResponse.Reason: consistency with the
beforeRedirecthook.socketPathoption has been removed. Use theunix:protocol instead.retryWithMergedOptionsfunction in anafterResponsehook no longer returns aPromise.It now throws
RetryError, so this should this should be the last function being executed.This was done to allow
beforeRetryhooks getting called.options.agenttofalse.To do so, you need to define all the
options.agentproperties:http,httpsandhttp2.urloption when paginating, it now needs to be an absolute URL - theprefixUrloption is always reset from now on. The same when retrying in anafterResponsehook.There was confusion around the
prefixUrloption. It was counterintuitive if used with the Pagination API. For example, it worked fine if the server replied with a relative URL, but if it was an absolute URL then theprefixUrlwould end up duplicated. In order to fix this, Got now requires an absolute URL - noprefixUrlwill be applied.got.extend(…)will throw when passing some options that don't accept undefined - undefined no longer retains the old value, as setting undefined explicitly may reset the optionDocumentation
We have redesigned the documentation so it's easier to navigate and find exactly what you are looking for. We hope you like it ❤️
v11.8.6Compare Source
v11.8.5Compare Source
861ccd9Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Renovate Bot.
⚠️ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below:
File name: package-lock.json