@apollo-deploy/tesseract 1.9.0 → 2.0.0

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 (194) hide show
  1. package/README.md +218 -110
  2. package/dist/adapters/csharp/index.d.ts +5 -8
  3. package/dist/adapters/csharp/index.d.ts.map +1 -1
  4. package/dist/adapters/csharp/index.js +314 -74
  5. package/dist/adapters/csharp/index.js.map +1 -1
  6. package/dist/adapters/documentation.d.ts +17 -0
  7. package/dist/adapters/documentation.d.ts.map +1 -0
  8. package/dist/adapters/documentation.js +268 -0
  9. package/dist/adapters/documentation.js.map +1 -0
  10. package/dist/adapters/go/index.d.ts +5 -8
  11. package/dist/adapters/go/index.d.ts.map +1 -1
  12. package/dist/adapters/go/index.js +197 -101
  13. package/dist/adapters/go/index.js.map +1 -1
  14. package/dist/adapters/kotlin/index.d.ts +5 -9
  15. package/dist/adapters/kotlin/index.d.ts.map +1 -1
  16. package/dist/adapters/kotlin/index.js +280 -212
  17. package/dist/adapters/kotlin/index.js.map +1 -1
  18. package/dist/adapters/php/index.d.ts +5 -15
  19. package/dist/adapters/php/index.d.ts.map +1 -1
  20. package/dist/adapters/php/index.js +362 -90
  21. package/dist/adapters/php/index.js.map +1 -1
  22. package/dist/adapters/python/index.d.ts +5 -8
  23. package/dist/adapters/python/index.d.ts.map +1 -1
  24. package/dist/adapters/python/index.js +240 -109
  25. package/dist/adapters/python/index.js.map +1 -1
  26. package/dist/adapters/ruby/index.d.ts +3 -3
  27. package/dist/adapters/ruby/index.d.ts.map +1 -1
  28. package/dist/adapters/ruby/index.js +235 -46
  29. package/dist/adapters/ruby/index.js.map +1 -1
  30. package/dist/adapters/rust/index.d.ts +5 -9
  31. package/dist/adapters/rust/index.d.ts.map +1 -1
  32. package/dist/adapters/rust/index.js +237 -169
  33. package/dist/adapters/rust/index.js.map +1 -1
  34. package/dist/adapters/shared.d.ts +7 -0
  35. package/dist/adapters/shared.d.ts.map +1 -0
  36. package/dist/adapters/shared.js +68 -0
  37. package/dist/adapters/shared.js.map +1 -0
  38. package/dist/adapters/type-utils.d.ts +13 -0
  39. package/dist/adapters/type-utils.d.ts.map +1 -0
  40. package/dist/adapters/type-utils.js +105 -0
  41. package/dist/adapters/type-utils.js.map +1 -0
  42. package/dist/adapters/types.d.ts.map +1 -1
  43. package/dist/adapters/typescript/emitter/emitSchema.d.ts +2 -2
  44. package/dist/adapters/typescript/emitter/emitSchema.js +39 -27
  45. package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -1
  46. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +2 -2
  47. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +15 -15
  48. package/dist/adapters/typescript/emitter/importCollector.d.ts +2 -4
  49. package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -1
  50. package/dist/adapters/typescript/emitter/importCollector.js +40 -50
  51. package/dist/adapters/typescript/emitter/importCollector.js.map +1 -1
  52. package/dist/adapters/typescript/emitter/parsers.d.ts +1 -1
  53. package/dist/adapters/typescript/emitter/parsers.js +13 -13
  54. package/dist/adapters/typescript/emitter/typeHoister.d.ts +1 -1
  55. package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -1
  56. package/dist/adapters/typescript/emitter/typeHoister.js +12 -20
  57. package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -1
  58. package/dist/adapters/typescript/index.d.ts +3 -3
  59. package/dist/adapters/typescript/index.d.ts.map +1 -1
  60. package/dist/adapters/typescript/index.js +148 -166
  61. package/dist/adapters/typescript/index.js.map +1 -1
  62. package/dist/adapters/typescript/shared.d.ts +2 -2
  63. package/dist/adapters/typescript/shared.js +12 -12
  64. package/dist/cli.js +50 -37
  65. package/dist/cli.js.map +1 -1
  66. package/dist/collector.d.ts +13 -3
  67. package/dist/collector.d.ts.map +1 -1
  68. package/dist/collector.js +69 -32
  69. package/dist/collector.js.map +1 -1
  70. package/dist/elysia.js +2 -2
  71. package/dist/elysia.js.map +1 -1
  72. package/dist/express.d.ts.map +1 -1
  73. package/dist/express.js.map +1 -1
  74. package/dist/fastify.d.ts +7 -0
  75. package/dist/fastify.d.ts.map +1 -1
  76. package/dist/fastify.js +39 -20
  77. package/dist/fastify.js.map +1 -1
  78. package/dist/helpers/handlebars.d.ts +7 -16
  79. package/dist/helpers/handlebars.d.ts.map +1 -1
  80. package/dist/helpers/handlebars.js +127 -177
  81. package/dist/helpers/handlebars.js.map +1 -1
  82. package/dist/hono.d.ts.map +1 -1
  83. package/dist/hono.js.map +1 -1
  84. package/dist/index.d.ts +14 -12
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +32 -30
  87. package/dist/index.js.map +1 -1
  88. package/dist/koa.d.ts.map +1 -1
  89. package/dist/koa.js.map +1 -1
  90. package/dist/nestjs.d.ts.map +1 -1
  91. package/dist/nestjs.js +41 -14
  92. package/dist/nestjs.js.map +1 -1
  93. package/dist/pipeline/enrich.d.ts +2 -13
  94. package/dist/pipeline/enrich.d.ts.map +1 -1
  95. package/dist/pipeline/enrich.js +157 -212
  96. package/dist/pipeline/enrich.js.map +1 -1
  97. package/dist/pipeline/intake.d.ts +3 -3
  98. package/dist/pipeline/intake.d.ts.map +1 -1
  99. package/dist/pipeline/intake.js +342 -238
  100. package/dist/pipeline/intake.js.map +1 -1
  101. package/dist/pipeline/write.d.ts +1 -14
  102. package/dist/pipeline/write.d.ts.map +1 -1
  103. package/dist/pipeline/write.js +73 -113
  104. package/dist/pipeline/write.js.map +1 -1
  105. package/dist/types/config.d.ts +14 -26
  106. package/dist/types/config.d.ts.map +1 -1
  107. package/dist/types/config.js +16 -12
  108. package/dist/types/config.js.map +1 -1
  109. package/dist/types/ir.d.ts +12 -8
  110. package/dist/types/ir.d.ts.map +1 -1
  111. package/dist/types/manifest.d.ts +10 -11
  112. package/dist/types/manifest.d.ts.map +1 -1
  113. package/dist/types/manifest.js +54 -14
  114. package/dist/types/manifest.js.map +1 -1
  115. package/dist/types/sdk-module.d.ts +2 -2
  116. package/dist/types/sdk-module.js +1 -1
  117. package/dist/utils/format.d.ts +1 -3
  118. package/dist/utils/format.d.ts.map +1 -1
  119. package/dist/utils/format.js +3 -10
  120. package/dist/utils/format.js.map +1 -1
  121. package/dist/utils/naming.d.ts.map +1 -1
  122. package/dist/utils/naming.js +174 -184
  123. package/dist/utils/naming.js.map +1 -1
  124. package/dist/utils/npm-token.d.ts +1 -17
  125. package/dist/utils/npm-token.d.ts.map +1 -1
  126. package/dist/utils/npm-token.js +27 -76
  127. package/dist/utils/npm-token.js.map +1 -1
  128. package/dist/utils/version.d.ts +14 -0
  129. package/dist/utils/version.d.ts.map +1 -0
  130. package/dist/utils/version.js +60 -0
  131. package/dist/utils/version.js.map +1 -0
  132. package/package.json +4 -3
  133. package/templates/csharp/client.hbs +26 -49
  134. package/templates/csharp/csproj.hbs +7 -0
  135. package/templates/csharp/domain.hbs +48 -130
  136. package/templates/csharp/errors.hbs +17 -25
  137. package/templates/csharp/readme.hbs +31 -44
  138. package/templates/csharp/transport.hbs +238 -136
  139. package/templates/csharp/types.hbs +30 -76
  140. package/templates/go/client.hbs +44 -109
  141. package/templates/go/domain.hbs +83 -25
  142. package/templates/go/go-mod.hbs +1 -4
  143. package/templates/go/readme.hbs +32 -29
  144. package/templates/go/transport.hbs +174 -173
  145. package/templates/go/types.hbs +17 -53
  146. package/templates/go/utils.hbs +3 -2
  147. package/templates/kotlin/build-gradle.hbs +1 -1
  148. package/templates/kotlin/client.hbs +18 -15
  149. package/templates/kotlin/domain.hbs +54 -51
  150. package/templates/kotlin/errors.hbs +1 -1
  151. package/templates/kotlin/readme.hbs +35 -137
  152. package/templates/kotlin/transport.hbs +140 -123
  153. package/templates/kotlin/types.hbs +30 -81
  154. package/templates/php/client.hbs +8 -46
  155. package/templates/php/composer.hbs +2 -1
  156. package/templates/php/domain.hbs +86 -117
  157. package/templates/php/errors.hbs +1 -1
  158. package/templates/php/readme.hbs +42 -49
  159. package/templates/php/transport.hbs +192 -145
  160. package/templates/php/types.hbs +63 -60
  161. package/templates/python/client.hbs +15 -2
  162. package/templates/python/domain.hbs +50 -108
  163. package/templates/python/pyproject.hbs +5 -0
  164. package/templates/python/readme.hbs +47 -30
  165. package/templates/python/resources-init.hbs +1 -1
  166. package/templates/python/transport.hbs +167 -53
  167. package/templates/python/types.hbs +22 -58
  168. package/templates/ruby/client.hbs +10 -6
  169. package/templates/ruby/domain.hbs +48 -67
  170. package/templates/ruby/errors.hbs +3 -3
  171. package/templates/ruby/gemspec.hbs +3 -10
  172. package/templates/ruby/index.hbs +3 -3
  173. package/templates/ruby/readme.hbs +33 -70
  174. package/templates/ruby/transport.hbs +129 -103
  175. package/templates/ruby/types.hbs +11 -16
  176. package/templates/ruby/version.hbs +1 -1
  177. package/templates/rust/cargo.hbs +2 -0
  178. package/templates/rust/client.hbs +10 -1
  179. package/templates/rust/domain.hbs +69 -52
  180. package/templates/rust/error.hbs +3 -1
  181. package/templates/rust/lib.hbs +4 -5
  182. package/templates/rust/readme.hbs +33 -46
  183. package/templates/rust/transport.hbs +170 -159
  184. package/templates/rust/types.hbs +34 -111
  185. package/templates/typescript/domain-class.hbs +14 -6
  186. package/templates/typescript/domain.hbs +13 -5
  187. package/templates/typescript/package-json.hbs +3 -1
  188. package/templates/typescript/readme.hbs +42 -42
  189. package/templates/typescript/transport.hbs +46 -8
  190. package/templates/typescript/types-errors.hbs +1 -1
  191. package/dist/adapters/typescript/model-emitter.d.ts +0 -13
  192. package/dist/adapters/typescript/model-emitter.d.ts.map +0 -1
  193. package/dist/adapters/typescript/model-emitter.js +0 -415
  194. package/dist/adapters/typescript/model-emitter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/go/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,SAAS,UAAU,CAAC,MAA0B;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,aAAa,CAAC;IAClC,2DAA2D;IAC3D,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,GAAG,MAAM,CAAC;IACjE,gEAAgE;IAChE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,MAAM,GAAG,GAA2B;QAClC,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,MAAM;QACf,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,aAAa;KACvB,CAAC;IACF,IAAI,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,WAAW;IACX,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACrC,IAAI,GAAG;QAAE,OAAO,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,eAAe;IACf,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,IAAI,GAAG;QAAE,OAAO,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,qCAAqC;IACrC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,SAAS,iBAAiB;IACxB,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,MAA0B,EAAE,EAAE,CACtE,UAAU,CAAC,MAAM,CAAC,CACnB,CAAC;IACF,UAAU,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CAC7D,cAAc,CAAC,MAAM,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,SAAS;IACX,QAAQ,GAAG,IAAI,CAAC;IAEzB,KAAK,CAAC,IAAI,CACR,QAAuB,EACvB,SAAiB,EACjB,MAAuB;QAEvB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC;QAEpD,0EAA0E;QAC1E,MAAM,aAAa,GAA2B,EAAE,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU;gBAAE,SAAS;YAErE,MAAM,GAAG,GACP,UAAU,KAAK,QAAQ;gBACrB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;gBAC3D,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAEnB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE/B,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAC5C,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;aAClE,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;aAC9B,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEjC,0EAA0E;QAC1E,MAAM,IAAI,GAAG,CACX,YAAoB,EACpB,YAAoB,EACpB,GAAY,EACN,EAAE;YACR,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CACX,GAAG,YAAY,KACb,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEF,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACvB,GAAG,QAAQ,CAAC,IAAI;YAChB,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;YAC1B,GAAG,QAAQ,CAAC,IAAI;YAChB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,MAAM;YACN,OAAO;SACR,CAAC,CAAC;QAEH,0EAA0E;QAC1E,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;YAC1B,GAAG,QAAQ,CAAC,IAAI;YAChB,MAAM,EAAE,aAAa;YACrB,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,MAAM;YACN,OAAO;YACP,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE;YAChC,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;YAC1B,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YACxB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;YACxB,OAAO;SACR,CAAC,CAAC;QAEH,0EAA0E;QAC1E,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAEpE,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,KAAK,EAAE,QAAQ,EAAE;gBACrC,GAAG,KAAK;gBACR,OAAO;gBACP,MAAM,EAAE,WAAW;gBACnB,eAAe,EAAE,QAAQ,CAAC,eAAe;gBACzC,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/go/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
