-
Couldn't load subscription status.
- Fork 11
fix(deps): update dependency diff to v7 #1297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
This plugin has been deployed to Cloudflare R2 and is available for testing. |
055f0aa to
4c5f23b
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
4c5f23b to
e55250c
Compare
🤖 I have created a release *beep* *boop* --- ## [4.5.0](v4.4.1...v4.5.0) (2025-04-02) ### Features * add webgui theme switcher component ([#1304](#1304)) ([e2d00dc](e2d00dc)) * api plugin system & offline versioned dependency vendoring ([#1252](#1252)) ([9f492bf](9f492bf)) * **api:** add `unraid-api --delete` command ([#1289](#1289)) ([2f09445](2f09445)) * basic array controls ([#1291](#1291)) ([61fe696](61fe696)) * basic docker controls ([#1292](#1292)) ([12eddf8](12eddf8)) * copy to webgui repo script docs + wc build options ([#1285](#1285)) ([e54f189](e54f189)) ### Bug Fixes * additional url fixes ([4b2763c](4b2763c)) * **api:** redirect benign pnpm postinstall warning to log file ([#1290](#1290)) ([7fb7849](7fb7849)) * **deps:** update dependency chalk to v5 ([#1296](#1296)) ([6bed638](6bed638)) * **deps:** update dependency diff to v7 ([#1297](#1297)) ([3c6683c](3c6683c)) * disable all config watchers ([#1306](#1306)) ([5c1b435](5c1b435)) * extract callbacks to library ([#1280](#1280)) ([2266139](2266139)) * OEM plugin issues ([#1288](#1288)) ([d5a3d0d](d5a3d0d)) * replace files lost during pruning ([d0d2ff6](d0d2ff6)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR contains the following updates:
^5.1.0->^7.0.0Release Notes
kpdecker/jsdiff (diff)
v7.0.0Compare Source
Just a single (breaking) bugfix, undoing a behaviour change introduced accidentally in 6.0.0:
diffWordstreats numbers and underscores as word characters again. This behaviour was broken in v6.0.0.v6.0.0Compare Source
This is a release containing many, many breaking changes. The objective of this release was to carry out a mass fix, in one go, of all the open bugs and design problems that required breaking changes to fix. A substantial, but exhaustive, changelog is below.
Commits
#497
diffWordsbehavior has been radically changed. Previously, even withignoreWhitespace: true, runs of whitespace were tokens, which led to unhelpful and unintuitive diffing behavior in typical texts. Specifically, even when two texts contained overlapping passages,diffWordswould sometimes choose to delete all the words from the old text and insert them anew in their new positions in order to avoid having to delete or insert whitespace tokens. Whitespace sequences are no longer tokens as of this release, which affects both the generated diffs and thecounts.Runs of whitespace are still tokens in
diffWordsWithSpace.As part of the changes to
diffWords, a new.postProcessmethod has been added on the baseDifftype, which can be overridden in customDiffimplementations.diffLineswithignoreWhitespace: truewill no longer ignore the insertion or deletion of entire extra lines of whitespace at the end of the text. Previously, these would not show up as insertions or deletions, as a side effect of a hack in the base diffing algorithm meant to help ignore whitespace indiffWords. More generally, the undocumented special handling in the core algorithm for ignored terminals has been removed entirely. (This special case behavior used to rewrite the final two change objects in a scenario where the final change object was an addition or deletion and itsvaluewas treated as equal to the empty string when compared using the diff object's.equalsmethod.)#500
diffCharsnow diffs Unicode code points instead of UTF-16 code units.#508
parsePatchnow always runs in what was previously "strict" mode; the undocumentedstrictoption has been removed. Previously, by default,parsePatch(and other patch functions that use it under the hood to parse patches) would accept a patch where the line counts in the headers were inconsistent with the actual patch content - e.g. where a hunk started with the header@@​ -1,3 +1,6 @​@​, indicating that the content below spanned 3 lines in the old file and 6 lines in the new file, but then the actual content below the header consisted of some different number of lines, say 10 lines of context, 5 deletions, and 1 insertion. Actually trying to work with these patches usingapplyPatchormerge, however, would produce incorrect results instead of just ignoring the incorrect headers, making this "feature" more of a trap than something actually useful. It's been ripped out, and now we are always "strict" and will reject patches where the line counts in the headers aren't consistent with the actual patch content.#435 Fix
parsePatchhandling of control characters.parsePatchused to interpret various unusual control characters - namely vertical tabs, form feeds, lone carriage returns without a line feed, and EBCDIC NELs - as line breaks when parsing a patch file. This was inconsistent with the behavior of both JsDiff's owndiffLinesmethod and also the Unixdiffandpatchutils, which all simply treat those control characters as ordinary characters. The result of this discrepancy was that some well-formed patches - produced either bydiffor by JsDiff itself and handled properly by thepatchutil - would be wrongly parsed byparsePatch, with the effect that it would disregard the remainder of a hunk after encountering one of these control characters.#439 Prefer diffs that order deletions before insertions. When faced with a choice between two diffs with an equal total edit distance, the Myers diff algorithm generally prefers one that does deletions before insertions rather than insertions before deletions. For instance, when diffing
abcdagainstacbd, it will prefer a diff that says to delete theband then insert a newbafter thec, over a diff that says to insert acbefore theband then delete the existingc. JsDiff deviated from the published Myers algorithm in a way that led to it having the opposite preference in many cases, including that example. This is now fixed, meaning diffs output by JsDiff will more accurately reflect what the published Myers diff algorithm would output.#455 The
addedandremovedproperties of change objects are now guaranteed to be set to a boolean value. (Previously, they would be set toundefinedor omitted entirely instead of setting them to false.)#464 Specifying
{maxEditLength: 0}now sets a max edit length of 0 instead of no maximum.#460 Added
oneChangePerTokenoption.#467 Consistent ordering of arguments to
comparator(left, right). Values from the old array will now consistently be passed as the first argument (left) and values from the new array as the second argument (right). Previously this was almost (but not quite) always the other way round.#480 Passing
maxEditLengthtocreatePatch&createTwoFilesPatchnow works properly (i.e. returns undefined if the max edit distance is exceeded; previous behavior was to crash with aTypeErrorif the edit distance was exceeded).#486 The
ignoreWhitespaceoption ofdiffLinesbehaves more sensibly now.values in returned change objects now include leading/trailing whitespace even whenignoreWhitespaceis used, just like how withignoreCasethevalues still reflect the case of one of the original texts instead of being all-lowercase.ignoreWhitespaceis also now compatible withnewlineIsToken. Finally,diffTrimmedLinesis deprecated (and removed from the docs) in favour of usingdiffLineswithignoreWhitespace: true; the two are, and always have been, equivalent.#490 When calling diffing functions in async mode by passing a
callbackoption, the diff result will now be passed as the first argument to the callback instead of the second. (Previously, the first argument was never used at all and would always have valueundefined.)#489
this.optionsno longer exists onDiffobjects. Instead,optionsis now passed as an argument to methods that rely on options, likeequals(left, right, options). This fixes a race condition in async mode, where diffing behaviour could be changed mid-execution if a concurrent usage of the sameDiffinstances overwrote itsoptions.#518
linedelimitersno longer exists on patch objects; instead, when a patch with Windows-style CRLF line endings is parsed, the lines inlineswill end with\r. There is now a newautoConvertLineEndingsoption, on by default, which makes it so that when a patch with Windows-style line endings is applied to a source file with Unix style line endings, the patch gets autoconverted to use Unix-style line endings, and when a patch with Unix-style line endings is applied to a source file with Windows-style line endings, it gets autoconverted to use Windows-style line endings.#521 the
callbackoption is now supported bystructuredPatch,createPatch, andcreateTwoFilesPatch#529
parsePatchcan now parse patches where lines starting with--or++are deleted/inserted; previously, there were edge cases where the parser would choke on valid patches or give wrong results.#530 Added
ignoreNewlineAtEofoption todiffLines#533
applyPatchuses an entirely new algorithm for fuzzy matching. Differences between the old and new algorithm are as follows:fuzzFactornow indicates the maximum Levenshtein distance that there can be between the context shown in a hunk and the actual file content at a location where we try to apply the hunk. (Previously, it represented a maximum Hamming distance, meaning that a single insertion or deletion in the source file could stop a hunk from applying even with a highfuzzFactor.)applyPatchwould apply the hunk anyway and delete a completely different line.)#535 A bug in patch generation functions is now fixed that would sometimes previously cause
\ No newline at end of fileto appear in the wrong place in the generated patch, resulting in the patch being invalid. These invalid patches can also no longer be applied successfully withapplyPatch. (It was already the case that tools other than jsdiff, like GNUpatch, would consider them malformed and refuse to apply them; versions of jsdiff with this fix now do the same thing if you ask them to apply a malformed patch emitted by jsdiff v5.)#535 Passing
newlineIsToken: trueto patch-generation functions is no longer allowed. (Passing it todiffLinesis still supported - it's only functions likecreatePatchwhere passingnewlineIsTokenis now an error.) Allowing it to be passed never really made sense, since in cases where the option had any effect on the output at all, the effect tended to be causing a garbled patch to be created that couldn't actually be applied to the source file.#539
diffWordsnow takes an optionalintlSegmenteroption which should be anIntl.Segmenterwith word-level granularity. This provides better tokenization of text into words than the default behaviour, even for English but especially for some other languages for which the default behaviour is poor.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.