[{"data":1,"prerenderedAt":580},["ShallowReactive",2],{"page:\u002Fextensions\u002Fkubb-labs\u002Fplugin-ts\u002Fguides\u002Fcustomization":3},{"id":4,"frontmatter":5,"title":6,"heading":6,"body":7,"path":579,"source":4},"extensions\u002Fkubb-labs\u002Fplugin-ts\u002Fguides\u002Fcustomization.md",{},"Customize generated types",{"type":8,"value":9,"toc":571},"minimark",[10,14,28,33,40,175,186,190,198,322,339,375,379,386,565],[11,12,13],"p",{},"Prefix TypeScript names, change schema type output, and remove descriptions.",[11,15,16,17,22,23,27],{},"Start with the ",[18,19,21],"a",{"href":20},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-ts#example","TypeScript plugin configuration",". Apply these changes to ",[24,25,26],"code",{},"pluginTs()"," in that configuration.",[29,30,32],"h2",{"id":31},"prefix-type-names","Prefix type names",[11,34,35,36,39],{},"Use ",[24,37,38],{},"resolverTs.name"," to preserve the plugin's PascalCase rule before adding a prefix.",[41,42,47],"pre",{"language":43,"filename":44,"code":45,"class":46},"typescript","kubb.config.ts","import { pluginTs, resolverTs } from '@kubb\u002Fplugin-ts'\n\npluginTs({\n  resolver: {\n    name(name) {\n      return 'Api' + resolverTs.name(name)\n    },\n  },\n})","highlights",[24,48,50,83,84,83,86,83,94,83,108,83,124,83,153,83,161,83,170],{"class":49},"language-typescript",[51,52,55,59,63,67,70,73,76,79],"span",{"class":53,"style":54},"line","display: inline",[51,56,58],{"style":57},"color:#d73a49;--hls-dark:#f97583","import ",[51,60,62],{"style":61},"color:#005cc5;--hls-dark:#79b8ff","{ ",[51,64,66],{"style":65},"color:#24292e;--hls-dark:#e1e4e8","pluginTs",[51,68,69],{"style":57},", ",[51,71,72],{"style":65},"resolverTs ",[51,74,75],{"style":61},"} ",[51,77,78],{"style":57},"from ",[51,80,82],{"style":81},"color:#032f62;--hls-dark:#9ecbff","'@kubb\u002Fplugin-ts'","\n",[51,85],{"class":53,"style":54},[51,87,88,91],{"class":53,"style":54},[51,89,66],{"style":90},"color:#6f42c1;--hls-dark:#b392f0",[51,92,93],{"style":61},"({",[51,95,96,99,102,105],{"class":53,"style":54},[51,97,98],{"style":61},"  ",[51,100,101],{"style":61},"resolver",[51,103,104],{"style":57},": ",[51,106,107],{"style":61},"{",[51,109,110,113,116,119,121],{"class":53,"style":54},[51,111,112],{"style":61},"    ",[51,114,115],{"style":90},"name",[51,117,118],{"style":61},"(",[51,120,115],{"style":65},[51,122,123],{"style":61},") {",[51,125,126,129,132,135,138,141,144,146,148,150],{"class":53,"style":54},[51,127,128],{"style":61},"      ",[51,130,131],{"style":57},"return ",[51,133,134],{"style":81},"'Api' ",[51,136,137],{"style":57},"+ ",[51,139,140],{"style":65},"resolverTs",[51,142,143],{"style":57},".",[51,145,115],{"style":90},[51,147,118],{"style":61},[51,149,115],{"style":65},[51,151,152],{"style":61},")",[51,154,155,158],{"class":53,"style":54},[51,156,157],{"style":61},"    }",[51,159,160],{"style":57},",",[51,162,163,165,168],{"class":53,"style":54},[51,164,98],{"style":57},[51,166,167],{"style":61},"}",[51,169,160],{"style":57},[51,171,172],{"class":53,"style":54},[51,173,174],{"style":61},"})",[11,176,177,178,181,182,185],{},"A generated ",[24,179,180],{},"Pet"," becomes ",[24,183,184],{},"ApiPet",". File names stay unchanged unless you also customize the file resolver.",[29,187,189],{"id":188},"map-schema-types","Map schema types",[11,191,192,193,197],{},"Replace ",[18,194,196],{"href":195},"https:\u002F\u002Fkubb.dev\u002Fextensions\u002Fkubb-labs\u002Fplugin-ts\u002Foptions#printer","printer handlers"," with your own. Each handler returns the TypeScript type as a string.",[41,199,201],{"language":43,"filename":44,"code":200,"class":46},"import { pluginTs } from '@kubb\u002Fplugin-ts'\n\npluginTs({\n  printer: {\n    nodes: {\n      date() {\n        return 'Date'\n      },\n      integer() {\n        return 'bigint'\n      },\n    },\n  },\n})",[24,202,203,83,218,83,220,83,226,83,237,83,248,83,258,83,268,83,276,83,285,83,294,83,302,83,310,83,318],{"class":49},[51,204,205,207,209,212,214,216],{"class":53,"style":54},[51,206,58],{"style":57},[51,208,62],{"style":61},[51,210,211],{"style":65},"pluginTs ",[51,213,75],{"style":61},[51,215,78],{"style":57},[51,217,82],{"style":81},[51,219],{"class":53,"style":54},[51,221,222,224],{"class":53,"style":54},[51,223,66],{"style":90},[51,225,93],{"style":61},[51,227,228,230,233,235],{"class":53,"style":54},[51,229,98],{"style":61},[51,231,232],{"style":61},"printer",[51,234,104],{"style":57},[51,236,107],{"style":61},[51,238,239,241,244,246],{"class":53,"style":54},[51,240,112],{"style":61},[51,242,243],{"style":61},"nodes",[51,245,104],{"style":57},[51,247,107],{"style":61},[51,249,250,252,255],{"class":53,"style":54},[51,251,128],{"style":61},[51,253,254],{"style":90},"date",[51,256,257],{"style":61},"() {",[51,259,260,263,265],{"class":53,"style":54},[51,261,262],{"style":61},"        ",[51,264,131],{"style":57},[51,266,267],{"style":81},"'Date'",[51,269,270,272,274],{"class":53,"style":54},[51,271,128],{"style":81},[51,273,167],{"style":61},[51,275,160],{"style":57},[51,277,278,280,283],{"class":53,"style":54},[51,279,128],{"style":57},[51,281,282],{"style":90},"integer",[51,284,257],{"style":61},[51,286,287,289,291],{"class":53,"style":54},[51,288,262],{"style":61},[51,290,131],{"style":57},[51,292,293],{"style":81},"'bigint'",[51,295,296,298,300],{"class":53,"style":54},[51,297,128],{"style":81},[51,299,167],{"style":61},[51,301,160],{"style":57},[51,303,304,306,308],{"class":53,"style":54},[51,305,112],{"style":57},[51,307,167],{"style":61},[51,309,160],{"style":57},[51,311,312,314,316],{"class":53,"style":54},[51,313,98],{"style":57},[51,315,167],{"style":61},[51,317,160],{"style":57},[51,319,320],{"class":53,"style":54},[51,321,174],{"style":61},[11,323,324,325,328,329,331,332,335,336,338],{},"Handlers that return TypeScript compiler nodes still work when your project installs ",[24,326,327],{},"@kubb\u002Fparser-ts",", plus ",[24,330,43],{}," 5 or 6 or ",[24,333,334],{},"@typescript\u002Ftypescript6"," next to TypeScript 7. All are optional peer dependencies. If ",[24,337,327],{}," is missing, the build stops with an error that tells you to install it. That form is deprecated and is removed in the next major.",[11,340,341,342,344,345,348,349,352,353,356,357,359,360,363,364,366,367,370,371,374],{},"This maps ",[24,343,254],{}," fields to ",[24,346,347],{},"Date"," and ",[24,350,351],{},"int32"," integers to ",[24,354,355],{},"bigint",". The separate ",[24,358,355],{}," handler controls ",[24,361,362],{},"int64"," fields, which already use ",[24,365,355],{}," by default. A ",[24,368,369],{},"date-time"," field uses the ",[24,372,373],{},"datetime"," handler.",[29,376,378],{"id":377},"remove-descriptions","Remove descriptions",[11,380,381,382,143],{},"Clear schema descriptions with a ",[18,383,385],{"href":384},"https:\u002F\u002Fkubb.dev\u002Fdocs\u002F5.x\u002Freference\u002Fplugin-options#macros","macro",[41,387,389],{"language":43,"filename":44,"code":388,"class":46},"import { pluginTs } from '@kubb\u002Fplugin-ts'\nimport { ast } from 'kubb\u002Fkit'\n\nconst dropDescriptions = ast.defineMacro({\n  name: 'drop-descriptions',\n  schema(node) {\n    return 'description' in node && node.description\n      ? { ...node, description: undefined }\n      : undefined\n  },\n})\n\npluginTs({ macros: [dropDescriptions] })",[24,390,391,83,405,83,421,83,423,83,444,83,457,83,471,83,496,83,521,83,530,83,538,83,542,83,544],{"class":49},[51,392,393,395,397,399,401,403],{"class":53,"style":54},[51,394,58],{"style":57},[51,396,62],{"style":61},[51,398,211],{"style":65},[51,400,75],{"style":61},[51,402,78],{"style":57},[51,404,82],{"style":81},[51,406,407,409,411,414,416,418],{"class":53,"style":54},[51,408,58],{"style":57},[51,410,62],{"style":61},[51,412,413],{"style":65},"ast ",[51,415,75],{"style":61},[51,417,78],{"style":57},[51,419,420],{"style":81},"'kubb\u002Fkit'",[51,422],{"class":53,"style":54},[51,424,425,428,431,434,437,439,442],{"class":53,"style":54},[51,426,427],{"style":57},"const ",[51,429,430],{"style":65},"dropDescriptions ",[51,432,433],{"style":57},"= ",[51,435,436],{"style":65},"ast",[51,438,143],{"style":57},[51,440,441],{"style":90},"defineMacro",[51,443,93],{"style":61},[51,445,446,448,450,452,455],{"class":53,"style":54},[51,447,98],{"style":61},[51,449,115],{"style":61},[51,451,104],{"style":57},[51,453,454],{"style":81},"'drop-descriptions'",[51,456,160],{"style":57},[51,458,459,461,464,466,469],{"class":53,"style":54},[51,460,98],{"style":57},[51,462,463],{"style":90},"schema",[51,465,118],{"style":61},[51,467,468],{"style":65},"node",[51,470,123],{"style":61},[51,472,473,475,477,480,483,486,489,491,493],{"class":53,"style":54},[51,474,112],{"style":61},[51,476,131],{"style":57},[51,478,479],{"style":81},"'description' ",[51,481,482],{"style":57},"in ",[51,484,485],{"style":65},"node ",[51,487,488],{"style":57},"&& ",[51,490,468],{"style":65},[51,492,143],{"style":57},[51,494,495],{"style":61},"description",[51,497,498,500,503,505,508,510,512,514,516,519],{"class":53,"style":54},[51,499,128],{"style":61},[51,501,502],{"style":57},"? ",[51,504,62],{"style":61},[51,506,507],{"style":57},"...",[51,509,468],{"style":65},[51,511,69],{"style":57},[51,513,495],{"style":61},[51,515,104],{"style":57},[51,517,518],{"style":61},"undefined ",[51,520,167],{"style":61},[51,522,523,525,527],{"class":53,"style":54},[51,524,128],{"style":61},[51,526,104],{"style":57},[51,528,529],{"style":61},"undefined",[51,531,532,534,536],{"class":53,"style":54},[51,533,98],{"style":61},[51,535,167],{"style":61},[51,537,160],{"style":57},[51,539,540],{"class":53,"style":54},[51,541,174],{"style":61},[51,543],{"class":53,"style":54},[51,545,546,548,551,554,556,559,562],{"class":53,"style":54},[51,547,66],{"style":90},[51,549,550],{"style":61},"({ ",[51,552,553],{"style":61},"macros",[51,555,104],{"style":57},[51,557,558],{"style":61},"[",[51,560,561],{"style":65},"dropDescriptions",[51,563,564],{"style":61},"] })",[11,566,567,568,143],{},"The generated types omit description JSDoc. The OpenAPI document stays unchanged. The same macro works with ",[24,569,570],{},"pluginZod",{"title":572,"searchDepth":573,"depth":573,"links":574},"",5,[575,577,578],{"id":31,"depth":576,"text":32},2,{"id":188,"depth":576,"text":189},{"id":377,"depth":576,"text":378},"\u002Fextensions\u002Fkubb-labs\u002Fplugin-ts\u002Fguides\u002Fcustomization",1793647025497]