[{"data":1,"prerenderedAt":1280},["ShallowReactive",2],{"page:\u002Fdocs\u002F5.x\u002Freference\u002Fkit\u002Fextensions":3},{"id":4,"title":5,"body":6,"description":1263,"extension":1264,"frontmatter":1265,"heading":5,"meta":1271,"navigation":1273,"order":1268,"path":1274,"seo":1275,"sitemap":1276,"source":1277,"stem":1278,"__hash__":1279},"docs\u002Fdocs\u002F5.x\u002Freference\u002Fkit\u002Fextensions.md","Extensions",{"type":7,"value":8,"toc":1252},"minimark",[9,26,32,37,139,242,276,280,291,449,647,657,678,700,705,722,726,732,866,921,924,956,959,1174,1182,1186,1205,1240],[10,11,12,13,17,18,21,22,25],"p",{},"Plugins, adapters, and parsers are all extensions. ",[14,15,16],"code",{},"defineExtension"," takes a definition object with a ",[14,19,20],{},"kind"," and ",[14,23,24],{},"meta",", and returns a factory that the config calls with the user's options. The fields on this page work the same for every kind.",[27,28,30],"h2",{"id":29},"define-extension",[14,31,16],{},[10,33,34,36],{},[14,35,20],{}," picks what the definition defines, and the other fields follow that kind:",[38,39,40,60],"table",{},[41,42,43],"thead",{},[44,45,46,51,54,57],"tr",{},[47,48,49],"th",{},[14,50,20],{},[47,52,53],{},"Defines",[47,55,56],{},"Other fields",[47,58,59],{},"Reference",[61,62,63,96,119],"tbody",{},[44,64,65,71,74,89],{},[66,67,68],"td",{},[14,69,70],{},"'plugin'",[66,72,73],{},"A plugin that generates code from the AST.",[66,75,76,79,80,79,83,79,86],{},[14,77,78],{},"setup",", ",[14,81,82],{},"dependencies",[14,84,85],{},"enforce",[14,87,88],{},"hooks",[66,90,91],{},[92,93,95],"a",{"href":94},".\u002Fplugins","Plugins",[44,97,98,103,106,113],{},[66,99,100],{},[14,101,102],{},"'adapter'",[66,104,105],{},"An adapter that reads the input into the AST.",[66,107,108,79,110],{},[14,109,78],{},[14,111,112],{},"build",[66,114,115],{},[92,116,118],{"href":117},".\u002Fadapters","Adapters",[44,120,121,126,129,133],{},[66,122,123],{},[14,124,125],{},"'parser'",[66,127,128],{},"A parser that prints files to source text.",[66,130,131],{},[14,132,112],{},[66,134,135],{},[92,136,138],{"href":137},".\u002Fparsers","Parsers",[140,141,146],"pre",{"language":142,"filename":143,"code":144,"class":145},"typescript","plugin-example.ts","import { defineExtension } from 'kubb\u002Fkit'\n\nexport const pluginExample = defineExtension({\n  kind: 'plugin',\n  meta: { name: 'plugin-example' },\n})","highlights",[14,147,149,176,177,176,179,176,199,176,214,176,237],{"class":148},"language-typescript",[150,151,154,158,162,166,169,172],"span",{"class":152,"style":153},"line","display: inline",[150,155,157],{"style":156},"color:#d73a49;--hls-dark:#f97583","import ",[150,159,161],{"style":160},"color:#005cc5;--hls-dark:#79b8ff","{ ",[150,163,165],{"style":164},"color:#24292e;--hls-dark:#e1e4e8","defineExtension ",[150,167,168],{"style":160},"} ",[150,170,171],{"style":156},"from ",[150,173,175],{"style":174},"color:#032f62;--hls-dark:#9ecbff","'kubb\u002Fkit'","\n",[150,178],{"class":152,"style":153},[150,180,181,184,187,190,193,196],{"class":152,"style":153},[150,182,183],{"style":156},"export ",[150,185,186],{"style":156},"const ",[150,188,189],{"style":164},"pluginExample ",[150,191,192],{"style":156},"= ",[150,194,16],{"style":195},"color:#6f42c1;--hls-dark:#b392f0",[150,197,198],{"style":160},"({",[150,200,201,204,206,209,211],{"class":152,"style":153},[150,202,203],{"style":160},"  ",[150,205,20],{"style":160},[150,207,208],{"style":156},": ",[150,210,70],{"style":174},[150,212,213],{"style":156},",",[150,215,216,218,220,222,224,227,229,232,235],{"class":152,"style":153},[150,217,203],{"style":156},[150,219,24],{"style":160},[150,221,208],{"style":156},[150,223,161],{"style":160},[150,225,226],{"style":160},"name",[150,228,208],{"style":156},[150,230,231],{"style":174},"'plugin-example' ",[150,233,234],{"style":160},"}",[150,236,213],{"style":156},[150,238,239],{"class":152,"style":153},[150,240,241],{"style":160},"})",[243,244,246,247,79,250,253,254,257,258,260,261,263,264,266,267,79,270,272,273,275],"blockquote",{"as":245},"warning","",[14,248,249],{},"definePlugin",[14,251,252],{},"defineParser",", and ",[14,255,256],{},"createAdapter"," are deprecated. Each takes the same definition object as ",[14,259,16],{},", without ",[14,262,20],{},". Pass the object to ",[14,265,16],{}," and add ",[14,268,269],{},"kind: 'plugin'",[14,271,125],{},", or ",[14,274,102],{},".",[27,277,278],{"id":24},[14,279,24],{},[10,281,282,284,285,21,287,290],{},[14,283,24],{}," holds the extension's identity and the Kubb and Node.js versions it supports. Kubb reads ",[14,286,226],{},[14,288,289],{},"compatibility"," at runtime. Studio, the kubb.dev registry, and the docs read the rest.",[140,292,294],{"language":142,"filename":143,"code":293,"class":145},"import { defineExtension } from 'kubb\u002Fkit'\n\nexport const pluginExample = defineExtension({\n  kind: 'plugin',\n  meta: {\n    name: 'plugin-example',\n    version: '1.0.0',\n    displayName: 'Example',\n    description: 'Adds a comment to every generated schema.',\n    compatibility: { kubb: '>=5.7.0', node: '>=22' },\n  },\n})",[14,295,296,176,310,176,312,176,326,176,338,176,349,176,363,176,377,176,391,176,405,176,437,176,445],{"class":148},[150,297,298,300,302,304,306,308],{"class":152,"style":153},[150,299,157],{"style":156},[150,301,161],{"style":160},[150,303,165],{"style":164},[150,305,168],{"style":160},[150,307,171],{"style":156},[150,309,175],{"style":174},[150,311],{"class":152,"style":153},[150,313,314,316,318,320,322,324],{"class":152,"style":153},[150,315,183],{"style":156},[150,317,186],{"style":156},[150,319,189],{"style":164},[150,321,192],{"style":156},[150,323,16],{"style":195},[150,325,198],{"style":160},[150,327,328,330,332,334,336],{"class":152,"style":153},[150,329,203],{"style":160},[150,331,20],{"style":160},[150,333,208],{"style":156},[150,335,70],{"style":174},[150,337,213],{"style":156},[150,339,340,342,344,346],{"class":152,"style":153},[150,341,203],{"style":156},[150,343,24],{"style":160},[150,345,208],{"style":156},[150,347,348],{"style":160},"{",[150,350,351,354,356,358,361],{"class":152,"style":153},[150,352,353],{"style":160},"    ",[150,355,226],{"style":160},[150,357,208],{"style":156},[150,359,360],{"style":174},"'plugin-example'",[150,362,213],{"style":156},[150,364,365,367,370,372,375],{"class":152,"style":153},[150,366,353],{"style":156},[150,368,369],{"style":160},"version",[150,371,208],{"style":156},[150,373,374],{"style":174},"'1.0.0'",[150,376,213],{"style":156},[150,378,379,381,384,386,389],{"class":152,"style":153},[150,380,353],{"style":156},[150,382,383],{"style":160},"displayName",[150,385,208],{"style":156},[150,387,388],{"style":174},"'Example'",[150,390,213],{"style":156},[150,392,393,395,398,400,403],{"class":152,"style":153},[150,394,353],{"style":156},[150,396,397],{"style":160},"description",[150,399,208],{"style":156},[150,401,402],{"style":174},"'Adds a comment to every generated schema.'",[150,404,213],{"style":156},[150,406,407,409,411,413,415,418,420,423,425,428,430,433,435],{"class":152,"style":153},[150,408,353],{"style":156},[150,410,289],{"style":160},[150,412,208],{"style":156},[150,414,161],{"style":160},[150,416,417],{"style":160},"kubb",[150,419,208],{"style":156},[150,421,422],{"style":174},"'>=5.7.0'",[150,424,79],{"style":156},[150,426,427],{"style":160},"node",[150,429,208],{"style":156},[150,431,432],{"style":174},"'>=22' ",[150,434,234],{"style":160},[150,436,213],{"style":156},[150,438,439,441,443],{"class":152,"style":153},[150,440,203],{"style":156},[150,442,234],{"style":160},[150,444,213],{"style":156},[150,446,447],{"class":152,"style":153},[150,448,241],{"style":160},[38,450,451,464],{},[41,452,453],{},[44,454,455,458,461],{},[47,456,457],{},"Property",[47,459,460],{},"Type",[47,462,463],{},"Description",[61,465,466,487,503,519,532,553,568,583,597,615,629],{},[44,467,468,472,477],{},[66,469,470],{},[14,471,226],{},[66,473,474],{},[14,475,476],{},"string",[66,478,479,480,482,483,486],{},"Unique name. The plugin's or parser's own ",[14,481,226],{}," is deprecated in favor of it, and optional when ",[14,484,485],{},"meta.name"," is set. Required.",[44,488,489,493,497],{},[66,490,491],{},[14,492,369],{},[66,494,495],{},[14,496,476],{},[66,498,499,500,502],{},"Package version. Plugins that depend on this one check their ",[14,501,369],{}," range against it.",[44,504,505,509,513],{},[66,506,507],{},[14,508,383],{},[66,510,511],{},[14,512,476],{},[66,514,515,516,275],{},"Human-readable name, such as ",[14,517,518],{},"'TypeScript'",[44,520,521,525,529],{},[66,522,523],{},[14,524,397],{},[66,526,527],{},[14,528,476],{},[66,530,531],{},"One-sentence summary of what the extension generates or does.",[44,533,534,539,543],{},[66,535,536],{},[14,537,538],{},"category",[66,540,541],{},[14,542,476],{},[66,544,545,546,549,550,275],{},"Registry category, such as ",[14,547,548],{},"'types'"," or ",[14,551,552],{},"'client'",[44,554,555,560,565],{},[66,556,557],{},[14,558,559],{},"icon",[66,561,562],{},[14,563,564],{},"{ light: string; dark?: string }",[66,566,567],{},"Icon URLs, with an optional variant for dark backgrounds.",[44,569,570,575,580],{},[66,571,572],{},[14,573,574],{},"media",[66,576,577],{},[14,578,579],{},"Array\u003Cstring>",[66,581,582],{},"Screenshots or videos, as HTTPS URLs.",[44,584,585,590,594],{},[66,586,587],{},[14,588,589],{},"tags",[66,591,592],{},[14,593,579],{},[66,595,596],{},"Search keywords for the registry.",[44,598,599,603,608],{},[66,600,601],{},[14,602,289],{},[66,604,605],{},[14,606,607],{},"{ kubb?: string; node?: string }",[66,609,610,611,614],{},"Semver ranges for ",[14,612,613],{},"@kubb\u002Fcore"," and Node.js.",[44,616,617,622,626],{},[66,618,619],{},[14,620,621],{},"docs",[66,623,624],{},[14,625,476],{},[66,627,628],{},"URL of the extension's docs page.",[44,630,631,636,640],{},[66,632,633],{},[14,634,635],{},"issues",[66,637,638],{},[14,639,476],{},[66,641,642,643,646],{},"URL of the extension's issue tracker. When the extension crashes, Kubb prints it as the ",[14,644,645],{},"report:"," link, so users report the bug to you instead of to Kubb.",[10,648,649,650,652,653,656],{},"Read ",[14,651,369],{}," from your ",[14,654,655],{},"package.json"," so it stays in sync with what you publish:",[140,658,660],{"language":142,"code":659,"class":145},"import { version } from '..\u002Fpackage.json'",[14,661,662],{"class":148},[150,663,664,666,668,671,673,675],{"class":152,"style":153},[150,665,157],{"style":156},[150,667,161],{"style":160},[150,669,670],{"style":164},"version ",[150,672,168],{"style":160},[150,674,171],{"style":156},[150,676,677],{"style":174},"'..\u002Fpackage.json'",[10,679,680,681,687,688,690,691,275],{},"A package that ships a ",[92,682,684],{"href":683},".\u002Fmanifest",[14,685,686],{},"kubb-extension.json"," imports ",[14,689,289],{}," from it, so the ranges live in one file. See ",[92,692,694,695,697,698],{"href":693},".\u002Fmanifest#import-compatibility-into-meta","Import ",[14,696,289],{}," into ",[14,699,24],{},[701,702,704],"h3",{"id":703},"compatibility-checks","Compatibility checks",[10,706,707,708,711,712,714,715,721],{},"Before any plugin runs, Kubb checks each plugin's and parser's ",[14,709,710],{},"meta.compatibility"," against the running ",[14,713,613],{}," and Node.js versions. A mismatch fails the run with ",[92,716,718],{"href":717},"\u002Fdocs\u002F5.x\u002Freference\u002Fdiagnostics#kubb-incompatible-extension",[14,719,720],{},"KUBB_INCOMPATIBLE_EXTENSION",", which names the extension and the version that is running. Kubb compares prerelease versions like regular ones.",[27,723,724],{"id":82},[14,725,82],{},[10,727,728,729,731],{},"A plugin's ",[14,730,82],{}," lists the plugins it builds on, keyed by name. They run first when the config has them. Each entry decides what happens when a plugin is missing or has the wrong version:",[140,733,735],{"language":142,"filename":143,"code":734,"class":145},"import { defineExtension } from 'kubb\u002Fkit'\n\nexport const pluginExample = defineExtension({\n  kind: 'plugin',\n  meta: { name: 'plugin-example' },\n  dependencies: {\n    'plugin-ts': { version: '>=5.0.0' },\n    'plugin-zod': { optional: true },\n  },\n})",[14,736,737,176,751,176,753,176,767,176,779,176,799,176,809,176,831,176,854,176,862],{"class":148},[150,738,739,741,743,745,747,749],{"class":152,"style":153},[150,740,157],{"style":156},[150,742,161],{"style":160},[150,744,165],{"style":164},[150,746,168],{"style":160},[150,748,171],{"style":156},[150,750,175],{"style":174},[150,752],{"class":152,"style":153},[150,754,755,757,759,761,763,765],{"class":152,"style":153},[150,756,183],{"style":156},[150,758,186],{"style":156},[150,760,189],{"style":164},[150,762,192],{"style":156},[150,764,16],{"style":195},[150,766,198],{"style":160},[150,768,769,771,773,775,777],{"class":152,"style":153},[150,770,203],{"style":160},[150,772,20],{"style":160},[150,774,208],{"style":156},[150,776,70],{"style":174},[150,778,213],{"style":156},[150,780,781,783,785,787,789,791,793,795,797],{"class":152,"style":153},[150,782,203],{"style":156},[150,784,24],{"style":160},[150,786,208],{"style":156},[150,788,161],{"style":160},[150,790,226],{"style":160},[150,792,208],{"style":156},[150,794,231],{"style":174},[150,796,234],{"style":160},[150,798,213],{"style":156},[150,800,801,803,805,807],{"class":152,"style":153},[150,802,203],{"style":156},[150,804,82],{"style":160},[150,806,208],{"style":156},[150,808,348],{"style":160},[150,810,811,813,816,818,820,822,824,827,829],{"class":152,"style":153},[150,812,353],{"style":160},[150,814,815],{"style":174},"'plugin-ts'",[150,817,208],{"style":156},[150,819,161],{"style":160},[150,821,369],{"style":160},[150,823,208],{"style":156},[150,825,826],{"style":174},"'>=5.0.0' ",[150,828,234],{"style":160},[150,830,213],{"style":156},[150,832,833,835,838,840,842,845,847,850,852],{"class":152,"style":153},[150,834,353],{"style":156},[150,836,837],{"style":174},"'plugin-zod'",[150,839,208],{"style":156},[150,841,161],{"style":160},[150,843,844],{"style":160},"optional",[150,846,208],{"style":156},[150,848,849],{"style":160},"true ",[150,851,234],{"style":160},[150,853,213],{"style":156},[150,855,856,858,860],{"class":152,"style":153},[150,857,203],{"style":156},[150,859,234],{"style":160},[150,861,213],{"style":156},[150,863,864],{"class":152,"style":153},[150,865,241],{"style":160},[38,867,868,879],{},[41,869,870],{},[44,871,872,875,877],{},[47,873,874],{},"Entry field",[47,876,460],{},[47,878,463],{},[61,880,881,900],{},[44,882,883,887,891],{},[66,884,885],{},[14,886,369],{},[66,888,889],{},[14,890,476],{},[66,892,893,894,897,898,275],{},"Semver range the dependency's ",[14,895,896],{},"meta.version"," must satisfy. Kubb skips the check when the dependency has no ",[14,899,896],{},[44,901,902,906,911],{},[66,903,904],{},[14,905,844],{},[66,907,908],{},[14,909,910],{},"boolean",[66,912,913,914,917,918,920],{},"When ",[14,915,916],{},"true",", a missing plugin is skipped. An installed one still has its ",[14,919,369],{}," checked.",[10,922,923],{},"Kubb checks the record before any plugin runs:",[925,926,927,941],"ul",{},[928,929,930,931,934,935,275],"li",{},"A missing entry without ",[14,932,933],{},"optional: true"," fails with ",[92,936,938],{"href":937},"\u002Fdocs\u002F5.x\u002Freference\u002Fdiagnostics#kubb-missing-dependency",[14,939,940],{},"KUBB_MISSING_DEPENDENCY",[928,942,943,944,946,947,949,950,275],{},"A ",[14,945,896],{}," outside the ",[14,948,369],{}," range fails with ",[92,951,953],{"href":952},"\u002Fdocs\u002F5.x\u002Freference\u002Fdiagnostics#kubb-incompatible-dependency",[14,954,955],{},"KUBB_INCOMPATIBLE_DEPENDENCY",[10,957,958],{},"When a dependency depends on the user's options, pass a function. It receives the options and returns the record:",[140,960,962],{"language":142,"filename":143,"code":961,"class":145},"import { defineExtension, type PluginType } from 'kubb\u002Fkit'\n\ntype PluginExample = PluginType\u003C'plugin-example', { parser?: 'data' | 'faker' }>\n\nexport const pluginExample = defineExtension\u003CPluginExample>({\n  kind: 'plugin',\n  meta: { name: 'plugin-example' },\n  dependencies: (options) => ({\n    'plugin-ts': {},\n    ...(options.parser === 'faker' ? { 'plugin-faker': {} } : {}),\n  }),\n})",[14,963,964,176,986,176,988,176,1031,176,1033,176,1054,176,1066,176,1086,176,1108,176,1121,176,1162,176,1170],{"class":148},[150,965,966,968,970,972,974,977,980,982,984],{"class":152,"style":153},[150,967,157],{"style":156},[150,969,161],{"style":160},[150,971,16],{"style":164},[150,973,79],{"style":156},[150,975,976],{"style":156},"type ",[150,978,979],{"style":195},"PluginType ",[150,981,168],{"style":160},[150,983,171],{"style":156},[150,985,175],{"style":174},[150,987],{"class":152,"style":153},[150,989,990,992,995,997,1000,1003,1005,1007,1009,1012,1015,1017,1020,1023,1026,1028],{"class":152,"style":153},[150,991,976],{"style":156},[150,993,994],{"style":195},"PluginExample ",[150,996,192],{"style":156},[150,998,999],{"style":195},"PluginType",[150,1001,1002],{"style":156},"\u003C",[150,1004,360],{"style":174},[150,1006,79],{"style":156},[150,1008,161],{"style":160},[150,1010,1011],{"style":160},"parser",[150,1013,1014],{"style":164},"?",[150,1016,208],{"style":156},[150,1018,1019],{"style":174},"'data' ",[150,1021,1022],{"style":156},"| ",[150,1024,1025],{"style":174},"'faker' ",[150,1027,234],{"style":160},[150,1029,1030],{"style":156},">",[150,1032],{"class":152,"style":153},[150,1034,1035,1037,1039,1041,1043,1045,1047,1050,1052],{"class":152,"style":153},[150,1036,183],{"style":156},[150,1038,186],{"style":156},[150,1040,189],{"style":164},[150,1042,192],{"style":156},[150,1044,16],{"style":164},[150,1046,1002],{"style":156},[150,1048,1049],{"style":195},"PluginExample",[150,1051,1030],{"style":156},[150,1053,198],{"style":160},[150,1055,1056,1058,1060,1062,1064],{"class":152,"style":153},[150,1057,203],{"style":160},[150,1059,20],{"style":160},[150,1061,208],{"style":156},[150,1063,70],{"style":174},[150,1065,213],{"style":156},[150,1067,1068,1070,1072,1074,1076,1078,1080,1082,1084],{"class":152,"style":153},[150,1069,203],{"style":156},[150,1071,24],{"style":160},[150,1073,208],{"style":156},[150,1075,161],{"style":160},[150,1077,226],{"style":160},[150,1079,208],{"style":156},[150,1081,231],{"style":174},[150,1083,234],{"style":160},[150,1085,213],{"style":156},[150,1087,1088,1090,1092,1094,1097,1100,1103,1106],{"class":152,"style":153},[150,1089,203],{"style":156},[150,1091,82],{"style":160},[150,1093,208],{"style":156},[150,1095,1096],{"style":160},"(",[150,1098,1099],{"style":164},"options",[150,1101,1102],{"style":160},") ",[150,1104,1105],{"style":156},"=> ",[150,1107,198],{"style":160},[150,1109,1110,1112,1114,1116,1119],{"class":152,"style":153},[150,1111,353],{"style":160},[150,1113,815],{"style":174},[150,1115,208],{"style":156},[150,1117,1118],{"style":160},"{}",[150,1120,213],{"style":156},[150,1122,1123,1125,1128,1130,1132,1134,1137,1140,1142,1145,1147,1150,1152,1155,1157,1160],{"class":152,"style":153},[150,1124,353],{"style":156},[150,1126,1127],{"style":156},"...",[150,1129,1096],{"style":160},[150,1131,1099],{"style":164},[150,1133,275],{"style":156},[150,1135,1136],{"style":160},"parser ",[150,1138,1139],{"style":156},"=== ",[150,1141,1025],{"style":174},[150,1143,1144],{"style":156},"? ",[150,1146,161],{"style":160},[150,1148,1149],{"style":174},"'plugin-faker'",[150,1151,208],{"style":156},[150,1153,1154],{"style":160},"{} } ",[150,1156,208],{"style":156},[150,1158,1159],{"style":160},"{})",[150,1161,213],{"style":156},[150,1163,1164,1166,1168],{"class":152,"style":153},[150,1165,203],{"style":156},[150,1167,241],{"style":160},[150,1169,213],{"style":156},[150,1171,1172],{"class":152,"style":153},[150,1173,241],{"style":160},[243,1175,1177,1178,1181],{"as":1176},"note","An array, such as ",[14,1179,1180],{},"dependencies: ['plugin-ts']",", still works. It only orders plugins, so a missing one is skipped and versions are not checked.",[27,1183,1185],{"id":1184},"factory-statics","Factory statics",[10,1187,1188,1189,1191,1192,1194,1195,79,1197,272,1199,1201,1202,1204],{},"Every factory ",[14,1190,16],{}," returns carries ",[14,1193,20],{}," (",[14,1196,70],{},[14,1198,102],{},[14,1200,125],{},") and ",[14,1203,24],{},", so tools can read an extension's metadata without calling the factory or knowing its options:",[140,1206,1208],{"language":142,"code":1207,"class":145},"pluginExample.kind \u002F\u002F 'plugin'\npluginExample.meta.name \u002F\u002F 'plugin-example'",[14,1209,1210,176,1224],{"class":148},[150,1211,1212,1215,1217,1220],{"class":152,"style":153},[150,1213,1214],{"style":164},"pluginExample",[150,1216,275],{"style":156},[150,1218,1219],{"style":160},"kind ",[150,1221,1223],{"style":1222},"color:#6a737d;--hls-dark:#6a737d","\u002F\u002F 'plugin'",[150,1225,1226,1228,1230,1232,1234,1237],{"class":152,"style":153},[150,1227,1214],{"style":164},[150,1229,275],{"style":156},[150,1231,24],{"style":160},[150,1233,275],{"style":156},[150,1235,1236],{"style":160},"name ",[150,1238,1239],{"style":1222},"\u002F\u002F 'plugin-example'",[10,1241,1242,1243,1245,1246,1248,1249,275],{},"A factory built from a deprecated factory function has no ",[14,1244,24],{}," on it, because Kubb only learns it by calling the factory. The plugin or parser it returns still has ",[14,1247,24],{},", which falls back to ",[14,1250,1251],{},"{ name }",{"title":246,"searchDepth":1253,"depth":1253,"links":1254},5,[1255,1257,1261,1262],{"id":29,"depth":1256,"text":16},2,{"id":24,"depth":1256,"text":24,"children":1258},[1259],{"id":703,"depth":1260,"text":704},3,{"id":82,"depth":1256,"text":82},{"id":1184,"depth":1256,"text":1185},"defineExtension defines a plugin, an adapter, or a parser in kubb\u002Fkit. Covers kind, ExtensionMeta, compatibility ranges, plugin dependencies with version ranges, and the kind and meta that every extension factory carries.","md",{"layout":1266,"title":5,"description":1263,"outline":1267,"order":1268,"navigation":1269},"doc",[1256,1260],13,{"title":5,"icon":1270},"i-iconoir-puzzle",{"layout":1266,"outline":1272},[1256,1260],{"title":5,"icon":1270},"\u002Fdocs\u002F5.x\u002Freference\u002Fkit\u002Fextensions",{"title":5,"description":1263},{"loc":1274},"kubb-labs\u002Fkubb\u002Fdocs\u002F5.x\u002Freference\u002Fkit\u002Fextensions.md","docs\u002F5.x\u002Freference\u002Fkit\u002Fextensions","bUxiZg-Vq5peNrWlTxz4Sdi-wbGJuDHg_r0iHURdA8E",1793576256332]