[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"navigation_docs":3,"-concepts-health-score":239,"-concepts-health-score-surround":874},[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":110,"body":241,"description":865,"extension":866,"links":867,"meta":868,"navigation":869,"path":111,"seo":870,"stem":112,"__hash__":873},"docs\u002F3.concepts\u002F3.health-score.md",{"type":242,"value":243,"toc":853},"minimark",[244,248,325,333,338,341,356,369,373,376,433,437,440,450,462,507,511,517,520,565,574,578,581,587,590,601,643,647,653,659,666,724,733,736,740,770,789,793,819,823],[245,246,247],"p",{},"One number for a codebase is only useful when you know what moves it. The health score is built so that every point has a cause you can find in the code: a share of lines went up or down. Knowing the steps tells you which pass pays off first and why a small project with one dead file still scores in the seventies.",[249,250,251,267],"table",{},[252,253,254],"thead",{},[255,256,257,261,264],"tr",{},[258,259,260],"th",{},"Step",[258,262,263],{},"What happens",[258,265,266],{},"Constants",[268,269,270,281,292,303,314],"tbody",{},[255,271,272,276,279],{},[273,274,275],"td",{},"1. Count the code",[273,277,278],{},"Only code files count; prose, data and markup files are left out of every fraction",[273,280],{},[255,282,283,286,289],{},[273,284,285],{},"2. Measure three shares",[273,287,288],{},"Duplicated lines, dead lines and lines in complex files, each divided by the code lines, in percent",[273,290,291],{},"a file is complex from a complexity of 50",[255,293,294,297,300],{},[273,295,296],{},"3. Adjust for size",[273,298,299],{},"Each share is mixed with 2000 lines of a typical project",[273,301,302],{},"medians 3.5%, 3.1%, 20.9%; 2000 lines of prior",[255,304,305,308,311],{},[273,306,307],{},"4. Score each share",[273,309,310],{},"A half-life curve: 100 at zero, 50 at one half-life, 25 at two",[273,312,313],{},"half-lives 8.5%, 7.5%, 50%",[255,315,316,319,322],{},[273,317,318],{},"5. Combine",[273,320,321],{},"The weighted geometric mean of the sub-scores, then a grade and a size class",[273,323,324],{},"grades A from 85, B from 70, C from 55, D from 40",[245,326,327,328,332],{},"The JSON report of a ",[329,330,331],"code",{},"--health"," run carries every intermediate number, so you can check a score by hand. The constants are fixed in the release and do not follow a live sample, so a score only moves when your code does.",[334,335,337],"h2",{"id":336},"count-the-code","Count the code",[245,339,340],{},"Only code files count. Prose (Markdown, text), data (JSON, YAML, TOML, CSV, lock files) and markup (HTML, XML, SVG, CSS, templates) are left out of every calculation, on both sides of each fraction. A folder of copied JSON snapshots does not lower the score, and a long unique HTML page does not raise it.",[245,342,343,344,347,348,351,352,355],{},"A Vue, Svelte or Astro component is a code file. Its ",[329,345,346],{},"\u003Ctemplate>"," and ",[329,349,350],{},"\u003Cstyle>"," blocks are not counted as duplicated code, even when they repeat: the exclusion follows the clone's own format, so a style rule copied between two components stays out of the duplication share while the components themselves count in full. The console line names what it measured and, only when the project has files in that category, what it left out, such as ",[329,353,354],{},"5.4% in typescript (no text)",".",[245,357,358,359,368],{},"The worked example on this page is ",[360,361,365],"a",{"href":362,"rel":363},"https:\u002F\u002Fgithub.com\u002Fkucherenko\u002Fjscpd\u002Ftree\u002Fmaster\u002Ffixtures\u002Fdashboard-demo",[364],"nofollow",[329,366,367],{},"fixtures\u002Fdashboard-demo"," in the jscpd repository: seven files, of which five are TypeScript with 93 lines together. The README and the bash in its code fences are left out.",[334,370,372],{"id":371},"measure-three-shares","Measure three shares",[245,374,375],{},"Every dimension is a share of lines, in percent. Because they are shares, a project is not penalized for being large.",[249,377,378,391],{},[252,379,380],{},[255,381,382,385,388],{},[258,383,384],{},"Dimension",[258,386,387],{},"Share",[258,389,390],{},"In the example",[268,392,393,408,418],{},[255,394,395,398,405],{},[273,396,397],{},"Duplication",[273,399,400,401,404],{},"duplicated lines ÷ code lines, the same lines jscpd's own percentage counts, so the score and ",[329,402,403],{},"--threshold"," talk about one number",[273,406,407],{},"6 ÷ 93 = 6.5%",[255,409,410,412,415],{},[273,411,80],{},[273,413,414],{},"dead lines ÷ the lines the dead-code analysis could read",[273,416,417],{},"13 ÷ 93 = 14.0%",[255,419,420,423,430],{},[273,421,422],{},"Complexity",[273,424,425,426,429],{},"lines in complex files ÷ code lines. A file is complex from a complexity of 50 (",[329,427,428],{},"complexFile","). Complexity hurts when it piles up in a few files, and a mean would hide that",[273,431,432],{},"0 ÷ 93 = 0.0%",[334,434,436],{"id":435},"adjust-for-size","Adjust for size",[245,438,439],{},"In a small project one finding is a large share: a single clone in 300 lines is 5%. So each share is mixed with 2000 lines of a typical project before it is scored:",[441,442,448],"pre",{"className":443,"code":445,"language":446,"meta":447},[444],"language-text","adjusted = (share × lines + median × 2000) ÷ (lines + 2000)\n","text","",[329,449,445],{"__ignoreMap":447},[245,451,452,455,456,347,459,355],{},[329,453,454],{},"median"," is what a typical project shows for that dimension. At 300 lines the prior dominates. At 50,000 lines it no longer matters. The JSON report has both numbers, ",[329,457,458],{},"value",[329,460,461],{},"adjusted",[249,463,464,475],{},[252,465,466],{},[255,467,468,470,473],{},[258,469,384],{},[258,471,472],{},"Median",[258,474,390],{},[268,476,477,487,497],{},[255,478,479,481,484],{},[273,480,397],{},[273,482,483],{},"3.5%",[273,485,486],{},"(6.5 × 93 + 3.5 × 2000) ÷ 2093 = 3.6%",[255,488,489,491,494],{},[273,490,80],{},[273,492,493],{},"3.1%",[273,495,496],{},"(14.0 × 93 + 3.1 × 2000) ÷ 2093 = 3.6%",[255,498,499,501,504],{},[273,500,422],{},[273,502,503],{},"20.9% of lines in complex files",[273,505,506],{},"(0 × 93 + 20.9 × 2000) ÷ 2093 = 20.0%",[334,508,510],{"id":509},"score-each-share","Score each share",[441,512,515],{"className":513,"code":514,"language":446,"meta":447},[444],"score = 100 × 2^(−adjusted ÷ halfLife)\n",[329,516,514],{"__ignoreMap":447},[245,518,519],{},"The score is 100 at zero, 50 at one half-life and 25 at two. It has no cliff and no dead zone: every extra percent costs something, and no single percent costs everything.",[249,521,522,533],{},[252,523,524],{},[255,525,526,528,531],{},[258,527,384],{},[258,529,530],{},"Half-life",[258,532,390],{},[268,534,535,545,555],{},[255,536,537,539,542],{},[273,538,397],{},[273,540,541],{},"8.5%",[273,543,544],{},"100 × 2^(−3.6 ÷ 8.5) = 74.4",[255,546,547,549,552],{},[273,548,80],{},[273,550,551],{},"7.5%",[273,553,554],{},"100 × 2^(−3.6 ÷ 7.5) = 71.8",[255,556,557,559,562],{},[273,558,422],{},[273,560,561],{},"50%",[273,563,564],{},"100 × 2^(−20.0 ÷ 50) = 75.8",[245,566,567,568,573],{},"The medians and half-lives were chosen so that the median project scores 75 in each dimension. They come from 42 open source projects taken from GitHub trending, from 1.3K to 878K lines of code; 35 of them have JavaScript, TypeScript or Python and were used for dead code. jscpd.dev also publishes a rolling sample of trending projects, measured daily, at ",[360,569,572],{"href":570,"rel":571},"https:\u002F\u002Fjscpd.dev\u002Fhealth-corpus.json",[364],"jscpd.dev\u002Fhealth-corpus.json",". It is there for comparison; the constants do not follow it.",[334,575,577],{"id":576},"combine","Combine",[245,579,580],{},"The overall score is the weighted geometric mean of the sub-scores:",[441,582,585],{"className":583,"code":584,"language":446,"meta":447},[444],"score = exp( Σ weight × ln(subscore) ÷ Σ weight )\n",[329,586,584],{"__ignoreMap":447},[245,588,589],{},"A geometric mean does not let one good dimension hide a bad one. A project that is 40% dead code is not rescued by low duplication. A sub-score is never taken below 1 in this step, so one zero cannot erase every other dimension.",[245,591,592,593,596,597,600],{},"All weights are 1 unless you change them, with one exception. Dead code weighs as much as the share of the code it could read: in a project that is 30% TypeScript and 70% Go, the dead-code sub-score gets a weight of 0.3. Rust counts as read once you pass ",[329,594,595],{},"--rust-diagnostics",". When the languages it can read are under 5% of the code, dead code is left out and the badge says ",[329,598,599],{},"n\u002Fa"," with the reason. A dimension left out is named, never scored as perfect, and two scores are comparable only when they are built from the same dimensions.",[245,602,603,604,607,608,611,612,615,616,619,620,623,624,627,628,631,632,635,636,639,640,355],{},"Grades: ",[329,605,606],{},"A"," from 85, ",[329,609,610],{},"B"," from 70, ",[329,613,614],{},"C"," from 55, ",[329,617,618],{},"D"," from 40, then ",[329,621,622],{},"E",". The badge also shows a size class from the code lines: ",[329,625,626],{},"XS"," under 1K, ",[329,629,630],{},"S"," under 10K, ",[329,633,634],{},"M"," under 100K, ",[329,637,638],{},"L"," under 1M, then ",[329,641,642],{},"XL",[334,644,646],{"id":645},"the-worked-example","The worked example",[245,648,649,652],{},[329,650,651],{},"jscpd . --health"," on the demo prints:",[441,654,657],{"className":655,"code":656,"language":446,"meta":447},[444],"Health  B   74\u002F100  █████████████████▊░░░░░░  93 lines of code (XS)\n  duplication   74  ████████▉░░░  6.5% in typescript (no text)\n  dead code     72  ████████▋░░░  14.0%\n  complexity    76  █████████▏░░  0.0% in complex files\n",[329,658,656],{"__ignoreMap":447},[245,660,661,662,665],{},"The steps above in one table, with the numbers ",[329,663,664],{},"jscpd-health.json"," holds:",[249,667,668,687],{},[252,669,670],{},[255,671,672,674,680,684],{},[258,673],{},[258,675,676,677,679],{},"Share (",[329,678,458],{},")",[258,681,682],{},[329,683,461],{},[258,685,686],{},"Sub-score",[268,688,689,701,712],{},[255,690,691,693,695,698],{},[273,692,397],{},[273,694,407],{},[273,696,697],{},"3.6%",[273,699,700],{},"74.4",[255,702,703,705,707,709],{},[273,704,80],{},[273,706,417],{},[273,708,697],{},[273,710,711],{},"71.8",[255,713,714,716,718,721],{},[273,715,422],{},[273,717,432],{},[273,719,720],{},"20.0%",[273,722,723],{},"75.8",[245,725,726,727,729,730,732],{},"The overall score is the cube root of 74.4 × 71.8 × 75.8, which is 74.0, a ",[329,728,610],{},". The adjusted shares are shown rounded here, and jscpd rounds only at the end, which is why the two ",[329,731,697],{}," give different sub-scores.",[245,734,735],{},"The example also shows what the size adjustment does. 14% dead code would score 27 on its own. In a project of 93 lines that is thirteen lines, too few to judge by, so the score stays near the typical 75. The same 14% in a project of 50,000 lines scores about 28.",[334,737,739],{"id":738},"metrics-from-other-tools","Metrics from other tools",[245,741,742,743,746,747,750,751,753,754,757,758,761,762,765,766,769],{},"The score can take dimensions jscpd does not measure, such as test coverage or the result of a security scan, through a metrics file or the ",[329,744,745],{},"health"," object of the config. A metric is either a ready 0-100 ",[329,748,749],{},"score",", or a ",[329,752,458],{}," with the ",[329,755,756],{},"halfLife"," that turns it into one on the same curve as the built-in dimensions. With ",[329,759,760],{},"\"direction\": \"higher\""," the curve runs on the distance to ",[329,763,764],{},"max"," (100 unless you set it): with a half-life of 40, 81% coverage is 19 short of 100 and scores 72, and 60% scores 50. Each metric has a ",[329,767,768],{},"weight",", 1 unless you set it, and joins the geometric mean like any other dimension. Metrics are not adjusted for size, since a coverage percentage of a small project is as true as that of a large one.",[245,771,772,773,775,776,778,779,781,782,785,786,788],{},"The same object tunes the built-in dimensions: a ",[329,774,756],{}," and a ",[329,777,768],{}," per dimension, and ",[329,780,428],{}," for the bar a file has to reach to count as complex. A weight of ",[329,783,784],{},"0"," leaves a dimension out. ",[360,787,75],{"href":76}," shows the file, the command and the output.",[334,790,792],{"id":791},"what-it-does-not-measure","What it does not measure",[794,795,796,800,803,806,813],"ul",{},[797,798,799],"li",{},"Correctness, tests, security and performance, unless you feed them in as metrics.",[797,801,802],{},"Dead code in languages other than JavaScript, TypeScript, Python and compiler-checked Rust. In a project without them the score has two dimensions, which the badge says.",[797,804,805],{},"Complexity as a reviewer would judge it. The number is a cyclomatic estimate counted from the token stream, one path per function plus one per branch, and the dimension only counts how many lines sit in files above the bar.",[797,807,808,809,812],{},"Duplication in prose, data and markup, and clones the run's options do not look for. A run without ",[329,810,811],{},"--ignore-identifiers"," counts no renamed copies, so the score depends on the detection options as much as on the code.",[797,814,815,816,818],{},"Change over time. The score is a snapshot; ",[360,817,70],{"href":71}," tracks one of its dimensions across commits.",[334,820,822],{"id":821},"further-reading","Further reading",[794,824,825,836,841,846],{},[797,826,827,829,830,347,832,835],{},[360,828,75],{"href":76}," for running ",[329,831,331],{},[329,833,834],{},"--dashboard",", the reporters, the metrics file, the tuning keys and the exit codes.",[797,837,838,840],{},[360,839,80],{"href":81}," for what the dead-code dimension counts and how confident each finding is.",[797,842,843,845],{},[360,844,100],{"href":101}," for what the duplication share counts.",[797,847,848,852],{},[360,849,851],{"href":850},"\u002Ftrending","Trending"," for the score of GitHub trending repositories, measured daily.",{"title":447,"searchDepth":854,"depth":854,"links":855},2,[856,857,858,859,860,861,862,863,864],{"id":336,"depth":854,"text":337},{"id":371,"depth":854,"text":372},{"id":435,"depth":854,"text":436},{"id":509,"depth":854,"text":510},{"id":576,"depth":854,"text":577},{"id":645,"depth":854,"text":646},{"id":738,"depth":854,"text":739},{"id":791,"depth":854,"text":792},{"id":821,"depth":854,"text":822},"How jscpd turns duplication, dead code and complexity into one 0-100 score with a grade, step by step, with the constants and a worked example.","md",null,{},{"icon":113},{"title":871,"description":872},"How the jscpd health score is calculated","The health score counts code files, measures three shares, adjusts them for project size, scores each on a half-life curve and combines them with a geometric mean. The constants and a worked example.","7SZxKSoEHTrdx-s5jW0KNdfWrOdAP4_z21NESBxRqIg",[875,877],{"title":105,"path":106,"stem":107,"description":876,"icon":108,"children":-1},"How jscpd turns source code into language tokens before it looks for duplicates, and what that means for the clones you get.",{"title":120,"path":121,"stem":122,"description":878,"icon":123,"children":-1},"Every flag of the jscpd command line, with its config key and default, generated from the help text of jscpd 5.4.0.",1791302985537]