[{"data":1,"prerenderedAt":3030},["ShallowReactive",2],{"navigation":3,"docs-\u002Fmodule\u002Futils-kit":52,"docs-\u002Fmodule\u002Futils-kit-surround":3025},[4,22,43],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Guide","\u002Fguide","1.guide",[9,13,17],{"title":10,"path":11,"stem":12},"Getting Started","\u002Fguide\u002Fgetting-started","1.guide\u002F0.getting-started",{"title":14,"path":15,"stem":16},"Features","\u002Fguide\u002Ffeatures","1.guide\u002F1.features",{"title":18,"path":19,"stem":20},"Composables","\u002Fguide\u002Fcomposables","1.guide\u002F2.composables",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Module","\u002Fmodule","2.module",[27,31,35,39],{"title":28,"path":29,"stem":30},"Module Authors","\u002Fmodule\u002Fguide","2.module\u002F0.guide",{"title":32,"path":33,"stem":34},"Utility Kit","\u002Fmodule\u002Futils-kit","2.module\u002F1.utils-kit",{"title":36,"path":37,"stem":38},"UI Kit","\u002Fmodule\u002Fui-kit","2.module\u002F2.ui-kit",{"title":40,"path":41,"stem":42},"Migration to v4","\u002Fmodule\u002Fmigration-v4","2.module\u002F3.migration-v4",{"title":44,"path":45,"stem":46,"children":47,"page":21},"Development","\u002Fdevelopment","3.development",[48],{"title":49,"path":50,"stem":51},"Contribution Guide","\u002Fdevelopment\u002Fcontributing","3.development\u002F0.contributing",{"id":53,"title":32,"body":54,"description":3020,"extension":3021,"meta":3022,"navigation":195,"path":33,"seo":3023,"stem":34,"__hash__":3024},"docs\u002F2.module\u002F1.utils-kit.md",{"type":55,"value":56,"toc":2996},"minimark",[57,66,91,127,137,143,152,166,366,372,402,408,573,576,608,711,717,735,742,746,766,1019,1036,1042,1078,1084,1246,1252,1267,1270,1355,1363,1581,1588,1593,1603,1927,1934,1979,1991,2049,2060,2067,2071,2093,2100,2113,2215,2242,2248,2251,2254,2298,2309,2314,2330,2463,2468,2479,2484,2498,2503,2506,2566,2579,2684,2690,2696,2702,2797,2803,2809,2815,2823,2925,2931,2935,2992],[58,59,60,61,65],"p",{},"Since v0.3.0, we are now providing a utility kit for easier DevTools integrations, similar to ",[62,63,64],"code",{},"@nuxt\u002Fkit",".",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm i @nuxt\u002Fdevtools-kit\n","bash","",[62,74,75],{"__ignoreMap":72},[76,77,80,84,88],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sBMFI","npm",[76,85,87],{"class":86},"sfazB"," i",[76,89,90],{"class":86}," @nuxt\u002Fdevtools-kit\n",[67,92,96],{"className":93,"code":94,"language":95,"meta":72,"style":72},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n","ts",[62,97,98],{"__ignoreMap":72},[76,99,100,104,108,112,115,118,121,124],{"class":78,"line":79},[76,101,103],{"class":102},"s7zQu","import",[76,105,107],{"class":106},"sMK4o"," {",[76,109,111],{"class":110},"sTEyZ"," addCustomTab",[76,113,114],{"class":106}," }",[76,116,117],{"class":102}," from",[76,119,120],{"class":106}," '",[76,122,123],{"class":86},"@nuxt\u002Fdevtools-kit",[76,125,126],{"class":106},"'\n",[58,128,129,130,132,133,136],{},"We recommend module authors to install ",[62,131,123],{}," as a dependency and ",[62,134,135],{},"@nuxt\u002Fdevtools"," as a dev dependency.",[138,139,141],"h2",{"id":140},"nuxtdevtools-kit",[62,142,123],{},[144,145,147,148,151],"h3",{"id":146},"joining-the-nuxt-dock-group","Joining the ",[62,149,150],{},"Nuxt"," Dock Group",[58,153,154,155,157,158,161,162,165],{},"Vite DevTools registers a public ",[62,156,150],{}," dock group (id ",[62,159,160],{},"nuxt",") on the\nframework category, with ",[62,163,164],{},"nuxt:devtools"," as its default member. Module\nauthors join the group natively by pointing their own dock entries at it —\nno special Nuxt API required:",[67,167,169],{"className":93,"code":168,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n\nonDevtoolsReady((ctx) => {\n  ctx.docks.register({\n    id: 'my-module',\n    type: 'iframe',\n    title: 'My Module',\n    icon: 'i-ph-puzzle-piece',\n    url: '\u002Fmy-module\u002F',\n    groupId: 'nuxt',\n  })\n})\n",[62,170,171,190,197,223,245,265,282,299,316,333,349,358],{"__ignoreMap":72},[76,172,173,175,177,180,182,184,186,188],{"class":78,"line":79},[76,174,103],{"class":102},[76,176,107],{"class":106},[76,178,179],{"class":110}," onDevtoolsReady",[76,181,114],{"class":106},[76,183,117],{"class":102},[76,185,120],{"class":106},[76,187,123],{"class":86},[76,189,126],{"class":106},[76,191,193],{"class":78,"line":192},2,[76,194,196],{"emptyLinePlaceholder":195},true,"\n",[76,198,200,204,207,209,213,216,220],{"class":78,"line":199},3,[76,201,203],{"class":202},"s2Zo4","onDevtoolsReady",[76,205,206],{"class":110},"(",[76,208,206],{"class":106},[76,210,212],{"class":211},"sHdIc","ctx",[76,214,215],{"class":106},")",[76,217,219],{"class":218},"spNyl"," =>",[76,221,222],{"class":106}," {\n",[76,224,226,229,231,234,236,239,242],{"class":78,"line":225},4,[76,227,228],{"class":110},"  ctx",[76,230,65],{"class":106},[76,232,233],{"class":110},"docks",[76,235,65],{"class":106},[76,237,238],{"class":202},"register",[76,240,206],{"class":241},"swJcz",[76,243,244],{"class":106},"{\n",[76,246,248,251,254,256,259,262],{"class":78,"line":247},5,[76,249,250],{"class":241},"    id",[76,252,253],{"class":106},":",[76,255,120],{"class":106},[76,257,258],{"class":86},"my-module",[76,260,261],{"class":106},"'",[76,263,264],{"class":106},",\n",[76,266,268,271,273,275,278,280],{"class":78,"line":267},6,[76,269,270],{"class":241},"    type",[76,272,253],{"class":106},[76,274,120],{"class":106},[76,276,277],{"class":86},"iframe",[76,279,261],{"class":106},[76,281,264],{"class":106},[76,283,285,288,290,292,295,297],{"class":78,"line":284},7,[76,286,287],{"class":241},"    title",[76,289,253],{"class":106},[76,291,120],{"class":106},[76,293,294],{"class":86},"My Module",[76,296,261],{"class":106},[76,298,264],{"class":106},[76,300,302,305,307,309,312,314],{"class":78,"line":301},8,[76,303,304],{"class":241},"    icon",[76,306,253],{"class":106},[76,308,120],{"class":106},[76,310,311],{"class":86},"i-ph-puzzle-piece",[76,313,261],{"class":106},[76,315,264],{"class":106},[76,317,319,322,324,326,329,331],{"class":78,"line":318},9,[76,320,321],{"class":241},"    url",[76,323,253],{"class":106},[76,325,120],{"class":106},[76,327,328],{"class":86},"\u002Fmy-module\u002F",[76,330,261],{"class":106},[76,332,264],{"class":106},[76,334,336,339,341,343,345,347],{"class":78,"line":335},10,[76,337,338],{"class":241},"    groupId",[76,340,253],{"class":106},[76,342,120],{"class":106},[76,344,160],{"class":86},[76,346,261],{"class":106},[76,348,264],{"class":106},[76,350,352,355],{"class":78,"line":351},11,[76,353,354],{"class":106},"  }",[76,356,357],{"class":241},")\n",[76,359,361,364],{"class":78,"line":360},12,[76,362,363],{"class":106},"}",[76,365,357],{"class":110},[144,367,369],{"id":368},"addcustomtab",[62,370,371],{},"addCustomTab()",[373,374,375],"warning",{},[58,376,377,381,382,384,385,388,389,392,393,396,397,65],{},[378,379,380],"strong",{},"Deprecated."," ",[62,383,371],{}," is soft-deprecated (",[62,386,387],{},"NDT_DEP_0005",") in favour of\nregistering a dock entry on the Vite DevTools docks host\n(",[62,390,391],{},"nuxt.devtools.docks.register(...)","). It still works as a shim. Note the docks\nhost does not yet cover ",[62,394,395],{},"vnode"," views or tab categories. See the\n",[398,399,401],"a",{"href":400},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0005","migration guide",[58,403,404,405,65],{},"A shorthand for calling the hook ",[62,406,407],{},"devtools:customTabs",[67,409,411],{"className":93,"code":410,"language":95,"meta":72,"style":72},"import { addCustomTab } from '@nuxt\u002Fdevtools-kit'\n\naddCustomTab(() => ({\n  \u002F\u002F unique identifier\n  name: 'my-module',\n  \u002F\u002F title to display in the tab\n  title: 'My Module',\n  \u002F\u002F any icon from Iconify, or a URL to an image\n  icon: 'carbon:apps',\n  \u002F\u002F iframe view\n  view: {\n    type: 'iframe',\n    src: '\u002Furl-to-your-module-view',\n  },\n}))\n",[62,412,413,431,435,452,458,473,478,493,498,514,519,528,542,559,565],{"__ignoreMap":72},[76,414,415,417,419,421,423,425,427,429],{"class":78,"line":79},[76,416,103],{"class":102},[76,418,107],{"class":106},[76,420,111],{"class":110},[76,422,114],{"class":106},[76,424,117],{"class":102},[76,426,120],{"class":106},[76,428,123],{"class":86},[76,430,126],{"class":106},[76,432,433],{"class":78,"line":192},[76,434,196],{"emptyLinePlaceholder":195},[76,436,437,440,442,445,447,450],{"class":78,"line":199},[76,438,439],{"class":202},"addCustomTab",[76,441,206],{"class":110},[76,443,444],{"class":106},"()",[76,446,219],{"class":218},[76,448,449],{"class":110}," (",[76,451,244],{"class":106},[76,453,454],{"class":78,"line":225},[76,455,457],{"class":456},"sHwdD","  \u002F\u002F unique identifier\n",[76,459,460,463,465,467,469,471],{"class":78,"line":247},[76,461,462],{"class":241},"  name",[76,464,253],{"class":106},[76,466,120],{"class":106},[76,468,258],{"class":86},[76,470,261],{"class":106},[76,472,264],{"class":106},[76,474,475],{"class":78,"line":267},[76,476,477],{"class":456},"  \u002F\u002F title to display in the tab\n",[76,479,480,483,485,487,489,491],{"class":78,"line":284},[76,481,482],{"class":241},"  title",[76,484,253],{"class":106},[76,486,120],{"class":106},[76,488,294],{"class":86},[76,490,261],{"class":106},[76,492,264],{"class":106},[76,494,495],{"class":78,"line":301},[76,496,497],{"class":456},"  \u002F\u002F any icon from Iconify, or a URL to an image\n",[76,499,500,503,505,507,510,512],{"class":78,"line":318},[76,501,502],{"class":241},"  icon",[76,504,253],{"class":106},[76,506,120],{"class":106},[76,508,509],{"class":86},"carbon:apps",[76,511,261],{"class":106},[76,513,264],{"class":106},[76,515,516],{"class":78,"line":335},[76,517,518],{"class":456},"  \u002F\u002F iframe view\n",[76,520,521,524,526],{"class":78,"line":351},[76,522,523],{"class":241},"  view",[76,525,253],{"class":106},[76,527,222],{"class":106},[76,529,530,532,534,536,538,540],{"class":78,"line":360},[76,531,270],{"class":241},[76,533,253],{"class":106},[76,535,120],{"class":106},[76,537,277],{"class":86},[76,539,261],{"class":106},[76,541,264],{"class":106},[76,543,545,548,550,552,555,557],{"class":78,"line":544},13,[76,546,547],{"class":241},"    src",[76,549,253],{"class":106},[76,551,120],{"class":106},[76,553,554],{"class":86},"\u002Furl-to-your-module-view",[76,556,261],{"class":106},[76,558,264],{"class":106},[76,560,562],{"class":78,"line":561},14,[76,563,564],{"class":106},"  },\n",[76,566,568,570],{"class":78,"line":567},15,[76,569,363],{"class":106},[76,571,572],{"class":110},"))\n",[58,574,575],{},"The iframe view supports the following options:",[577,578,579,586,595],"ul",{},[580,581,582,585],"li",{},[62,583,584],{},"src",": URL of the iframe",[580,587,588,591,592,215],{},[62,589,590],{},"persistent",": Whether to persist the iframe instance when switching tabs (default: ",[62,593,594],{},"true",[580,596,597,600,601,604,605,215],{},[62,598,599],{},"permissions",": Additional permissions to allow in the iframe (merged with default ",[62,602,603],{},"clipboard-write"," and ",[62,606,607],{},"clipboard-read",[67,609,611],{"className":93,"code":610,"language":95,"meta":72,"style":72},"const view: ModuleIframeView = {\n  type: 'iframe',\n  src: '\u002Furl-to-your-module-view',\n  persistent: true,\n  permissions: ['camera', 'microphone'],\n}\n",[62,612,613,631,646,661,674,706],{"__ignoreMap":72},[76,614,615,618,621,623,626,629],{"class":78,"line":79},[76,616,617],{"class":218},"const",[76,619,620],{"class":110}," view",[76,622,253],{"class":106},[76,624,625],{"class":82}," ModuleIframeView",[76,627,628],{"class":106}," =",[76,630,222],{"class":106},[76,632,633,636,638,640,642,644],{"class":78,"line":192},[76,634,635],{"class":241},"  type",[76,637,253],{"class":106},[76,639,120],{"class":106},[76,641,277],{"class":86},[76,643,261],{"class":106},[76,645,264],{"class":106},[76,647,648,651,653,655,657,659],{"class":78,"line":199},[76,649,650],{"class":241},"  src",[76,652,253],{"class":106},[76,654,120],{"class":106},[76,656,554],{"class":86},[76,658,261],{"class":106},[76,660,264],{"class":106},[76,662,663,666,668,672],{"class":78,"line":225},[76,664,665],{"class":241},"  persistent",[76,667,253],{"class":106},[76,669,671],{"class":670},"sfNiH"," true",[76,673,264],{"class":106},[76,675,676,679,681,684,686,689,691,694,696,699,701,704],{"class":78,"line":247},[76,677,678],{"class":241},"  permissions",[76,680,253],{"class":106},[76,682,683],{"class":110}," [",[76,685,261],{"class":106},[76,687,688],{"class":86},"camera",[76,690,261],{"class":106},[76,692,693],{"class":106},",",[76,695,120],{"class":106},[76,697,698],{"class":86},"microphone",[76,700,261],{"class":106},[76,702,703],{"class":110},"]",[76,705,264],{"class":106},[76,707,708],{"class":78,"line":267},[76,709,710],{"class":106},"}\n",[144,712,714],{"id":713},"refreshcustomtabs",[62,715,716],{},"refreshCustomTabs()",[373,718,719],{},[58,720,721,381,723,384,725,728,729,731,732,65],{},[378,722,380],{},[62,724,716],{},[62,726,727],{},"NDT_DEP_0006","). Update\ndock entries directly via the handle returned by\n",[62,730,391],{},". It still works as a shim. See the\n",[398,733,401],{"href":734},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0006",[58,736,737,738,741],{},"A shorthand for call hook ",[62,739,740],{},"devtools:customTabs:refresh",". It will refresh all custom tabs.",[144,743,745],{"id":744},"spawning-terminals","Spawning terminals",[58,747,748,449,751,754,755,761,762,765],{},[378,749,750],{},"Use Vite DevTools' own terminals host",[62,752,753],{},"ctx.terminals","), reached through the\nconnected context from ",[398,756,758],{"href":757},"#ondevtoolsready",[62,759,760],{},"onDevtoolsReady()",". It spawns and\nowns the process and surfaces it in the built-in ",[378,763,764],{},"Terminals"," dock — no\nNuxt-specific wrapper needed:",[67,767,769],{"className":93,"code":768,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\n\nonDevtoolsReady((ctx) => {\n  \u002F\u002F Output-only child process\n  ctx.terminals.startChildProcess(\n    { command: 'npm', args: ['run', 'dev'] },\n    { id: 'my-module:dev', title: 'Dev Server', icon: 'logos-npm-icon' },\n  )\n\n  \u002F\u002F Fully interactive PTY (powered by `zigpty`, with a graceful pipe fallback)\n  ctx.terminals.startPtySession(\n    { command: 'bash' },\n    { id: 'my-module:shell', title: 'Shell', interactive: true },\n  )\n})\n",[62,770,771,789,793,809,814,831,878,925,930,934,939,954,970,1009,1013],{"__ignoreMap":72},[76,772,773,775,777,779,781,783,785,787],{"class":78,"line":79},[76,774,103],{"class":102},[76,776,107],{"class":106},[76,778,179],{"class":110},[76,780,114],{"class":106},[76,782,117],{"class":102},[76,784,120],{"class":106},[76,786,123],{"class":86},[76,788,126],{"class":106},[76,790,791],{"class":78,"line":192},[76,792,196],{"emptyLinePlaceholder":195},[76,794,795,797,799,801,803,805,807],{"class":78,"line":199},[76,796,203],{"class":202},[76,798,206],{"class":110},[76,800,206],{"class":106},[76,802,212],{"class":211},[76,804,215],{"class":106},[76,806,219],{"class":218},[76,808,222],{"class":106},[76,810,811],{"class":78,"line":225},[76,812,813],{"class":456},"  \u002F\u002F Output-only child process\n",[76,815,816,818,820,823,825,828],{"class":78,"line":247},[76,817,228],{"class":110},[76,819,65],{"class":106},[76,821,822],{"class":110},"terminals",[76,824,65],{"class":106},[76,826,827],{"class":202},"startChildProcess",[76,829,830],{"class":241},"(\n",[76,832,833,836,839,841,843,845,847,849,852,854,856,858,861,863,865,867,870,872,875],{"class":78,"line":267},[76,834,835],{"class":106},"    {",[76,837,838],{"class":241}," command",[76,840,253],{"class":106},[76,842,120],{"class":106},[76,844,83],{"class":86},[76,846,261],{"class":106},[76,848,693],{"class":106},[76,850,851],{"class":241}," args",[76,853,253],{"class":106},[76,855,683],{"class":241},[76,857,261],{"class":106},[76,859,860],{"class":86},"run",[76,862,261],{"class":106},[76,864,693],{"class":106},[76,866,120],{"class":106},[76,868,869],{"class":86},"dev",[76,871,261],{"class":106},[76,873,874],{"class":241},"] ",[76,876,877],{"class":106},"},\n",[76,879,880,882,885,887,889,892,894,896,899,901,903,906,908,910,913,915,917,920,922],{"class":78,"line":284},[76,881,835],{"class":106},[76,883,884],{"class":241}," id",[76,886,253],{"class":106},[76,888,120],{"class":106},[76,890,891],{"class":86},"my-module:dev",[76,893,261],{"class":106},[76,895,693],{"class":106},[76,897,898],{"class":241}," title",[76,900,253],{"class":106},[76,902,120],{"class":106},[76,904,905],{"class":86},"Dev Server",[76,907,261],{"class":106},[76,909,693],{"class":106},[76,911,912],{"class":241}," icon",[76,914,253],{"class":106},[76,916,120],{"class":106},[76,918,919],{"class":86},"logos-npm-icon",[76,921,261],{"class":106},[76,923,924],{"class":106}," },\n",[76,926,927],{"class":78,"line":301},[76,928,929],{"class":241},"  )\n",[76,931,932],{"class":78,"line":318},[76,933,196],{"emptyLinePlaceholder":195},[76,935,936],{"class":78,"line":335},[76,937,938],{"class":456},"  \u002F\u002F Fully interactive PTY (powered by `zigpty`, with a graceful pipe fallback)\n",[76,940,941,943,945,947,949,952],{"class":78,"line":351},[76,942,228],{"class":110},[76,944,65],{"class":106},[76,946,822],{"class":110},[76,948,65],{"class":106},[76,950,951],{"class":202},"startPtySession",[76,953,830],{"class":241},[76,955,956,958,960,962,964,966,968],{"class":78,"line":360},[76,957,835],{"class":106},[76,959,838],{"class":241},[76,961,253],{"class":106},[76,963,120],{"class":106},[76,965,71],{"class":86},[76,967,261],{"class":106},[76,969,924],{"class":106},[76,971,972,974,976,978,980,983,985,987,989,991,993,996,998,1000,1003,1005,1007],{"class":78,"line":544},[76,973,835],{"class":106},[76,975,884],{"class":241},[76,977,253],{"class":106},[76,979,120],{"class":106},[76,981,982],{"class":86},"my-module:shell",[76,984,261],{"class":106},[76,986,693],{"class":106},[76,988,898],{"class":241},[76,990,253],{"class":106},[76,992,120],{"class":106},[76,994,995],{"class":86},"Shell",[76,997,261],{"class":106},[76,999,693],{"class":106},[76,1001,1002],{"class":241}," interactive",[76,1004,253],{"class":106},[76,1006,671],{"class":670},[76,1008,924],{"class":106},[76,1010,1011],{"class":78,"line":561},[76,1012,929],{"class":241},[76,1014,1015,1017],{"class":78,"line":567},[76,1016,363],{"class":106},[76,1018,357],{"class":110},[58,1020,1021,1022,1025,1026,1032,1033,1035],{},"If your module needs to keep owning the process itself and merely stream output,\nregister a read-only session with ",[62,1023,1024],{},"ctx.terminals.register({ id, title, status, stream })",".\nSee the ",[398,1027,1031],{"href":1028,"rel":1029},"https:\u002F\u002Fgithub.com\u002Fvitejs\u002Fdevtools",[1030],"nofollow","Vite DevTools Kit"," docs for the full\n",[62,1034,753],{}," API.",[144,1037,1039],{"id":1038},"startsubprocess",[62,1040,1041],{},"startSubprocess()",[373,1043,1044],{},[58,1045,1046,381,1049,1051,1052,1055,1056,1060,1061,1064,1065,1068,1069,1071,1072,1074,1075,65],{},[378,1047,1048],{},"Deprecated — do not use in new code.",[62,1050,1041],{}," is soft-deprecated\n(",[62,1053,1054],{},"NDT_DEP_0004",") in favour of the Vite DevTools terminals host, used from the\n",[398,1057,1058],{"href":757},[62,1059,203],{}," hook\n(",[62,1062,1063],{},"onDevtoolsReady((ctx) => ctx.terminals.startChildProcess(...))"," — see\n",[398,1066,745],{"href":1067},"#spawning-terminals"," above). It still works as a shim\n(bridged onto ",[62,1070,753],{},"), so existing modules keep working, but it emits\nthe ",[62,1073,1054],{}," deprecation diagnostic and will be removed in a future major.\nSee the ",[398,1076,401],{"href":1077},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0004",[58,1079,1080,1081,1083],{},"Legacy usage (module owns the process; output is surfaced as a read-only session\nin the built-in ",[378,1082,764],{}," dock):",[67,1085,1087],{"className":93,"code":1086,"language":95,"meta":72,"style":72},"import { startSubprocess } from '@nuxt\u002Fdevtools-kit'\n\nconst subprocess = startSubprocess(\n  { command: 'vite', args: ['build', '--watch'] },\n  { id: 'my-module:build', name: 'Build', icon: 'ph:terminal-duotone' },\n)\n\nsubprocess.restart()\nsubprocess.terminate()\n",[62,1088,1089,1108,1112,1126,1170,1214,1218,1222,1235],{"__ignoreMap":72},[76,1090,1091,1093,1095,1098,1100,1102,1104,1106],{"class":78,"line":79},[76,1092,103],{"class":102},[76,1094,107],{"class":106},[76,1096,1097],{"class":110}," startSubprocess",[76,1099,114],{"class":106},[76,1101,117],{"class":102},[76,1103,120],{"class":106},[76,1105,123],{"class":86},[76,1107,126],{"class":106},[76,1109,1110],{"class":78,"line":192},[76,1111,196],{"emptyLinePlaceholder":195},[76,1113,1114,1116,1119,1122,1124],{"class":78,"line":199},[76,1115,617],{"class":218},[76,1117,1118],{"class":110}," subprocess ",[76,1120,1121],{"class":106},"=",[76,1123,1097],{"class":202},[76,1125,830],{"class":110},[76,1127,1128,1131,1133,1135,1137,1140,1142,1144,1146,1148,1150,1152,1155,1157,1159,1161,1164,1166,1168],{"class":78,"line":225},[76,1129,1130],{"class":106},"  {",[76,1132,838],{"class":241},[76,1134,253],{"class":106},[76,1136,120],{"class":106},[76,1138,1139],{"class":86},"vite",[76,1141,261],{"class":106},[76,1143,693],{"class":106},[76,1145,851],{"class":241},[76,1147,253],{"class":106},[76,1149,683],{"class":110},[76,1151,261],{"class":106},[76,1153,1154],{"class":86},"build",[76,1156,261],{"class":106},[76,1158,693],{"class":106},[76,1160,120],{"class":106},[76,1162,1163],{"class":86},"--watch",[76,1165,261],{"class":106},[76,1167,874],{"class":110},[76,1169,877],{"class":106},[76,1171,1172,1174,1176,1178,1180,1183,1185,1187,1190,1192,1194,1197,1199,1201,1203,1205,1207,1210,1212],{"class":78,"line":247},[76,1173,1130],{"class":106},[76,1175,884],{"class":241},[76,1177,253],{"class":106},[76,1179,120],{"class":106},[76,1181,1182],{"class":86},"my-module:build",[76,1184,261],{"class":106},[76,1186,693],{"class":106},[76,1188,1189],{"class":241}," name",[76,1191,253],{"class":106},[76,1193,120],{"class":106},[76,1195,1196],{"class":86},"Build",[76,1198,261],{"class":106},[76,1200,693],{"class":106},[76,1202,912],{"class":241},[76,1204,253],{"class":106},[76,1206,120],{"class":106},[76,1208,1209],{"class":86},"ph:terminal-duotone",[76,1211,261],{"class":106},[76,1213,924],{"class":106},[76,1215,1216],{"class":78,"line":267},[76,1217,357],{"class":110},[76,1219,1220],{"class":78,"line":284},[76,1221,196],{"emptyLinePlaceholder":195},[76,1223,1224,1227,1229,1232],{"class":78,"line":301},[76,1225,1226],{"class":110},"subprocess",[76,1228,65],{"class":106},[76,1230,1231],{"class":202},"restart",[76,1233,1234],{"class":110},"()\n",[76,1236,1237,1239,1241,1244],{"class":78,"line":318},[76,1238,1226],{"class":110},[76,1240,65],{"class":106},[76,1242,1243],{"class":202},"terminate",[76,1245,1234],{"class":110},[144,1247,1249],{"id":1248},"extendserverrpc",[62,1250,1251],{},"extendServerRpc()",[373,1253,1254],{},[58,1255,1256,381,1258,384,1260,1263,1264,65],{},[378,1257,380],{},[62,1259,1251],{},[62,1261,1262],{},"NDT_DEP_0003",") in favour\nof the Vite DevTools RPC registration. It still works as a shim. See the\n",[398,1265,401],{"href":1266},"\u002Fmodule\u002Fmigration-v4#ndt_dep_0003",[58,1268,1269],{},"Extend the server RPC with your own methods.",[67,1271,1273],{"className":93,"code":1272,"language":95,"meta":72,"style":72},"import { extendServerRpc } from '@nuxt\u002Fdevtools-kit'\n\nconst rpc = extendServerRpc('my-module', {\n  async myMethod() {\n    return 'hello'\n  },\n})\n",[62,1274,1275,1294,1298,1321,1333,1345,1349],{"__ignoreMap":72},[76,1276,1277,1279,1281,1284,1286,1288,1290,1292],{"class":78,"line":79},[76,1278,103],{"class":102},[76,1280,107],{"class":106},[76,1282,1283],{"class":110}," extendServerRpc",[76,1285,114],{"class":106},[76,1287,117],{"class":102},[76,1289,120],{"class":106},[76,1291,123],{"class":86},[76,1293,126],{"class":106},[76,1295,1296],{"class":78,"line":192},[76,1297,196],{"emptyLinePlaceholder":195},[76,1299,1300,1302,1305,1307,1309,1311,1313,1315,1317,1319],{"class":78,"line":199},[76,1301,617],{"class":218},[76,1303,1304],{"class":110}," rpc ",[76,1306,1121],{"class":106},[76,1308,1283],{"class":202},[76,1310,206],{"class":110},[76,1312,261],{"class":106},[76,1314,258],{"class":86},[76,1316,261],{"class":106},[76,1318,693],{"class":106},[76,1320,222],{"class":106},[76,1322,1323,1326,1329,1331],{"class":78,"line":225},[76,1324,1325],{"class":218},"  async",[76,1327,1328],{"class":241}," myMethod",[76,1330,444],{"class":106},[76,1332,222],{"class":106},[76,1334,1335,1338,1340,1343],{"class":78,"line":247},[76,1336,1337],{"class":102},"    return",[76,1339,120],{"class":106},[76,1341,1342],{"class":86},"hello",[76,1344,126],{"class":106},[76,1346,1347],{"class":78,"line":267},[76,1348,564],{"class":106},[76,1350,1351,1353],{"class":78,"line":284},[76,1352,363],{"class":106},[76,1354,357],{"class":110},[58,1356,1357,1358,1362],{},"The forward path registers functions on the Vite DevTools RPC host from the\n",[398,1359,1360],{"href":757},[62,1361,760],{}," hook:",[67,1364,1366],{"className":93,"code":1365,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\nimport { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n\nexport default defineNuxtModule({\n  setup(_options, nuxt) {\n    onDevtoolsReady((ctx) => {\n      ctx.rpc.register(defineRpcFunction({\n        name: 'my-module:my-method',\n        type: 'query',\n        setup: () => ({ handler: async () => 'hello' }),\n      }))\n    })\n  },\n})\n",[62,1367,1368,1386,1406,1410,1425,1444,1461,1484,1500,1516,1557,1564,1571,1575],{"__ignoreMap":72},[76,1369,1370,1372,1374,1376,1378,1380,1382,1384],{"class":78,"line":79},[76,1371,103],{"class":102},[76,1373,107],{"class":106},[76,1375,179],{"class":110},[76,1377,114],{"class":106},[76,1379,117],{"class":102},[76,1381,120],{"class":106},[76,1383,123],{"class":86},[76,1385,126],{"class":106},[76,1387,1388,1390,1392,1395,1397,1399,1401,1404],{"class":78,"line":192},[76,1389,103],{"class":102},[76,1391,107],{"class":106},[76,1393,1394],{"class":110}," defineRpcFunction",[76,1396,114],{"class":106},[76,1398,117],{"class":102},[76,1400,120],{"class":106},[76,1402,1403],{"class":86},"@vitejs\u002Fdevtools-kit",[76,1405,126],{"class":106},[76,1407,1408],{"class":78,"line":199},[76,1409,196],{"emptyLinePlaceholder":195},[76,1411,1412,1415,1418,1421,1423],{"class":78,"line":225},[76,1413,1414],{"class":102},"export",[76,1416,1417],{"class":102}," default",[76,1419,1420],{"class":202}," defineNuxtModule",[76,1422,206],{"class":110},[76,1424,244],{"class":106},[76,1426,1427,1430,1432,1435,1437,1440,1442],{"class":78,"line":247},[76,1428,1429],{"class":241},"  setup",[76,1431,206],{"class":106},[76,1433,1434],{"class":211},"_options",[76,1436,693],{"class":106},[76,1438,1439],{"class":211}," nuxt",[76,1441,215],{"class":106},[76,1443,222],{"class":106},[76,1445,1446,1449,1451,1453,1455,1457,1459],{"class":78,"line":267},[76,1447,1448],{"class":202},"    onDevtoolsReady",[76,1450,206],{"class":241},[76,1452,206],{"class":106},[76,1454,212],{"class":211},[76,1456,215],{"class":106},[76,1458,219],{"class":218},[76,1460,222],{"class":106},[76,1462,1463,1466,1468,1471,1473,1475,1477,1480,1482],{"class":78,"line":284},[76,1464,1465],{"class":110},"      ctx",[76,1467,65],{"class":106},[76,1469,1470],{"class":110},"rpc",[76,1472,65],{"class":106},[76,1474,238],{"class":202},[76,1476,206],{"class":241},[76,1478,1479],{"class":202},"defineRpcFunction",[76,1481,206],{"class":241},[76,1483,244],{"class":106},[76,1485,1486,1489,1491,1493,1496,1498],{"class":78,"line":301},[76,1487,1488],{"class":241},"        name",[76,1490,253],{"class":106},[76,1492,120],{"class":106},[76,1494,1495],{"class":86},"my-module:my-method",[76,1497,261],{"class":106},[76,1499,264],{"class":106},[76,1501,1502,1505,1507,1509,1512,1514],{"class":78,"line":318},[76,1503,1504],{"class":241},"        type",[76,1506,253],{"class":106},[76,1508,120],{"class":106},[76,1510,1511],{"class":86},"query",[76,1513,261],{"class":106},[76,1515,264],{"class":106},[76,1517,1518,1521,1523,1526,1528,1530,1533,1536,1538,1541,1543,1545,1547,1549,1551,1553,1555],{"class":78,"line":335},[76,1519,1520],{"class":202},"        setup",[76,1522,253],{"class":106},[76,1524,1525],{"class":106}," ()",[76,1527,219],{"class":218},[76,1529,449],{"class":241},[76,1531,1532],{"class":106},"{",[76,1534,1535],{"class":202}," handler",[76,1537,253],{"class":106},[76,1539,1540],{"class":218}," async",[76,1542,1525],{"class":106},[76,1544,219],{"class":218},[76,1546,120],{"class":106},[76,1548,1342],{"class":86},[76,1550,261],{"class":106},[76,1552,114],{"class":106},[76,1554,215],{"class":241},[76,1556,264],{"class":106},[76,1558,1559,1562],{"class":78,"line":351},[76,1560,1561],{"class":106},"      }",[76,1563,572],{"class":241},[76,1565,1566,1569],{"class":78,"line":360},[76,1567,1568],{"class":106},"    }",[76,1570,357],{"class":241},[76,1572,1573],{"class":78,"line":544},[76,1574,564],{"class":106},[76,1576,1577,1579],{"class":78,"line":561},[76,1578,363],{"class":106},[76,1580,357],{"class":110},[58,1582,1583,1584,65],{},"Learn more about ",[398,1585,1587],{"href":1586},"\u002Fmodule\u002Fguide#custom-rpc-functions","Custom RPC functions",[144,1589,1591],{"id":1590},"ondevtoolsready",[62,1592,760],{},[58,1594,1595,1598,1599,1602],{},[378,1596,1597],{},"The recommended entry point for DevTools integration."," The callback runs once\nthe Vite DevTools kit has connected and receives the connected\n",[62,1600,1601],{},"ViteDevToolsNodeContext",", so the full devframe surface is guaranteed to be\navailable — no connect-safe buffering needed. Do all your DevTools integration here:",[67,1604,1606],{"className":93,"code":1605,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit'\nimport { defineRpcFunction } from '@vitejs\u002Fdevtools-kit'\n\nexport default defineNuxtModule({\n  setup(_options, nuxt) {\n    onDevtoolsReady((ctx) => {\n      \u002F\u002F `ctx` is the connected ViteDevToolsNodeContext\n      ctx.docks.register({\n        id: 'my-module',\n        title: 'My Module',\n        type: 'iframe',\n        url: '\u002F__my-module__\u002F',\n      })\n\n      ctx.rpc.register(defineRpcFunction({\n        name: 'my-module:my-method',\n        type: 'query',\n        setup: () => ({ handler: async () => 'hello' }),\n      }))\n\n      ctx.messages.info('My module is ready')\n    })\n  },\n})\n",[62,1607,1608,1626,1644,1648,1660,1676,1692,1697,1713,1728,1743,1757,1773,1779,1783,1803,1818,1833,1870,1877,1882,1908,1915,1920],{"__ignoreMap":72},[76,1609,1610,1612,1614,1616,1618,1620,1622,1624],{"class":78,"line":79},[76,1611,103],{"class":102},[76,1613,107],{"class":106},[76,1615,179],{"class":110},[76,1617,114],{"class":106},[76,1619,117],{"class":102},[76,1621,120],{"class":106},[76,1623,123],{"class":86},[76,1625,126],{"class":106},[76,1627,1628,1630,1632,1634,1636,1638,1640,1642],{"class":78,"line":192},[76,1629,103],{"class":102},[76,1631,107],{"class":106},[76,1633,1394],{"class":110},[76,1635,114],{"class":106},[76,1637,117],{"class":102},[76,1639,120],{"class":106},[76,1641,1403],{"class":86},[76,1643,126],{"class":106},[76,1645,1646],{"class":78,"line":199},[76,1647,196],{"emptyLinePlaceholder":195},[76,1649,1650,1652,1654,1656,1658],{"class":78,"line":225},[76,1651,1414],{"class":102},[76,1653,1417],{"class":102},[76,1655,1420],{"class":202},[76,1657,206],{"class":110},[76,1659,244],{"class":106},[76,1661,1662,1664,1666,1668,1670,1672,1674],{"class":78,"line":247},[76,1663,1429],{"class":241},[76,1665,206],{"class":106},[76,1667,1434],{"class":211},[76,1669,693],{"class":106},[76,1671,1439],{"class":211},[76,1673,215],{"class":106},[76,1675,222],{"class":106},[76,1677,1678,1680,1682,1684,1686,1688,1690],{"class":78,"line":267},[76,1679,1448],{"class":202},[76,1681,206],{"class":241},[76,1683,206],{"class":106},[76,1685,212],{"class":211},[76,1687,215],{"class":106},[76,1689,219],{"class":218},[76,1691,222],{"class":106},[76,1693,1694],{"class":78,"line":284},[76,1695,1696],{"class":456},"      \u002F\u002F `ctx` is the connected ViteDevToolsNodeContext\n",[76,1698,1699,1701,1703,1705,1707,1709,1711],{"class":78,"line":301},[76,1700,1465],{"class":110},[76,1702,65],{"class":106},[76,1704,233],{"class":110},[76,1706,65],{"class":106},[76,1708,238],{"class":202},[76,1710,206],{"class":241},[76,1712,244],{"class":106},[76,1714,1715,1718,1720,1722,1724,1726],{"class":78,"line":318},[76,1716,1717],{"class":241},"        id",[76,1719,253],{"class":106},[76,1721,120],{"class":106},[76,1723,258],{"class":86},[76,1725,261],{"class":106},[76,1727,264],{"class":106},[76,1729,1730,1733,1735,1737,1739,1741],{"class":78,"line":335},[76,1731,1732],{"class":241},"        title",[76,1734,253],{"class":106},[76,1736,120],{"class":106},[76,1738,294],{"class":86},[76,1740,261],{"class":106},[76,1742,264],{"class":106},[76,1744,1745,1747,1749,1751,1753,1755],{"class":78,"line":351},[76,1746,1504],{"class":241},[76,1748,253],{"class":106},[76,1750,120],{"class":106},[76,1752,277],{"class":86},[76,1754,261],{"class":106},[76,1756,264],{"class":106},[76,1758,1759,1762,1764,1766,1769,1771],{"class":78,"line":360},[76,1760,1761],{"class":241},"        url",[76,1763,253],{"class":106},[76,1765,120],{"class":106},[76,1767,1768],{"class":86},"\u002F__my-module__\u002F",[76,1770,261],{"class":106},[76,1772,264],{"class":106},[76,1774,1775,1777],{"class":78,"line":544},[76,1776,1561],{"class":106},[76,1778,357],{"class":241},[76,1780,1781],{"class":78,"line":561},[76,1782,196],{"emptyLinePlaceholder":195},[76,1784,1785,1787,1789,1791,1793,1795,1797,1799,1801],{"class":78,"line":567},[76,1786,1465],{"class":110},[76,1788,65],{"class":106},[76,1790,1470],{"class":110},[76,1792,65],{"class":106},[76,1794,238],{"class":202},[76,1796,206],{"class":241},[76,1798,1479],{"class":202},[76,1800,206],{"class":241},[76,1802,244],{"class":106},[76,1804,1806,1808,1810,1812,1814,1816],{"class":78,"line":1805},16,[76,1807,1488],{"class":241},[76,1809,253],{"class":106},[76,1811,120],{"class":106},[76,1813,1495],{"class":86},[76,1815,261],{"class":106},[76,1817,264],{"class":106},[76,1819,1821,1823,1825,1827,1829,1831],{"class":78,"line":1820},17,[76,1822,1504],{"class":241},[76,1824,253],{"class":106},[76,1826,120],{"class":106},[76,1828,1511],{"class":86},[76,1830,261],{"class":106},[76,1832,264],{"class":106},[76,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868],{"class":78,"line":1835},18,[76,1837,1520],{"class":202},[76,1839,253],{"class":106},[76,1841,1525],{"class":106},[76,1843,219],{"class":218},[76,1845,449],{"class":241},[76,1847,1532],{"class":106},[76,1849,1535],{"class":202},[76,1851,253],{"class":106},[76,1853,1540],{"class":218},[76,1855,1525],{"class":106},[76,1857,219],{"class":218},[76,1859,120],{"class":106},[76,1861,1342],{"class":86},[76,1863,261],{"class":106},[76,1865,114],{"class":106},[76,1867,215],{"class":241},[76,1869,264],{"class":106},[76,1871,1873,1875],{"class":78,"line":1872},19,[76,1874,1561],{"class":106},[76,1876,572],{"class":241},[76,1878,1880],{"class":78,"line":1879},20,[76,1881,196],{"emptyLinePlaceholder":195},[76,1883,1885,1887,1889,1892,1894,1897,1899,1901,1904,1906],{"class":78,"line":1884},21,[76,1886,1465],{"class":110},[76,1888,65],{"class":106},[76,1890,1891],{"class":110},"messages",[76,1893,65],{"class":106},[76,1895,1896],{"class":202},"info",[76,1898,206],{"class":241},[76,1900,261],{"class":106},[76,1902,1903],{"class":86},"My module is ready",[76,1905,261],{"class":106},[76,1907,357],{"class":241},[76,1909,1911,1913],{"class":78,"line":1910},22,[76,1912,1568],{"class":106},[76,1914,357],{"class":241},[76,1916,1918],{"class":78,"line":1917},23,[76,1919,564],{"class":106},[76,1921,1923,1925],{"class":78,"line":1922},24,[76,1924,363],{"class":106},[76,1926,357],{"class":110},[58,1928,1929,1930,1933],{},"It is backed by the ",[62,1931,1932],{},"devtools:ready"," Nuxt hook:",[67,1935,1937],{"className":93,"code":1936,"language":95,"meta":72,"style":72},"nuxt.hook('devtools:ready', (ctx) => {\n  \u002F\u002F ...\n})\n",[62,1938,1939,1968,1973],{"__ignoreMap":72},[76,1940,1941,1943,1945,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966],{"class":78,"line":79},[76,1942,160],{"class":110},[76,1944,65],{"class":106},[76,1946,1947],{"class":202},"hook",[76,1949,206],{"class":110},[76,1951,261],{"class":106},[76,1953,1932],{"class":86},[76,1955,261],{"class":106},[76,1957,693],{"class":106},[76,1959,449],{"class":106},[76,1961,212],{"class":211},[76,1963,215],{"class":106},[76,1965,219],{"class":218},[76,1967,222],{"class":106},[76,1969,1970],{"class":78,"line":192},[76,1971,1972],{"class":456},"  \u002F\u002F ...\n",[76,1974,1975,1977],{"class":78,"line":199},[76,1976,363],{"class":106},[76,1978,357],{"class":110},[58,1980,1981,1982,1984,1985,1987,1988,1990],{},"Inside ",[62,1983,760],{},", the ",[62,1986,212],{}," is the connected ",[62,1989,1601],{},",\nwhich exposes the full devframe-native surface:",[577,1992,1993,1999,2004,2010,2016,2027],{},[580,1994,1995,1998],{},[62,1996,1997],{},"ctx.docks"," — register dock entries (iframe \u002F action \u002F json-render \u002F launcher)",[580,2000,2001,2003],{},[62,2002,753],{}," — spawn and manage child processes \u002F PTY sessions",[580,2005,2006,2009],{},[62,2007,2008],{},"ctx.messages"," — structured messages and toast notifications",[580,2011,2012,2015],{},[62,2013,2014],{},"ctx.commands"," — command-palette entries",[580,2017,2018,2021,2022,215],{},[62,2019,2020],{},"ctx.diagnostics"," — structured, coded diagnostics (powered by ",[398,2023,2026],{"href":2024,"rel":2025},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fnostics",[1030],"nostics",[580,2028,2029,2032,2033,2035,2036,2035,2039,2035,2042,2035,2045,2048],{},[62,2030,2031],{},"ctx.rpc"," — the devframe RPC host (",[62,2034,238],{},"\u002F",[62,2037,2038],{},"invokeLocal",[62,2040,2041],{},"broadcast",[62,2043,2044],{},"sharedState",[62,2046,2047],{},"streaming","\u002F…)",[58,2050,2051,2052,2055,2056,2059],{},"If you need the raw context outside the hook, ",[62,2053,2054],{},"nuxt.devtools.devtoolsKit"," is\navailable as an escape hatch (it is ",[62,2057,2058],{},"undefined"," until the kit connects).",[58,2061,2062,2063,2066],{},"See the ",[398,2064,1031],{"href":1028,"rel":2065},[1030]," docs for the\nfull host API.",[144,2068,2070],{"id":2069},"deprecation-diagnostics","Deprecation diagnostics",[58,2072,2073,2074,2077,2078,2080,2081,2083,2084,2088,2089,65],{},"Nuxt DevTools emits coded deprecation diagnostics (",[62,2075,2076],{},"NDT_DEP_xxxx",") through\n",[62,2079,2026],{},". They print to the terminal and, once the Vite DevTools kit connects,\nalso surface in the DevTools diagnostics UI, each with a code, a fix, and a link\nto the ",[398,2082,401],{"href":41},". See\n",[398,2085,2086],{"href":1266},[62,2087,1251],{}," and\n",[398,2090,2091],{"href":1077},[62,2092,1041],{},[144,2094,2096,2099],{"id":2095},"devtoolsnotify-hook",[62,2097,2098],{},"devtools:notify"," hook",[58,2101,2102,2103,2106,2107,2109,2110,2112],{},"Push a notification into the unified devframe ",[378,2104,2105],{},"Messages"," system — the same\nsystem that powers the Vite DevTools ",[378,2108,2105],{}," dock and its toast overlay.\nThe notification is forwarded to ",[62,2111,2008],{},", so no direct kit access is\nneeded, and calls made before the kit connects are buffered and replayed once\nit does:",[67,2114,2116],{"className":93,"code":2115,"language":95,"meta":72,"style":72},"\u002F\u002F server-side (module setup)\nnuxt.callHook('devtools:notify', {\n  message: 'Something happened',\n  level: 'error', \u002F\u002F 'info' | 'warn' | 'error' | 'success' | 'debug' (default 'info')\n  description: 'More details about what happened.',\n  notify: true, \u002F\u002F also show a transient toast\n})\n",[62,2117,2118,2123,2144,2160,2179,2195,2209],{"__ignoreMap":72},[76,2119,2120],{"class":78,"line":79},[76,2121,2122],{"class":456},"\u002F\u002F server-side (module setup)\n",[76,2124,2125,2127,2129,2132,2134,2136,2138,2140,2142],{"class":78,"line":192},[76,2126,160],{"class":110},[76,2128,65],{"class":106},[76,2130,2131],{"class":202},"callHook",[76,2133,206],{"class":110},[76,2135,261],{"class":106},[76,2137,2098],{"class":86},[76,2139,261],{"class":106},[76,2141,693],{"class":106},[76,2143,222],{"class":106},[76,2145,2146,2149,2151,2153,2156,2158],{"class":78,"line":199},[76,2147,2148],{"class":241},"  message",[76,2150,253],{"class":106},[76,2152,120],{"class":106},[76,2154,2155],{"class":86},"Something happened",[76,2157,261],{"class":106},[76,2159,264],{"class":106},[76,2161,2162,2165,2167,2169,2172,2174,2176],{"class":78,"line":225},[76,2163,2164],{"class":241},"  level",[76,2166,253],{"class":106},[76,2168,120],{"class":106},[76,2170,2171],{"class":86},"error",[76,2173,261],{"class":106},[76,2175,693],{"class":106},[76,2177,2178],{"class":456}," \u002F\u002F 'info' | 'warn' | 'error' | 'success' | 'debug' (default 'info')\n",[76,2180,2181,2184,2186,2188,2191,2193],{"class":78,"line":247},[76,2182,2183],{"class":241},"  description",[76,2185,253],{"class":106},[76,2187,120],{"class":106},[76,2189,2190],{"class":86},"More details about what happened.",[76,2192,261],{"class":106},[76,2194,264],{"class":106},[76,2196,2197,2200,2202,2204,2206],{"class":78,"line":267},[76,2198,2199],{"class":241},"  notify",[76,2201,253],{"class":106},[76,2203,671],{"class":670},[76,2205,693],{"class":106},[76,2207,2208],{"class":456}," \u002F\u002F also show a transient toast\n",[76,2210,2211,2213],{"class":78,"line":284},[76,2212,363],{"class":106},[76,2214,357],{"class":110},[58,2216,2217,2218,2221,2222,2224,2225,2228,2229,2228,2232,2234,2235,2238,2239,65],{},"Omit ",[62,2219,2220],{},"autoDelete"," for a ",[378,2223,590],{},", leveled entry that builds history in the\nMessages dock; set ",[62,2226,2227],{},"notify"," + ",[62,2230,2231],{},"autoDismiss",[62,2233,2220],{}," for an ",[378,2236,2237],{},"ephemeral",",\ntoast-only notification. From the client, the same input is available on the\ninjected client as ",[62,2240,2241],{},"client.devtools.notify(...)",[138,2243,2245],{"id":2244},"nuxtdevtools-kitiframe-client",[62,2246,2247],{},"@nuxt\u002Fdevtools-kit\u002Fiframe-client",[58,2249,2250],{},"To provide complex interactions for your module integrations, we recommend to host your own view and display it in devtools via iframe.",[58,2252,2253],{},"To get the infomation from the devtools and the client app, you can do this in your client app:",[67,2255,2257],{"className":93,"code":2256,"language":95,"meta":72,"style":72},"import { useDevtoolsClient } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nexport const devtoolsClient = useDevtoolsClient()\n",[62,2258,2259,2278,2282],{"__ignoreMap":72},[76,2260,2261,2263,2265,2268,2270,2272,2274,2276],{"class":78,"line":79},[76,2262,103],{"class":102},[76,2264,107],{"class":106},[76,2266,2267],{"class":110}," useDevtoolsClient",[76,2269,114],{"class":106},[76,2271,117],{"class":102},[76,2273,120],{"class":106},[76,2275,2247],{"class":86},[76,2277,126],{"class":106},[76,2279,2280],{"class":78,"line":192},[76,2281,196],{"emptyLinePlaceholder":195},[76,2283,2284,2286,2289,2292,2294,2296],{"class":78,"line":199},[76,2285,1414],{"class":102},[76,2287,2288],{"class":218}," const",[76,2290,2291],{"class":110}," devtoolsClient ",[76,2293,1121],{"class":106},[76,2295,2267],{"class":202},[76,2297,1234],{"class":110},[58,2299,2300,2301,2304,2305,2308],{},"When the iframe been served with the same origin (CORS limitation), devtools will automatically inject ",[62,2302,2303],{},"__NUXT_DEVTOOLS__"," to the iframe's window object. You can access it as a ref using ",[62,2306,2307],{},"useDevtoolsClient()"," utility.",[144,2310,2312],{"id":2311},"ondevtoolsready-1",[62,2313,760],{},[58,2315,2316,2317,2321,2322,2325,2326,2329],{},"The client-side mirror of the server's ",[398,2318,2319],{"href":757},[62,2320,203],{},". The\ncallback runs once the Vite DevTools client is connected and receives the\n",[62,2323,2324],{},"DevToolsRpcClient"," (the same object as ",[62,2327,2328],{},"client.devtools.devtoolsKit","), giving\nfull devframe-native access. This is the recommended way to register client RPC\nfunctions:",[67,2331,2333],{"className":93,"code":2332,"language":95,"meta":72,"style":72},"import { onDevtoolsReady } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nonDevtoolsReady((kit) => {\n  kit.client.register({\n    name: 'my-module:on-update',\n    type: 'event',\n    handler: (payload) => {\n      \u002F\u002F ...\n    },\n  })\n})\n",[62,2334,2335,2353,2357,2374,2392,2408,2423,2441,2446,2451,2457],{"__ignoreMap":72},[76,2336,2337,2339,2341,2343,2345,2347,2349,2351],{"class":78,"line":79},[76,2338,103],{"class":102},[76,2340,107],{"class":106},[76,2342,179],{"class":110},[76,2344,114],{"class":106},[76,2346,117],{"class":102},[76,2348,120],{"class":106},[76,2350,2247],{"class":86},[76,2352,126],{"class":106},[76,2354,2355],{"class":78,"line":192},[76,2356,196],{"emptyLinePlaceholder":195},[76,2358,2359,2361,2363,2365,2368,2370,2372],{"class":78,"line":199},[76,2360,203],{"class":202},[76,2362,206],{"class":110},[76,2364,206],{"class":106},[76,2366,2367],{"class":211},"kit",[76,2369,215],{"class":106},[76,2371,219],{"class":218},[76,2373,222],{"class":106},[76,2375,2376,2379,2381,2384,2386,2388,2390],{"class":78,"line":225},[76,2377,2378],{"class":110},"  kit",[76,2380,65],{"class":106},[76,2382,2383],{"class":110},"client",[76,2385,65],{"class":106},[76,2387,238],{"class":202},[76,2389,206],{"class":241},[76,2391,244],{"class":106},[76,2393,2394,2397,2399,2401,2404,2406],{"class":78,"line":247},[76,2395,2396],{"class":241},"    name",[76,2398,253],{"class":106},[76,2400,120],{"class":106},[76,2402,2403],{"class":86},"my-module:on-update",[76,2405,261],{"class":106},[76,2407,264],{"class":106},[76,2409,2410,2412,2414,2416,2419,2421],{"class":78,"line":267},[76,2411,270],{"class":241},[76,2413,253],{"class":106},[76,2415,120],{"class":106},[76,2417,2418],{"class":86},"event",[76,2420,261],{"class":106},[76,2422,264],{"class":106},[76,2424,2425,2428,2430,2432,2435,2437,2439],{"class":78,"line":284},[76,2426,2427],{"class":202},"    handler",[76,2429,253],{"class":106},[76,2431,449],{"class":106},[76,2433,2434],{"class":211},"payload",[76,2436,215],{"class":106},[76,2438,219],{"class":218},[76,2440,222],{"class":106},[76,2442,2443],{"class":78,"line":301},[76,2444,2445],{"class":456},"      \u002F\u002F ...\n",[76,2447,2448],{"class":78,"line":318},[76,2449,2450],{"class":106},"    },\n",[76,2452,2453,2455],{"class":78,"line":335},[76,2454,354],{"class":106},[76,2456,357],{"class":241},[76,2458,2459,2461],{"class":78,"line":351},[76,2460,363],{"class":106},[76,2462,357],{"class":110},[144,2464,2466],{"id":2465},"usedevtoolsclient",[62,2467,2307],{},[58,2469,2470,2471,2474,2475,2478],{},"It will return a ref of ",[62,2472,2473],{},"NuxtDevtoolsIframeClient"," object that are intially ",[62,2476,2477],{},"null"," and will be updated when the connection is ready.",[58,2480,2481,2483],{},[62,2482,2473],{}," contains two properties:",[577,2485,2486,2492],{},[580,2487,2488,2491],{},[62,2489,2490],{},"host",": APIs to communicate with the main app in browser",[580,2493,2494,2497],{},[62,2495,2496],{},"devtools",": APIs to communicate with the devtools",[58,2499,2500,2502],{},[62,2501,2490],{}," can be undefined when devtools are accessed standalone or from a different origin.",[58,2504,2505],{},"For example, you can get the router instance from the client app:",[67,2507,2509],{"className":93,"code":2508,"language":95,"meta":72,"style":72},"const router = computed(() => devtoolsClient.value?.host?.nuxt.vueApp.config.globalProperties?.$router)\n",[62,2510,2511],{"__ignoreMap":72},[76,2512,2513,2515,2518,2520,2523,2525,2527,2529,2532,2534,2537,2540,2542,2544,2546,2548,2551,2553,2556,2558,2561,2563],{"class":78,"line":79},[76,2514,617],{"class":218},[76,2516,2517],{"class":110}," router ",[76,2519,1121],{"class":106},[76,2521,2522],{"class":202}," computed",[76,2524,206],{"class":110},[76,2526,444],{"class":106},[76,2528,219],{"class":218},[76,2530,2531],{"class":110}," devtoolsClient",[76,2533,65],{"class":106},[76,2535,2536],{"class":110},"value",[76,2538,2539],{"class":106},"?.",[76,2541,2490],{"class":110},[76,2543,2539],{"class":106},[76,2545,160],{"class":110},[76,2547,65],{"class":106},[76,2549,2550],{"class":110},"vueApp",[76,2552,65],{"class":106},[76,2554,2555],{"class":110},"config",[76,2557,65],{"class":106},[76,2559,2560],{"class":110},"globalProperties",[76,2562,2539],{"class":106},[76,2564,2565],{"class":110},"$router)\n",[58,2567,2568,2569,2571,2572,2575,2576,2578],{},"The ",[62,2570,2496],{}," object also exposes ",[62,2573,2574],{},"devtoolsKit"," — the connected Vite DevTools\nRPC client (mirroring ",[62,2577,2054],{}," on the server) — for full\ndevframe-native access. Use it to register client RPC functions, call server\nfunctions, and more:",[67,2580,2582],{"className":93,"code":2581,"language":95,"meta":72,"style":72},"const kit = devtoolsClient.value?.devtools.devtoolsKit\nkit?.client.register({\n  name: 'my-module:on-update',\n  type: 'event',\n  handler: (payload) => {\n    \u002F\u002F ...\n  },\n})\n",[62,2583,2584,2608,2624,2638,2652,2669,2674,2678],{"__ignoreMap":72},[76,2585,2586,2588,2591,2593,2595,2597,2599,2601,2603,2605],{"class":78,"line":79},[76,2587,617],{"class":218},[76,2589,2590],{"class":110}," kit ",[76,2592,1121],{"class":106},[76,2594,2531],{"class":110},[76,2596,65],{"class":106},[76,2598,2536],{"class":110},[76,2600,2539],{"class":106},[76,2602,2496],{"class":110},[76,2604,65],{"class":106},[76,2606,2607],{"class":110},"devtoolsKit\n",[76,2609,2610,2612,2614,2616,2618,2620,2622],{"class":78,"line":192},[76,2611,2367],{"class":110},[76,2613,2539],{"class":106},[76,2615,2383],{"class":110},[76,2617,65],{"class":106},[76,2619,238],{"class":202},[76,2621,206],{"class":110},[76,2623,244],{"class":106},[76,2625,2626,2628,2630,2632,2634,2636],{"class":78,"line":199},[76,2627,462],{"class":241},[76,2629,253],{"class":106},[76,2631,120],{"class":106},[76,2633,2403],{"class":86},[76,2635,261],{"class":106},[76,2637,264],{"class":106},[76,2639,2640,2642,2644,2646,2648,2650],{"class":78,"line":225},[76,2641,635],{"class":241},[76,2643,253],{"class":106},[76,2645,120],{"class":106},[76,2647,2418],{"class":86},[76,2649,261],{"class":106},[76,2651,264],{"class":106},[76,2653,2654,2657,2659,2661,2663,2665,2667],{"class":78,"line":247},[76,2655,2656],{"class":202},"  handler",[76,2658,253],{"class":106},[76,2660,449],{"class":106},[76,2662,2434],{"class":211},[76,2664,215],{"class":106},[76,2666,219],{"class":218},[76,2668,222],{"class":106},[76,2670,2671],{"class":78,"line":267},[76,2672,2673],{"class":456},"    \u002F\u002F ...\n",[76,2675,2676],{"class":78,"line":284},[76,2677,564],{"class":106},[76,2679,2680,2682],{"class":78,"line":301},[76,2681,363],{"class":106},[76,2683,357],{"class":110},[58,2685,2686,2687,65],{},"This replaces the deprecated ",[62,2688,2689],{},"devtools.extendClientRpc()",[144,2691,2693],{"id":2692},"ondevtoolsclientconnected",[62,2694,2695],{},"onDevtoolsClientConnected()",[58,2697,2698,2699,2701],{},"Similiar to ",[62,2700,2307],{}," but as a callback style:",[67,2703,2705],{"className":93,"code":2704,"language":95,"meta":72,"style":72},"import { onDevtoolsClientConnected } from '@nuxt\u002Fdevtools-kit\u002Fiframe-client'\n\nonDevtoolsClientConnected(async (client) => {\n  \u002F\u002F client is NuxtDevtoolsIframeClient\n\n  const config = client.devtools.rpc.getServerConfig()\n  \u002F\u002F ...\n})\n",[62,2706,2707,2726,2730,2750,2755,2759,2787,2791],{"__ignoreMap":72},[76,2708,2709,2711,2713,2716,2718,2720,2722,2724],{"class":78,"line":79},[76,2710,103],{"class":102},[76,2712,107],{"class":106},[76,2714,2715],{"class":110}," onDevtoolsClientConnected",[76,2717,114],{"class":106},[76,2719,117],{"class":102},[76,2721,120],{"class":106},[76,2723,2247],{"class":86},[76,2725,126],{"class":106},[76,2727,2728],{"class":78,"line":192},[76,2729,196],{"emptyLinePlaceholder":195},[76,2731,2732,2735,2737,2740,2742,2744,2746,2748],{"class":78,"line":199},[76,2733,2734],{"class":202},"onDevtoolsClientConnected",[76,2736,206],{"class":110},[76,2738,2739],{"class":218},"async",[76,2741,449],{"class":106},[76,2743,2383],{"class":211},[76,2745,215],{"class":106},[76,2747,219],{"class":218},[76,2749,222],{"class":106},[76,2751,2752],{"class":78,"line":225},[76,2753,2754],{"class":456},"  \u002F\u002F client is NuxtDevtoolsIframeClient\n",[76,2756,2757],{"class":78,"line":247},[76,2758,196],{"emptyLinePlaceholder":195},[76,2760,2761,2764,2767,2769,2772,2774,2776,2778,2780,2782,2785],{"class":78,"line":267},[76,2762,2763],{"class":218},"  const",[76,2765,2766],{"class":110}," config",[76,2768,628],{"class":106},[76,2770,2771],{"class":110}," client",[76,2773,65],{"class":106},[76,2775,2496],{"class":110},[76,2777,65],{"class":106},[76,2779,1470],{"class":110},[76,2781,65],{"class":106},[76,2783,2784],{"class":202},"getServerConfig",[76,2786,1234],{"class":241},[76,2788,2789],{"class":78,"line":284},[76,2790,1972],{"class":456},[76,2792,2793,2795],{"class":78,"line":301},[76,2794,363],{"class":106},[76,2796,357],{"class":110},[138,2798,2800],{"id":2799},"nuxtdevtools-kithost-client",[62,2801,2802],{},"@nuxt\u002Fdevtools-kit\u002Fhost-client",[58,2804,2805,2806,2808],{},"When you have iframe for your devtools view, sometimes you need to communicate with the devtools host (the main app in browser) with a runtime plugin. You can use ",[62,2807,2802],{}," to do that.",[144,2810,2812],{"id":2811},"usedevtoolshostclient",[62,2813,2814],{},"useDevtoolsHostClient()",[58,2816,2470,2817,2474,2820,2822],{},[62,2818,2819],{},"NuxtDevtoolsHostClient",[62,2821,2477],{}," and will be updated when the host is initialized by NuxtDevtools.",[67,2824,2826],{"className":93,"code":2825,"language":95,"meta":72,"style":72},"import { useDevtoolsHostClient } from '@nuxt\u002Fdevtools-kit\u002Fhost-client'\n\nexport default defineNuxtPlugin({\n  name: 'my-module:devtools',\n  setup(nuxtApp) {\n    const devtoolsHost = useDevtoolsHostClient()\n\n    \u002F\u002F ...\n  }\n})\n",[62,2827,2828,2847,2851,2864,2879,2892,2906,2910,2914,2919],{"__ignoreMap":72},[76,2829,2830,2832,2834,2837,2839,2841,2843,2845],{"class":78,"line":79},[76,2831,103],{"class":102},[76,2833,107],{"class":106},[76,2835,2836],{"class":110}," useDevtoolsHostClient",[76,2838,114],{"class":106},[76,2840,117],{"class":102},[76,2842,120],{"class":106},[76,2844,2802],{"class":86},[76,2846,126],{"class":106},[76,2848,2849],{"class":78,"line":192},[76,2850,196],{"emptyLinePlaceholder":195},[76,2852,2853,2855,2857,2860,2862],{"class":78,"line":199},[76,2854,1414],{"class":102},[76,2856,1417],{"class":102},[76,2858,2859],{"class":202}," defineNuxtPlugin",[76,2861,206],{"class":110},[76,2863,244],{"class":106},[76,2865,2866,2868,2870,2872,2875,2877],{"class":78,"line":225},[76,2867,462],{"class":241},[76,2869,253],{"class":106},[76,2871,120],{"class":106},[76,2873,2874],{"class":86},"my-module:devtools",[76,2876,261],{"class":106},[76,2878,264],{"class":106},[76,2880,2881,2883,2885,2888,2890],{"class":78,"line":247},[76,2882,1429],{"class":241},[76,2884,206],{"class":106},[76,2886,2887],{"class":211},"nuxtApp",[76,2889,215],{"class":106},[76,2891,222],{"class":106},[76,2893,2894,2897,2900,2902,2904],{"class":78,"line":267},[76,2895,2896],{"class":218},"    const",[76,2898,2899],{"class":110}," devtoolsHost",[76,2901,628],{"class":106},[76,2903,2836],{"class":202},[76,2905,1234],{"class":241},[76,2907,2908],{"class":78,"line":284},[76,2909,196],{"emptyLinePlaceholder":195},[76,2911,2912],{"class":78,"line":301},[76,2913,2673],{"class":456},[76,2915,2916],{"class":78,"line":318},[76,2917,2918],{"class":106},"  }\n",[76,2920,2921,2923],{"class":78,"line":335},[76,2922,363],{"class":106},[76,2924,357],{"class":110},[144,2926,2928],{"id":2927},"ondevtoolshostclientconnected",[62,2929,2930],{},"onDevtoolsHostClientConnected()",[58,2932,2698,2933,2701],{},[62,2934,2814],{},[67,2936,2938],{"className":93,"code":2937,"language":95,"meta":72,"style":72},"import { onDevtoolsHostClientConnected } from '@nuxt\u002Fdevtools-kit\u002Fhost-client'\n\nonDevtoolsHostClientConnected(async (host) => {\n\n})\n",[62,2939,2940,2959,2963,2982,2986],{"__ignoreMap":72},[76,2941,2942,2944,2946,2949,2951,2953,2955,2957],{"class":78,"line":79},[76,2943,103],{"class":102},[76,2945,107],{"class":106},[76,2947,2948],{"class":110}," onDevtoolsHostClientConnected",[76,2950,114],{"class":106},[76,2952,117],{"class":102},[76,2954,120],{"class":106},[76,2956,2802],{"class":86},[76,2958,126],{"class":106},[76,2960,2961],{"class":78,"line":192},[76,2962,196],{"emptyLinePlaceholder":195},[76,2964,2965,2968,2970,2972,2974,2976,2978,2980],{"class":78,"line":199},[76,2966,2967],{"class":202},"onDevtoolsHostClientConnected",[76,2969,206],{"class":110},[76,2971,2739],{"class":218},[76,2973,449],{"class":106},[76,2975,2490],{"class":211},[76,2977,215],{"class":106},[76,2979,219],{"class":218},[76,2981,222],{"class":106},[76,2983,2984],{"class":78,"line":225},[76,2985,196],{"emptyLinePlaceholder":195},[76,2987,2988,2990],{"class":78,"line":247},[76,2989,363],{"class":106},[76,2991,357],{"class":110},[2993,2994,2995],"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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":72,"searchDepth":192,"depth":192,"links":2997},[2998,3011,3016],{"id":140,"depth":192,"text":123,"children":2999},[3000,3002,3003,3004,3005,3006,3007,3008,3009],{"id":146,"depth":199,"text":3001},"Joining the Nuxt Dock Group",{"id":368,"depth":199,"text":371},{"id":713,"depth":199,"text":716},{"id":744,"depth":199,"text":745},{"id":1038,"depth":199,"text":1041},{"id":1248,"depth":199,"text":1251},{"id":1590,"depth":199,"text":760},{"id":2069,"depth":199,"text":2070},{"id":2095,"depth":199,"text":3010},"devtools:notify hook",{"id":2244,"depth":192,"text":2247,"children":3012},[3013,3014,3015],{"id":2311,"depth":199,"text":760},{"id":2465,"depth":199,"text":2307},{"id":2692,"depth":199,"text":2695},{"id":2799,"depth":192,"text":2802,"children":3017},[3018,3019],{"id":2811,"depth":199,"text":2814},{"id":2927,"depth":199,"text":2930},"Utility kit for easier DevTools integrations.","md",{},{"title":32,"description":3020},"g9IX_CX-FrX6_SJ5BjTJfbv-eM0A3DTdedd7YGsMVUw",[3026,3028],{"title":28,"path":29,"stem":30,"description":3027,"children":-1},"Add your own modules integration to the Nuxt DevTools.",{"title":36,"path":37,"stem":38,"description":3029,"children":-1},"UI Kit is for module authors to build a custom view.",1784897452768]