[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"navigation_docs":3,"landing":72},[4,30,51],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","/getting-started/configuration","1.getting-started/4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Supported Formats","/getting-started/supported-formats","1.getting-started/5.supported-formats","i-lucide-file-code",{"title":31,"path":32,"stem":33,"children":34,"icon":36},"Reporters","/reporters","2.reporters/1.index",[35,37,41,46],{"title":31,"path":32,"stem":33,"icon":36},"i-lucide-file-chart-column",{"title":38,"path":39,"stem":40,"icon":29},"HTML Reporter","/reporters/html","2.reporters/2.html",{"title":42,"path":43,"stem":44,"icon":45},"JSON Reporter","/reporters/json","2.reporters/3.json","i-lucide-braces",{"title":47,"path":48,"stem":49,"icon":50},"Badge Reporter","/reporters/badge","2.reporters/4.badge","i-lucide-award",{"title":52,"path":53,"stem":54,"children":55,"icon":57},"API","/api","3.api/1.index",[56,58,63,68],{"title":52,"path":53,"stem":54,"icon":57},"i-lucide-code",{"title":59,"path":60,"stem":61,"icon":62},"Core Package","/api/core","3.api/2.core","i-lucide-box",{"title":64,"path":65,"stem":66,"icon":67},"Server API","/api/server","3.api/3.server","i-lucide-server",{"title":69,"path":70,"stem":71,"icon":62},"MCP Server","/api/mcp-server","3.api/4.mcp-server",{"id":73,"title":74,"body":75,"description":74,"extension":791,"meta":792,"navigation":212,"path":793,"seo":794,"stem":797,"__hash__":798},"landing/index.md","",{"type":76,"value":77,"toc":789},"minimark",[78,244,411,667,741,786],[79,80,82,86,97,209,214],"u-page-hero",{"orientation":81},"horizontal",[83,84,85],"template",{"v-slot:title":74},"Copy/Paste Detector for Source Code",[83,87,88,92,93,96],{"v-slot:description":74},[89,90,91],"strong",{},"jscpd"," hunts down duplicated blocks across ",[89,94,95],{},"150+ languages"," — because life's too short to maintain the same bug in five different places.",[98,99,110,111,149,150,149,198],"div",{"className":100},[101,102,103,104,105,106,107,108,109],"relative","bg-gradient-to-br","from-primary/5","to-secondary/5","rounded-xl","p-6","border","border-primary/10","terminal-glow","\n  ",[98,112,118,119,118,142,110],{"className":113},[114,115,116,117],"flex","items-center","gap-3","mb-4","\n    ",[98,120,123,124,123,132,123,137,118],{"className":121},[114,122],"gap-2","\n      ",[98,125],{"className":126},[127,128,129,130,131],"w-3","h-3","rounded-full","bg-red-400","animate-pulse",[98,133],{"className":134,"style":136},[127,128,129,135,131],"bg-yellow-400","animation-delay: 0.2s",[98,138],{"className":139,"style":141},[127,128,129,140,131],"bg-green-400","animation-delay: 0.4s",[143,144,148],"span",{"className":145},[146,147],"text-sm","text-muted","Terminal","  ",[98,151,118,154,118,160,118,187,118,192,110],{"className":152},[153,146],"font-mono",[98,155,159],{"className":156},[147,157,158],"mb-2","typing-text","// Your code deserves better than copy/paste chaos",[98,161,123,163,123,168,123,173,123,179,123,183,118],{"className":162},[114,115,122,157],[143,164,167],{"className":165},[166],"text-green-400","$",[143,169,172],{"className":170},[171],"text-blue-400","npx",[143,174,91],{"className":175},[176,177,178],"text-primary","font-semibold","hero-gradient",[143,180,182],{"className":181},[147],"./src",[143,184],{"className":185},[186],"typing-cursor",[98,188,191],{"className":189,"style":190},[147],"animation: fadeIn 0.5s ease 1s both;","→ Finding duplicates...",[98,193,197],{"className":194,"style":196},[166,195],"mt-2","animation: fadeIn 0.5s ease 2s both;","✓ Scan complete: 3 clones found",[98,199,208],{"className":200,"style":207},[201,202,203,204,205,206],"absolute","-bottom-2","-right-2","text-6xl","opacity-10","animate-bounce","animation-duration: 3s;","🚀",[210,211,213],"style",{"scoped":212},true,"\n.relative {\n  position: relative;\n}\n.bg-gradient-to-br {\n  background: linear-gradient(to bottom right,\n    rgba(var(--ui-color-primary-rgb), 0.05),\n    rgba(var(--ui-color-secondary-rgb), 0.05));\n}\n.border {\n  border: 1px solid rgba(var(--ui-color-primary-rgb), 0.1);\n}\n",[83,215,216,225,233,239],{"v-slot:links":74},[217,218,224],"u-button",{"color":219,"size":220,"to":17,"className":221,"trailing-icon":223},"primary","xl",[222],"btn-glow","i-lucide-arrow-right","Hunt Duplicates",[217,226,232],{"color":227,"size":220,"to":228,"icon":229,"target":230,"variant":231},"neutral","https://github.com/kucherenko/jscpd","simple-icons-github","_blank","outline","Star on GitHub",[217,234,238],{"color":227,"size":220,"to":235,"icon":236,"target":230,"variant":237},"https://www.npmjs.com/package/jscpd","simple-icons-npm","ghost","npm",[217,240,243],{"color":227,"size":220,"to":241,"icon":242,"target":230,"variant":237},"https://opencollective.com/jscpd","i-lucide-heart","Sponsor the project",[245,246,247,253,256],"u-page-section",{},[83,248,249,250],{"v-slot:title":74},"Why Developers Love ",[143,251,91],{"className":252},[178],[83,254,255],{"v-slot:description":74},"Because clean code is happy code",[83,257,258,267,290,298,316,334,352,370,388],{"v-slot:features":74},[259,260,261,264],"u-page-feature",{"icon":50},[83,262,263],{"v-slot:title":74},"Since 2013",[83,265,266],{"v-slot:description":74},"A decade of refining the art of duplicate detection. Tried, tested, and trusted by thousands of teams worldwide.",[259,268,270,273],{"icon":269},"i-lucide-globe",[83,271,272],{"v-slot:title":74},"Speaks 150+ Languages",[83,274,275,279],{"v-slot:description":74},[276,277,278],"p",{},"JavaScript, Python, Java, Go, Rust, C++, TypeScript, Ruby... If you can write it, we can scan it. Even your YAML configs aren't safe.",[280,281,284,285],"a",{"href":27,"className":282},[283],"feature-card-link","\n  View supported formats\n  ",[143,286,289],{"className":287},[288],"link-arrow","→",[259,291,292,295],{"icon":19},[83,293,294],{"v-slot:title":74},"20M+ Downloads",[83,296,297],{"v-slot:description":74},"One of the most trusted tools in the ecosystem. Join developers who rely on jscpd every day.",[259,299,301,304],{"icon":300},"i-lucide-rocket",[83,302,303],{"v-slot:title":74},"Blazingly Fast™",[83,305,306,309],{"v-slot:description":74},[276,307,308],{},"Powered by the Rabin-Karp algorithm. Scans massive codebases before your coffee gets cold.",[280,310,312,313],{"href":12,"className":311},[283],"\n  Learn how it works\n  ",[143,314,289],{"className":315},[288],[259,317,319,322],{"icon":318},"i-lucide-terminal-square",[83,320,321],{"v-slot:title":74},"CLI-First Design",[83,323,324,327],{"v-slot:description":74},[276,325,326],{},"One command to rule them all. Works everywhere — your laptop, CI/CD, that ancient Jenkins server nobody wants to touch.",[280,328,330,331],{"href":17,"className":329},[283],"\n  Get started\n  ",[143,332,289],{"className":333},[288],[259,335,337,340],{"icon":336},"i-lucide-file-bar-chart",[83,338,339],{"v-slot:title":74},"Beautiful Reports",[83,341,342,345],{"v-slot:description":74},[276,343,344],{},"HTML, JSON, XML, badges for your README. Make technical debt visible (and slightly embarrassing).",[280,346,348,349],{"href":32,"className":347},[283],"\n  Explore reporters\n  ",[143,350,289],{"className":351},[288],[259,353,355,358],{"icon":354},"i-lucide-code-2",[83,356,357],{"v-slot:title":74},"Programmable",[83,359,360,363],{"v-slot:description":74},[276,361,362],{},"Full API for Node.js. Build your own duplicate-detection empire. We won't judge.",[280,364,366,367],{"href":53,"className":365},[283],"\n  View API documentation\n  ",[143,368,289],{"className":369},[288],[259,371,373,376],{"icon":372},"i-lucide-shield-check",[83,374,375],{"v-slot:title":74},"CI/CD Ready",[83,377,378,381],{"v-slot:description":74},[276,379,380],{},"Set a threshold, fail the build, save the day. Your future self will thank you.",[280,382,384,385],{"href":22,"className":383},[283],"\n  Configure thresholds\n  ",[143,386,289],{"className":387},[288],[259,389,391,399],{"icon":390},"i-lucide-bot",[83,392,393,394],{"v-slot:title":74},"AI-Ready (MCP) ",[143,395,398],{"className":396},[397],"duplicate-badge","New",[83,400,401,404],{"v-slot:description":74},[276,402,403],{},"Implements the Model Context Protocol. Let AI assistants like Claude check your code for duplications directly.",[280,405,407,408],{"href":70,"className":406},[283],"\n  Learn about MCP Server\n  ",[143,409,289],{"className":410},[288],[245,412,413,416,419],{"orientation":81},[83,414,415],{"v-slot:title":74},"See It In Action",[83,417,418],{"v-slot:description":74},"From chaos to clarity in seconds",[420,421,425],"pre",{"className":422,"code":423,"language":424,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Scan your source code\n$ jscpd ./src\n\nClone found (typescript):\n - src/utils.ts [10:1 - 25:3] (15 lines, 129 tokens)\n   src/helpers.ts [5:1 - 20:3]\n\nClone found (typescript):\n - src/utils.ts [45:5 - 62:2] (17 lines, 178 tokens)\n   src/components/Button.tsx [12:1 - 29:2]\n\nClone found (javascript):\n - src/hooks/useAuth.ts [1:1 - 34:2] (33 lines, 245 tokens)\n   src/hooks/useSession.ts [1:1 - 34:2]\n\n# ... more clones\n\nFound 90 clones.\nDetection time: 434.777ms\n","bash",[426,427,428,436,449,455,468,502,516,521,530,557,571,576,586,614,627,632,638,643,655],"code",{"__ignoreMap":74},[143,429,432],{"class":430,"line":431},"line",1,[143,433,435],{"class":434},"sHwdD","# Scan your source code\n",[143,437,439,442,446],{"class":430,"line":438},2,[143,440,167],{"class":441},"sBMFI",[143,443,445],{"class":444},"sfazB"," jscpd",[143,447,448],{"class":444}," ./src\n",[143,450,452],{"class":430,"line":451},3,[143,453,454],{"emptyLinePlaceholder":212},"\n",[143,456,458,461,464],{"class":430,"line":457},4,[143,459,460],{"class":441},"Clone",[143,462,463],{"class":444}," found",[143,465,467],{"class":466},"sTEyZ"," (typescript):\n",[143,469,471,474,477,480,483,486,489,492,496,499],{"class":430,"line":470},5,[143,472,473],{"class":441}," -",[143,475,476],{"class":444}," src/utils.ts",[143,478,479],{"class":466}," [10:1 ",[143,481,482],{"class":444},"-",[143,484,485],{"class":444}," 25:3]",[143,487,488],{"class":466}," (15 ",[143,490,491],{"class":444},"lines,",[143,493,495],{"class":494},"sbssI"," 129",[143,497,498],{"class":444}," tokens",[143,500,501],{"class":466},")\n",[143,503,505,508,511,513],{"class":430,"line":504},6,[143,506,507],{"class":441},"   src/helpers.ts",[143,509,510],{"class":466}," [5:1 ",[143,512,482],{"class":444},[143,514,515],{"class":444}," 20:3]\n",[143,517,519],{"class":430,"line":518},7,[143,520,454],{"emptyLinePlaceholder":212},[143,522,524,526,528],{"class":430,"line":523},8,[143,525,460],{"class":441},[143,527,463],{"class":444},[143,529,467],{"class":466},[143,531,533,535,537,540,542,545,548,550,553,555],{"class":430,"line":532},9,[143,534,473],{"class":441},[143,536,476],{"class":444},[143,538,539],{"class":466}," [45:5 ",[143,541,482],{"class":444},[143,543,544],{"class":444}," 62:2]",[143,546,547],{"class":466}," (17 ",[143,549,491],{"class":444},[143,551,552],{"class":494}," 178",[143,554,498],{"class":444},[143,556,501],{"class":466},[143,558,560,563,566,568],{"class":430,"line":559},10,[143,561,562],{"class":441},"   src/components/Button.tsx",[143,564,565],{"class":466}," [12:1 ",[143,567,482],{"class":444},[143,569,570],{"class":444}," 29:2]\n",[143,572,574],{"class":430,"line":573},11,[143,575,454],{"emptyLinePlaceholder":212},[143,577,579,581,583],{"class":430,"line":578},12,[143,580,460],{"class":441},[143,582,463],{"class":444},[143,584,585],{"class":466}," (javascript):\n",[143,587,589,591,594,597,599,602,605,607,610,612],{"class":430,"line":588},13,[143,590,473],{"class":441},[143,592,593],{"class":444}," src/hooks/useAuth.ts",[143,595,596],{"class":466}," [1:1 ",[143,598,482],{"class":444},[143,600,601],{"class":444}," 34:2]",[143,603,604],{"class":466}," (33 ",[143,606,491],{"class":444},[143,608,609],{"class":494}," 245",[143,611,498],{"class":444},[143,613,501],{"class":466},[143,615,617,620,622,624],{"class":430,"line":616},14,[143,618,619],{"class":441},"   src/hooks/useSession.ts",[143,621,596],{"class":466},[143,623,482],{"class":444},[143,625,626],{"class":444}," 34:2]\n",[143,628,630],{"class":430,"line":629},15,[143,631,454],{"emptyLinePlaceholder":212},[143,633,635],{"class":430,"line":634},16,[143,636,637],{"class":434},"# ... more clones\n",[143,639,641],{"class":430,"line":640},17,[143,642,454],{"emptyLinePlaceholder":212},[143,644,646,649,652],{"class":430,"line":645},18,[143,647,648],{"class":441},"Found",[143,650,651],{"class":494}," 90",[143,653,654],{"class":444}," clones.\n",[143,656,658,661,664],{"class":430,"line":657},19,[143,659,660],{"class":441},"Detection",[143,662,663],{"class":444}," time:",[143,665,666],{"class":444}," 434.777ms\n",[245,668,669,672,675],{"orientation":81},[83,670,671],{"v-slot:title":74},"Built by a Human Who Gets It",[83,673,674],{"v-slot:description":74},"Created with ❤️ by Andrey Kucherenko",[676,677,678],"u-card",{},[98,679,110,684,110,698],{"className":680},[114,681,682,115,683],"flex-col","sm:flex-row","gap-6",[685,686],"img",{"src":687,"alt":688,"className":689,"loading":697},"https://avatars.githubusercontent.com/kucherenko?v=4&size=128","Andrey Kucherenko",[690,691,129,692,693,694,695,696],"w-24","h-24","ring-4","ring-primary/20","shadow-xl","flex-shrink-0","pointer-events-none","lazy",[98,699,118,703,118,707,110],{"className":700},[701,702],"text-center","sm:text-left",[276,704,706],{"className":705},[117,147],"\n      Andrey Kucherenko believes that every copy-pasted code block is a bug waiting to happen twice.\n      He built jscpd so you don't have to fix the same issue in five files.\n    ",[98,708,123,713,123,732,118],{"className":709},[114,710,711,712,116],"flex-wrap","justify-center","sm:justify-start",[280,714,724,725,731],{"href":715,"target":230,"className":716},"https://github.com/kucherenko",[717,115,122,718,719,720,721,129,146,722,723],"inline-flex","px-4","py-2","bg-muted","hover:bg-muted/80","font-medium","transition-colors","\n        ",[143,726],{"className":727},[728,729,730],"i-simple-icons:github","w-4","h-4"," GitHub\n      ",[280,733,724,736,740],{"href":734,"target":230,"className":735},"https://twitter.com/a_kucherenko",[717,115,122,718,719,720,721,129,146,722,723],[143,737],{"className":738},[739,729,730],"i-simple-icons:x"," Twitter/X\n      ",[245,742,744,747,750],{"orientation":81,":reverse":743},"true",[83,745,746],{"v-slot:title":74},"💙 Huge Thank You to Our Contributors!",[83,748,749],{"v-slot:description":74},"This project wouldn't exist without you",[676,751,752,758,761,767,773],{},[276,753,754,757],{},[89,755,756],{},"To everyone who has contributed to jscpd — thank you!"," 🌟",[276,759,760],{},"Whether you've submitted code, reported bugs, suggested features, improved documentation, or simply spread the word — your contributions make jscpd better for everyone. We're grateful for every issue closed, every PR merged, and every kind word shared.",[276,762,763,766],{},[89,764,765],{},"With a grateful heart,"," 🤗",[276,768,769],{},[770,771,772],"em",{},"The jscpd Team",[276,774,775],{},[280,776,780,785],{"href":777,"rel":778},"https://github.com/kucherenko/jscpd/graphs/contributors",[779],"nofollow",[781,782],"icon",{"className":783,"name":229},[784],"inline"," View Contributors",[210,787,788],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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":74,"searchDepth":438,"depth":438,"links":790},[],"md",{},"/",{"title":795,"description":796},"jscpd - Copy/Paste Detector for Source Code","Detect copy/paste and duplicated code in your projects. Supports 150+ programming languages. Open source tool to reduce technical debt.","index","5eG2k9cKkxE8KbPvA_hZSsZos6GODAdNPcDfoH5UC-I",1772457398709]