@kubb/plugin-ts 5.0.0-alpha.20 → 5.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/Type-B6fo0gSk.js +120 -0
  2. package/dist/Type-B6fo0gSk.js.map +1 -0
  3. package/dist/Type-oFwUfkZv.cjs +131 -0
  4. package/dist/Type-oFwUfkZv.cjs.map +1 -0
  5. package/dist/builderTs-Cd3juc2G.cjs +120 -0
  6. package/dist/builderTs-Cd3juc2G.cjs.map +1 -0
  7. package/dist/builderTs-DausqHpc.js +116 -0
  8. package/dist/builderTs-DausqHpc.js.map +1 -0
  9. package/dist/builders.cjs +3 -0
  10. package/dist/builders.d.ts +8 -0
  11. package/dist/builders.js +2 -0
  12. package/dist/{casing-Cp-jbC_k.js → casing-BJHFg-zZ.js} +1 -1
  13. package/dist/{casing-Cp-jbC_k.js.map → casing-BJHFg-zZ.js.map} +1 -1
  14. package/dist/{casing-D2uQKLWS.cjs → casing-DHfdqpLi.cjs} +2 -39
  15. package/dist/{casing-D2uQKLWS.cjs.map → casing-DHfdqpLi.cjs.map} +1 -1
  16. package/dist/chunk-ByKO4r7w.cjs +38 -0
  17. package/dist/components.cjs +1 -1
  18. package/dist/components.d.ts +1 -2
  19. package/dist/components.js +1 -1
  20. package/dist/generators-ByK18qUn.js +551 -0
  21. package/dist/generators-ByK18qUn.js.map +1 -0
  22. package/dist/{generators-xHWQCNd9.cjs → generators-aSsiTfUO.cjs} +296 -293
  23. package/dist/generators-aSsiTfUO.cjs.map +1 -0
  24. package/dist/generators.cjs +2 -1
  25. package/dist/generators.d.ts +5 -2
  26. package/dist/generators.js +2 -2
  27. package/dist/index.cjs +38 -36
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +36 -35
  31. package/dist/index.js.map +1 -1
  32. package/dist/{Type-CMC7L-38.js → printerTs-BgZucv4T.js} +18 -130
  33. package/dist/printerTs-BgZucv4T.js.map +1 -0
  34. package/dist/{Type-B70QnSzH.cjs → printerTs-CFXc_LpP.cjs} +40 -133
  35. package/dist/printerTs-CFXc_LpP.cjs.map +1 -0
  36. package/dist/printers.cjs +3 -0
  37. package/dist/printers.d.ts +75 -0
  38. package/dist/printers.js +2 -0
  39. package/dist/{resolvers-DsKabI0F.js → resolverTsLegacy-DLl854-P.js} +8 -7
  40. package/dist/resolverTsLegacy-DLl854-P.js.map +1 -0
  41. package/dist/{resolvers-YIpeP5YD.cjs → resolverTsLegacy-sJ16Iqrl.cjs} +9 -7
  42. package/dist/resolverTsLegacy-sJ16Iqrl.cjs.map +1 -0
  43. package/dist/resolvers.cjs +3 -3
  44. package/dist/resolvers.d.ts +1 -1
  45. package/dist/resolvers.js +1 -1
  46. package/dist/{types-zqLMbIqZ.d.ts → types-BcyuFDn9.d.ts} +26 -22
  47. package/package.json +17 -5
  48. package/src/builders/builderTs.ts +92 -0
  49. package/src/builders/index.ts +1 -0
  50. package/src/components/Type.tsx +4 -6
  51. package/src/factory.ts +0 -32
  52. package/src/generators/index.ts +1 -0
  53. package/src/generators/typeGenerator.tsx +49 -140
  54. package/src/generators/typeGeneratorLegacy.tsx +345 -0
  55. package/src/index.ts +1 -1
  56. package/src/plugin.ts +15 -44
  57. package/src/presets.ts +10 -7
  58. package/src/printers/index.ts +1 -0
  59. package/src/{printer.ts → printers/printerTs.ts} +20 -16
  60. package/src/resolvers/resolverTs.ts +7 -4
  61. package/src/resolvers/resolverTsLegacy.ts +1 -1
  62. package/src/types.ts +39 -21
  63. package/dist/Type-B70QnSzH.cjs.map +0 -1
  64. package/dist/Type-CMC7L-38.js.map +0 -1
  65. package/dist/generators-BFkr7ecU.js +0 -556
  66. package/dist/generators-BFkr7ecU.js.map +0 -1
  67. package/dist/generators-xHWQCNd9.cjs.map +0 -1
  68. package/dist/resolvers-DsKabI0F.js.map +0 -1
  69. package/dist/resolvers-YIpeP5YD.cjs.map +0 -1
  70. package/src/generators/utils.ts +0 -308
@@ -1,29 +1,4 @@
1
- //#region \0rolldown/runtime.js
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __name = (target, value) => __defProp(target, "name", {
5
- value,
6
- configurable: true
7
- });
8
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
- var __getOwnPropNames = Object.getOwnPropertyNames;
10
- var __getProtoOf = Object.getPrototypeOf;
11
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
14
- key = keys[i];
15
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
- get: ((k) => from[k]).bind(null, key),
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
21
- };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
- value: mod,
24
- enumerable: true
25
- }) : target, mod));
26
- //#endregion
1
+ require("./chunk-ByKO4r7w.cjs");
27
2
  //#region ../../internals/utils/src/casing.ts
