Repository navigation
chore(deps): update npm dependencies updates - #185
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/npm-dependencies-updates
branch
2 times, most recently
from
October 20, 2026 12:55
0b3ea62 to
7163e1f
Compare
renovate
Bot
force-pushed
the
renovate/npm-dependencies-updates
branch
from
October 20, 2026 16:54
7163e1f to
8b7bd7b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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:
16.1.*→16.2.*18.0.5→18.0.85.4.0→5.4.221.1.0→21.1.1Release Notes
cypress-io/cypress (cypress)
v16.2.0Compare Source
Changelog: https://docs.cypress.io/app/references/changelog#16-2-0
motdotla/dotenv (dotenv)
v18.0.8Compare Source
Changed
v18.0.7Compare Source
Changed
quiet: trueas null rather than falsey (#1070)DOTENV_QUIETsetting in.envfile (#1071)v18.0.6Compare Source
Changed
parseBooleannot Boolean() to fix override (#1069)kucherenko/jscpd (jscpd)
v5.4.2Compare Source
The post What's new in jscpd 5.4.2 shows the new features with commands and real output.
New Features
Boundaries keep the code of a module inside it. The new
boundarieskey of the config file lists rules. A rule names the code it protects (code: a folder, a file, a glob, or a method aspath#name), where copies of it must not show up (notIn, or every file outsidecodewhen it is left out) and where they may after all (allow). Every clone run checks the rules, and a copy of protected code outside its boundary fails the run with exit code 1. Import linters miss such copies, because a copied function imports nothing.thresholds. Token clones find copy-paste, the structure comparison of--similarityfinds an edited copy, and the--semanticmodel finds the same logic written again, often in another language.disableturns kinds off by their--kindnames. Without a downloaded model, jscpd prints a warning and checks the rules without the semantic search.boundaries. Baselines and--changeddon't apply to violations yet, and SARIF, the language server and the MCP server don't report them.fixtures/boundaries-demois a small shop whose web app copies the backend's pricing and loan code. (#1225, #1227)--ignore-identifierspairs a name with one name. Every name used to match every other name, sox = x + x * xwas a clone ofd = a + b * c, although its data flows another way. Now a name on one side has to stand for the same name on the other side every time, and two names can't stand for one, as in Baker's parameterized matching and NiCad's consistent renaming. On 24 projects in 11 languages, 6,942 of the 14,501 renamed clones that the old matching reported had no such mapping.--min-tokenstokens or more..or?., and after->in C, C++, PHP and Perl, is another name than a local of the same text. A constructor that setsthis.url = urlstill matches its copy that setsthis.url = link(#1220).--ignore-identifiersand--ignore-identifiers=consistentgive the new matching,--ignore-identifiers=blindthe old one. The config takes"ignoreIdentifiers": true,"consistent"or"blind", and the Action input takesconsistentorblind. The value goes after=only, so--ignore-identifiers src/still scanssrc/.fixtures/type2-demohas theconsistentandmembersexamples. (#1217, #1218)--similaritypairs a name with one name too. The fingerprint of a subtree now records how its names repeat, sox = x + x * xno longer scores 1.0 againstd = a + b * c, and a renamed copy still does. Members, labels such as keyword arguments and object keys, and types each have names of their own, soself.url = urlstill matchesself.url = link. A function's own name matches any name. Kotlin'strue,falseandnulland Clojure'strue,falseandnilare literals now. On the same 24 projects, 15 of 23,530 pairs fell below 0.8, and runs take 2 to 9% longer.--ignore-identifiers=blindbrings back the old scores and also turns on renamed token clones.fixtures/similarity-demo/namesscores a renamed copy at 1.00 and a mirrored function at 0.74. (#1219)--historytracks the health score, and a bare--historywalks the last 30 commits. Every commit of the series gets the score thatjscpd --healthgives its tree. The console draws a health chart under the duplication chart and adds HEALTH and CHANGE columns, and every point of the JSON report hashealth.--healthand--dashboardtake--historynow: the badge or the dashboard comes first, then the series, in the markdown and html reports too.jscpd --historyused to fail with "a value is required". Without a value the flag takes the config'shistory, or else the newest 30 commits of HEAD (--history-limit).--history-every Nspaces them N commits apart, and the Action'shistoryinput takestrue.--ignoreand--patternsee its files at their working-tree paths, and the checkout runs none of the repository's hooks. A walk that stops at the edge of a shallow clone prints a warning that names the commit.jscpd knows 73 more formats by extension, and files by name. 94 of 224 formats had no built-in extension, a gap that came from v4, so
jscpd .skipped Dockerfiles, Makefiles,go.mod, Elixir and Nix files unless you mapped them. The new extensions come from GitHub Linguist, and a table of file names mapsDockerfile,Containerfile,Makefile,go.mod,CMakeLists.txt,Gemfile,Jenkinsfileand others. Existing formats got more suffixes, such as.zsh,.jsonc,.tfvarsand.sbt. A Markdown fence such as```dockerfiletakes its format from the same table, and--formats-extsand--formats-namesstill win over every built-in mapping.FORMATS.mdlists the file names too. (#1174, #1192)Changes
jscpd .scans more files. On 22 repositories the new file associations picked up 1 to 5 more files each, mostly Dockerfiles,.editorconfig,.jsonc, Makefiles andgo.mod, and jscpd scans the.rstfiles of Sphinx docs like Markdown. The duplication percentage can move, and a--thresholdgate can fail. (#1192)--ignore-identifiersreports fewer renamed clones, and some of them are shorter. A baseline that 5.4 made with--ignore-identifiersis a blind one. Keep--ignore-identifiers=blindwith it or update the baseline, or--fail-on-new-clonesreports the cut clones as new. (#1218)--historywalks first parents. A merged branch counts as its merge commit, so a range across merged branches gives fewer points than before. jscpd builds a series only when a reporter shows it (console, console-full, ai or json, and markdown or html with--healthor--dashboard), so a badge-only--healthjob no longer walks the range. The ai lines read37be780 2026-08-08 2/1/47.6 +47.6 health 72 -2now, and a wrong health or dead-code option no longer fails a clone run. (#1199)Bug Fixes
jscpd aborted on a Markdown page whose front matter ran into a code fence. A page that opens with a horizontal rule and later shows a Python stub had front matter from the rule down to the stub's
..., across the fence, and the scan panicked:jscpdexited with 134, andjscpd --mcpandjscpd --lspdied. A---on the first line now opens front matter only when the next line isn't blank, as Pandoc reads it, and only a---or...line before the first code fence closes it. The frontmatter of an Astro component follows the same rule. A page of code fences that never close used to take quadratic time, 3.9 seconds for 100 KB, and takes 0.04 seconds now. (#1223, #1226)A Razor view was read out of order. jscpd tokenized the HTML of a whole view and then the C# of its blocks, so a clone across that seam ended before it started: release builds printed ranges such as
[48:48 - 5:35], and debug builds panicked. A view is now one stream in the order of its text. Two identical views count as duplicated from the first line to the last, and markup in an@ifor@foreachblock matches the same markup outside one. (#1221, #1222)The MCP server's
check_duplicationnever matched a Vue, Svelte or Astro snippet. It tokenized a snippet as one stream, while a scan splits a component into its blocks and a Markdown file into its prose and fences. A component snippet met only the components inside Markdown fences, by meaning it found nothing, and the fences of a Markdown snippet matched nothing either. The server now splits a snippet the way a scan splits a file of its format. Each match hasformatandlines, and the note names every block too short to match. #1228 also fixed how jscpd counts the duplicated lines of a clone whose two fragments swap places, so the statistics of a--cross-formatsrun can change a little. (#1224, #1228, #1229)--historyfailed when git'slog.showSignaturewas on. git printed the signature check of each signed commit before the commit, and jscpd took that line for a commit hash. jscpd now passes--no-show-signatureand reads only lines that start with a commit hash. Reported with an exact reproduction by @vitorcsbrito. (#1195, #1196)--comparepaired a function with every near-best lookalike. It took the rule of--semantic, where a group of near-equal functions all pair with each other, but in a port a function has one counterpart. A pair now stays only when it is the best match of one of its two functions, and a near tie goes to the partner in a file of the same name. On the analysis modules of Lucene and Lucene.NET the pairs went from 2,219 to 1,392, and the share of pairs between files of the same name from 46% to 73%. Analysis and numbers by @MysterionRise. (#1162, #1194)--semanticreported a page and the component it renders as a clone. It skips a pair when one function calls the other, but it didn't count a JSX element such as<EditUserForm />as a call. It does now, and so does the call graph of--compare. Reported by @Rosenblad, fixed by @cristianchiriac. (#1210, #1211)Reports named a clone in a Markdown block or a component like
guide.md:markup. The VS Code extension opened that name as a file and failed. The JSONname, the language server'sjscpd/clonesandjscpd/semantic, the XMLpathand the xcode location now name the file, and the JSON keeps the block's language informat. The console, ai and HTML reports still name the block. (#1200)Every repository counted the hook samples in
.git/hooks. The walk takes hidden files, so it went into.gittoo, and the 9 bash files and 1 perl file thatgit initwrites counted in the file count, the line totals and the health score. jscpd now skips.gitfolders. (#1193)Other
--historythe dead-code report without the compiler's Rust findings (#1199).Dependencies
Thank You ❤️
--ignore-identifiers, with numbers from Django and scikit-learn (#1217)--compareon Lucene and Lucene.NET (#1162)--semantic(#1211), and @Rosenblad for the report (#1210)log.showSignaturereport and its reproduction (#1195)Published Packages
basta@0.3.2on crates.iocpd-core@0.1.22on crates.iocpd-finder@0.1.22on crates.iocpd-reporter@0.1.23on crates.iocpd-semantic@0.1.3on crates.iocpd-similarity@0.1.1on crates.iocpd-tokenizer@0.1.21on crates.iojscpd@5.4.2on crates.iocpd@5.4.2on npmjscpd@5.4.2on npmjscpd-darwin-arm64@5.4.2on npmjscpd-darwin-x64@5.4.2on npmjscpd-linux-x64-gnu@5.4.2on npmjscpd-linux-arm64-gnu@5.4.2on npmjscpd-linux-x64-musl@5.4.2on npmjscpd-linux-arm64-musl@5.4.2on npmjscpd-windows-x64-msvc@5.4.2on npmjscpd-windows-arm64-msvc@5.4.2on npmjscpd==5.4.2on PyPIVerify
Archives are signed with Sigstore (keyless,
<asset>.sigstore.json)and carry SLSA build provenance. Replace
jscpd-linux-x64-gnu.tar.gzwith your asset:cosign verify-blob \ --bundle jscpd-linux-x64-gnu.tar.gz.sigstore.json \ --certificate-identity-regexp '^https://github\.com/kucherenko/jscpd/' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ jscpd-linux-x64-gnu.tar.gz gh attestation verify jscpd-linux-x64-gnu.tar.gz --repo kucherenko/jscpd sha256sum --check --ignore-missing checksums.txtv5.4.1Compare Source
New Features
--similaritycompares the structure of functions in 15 languages. jscpd parses every function and method and normalizes its syntax tree: the names of the functions it calls and its operators stay, local names, field names and literals become markers, and comments and the parentheses around one expression drop out. Every subtree of that tree is a fingerprint, and two functions score the Jaccard index of their two fingerprint sets, so a renamed copy scores 1 and an edited statement lowers the score.mod testsare left out. Code betweenjscpd:ignore-startandjscpd:ignore-end, or matched by--ignore-pattern, adds nothing to a function (#1144).--similarityalone compares at 0.8.--min-nodes(config keyminNodes, 20 by default) sets the smallest normalized tree that takes part,--min-linesapplies as before and--min-tokensdoes not. The JSON report gives the node count of both functions asnodes.fixtures/similarity-demohas a runnable example in every language. (#1129, #1132, #1134, #1136, #1139, #1147, #1148, #1149, #1150, #1152, #1155, #1138, #1141, #1142, #1143, #1145, #1146, #1156)An
ednreporter.-r ednwritesjscpd-report.ednwith{:candidates [...] :clones [...]}. The candidates are every pair--similarityfound, most similar first, with their score, language, both locations and node counts, also the pairs a token clone already reports. The clones are the ones the other passes found, with their kind, method and score. (#1151, #1153, #1156)--changedreports the clones of the files you are working on. The changed files are the onesgit statuslists: staged, unstaged and untracked files, and a renamed file under its new name. jscpd still scans every file and reports a clone when one of its fragments is in a changed file, so a new file that copies an unchanged one shows up..jscpd-baseline.jsonat the repository root, or to the--baselinefile, with the commit and a hash of the scan paths and options. Later runs read it and mark the clones HEAD did not have as[NEW], so--fail-on-new-clonesworks with it. jscpd builds the file again after a commit or for other paths or options. A baseline file without a commit, such as one--update-baselinewrote, is used as it is.--changed-onlyscans the changed files alone, and they match only one another.fixtures/changed-demowalks through five steps. (#1154, #1172)--report-namesets the base name of the report files. Linter aggregators such as MegaLinter run several tools into one reports folder, and two jscpd runs there overwrote each other'sjscpd-report.json.--report-name megalinter-jscpd(config keyreportName) names thejson,xml,csv,html,markdown,sarifandednreports, and the GitHub Action takes it as thereport-nameinput. The badge, OpenMetrics and CodeClimate files keep their names. The name must be a plain file name: a path, an extension or an empty name is an error. Contributed by @MannXo. (#1015, #1058)The MCP server finds every type of clone and compares folders. Every tool takes
kinds:exact,renamed,similarandsemantic, ortype1totype4. Without it, a tool reports whatjscpdreports with the server's options.compare_folders(left, right)returns the JSON report of--comparefor two folders. The server speaks the MCP revision 2026-07-28, and clients of the older revisions keep working.check_duplicationnow finds every copy of a snippet, where it used to match one of two, and--mcpno longer ignores--semantic. (#1135, #1137)Changes
--similarityscores differ from 5.4.0. The method is new, so a pair that scored 0.85 before can score lower now. Refresh a--thresholdor a baseline that was set on the old results.--similarity 1now reports functions with the same structure; up to 5.4.0 a ratio of 1 turned the search off, and jscpd prints a warning that says so. The options that the method replaced never reached a release. (#1156)Bug Fixes
--semanticand--comparefound functions namedifin C, C++ and C# code. Around#ifand#ifdef, the grammars readelse if (…) { }as a function namedif, orwhileorawait, and everyif (in the scan counted as a call to it, so in--compareone such branch could collect thousands of callers. jscpd now drops a function whose type is the keywordelse. A word such asif,whileorcatchbefore a parenthesis counts as a call only as a member, as inpromise.catch(f). Reported by @MysterionRise, fixed by @mvanhorn. (#1163, #1188)Three
--comparefixes found on Apache Lucene and Lucene.NET, all by @MysterionRise:assertEqualsin Lucene's benchmark code took all 6,127 calls to the name, 6,126 of them from tests. (#1165)Testssits in its dotted name, as inLucene.Net.Tests.Analysis.Common. Before, 6,736 functions in 771 files of such projects counted as code. (#1167)The
--comparereports disagreed. The console and the HTML map now round a share the same way, so 60 of 147 functions read 41% in both. A Tests block appears only when a side has a test that counts, and a declaration without a body no longer counts as a function. (#1130)--dead-codereported an import used only in a TSDoc link as unused.{@link X},{@linkcode X}and{@linkplain X}now count as uses ofX, as TypeScript counts them, and in JavaScript files the JSDoc types of@param,@returns,@typeand the like count too. A name in the docs credits the import only, so a function that only a link names is still reported. (#1170, #1171)--ignore-patterndropped the wrong tokens in code blocks. jscpd computed the ranges on the host file but tokenized Markdown fences, component scripts and Razor blocks from the block's own offsets. The ranges now move to the block. (#1144)git commands run from a hook acted on the hook's repository. jscpd's git subprocesses now drop the variables git exports to hooks, such as
GIT_DIRandGIT_INDEX_FILE; before,--baseline-from-refin a pre-commit hook wrote the base tree into the commit's index. A--historyrange or a--baseline-from-refref that starts with-is refused, so a scanned repository's config can no longer pass git an option such as--output=<file>. The worktree cleanup no longer prunes the user's other worktrees, and an API key that an embeddings API echoes in an error is redacted. (#1169)The Nix flake warned about
stdenv.isDarwin. It usesstdenv.hostPlatform.isDarwinnow. Contributed by @mlavrinenko. (#1133)Other
cargo publishwhile the crates.io index catches up (#1123), and thecompare-codebasesskill keeps vendored and build folders out of a comparison (#1124).Dependencies
nilas a node of its own, and--similaritytreats it as a literal.Thank You ❤️
--similarity, theednreporter and--changed: #1129, #1131, #1132, #1134, #1136, #1139, #1147, #1148, #1149, #1150, #1151, #1152, #1153, #1154--report-name(#1058)--comparefixes (#1165, #1166, #1167) and the report of phantom functions (#1163)Published Packages
basta@0.3.1on crates.iocpd-core@0.1.21on crates.iocpd-finder@0.1.21on crates.iocpd-reporter@0.1.22on crates.iocpd-semantic@0.1.2on crates.iocpd-similarity@0.1.0on crates.iocpd-tokenizer@0.1.20on crates.iojscpd@5.4.1on crates.iocpd@5.4.1on npmjscpd@5.4.1on npmjscpd-darwin-arm64@5.4.1on npmjscpd-darwin-x64@5.4.1on npmjscpd-linux-x64-gnu@5.4.1on npmjscpd-linux-arm64-gnu@5.4.1on npmjscpd-linux-x64-musl@5.4.1on npmjscpd-linux-arm64-musl@5.4.1on npmjscpd-windows-x64-msvc@5.4.1on npmjscpd-windows-arm64-msvc@5.4.1on npmjscpd==5.4.1on PyPIVerify
Archives are signed with Sigstore (keyless,
<asset>.sigstore.json)and carry SLSA build provenance. Replace
jscpd-linux-x64-gnu.tar.gzwith your asset:cosign verify-blob \ --bundle jscpd-linux-x64-gnu.tar.gz.sigstore.json \ --certificate-identity-regexp '^https://github\.com/kucherenko/jscpd/' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ jscpd-linux-x64-gnu.tar.gz gh attestation verify jscpd-linux-x64-gnu.tar.gz --repo kucherenko/jscpd sha256sum --check --ignore-missing checksums.txtrelease-it/release-it (release-it)
v21.1.1Compare Source
bf2a3d8) - thanks @adamhl8!37898f1)7bd73af)5336543)Configuration
📅 Schedule: (in timezone Europe/Paris)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.