[{"data":1,"prerenderedAt":757},["ShallowReactive",2],{"navigation_docs":3,"-reference-github-action":239,"-reference-github-action-surround":752},[4,29,94,114,184],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"icon":6,"path":96,"stem":97,"children":98,"page":6},"Concepts","\u002Fconcepts","3.concepts",[99,104,109],{"title":100,"path":101,"stem":102,"icon":103},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":105,"path":106,"stem":107,"icon":108},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":110,"path":111,"stem":112,"icon":113},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":115,"icon":6,"path":116,"stem":117,"children":118,"page":6},"Reference","\u002Freference","4.reference",[119,124,129,134,171,176,180],{"title":120,"path":121,"stem":122,"icon":123},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":125,"path":126,"stem":127,"icon":128},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":130,"path":131,"stem":132,"icon":133},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":135,"icon":6,"path":136,"stem":137,"children":138},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[139,141,146,151,156,161,166],{"title":135,"path":136,"stem":137,"icon":140},"i-lucide-file-chart-column",{"title":142,"path":143,"stem":144,"icon":145},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":147,"path":148,"stem":149,"icon":150},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":152,"path":153,"stem":154,"icon":155},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":157,"path":158,"stem":159,"icon":160},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":162,"path":163,"stem":164,"icon":165},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":167,"path":168,"stem":169,"icon":170},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":172,"path":173,"stem":174,"icon":175},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":177,"path":178,"stem":179,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":181,"path":182,"stem":183,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":185,"icon":6,"path":186,"stem":187,"children":188,"page":6},"Project","\u002Fproject","5.project",[189,194,199,204,229,234],{"title":190,"path":191,"stem":192,"icon":193},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":195,"path":196,"stem":197,"icon":198},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":200,"path":201,"stem":202,"icon":203},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":205,"icon":6,"path":206,"stem":207,"children":208},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[209,211,216,220,225],{"title":205,"path":206,"stem":207,"icon":210},"i-lucide-gauge",{"title":212,"path":213,"stem":214,"icon":215},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":217,"path":218,"stem":219,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":221,"path":222,"stem":223,"icon":224},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":226,"path":227,"stem":228,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":230,"path":231,"stem":232,"icon":233},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":235,"path":236,"stem":237,"icon":238},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"id":240,"title":177,"body":241,"description":745,"extension":746,"links":747,"meta":748,"navigation":749,"path":178,"seo":750,"stem":179,"__hash__":751},"docs\u002F4.reference\u002F6.github-action.md",{"type":242,"value":243,"toc":741},"minimark",[244,261,312,317,630,634,727,737],[245,246,247,251,252,256,257,260],"p",{},[248,249,250],"code",{},"kucherenko\u002Fjscpd@v5"," runs the same binary as the command line, so every input below is a ",[253,254,255],"a",{"href":121},"CLI option"," with the same name. The ",[253,258,259],{"href":36},"CI guide"," shows the workflows; this page is the list.",[262,263,269],"pre",{"className":264,"code":265,"filename":266,"language":267,"meta":268,"style":268},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","- uses: kucherenko\u002Fjscpd@v5\n  with:\n    threshold: 3\n",".github\u002Fworkflows\u002Fjscpd.yml","yaml","",[248,270,271,291,300],{"__ignoreMap":268},[272,273,276,280,284,287],"span",{"class":274,"line":275},"line",1,[272,277,279],{"class":278},"sMK4o","-",[272,281,283],{"class":282},"swJcz"," uses",[272,285,286],{"class":278},":",[272,288,290],{"class":289},"sfazB"," kucherenko\u002Fjscpd@v5\n",[272,292,294,297],{"class":274,"line":293},2,[272,295,296],{"class":282},"  with",[272,298,299],{"class":278},":\n",[272,301,303,306,308],{"class":274,"line":302},3,[272,304,305],{"class":282},"    threshold",[272,307,286],{"class":278},[272,309,311],{"class":310},"sbssI"," 3\n",[313,314,316],"h2",{"id":315},"inputs","Inputs",[318,319,320,336],"table",{},[321,322,323],"thead",{},[324,325,326,330,333],"tr",{},[327,328,329],"th",{},"Input",[327,331,332],{},"What it does",[327,334,335],{},"Default",[337,338,339,355,368,383,398,410,425,437,449,461,476,491,503,515,530,542,556,568,580,594,606,618],"tbody",{},[324,340,341,347,350],{},[342,343,344],"td",{},[248,345,346],{},"path",[342,348,349],{},"Paths to scan for duplicates (space-separated)",[342,351,352],{},[248,353,354],{},".",[324,356,357,362,365],{},[342,358,359],{},[248,360,361],{},"config",[342,363,364],{},"Path to .jscpd.json config file",[342,366,367],{},"—",[324,369,370,375,378],{},[342,371,372],{},[248,373,374],{},"min-tokens",[342,376,377],{},"Minimum number of tokens to consider a duplicate",[342,379,380],{},[248,381,382],{},"50",[324,384,385,390,393],{},[342,386,387],{},[248,388,389],{},"min-lines",[342,391,392],{},"Minimum number of lines to consider a duplicate",[342,394,395],{},[248,396,397],{},"5",[324,399,400,405,408],{},[342,401,402],{},[248,403,404],{},"max-lines",[342,406,407],{},"Maximum lines per block to consider",[342,409,367],{},[324,411,412,417,420],{},[342,413,414],{},[248,415,416],{},"mode",[342,418,419],{},"Detection mode: mild, weak, or strict",[342,421,422],{},[248,423,424],{},"mild",[324,426,427,432,435],{},[342,428,429],{},[248,430,431],{},"format",[342,433,434],{},"Comma-separated list of file extensions\u002Fformats to check",[342,436,367],{},[324,438,439,444,447],{},[342,440,441],{},[248,442,443],{},"ignore",[342,445,446],{},"Comma-separated glob patterns to ignore",[342,448,367],{},[324,450,451,456,459],{},[342,452,453],{},[248,454,455],{},"ignore-pattern",[342,457,458],{},"Comma-separated regex patterns to skip matching tokens",[342,460,367],{},[324,462,463,468,471],{},[342,464,465],{},[248,466,467],{},"reporters",[342,469,470],{},"Comma-separated list of reporters (console, json, xml, csv, html, markdown, badge, sarif, ai, xcode, console-full, threshold, silent)",[342,472,473],{},[248,474,475],{},"console",[324,477,478,483,486],{},[342,479,480],{},[248,481,482],{},"output",[342,484,485],{},"Output directory for file reporters",[342,487,488],{},[248,489,490],{},"report",[324,492,493,498,501],{},[342,494,495],{},[248,496,497],{},"threshold",[342,499,500],{},"Maximum duplication percentage before exit 1",[342,502,367],{},[324,504,505,510,513],{},[342,506,507],{},[248,508,509],{},"baseline",[342,511,512],{},"Path to a clone baseline file (e.g. .jscpd-baseline.json): clones absent from it are reported as new",[342,514,367],{},[324,516,517,522,525],{},[342,518,519],{},[248,520,521],{},"update-baseline",[342,523,524],{},"Rewrite the baseline file from the current run (requires baseline)",[342,526,527],{},[248,528,529],{},"false",[324,531,532,537,540],{},[342,533,534],{},[248,535,536],{},"fail-on-new-clones",[342,538,539],{},"Exit 1 when new clones are found (requires baseline or baseline-from-ref). Use 'true' for zero tolerance, or an integer N to allow up to N new clones",[342,541,367],{},[324,543,544,549,552],{},[342,545,546],{},[248,547,548],{},"fail-on-empty",[342,550,551],{},"Exit 1 when the scan analyzes no files: the paths exist but nothing matched the format, ignore or pattern filters",[342,553,554],{},[248,555,529],{},[324,557,558,563,566],{},[342,559,560],{},[248,561,562],{},"baseline-from-ref",[342,564,565],{},"Compare against an ephemeral baseline built from a git ref's tree (e.g. origin\u002Fmain); needs the ref fetched (fetch-depth: 0). Conflicts with baseline",[342,567,367],{},[324,569,570,575,578],{},[342,571,572],{},[248,573,574],{},"history",[342,576,577],{},"Duplication trend over git history: scan every commit in this range (e.g. v5.0.0..HEAD) and print a chart and table in the log; needs the range fetched (fetch-depth: 0)",[342,579,367],{},[324,581,582,587,590],{},[342,583,584],{},[248,585,586],{},"blame",[342,588,589],{},"Enrich clones with git blame data",[342,591,592],{},[248,593,529],{},[324,595,596,601,604],{},[342,597,598],{},[248,599,600],{},"exit-code",[342,602,603],{},"Exit with code when duplicates found. Use 'true' for default code 1, or an integer like '2' for a custom code",[342,605,367],{},[324,607,608,613,616],{},[342,609,610],{},[248,611,612],{},"pattern",[342,614,615],{},"Glob pattern to find files to scan",[342,617,367],{},[324,619,620,625,628],{},[342,621,622],{},[248,623,624],{},"max-size",[342,626,627],{},"\"Skip files larger than SI",[342,629,367],{},[313,631,633],{"id":632},"outputs","Outputs",[318,635,636,646],{},[321,637,638],{},[324,639,640,643],{},[327,641,642],{},"Output",[327,644,645],{},"What it holds",[337,647,648,658,668,678,688,698,708,718],{},[324,649,650,655],{},[342,651,652],{},[248,653,654],{},"duplication-percentage",[342,656,657],{},"Percentage of duplicated code found",[324,659,660,665],{},[342,661,662],{},[248,663,664],{},"clones-found",[342,666,667],{},"Number of clone pairs found",[324,669,670,675],{},[342,671,672],{},[248,673,674],{},"duplicated-lines",[342,676,677],{},"Number of duplicated lines",[324,679,680,685],{},[342,681,682],{},[248,683,684],{},"total-lines",[342,686,687],{},"Total number of lines scanned",[324,689,690,695],{},[342,691,692],{},[248,693,694],{},"files-count",[342,696,697],{},"Number of source files scanned",[324,699,700,705],{},[342,701,702],{},[248,703,704],{},"report-path",[342,706,707],{},"Path to the output directory",[324,709,710,715],{},[342,711,712],{},[248,713,714],{},"sarif-path",[342,716,717],{},"Path to the SARIF report file (empty if not generated)",[324,719,720,724],{},[342,721,722],{},[248,723,600],{},[342,725,726],{},"Exit code from jscpd (non-zero if threshold exceeded or --exit-code used)",[245,728,729,730,733,734,354],{},"Read an output in a later step as ",[248,731,732],{},"${{ steps.\u003Cid>.outputs.\u003Cname> }}"," after giving the jscpd step an ",[248,735,736],{},"id",[738,739,740],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":268,"searchDepth":293,"depth":293,"links":742},[743,744],{"id":315,"depth":293,"text":316},{"id":632,"depth":293,"text":633},"The inputs and outputs of kucherenko\u002Fjscpd@v5, generated from the action.yml of jscpd 5.4.0.","md",null,{},{"icon":38},{"title":177,"description":745},"6VLH93OpE7peQy23iBD7b32t1a1nvsy9ysxYOM8iwAQ",[753,755],{"title":172,"path":173,"stem":174,"description":754,"icon":175,"children":-1},"The 224 formats jscpd 5.4.0 tokenizes, with the extensions and shebangs that select them, generated from the FORMATS.md of the release.",{"title":181,"path":182,"stem":183,"description":756,"icon":68,"children":-1},"The library crates behind the jscpd binary, what each one exposes, a compiling example for each, and their current versions.",1791302987112]