28
3
  /**
29
4
  * Shared implementation for camelCase and PascalCase conversion.
@@ -104,18 +79,6 @@ function screamingSnakeCase(text, { prefix = "", suffix = "" } = {}) {
104
79
  }).toUpperCase();
105
80
  }
106
81
  //#endregion
107
- Object.defineProperty(exports, "__name", {
108
- enumerable: true,
109
- get: function() {
110
- return __name;
111
- }
112
- });
113
- Object.defineProperty(exports, "__toESM", {
114
- enumerable: true,
115
- get: function() {
116
- return __toESM;
117
- }
118
- });
119
82
  Object.defineProperty(exports, "camelCase", {
120
83
  enumerable: true,
121
84
  get: function() {
@@ -141,4 +104,4 @@ Object.defineProperty(exports, "snakeCase", {
141
104
  }
142
105
  });
143
106
 
144
- //# sourceMappingURL=casing-D2uQKLWS.cjs.map
107
+ //# sourceMappingURL=casing-DHfdqpLi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"casing-D2uQKLWS.cjs","names":[],"sources":["../../../internals/utils/src/casing.ts"],"sourcesContent":["type Options = {\n /**\n * When `true`, dot-separated segments are split on `.` and joined with `/` after casing.\n */\n isFile?: boolean\n /**\n * Text prepended before casing is applied.\n */\n prefix?: string\n /**\n * Text appended before casing is applied.\n */\n suffix?: string\n}\n\n/**\n * Shared implementation for camelCase and PascalCase conversion.\n * Splits on common word boundaries (spaces, hyphens, underscores, dots, slashes, colons)\n * and capitalizes each word according to `pascal`.\n *\n * When `pascal` is `true` the first word is also capitalized (PascalCase), otherwise only subsequent words are.\n */\nfunction toCamelOrPascal(text: string, pascal: boolean): string {\n const normalized = text\n .trim()\n .replace(/([a-z\\d])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .replace(/(\\d)([a-z])/g, '$1 $2')\n\n const words = normalized.split(/[\\s\\-_./\\\\:]+/).filter(Boolean)\n\n return words\n .map((word, i) => {\n const allUpper = word.length > 1 && word === word.toUpperCase()\n if (allUpper) return word\n if (i === 0 && !pascal) return word.charAt(0).toLowerCase() + word.slice(1)\n return word.charAt(0).toUpperCase() + word.slice(1)\n })\n .join('')\n .replace(/[^a-zA-Z0-9]/g, '')\n}\n\n/**\n * Splits `text` on `.` and applies `transformPart` to each segment.\n * The last segment receives `isLast = true`, all earlier segments receive `false`.\n * Segments are joined with `/` to form a file path.\n *\n * Only splits on dots followed by a letter so that version numbers\n * embedded in operationIds (e.g. `v2025.0`) are kept intact.\n */\nfunction applyToFileParts(text: string, transformPart: (part: string, isLast: boolean) => string): string {\n const parts = text.split(/\\.(?=[a-zA-Z])/)\n return parts.map((part, i) => transformPart(part, i === parts.length - 1)).join('/')\n}\n\n/**\n * Converts `text` to camelCase.\n * When `isFile` is `true`, dot-separated segments are each cased independently and joined with `/`.\n *\n * @example\n * camelCase('hello-world') // 'helloWorld'\n * camelCase('pet.petId', { isFile: true }) // 'pet/petId'\n */\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => camelCase(part, isLast ? { prefix, suffix } : {}))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, false)\n}\n\n/**\n * Converts `text` to PascalCase.\n * When `isFile` is `true`, the last dot-separated segment is PascalCased and earlier segments are camelCased.\n *\n * @example\n * pascalCase('hello-world') // 'HelloWorld'\n * pascalCase('pet.petId', { isFile: true }) // 'pet/PetId'\n */\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => (isLast ? pascalCase(part, { prefix, suffix }) : camelCase(part)))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, true)\n}\n\n/**\n * Converts `text` to snake_case.\n *\n * @example\n * snakeCase('helloWorld') // 'hello_world'\n * snakeCase('Hello-World') // 'hello_world'\n */\nexport function snakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n const processed = `${prefix} ${text} ${suffix}`.trim()\n return processed\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-.]+/g, '_')\n .replace(/[^a-zA-Z0-9_]/g, '')\n .toLowerCase()\n .split('_')\n .filter(Boolean)\n .join('_')\n}\n\n/**\n * Converts `text` to SCREAMING_SNAKE_CASE.\n *\n * @example\n * screamingSnakeCase('helloWorld') // 'HELLO_WORLD'\n */\nexport function screamingSnakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n return snakeCase(text, { prefix, suffix }).toUpperCase()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAS,gBAAgB,MAAc,QAAyB;AAS9D,QARmB,KAChB,MAAM,CACN,QAAQ,qBAAqB,QAAQ,CACrC,QAAQ,yBAAyB,QAAQ,CACzC,QAAQ,gBAAgB,QAAQ,CAEV,MAAM,gBAAgB,CAAC,OAAO,QAAQ,CAG5D,KAAK,MAAM,MAAM;AAEhB,MADiB,KAAK,SAAS,KAAK,SAAS,KAAK,aAAa,CACjD,QAAO;AACrB,MAAI,MAAM,KAAK,CAAC,OAAQ,QAAO,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE;AAC3E,SAAO,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE;GACnD,CACD,KAAK,GAAG,CACR,QAAQ,iBAAiB,GAAG;;;;;;;;;;AAWjC,SAAS,iBAAiB,MAAc,eAAkE;CACxG,MAAM,QAAQ,KAAK,MAAM,iBAAiB;AAC1C,QAAO,MAAM,KAAK,MAAM,MAAM,cAAc,MAAM,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI;;;;;;;;;;AAWtF,SAAgB,UAAU,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,OAAgB,EAAE,EAAU;AAClG,KAAI,OACF,QAAO,iBAAiB,OAAO,MAAM,WAAW,UAAU,MAAM,SAAS;EAAE;EAAQ;EAAQ,GAAG,EAAE,CAAC,CAAC;AAGpG,QAAO,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,MAAM;;;;;;;;;;AAW9D,SAAgB,WAAW,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,OAAgB,EAAE,EAAU;AACnG,KAAI,OACF,QAAO,iBAAiB,OAAO,MAAM,WAAY,SAAS,WAAW,MAAM;EAAE;EAAQ;EAAQ,CAAC,GAAG,UAAU,KAAK,CAAE;AAGpH,QAAO,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,KAAK;;;;;;;;;AAU7D,SAAgB,UAAU,MAAc,EAAE,SAAS,IAAI,SAAS,OAAgC,EAAE,EAAU;AAE1G,QADkB,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,MAAM,CAEnD,QAAQ,mBAAmB,QAAQ,CACnC,QAAQ,aAAa,IAAI,CACzB,QAAQ,kBAAkB,GAAG,CAC7B,aAAa,CACb,MAAM,IAAI,CACV,OAAO,QAAQ,CACf,KAAK,IAAI;;;;;;;;AASd,SAAgB,mBAAmB,MAAc,EAAE,SAAS,IAAI,SAAS,OAAgC,EAAE,EAAU;AACnH,QAAO,UAAU,MAAM;EAAE;EAAQ;EAAQ,CAAC,CAAC,aAAa"}
1
+ {"version":3,"file":"casing-DHfdqpLi.cjs","names":[],"sources":["../../../internals/utils/src/casing.ts"],"sourcesContent":["type Options = {\n /**\n * When `true`, dot-separated segments are split on `.` and joined with `/` after casing.\n */\n isFile?: boolean\n /**\n * Text prepended before casing is applied.\n */\n prefix?: string\n /**\n * Text appended before casing is applied.\n */\n suffix?: string\n}\n\n/**\n * Shared implementation for camelCase and PascalCase conversion.\n * Splits on common word boundaries (spaces, hyphens, underscores, dots, slashes, colons)\n * and capitalizes each word according to `pascal`.\n *\n * When `pascal` is `true` the first word is also capitalized (PascalCase), otherwise only subsequent words are.\n */\nfunction toCamelOrPascal(text: string, pascal: boolean): string {\n const normalized = text\n .trim()\n .replace(/([a-z\\d])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .replace(/(\\d)([a-z])/g, '$1 $2')\n\n const words = normalized.split(/[\\s\\-_./\\\\:]+/).filter(Boolean)\n\n return words\n .map((word, i) => {\n const allUpper = word.length > 1 && word === word.toUpperCase()\n if (allUpper) return word\n if (i === 0 && !pascal) return word.charAt(0).toLowerCase() + word.slice(1)\n return word.charAt(0).toUpperCase() + word.slice(1)\n })\n .join('')\n .replace(/[^a-zA-Z0-9]/g, '')\n}\n\n/**\n * Splits `text` on `.` and applies `transformPart` to each segment.\n * The last segment receives `isLast = true`, all earlier segments receive `false`.\n * Segments are joined with `/` to form a file path.\n *\n * Only splits on dots followed by a letter so that version numbers\n * embedded in operationIds (e.g. `v2025.0`) are kept intact.\n */\nfunction applyToFileParts(text: string, transformPart: (part: string, isLast: boolean) => string): string {\n const parts = text.split(/\\.(?=[a-zA-Z])/)\n return parts.map((part, i) => transformPart(part, i === parts.length - 1)).join('/')\n}\n\n/**\n * Converts `text` to camelCase.\n * When `isFile` is `true`, dot-separated segments are each cased independently and joined with `/`.\n *\n * @example\n * camelCase('hello-world') // 'helloWorld'\n * camelCase('pet.petId', { isFile: true }) // 'pet/petId'\n */\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => camelCase(part, isLast ? { prefix, suffix } : {}))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, false)\n}\n\n/**\n * Converts `text` to PascalCase.\n * When `isFile` is `true`, the last dot-separated segment is PascalCased and earlier segments are camelCased.\n *\n * @example\n * pascalCase('hello-world') // 'HelloWorld'\n * pascalCase('pet.petId', { isFile: true }) // 'pet/PetId'\n */\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => (isLast ? pascalCase(part, { prefix, suffix }) : camelCase(part)))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, true)\n}\n\n/**\n * Converts `text` to snake_case.\n *\n * @example\n * snakeCase('helloWorld') // 'hello_world'\n * snakeCase('Hello-World') // 'hello_world'\n */\nexport function snakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n const processed = `${prefix} ${text} ${suffix}`.trim()\n return processed\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-.]+/g, '_')\n .replace(/[^a-zA-Z0-9_]/g, '')\n .toLowerCase()\n .split('_')\n .filter(Boolean)\n .join('_')\n}\n\n/**\n * Converts `text` to SCREAMING_SNAKE_CASE.\n *\n * @example\n * screamingSnakeCase('helloWorld') // 'HELLO_WORLD'\n */\nexport function screamingSnakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n return snakeCase(text, { prefix, suffix }).toUpperCase()\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAS,gBAAgB,MAAc,QAAyB;AAS9D,QARmB,KAChB,MAAM,CACN,QAAQ,qBAAqB,QAAQ,CACrC,QAAQ,yBAAyB,QAAQ,CACzC,QAAQ,gBAAgB,QAAQ,CAEV,MAAM,gBAAgB,CAAC,OAAO,QAAQ,CAG5D,KAAK,MAAM,MAAM;AAEhB,MADiB,KAAK,SAAS,KAAK,SAAS,KAAK,aAAa,CACjD,QAAO;AACrB,MAAI,MAAM,KAAK,CAAC,OAAQ,QAAO,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE;AAC3E,SAAO,KAAK,OAAO,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE;GACnD,CACD,KAAK,GAAG,CACR,QAAQ,iBAAiB,GAAG;;;;;;;;;;AAWjC,SAAS,iBAAiB,MAAc,eAAkE;CACxG,MAAM,QAAQ,KAAK,MAAM,iBAAiB;AAC1C,QAAO,MAAM,KAAK,MAAM,MAAM,cAAc,MAAM,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI;;;;;;;;;;AAWtF,SAAgB,UAAU,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,OAAgB,EAAE,EAAU;AAClG,KAAI,OACF,QAAO,iBAAiB,OAAO,MAAM,WAAW,UAAU,MAAM,SAAS;EAAE;EAAQ;EAAQ,GAAG,EAAE,CAAC,CAAC;AAGpG,QAAO,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,MAAM;;;;;;;;;;AAW9D,SAAgB,WAAW,MAAc,EAAE,QAAQ,SAAS,IAAI,SAAS,OAAgB,EAAE,EAAU;AACnG,KAAI,OACF,QAAO,iBAAiB,OAAO,MAAM,WAAY,SAAS,WAAW,MAAM;EAAE;EAAQ;EAAQ,CAAC,GAAG,UAAU,KAAK,CAAE;AAGpH,QAAO,gBAAgB,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,KAAK;;;;;;;;;AAU7D,SAAgB,UAAU,MAAc,EAAE,SAAS,IAAI,SAAS,OAAgC,EAAE,EAAU;AAE1G,QADkB,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,MAAM,CAEnD,QAAQ,mBAAmB,QAAQ,CACnC,QAAQ,aAAa,IAAI,CACzB,QAAQ,kBAAkB,GAAG,CAC7B,aAAa,CACb,MAAM,IAAI,CACV,OAAO,QAAQ,CACf,KAAK,IAAI;;;;;;;;AASd,SAAgB,mBAAmB,MAAc,EAAE,SAAS,IAAI,SAAS,OAAgC,EAAE,EAAU;AACnH,QAAO,UAAU,MAAM;EAAE;EAAQ;EAAQ,CAAC,CAAC,aAAa"}
@@ -0,0 +1,38 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", {
5
+ value,
6
+ configurable: true
7
+ });
8
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
+ var __getOwnPropNames = Object.getOwnPropertyNames;
10
+ var __getProtoOf = Object.getPrototypeOf;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
14
+ key = keys[i];
15
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: ((k) => from[k]).bind(null, key),
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+ //#endregion
27
+ Object.defineProperty(exports, "__name", {
28
+ enumerable: true,
29
+ get: function() {
30
+ return __name;
31
+ }
32
+ });
33
+ Object.defineProperty(exports, "__toESM", {
34
+ enumerable: true,
35
+ get: function() {
36
+ return __toESM;
37
+ }
38
+ });
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Type = require("./Type-B70QnSzH.cjs");
2
+ const require_Type = require("./Type-oFwUfkZv.cjs");
3
3
  exports.Enum = require_Type.Enum;
