chore(deps): update dependency diff to v8 #15594
Open
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:
^7.0.0
->^8.0.0
Release Notes
kpdecker/jsdiff (diff)
v8.0.0
Compare Source
diffSentences
:["foo.", " ", "bar."]
but "foo. bar" tokenized to["foo.", " bar"]
- i.e. whether the space between sentences was treated as a separate token depended upon whether the final sentence had trailing punctuation or not. This was arbitrary and surprising; it is no longer the case.)diffWords
taking O(n^2) time in pathological cases.push()
using.apply
or the spread operator and hitting the JS-implementation-specific limit on the maximum number of arguments to a function, as shown at https://stackoverflow.com/a/56809779/1709587; thus the exact threshold to hit the error will depend on the environment in which you were running JsDiff.)merge
function. Previously JsDiff included an undocumented function calledmerge
that was meant to, in some sense, merge patches. It had at least a couple of serious bugs that could lead to it returning unambiguously wrong results, and it was difficult to simply "fix" because it was unclear precisely what it was meant to do. For now, the fix is to remove it entirely.the
diff
package on npm now includes its own TypeScript type definitions. Users who previously used the@types/diff
npm package from DefinitelyTyped should remove that dependency when upgrading JsDiff to v8.Note that the transition from the DefinitelyTyped types to JsDiff's own type definitions includes multiple fixes and also removes many exported types previously used for
options
arguments to diffing and patch-generation functions. (There are now different exported options types for abortable calls - ones with atimeout
ormaxEditLength
that may give a result ofundefined
- and non-abortable calls.) See the TypeScript section of the README for some usage tips.The
Diff
object is now a class. Custom extensions ofDiff
, as described in the "Defining custom diffing behaviors" section of the README, can therefore now be done by writing aclass CustomDiff extends Diff
and overriding methods, instead of the old way based on prototype inheritance. (I think code that did things the old way should still work, though!)diff/lib/index.es6.js
anddiff/lib/index.mjs
no longer exist, and the ESM version of the library is no longer bundled into a single file.The
ignoreWhitespace
option fordiffWords
is no longer included in the type declarations. The effect of passingignoreWhitespace: true
has always been to makediffWords
just calldiffWordsWithSpace
instead, which was confusing, because that behaviour doesn't seem properly described as "ignoring" whitespace at all. The property remains available to non-TypeScript applications for the sake of backwards compatability, but TypeScript applications will now see a type error if they try to passignoreWhitespace: true
todiffWords
and should change their code to calldiffWordsWithSpace
instead.JsDiff no longer purports to support ES3 environments. (I'm pretty sure it never truly did, despite claiming to in its README, since even the 1.0.0 release used
Array.map
which was added in ES5.)diffJson
'sstringifyReplacer
option behaves more likeJSON.stringify
'sreplacer
argument now. In particular:key
passed to the replacer when the top-level object is passed in asvalue
is now""
(previously, wasundefined
), and thekey
passed with an array element is the array index as a string, like"0"
or"1"
(previously was whatever the key for the entire array was). Both the new behaviours match that ofJSON.stringify
.undefined
when called in async mode (i.e. with a callback). Previously, there was an odd quirk where they would returntrue
if the strings being diffed were equal andundefined
otherwise.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.
This PR was generated by Mend Renovate. View the repository job log.