Update Mend: high confidence minor and patch dependency updates #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.0.0-rc.4
->2.6.4
1.15.1
->1.20.2
4.13.4
->4.18.2
1.13.0
->1.17.3
1.0.1
->1.6.1
1.2.0
->1.4.3
1.8.3
->1.13.6
Release Notes
caolan/async
v2.6.4
Compare Source
v2.6.3
Compare Source
v2.6.2
Compare Source
v2.6.1
Compare Source
npm audit
warnings. (#1532, #1533)async-es
more optimized for webpack users (#1517)v2.6.0
Compare Source
require('async/find')
or useasync.anyLimit
. (#1483)queue
performance. (#1448, #1454)v2.5.0
Compare Source
concatLimit
, theLimit
equivalent ofconcat
(#1426, #1430)concat
improvements: it now preserves order, handles falsy values and theiteratee
callback takes a variable number of arguments (#1437, #1436)queue
where there was a size discrepancy betweenworkersList().length
andrunning()
(#1428, #1429)v2.4.1
Compare Source
timeout()
from being re-used. (#1418, #1419)v2.4.0
Compare Source
tryEach
, for running async functions in parallel, where you only expect one to succeed. (#1365, #687)parallel
andwaterfall
(#1395)queue.remove()
, for removing items in aqueue
(#1397, #1391)eval
, preventing Async from running in pages with Content Security Policy (#1404, #1403)asyncify
ed function's callback being caught by the underlying Promise (#1408)queue.empty()
(#1367)v2.3.0
Compare Source
async
functions. Wherever you can pass a Node-style/CPS function that uses a callback, you can also pass anasync
function. Previously, you had to wrapasync
functions withasyncify
. The caveat is that it will only work ifasync
functions are supported natively in your environment, transpiled implementations can't be detected. (#1386, #1390)v2.2.0
Compare Source
groupBy
, and theSeries
/Limit
equivalents, analogous to_.groupBy
(#1364)transform
bug whencallback
was not passed (#1381)reflect
toparallel
docs (#1385)v2.1.5
Compare Source
auto
bug when function names collided with Array.prototype (#1358)some
,every
andfind
where processing would continue after the result was determined.some
,every
andfind
v2.1.4
Compare Source
v2.1.2
Compare Source
detect
,some
,every
on large inputs (#1293).v2.1.1
Compare Source
v2.1.0
Compare Source
retry
andretryable
now support an optionalerrorFilter
function that determines if thetask
should retry on the error (#1256, #1261)race
,cargo
,queue
, andpriorityQueue
(#1253)v2.0.1
Compare Source
each
,map
,filter
, etc (#1245, #1246, #1247).v2.0.0
Compare Source
Lots of changes here!
First and foremost, we have a slick new site for docs. Special thanks to @hargasinski for his work converting our old docs to
jsdoc
format and implementing the new website. Also huge ups to @ivanseidel for designing our new logo. It was a long process for both of these tasks, but I think these changes turned out extraordinary well.The biggest feature is modularization. You can now
require("async/series")
to only require theseries
function. Every Async library function is available this way. You still canrequire("async")
to require the entire library, like you could do before.We also provide Async as a collection of ES2015 modules. You can now
import {each} from 'async-es'
orimport waterfall from 'async-es/waterfall'
. If you are using only a few Async functions, and are using a ES bundler such as Rollup, this can significantly lower your build size.Major thanks to @Kikobeats, @aearly and @megawac for doing the majority of the modularization work, as well as @jdalton and @Rich-Harris for advisory work on the general modularization strategy.
Another one of the general themes of the 2.0 release is standardization of what an "async" function is. We are now more strictly following the node-style continuation passing style. That is, an async function is a function that:
There were several cases where Async accepted some functions that did not strictly have these properties, most notably
auto
,every
,some
,filter
,reject
anddetect
.Another theme is performance. We have eliminated internal deferrals in all cases where they make sense. For example, in
waterfall
andauto
, there was asetImmediate
between each task -- these deferrals have been removed. AsetImmediate
call can add up to 1ms of delay. This might not seem like a lot, but it can add up if you are using many Async functions in the course of processing a HTTP request, for example. Nearly all asynchronous functions that do I/O already have some sort of deferral built in, so the extra deferral is unnecessary. The trade-off of this change is removing our built-in stack-overflow defense. Many synchronous callback calls in series can quickly overflow the JS call stack. If you do have a function that is sometimes synchronous (calling its callback on the same tick), and are running into stack overflows, wrap it withasync.ensureAsync()
.Another big performance win has been re-implementing
queue
,cargo
, andpriorityQueue
with doubly linked lists instead of arrays. This has lead to queues being an order of magnitude faster on large sets of tasks.New Features
require()
d from the main package. (require('async/auto')
) (#984, #996)async-es
package. (import {forEachSeries} from 'async-es'
) (#984, #996)race
, analogous toPromise.race()
. It will run an array of async tasks in parallel and will call its callback with the result of the first task to respond. (#568, #1038)each
,map
,parallel
, etc.. (#579, #839, #1074)mapValues
, for mapping over the properties of an object and returning an object with the same keys. (#1157, #1177)timeout
, a wrapper for an async function that will make the task time-out after the specified time. (#1007, #1027)reflect
andreflectAll
, analagous toPromise.reflect()
, a wrapper for async tasks that always succeeds, by gathering results and errors into an object. (#942, #1012, #1095)constant
supports dynamic arguments -- it will now always use its last argument as the callback. (#1016, #1052)setImmediate
andnextTick
now support arguments to partially apply to the deferred function, like the node-native versions do. (#940, #1053)auto
now supports resolving cyclic dependencies using Kahn's algorithm (#1140).autoInject
, a relative ofauto
that automatically spreads a task's dependencies as arguments to the task function. (#608, #1055, #1099, #1100)auto
tasks. (#635, #637)retryable
, a relative ofretry
that wraps an async function, making it retry when called. (#1058)retry
now supports specifying a function that determines the next time interval, useful for exponential backoff, logging and other retry strategies. (#1161)retry
will now pass all of the arguments the task function was resolved with to the callback (#1231).q.unsaturated
-- callback called when aqueue
's number of running workers falls below a threshold. (#868, #1030, #1033, #1034)q.error
-- a callback called whenever aqueue
task calls its callback with an error. (#1170)applyEach
andapplyEachSeries
now pass results to the final callback. (#1088)Breaking changes
waterfall
. If you were relying on this behavior, you should more accurately represent your control flow as an event emitter or stream. (#814, #815, #1048, #1050)auto
task functions now always take the callback as the last argument. If a task has dependencies, theresults
object will be passed as the first argument. To migrate old task functions, wrap them with_.flip
(#1036, #1042)setImmediate
calls have been refactored away. This may make existing flows vulnerable to stack overflows if you use many synchronous functions in series. UseensureAsync
to work around this. (#696, #704, #1049, #1050)map
used to return an object when iterating over an object.map
now always returns an array, like in other libraries. The previous object behavior has been split out intomapValues
. (#1157, #1177)filter
,reject
,some
,every
,detect
and their families like{METHOD}Series
and{METHOD}Limit
now expect an error as the first callback argument, rather than just a simple boolean. Passnull
as the first argument, or usefs.access
instead offs.exists
. (#118, #774, #1028, #1041){METHOD}
and{METHOD}Series
are now implemented in terms of{METHOD}Limit
. This is a major internal simplification, and is not expected to cause many problems, but it does subtly affect how functions execute internally. (#778, #847)retry
's callback is now optional. Previously, omitting the callback would partially apply the function, meaning it could be passed directly as a task toseries
orauto
. The partially applied "control-flow" behavior has been separated out intoretryable
. (#1054, #1058)whilst
,until
, andduring
used to be passed non-error args from the iteratee function's callback, but this led to weirdness where the first call of the test function would be passed no args. We have made it so the test function is never passed extra arguments, and only thedoWhilst
,doUntil
, anddoDuring
functions pass iteratee callback arguments to the test function (#1217, #1224)q.tasks
array has been renamedq._tasks
and is now implemented as a doubly linked list (DLL). Any code that used to interact with this array will need to be updated to either use the provided helpers or support DLLs (#1205).q.saturated()
callback in aqueue
has been modified to better reflect when tasks pushed to the queue will start queueing. (#724, #1078)iterator
method in favour of ES2015 iterator protocol which natively supports arrays (#1237)Bug Fixes
auto
&autoInject
(#1147).asyncify
withPromises
could resolve twice (#1197).Other
someSeries
andeverySeries
for symmetry, as well as a complete set ofany
/anyLimit
/anySeries
andall
//allLmit
/allSeries
aliases.find
as an alias fordetect. (as well as
findLimitand
findSeries`).Thank you @aearly and @megawac for taking the lead on version 2 of async.
v2.0.0-rc.6
Compare Source
v2.0.0-rc.5
Compare Source
expressjs/body-parser
v1.20.2
Compare Source
===================
v1.20.1
Compare Source
===================
v1.20.0
Compare Source
===================
strict
eval
usage withFunction
constructorprocess
to check for listenersv1.19.2
Compare Source
===================
__proto__
keysv1.19.1
Compare Source
===================
v1.19.0
Compare Source
===================
pb
) supportthrow
on invalid typev1.18.3
Compare Source
===================
v1.18.2
Compare Source
===================
v1.18.1
Compare Source
===================
v1.18.0
Compare Source
===================
body
property on verify errorstype
property on all generated errorshttp-errors
to set status code on errorsBuffer
loadinghttp-errors
for standard emitted errorsthrow
when missing charsetv1.17.2
Compare Source
===================
DEBUG_MAX_ARRAY_LENGTH
v1.17.1
Compare Source
===================
[
v1.17.0
Compare Source
===================
message
property enumerable forHttpError
sv1.16.1
Compare Source
===================
DEBUG_FD
set to1
or2
v1.16.0
Compare Source
===================
DEBUG_FD
environment variablev1.15.2
Compare Source
===================
setprototypeof
module to replace__proto__
settingexpressjs/express
v4.18.2
Compare Source
===================
v4.18.1
Compare Source
===================
v4.18.0
Compare Source
===================
res.download
options
withoutfilename
inres.download
res.status
null
/undefined
asmaxAge
inres.cookie
Object.prototype
values in settings throughapp.set
/app.get
default
with same arguments as types inres.format
res.send
http-errors
forres.format
errorstrict
priority
optionexpires
option to reject invalid dateseval
usage withFunction
constructorprocess
to check for listeners425 Unordered Collection
to standard425 Too Early
v4.17.3
Compare Source
===================
__proto__
keysv4.17.2
Compare Source
===================
undefined
inres.jsonp
undefined
when"json escape"
is enabledRegExp
sres.jsonp(obj, status)
deprecation messageres.is
JSDocmaxAge
option to reject invalid valuesreq.socket
over deprecatedreq.connection
v4.17.1
Compare Source
===================
null
/undefined
tores.status
"v4.17.0
Compare Source
===================
express.raw
to parse bodies intoBuffer
express.text
to parse bodies into stringres.sendFile
null
/undefined
tores.status
X-Forwarded-Host
pb
) supportSameSite=None
supportContent-Security-Policy
headerpath.normalize
call103 Early Hints
throw
on invalid typev4.16.4
Compare Source
===================
"Request aborted"
may be logged inres.sendfile
Router
constructorv4.16.3
Compare Source
===================
%
as last characterv4.16.2
Compare Source
===================
TypeError
inres.send
when givenBuffer
andETag
header setX-Forwarded-Proto
headerv4.16.1
Compare Source
===================
root
is incorrectly set to a filev4.16.0
Compare Source
===================
"json escape"
setting forres.json
andres.jsonp
express.json
andexpress.urlencoded
to parse bodiesoptions
argument tores.download
Buffer
encoding when not generating ETag for small responsesafe-buffer
for improved Buffer APIres.headersSent
when availableRegExp
X-Forwarded-For
X-Forwarded-For
headerimmutable
option</html>
in default error & redirectsimmutable
option.charset
set inres.jsonp
v4.15.5
Compare Source
===================
If-None-Match
token parsingIf-Match
token parsingv4.15.4
Compare Source
===================
Buffer
loadingv4.15.3
Compare Source
===================
res.set
cannot add charset toContent-Type
DEBUG_MAX_ARRAY_LENGTH
</html>
in HTML documentv4.15.2
Compare Source
===================
[
v4.15.1
Compare Source
===================
Date.parse
does not returnNaN
on invalid dateDate.parse
does not returnNaN
on invalid datev4.15.0
Compare Source
===================
next("router")
to exit from routerrouter.use
skipped requests routes did notres._headers
private fieldreq.url
is not set%o
in path debug to tell types apartObject.create
to setup request & response prototypessetprototypeof
module to replace__proto__
settingstatuses
instead ofhttp
module for status messagesDEBUG_FD
environment variable set to3
or highererr
cannot be converted to a stringContent-Security-Policy: default-src 'self'
headerno-cache
request directiveIf-None-Match
has both*
and ETagsETag
matching to match specIf-None-Match
when noETag
headerDate.parse
instead ofnew Date
no-cache
request directiveIf-None-Match
has both*
and ETagsETag
matching to match specres._headers
private fieldIf-Match
andIf-Unmodified-Since
headersres.getHeaderNames()
when availableres.headersSent
when availableno-cache
request directiveIf-None-Match
has both*
and ETagsETag
matching to match specres._headers
private fieldIf-Match
andIf-Unmodified-Since
headersres.getHeaderNames()
when availableres.headersSent
when available*
routereq.ips
performancev4.14.1
Compare Source
===================
err.headers
is not an objectv4.14.0
Compare Source
===================
acceptRanges
option tores.sendFile
/res.sendfile
cacheControl
option tores.sendFile
/res.sendfile
options
argument toreq.range
combine
optionres.location
/res.redirect
if not already encodedres.sendFile
/res.sendfile
req.get()
res.json
/res.jsonp
in most casesRange
header handling inres.sendFile
/res.sendfile
Accept
parsingAccept
parameters with quoted equalsAccept
parameters with quoted semicolonssameSite
optionMax-Age
to never be a floating point numberencode
is not a functionexpires
is not aDate
serialize
err.statusCode
iferr.status
is invaliderr.headers
objectstatuses
instead ofhttp
module for status messagesConfiguration
📅 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.