[{"data":1,"prerenderedAt":374},["ShallowReactive",2],{"page:\u002Fdocs\u002F5.x\u002Freference\u002Fkit":3},{"id":4,"title":5,"body":6,"description":354,"extension":355,"frontmatter":356,"heading":5,"meta":364,"navigation":366,"order":360,"path":367,"seo":368,"sitemap":369,"source":370,"stem":371,"__hash__":372,"hasPopups":373},"docs\u002Fdocs\u002F5.x\u002Freference\u002Fkit.md","Kit API",{"type":7,"value":8,"toc":347},"minimark",[9,22,27,214,218],[10,11,12,13,17,18,21],"p",{},"Import authoring APIs from ",[14,15,16],"code",{},"kubb\u002Fkit",", included with the ",[14,19,20],{},"kubb"," package.",[23,24,26],"h2",{"id":25},"big-concepts","Big concepts",[28,29,30,46],"table",{},[31,32,33],"thead",{},[34,35,36,40,43],"tr",{},[37,38,39],"th",{},"Concept",[37,41,42],{},"Entry point",[37,44,45],{},"What it does",[47,48,49,72,88,104,128,146,167,192],"tbody",{},[34,50,51,59,69],{},[52,53,54],"td",{},[55,56,58],"a",{"href":57},".\u002Fkit\u002Fplugins","Plugins",[52,60,61,64,65,68],{},[14,62,63],{},"defineExtension"," (",[14,66,67],{},"kind: 'plugin'",")",[52,70,71],{},"The main extension point. Owns file naming, the output folder, and the lifecycle hooks.",[34,73,74,80,85],{},[52,75,76],{},[55,77,79],{"href":78},".\u002Fkit\u002Fgenerators","Generators",[52,81,82],{},[14,83,84],{},"defineGenerator",[52,86,87],{},"Walks the AST and emits files. A plugin registers one or more.",[34,89,90,96,101],{},[52,91,92],{},[55,93,95],{"href":94},".\u002Fkit\u002Fresolvers","Resolvers",[52,97,98],{},[14,99,100],{},"createResolver",[52,102,103],{},"Decides file names and output paths. Other plugins read them by name.",[34,105,106,112,121],{},[52,107,108],{},[55,109,111],{"href":110},"\u002Fdocs\u002F5.x\u002Freference\u002Fjsx#renderers","Renderers",[52,113,114,117,118],{},[14,115,116],{},"createRenderer",", ",[14,119,120],{},"jsxRenderer",[52,122,123,124,127],{},"Turns the elements a generator returns into ",[14,125,126],{},"FileNode","s.",[34,129,130,136,143],{},[52,131,132],{},[55,133,135],{"href":134},".\u002Fkit\u002Fadapters","Adapters",[52,137,138,64,140,68],{},[14,139,63],{},[14,141,142],{},"kind: 'adapter'",[52,144,145],{},"Converts an input spec into the universal AST every plugin reads.",[34,147,148,154,161],{},[52,149,150],{},[55,151,153],{"href":152},".\u002Fkit\u002Fparsers","Parsers",[52,155,156,64,158,68],{},[14,157,63],{},[14,159,160],{},"kind: 'parser'",[52,162,163,164,166],{},"Turns a ",[14,165,126],{}," into the source string written to disk.",[34,168,169,175,185],{},[52,170,171],{},[55,172,174],{"href":173},".\u002Fkit\u002Fextensions","Extensions",[52,176,177,117,179,117,182],{},[14,178,63],{},[14,180,181],{},"meta",[14,183,184],{},"dependencies",[52,186,187,188,191],{},"What plugins, adapters, and parsers share: ",[14,189,190],{},"kind",", identity, compatibility ranges, and plugin dependencies.",[34,193,194,200,211],{},[52,195,196],{},[55,197,199],{"href":198},".\u002Fkit\u002Fstorage","Storage",[52,201,202,117,205,117,208],{},[14,203,204],{},"createStorage",[14,206,207],{},"fsStorage",[14,209,210],{},"memoryStorage",[52,212,213],{},"Decides where generated files land.",[23,215,217],{"id":216},"other-parts","Other parts",[28,219,220,231],{},[31,221,222],{},[34,223,224,227,229],{},[37,225,226],{},"Part",[37,228,42],{},[37,230,45],{},[47,232,233,253,275,295,311,331],{},[34,234,235,241,246],{},[52,236,237],{},[55,238,240],{"href":239},".\u002Fkit\u002Fast","AST and node builders",[52,242,243],{},[14,244,245],{},"ast",[52,247,248,249,252],{},"The namespace behind ",[14,250,251],{},"factory"," builders, visitors, guards, macros, and printers.",[34,254,255,261,269],{},[52,256,257],{},[55,258,260],{"href":259},".\u002Fkit\u002Fengine","Engine",[52,262,263,117,266],{},[14,264,265],{},"createKubb",[14,267,268],{},"Diagnostics",[52,270,271,272,274],{},"The ",[14,273,20],{},"-package surface that runs your plugins and the errors it collects.",[34,276,277,283,288],{},[52,278,279],{},[55,280,282],{"href":281},".\u002Fkit\u002Fhooks","Lifecycle hooks",[52,284,285],{},[14,286,287],{},"KubbHooks",[52,289,290,291,294],{},"Every ",[14,292,293],{},"kubb:*"," hook a build fires, its payload, and when it fires.",[34,296,297,303,308],{},[52,298,299],{},[55,300,302],{"href":301},".\u002Fkit\u002Ftesting","Testing",[52,304,305],{},[14,306,307],{},"kubb\u002Fkit\u002Ftesting",[52,309,310],{},"Vitest-backed helpers for testing plugins, generators, and adapters.",[34,312,313,319,324],{},[52,314,315],{},[55,316,318],{"href":317},".\u002Fkit\u002Fmanifest","Extension manifest",[52,320,321],{},[14,322,323],{},"kubb-extension.json",[52,325,326,327,330],{},"The file an extension package ships for the registry, ",[14,328,329],{},"kubb add",", and Studio.",[34,332,333,339,344],{},[52,334,335],{},[55,336,338],{"href":337},".\u002Fkit\u002Fextension-docs","Extension docs",[52,340,341],{},[14,342,343],{},"docs\u002F",[52,345,346],{},"The Markdown pages an extension ships for kubb.dev.",{"title":348,"searchDepth":349,"depth":349,"links":350},"",5,[351,353],{"id":25,"depth":352,"text":26},2,{"id":216,"depth":352,"text":217},"The kubb\u002Fkit reference for authoring plugins, generators, resolvers, renderers, adapters, parsers, and storage backends, plus the ast namespace, Diagnostics, the engine surface, and the testing helpers.","md",{"layout":357,"title":5,"description":354,"outline":358,"order":360,"navigation":361},"doc",[352,359],3,4,{"title":362,"icon":363},"Kit","i-iconoir-tools",{"layout":357,"outline":365},[352,359],{"title":362,"icon":363},"\u002Fdocs\u002F5.x\u002Freference\u002Fkit",{"title":5,"description":354},{"loc":367},"kubb-labs\u002Fkubb\u002Fdocs\u002F5.x\u002Freference\u002Fkit.md","docs\u002F5.x\u002Freference\u002Fkit","fe-xIY1rCbNXtgF_Xv1HBeglI5Jix400qvAvqG67Kog",false,1792842167695]