fix(deps): update dependency got to v14
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| got | ^11.8.6 -> ^14.6.4 |
Release Notes
sindresorhus/got (got)
v14.6.4
v14.6.3
v14.6.2
- Fix path segments containing colons being misidentified as absolute URLs
0a16a9c
v14.6.1
- Fix the TS code not being built in 14.6.0.
v14.6.0
Improvements
- Add
beforeCachehook1c3a041 - Add
retryCounttobeforeRequesthook context91cdc48 - Improve
HTTPErrormessage to include method and URL6dd7574 - Add support for typed arrays as request body
ecf5633 - Add Node.js diagnostic channel support
3e2a781 - Allow custom Error classes in
beforeErrorhook1c71194 - Add zstd (Zstandard) compression support
449833a - Improve validation error messages by including option names
f5c54a3 - Add
strictContentLengthoption4206f0e - Add support for
https.secureOptionsoption7ec1714 - Add
copyPipedHeadersoption to control automatic header copying from piped streamsd83dadd - Add
stream.isReadonlyproperty to detect read-only streams030dfbb
Fixes
- Fix HTTP/2 timings NaN issue
398c11a - Fix shortcut methods ignoring handler errors
f004564 - Fix body reassignment in
beforeRetryhooksbf84d36 - Fix
beforeErrorhook not being called forERR_UNSUPPORTED_PROTOCOLerrorfb86418 - FIx preserving
prefixUrlin hooks9725fbd - Fix race condition causing retry after promise settles
1e49781 - Fix stream validation errors causing unhandled rejections
2527bf6 - Fix incorrect
content-lengthwhen piping decompressed responses30b3b79 - Fix EPIPE errors bypassing retry logic in Promise API
6ae3e7f - Fix silent hang when returning cached response with FormData body from beforeRequest hook
e09a9bd - Fix hook type definitions to reflect normalized runtime state
6a544a3 - Fix
afterResponsehook validation to allownullbody values60a4419 - Fix DNS timing being non-zero when connecting to IP addresses
3d66aec - Fix
timings.endbeing undefined when stream is destroyed before completion4e75679 - Fix properly treating different UNIX socket paths as different origins
e5659d4
Meta
I managed to get it almost down to zero issues! π
v14.5.0
- Add
retry.enforceRetryRulesoption to fix statusCodes/limit bypassing7c0aee6 - Add support for
serverNameHTTPS optioncdaab63 - Add
preserveHooksoption forretryWithMergedOptions1abeba4 - Support
IterableandAsyncIterableas request bodyb65b0e1 - Fix hang on revalidated cached responses
2ab94fd - Fix handling of FormData getLength errors
a2812de - Fix
downloadProgressfiring for redirect responses9ec6ff0 - Fix TypeScript type definition for retry event's createRetryStream parameter
e899c07 - Fix validation to accept
falseas agent value6961284 - Fix HTTP/2 memory leak from timeout listeners with connection reuse
d1d4ed2 - Fix QuickLRU v7+ compatibility
23d0b6b - Fix it not using HTTP/2 connection reuse by default
724d592 - Fix hang with stream requests without body for methods like OPTIONS
dc4f1e3
v14.4.9
- Fix hang with responses containing
content-encodingheaders but no bodycc434bc
v14.4.8
- Fix infinite loop when retrying with
request.optionsinafterResponsehookdad6a91
v14.4.7
v14.4.6
v14.4.5
v14.4.4
v14.4.3
v14.4.2
v14.4.1
- Fix missing dependency
dfc54d9
v14.4.0
v14.3.0
- Update dependencies
dbab6c3
v14.2.1
v14.2.0
v14.1.0
v14.0.0
Breaking
- Require Node.js 20 (#β2313)
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
v13.0.0
As a reminder, Got continues to require ESM. For TypeScript users, this includes having "module": "node16", "moduleResolution": "node16" in your tsconfig.
Breaking
- Require Node.js 16
52a1063 - Change the
enableUnixSocketsoption to befalseby default852c312- Most users don't need it.
Improvements
v12.6.1
v12.6.0
v12.5.3
v12.5.2
v12.5.1
- Fix compatibility with TypeScript and ESM
3b3ea67 - Fix request body not being properly cached (#β2150)
3e9d3af
v12.5.0
- Disable method rewriting on 307 and 308 status codes (#β2145)
e049e94 - Upgrade dependencies
8630815f0ac0b34c3762a
v12.4.1
Fixes
- Fix
options.contextbeing not extensibleb671480 - Don't emit
uploadProgressafter promise cancelation693de21
v12.4.0
Improvements
Fixes
- Don't call
beforeErrorhooks withHTTPErrorif thethrowHttpErrorsoption isfalse(#β2104)3927348
v12.3.1
v12.3.0
v12.2.0
- Support
AbortController(#β2020)6a6d2a9 - Add
enableUnixSocketsoption (#β2062)461b3d4
v12.1.0
Improvements
- Add
response.ok(#β2043)22d58fb- This is only useful if you have
{throwHttpErrors: false}
- This is only useful if you have
Fixes
v12.0.4
- Remove stream lock - unreliable since Node 17.3.0
bb8eca9
v12.0.3
v12.0.2
v12.0.1
- Fix
nockcompatibility (#β1959)bf39d2c - Fix missing export of
RequestTypeScript type (#β1940)0f9f2b8
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.
This package is now pure ESM
Please read this. Also see #β1789.
- Please don't open issues about
[ERR_REQUIRE_ESM]andMust use import to load ES Moduleerrors. 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-lengthon ReadStream (#β1510)472b8ef - Fix promise shortcuts in case of error status code (#β1543)
ff918fb1107cc6 - Invert the
methodRewritingoption51d88a0 - Fix
urlnot being reused on retry in rare case (#β1487)462bc63 - Fix hanging promise on HTTP/2 timeout (#β1492)
a59fac4 - Prevent uncaught ParseErrors on initial successful response (#β1527)
77df9c3 - Throw an error when retrying with consumed body (#β1507)
62305d7 - Fix a Node.js 16 bug that hangs Got streams
06a2d3d - Fix default pagination handling for empty Link header (#β1768)
1e1e506 - Fix incorrect
response.completewhen using cache9e15d88 - Fix
Cannot call enderror whenrequestreturns aWritable226cc39 - Fix Request options not being reused on retry
3c23eea - Fix types being not compatible with CommonJS
3c23eea - Fix
got.paginate does not call init hooks(#β1574)3c23eea - Generate a new object when passing options to the native
httpsmodule (#β1567)3c23eea - Remove stream reuse check (#β1803)
9ecc5ee - Fix merging
searchParams(#β1814)1018c20732e9bd - Fix unhandled exception when lookup returns invalid IP early (#β1737)
2453e5e - Fix relative URLs when paginating
439fb82 - Require url to be an instance of URL when paginating (#β1818)
eda69ff - Fix
usernameandpasswordencoding in URL (#β1169 #β1317)d65d0ca - Clone raw options
1c4cefc - Fix invalid
afterResponsereturn checkcbc8902 - Fix
https.alpnProtocolsnot having an effecte1099fb
Improvements
- Make the
contextoption mergeable (#β1459)2b8ed1f - Add generic argument to AfterResponseHook TypeScript type (#β1589)
6fc04a9 - Add read timeout (#β1518)
e943672(blocked by nodejs/node#35923) - Improve the pagination API (#β1644)
2675046 - Change the stackAllItems option to be false by default (#β1645)
1120370 - Throw when afterResponse hook returns an invalid value
4f21eb3 - Add
retry.backoffLimitoption41c4136 - Add
noiseretry optione830077 - Enable more HTTPS options
83575d5fe723a0(thanks @βGiotino) - Define
error.codef27e8d3 - Set
options.urleven if some options are invalid8d6a680 - Improve memory usage when merging options
2db5ec5 - Support async generators as body
854430f3df52f3 - Add missing
oncetypes for Stream API3c23eea - New error type:
RetryErrorwhich always triggers a new retry when thrown3c23eea error.optionsis now enumerable3c23eeadefaults.handlersdon't need a default handler now3c23eea- Add a parser for the
Linkheader3c23eea - General code improvements
a5dd9aa
Breaking changes
Improved option normalization
- Got exports an
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.
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
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.context in an init hook or store them in options.context directly.
- The
inithooks are ran only when passing an options object explicitly.
- await got('https://example.com'); // this will *not* trigger the init hooks
+ await got('https://example.com', {}); // this *will** trigger init hooks
options.merge()replacedgot.mergeOptionsandRequest.normalizeArguments
- got.defaults.options = got.mergeOptions(got.defaults.options, {β¦});
+ got.defaults.options.merge(β¦);
This fixes issues like #β1450
- Legacy
Urlinstances are not supported anymore. You need to use WHATWG URL instead.
- await got(string, {port: 8443});
+ const url = new URL(string);
+ url.port = 8443;
+ await got(url);
- No implicit timeout declaration.
- await got('https://example.com', {timeout: 5000})
+ await got('https://example.com', {timeout: {request: 5000})
- No implicit retry declaration.
- await got('https://example.com', {retry: 5})
+ await got('https://example.com', {retry: {limit: 5})
dnsLookupIpVersionis now a number (4 or 6) or undefined
- await got('https://example.com', {dnsLookupIpVersion: 'ipv4'})
+ await got('https://example.com', {dnsLookupIpVersion: 4})
redirectUrlsandrequestUrlnow give URL instances
- request.requestUrl
+ request.requestUrl.origin
+ request.requestUrl.href
+ request.requestUrl.toString()
- request.redirectUrls[0]
+ request.redirectUrls[0].origin
+ request.redirectUrls[0].href
+ request.redirectUrls[0].toString()
- Renamed
request.abortedtorequest.isAborted
- request.aborted
+ request.isAborted
Reason: consistency with options.isStream.
- Renamed the
lookupoption todnsLookup
- await got('https://example.com', {lookup: cacheable.lookup})
+ await got('https://example.com', {dnsLookup: cacheable.lookup})
- The
beforeRetryhook now accepts only two arguments:errorandretryCount
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
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.
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
redirectevent now takes two arguments in this order:updatedOptionsandplainResponse.
- stream.on('redirect', (response, options) => β¦)
+ stream.on('redirect', (options, response) => β¦)
Reason: consistency with the beforeRedirect hook.
- The
socketPathoption has been removed. Use theunix:protocol instead.
- 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
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 beforeRetry hooks getting called.
- You can no longer set
options.agenttofalse. To do so, you need to define all theoptions.agentproperties:http,httpsandhttp2.
await got('https://example.com', {
- agent: false
+ agent: {
+ http: false,
+ https: false,
+ http2: false
+ }
})
- When passing a
urloption when paginating, it now needs to be an absolute URL - theprefixUrloption is always reset from now on. The same when retrying in anafterResponsehook.
- 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:
Configuration
π Schedule: Branch creation - "before 3am on the first day of the month" (UTC), 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.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.