- /**
2
- * Kotlin language adapter.
3
- * Emits a Gradle-based Kotlin SDK with Ktor HTTP client, kotlinx.serialization,
4
- * and coroutines for async operations.
5
- */
6
- import type { EnrichedSDKIR } from "../../types/ir.js";
7
- import type { LanguageAdapter, EmitResult } from "../types.js";
8
- import type { ResolvedConfig } from "../../types/config.js";
1
+ /** Kotlin language adapter using Ktor and kotlinx.serialization. */
2
+ import type { EnrichedSDKIR } from '../../types/ir.js';
3
+ import type { ResolvedConfig } from '../../types/config.js';
4
+ import type { EmitResult, LanguageAdapter } from '../types.js';
9
5
  export declare class KotlinAdapter implements LanguageAdapter {
10
6
  readonly language = "kotlin";
11
- emit(enriched: EnrichedSDKIR, outputDir: string, config?: ResolvedConfig): Promise<EmitResult>;
7
+ emit(enriched: EnrichedSDKIR, _outputDir: string, config?: ResolvedConfig): Promise<EmitResult>;
12
8
  }
13
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/kotlin/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA4I5D,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,QAAQ,YAAY;IAEvB,IAAI,CACR,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,UAAU,CAAC;CAyJvB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/kotlin/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAKpE,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyP/D,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,QAAQ,YAAY;IAEvB,IAAI,CACR,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,UAAU,CAAC;CAsHvB"}
@@ -1,257 +1,325 @@
1
- /**
2
- * Kotlin language adapter.
3
- * Emits a Gradle-based Kotlin SDK with Ktor HTTP client, kotlinx.serialization,
4
- * and coroutines for async operations.
5
- */
6
- import { join } from "node:path";
7
- import Handlebars from "handlebars";
8
- import { getTemplate, registerHelpers, collectImports } from "../../helpers/handlebars.js";
9
- // ─────────────────────────────────────────────────────────────────────────────
10
- // Kotlin type mapping
11
- // ─────────────────────────────────────────────────────────────────────────────
12
- const KOTLIN_TYPE_MAP = {
13
- string: "String",
14
- number: "Double",
15
- integer: "Long",
16
- boolean: "Boolean",
17
- any: "kotlinx.serialization.json.JsonElement",
18
- unknown: "kotlinx.serialization.json.JsonElement",
19
- void: "Unit",
20
- null: "Nothing?",
1
+ /** Kotlin language adapter using Ktor and kotlinx.serialization. */
2
+ import { join } from 'node:path';
3
+ import { pascalCase } from 'change-case';
4
+ import { getTemplate, registerHelpers } from '../../helpers/handlebars.js';
5
+ import { genericArgument, genericArguments, isBooleanLiteral, isInlineObject, isNumberLiteral, isStringLiteral, splitTopLevel, stripOuterParens, unwrapNullable, } from '../type-utils.js';
6
+ import { getPackageVersion, getVisibleGroups, getVisibleSchemas, hasEventStreams, } from '../shared.js';
7
+ import { createDocumentationFiles } from '../documentation.js';
8
+ const JSON_ELEMENT = 'kotlinx.serialization.json.JsonElement';
9
+ const KOTLIN_PRIMITIVES = {
10
+ string: 'String',
11
+ number: 'Double',
12
+ integer: 'Long',
13
+ boolean: 'Boolean',
14
+ any: JSON_ELEMENT,
15
+ unknown: JSON_ELEMENT,
16
+ never: JSON_ELEMENT,
17
+ void: 'Unit',
21
18
  };
22
- /**
23
- * Split a union/intersection string on `sep` only at the top level —
24
- * i.e. not inside `<…>` or `(…)` brackets.
25
- */
26
- function splitTopLevel(t, sep) {
27
- const parts = [];
28
- let depth = 0;
29
- let start = 0;
30
- for (let i = 0; i <= t.length - sep.length; i++) {
31
- const ch = t[i];
32
- if (ch === "<" || ch === "(")
33
- depth++;
34
- else if (ch === ">" || ch === ")")
35
- depth--;
36
- else if (depth === 0 && t.slice(i, i + sep.length) === sep) {
37
- parts.push(t.slice(start, i).trim());
38
- start = i + sep.length;
39
- i += sep.length - 1;
40
- }
41
- }
42
- parts.push(t.slice(start).trim());
43
- return parts;
44
- }
45
- /**
46
- * Extract the single top-level generic argument from `Foo<...>`.
47
- * Returns null if the string doesn't match that shape.
48
- */
49
- function genericArg(t, prefix) {
50
- if (!t.startsWith(prefix + "<") || !t.endsWith(">"))
51
- return null;
52
- return t.slice(prefix.length + 1, -1);
19
+ const KOTLIN_KEYWORDS = new Set([
20
+ 'as',
21
+ 'break',
22
+ 'class',
23
+ 'continue',
24
+ 'do',
25
+ 'else',
26
+ 'false',
27
+ 'for',
28
+ 'fun',
29
+ 'if',
30
+ 'in',
31
+ 'interface',
32
+ 'is',
33
+ 'null',
34
+ 'object',
35
+ 'package',
36
+ 'return',
37
+ 'super',
38
+ 'this',
39
+ 'throw',
40
+ 'true',
41
+ 'try',
42
+ 'typealias',
43
+ 'typeof',
44
+ 'val',
45
+ 'var',
46
+ 'when',
47
+ 'while',
48
+ 'by',
49
+ 'catch',
50
+ 'constructor',
51
+ 'delegate',
52
+ 'dynamic',
53
+ 'field',
54
+ 'file',
55
+ 'finally',
56
+ 'get',
57
+ 'import',
58
+ 'init',
59
+ 'param',
60
+ 'property',
61
+ 'receiver',
62
+ 'set',
63
+ 'setparam',
64
+ 'where',
65
+ 'actual',
66
+ 'abstract',
67
+ 'annotation',
68
+ 'companion',
69
+ 'const',
70
+ 'crossinline',
71
+ 'data',
72
+ 'enum',
73
+ 'expect',
74
+ 'external',
75
+ 'final',
76
+ 'infix',
77
+ 'inline',
78
+ 'inner',
79
+ 'internal',
80
+ 'lateinit',
81
+ 'noinline',
82
+ 'open',
83
+ 'operator',
84
+ 'out',
85
+ 'override',
86
+ 'private',
87
+ 'protected',
88
+ 'public',
89
+ 'reified',
90
+ 'sealed',
91
+ 'suspend',
92
+ 'tailrec',
93
+ 'vararg',
94
+ ]);
95
+ function kotlinIdentifier(value) {
96
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(value) && !KOTLIN_KEYWORDS.has(value)
97
+ ? value
98
+ : `\`${value.replace(/`/g, '')}\``;
53
99
  }
