[{"data":1,"prerenderedAt":918},["ShallowReactive",2],{"navigation_docs":3,"-monorepos-duplicates-and-shared-layers":302,"-monorepos-duplicates-and-shared-layers-surround":915},[4,18,32,53,74,103,120,133,147,156],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Introduction","\u002Fintroduction","1.introduction",[9,13],{"title":10,"path":11,"stem":12},"Why the-i18n-kit","\u002Fintroduction\u002Fwhy","1.introduction\u002F1.why",{"title":14,"path":15,"stem":16},"Architecture","\u002Fintroduction\u002Farchitecture","1.introduction\u002F2.architecture",false,{"title":19,"icon":20,"path":21,"stem":22,"children":23,"page":17},"ESLint Plugin","i-lucide-shield-check","\u002Feslint-plugin","10.eslint-plugin",[24,28],{"title":25,"path":26,"stem":27},"Install and Rules","\u002Feslint-plugin\u002Finstall-and-rules","10.eslint-plugin\u002F1.install-and-rules",{"title":29,"path":30,"stem":31},"Layer-Aware Missing Keys","\u002Feslint-plugin\u002Flayer-aware","10.eslint-plugin\u002F2.layer-aware",{"title":33,"path":34,"stem":35,"children":36,"page":17},"Getting Started","\u002Fgetting-started","2.getting-started",[37,41,45,49],{"title":38,"path":39,"stem":40},"Set Up the MCP Server","\u002Fgetting-started\u002Fagent-setup","2.getting-started\u002F1.agent-setup",{"title":42,"path":43,"stem":44},"From an Unconfigured Repository to a Translated One","\u002Fgetting-started\u002Fcold-start","2.getting-started\u002F2.cold-start",{"title":46,"path":47,"stem":48},"Agent Contract","\u002Fgetting-started\u002Fagent-contract","2.getting-started\u002F3.agent-contract",{"title":50,"path":51,"stem":52},"Harness Integrations","\u002Fgetting-started\u002Fharness-integrations","2.getting-started\u002F4.harness-integrations",{"title":54,"path":55,"stem":56,"children":57,"page":17},"Monorepos","\u002Fmonorepos","3.monorepos",[58,62,66,70],{"title":59,"path":60,"stem":61},"Layers and the Consumer Graph","\u002Fmonorepos\u002Flayers-and-consumer-graph","3.monorepos\u002F1.layers-and-consumer-graph",{"title":63,"path":64,"stem":65},"Shared Layers and Duplicates","\u002Fmonorepos\u002Fduplicates-and-shared-layers","3.monorepos\u002F2.duplicates-and-shared-layers",{"title":67,"path":68,"stem":69},"Misplaced Usages","\u002Fmonorepos\u002Fmisplaced-usages","3.monorepos\u002F3.misplaced-usages",{"title":71,"path":72,"stem":73},"Orphan Detection","\u002Fmonorepos\u002Forphan-detection","3.monorepos\u002F4.orphan-detection",{"title":75,"path":76,"stem":77,"children":78,"page":17},"Frameworks","\u002Fframeworks","4.frameworks",[79,83,87,91,95,99],{"title":80,"path":81,"stem":82},"Detection","\u002Fframeworks\u002Fdetection","4.frameworks\u002F1.detection",{"title":84,"path":85,"stem":86},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F2.nuxt",{"title":88,"path":89,"stem":90},"Laravel","\u002Fframeworks\u002Flaravel","4.frameworks\u002F3.laravel",{"title":92,"path":93,"stem":94},"Vue","\u002Fframeworks\u002Fvue","4.frameworks\u002F4.vue",{"title":96,"path":97,"stem":98},"React \u002F Next.js","\u002Fframeworks\u002Freact-next","4.frameworks\u002F5.react-next",{"title":100,"path":101,"stem":102},"Generic","\u002Fframeworks\u002Fgeneric","4.frameworks\u002F6.generic",{"title":104,"path":105,"stem":106,"children":107,"page":17},"Configuration","\u002Fconfiguration","5.configuration",[108,112,116],{"title":109,"path":110,"stem":111},"Where Configuration Lives","\u002Fconfiguration\u002Fwhere-config-lives","5.configuration\u002F1.where-config-lives",{"title":113,"path":114,"stem":115},"Precedence and Locale References","\u002Fconfiguration\u002Fprecedence-and-locale-refs","5.configuration\u002F2.precedence-and-locale-refs",{"title":117,"path":118,"stem":119},"Configuration Fields","\u002Fconfiguration\u002Freference","5.configuration\u002F4.reference",{"title":121,"path":122,"stem":123,"children":124,"page":17},"Nuxt Module","\u002Fnuxt-module","6.nuxt-module",[125,129],{"title":126,"path":127,"stem":128},"Install and Setup","\u002Fnuxt-module\u002Finstall","6.nuxt-module\u002F1.install",{"title":130,"path":131,"stem":132},"The Artifact and Options","\u002Fnuxt-module\u002Fartifact-and-options","6.nuxt-module\u002F2.artifact-and-options",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":17},"CI\u002FCD","i-lucide-git-pull-request","\u002Fci-cd","7.ci-cd",[139,143],{"title":140,"path":141,"stem":142},"GitHub Actions","\u002Fci-cd\u002Fgithub-actions","7.ci-cd\u002F1.github-actions",{"title":144,"path":145,"stem":146},"GitLab CI","\u002Fci-cd\u002Fgitlab-ci","7.ci-cd\u002F2.gitlab-ci",{"title":148,"path":149,"stem":150,"children":151,"page":17},"Concepts","\u002Fconcepts","8.concepts",[152],{"title":153,"path":154,"stem":155},"Translation Modes","\u002Fconcepts\u002Ftranslation-modes","8.concepts\u002F1.translation-modes",{"title":157,"path":158,"stem":159,"children":160,"page":-1},"Reference","\u002Freference","9.reference",[161,163,229,294,298],{"title":157,"path":158,"stem":162},"9.reference\u002Findex",{"title":164,"path":165,"stem":166,"children":167,"page":-1},"CLI Commands","\u002Freference\u002Fcli","9.reference\u002F1.cli\u002Findex",[168,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225],{"title":164,"path":165,"stem":166},{"title":170,"path":171,"stem":172},"check","\u002Freference\u002Fcli\u002Fcheck","9.reference\u002F1.cli\u002Fcheck",{"title":174,"path":175,"stem":176},"discover","\u002Freference\u002Fcli\u002Fdiscover","9.reference\u002F1.cli\u002Fdiscover",{"title":178,"path":179,"stem":180},"find-duplicates","\u002Freference\u002Fcli\u002Ffind-duplicates","9.reference\u002F1.cli\u002Ffind-duplicates",{"title":182,"path":183,"stem":184},"get","\u002Freference\u002Fcli\u002Fget","9.reference\u002F1.cli\u002Fget",{"title":186,"path":187,"stem":188},"init","\u002Freference\u002Fcli\u002Finit","9.reference\u002F1.cli\u002Finit",{"title":190,"path":191,"stem":192},"missing","\u002Freference\u002Fcli\u002Fmissing","9.reference\u002F1.cli\u002Fmissing",{"title":194,"path":195,"stem":196},"move","\u002Freference\u002Fcli\u002Fmove","9.reference\u002F1.cli\u002Fmove",{"title":198,"path":199,"stem":200},"orphans","\u002Freference\u002Fcli\u002Forphans","9.reference\u002F1.cli\u002Forphans",{"title":202,"path":203,"stem":204},"remove","\u002Freference\u002Fcli\u002Fremove","9.reference\u002F1.cli\u002Fremove",{"title":206,"path":207,"stem":208},"scaffold","\u002Freference\u002Fcli\u002Fscaffold","9.reference\u002F1.cli\u002Fscaffold",{"title":210,"path":211,"stem":212},"search","\u002Freference\u002Fcli\u002Fsearch","9.reference\u002F1.cli\u002Fsearch",{"title":214,"path":215,"stem":216},"status","\u002Freference\u002Fcli\u002Fstatus","9.reference\u002F1.cli\u002Fstatus",{"title":218,"path":219,"stem":220},"translate","\u002Freference\u002Fcli\u002Ftranslate","9.reference\u002F1.cli\u002Ftranslate",{"title":222,"path":223,"stem":224},"translate-key","\u002Freference\u002Fcli\u002Ftranslate-key","9.reference\u002F1.cli\u002Ftranslate-key",{"title":226,"path":227,"stem":228},"write","\u002Freference\u002Fcli\u002Fwrite","9.reference\u002F1.cli\u002Fwrite",{"title":230,"path":231,"stem":232,"children":233,"page":-1},"MCP Tools","\u002Freference\u002Fmcp","9.reference\u002F2.mcp\u002Findex",[234,235,238,242,246,250,254,258,262,266,270,274,278,282,286,290],{"title":230,"path":231,"stem":232},{"title":174,"path":236,"stem":237},"\u002Freference\u002Fmcp\u002Fdiscover","9.reference\u002F2.mcp\u002Fdiscover",{"title":239,"path":240,"stem":241},"find_duplicate_keys","\u002Freference\u002Fmcp\u002Ffind_duplicate_keys","9.reference\u002F2.mcp\u002Ffind_duplicate_keys",{"title":243,"path":244,"stem":245},"find_orphan_keys","\u002Freference\u002Fmcp\u002Ffind_orphan_keys","9.reference\u002F2.mcp\u002Ffind_orphan_keys",{"title":247,"path":248,"stem":249},"find_undefined_keys","\u002Freference\u002Fmcp\u002Ffind_undefined_keys","9.reference\u002F2.mcp\u002Ffind_undefined_keys",{"title":251,"path":252,"stem":253},"get_missing_translations","\u002Freference\u002Fmcp\u002Fget_missing_translations","9.reference\u002F2.mcp\u002Fget_missing_translations",{"title":255,"path":256,"stem":257},"get_translation_status","\u002Freference\u002Fmcp\u002Fget_translation_status","9.reference\u002F2.mcp\u002Fget_translation_status",{"title":259,"path":260,"stem":261},"get_translations","\u002Freference\u002Fmcp\u002Fget_translations","9.reference\u002F2.mcp\u002Fget_translations",{"title":263,"path":264,"stem":265},"list_namespaces","\u002Freference\u002Fmcp\u002Flist_namespaces","9.reference\u002F2.mcp\u002Flist_namespaces",{"title":267,"path":268,"stem":269},"move_translation_key","\u002Freference\u002Fmcp\u002Fmove_translation_key","9.reference\u002F2.mcp\u002Fmove_translation_key",{"title":271,"path":272,"stem":273},"remove_translations","\u002Freference\u002Fmcp\u002Fremove_translations","9.reference\u002F2.mcp\u002Fremove_translations",{"title":275,"path":276,"stem":277},"scaffold_locale","\u002Freference\u002Fmcp\u002Fscaffold_locale","9.reference\u002F2.mcp\u002Fscaffold_locale",{"title":279,"path":280,"stem":281},"search_translations","\u002Freference\u002Fmcp\u002Fsearch_translations","9.reference\u002F2.mcp\u002Fsearch_translations",{"title":283,"path":284,"stem":285},"translate_key","\u002Freference\u002Fmcp\u002Ftranslate_key","9.reference\u002F2.mcp\u002Ftranslate_key",{"title":287,"path":288,"stem":289},"translate_missing","\u002Freference\u002Fmcp\u002Ftranslate_missing","9.reference\u002F2.mcp\u002Ftranslate_missing",{"title":291,"path":292,"stem":293},"write_translations","\u002Freference\u002Fmcp\u002Fwrite_translations","9.reference\u002F2.mcp\u002Fwrite_translations",{"title":295,"path":296,"stem":297},"GitHub Action","\u002Freference\u002Faction","9.reference\u002F3.action",{"title":299,"path":300,"stem":301},"Programmatic API","\u002Freference\u002Fprogrammatic-api","9.reference\u002F4.programmatic-api",{"id":303,"title":63,"body":304,"description":322,"extension":908,"links":909,"meta":910,"navigation":911,"path":64,"seo":912,"stem":65,"__hash__":914},"docs\u002F3.monorepos\u002F2.duplicates-and-shared-layers.md",{"type":305,"value":306,"toc":903},"minimark",[307,312,323,340,401,404,483,498,507,511,518,560,586,837,842,846,852,865,872,880,899],[308,309,311],"h2",{"id":310},"a-shared-library-two-apps","A Shared Library, Two Apps",[313,314,319],"pre",{"className":315,"code":317,"language":318},[316],"language-text","monorepo\u002F\n├── packages\u002Fui\u002F          # shared: buttons, dialogs, form errors\n├── apps\u002Fcheckout\u002F        # consumes ui\n├── apps\u002Fadmin\u002F           # consumes ui\n└── scripts\u002F              # release tooling, no app\n","text",[320,321,317],"code",{"__ignoreMap":322},"",[324,325,326,327,330,331,335,336,339],"p",{},"Three layers, two apps. ",[320,328,329],{},"ui"," is a ",[332,333,334],"strong",{},"shared layer",": consumed by more than one\napp. Each layer's scope is its own root, the roots of the apps that consume it,\nand the project root — which claims ",[320,337,338],{},"scripts\u002F",":",[341,342,343,356],"table",{},[344,345,346],"thead",{},[347,348,349,353],"tr",{},[350,351,352],"th",{},"Layer",[350,354,355],{},"Scope",[357,358,359,379,390],"tbody",{},[347,360,361,366],{},[362,363,364],"td",{},[320,365,329],{},[362,367,368,371,372,371,375,378],{},[320,369,370],{},"packages\u002Fui",", ",[320,373,374],{},"apps\u002Fcheckout",[320,376,377],{},"apps\u002Fadmin",", project root",[347,380,381,386],{},[362,382,383],{},[320,384,385],{},"checkout",[362,387,388,378],{},[320,389,374],{},[347,391,392,397],{},[362,393,394],{},[320,395,396],{},"admin",[362,398,399,378],{},[320,400,377],{},[324,402,403],{},"What changes against a repository-wide scan is who may vouch for what:",[341,405,406,419],{},[344,407,408],{},[347,409,410,413,416],{},[350,411,412],{},"Key, defined in",[350,414,415],{},"Referenced in",[350,417,418],{},"Outcome",[357,420,421,434,448,467],{},[347,422,423,427,431],{},[362,424,425],{},[320,426,329],{},[362,428,429],{},[320,430,370],{},[362,432,433],{},"Used. A library's own code protects its keys",[347,435,436,440,445],{},[362,437,438],{},[320,439,329],{},[362,441,442,444],{},[320,443,374],{}," only",[362,446,447],{},"Used. One consumer is enough",[347,449,450,454,457],{},[362,451,452],{},[320,453,329],{},[362,455,456],{},"nowhere",[362,458,459,462,463,466],{},[332,460,461],{},"Orphan"," — the only bucket ",[320,464,465],{},"orphans --remove"," deletes from",[347,468,469,473,477],{},[362,470,471],{},[320,472,385],{},[362,474,475,444],{},[320,476,377],{},[362,478,479,482],{},[332,480,481],{},"Misplaced usage"," — reported, never removed",[324,484,485,486,488,489,493,494,497],{},"The last row is what an unscoped scan gets wrong: a repository-wide grep finds\nthe string in ",[320,487,377],{},", calls the key used, and the broken screen ships. See\n",[490,491,492],"a",{"href":68},"misplaced usages"," and\n",[490,495,496],{"href":72},"orphan detection",".",[324,499,500,501,503,504,506],{},"Drop ",[320,502,377],{}," and ",[320,505,329],{}," has one consumer, whose scope is the whole project.\nPer-layer scope collapses to global scope and the scan behaves like an unscoped\none.",[308,508,510],{"id":509},"collisions","Collisions",[324,512,513,514,517],{},"A ",[332,515,516],{},"collision"," is one key defined in two layers the same app consumes: a shared\nlayer and a layer that overrides it. The app resolves the overriding layer, so\nthe shared value is dead for that app, with no warning at build time.",[341,519,520,533],{},[344,521,522],{},[347,523,524,527,530],{},[350,525,526],{},"Kind",[350,528,529],{},"Means",[350,531,532],{},"Why it matters",[357,534,535,546],{},[347,536,537,540,543],{},[362,538,539],{},"Same value on both sides",[362,541,542],{},"A copy",[362,544,545],{},"Harmless today, drift tomorrow",[347,547,548,554,557],{},[362,549,550,551],{},"Different values — ",[332,552,553],{},"divergent",[362,555,556],{},"An override",[362,558,559],{},"The shared value is never seen by this app",[313,561,565],{"className":562,"code":563,"language":564,"meta":322,"style":322},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","the-i18n-cli find-duplicates --locale de\n","bash",[320,566,567],{"__ignoreMap":322},[568,569,572,576,580,583],"span",{"class":570,"line":571},"line",1,[568,573,575],{"class":574},"sBMFI","the-i18n-cli",[568,577,579],{"class":578},"sfazB"," find-duplicates",[568,581,582],{"class":578}," --locale",[568,584,585],{"class":578}," de\n",[313,587,591],{"className":588,"code":589,"language":590,"meta":322,"style":322},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"collisions\": [\n    {\n      \"key\": \"common.cancel\",\n      \"sharedLayer\": \"ui\",\n      \"childLayer\": \"checkout\",\n      \"sharedValue\": \"Cancel\",\n      \"childValue\": \"Discard\",\n      \"divergent\": true\n    }\n  ],\n  \"summary\": { \"totalCollisions\": 1, \"divergentCount\": 1, \"pairsChecked\": 2, \"locale\": \"en\" }\n}\n","json",[320,592,593,599,616,622,646,666,686,707,728,742,748,754,831],{"__ignoreMap":322},[568,594,595],{"class":570,"line":571},[568,596,598],{"class":597},"sMK4o","{\n",[568,600,602,605,608,611,613],{"class":570,"line":601},2,[568,603,604],{"class":597},"  \"",[568,606,509],{"class":607},"spNyl",[568,609,610],{"class":597},"\"",[568,612,339],{"class":597},[568,614,615],{"class":597}," [\n",[568,617,619],{"class":570,"line":618},3,[568,620,621],{"class":597},"    {\n",[568,623,625,628,631,633,635,638,641,643],{"class":570,"line":624},4,[568,626,627],{"class":597},"      \"",[568,629,630],{"class":574},"key",[568,632,610],{"class":597},[568,634,339],{"class":597},[568,636,637],{"class":597}," \"",[568,639,640],{"class":578},"common.cancel",[568,642,610],{"class":597},[568,644,645],{"class":597},",\n",[568,647,649,651,654,656,658,660,662,664],{"class":570,"line":648},5,[568,650,627],{"class":597},[568,652,653],{"class":574},"sharedLayer",[568,655,610],{"class":597},[568,657,339],{"class":597},[568,659,637],{"class":597},[568,661,329],{"class":578},[568,663,610],{"class":597},[568,665,645],{"class":597},[568,667,669,671,674,676,678,680,682,684],{"class":570,"line":668},6,[568,670,627],{"class":597},[568,672,673],{"class":574},"childLayer",[568,675,610],{"class":597},[568,677,339],{"class":597},[568,679,637],{"class":597},[568,681,385],{"class":578},[568,683,610],{"class":597},[568,685,645],{"class":597},[568,687,689,691,694,696,698,700,703,705],{"class":570,"line":688},7,[568,690,627],{"class":597},[568,692,693],{"class":574},"sharedValue",[568,695,610],{"class":597},[568,697,339],{"class":597},[568,699,637],{"class":597},[568,701,702],{"class":578},"Cancel",[568,704,610],{"class":597},[568,706,645],{"class":597},[568,708,710,712,715,717,719,721,724,726],{"class":570,"line":709},8,[568,711,627],{"class":597},[568,713,714],{"class":574},"childValue",[568,716,610],{"class":597},[568,718,339],{"class":597},[568,720,637],{"class":597},[568,722,723],{"class":578},"Discard",[568,725,610],{"class":597},[568,727,645],{"class":597},[568,729,731,733,735,737,739],{"class":570,"line":730},9,[568,732,627],{"class":597},[568,734,553],{"class":574},[568,736,610],{"class":597},[568,738,339],{"class":597},[568,740,741],{"class":597}," true\n",[568,743,745],{"class":570,"line":744},10,[568,746,747],{"class":597},"    }\n",[568,749,751],{"class":570,"line":750},11,[568,752,753],{"class":597},"  ],\n",[568,755,757,759,762,764,766,769,771,774,776,778,782,785,787,790,792,794,796,798,800,803,805,807,810,812,814,817,819,821,823,826,828],{"class":570,"line":756},12,[568,758,604],{"class":597},[568,760,761],{"class":607},"summary",[568,763,610],{"class":597},[568,765,339],{"class":597},[568,767,768],{"class":597}," {",[568,770,637],{"class":597},[568,772,773],{"class":574},"totalCollisions",[568,775,610],{"class":597},[568,777,339],{"class":597},[568,779,781],{"class":780},"sbssI"," 1",[568,783,784],{"class":597},",",[568,786,637],{"class":597},[568,788,789],{"class":574},"divergentCount",[568,791,610],{"class":597},[568,793,339],{"class":597},[568,795,781],{"class":780},[568,797,784],{"class":597},[568,799,637],{"class":597},[568,801,802],{"class":574},"pairsChecked",[568,804,610],{"class":597},[568,806,339],{"class":597},[568,808,809],{"class":780}," 2",[568,811,784],{"class":597},[568,813,637],{"class":597},[568,815,816],{"class":574},"locale",[568,818,610],{"class":597},[568,820,339],{"class":597},[568,822,637],{"class":597},[568,824,825],{"class":578},"en",[568,827,610],{"class":597},[568,829,830],{"class":597}," }\n",[568,832,834],{"class":570,"line":833},13,[568,835,836],{"class":597},"}\n",[324,838,839,841],{},[320,840,802],{}," tells you whether a clean report means \"no collisions\" or \"nothing\nto compare\". Pairs come from each app's layer precedence order: of two\nlocale-backed layers an app consumes, the earlier is the child and the later is\nthe shared base. Comparison is leaf by leaf in one reference locale, structural\nfor values that are not strings, so two equal arrays of plural forms are a copy\nrather than a divergence.",[308,843,845],{"id":844},"fixing-a-collision","Fixing a Collision",[324,847,848,851],{},[332,849,850],{},"Delete one side. Never move the key"," — both layers already define it, so a\nmove is a delete plus a no-op and the wrong order loses a value.",[853,854,855,859,862],"ul",{},[856,857,858],"li",{},"The child value is authoritative → delete the shared copy, if no other consumer\nrelies on it.",[856,860,861],{},"The child copy was accidental → delete it and let the app fall through.",[856,863,864],{},"The override is deliberate → keep both. There is no suppression list; the\nreport shows it every run.",[324,866,867,868,871],{},"The same guidance ships in the result's ",[320,869,870],{},"guidance"," field.",[873,874,875,876,879],"warning",{},"Check every locale before deleting. Values can be identical in English and\ndivergent in German, in which case deleting the child copy changes the German UI.\nEach run compares one reference locale — pass ",[320,877,878],{},"--locale \u003Ccode>"," once per locale\nyou ship.",[324,881,882,883,886,887,890,891,894,895,898],{},"Two more things to expect. With no app information in the config no pairs can be\nderived, and the summary says so in its ",[320,884,885],{},"message"," field rather than guessing at a\nhierarchy; the same happens when no app consumes more than one locale-backed\nlayer. And duplicate detection has no gate flag: it reports and exits ",[320,888,889],{},"0",", so\nfailing a pipeline on collisions means reading ",[320,892,893],{},"summary.totalCollisions"," or\n",[320,896,897],{},"summary.divergentCount"," yourself.",[900,901,902],"style",{},"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 .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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":322,"searchDepth":618,"depth":618,"links":904},[905,906,907],{"id":310,"depth":601,"text":311},{"id":509,"depth":601,"text":510},{"id":844,"depth":601,"text":845},"md",null,{},true,{"description":913,"title":63},"A shared library consumed by two apps — which keys count as used, which are orphans — and finding keys defined in both a shared layer and a layer that overrides it.","oAOtLwMZQjF_mCL6KC-Ex9TkE4Z3_4GiP-hSuOHOjxM",[916,917],{"title":59,"path":60,"stem":61,"description":322,"children":-1},{"title":67,"path":68,"stem":69,"description":322,"children":-1},1789062605942]