4
4
  exports.Type = require_Type.Type;
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { n as PluginTs, r as ResolverTs } from "./types-zqLMbIqZ.js";
2
+ import { i as ResolverTs, r as PluginTs } from "./types-BcyuFDn9.js";
3
3
  import { EnumSchemaNode, SchemaNode } from "@kubb/ast/types";
4
4
  import { FabricReactNode } from "@kubb/react-fabric/types";
5
5
 
@@ -46,7 +46,6 @@ type Props = {
46
46
  enumKeyCasing: PluginTs['resolvedOptions']['enumKeyCasing'];
47
47
  syntaxType: PluginTs['resolvedOptions']['syntaxType'];
48
48
  resolver: PluginTs['resolvedOptions']['resolver'];
49
- legacy?: boolean;
50
49
  description?: string;
51
50
  keysToOmit?: string[];
52
51
  };
@@ -1,2 +1,2 @@
1
- import { n as Enum, t as Type } from "./Type-CMC7L-38.js";
1
+ import { n as Enum, t as Type } from "./Type-B6fo0gSk.js";
2
2
  export { Enum, Type };
@@ -0,0 +1,551 @@
1
+ import "./chunk--u3MIqq1.js";
2
+ import { t as builderTs } from "./builderTs-DausqHpc.js";
3
+ import { n as pascalCase } from "./casing-BJHFg-zZ.js";
4
+ import { r as ENUM_TYPES_WITH_KEY_SUFFIX } from "./printerTs-BgZucv4T.js";
5
+ import { t as Type } from "./Type-B6fo0gSk.js";
6
+ import { t as resolverTsLegacy } from "./resolverTsLegacy-DLl854-P.js";
7
+ import path from "node:path";
8
+ import { caseParams, composeTransformers, createProperty, createSchema, narrowSchema, schemaTypes, transform } from "@kubb/ast";
9
+ import { defineGenerator, getMode } from "@kubb/core";
10
+ import { File } from "@kubb/react-fabric";
11
+ import { Fragment, jsx, jsxs } from "@kubb/react-fabric/jsx-runtime";
12
+ //#region src/generators/typeGenerator.tsx
13
+ const typeGenerator = defineGenerator({
14
+ name: "typescript",
15
+ type: "react",
16
+ Operation({ node, adapter, options, config }) {
17
+ const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, resolver, transformers = [] } = options;
18
+ const root = path.resolve(config.root, config.output.path);
19
+ const mode = getMode(path.resolve(root, output.path));
20
+ const file = resolver.resolveFile({
21
+ name: node.operationId,
22
+ extname: ".ts",
23
+ tag: node.tags[0] ?? "default",
24
+ path: node.path
25
+ }, {
26
+ root,
27
+ output,
28
+ group
29
+ });
30
+ const params = caseParams(node.parameters, paramsCasing);
31
+ function renderSchemaType({ node: schemaNode, name, typedName, description, keysToOmit }) {
32
+ if (!schemaNode) return null;
33
+ const transformedNode = transform(schemaNode, composeTransformers(...transformers));
34
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
35
+ name: resolver.default(schemaName, "type"),
36
+ path: resolver.resolveFile({
37
+ name: schemaName,
38
+ extname: ".ts"
39
+ }, {
40
+ root,
41
+ output,
42
+ group
43
+ }).path
44
+ }));
45
+ return /* @__PURE__ */ jsxs(Fragment, { children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ jsx(File.Import, {
46
+ root: file.path,
47
+ path: imp.path,
48
+ name: imp.name,
49
+ isTypeOnly: true
50
+ }, [
51
+ name,
52
+ imp.path,
53
+ imp.isTypeOnly
54
+ ].join("-"))), /* @__PURE__ */ jsx(Type, {
55
+ name,
56
+ typedName,
57
+ node: transformedNode,
58
+ description,
59
+ enumType,
60
+ enumKeyCasing,
61
+ optionalType,
62
+ arrayType,
63
+ syntaxType,
64
+ resolver,
65
+ keysToOmit
66
+ })] });
67
+ }
68
+ const paramTypes = params.map((param) => renderSchemaType({
69
+ node: param.schema,
70
+ name: resolver.resolveParamName(node, param),
71
+ typedName: resolver.resolveParamTypedName(node, param)
72
+ }));
73
+ const requestType = node.requestBody?.schema ? renderSchemaType({
74
+ node: node.requestBody.schema,
75
+ name: resolver.resolveDataName(node),
76
+ typedName: resolver.resolveDataTypedName(node),
77
+ description: node.requestBody.description ?? node.requestBody.schema.description,
78
+ keysToOmit: node.requestBody.keysToOmit
79
+ }) : null;
80
+ const responseTypes = node.responses.map((res) => renderSchemaType({
81
+ node: res.schema,
82
+ name: resolver.resolveResponseStatusName(node, res.statusCode),
83
+ typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
84
+ description: res.description,
85
+ keysToOmit: res.keysToOmit
86
+ }));
87
+ const dataType = renderSchemaType({
88
+ node: builderTs.buildData({
89
+ node: {
90
+ ...node,
91
+ parameters: params
92
+ },
93
+ resolver
94
+ }),
95
+ name: resolver.resolveRequestConfigName(node),
96
+ typedName: resolver.resolveRequestConfigTypedName(node)
97
+ });
98
+ const responsesType = renderSchemaType({
99
+ node: builderTs.buildResponses({
100
+ node,
101
+ resolver
102
+ }),
103
+ name: resolver.resolveResponsesName(node),
104
+ typedName: resolver.resolveResponsesTypedName(node)
105
+ });
106
+ const responseType = renderSchemaType({
107
+ node: builderTs.buildResponseUnion({
108
+ node,
109
+ resolver
110
+ }),
111
+ name: resolver.resolveResponseName(node),
112
+ typedName: resolver.resolveResponseTypedName(node),
113
+ description: "Union of all possible responses"
114
+ });
115
+ return /* @__PURE__ */ jsxs(File, {
116
+ baseName: file.baseName,
117
+ path: file.path,
118
+ meta: file.meta,
119
+ banner: resolver.resolveBanner(adapter.rootNode, {
120
+ output,
121
+ config
122
+ }),
123
+ footer: resolver.resolveFooter(adapter.rootNode, {
124
+ output,
125
+ config
126
+ }),
127
+ children: [
128
+ paramTypes,
129
+ responseTypes,
130
+ requestType,
131
+ dataType,
132
+ responsesType,
133
+ responseType
134
+ ]
135
+ });
136
+ },
137
+ Schema({ node, adapter, options, config }) {
138
+ const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, resolver, transformers = [] } = options;
139
+ const root = path.resolve(config.root, config.output.path);
140
+ const mode = getMode(path.resolve(root, output.path));
141
+ if (!node.name) return;
142
+ const transformedNode = transform(node, composeTransformers(...transformers));
143
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
144
+ name: resolver.default(schemaName, "type"),
145
+ path: resolver.resolveFile({
146
+ name: schemaName,
147
+ extname: ".ts"
148
+ }, {
149
+ root,
150
+ output,
151
+ group
152
+ }).path
153
+ }));
154
+ const isEnumSchema = !!narrowSchema(node, schemaTypes.enum);
155
+ const typedName = ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyTypedName(node) : resolver.resolveTypedName(node.name);
156
+ const type = {
157
+ name: resolver.resolveName(node.name),
158
+ typedName,
159
+ file: resolver.resolveFile({
160
+ name: node.name,
161
+ extname: ".ts"
162
+ }, {
163
+ root,
164
+ output,
165
+ group
166
+ })
167
+ };
168
+ return /* @__PURE__ */ jsxs(File, {
169
+ baseName: type.file.baseName,
170
+ path: type.file.path,
171
+ meta: type.file.meta,
172
+ banner: resolver.resolveBanner(adapter.rootNode, {
173
+ output,
174
+ config
175
+ }),
176
+ footer: resolver.resolveFooter(adapter.rootNode, {
177
+ output,
178
+ config
179
+ }),
180
+ children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ jsx(File.Import, {
181
+ root: type.file.path,
182
+ path: imp.path,
183
+ name: imp.name,
184
+ isTypeOnly: true
185
+ }, [
186
+ node.name,
187
+ imp.path,
188
+ imp.isTypeOnly
189
+ ].join("-"))), /* @__PURE__ */ jsx(Type, {
190
+ name: type.name,
191
+ typedName: type.typedName,
192
+ node: transformedNode,
193
+ enumType,
194
+ enumKeyCasing,
195
+ optionalType,
196
+ arrayType,
197
+ syntaxType,
198
+ resolver
199
+ })]
200
+ });
201
+ }
202
+ });
203
+ //#endregion
204
+ //#region src/generators/typeGeneratorLegacy.tsx
205
+ function buildGroupedParamsSchema({ params, parentName }) {
206
+ return createSchema({
207
+ type: "object",
208
+ properties: params.map((param) => {
209
+ let schema = param.schema;
210
+ if (narrowSchema(schema, "enum") && !schema.name && parentName) schema = {
211
+ ...schema,
212
+ name: pascalCase([
213
+ parentName,
214
+ param.name,
215
+ "enum"
216
+ ].join(" "))
217
+ };
218
+ return createProperty({
219
+ name: param.name,
220
+ required: param.required,
221
+ schema
222
+ });
223
+ })
224
+ });
225
+ }
226
+ function buildLegacyResponsesSchemaNode({ node, resolver }) {
227
+ const isGet = node.method.toLowerCase() === "get";
228
+ const successResponses = node.responses.filter((res) => {
229
+ const code = Number(res.statusCode);
230
+ return !Number.isNaN(code) && code >= 200 && code < 300;
231
+ });
232
+ const errorResponses = node.responses.filter((res) => res.statusCode === "default" || Number(res.statusCode) >= 400);
233
+ const responseSchema = successResponses.length > 0 ? successResponses.length === 1 ? createSchema({
234
+ type: "ref",
235
+ name: resolver.resolveResponseStatusTypedName(node, successResponses[0].statusCode)
236
+ }) : createSchema({
237
+ type: "union",
238
+ members: successResponses.map((res) => createSchema({
239
+ type: "ref",
240
+ name: resolver.resolveResponseStatusTypedName(node, res.statusCode)
241
+ }))
242
+ }) : createSchema({ type: "any" });
243
+ const errorsSchema = errorResponses.length > 0 ? errorResponses.length === 1 ? createSchema({
244
+ type: "ref",
245
+ name: resolver.resolveResponseStatusTypedName(node, errorResponses[0].statusCode)
246
+ }) : createSchema({
247
+ type: "union",
248
+ members: errorResponses.map((res) => createSchema({
249
+ type: "ref",
250
+ name: resolver.resolveResponseStatusTypedName(node, res.statusCode)
251
+ }))
252
+ }) : createSchema({ type: "any" });
253
+ const properties = [createProperty({
254
+ name: "Response",
255
+ required: true,
256
+ schema: responseSchema
257
+ })];
258
+ if (!isGet && node.requestBody?.schema) properties.push(createProperty({
259
+ name: "Request",
260
+ required: true,
261
+ schema: createSchema({
262
+ type: "ref",
263
+ name: resolver.resolveDataTypedName(node)
264
+ })
265
+ }));
266
+ if (node.parameters.some((p) => p.in === "query") && resolver.resolveQueryParamsTypedName) properties.push(createProperty({
267
+ name: "QueryParams",
268
+ required: true,
269
+ schema: createSchema({
270
+ type: "ref",
271
+ name: resolver.resolveQueryParamsTypedName(node)
272
+ })
273
+ }));
274
+ if (node.parameters.some((p) => p.in === "path") && resolver.resolvePathParamsTypedName) properties.push(createProperty({
275
+ name: "PathParams",
276
+ required: true,
277
+ schema: createSchema({
278
+ type: "ref",
279
+ name: resolver.resolvePathParamsTypedName(node)
280
+ })
281
+ }));
282
+ if (node.parameters.some((p) => p.in === "header") && resolver.resolveHeaderParamsTypedName) properties.push(createProperty({
283
+ name: "HeaderParams",
284
+ required: true,
285
+ schema: createSchema({
286
+ type: "ref",
287
+ name: resolver.resolveHeaderParamsTypedName(node)
288
+ })
289
+ }));
290
+ properties.push(createProperty({
291
+ name: "Errors",
292
+ required: true,
293
+ schema: errorsSchema
294
+ }));
295
+ return createSchema({
296
+ type: "object",
297
+ properties
298
+ });
299
+ }
300
+ function buildLegacyResponseUnionSchemaNode({ node, resolver }) {
301
+ const successResponses = node.responses.filter((res) => {
302
+ const code = Number(res.statusCode);
303
+ return !Number.isNaN(code) && code >= 200 && code < 300;
304
+ });
305
+ if (successResponses.length === 0) return createSchema({ type: "any" });
306
+ if (successResponses.length === 1) return createSchema({
307
+ type: "ref",
308
+ name: resolver.resolveResponseStatusTypedName(node, successResponses[0].statusCode)
309
+ });
310
+ return createSchema({
311
+ type: "union",
312
+ members: successResponses.map((res) => createSchema({
313
+ type: "ref",
314
+ name: resolver.resolveResponseStatusTypedName(node, res.statusCode)
315
+ }))
316
+ });
317
+ }
318
+ function nameUnnamedEnums(node, parentName) {
319
+ return transform(node, {
320
+ schema(n) {
321
+ const enumNode = narrowSchema(n, "enum");
322
+ if (enumNode && !enumNode.name) return {
323
+ ...enumNode,
324
+ name: pascalCase([parentName, "enum"].join(" "))
325
+ };
326
+ },
327
+ property(p) {
328
+ const enumNode = narrowSchema(p.schema, "enum");
329
+ if (enumNode && !enumNode.name) return {
330
+ ...p,
331
+ schema: {
332
+ ...enumNode,
333
+ name: pascalCase([
334
+ parentName,
335
+ p.name,
336
+ "enum"
337
+ ].join(" "))
338
+ }
339
+ };
340
+ }
341
+ });
342
+ }
343
+ const typeGeneratorLegacy = defineGenerator({
344
+ name: "typescript-legacy",
345
+ type: "react",
346
+ Operation({ node, adapter, options, config }) {
347
+ const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, resolver, transformers = [] } = options;
348
+ const root = path.resolve(config.root, config.output.path);
349
+ const mode = getMode(path.resolve(root, output.path));
350
+ const file = resolver.resolveFile({
351
+ name: node.operationId,
352
+ extname: ".ts",
353
+ tag: node.tags[0] ?? "default",
354
+ path: node.path
355
+ }, {
356
+ root,
357
+ output,
358
+ group
359
+ });
360
+ const params = caseParams(node.parameters, paramsCasing);
361
+ function renderSchemaType({ node: schemaNode, name, typedName, description, keysToOmit }) {
362
+ if (!schemaNode) return null;
363
+ const transformedNode = transform(schemaNode, composeTransformers(...transformers));
364
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
365
+ name: resolver.default(schemaName, "type"),
366
+ path: resolver.resolveFile({
367
+ name: schemaName,
368
+ extname: ".ts"
369
+ }, {
370
+ root,
371
+ output,
372
+ group
373
+ }).path
374
+ }));
375
+ return /* @__PURE__ */ jsxs(Fragment, { children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ jsx(File.Import, {
376
+ root: file.path,
377
+ path: imp.path,
378
+ name: imp.name,
379
+ isTypeOnly: true
380
+ }, [
381
+ name,
382
+ imp.path,
383
+ imp.isTypeOnly
384
+ ].join("-"))), /* @__PURE__ */ jsx(Type, {
385
+ name,
386
+ typedName,
387
+ node: transformedNode,
388
+ description,
389
+ enumType,
390
+ enumKeyCasing,
391
+ optionalType,
392
+ arrayType,
393
+ syntaxType,
394
+ resolver,
395
+ keysToOmit
396
+ })] });
397
+ }
398
+ const pathParams = params.filter((p) => p.in === "path");
399
+ const queryParams = params.filter((p) => p.in === "query");
400
+ const headerParams = params.filter((p) => p.in === "header");
401
+ const responseTypes = node.responses.map((res) => {
402
+ const responseName = resolver.resolveResponseStatusName(node, res.statusCode);
403
+ const baseResponseName = resolverTsLegacy.resolveResponseStatusName(node, res.statusCode);
404
+ return renderSchemaType({
405
+ node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,
406
+ name: responseName,
407
+ typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),
408
+ description: res.description,
409
+ keysToOmit: res.keysToOmit
410
+ });
411
+ });
412
+ const requestType = node.requestBody?.schema ? renderSchemaType({
413
+ node: nameUnnamedEnums(node.requestBody.schema, resolverTsLegacy.resolveDataName(node)),
414
+ name: resolver.resolveDataName(node),
415
+ typedName: resolver.resolveDataTypedName(node),
416
+ description: node.requestBody.description ?? node.requestBody.schema.description,
417
+ keysToOmit: node.requestBody.keysToOmit
418
+ }) : null;
419
+ const legacyParamTypes = [
420
+ pathParams.length > 0 ? renderSchemaType({
421
+ node: buildGroupedParamsSchema({
422
+ params: pathParams,
423
+ parentName: resolverTsLegacy.resolvePathParamsName(node)
424
+ }),
425
+ name: resolver.resolvePathParamsName(node),
426
+ typedName: resolver.resolvePathParamsTypedName(node)
427
+ }) : null,
428
+ queryParams.length > 0 ? renderSchemaType({
429
+ node: buildGroupedParamsSchema({
430
+ params: queryParams,
431
+ parentName: resolverTsLegacy.resolveQueryParamsName(node)
432
+ }),
433
+ name: resolver.resolveQueryParamsName(node),
434
+ typedName: resolver.resolveQueryParamsTypedName(node)
435
+ }) : null,
436
+ headerParams.length > 0 ? renderSchemaType({
437
+ node: buildGroupedParamsSchema({
438
+ params: headerParams,
439
+ parentName: resolverTsLegacy.resolveHeaderParamsName(node)
440
+ }),
441
+ name: resolver.resolveHeaderParamsName(node),
442
+ typedName: resolver.resolveHeaderParamsTypedName(node)
443
+ }) : null
444
+ ];
445
+ const legacyResponsesType = renderSchemaType({
446
+ node: buildLegacyResponsesSchemaNode({
447
+ node,
448
+ resolver
449
+ }),
450
+ name: resolver.resolveResponsesName(node),
451
+ typedName: resolver.resolveResponsesTypedName(node)
452
+ });
453
+ const legacyResponseType = renderSchemaType({
454
+ node: buildLegacyResponseUnionSchemaNode({
455
+ node,
456
+ resolver
457
+ }),
458
+ name: resolver.resolveResponseName(node),
459
+ typedName: resolver.resolveResponseTypedName(node)
460
+ });
461
+ return /* @__PURE__ */ jsxs(File, {
462
+ baseName: file.baseName,
463
+ path: file.path,
464
+ meta: file.meta,
465
+ banner: resolver.resolveBanner(adapter.rootNode, {
466
+ output,
467
+ config
468
+ }),
469
+ footer: resolver.resolveFooter(adapter.rootNode, {
470
+ output,
471
+ config
472
+ }),
473
+ children: [
474
+ legacyParamTypes,
475
+ responseTypes,
476
+ requestType,
477
+ legacyResponseType,
478
+ legacyResponsesType
479
+ ]
480
+ });
481
+ },
482
+ Schema({ node, adapter, options, config }) {
483
+ const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, resolver, transformers = [] } = options;
484
+ const root = path.resolve(config.root, config.output.path);
485
+ const mode = getMode(path.resolve(root, output.path));
486
+ if (!node.name) return;
487
+ const transformedNode = transform(node, composeTransformers(...transformers));
488
+ const imports = adapter.getImports(transformedNode, (schemaName) => ({
489
+ name: resolver.default(schemaName, "type"),
490
+ path: resolver.resolveFile({
491
+ name: schemaName,
492
+ extname: ".ts"
493
+ }, {
494
+ root,
495
+ output,
496
+ group
497
+ }).path
498
+ }));
499
+ const isEnumSchema = !!narrowSchema(node, schemaTypes.enum);
500
+ const typedName = ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyTypedName(node) : resolver.resolveTypedName(node.name);
501
+ const type = {
502
+ name: resolver.resolveName(node.name),
503
+ typedName,
504
+ file: resolver.resolveFile({
505
+ name: node.name,
506
+ extname: ".ts"
507
+ }, {
508
+ root,
509
+ output,
510
+ group
511
+ })
512
+ };
513
+ return /* @__PURE__ */ jsxs(File, {
514
+ baseName: type.file.baseName,
515
+ path: type.file.path,
516
+ meta: type.file.meta,
517
+ banner: resolver.resolveBanner(adapter.rootNode, {
518
+ output,
519
+ config
520
+ }),
521
+ footer: resolver.resolveFooter(adapter.rootNode, {
522
+ output,
523
+ config
524
+ }),
525
+ children: [mode === "split" && imports.map((imp) => /* @__PURE__ */ jsx(File.Import, {
526
+ root: type.file.path,
527
+ path: imp.path,
528
+ name: imp.name,
529
+ isTypeOnly: true
530
+ }, [
531
+ node.name,
532
+ imp.path,
533
+ imp.isTypeOnly
534
+ ].join("-"))), /* @__PURE__ */ jsx(Type, {
535
+ name: type.name,
536
+ typedName: type.typedName,
537
+ node: transformedNode,
538
+ enumType,
539
+ enumKeyCasing,
540
+ optionalType,
541
+ arrayType,
542
+ syntaxType,
543
+ resolver
544
+ })]
545
+ });
546
+ }
547
+ });
548
+ //#endregion
549
+ export { typeGenerator as n, typeGeneratorLegacy as t };
550
+
551
+ //# sourceMappingURL=generators-ByK18qUn.js.map