54
- const JSON_ELEMENT = "kotlinx.serialization.json.JsonElement";
55
- function kotlinType(tsType) {
56
- const t = tsType.trim();
57
- if (KOTLIN_TYPE_MAP[t]) {
58
- return KOTLIN_TYPE_MAP[t];
100
+ function kotlinBaseType(value) {
101
+ const normalized = stripOuterParens(value);
102
+ const union = splitTopLevel(normalized, '|');
103
+ if (union.length > 1) {
104
+ if (union.every(isStringLiteral))
105
+ return 'String';
106
+ if (union.every(isNumberLiteral))
107
+ return 'Double';
108
+ if (union.every(isBooleanLiteral))
109
+ return 'Boolean';
110
+ const mapped = new Set(union.map(kotlinBaseType));
111
+ return mapped.size === 1 ? [...mapped][0] : JSON_ELEMENT;
59
112
  }
60
- // Parenthesized strip outer parens first
61
- if (t.startsWith("(") && t.endsWith(")")) {
62
- return kotlinType(t.slice(1, -1));
113
+ if (splitTopLevel(normalized, '&').length > 1 || isInlineObject(normalized)) {
114
+ return 'kotlinx.serialization.json.JsonObject';
63
115
  }
64
- // ── Union `A | B | …` — split at top level only ──────────────────────────
65
- const unionParts = splitTopLevel(t, " | ");
66
- if (unionParts.length > 1) {
67
- const nonNull = unionParts.filter((p) => p !== "null");
68
- const hasNull = nonNull.length < unionParts.length;
69
- // Any union containing 2+ distinct non-null members where at least one
70
- // is a non-primitive → collapse to JsonElement (no Kotlin equivalent).
71
- const primitives = new Set(["string", "number", "integer", "boolean"]);
72
- const isSimplePrimitive = (p) => primitives.has(p) || !!KOTLIN_TYPE_MAP[p];
73
- // A quoted literal like `"placed"` or `42` — an inline enum value
74
- const isLiteral = (p) => (p.startsWith('"') && p.endsWith('"')) ||
75
- (p.startsWith("'") && p.endsWith("'")) ||
76
- /^-?\d+(\.\d+)?$/.test(p);
77
- const hasComplex = nonNull.some((p) => !isSimplePrimitive(p) && !isLiteral(p));
78
- const hasPrimitive = nonNull.some((p) => primitives.has(p));
79
- const allLiterals = nonNull.length > 0 && nonNull.every(isLiteral);
80
- let result;
81
- if (nonNull.length === 1) {
82
- // Only one real type, rest were null → make nullable
83
- result = kotlinType(nonNull[0]);
84
- }
85
- else if (allLiterals) {
86
- // All parts are string/number literals (inline enum) → String in Kotlin
87
- result = nonNull.some((p) => /^-?\d/.test(p)) ? "Double" : "String";
88
- }
89
- else if (hasPrimitive && hasComplex) {
90
- // Mixed primitive + complex — no safe Kotlin type, use JsonElement
91
- result = JSON_ELEMENT;
92
- }
93
- else {
94
- // All primitives or all known mapped types — join as sealed approximation
95
- result = nonNull.map((p) => kotlinType(p)).join("Or").replace(/\s/g, "");
96
- }
97
- return hasNull ? `${result}?` : result;
98
- }
99
- // ── Intersection `A & B` — split at top level only ───────────────────────
100
- const interParts = splitTopLevel(t, " & ");
101
- if (interParts.length > 1) {
102
- // Intersections can't be represented faithfully — collapse to JsonElement
103
- return JSON_ELEMENT;
104
- }
105
- // ── Generic wrappers ──────────────────────────────────────────────────────
106
- // Array<T> → List<T>
107
- const arrInner = genericArg(t, "Array");
108
- if (arrInner !== null) {
109
- return `List<${kotlinType(arrInner)}>`;
116
+ if (isStringLiteral(normalized))
117
+ return 'String';
118
+ if (isNumberLiteral(normalized))
119
+ return 'Double';
120
+ if (isBooleanLiteral(normalized))
121
+ return 'Boolean';
122
+ if (KOTLIN_PRIMITIVES[normalized])
123
+ return KOTLIN_PRIMITIVES[normalized];
124
+ const array = genericArgument(normalized, 'Array');
125
+ if (array !== undefined)
126
+ return `List<${kotlinType(array)}>`;
127
+ const record = genericArguments(normalized, 'Record');
128
+ if (record?.length === 2)
129
+ return `Map<String, ${kotlinType(record[1])}>`;
130
+ const map = genericArgument(normalized, 'Map');
131
+ if (map !== undefined)
132
+ return `Map<String, ${kotlinType(map)}>`;
133
+ return normalized;
134
+ }
135
+ function kotlinType(value, nullable = false) {
136
+ const unwrapped = unwrapNullable(value);
137
+ const base = kotlinBaseType(unwrapped.type);
138
+ return (nullable || unwrapped.nullable) &&
139
+ base !== 'Unit' &&
140
+ !base.endsWith('?')
141
+ ? `${base}?`
142
+ : base;
143
+ }
144
+ function transformProperty(property) {
145
+ return {
146
+ ...property,
147
+ fieldName: kotlinIdentifier(property.name),
148
+ targetType: kotlinType(property.type, !property.required || !!property.nullable),
149
+ hasDefault: !property.required,
150
+ };
151
+ }
152
+ function enumEntry(value, index) {
153
+ const raw = pascalCase(String(value)) || `Value${index + 1}`;
154
+ return {
155
+ name: /^\d/.test(raw) ? `Value${raw}` : raw,
156
+ value: String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"'),
157
+ };
158
+ }
159
+ function transformSchema(schema) {
160
+ const enumValues = schema.enumValues ?? [];
161
+ return {
162
+ ...schema,
163
+ external: schema.ownership?.kind === 'external',
164
+ stringEnum: enumValues.every((value) => typeof value === 'string'),
165
+ enumValues: enumValues.map(enumEntry),
166
+ aliasType: schema.aliasType
167
+ ? kotlinType(schema.aliasType)
168
+ : schema.additionalPropertiesType
169
+ ? `Map<String, ${kotlinType(schema.additionalPropertiesType)}>`
170
+ : JSON_ELEMENT,
171
+ properties: schema.properties.map(transformProperty),
172
+ hasProperties: schema.properties.length > 0,
173
+ };
174
+ }
175
+ function transformParameter(parameter) {
176
+ return {
177
+ ...parameter,
178
+ parameterName: kotlinIdentifier(parameter.name),
179
+ targetType: kotlinType(parameter.type, !parameter.required),
180
+ };
181
+ }
182
+ function transformOperation(operation) {
183
+ const pathParams = operation.pathParams.map((parameter) => ({
184
+ ...transformParameter(parameter),
185
+ placeholder: `\\\${${parameter.name}}`,
186
+ }));
187
+ const queryParams = operation.queryParams.map(transformParameter);
188
+ const headerParams = operation.headerParams.map(transformParameter);
189
+ const cookieParams = operation.cookieParams.map(transformParameter);
190
+ const required = pathParams.map((parameter) => `${parameter.parameterName}: ${parameter.targetType}`);
191
+ if (operation.requestBody?.required) {
192
+ required.push(`body: ${kotlinType(operation.requestBody.type)}`);
110
193
  }
111
- // Record<K, V> — values are structurally open, collapse value to JsonElement
112
- if (t.startsWith("Record<") && t.endsWith(">")) {
113
- const inner = t.slice("Record<".length, -1);
114
- const [key] = splitTopLevel(inner, ", ");
115
- return `Map<${kotlinType(key)}, ${JSON_ELEMENT}>`;
194
+ const optional = [];
195
+ for (const parameter of [...queryParams, ...headerParams, ...cookieParams]) {
196
+ (parameter.required ? required : optional).push(parameter.required
197
+ ? `${parameter.parameterName}: ${kotlinType(parameter.type)}`
198
+ : `${parameter.parameterName}: ${parameter.targetType} = null`);
116
199
  }
117
- // Map<K, V> (two-arg) or Map<V> (one-arg shorthand → Map<String, V>)
118
- if (t.startsWith("Map<") && t.endsWith(">")) {
119
- const inner = t.slice("Map<".length, -1);
120
- const mapParts = splitTopLevel(inner, ", ");
121
- if (mapParts.length >= 2) {
122
- return `Map<${kotlinType(mapParts[0])}, ${kotlinType(mapParts.slice(1).join(", "))}>`;
123
- }
124
- return `Map<String, ${kotlinType(inner)}>`;
200
+ if (operation.requestBody && !operation.requestBody.required) {
201
+ optional.push(`body: ${kotlinType(operation.requestBody.type, true)} = null`);
125
202
  }
126
- return t;
203
+ return {
204
+ ...operation,
205
+ methodName: kotlinIdentifier(operation.name),
206
+ targetPath: operation.path.replace(/\$\{/g, '\\${'),
207
+ pathParams,
208
+ queryParams,
209
+ headerParams,
210
+ cookieParams,
211
+ signature: [...required, ...optional].join(',\n '),
212
+ hasParameters: required.length + optional.length > 0,
213
+ targetResponseType: operation.isEventStream
214
+ ? 'String'
215
+ : kotlinType(operation.responseType),
216
+ isVoid: operation.responseType === 'void',
217
+ bodyExpression: operation.requestBody
218
+ ? operation.requestBody.required
219
+ ? 'Json.encodeToJsonElement(body)'
220
+ : 'body?.let { Json.encodeToJsonElement(it) }'
221
+ : operation.httpMethod.match(/^(POST|PUT|PATCH|DELETE)$/i)
222
+ ? 'JsonObject(emptyMap())'
223
+ : 'null',
224
+ };
127
225
  }
128
- // ─────────────────────────────────────────────────────────────────────────────
129
- // Adapter
130
- // ─────────────────────────────────────────────────────────────────────────────
131
226
  export class KotlinAdapter {
132
- language = "kotlin";
133
- async emit(enriched, outputDir, config) {
227
+ language = 'kotlin';
228
+ async emit(enriched, _outputDir, config) {
134
229
  registerHelpers();
135
- // Register Kotlin-specific helpers
136
- Handlebars.registerHelper("kotlinType", (tsType) => {
137
- return new Handlebars.SafeString(kotlinType(tsType));
138
- });
139
230
  const files = [];
140
- const warnings = [];
141
- const schemaNames = new Set(enriched.schemas.map((s) => s.name));
142
- const clientType = config?.clientType ?? "internal";
143
- // ── Visibility filtering ────────────────────────────────────────────────
144
- const visibleGroups = [];
145
- for (const g of enriched.groups) {
146
- if (clientType === "public" && g.visibility === "internal")
147
- continue;
148
- const ops = clientType === "public"
149
- ? g.operations.filter((op) => op.visibility !== "internal")
150
- : g.operations;
151
- if (ops.length === 0)
152
- continue;
153
- visibleGroups.push(ops === g.operations ? g : { ...g, operations: ops });
154
- }
155
- const hasSSE = visibleGroups.some((g) => g.operations.some((op) => op.isEventStream));
156
- // ── Package name resolution ─────────────────────────────────────────────
157
- const pkgName = enriched.meta.packageName
158
- .replace(/^@.+\//, "")
159
- .replace(/-/g, ".");
160
- const pkgPath = pkgName.replace(/\./g, "/");
161
- const groupId = enriched.meta.packageName.startsWith("@")
162
- ? enriched.meta.packageName.replace(/^@/, "").replace(/\/.+$/, "")
163
- : "com.example";
164
- const artifactId = enriched.meta.packageName
165
- .replace(/^@.+\//, "")
166
- .replace(/-/g, "-");
167
- // ── Helper ──────────────────────────────────────────────────────────────
168
- const emit = (relativePath, tplName, ctx) => {
169
- try {
170
- files.push({
171
- relativePath,
172
- content: getTemplate("kotlin", tplName)(ctx),
173
- });
174
- }
175
- catch (err) {
176
- warnings.push(`${relativePath}: ${err instanceof Error ? err.message : String(err)}`);
177
- }
231
+ const clientType = config?.clientType ?? 'internal';
232
+ const visibleGroups = getVisibleGroups(enriched, clientType);
233
+ const visibleSchemas = getVisibleSchemas(enriched, visibleGroups, clientType);
234
+ const schemas = visibleSchemas.map(transformSchema);
235
+ const packageVersion = getPackageVersion(enriched);
236
+ const hasSSE = hasEventStreams(visibleGroups);
237
+ const packageName = enriched.meta.packageName
238
+ .replace(/^@.+\//, '')
239
+ .replace(/[^a-zA-Z0-9_.-]/g, '')
240
+ .replace(/-/g, '.')
241
+ .replace(/^[^a-zA-Z_]/, 'sdk.');
242
+ const packagePath = packageName.replace(/\./g, '/');
243
+ const groupId = enriched.meta.packageName.startsWith('@')
244
+ ? enriched.meta.packageName.slice(1).split('/')[0]
245
+ : 'com.example';
246
+ const artifactId = enriched.meta.packageName.replace(/^@.+\//, '');
247
+ const sourceDir = join('src', 'main', 'kotlin', ...packageName.split('.'));
248
+ const emit = (relativePath, templateName, context) => {
249
+ files.push({
250
+ relativePath,
251
+ content: getTemplate('kotlin', templateName)(context),
252
+ });
178
253
  };
179
- // ── Root files ──────────────────────────────────────────────────────────
180
- emit("build.gradle.kts", "build-gradle", {
254
+ emit('build.gradle.kts', 'build-gradle', {
181
255
  ...enriched.meta,
256
+ packageVersion,
182
257
  groupId,
183
258
  artifactId,
184
259
  pomDescription: enriched.meta.description ??
185
260
  `Generated Kotlin SDK for ${enriched.meta.title}`,
186
261
  });
187
- emit("settings.gradle.kts", "settings-gradle", {
188
- artifactId,
189
- });
190
- emit("gradle.properties", "gradle-properties", {
262
+ emit('settings.gradle.kts', 'settings-gradle', { artifactId });
263
+ emit('gradle.properties', 'gradle-properties', {
191
264
  ...enriched.meta,
265
+ packageVersion,
192
266
  groupId,
193
267
  artifactId,
194
268
  });
195
- emit("README.md", "readme", {
269
+ emit('README.md', 'readme', {
196
270
  ...enriched.meta,
271
+ packageVersion,
197
272
  groups: visibleGroups,
198
- schemas: enriched.schemas,
273
+ schemas,
199
274
  securitySchemes: enriched.securitySchemes,
200
275
  hasSSE,
201
276
  groupId,
202
277
  artifactId,
203
- packageName: pkgName,
204
- pkgPath,
278
+ packageName,
279
+ pkgPath: packagePath,
205
280
  });
206
- emit(join("gradle", "wrapper", "gradle-wrapper.properties"), "gradle-wrapper-properties", {});
207
- emit(".gitignore", "gitignore", {});
208
- // ── Source files ────────────────────────────────────────────────────────
209
- const srcDir = join("src", "main", "kotlin", ...pkgName.split("."));
210
- emit(join(srcDir, "Client.kt"), "client", {
281
+ emit(join('gradle', 'wrapper', 'gradle-wrapper.properties'), 'gradle-wrapper-properties', {});
282
+ emit('.gitignore', 'gitignore', {});
283
+ emit(join(sourceDir, 'Client.kt'), 'client', {
211
284
  ...enriched.meta,
285
+ packageVersion,
212
286
  groups: visibleGroups,
213
287
  securitySchemes: enriched.securitySchemes,
214
288
  hasSSE,
215
- packageName: pkgName,
289
+ packageName,
216
290
  });
217
- emit(join(srcDir, "internal", "Transport.kt"), "transport", {
291
+ emit(join(sourceDir, 'internal', 'Transport.kt'), 'transport', {
218
292
  securitySchemes: enriched.securitySchemes,
219
- packageName: pkgName,
293
+ packageName,
294
+ packageVersion,
220
295
  });
221
- emit(join(srcDir, "exceptions", "SdkException.kt"), "errors", {
222
- packageName: pkgName,
296
+ emit(join(sourceDir, 'exceptions', 'SdkException.kt'), 'errors', {
297
+ packageName,
223
298
  });
224
- emit(join(srcDir, "models", "Types.kt"), "types", {
225
- schemas: enriched.schemas,
226
- packageName: pkgName,
299
+ emit(join(sourceDir, 'models', 'Types.kt'), 'types', {
300
+ schemas,
301
+ packageName,
227
302
  });
228
- // ── Domain files ────────────────────────────────────────────────────────
229
303
  for (const group of visibleGroups) {
230
- const imports = collectImports(group.operations, schemaNames);
231
- const transformedOps = group.operations.map((op) => ({
232
- ...op,
233
- pathParams: op.pathParams.map((p) => ({
234
- ...p,
235
- kotlinType: kotlinType(p.type),
236
- })),
237
- requestBody: op.requestBody
238
- ? {
239
- ...op.requestBody,
240
- kotlinType: kotlinType(op.requestBody.type),
241
- }
242
- : undefined,
243
- kotlinResponseType: kotlinType(op.responseType),
244
- _queryParams: op.queryParams,
245
- }));
246
- emit(join(srcDir, "api", `${group.interfaceName}.kt`), "domain", {
304
+ emit(join(sourceDir, 'api', `${group.interfaceName}.kt`), 'domain', {
247
305
  ...group,
248
- operations: transformedOps,
249
- imports,
250
- securitySchemes: enriched.securitySchemes,
251
- packageName: pkgName,
306
+ operations: group.operations.map(transformOperation),
307
+ packageName,
252
308
  });
253
309
  }
254
- return { files, warnings };
310
+ files.push(...createDocumentationFiles({
311
+ meta: enriched.meta,
312
+ groups: visibleGroups,
313
+ schemas: visibleSchemas,
314
+ naming: {
315
+ language: 'Kotlin',
316
+ groupAccessor: (group) => `client.${kotlinIdentifier(group.name)}`,
317
+ methodName: (operation) => kotlinIdentifier(operation.name),
318
+ typeName: (type) => kotlinType(type),
319
+ sourcePath: (group) => join(sourceDir, 'api', `${group.interfaceName}.kt`),
320
+ },
321
+ }));
322
+ return { files, warnings: [] };
255
323
  }
256
324
  }
257
325
  //# sourceMappingURL=index.js.map