@goast/kotlin 0.4.12 → 0.4.14-beta1

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 (538) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +45 -45
  3. package/assets/client/okhttp3/ApiClient.kt +252 -252
  4. package/esm/src/ast/nodes/function.d.ts.map +1 -1
  5. package/esm/src/ast/nodes/function.js +3 -1
  6. package/esm/src/ast/references/kotlin.d.ts +1 -0
  7. package/esm/src/ast/references/kotlin.d.ts.map +1 -1
  8. package/esm/src/ast/references/kotlin.js +1 -0
  9. package/esm/src/generators/models/model-generator.d.ts.map +1 -1
  10. package/esm/src/generators/models/model-generator.js +18 -3
  11. package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
  12. package/esm/src/generators/services/spring-controllers/models.d.ts +5 -2
  13. package/esm/src/generators/services/spring-controllers/models.d.ts.map +1 -1
  14. package/esm/src/generators/services/spring-controllers/refs.d.ts +6 -0
  15. package/esm/src/generators/services/spring-controllers/refs.d.ts.map +1 -0
  16. package/esm/src/generators/services/spring-controllers/refs.js +9 -0
  17. package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  18. package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +28 -14
  19. package/esm/src/generators/services/spring-controllers/spring-controllers-generator.d.ts +7 -1
  20. package/esm/src/generators/services/spring-controllers/spring-controllers-generator.d.ts.map +1 -1
  21. package/esm/src/generators/services/spring-controllers/spring-controllers-generator.js +41 -2
  22. package/package.json +6 -6
  23. package/script/src/ast/nodes/function.d.ts.map +1 -1
  24. package/script/src/ast/nodes/function.js +3 -1
  25. package/script/src/ast/references/kotlin.d.ts +1 -0
  26. package/script/src/ast/references/kotlin.d.ts.map +1 -1
  27. package/script/src/ast/references/kotlin.js +2 -1
  28. package/script/src/generators/models/model-generator.d.ts.map +1 -1
  29. package/script/src/generators/models/model-generator.js +17 -2
  30. package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
  31. package/script/src/generators/services/spring-controllers/models.d.ts +5 -2
  32. package/script/src/generators/services/spring-controllers/models.d.ts.map +1 -1
  33. package/script/src/generators/services/spring-controllers/refs.d.ts +6 -0
  34. package/script/src/generators/services/spring-controllers/refs.d.ts.map +1 -0
  35. package/script/src/generators/services/spring-controllers/refs.js +12 -0
  36. package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  37. package/script/src/generators/services/spring-controllers/spring-controller-generator.js +28 -14
  38. package/script/src/generators/services/spring-controllers/spring-controllers-generator.d.ts +7 -1
  39. package/script/src/generators/services/spring-controllers/spring-controllers-generator.d.ts.map +1 -1
  40. package/script/src/generators/services/spring-controllers/spring-controllers-generator.js +41 -1
  41. package/esm/_dnt.test_polyfills.d.ts +0 -29
  42. package/esm/_dnt.test_polyfills.d.ts.map +0 -1
  43. package/esm/_dnt.test_polyfills.js +0 -31
  44. package/esm/_dnt.test_shims.d.ts +0 -6
  45. package/esm/_dnt.test_shims.d.ts.map +0 -1
  46. package/esm/_dnt.test_shims.js +0 -61
  47. package/esm/deps/jsr.io/@std/assert/1.0.11/assertion_error.d.ts +0 -26
  48. package/esm/deps/jsr.io/@std/assert/1.0.11/assertion_error.d.ts.map +0 -1
  49. package/esm/deps/jsr.io/@std/assert/1.0.11/assertion_error.js +0 -30
  50. package/esm/deps/jsr.io/@std/assert/1.0.11/equal.d.ts +0 -17
  51. package/esm/deps/jsr.io/@std/assert/1.0.11/equal.d.ts.map +0 -1
  52. package/esm/deps/jsr.io/@std/assert/1.0.11/equal.js +0 -183
  53. package/esm/deps/jsr.io/@std/assert/1.0.11/equals.d.ts +0 -35
  54. package/esm/deps/jsr.io/@std/assert/1.0.11/equals.d.ts.map +0 -1
  55. package/esm/deps/jsr.io/@std/assert/1.0.11/equals.js +0 -58
  56. package/esm/deps/jsr.io/@std/assert/1.0.11/false.d.ts +0 -18
  57. package/esm/deps/jsr.io/@std/assert/1.0.11/false.d.ts.map +0 -1
  58. package/esm/deps/jsr.io/@std/assert/1.0.11/false.js +0 -22
  59. package/esm/deps/jsr.io/@std/assert/1.0.11/instance_of.d.ts +0 -23
  60. package/esm/deps/jsr.io/@std/assert/1.0.11/instance_of.d.ts.map +0 -1
  61. package/esm/deps/jsr.io/@std/assert/1.0.11/instance_of.js +0 -53
  62. package/esm/deps/jsr.io/@std/assert/1.0.11/is_error.d.ts +0 -25
  63. package/esm/deps/jsr.io/@std/assert/1.0.11/is_error.d.ts.map +0 -1
  64. package/esm/deps/jsr.io/@std/assert/1.0.11/is_error.js +0 -54
  65. package/esm/deps/jsr.io/@std/assert/1.0.11/match.d.ts +0 -18
  66. package/esm/deps/jsr.io/@std/assert/1.0.11/match.d.ts.map +0 -1
  67. package/esm/deps/jsr.io/@std/assert/1.0.11/match.js +0 -26
  68. package/esm/deps/jsr.io/@std/assert/1.0.11/not_instance_of.d.ts +0 -20
  69. package/esm/deps/jsr.io/@std/assert/1.0.11/not_instance_of.d.ts.map +0 -1
  70. package/esm/deps/jsr.io/@std/assert/1.0.11/not_instance_of.js +0 -29
  71. package/esm/deps/jsr.io/@std/assert/1.0.11/not_match.d.ts +0 -18
  72. package/esm/deps/jsr.io/@std/assert/1.0.11/not_match.d.ts.map +0 -1
  73. package/esm/deps/jsr.io/@std/assert/1.0.11/not_match.js +0 -26
  74. package/esm/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.d.ts +0 -23
  75. package/esm/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.d.ts.map +0 -1
  76. package/esm/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.js +0 -32
  77. package/esm/deps/jsr.io/@std/assert/1.0.11/rejects.d.ts +0 -42
  78. package/esm/deps/jsr.io/@std/assert/1.0.11/rejects.d.ts.map +0 -1
  79. package/esm/deps/jsr.io/@std/assert/1.0.11/rejects.js +0 -53
  80. package/esm/deps/jsr.io/@std/assert/1.0.11/strict_equals.d.ts +0 -24
  81. package/esm/deps/jsr.io/@std/assert/1.0.11/strict_equals.d.ts.map +0 -1
  82. package/esm/deps/jsr.io/@std/assert/1.0.11/strict_equals.js +0 -57
  83. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_equals.d.ts +0 -20
  84. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_equals.d.ts.map +0 -1
  85. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_equals.js +0 -29
  86. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.d.ts +0 -14
  87. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.d.ts.map +0 -1
  88. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.js +0 -43
  89. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.d.ts +0 -17
  90. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.d.ts.map +0 -1
  91. package/esm/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.js +0 -26
  92. package/esm/deps/jsr.io/@std/expect/1.0.13/_assertions.d.ts +0 -4
  93. package/esm/deps/jsr.io/@std/expect/1.0.13/_assertions.d.ts.map +0 -1
  94. package/esm/deps/jsr.io/@std/expect/1.0.13/_assertions.js +0 -13
  95. package/esm/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.d.ts +0 -46
  96. package/esm/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.d.ts.map +0 -1
  97. package/esm/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.js +0 -161
  98. package/esm/deps/jsr.io/@std/expect/1.0.13/_build_message.d.ts +0 -6
  99. package/esm/deps/jsr.io/@std/expect/1.0.13/_build_message.d.ts.map +0 -1
  100. package/esm/deps/jsr.io/@std/expect/1.0.13/_build_message.js +0 -29
  101. package/esm/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.d.ts +0 -4
  102. package/esm/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.d.ts.map +0 -1
  103. package/esm/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.js +0 -11
  104. package/esm/deps/jsr.io/@std/expect/1.0.13/_equal.d.ts +0 -9
  105. package/esm/deps/jsr.io/@std/expect/1.0.13/_equal.d.ts.map +0 -1
  106. package/esm/deps/jsr.io/@std/expect/1.0.13/_equal.js +0 -191
  107. package/esm/deps/jsr.io/@std/expect/1.0.13/_extend.d.ts +0 -4
  108. package/esm/deps/jsr.io/@std/expect/1.0.13/_extend.d.ts.map +0 -1
  109. package/esm/deps/jsr.io/@std/expect/1.0.13/_extend.js +0 -11
  110. package/esm/deps/jsr.io/@std/expect/1.0.13/_inspect_args.d.ts +0 -3
  111. package/esm/deps/jsr.io/@std/expect/1.0.13/_inspect_args.d.ts.map +0 -1
  112. package/esm/deps/jsr.io/@std/expect/1.0.13/_inspect_args.js +0 -12
  113. package/esm/deps/jsr.io/@std/expect/1.0.13/_matchers.d.ts +0 -34
  114. package/esm/deps/jsr.io/@std/expect/1.0.13/_matchers.d.ts.map +0 -1
  115. package/esm/deps/jsr.io/@std/expect/1.0.13/_matchers.js +0 -714
  116. package/esm/deps/jsr.io/@std/expect/1.0.13/_mock_util.d.ts +0 -11
  117. package/esm/deps/jsr.io/@std/expect/1.0.13/_mock_util.d.ts.map +0 -1
  118. package/esm/deps/jsr.io/@std/expect/1.0.13/_mock_util.js +0 -10
  119. package/esm/deps/jsr.io/@std/expect/1.0.13/_serializer.d.ts +0 -4
  120. package/esm/deps/jsr.io/@std/expect/1.0.13/_serializer.d.ts.map +0 -1
  121. package/esm/deps/jsr.io/@std/expect/1.0.13/_serializer.js +0 -10
  122. package/esm/deps/jsr.io/@std/expect/1.0.13/_types.d.ts +0 -843
  123. package/esm/deps/jsr.io/@std/expect/1.0.13/_types.d.ts.map +0 -1
  124. package/esm/deps/jsr.io/@std/expect/1.0.13/_types.js +0 -3
  125. package/esm/deps/jsr.io/@std/expect/1.0.13/_utils.d.ts +0 -9
  126. package/esm/deps/jsr.io/@std/expect/1.0.13/_utils.d.ts.map +0 -1
  127. package/esm/deps/jsr.io/@std/expect/1.0.13/_utils.js +0 -218
  128. package/esm/deps/jsr.io/@std/expect/1.0.13/expect.d.ts +0 -60
  129. package/esm/deps/jsr.io/@std/expect/1.0.13/expect.d.ts.map +0 -1
  130. package/esm/deps/jsr.io/@std/expect/1.0.13/expect.js +0 -523
  131. package/esm/deps/jsr.io/@std/internal/1.0.5/assertion_state.d.ts +0 -160
  132. package/esm/deps/jsr.io/@std/internal/1.0.5/assertion_state.d.ts.map +0 -1
  133. package/esm/deps/jsr.io/@std/internal/1.0.5/assertion_state.js +0 -199
  134. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts +0 -82
  135. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +0 -1
  136. package/esm/deps/jsr.io/@std/internal/1.0.5/build_message.js +0 -111
  137. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.d.ts +0 -140
  138. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +0 -1
  139. package/esm/deps/jsr.io/@std/internal/1.0.5/diff.js +0 -277
  140. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts +0 -99
  141. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +0 -1
  142. package/esm/deps/jsr.io/@std/internal/1.0.5/diff_str.js +0 -180
  143. package/esm/deps/jsr.io/@std/internal/1.0.5/format.d.ts +0 -2
  144. package/esm/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +0 -1
  145. package/esm/deps/jsr.io/@std/internal/1.0.5/format.js +0 -37
  146. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.d.ts +0 -159
  147. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +0 -1
  148. package/esm/deps/jsr.io/@std/internal/1.0.5/styles.js +0 -207
  149. package/esm/deps/jsr.io/@std/internal/1.0.5/types.d.ts +0 -16
  150. package/esm/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +0 -1
  151. package/esm/deps/jsr.io/@std/internal/1.0.5/types.js +0 -2
  152. package/esm/deps/jsr.io/@std/testing/1.0.9/_mock_utils.d.ts +0 -15
  153. package/esm/deps/jsr.io/@std/testing/1.0.9/_mock_utils.d.ts.map +0 -1
  154. package/esm/deps/jsr.io/@std/testing/1.0.9/_mock_utils.js +0 -35
  155. package/esm/deps/jsr.io/@std/testing/1.0.9/_test_suite.d.ts +0 -79
  156. package/esm/deps/jsr.io/@std/testing/1.0.9/_test_suite.d.ts.map +0 -1
  157. package/esm/deps/jsr.io/@std/testing/1.0.9/_test_suite.js +0 -380
  158. package/esm/deps/jsr.io/@std/testing/1.0.9/bdd.d.ts +0 -738
  159. package/esm/deps/jsr.io/@std/testing/1.0.9/bdd.d.ts.map +0 -1
  160. package/esm/deps/jsr.io/@std/testing/1.0.9/bdd.js +0 -654
  161. package/esm/deps/jsr.io/@std/testing/1.0.9/mock.d.ts +0 -674
  162. package/esm/deps/jsr.io/@std/testing/1.0.9/mock.d.ts.map +0 -1
  163. package/esm/deps/jsr.io/@std/testing/1.0.9/mock.js +0 -1083
  164. package/esm/src/ast/nodes/annotation.test.d.ts +0 -2
  165. package/esm/src/ast/nodes/annotation.test.d.ts.map +0 -1
  166. package/esm/src/ast/nodes/annotation.test.js +0 -56
  167. package/esm/src/ast/nodes/argument.test.d.ts +0 -2
  168. package/esm/src/ast/nodes/argument.test.d.ts.map +0 -1
  169. package/esm/src/ast/nodes/argument.test.js +0 -33
  170. package/esm/src/ast/nodes/call.test.d.ts +0 -2
  171. package/esm/src/ast/nodes/call.test.d.ts.map +0 -1
  172. package/esm/src/ast/nodes/call.test.js +0 -35
  173. package/esm/src/ast/nodes/class.test.d.ts +0 -2
  174. package/esm/src/ast/nodes/class.test.d.ts.map +0 -1
  175. package/esm/src/ast/nodes/class.test.js +0 -219
  176. package/esm/src/ast/nodes/constructor.test.d.ts +0 -2
  177. package/esm/src/ast/nodes/constructor.test.d.ts.map +0 -1
  178. package/esm/src/ast/nodes/constructor.test.js +0 -139
  179. package/esm/src/ast/nodes/doc-tag.test.d.ts +0 -2
  180. package/esm/src/ast/nodes/doc-tag.test.d.ts.map +0 -1
  181. package/esm/src/ast/nodes/doc-tag.test.js +0 -67
  182. package/esm/src/ast/nodes/doc.test.d.ts +0 -2
  183. package/esm/src/ast/nodes/doc.test.d.ts.map +0 -1
  184. package/esm/src/ast/nodes/doc.test.js +0 -33
  185. package/esm/src/ast/nodes/enum-value.test.d.ts +0 -2
  186. package/esm/src/ast/nodes/enum-value.test.d.ts.map +0 -1
  187. package/esm/src/ast/nodes/enum-value.test.js +0 -115
  188. package/esm/src/ast/nodes/enum.test.d.ts +0 -2
  189. package/esm/src/ast/nodes/enum.test.d.ts.map +0 -1
  190. package/esm/src/ast/nodes/enum.test.js +0 -129
  191. package/esm/src/ast/nodes/function.test.d.ts +0 -2
  192. package/esm/src/ast/nodes/function.test.d.ts.map +0 -1
  193. package/esm/src/ast/nodes/function.test.js +0 -160
  194. package/esm/src/ast/nodes/generic-parameter.test.d.ts +0 -2
  195. package/esm/src/ast/nodes/generic-parameter.test.d.ts.map +0 -1
  196. package/esm/src/ast/nodes/generic-parameter.test.js +0 -49
  197. package/esm/src/ast/nodes/init-block.test.d.ts +0 -2
  198. package/esm/src/ast/nodes/init-block.test.d.ts.map +0 -1
  199. package/esm/src/ast/nodes/init-block.test.js +0 -28
  200. package/esm/src/ast/nodes/interface.test.d.ts +0 -2
  201. package/esm/src/ast/nodes/interface.test.d.ts.map +0 -1
  202. package/esm/src/ast/nodes/interface.test.js +0 -121
  203. package/esm/src/ast/nodes/object.test.d.ts +0 -2
  204. package/esm/src/ast/nodes/object.test.d.ts.map +0 -1
  205. package/esm/src/ast/nodes/object.test.js +0 -78
  206. package/esm/src/ast/nodes/parameter.test.d.ts +0 -2
  207. package/esm/src/ast/nodes/parameter.test.d.ts.map +0 -1
  208. package/esm/src/ast/nodes/parameter.test.js +0 -152
  209. package/esm/src/ast/nodes/property.test.d.ts +0 -2
  210. package/esm/src/ast/nodes/property.test.d.ts.map +0 -1
  211. package/esm/src/ast/nodes/property.test.js +0 -206
  212. package/esm/src/ast/nodes/reference.test.d.ts +0 -2
  213. package/esm/src/ast/nodes/reference.test.d.ts.map +0 -1
  214. package/esm/src/ast/nodes/reference.test.js +0 -36
  215. package/esm/src/ast/nodes/string.test.d.ts +0 -2
  216. package/esm/src/ast/nodes/string.test.d.ts.map +0 -1
  217. package/esm/src/ast/nodes/string.test.js +0 -48
  218. package/esm/src/import-collection.test.d.ts +0 -2
  219. package/esm/src/import-collection.test.d.ts.map +0 -1
  220. package/esm/src/import-collection.test.js +0 -99
  221. package/esm/tests/openapi-models.test.d.ts +0 -2
  222. package/esm/tests/openapi-models.test.d.ts.map +0 -1
  223. package/esm/tests/openapi-models.test.js +0 -45
  224. package/script/_dnt.test_polyfills.d.ts +0 -29
  225. package/script/_dnt.test_polyfills.d.ts.map +0 -1
  226. package/script/_dnt.test_polyfills.js +0 -32
  227. package/script/_dnt.test_shims.d.ts +0 -6
  228. package/script/_dnt.test_shims.d.ts.map +0 -1
  229. package/script/_dnt.test_shims.js +0 -65
  230. package/script/deps/jsr.io/@std/assert/1.0.11/assertion_error.d.ts +0 -26
  231. package/script/deps/jsr.io/@std/assert/1.0.11/assertion_error.d.ts.map +0 -1
  232. package/script/deps/jsr.io/@std/assert/1.0.11/assertion_error.js +0 -34
  233. package/script/deps/jsr.io/@std/assert/1.0.11/equal.d.ts +0 -17
  234. package/script/deps/jsr.io/@std/assert/1.0.11/equal.d.ts.map +0 -1
  235. package/script/deps/jsr.io/@std/assert/1.0.11/equal.js +0 -187
  236. package/script/deps/jsr.io/@std/assert/1.0.11/equals.d.ts +0 -35
  237. package/script/deps/jsr.io/@std/assert/1.0.11/equals.d.ts.map +0 -1
  238. package/script/deps/jsr.io/@std/assert/1.0.11/equals.js +0 -61
  239. package/script/deps/jsr.io/@std/assert/1.0.11/false.d.ts +0 -18
  240. package/script/deps/jsr.io/@std/assert/1.0.11/false.d.ts.map +0 -1
  241. package/script/deps/jsr.io/@std/assert/1.0.11/false.js +0 -25
  242. package/script/deps/jsr.io/@std/assert/1.0.11/instance_of.d.ts +0 -23
  243. package/script/deps/jsr.io/@std/assert/1.0.11/instance_of.d.ts.map +0 -1
  244. package/script/deps/jsr.io/@std/assert/1.0.11/instance_of.js +0 -56
  245. package/script/deps/jsr.io/@std/assert/1.0.11/is_error.d.ts +0 -25
  246. package/script/deps/jsr.io/@std/assert/1.0.11/is_error.d.ts.map +0 -1
  247. package/script/deps/jsr.io/@std/assert/1.0.11/is_error.js +0 -57
  248. package/script/deps/jsr.io/@std/assert/1.0.11/match.d.ts +0 -18
  249. package/script/deps/jsr.io/@std/assert/1.0.11/match.d.ts.map +0 -1
  250. package/script/deps/jsr.io/@std/assert/1.0.11/match.js +0 -29
  251. package/script/deps/jsr.io/@std/assert/1.0.11/not_instance_of.d.ts +0 -20
  252. package/script/deps/jsr.io/@std/assert/1.0.11/not_instance_of.d.ts.map +0 -1
  253. package/script/deps/jsr.io/@std/assert/1.0.11/not_instance_of.js +0 -32
  254. package/script/deps/jsr.io/@std/assert/1.0.11/not_match.d.ts +0 -18
  255. package/script/deps/jsr.io/@std/assert/1.0.11/not_match.d.ts.map +0 -1
  256. package/script/deps/jsr.io/@std/assert/1.0.11/not_match.js +0 -29
  257. package/script/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.d.ts +0 -23
  258. package/script/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.d.ts.map +0 -1
  259. package/script/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.js +0 -35
  260. package/script/deps/jsr.io/@std/assert/1.0.11/rejects.d.ts +0 -42
  261. package/script/deps/jsr.io/@std/assert/1.0.11/rejects.d.ts.map +0 -1
  262. package/script/deps/jsr.io/@std/assert/1.0.11/rejects.js +0 -56
  263. package/script/deps/jsr.io/@std/assert/1.0.11/strict_equals.d.ts +0 -24
  264. package/script/deps/jsr.io/@std/assert/1.0.11/strict_equals.d.ts.map +0 -1
  265. package/script/deps/jsr.io/@std/assert/1.0.11/strict_equals.js +0 -60
  266. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_equals.d.ts +0 -20
  267. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_equals.d.ts.map +0 -1
  268. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_equals.js +0 -32
  269. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.d.ts +0 -14
  270. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.d.ts.map +0 -1
  271. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.js +0 -46
  272. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.d.ts +0 -17
  273. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.d.ts.map +0 -1
  274. package/script/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.js +0 -29
  275. package/script/deps/jsr.io/@std/expect/1.0.13/_assertions.d.ts +0 -4
  276. package/script/deps/jsr.io/@std/expect/1.0.13/_assertions.d.ts.map +0 -1
  277. package/script/deps/jsr.io/@std/expect/1.0.13/_assertions.js +0 -18
  278. package/script/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.d.ts +0 -46
  279. package/script/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.d.ts.map +0 -1
  280. package/script/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.js +0 -183
  281. package/script/deps/jsr.io/@std/expect/1.0.13/_build_message.d.ts +0 -6
  282. package/script/deps/jsr.io/@std/expect/1.0.13/_build_message.d.ts.map +0 -1
  283. package/script/deps/jsr.io/@std/expect/1.0.13/_build_message.js +0 -33
  284. package/script/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.d.ts +0 -4
  285. package/script/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.d.ts.map +0 -1
  286. package/script/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.js +0 -15
  287. package/script/deps/jsr.io/@std/expect/1.0.13/_equal.d.ts +0 -9
  288. package/script/deps/jsr.io/@std/expect/1.0.13/_equal.d.ts.map +0 -1
  289. package/script/deps/jsr.io/@std/expect/1.0.13/_equal.js +0 -194
  290. package/script/deps/jsr.io/@std/expect/1.0.13/_extend.d.ts +0 -4
  291. package/script/deps/jsr.io/@std/expect/1.0.13/_extend.d.ts.map +0 -1
  292. package/script/deps/jsr.io/@std/expect/1.0.13/_extend.js +0 -15
  293. package/script/deps/jsr.io/@std/expect/1.0.13/_inspect_args.d.ts +0 -3
  294. package/script/deps/jsr.io/@std/expect/1.0.13/_inspect_args.d.ts.map +0 -1
  295. package/script/deps/jsr.io/@std/expect/1.0.13/_inspect_args.js +0 -17
  296. package/script/deps/jsr.io/@std/expect/1.0.13/_matchers.d.ts +0 -34
  297. package/script/deps/jsr.io/@std/expect/1.0.13/_matchers.d.ts.map +0 -1
  298. package/script/deps/jsr.io/@std/expect/1.0.13/_matchers.js +0 -748
  299. package/script/deps/jsr.io/@std/expect/1.0.13/_mock_util.d.ts +0 -11
  300. package/script/deps/jsr.io/@std/expect/1.0.13/_mock_util.d.ts.map +0 -1
  301. package/script/deps/jsr.io/@std/expect/1.0.13/_mock_util.js +0 -14
  302. package/script/deps/jsr.io/@std/expect/1.0.13/_serializer.d.ts +0 -4
  303. package/script/deps/jsr.io/@std/expect/1.0.13/_serializer.d.ts.map +0 -1
  304. package/script/deps/jsr.io/@std/expect/1.0.13/_serializer.js +0 -14
  305. package/script/deps/jsr.io/@std/expect/1.0.13/_types.d.ts +0 -843
  306. package/script/deps/jsr.io/@std/expect/1.0.13/_types.d.ts.map +0 -1
  307. package/script/deps/jsr.io/@std/expect/1.0.13/_types.js +0 -4
  308. package/script/deps/jsr.io/@std/expect/1.0.13/_utils.d.ts +0 -9
  309. package/script/deps/jsr.io/@std/expect/1.0.13/_utils.d.ts.map +0 -1
  310. package/script/deps/jsr.io/@std/expect/1.0.13/_utils.js +0 -226
  311. package/script/deps/jsr.io/@std/expect/1.0.13/expect.d.ts +0 -60
  312. package/script/deps/jsr.io/@std/expect/1.0.13/expect.d.ts.map +0 -1
  313. package/script/deps/jsr.io/@std/expect/1.0.13/expect.js +0 -527
  314. package/script/deps/jsr.io/@std/internal/1.0.5/assertion_state.d.ts +0 -160
  315. package/script/deps/jsr.io/@std/internal/1.0.5/assertion_state.d.ts.map +0 -1
  316. package/script/deps/jsr.io/@std/internal/1.0.5/assertion_state.js +0 -204
  317. package/script/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts +0 -82
  318. package/script/deps/jsr.io/@std/internal/1.0.5/build_message.d.ts.map +0 -1
  319. package/script/deps/jsr.io/@std/internal/1.0.5/build_message.js +0 -116
  320. package/script/deps/jsr.io/@std/internal/1.0.5/diff.d.ts +0 -140
  321. package/script/deps/jsr.io/@std/internal/1.0.5/diff.d.ts.map +0 -1
  322. package/script/deps/jsr.io/@std/internal/1.0.5/diff.js +0 -284
  323. package/script/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts +0 -99
  324. package/script/deps/jsr.io/@std/internal/1.0.5/diff_str.d.ts.map +0 -1
  325. package/script/deps/jsr.io/@std/internal/1.0.5/diff_str.js +0 -186
  326. package/script/deps/jsr.io/@std/internal/1.0.5/format.d.ts +0 -2
  327. package/script/deps/jsr.io/@std/internal/1.0.5/format.d.ts.map +0 -1
  328. package/script/deps/jsr.io/@std/internal/1.0.5/format.js +0 -41
  329. package/script/deps/jsr.io/@std/internal/1.0.5/styles.d.ts +0 -159
  330. package/script/deps/jsr.io/@std/internal/1.0.5/styles.d.ts.map +0 -1
  331. package/script/deps/jsr.io/@std/internal/1.0.5/styles.js +0 -220
  332. package/script/deps/jsr.io/@std/internal/1.0.5/types.d.ts +0 -16
  333. package/script/deps/jsr.io/@std/internal/1.0.5/types.d.ts.map +0 -1
  334. package/script/deps/jsr.io/@std/internal/1.0.5/types.js +0 -3
  335. package/script/deps/jsr.io/@std/testing/1.0.9/_mock_utils.d.ts +0 -15
  336. package/script/deps/jsr.io/@std/testing/1.0.9/_mock_utils.d.ts.map +0 -1
  337. package/script/deps/jsr.io/@std/testing/1.0.9/_mock_utils.js +0 -41
  338. package/script/deps/jsr.io/@std/testing/1.0.9/_test_suite.d.ts +0 -79
  339. package/script/deps/jsr.io/@std/testing/1.0.9/_test_suite.d.ts.map +0 -1
  340. package/script/deps/jsr.io/@std/testing/1.0.9/_test_suite.js +0 -385
  341. package/script/deps/jsr.io/@std/testing/1.0.9/bdd.d.ts +0 -738
  342. package/script/deps/jsr.io/@std/testing/1.0.9/bdd.d.ts.map +0 -1
  343. package/script/deps/jsr.io/@std/testing/1.0.9/bdd.js +0 -665
  344. package/script/deps/jsr.io/@std/testing/1.0.9/mock.d.ts +0 -674
  345. package/script/deps/jsr.io/@std/testing/1.0.9/mock.d.ts.map +0 -1
  346. package/script/deps/jsr.io/@std/testing/1.0.9/mock.js +0 -1102
  347. package/script/src/ast/nodes/annotation.test.d.ts +0 -2
  348. package/script/src/ast/nodes/annotation.test.d.ts.map +0 -1
  349. package/script/src/ast/nodes/annotation.test.js +0 -58
  350. package/script/src/ast/nodes/argument.test.d.ts +0 -2
  351. package/script/src/ast/nodes/argument.test.d.ts.map +0 -1
  352. package/script/src/ast/nodes/argument.test.js +0 -35
  353. package/script/src/ast/nodes/call.test.d.ts +0 -2
  354. package/script/src/ast/nodes/call.test.d.ts.map +0 -1
  355. package/script/src/ast/nodes/call.test.js +0 -37
  356. package/script/src/ast/nodes/class.test.d.ts +0 -2
  357. package/script/src/ast/nodes/class.test.d.ts.map +0 -1
  358. package/script/src/ast/nodes/class.test.js +0 -221
  359. package/script/src/ast/nodes/constructor.test.d.ts +0 -2
  360. package/script/src/ast/nodes/constructor.test.d.ts.map +0 -1
  361. package/script/src/ast/nodes/constructor.test.js +0 -141
  362. package/script/src/ast/nodes/doc-tag.test.d.ts +0 -2
  363. package/script/src/ast/nodes/doc-tag.test.d.ts.map +0 -1
  364. package/script/src/ast/nodes/doc-tag.test.js +0 -69
  365. package/script/src/ast/nodes/doc.test.d.ts +0 -2
  366. package/script/src/ast/nodes/doc.test.d.ts.map +0 -1
  367. package/script/src/ast/nodes/doc.test.js +0 -35
  368. package/script/src/ast/nodes/enum-value.test.d.ts +0 -2
  369. package/script/src/ast/nodes/enum-value.test.d.ts.map +0 -1
  370. package/script/src/ast/nodes/enum-value.test.js +0 -117
  371. package/script/src/ast/nodes/enum.test.d.ts +0 -2
  372. package/script/src/ast/nodes/enum.test.d.ts.map +0 -1
  373. package/script/src/ast/nodes/enum.test.js +0 -131
  374. package/script/src/ast/nodes/function.test.d.ts +0 -2
  375. package/script/src/ast/nodes/function.test.d.ts.map +0 -1
  376. package/script/src/ast/nodes/function.test.js +0 -162
  377. package/script/src/ast/nodes/generic-parameter.test.d.ts +0 -2
  378. package/script/src/ast/nodes/generic-parameter.test.d.ts.map +0 -1
  379. package/script/src/ast/nodes/generic-parameter.test.js +0 -51
  380. package/script/src/ast/nodes/init-block.test.d.ts +0 -2
  381. package/script/src/ast/nodes/init-block.test.d.ts.map +0 -1
  382. package/script/src/ast/nodes/init-block.test.js +0 -30
  383. package/script/src/ast/nodes/interface.test.d.ts +0 -2
  384. package/script/src/ast/nodes/interface.test.d.ts.map +0 -1
  385. package/script/src/ast/nodes/interface.test.js +0 -123
  386. package/script/src/ast/nodes/object.test.d.ts +0 -2
  387. package/script/src/ast/nodes/object.test.d.ts.map +0 -1
  388. package/script/src/ast/nodes/object.test.js +0 -80
  389. package/script/src/ast/nodes/parameter.test.d.ts +0 -2
  390. package/script/src/ast/nodes/parameter.test.d.ts.map +0 -1
  391. package/script/src/ast/nodes/parameter.test.js +0 -154
  392. package/script/src/ast/nodes/property.test.d.ts +0 -2
  393. package/script/src/ast/nodes/property.test.d.ts.map +0 -1
  394. package/script/src/ast/nodes/property.test.js +0 -208
  395. package/script/src/ast/nodes/reference.test.d.ts +0 -2
  396. package/script/src/ast/nodes/reference.test.d.ts.map +0 -1
  397. package/script/src/ast/nodes/reference.test.js +0 -38
  398. package/script/src/ast/nodes/string.test.d.ts +0 -2
  399. package/script/src/ast/nodes/string.test.d.ts.map +0 -1
  400. package/script/src/ast/nodes/string.test.js +0 -50
  401. package/script/src/import-collection.test.d.ts +0 -2
  402. package/script/src/import-collection.test.d.ts.map +0 -1
  403. package/script/src/import-collection.test.js +0 -101
  404. package/script/tests/openapi-models.test.d.ts +0 -2
  405. package/script/tests/openapi-models.test.d.ts.map +0 -1
  406. package/script/tests/openapi-models.test.js +0 -48
  407. package/src/_dnt.test_polyfills.ts +0 -70
  408. package/src/_dnt.test_shims.ts +0 -64
  409. package/src/deps/jsr.io/@std/assert/1.0.11/assertion_error.ts +0 -31
  410. package/src/deps/jsr.io/@std/assert/1.0.11/equal.ts +0 -210
  411. package/src/deps/jsr.io/@std/assert/1.0.11/equals.ts +0 -65
  412. package/src/deps/jsr.io/@std/assert/1.0.11/false.ts +0 -26
  413. package/src/deps/jsr.io/@std/assert/1.0.11/instance_of.ts +0 -64
  414. package/src/deps/jsr.io/@std/assert/1.0.11/is_error.ts +0 -65
  415. package/src/deps/jsr.io/@std/assert/1.0.11/match.ts +0 -30
  416. package/src/deps/jsr.io/@std/assert/1.0.11/not_instance_of.ts +0 -33
  417. package/src/deps/jsr.io/@std/assert/1.0.11/not_match.ts +0 -30
  418. package/src/deps/jsr.io/@std/assert/1.0.11/not_strict_equals.ts +0 -42
  419. package/src/deps/jsr.io/@std/assert/1.0.11/rejects.ts +0 -123
  420. package/src/deps/jsr.io/@std/assert/1.0.11/strict_equals.ts +0 -67
  421. package/src/deps/jsr.io/@std/expect/1.0.13/_assert_equals.ts +0 -38
  422. package/src/deps/jsr.io/@std/expect/1.0.13/_assert_is_error.ts +0 -54
  423. package/src/deps/jsr.io/@std/expect/1.0.13/_assert_not_equals.ts +0 -35
  424. package/src/deps/jsr.io/@std/expect/1.0.13/_assertions.ts +0 -18
  425. package/src/deps/jsr.io/@std/expect/1.0.13/_asymmetric_matchers.ts +0 -198
  426. package/src/deps/jsr.io/@std/expect/1.0.13/_build_message.ts +0 -51
  427. package/src/deps/jsr.io/@std/expect/1.0.13/_custom_equality_tester.ts +0 -19
  428. package/src/deps/jsr.io/@std/expect/1.0.13/_equal.ts +0 -230
  429. package/src/deps/jsr.io/@std/expect/1.0.13/_extend.ts +0 -16
  430. package/src/deps/jsr.io/@std/expect/1.0.13/_inspect_args.ts +0 -15
  431. package/src/deps/jsr.io/@std/expect/1.0.13/_matchers.ts +0 -1028
  432. package/src/deps/jsr.io/@std/expect/1.0.13/_mock_util.ts +0 -22
  433. package/src/deps/jsr.io/@std/expect/1.0.13/_serializer.ts +0 -15
  434. package/src/deps/jsr.io/@std/expect/1.0.13/_types.ts +0 -923
  435. package/src/deps/jsr.io/@std/expect/1.0.13/_utils.ts +0 -283
  436. package/src/deps/jsr.io/@std/expect/1.0.13/expect.ts +0 -620
  437. package/src/deps/jsr.io/@std/internal/1.0.5/assertion_state.ts +0 -214
  438. package/src/deps/jsr.io/@std/internal/1.0.5/build_message.ts +0 -134
  439. package/src/deps/jsr.io/@std/internal/1.0.5/diff.ts +0 -317
  440. package/src/deps/jsr.io/@std/internal/1.0.5/diff_str.ts +0 -204
  441. package/src/deps/jsr.io/@std/internal/1.0.5/format.ts +0 -39
  442. package/src/deps/jsr.io/@std/internal/1.0.5/styles.ts +0 -233
  443. package/src/deps/jsr.io/@std/internal/1.0.5/types.ts +0 -18
  444. package/src/deps/jsr.io/@std/testing/1.0.9/_mock_utils.ts +0 -43
  445. package/src/deps/jsr.io/@std/testing/1.0.9/_test_suite.ts +0 -448
  446. package/src/deps/jsr.io/@std/testing/1.0.9/bdd.ts +0 -1288
  447. package/src/deps/jsr.io/@std/testing/1.0.9/mock.ts +0 -1807
  448. package/src/mod.ts +0 -8
  449. package/src/src/assets.ts +0 -9
  450. package/src/src/ast/_index.ts +0 -66
  451. package/src/src/ast/common.ts +0 -1
  452. package/src/src/ast/index.ts +0 -1
  453. package/src/src/ast/node.ts +0 -10
  454. package/src/src/ast/nodes/annotation.test.ts +0 -69
  455. package/src/src/ast/nodes/annotation.ts +0 -79
  456. package/src/src/ast/nodes/argument.test.ts +0 -41
  457. package/src/src/ast/nodes/argument.ts +0 -62
  458. package/src/src/ast/nodes/call.test.ts +0 -44
  459. package/src/src/ast/nodes/call.ts +0 -66
  460. package/src/src/ast/nodes/class.test.ts +0 -274
  461. package/src/src/ast/nodes/class.ts +0 -178
  462. package/src/src/ast/nodes/collection-literal.ts +0 -49
  463. package/src/src/ast/nodes/constructor.test.ts +0 -178
  464. package/src/src/ast/nodes/constructor.ts +0 -126
  465. package/src/src/ast/nodes/doc-tag.test.ts +0 -84
  466. package/src/src/ast/nodes/doc-tag.ts +0 -138
  467. package/src/src/ast/nodes/doc.test.ts +0 -42
  468. package/src/src/ast/nodes/doc.ts +0 -111
  469. package/src/src/ast/nodes/enum-value.test.ts +0 -146
  470. package/src/src/ast/nodes/enum-value.ts +0 -100
  471. package/src/src/ast/nodes/enum.test.ts +0 -167
  472. package/src/src/ast/nodes/enum.ts +0 -163
  473. package/src/src/ast/nodes/function.test.ts +0 -194
  474. package/src/src/ast/nodes/function.ts +0 -176
  475. package/src/src/ast/nodes/generic-parameter.test.ts +0 -60
  476. package/src/src/ast/nodes/generic-parameter.ts +0 -54
  477. package/src/src/ast/nodes/init-block.test.ts +0 -36
  478. package/src/src/ast/nodes/init-block.ts +0 -38
  479. package/src/src/ast/nodes/interface.test.ts +0 -151
  480. package/src/src/ast/nodes/interface.ts +0 -133
  481. package/src/src/ast/nodes/lambda-type.ts +0 -68
  482. package/src/src/ast/nodes/lambda.ts +0 -68
  483. package/src/src/ast/nodes/object.test.ts +0 -101
  484. package/src/src/ast/nodes/object.ts +0 -102
  485. package/src/src/ast/nodes/parameter.test.ts +0 -191
  486. package/src/src/ast/nodes/parameter.ts +0 -118
  487. package/src/src/ast/nodes/property.test.ts +0 -253
  488. package/src/src/ast/nodes/property.ts +0 -225
  489. package/src/src/ast/nodes/reference.test.ts +0 -47
  490. package/src/src/ast/nodes/reference.ts +0 -178
  491. package/src/src/ast/nodes/string.test.ts +0 -61
  492. package/src/src/ast/nodes/string.ts +0 -114
  493. package/src/src/ast/nodes/types.ts +0 -23
  494. package/src/src/ast/references/index.ts +0 -8
  495. package/src/src/ast/references/jackson.ts +0 -16
  496. package/src/src/ast/references/jakarta.ts +0 -14
  497. package/src/src/ast/references/java.ts +0 -19
  498. package/src/src/ast/references/kotlin.ts +0 -40
  499. package/src/src/ast/references/okhttp3.ts +0 -5
  500. package/src/src/ast/references/reactor.ts +0 -5
  501. package/src/src/ast/references/spring.ts +0 -72
  502. package/src/src/ast/references/swagger.ts +0 -23
  503. package/src/src/ast/utils/get-kotlin-builder-options.ts +0 -19
  504. package/src/src/ast/utils/to-kt-node.ts +0 -31
  505. package/src/src/ast/utils/write-kt-annotations.ts +0 -15
  506. package/src/src/ast/utils/write-kt-arguments.ts +0 -45
  507. package/src/src/ast/utils/write-kt-enum-values.ts +0 -27
  508. package/src/src/ast/utils/write-kt-generic-parameters.ts +0 -12
  509. package/src/src/ast/utils/write-kt-members.ts +0 -25
  510. package/src/src/ast/utils/write-kt-node.ts +0 -37
  511. package/src/src/ast/utils/write-kt-parameters.ts +0 -25
  512. package/src/src/common-results.ts +0 -4
  513. package/src/src/config.ts +0 -41
  514. package/src/src/file-builder.ts +0 -108
  515. package/src/src/generators/file-generator.ts +0 -29
  516. package/src/src/generators/index.ts +0 -4
  517. package/src/src/generators/models/args.ts +0 -123
  518. package/src/src/generators/models/index.ts +0 -4
  519. package/src/src/generators/models/model-generator.ts +0 -633
  520. package/src/src/generators/models/models-generator.ts +0 -65
  521. package/src/src/generators/models/models.ts +0 -95
  522. package/src/src/generators/services/okhttp3-clients/args.ts +0 -78
  523. package/src/src/generators/services/okhttp3-clients/index.ts +0 -4
  524. package/src/src/generators/services/okhttp3-clients/models.ts +0 -62
  525. package/src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts +0 -567
  526. package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +0 -130
  527. package/src/src/generators/services/okhttp3-clients/refs.ts +0 -55
  528. package/src/src/generators/services/spring-controllers/args.ts +0 -88
  529. package/src/src/generators/services/spring-controllers/index.ts +0 -4
  530. package/src/src/generators/services/spring-controllers/models.ts +0 -66
  531. package/src/src/generators/services/spring-controllers/spring-controller-generator.ts +0 -768
  532. package/src/src/generators/services/spring-controllers/spring-controllers-generator.ts +0 -70
  533. package/src/src/import-collection.test.ts +0 -116
  534. package/src/src/import-collection.ts +0 -98
  535. package/src/src/types.ts +0 -3
  536. package/src/src/utils.ts +0 -39
  537. package/src/tests/openapi-models.test.ts +0 -63
  538. package/test_runner.js +0 -227
@@ -1,768 +0,0 @@
1
-
2
- import fs from 'fs-extra';
3
-
4
- import {
5
- type ApiEndpoint,
6
- type ApiParameter,
7
- type AppendValueGroup,
8
- appendValueGroup,
9
- builderTemplate as s,
10
- createOverwriteProxy,
11
- type MaybePromise,
12
- notNullish,
13
- resolveAnyOfAndAllOf,
14
- SourceBuilder,
15
- toCasing,
16
- } from '@goast/core';
17
-
18
- import { getReasonPhrase } from 'http-status-codes';
19
- import { kt } from '../../../ast/index.js';
20
- import type { KotlinImport } from '../../../common-results.js';
21
- import { KotlinFileBuilder } from '../../../file-builder.js';
22
- import type { ApiParameterWithMultipartInfo } from '../../../types.js';
23
- import { modifyString } from '../../../utils.js';
24
- import { KotlinFileGenerator } from '../../file-generator.js';
25
- import type { DefaultKotlinSpringControllerGeneratorArgs as Args } from './index.js';
26
- import type { KotlinServiceGeneratorContext, KotlinServiceGeneratorOutput } from './models.js';
27
-
28
- type Context = KotlinServiceGeneratorContext;
29
- type Output = KotlinServiceGeneratorOutput;
30
- type Builder = KotlinFileBuilder;
31
-
32
- export interface KotlinSpringControllerGenerator<TOutput extends Output = Output> {
33
- generate(ctx: Context): MaybePromise<TOutput>;
34
- }
35
-
36
- export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator<Context, Output>
37
- implements KotlinSpringControllerGenerator {
38
- public generate(ctx: KotlinServiceGeneratorContext): MaybePromise<KotlinServiceGeneratorOutput> {
39
- const packageName = this.getPackageName(ctx, {});
40
- const dirPath = this.getDirectoryPath(ctx, { packageName });
41
- fs.ensureDirSync(dirPath);
42
-
43
- console.log(`Generating service ${ctx.service.id} to ${dirPath}...`);
44
- return {
45
- apiInterface: this.generateApiInterfaceFile(ctx, { dirPath, packageName }),
46
- apiController: this.generateApiControllerFile(ctx, { dirPath, packageName }),
47
- apiDelegate: this.generateApiDelegateInterfaceFile(ctx, { dirPath, packageName }),
48
- };
49
- }
50
-
51
- // #region API Interface
52
- protected generateApiInterfaceFile(ctx: Context, args: Args.GenerateApiInterfaceFile): KotlinImport {
53
- const { dirPath, packageName } = args;
54
- const typeName = this.getApiInterfaceName(ctx, {});
55
- const fileName = `${typeName}.kt`;
56
- const filePath = `${dirPath}/${fileName}`;
57
- console.log(` Generating API interface ${typeName} to ${fileName}...`);
58
-
59
- const builder = new KotlinFileBuilder(packageName, ctx.config);
60
- builder.append(this.getApiInterfaceFileContent(ctx, { interfaceName: typeName }));
61
- fs.writeFileSync(filePath, builder.toString());
62
-
63
- return { typeName, packageName };
64
- }
65
-
66
- protected getApiInterfaceFileContent(ctx: Context, args: Args.GetApiInterfaceFileContent): AppendValueGroup<Builder> {
67
- const { interfaceName } = args;
68
- return appendValueGroup<Builder>([this.getApiInterface(ctx, { interfaceName })], '\n');
69
- }
70
-
71
- protected getApiInterface(ctx: Context, args: Args.GetApiInterface): kt.Interface<Builder> {
72
- const { interfaceName } = args;
73
-
74
- return kt.interface(interfaceName, {
75
- annotations: this.getApiInterfaceAnnotations(ctx),
76
- members: this.getApiInterfaceMembers(ctx),
77
- companionObject: kt.object({
78
- members: ctx.service.endpoints.map((endpoint) =>
79
- kt.property(this.getPathConstantName(ctx, { endpoint }), {
80
- const: true,
81
- default: kt.string(this.getEndpointPath(ctx, { endpoint })),
82
- })
83
- ),
84
- }),
85
- });
86
- }
87
-
88
- private getApiInterfaceAnnotations(ctx: Context): kt.Annotation<Builder>[] {
89
- const validated = kt.annotation(kt.refs.spring.validated());
90
- const requestMapping = kt.annotation(kt.refs.spring.requestMapping(), [
91
- kt.argument(this.getControllerRequestMapping(ctx, { prefix: 'api' })),
92
- ]);
93
- return [validated, requestMapping];
94
- }
95
-
96
- private getApiInterfaceMembers(ctx: Context): kt.InterfaceMember<Builder>[] {
97
- const members: kt.InterfaceMember<Builder>[] = [];
98
- const delegateInterfaceName = this.getApiDelegateInterfaceName(ctx, {});
99
-
100
- members.push(
101
- kt.function('getDelegate', {
102
- returnType: delegateInterfaceName,
103
- singleExpression: true,
104
- body: kt.object({
105
- implements: [delegateInterfaceName],
106
- }),
107
- }),
108
- );
109
-
110
- ctx.service.endpoints.forEach((endpoint) => {
111
- members.push(this.getApiInterfaceEndpointMethod(ctx, { endpoint }));
112
- });
113
-
114
- if (ctx.config.strictResponseEntities) {
115
- members.push(
116
- ...ctx.service.endpoints.map((endpoint) => this.getApiResponseEntityClass(ctx, { endpoint })),
117
- );
118
- }
119
-
120
- return members;
121
- }
122
-
123
- protected getApiInterfaceEndpointMethod(
124
- ctx: Context,
125
- args: Args.GetApiInterfaceEndpointMethod,
126
- ): kt.Function<Builder> {
127
- const { endpoint } = args;
128
- const parameters = this.getAllParameters(ctx, { endpoint });
129
-
130
- return kt.function(toCasing(endpoint.name, ctx.config.functionNameCasing), {
131
- suspend: true,
132
- annotations: this.getApiInterfaceEndpointMethodAnnnotations(ctx, endpoint),
133
- parameters: parameters.map((parameter) => this.getApiInterfaceEndpointMethodParameter(ctx, endpoint, parameter)),
134
- returnType: ctx.config.strictResponseEntities
135
- ? kt.reference(this.getApiResponseEntityName(ctx, { endpoint }), null, { generics: ['*'] })
136
- : kt.refs.spring.responseEntity([this.getResponseType(ctx, { endpoint })]),
137
- body: this.getApiInterfaceEndpointMethodBody(ctx, endpoint, parameters),
138
- });
139
- }
140
-
141
- private getApiInterfaceEndpointMethodAnnnotations(ctx: Context, endpoint: ApiEndpoint): kt.Annotation<Builder>[] {
142
- const annotations: kt.Annotation<Builder>[] = [];
143
-
144
- if (ctx.config.addSwaggerAnnotations) {
145
- annotations.push(
146
- kt.annotation(kt.refs.swagger.operation(), [
147
- endpoint.summary ? kt.argument.named('summary', kt.string(endpoint.summary?.trim())) : null,
148
- kt.argument.named('operationId', kt.string(endpoint.name)),
149
- endpoint.description ? kt.argument.named('description', kt.string(endpoint.description?.trim())) : null,
150
- endpoint.deprecated !== undefined ? kt.argument.named('deprecated', kt.toNode(endpoint.deprecated)) : null,
151
- ]),
152
- );
153
-
154
- if (endpoint.responses.length > 0) {
155
- annotations.push(
156
- kt.annotation(kt.refs.swagger.apiResponses(), [
157
- kt.argument.named(
158
- 'value',
159
- kt.collectionLiteral(
160
- endpoint.responses.map((response) =>
161
- kt.call(kt.refs.swagger.apiResponse(), [
162
- kt.argument.named('responseCode', kt.string(response.statusCode?.toString())),
163
- response.description
164
- ? kt.argument.named('description', kt.string(response.description?.trim()))
165
- : null,
166
- kt.argument.named(
167
- 'content',
168
- kt.collectionLiteral(
169
- (response.contentOptions.length === 0
170
- ? [{ schema: undefined, type: undefined }]
171
- : response.contentOptions).map((content) => {
172
- let schemaType: kt.Type<Builder> = this.getSchemaType(ctx, { schema: content.schema }) ??
173
- kt.refs.any();
174
- let isArray = false;
175
-
176
- if (kt.refs.list.matches(schemaType)) {
177
- isArray = true;
178
- schemaType = schemaType.generics[0];
179
- }
180
-
181
- let ktSchema = kt.call(kt.refs.swagger.schema(), [
182
- kt.argument.named('implementation', s<Builder>`${schemaType}::class`),
183
- ]);
184
- if (isArray) {
185
- ktSchema = kt.call(kt.refs.swagger.arraySchema(), [
186
- kt.argument.named('schema', ktSchema),
187
- ]);
188
- }
189
-
190
- return kt.call(kt.refs.swagger.content(), [
191
- content.type ? kt.argument.named('mediaType', kt.string(content.type)) : null,
192
- content.schema ? kt.argument.named(isArray ? 'array' : 'schema', ktSchema) : null,
193
- ]);
194
- }),
195
- ),
196
- ),
197
- ])
198
- ),
199
- ),
200
- ),
201
- ]),
202
- );
203
- }
204
- }
205
-
206
- const requestMapping = kt.annotation(kt.refs.spring.requestMapping(), [
207
- kt.argument.named(
208
- 'method',
209
- kt.collectionLiteral([kt.call([kt.refs.spring.requestMethod(), endpoint.method.toUpperCase()])]),
210
- ),
211
- kt.argument.named('value', kt.collectionLiteral([this.getPathConstantName(ctx, { endpoint })])),
212
- ]);
213
- if (endpoint.requestBody && endpoint.requestBody.content.length > 0) {
214
- requestMapping.arguments.push(
215
- kt.argument.named(
216
- 'consumes',
217
- kt.collectionLiteral(endpoint.requestBody?.content.map((x) => kt.string(x.type))),
218
- ),
219
- );
220
- }
221
- annotations.push(requestMapping);
222
-
223
- return annotations;
224
- }
225
-
226
- private getApiInterfaceEndpointMethodParameter(
227
- ctx: Context,
228
- endpoint: ApiEndpoint,
229
- parameter: ApiParameterWithMultipartInfo,
230
- ): kt.Parameter<Builder> {
231
- const schemaType = this.getSchemaType(ctx, { schema: parameter.schema });
232
- const result = kt.parameter(
233
- toCasing(parameter.name, ctx.config.parameterNameCasing),
234
- this.getParameterType(ctx, { endpoint, parameter }),
235
- {
236
- default: parameter.multipart && parameter.schema?.default !== undefined
237
- ? kt.toNode(parameter.schema?.default)
238
- : null,
239
- },
240
- );
241
-
242
- if (ctx.config.addSwaggerAnnotations) {
243
- const annotation = kt.annotation(kt.refs.swagger.parameter(), [
244
- parameter.multipart ? kt.argument.named('name', kt.string(parameter.multipart.name)) : null,
245
- parameter.description ? kt.argument.named('description', kt.string(parameter.description?.trim())) : null,
246
- kt.argument.named('required', parameter.required),
247
- parameter.target === 'header' ? kt.argument.named('hidden', kt.toNode(true)) : null,
248
- ]);
249
- if (parameter.schema?.default !== undefined) {
250
- annotation.arguments.push(
251
- kt.argument.named(
252
- 'schema',
253
- kt.call(
254
- [kt.refs.swagger.schema()],
255
- [kt.argument.named('defaultValue', kt.string(String(parameter.schema?.default)))],
256
- ),
257
- ),
258
- );
259
- }
260
- result.annotations.push(annotation);
261
- }
262
-
263
- const isCorePackage = !schemaType?.packageName || /^(kotlin|java)(\..*|$)/.test(schemaType.packageName);
264
- if (!isCorePackage && ctx.config.addJakartaValidationAnnotations) {
265
- result.annotations.push(kt.annotation(kt.refs.jakarta.valid()));
266
- }
267
-
268
- if (parameter.target === 'body' && !parameter.multipart) {
269
- result.annotations.push(kt.annotation(kt.refs.spring.requestBody()));
270
- }
271
-
272
- if (parameter.target === 'query') {
273
- const annotation = kt.annotation(kt.refs.spring.requestParam(), [
274
- kt.argument.named('value', kt.string(parameter.name)),
275
- kt.argument.named('required', parameter.required),
276
- ]);
277
- if (parameter.schema?.default !== undefined) {
278
- annotation.arguments.push(kt.argument.named('defaultValue', kt.string(String(parameter.schema?.default))));
279
- }
280
- result.annotations.push(annotation);
281
- }
282
-
283
- if (parameter.target === 'path') {
284
- result.annotations.push(kt.annotation(kt.refs.spring.pathVariable(), [kt.string(parameter.name)]));
285
- }
286
-
287
- if (parameter.target === 'header') {
288
- result.annotations.push(kt.annotation(kt.refs.spring.requestHeader(), [kt.string(parameter.name)]));
289
- }
290
-
291
- if (parameter.multipart) {
292
- result.annotations.push(
293
- kt.annotation(kt.refs.spring.requestPart(), [
294
- kt.argument.named('value', kt.string(parameter.multipart.name)),
295
- kt.argument.named('required', parameter.required),
296
- ]),
297
- );
298
- }
299
-
300
- return result;
301
- }
302
-
303
- private getApiInterfaceEndpointMethodBody(
304
- ctx: Context,
305
- endpoint: ApiEndpoint,
306
- parameters: ApiParameter[],
307
- ): AppendValueGroup<Builder> {
308
- return appendValueGroup(
309
- [
310
- s`return ${
311
- kt.call(
312
- [kt.call(kt.reference('getDelegate'), []), toCasing(endpoint.name, ctx.config.functionNameCasing)],
313
- parameters.map((x) => toCasing(x.name, ctx.config.parameterNameCasing)),
314
- )
315
- }`,
316
- ],
317
- '\n',
318
- );
319
- }
320
-
321
- private getApiResponseEntityClass(ctx: Context, args: Args.GetApiResponseEntityClass): kt.Class<Builder> {
322
- const { endpoint } = args;
323
- const name = this.getApiResponseEntityName(ctx, { endpoint });
324
- return kt.class(name, {
325
- doc: kt.doc(`Response entity for ${endpoint.name}.`),
326
- generics: [kt.genericParameter('T')],
327
- primaryConstructor: kt.constructor(
328
- [
329
- kt.parameter.class('body', kt.reference('T')),
330
- kt.parameter.class('rawStatus', kt.refs.int()),
331
- kt.parameter.class(
332
- 'headers',
333
- kt.refs.spring.multiValueMap([kt.refs.string(), kt.refs.string()], { nullable: true }),
334
- { default: kt.toNode(null) },
335
- ),
336
- ],
337
- null,
338
- {
339
- accessModifier: endpoint.responses.length > 0 ? 'private' : null,
340
- delegateTarget: 'super',
341
- delegateArguments: [kt.argument('body'), kt.argument('headers'), kt.argument('rawStatus')],
342
- },
343
- ),
344
- extends: kt.refs.spring.responseEntity([kt.reference('T')]),
345
- companionObject: kt.object({
346
- members: Array.from(
347
- new Set([
348
- ...ctx.config.defaultStatusCodes,
349
- 501,
350
- ...endpoint.responses.map((x) => x.statusCode),
351
- ].filter(notNullish)),
352
- )
353
- .map((code) => {
354
- const fnName = toCasing(getReasonPhrase(code), ctx.config.functionNameCasing);
355
- const response = endpoint.responses.find((x) => x.statusCode === code);
356
- const responseType = response ? this.getResponseType(ctx, { endpoint, response }) : undefined;
357
- const contentType = response?.contentOptions.find((x) => x.schema)?.type;
358
-
359
- const hasResponseBody = responseType && !kt.refs.unit.matches(responseType);
360
- return kt.function(fnName, {
361
- parameters: [
362
- hasResponseBody ? kt.parameter.class('body', responseType) : null,
363
- kt.parameter.class(
364
- 'headers',
365
- kt.refs.spring.multiValueMap([kt.refs.string(), kt.refs.string()], { nullable: true }),
366
- { default: kt.toNode(null) },
367
- ),
368
- ],
369
- singleExpression: true,
370
- body: kt.call([
371
- kt.reference(this.getApiResponseEntityName(ctx, { endpoint }), null, {
372
- generics: [hasResponseBody ? responseType : kt.refs.unit({ nullable: true })],
373
- }),
374
- ], [
375
- hasResponseBody ? kt.argument('body') : kt.toNode(null),
376
- kt.toNode(code),
377
- contentType
378
- ? s`${kt.refs.spring.linkedMultiValueMap([kt.refs.string(), kt.refs.string()])}().also {
379
- if (headers != null) {
380
- it.putAll(headers)
381
- }
382
- it.addIfAbsent("Content-Type", ${kt.string(contentType)})
383
- }`
384
- : kt.argument('headers'),
385
- ]),
386
- });
387
- }),
388
- }),
389
- });
390
- }
391
- // #endregion
392
-
393
- // #region API Controller
394
- protected generateApiControllerFile(ctx: Context, args: Args.GenerateApiControllerFile): KotlinImport {
395
- const { dirPath, packageName } = args;
396
- const typeName = this.getApiControllerName(ctx, {});
397
- const fileName = `${typeName}.kt`;
398
- const filePath = `${dirPath}/${fileName}`;
399
- console.log(` Generating API controller ${typeName} to ${fileName}...`);
400
-
401
- const builder = new KotlinFileBuilder(packageName, ctx.config);
402
- builder.append(this.getApiControllerFileContent(ctx, { controllerName: typeName }));
403
- fs.writeFileSync(filePath, builder.toString());
404
-
405
- return { typeName, packageName };
406
- }
407
-
408
- protected getApiControllerFileContent(
409
- ctx: Context,
410
- args: Args.GetApiControllerFileContent,
411
- ): AppendValueGroup<Builder> {
412
- const { controllerName } = args;
413
-
414
- return appendValueGroup([this.getApiController(ctx, { controllerName })], '\n');
415
- }
416
-
417
- protected getApiController(ctx: Context, args: Args.GetApiController): kt.Class<Builder> {
418
- const { controllerName } = args;
419
-
420
- return kt.class(controllerName, {
421
- annotations: this.getApiControllerAnnotations(ctx),
422
- primaryConstructor: kt.constructor([
423
- kt.parameter.class(
424
- 'delegate',
425
- kt.reference(this.getApiDelegateInterfaceName(ctx, {}), null, { nullable: true }),
426
- {
427
- annotations: [kt.annotation(kt.refs.spring.autowired(), [kt.argument.named('required', 'false')])],
428
- },
429
- ),
430
- ]),
431
- implements: [this.getApiInterfaceName(ctx, {})],
432
- members: this.getApiControllerMembers(ctx),
433
- });
434
- }
435
-
436
- private getApiControllerAnnotations(ctx: Context): kt.Annotation<Builder>[] {
437
- const annotations: kt.Annotation<Builder>[] = [];
438
- if (ctx.config.addJakartaValidationAnnotations) {
439
- annotations.push(
440
- kt.annotation(kt.refs.jakarta.generated(), [
441
- kt.argument.named('value', kt.collectionLiteral([kt.string('com.goast.kotlin.spring-service-generator')])),
442
- ]),
443
- );
444
- }
445
- annotations.push(kt.annotation(kt.refs.spring.controller()));
446
- annotations.push(kt.annotation(kt.refs.spring.requestMapping(), [this.getControllerRequestMapping(ctx, {})]));
447
- return annotations;
448
- }
449
-
450
- private getApiControllerMembers(ctx: Context): kt.ClassMember<Builder>[] {
451
- const delegateInterfaceName = this.getApiDelegateInterfaceName(ctx, {});
452
-
453
- const delegateProp = kt.property<Builder>('delegate', {
454
- accessModifier: 'private',
455
- type: kt.reference(delegateInterfaceName),
456
- });
457
-
458
- const initBlock = kt.initBlock<Builder>(
459
- appendValueGroup(
460
- [
461
- s`this.delegate = ${kt.refs.java.optional.infer()}.ofNullable(delegate).orElse(object : ${delegateInterfaceName} {})`,
462
- ],
463
- '\n',
464
- ),
465
- );
466
-
467
- const getDelegateFun = kt.function<Builder>('getDelegate', {
468
- override: true,
469
- returnType: delegateInterfaceName,
470
- singleExpression: true,
471
- body: kt.reference('delegate'),
472
- });
473
-
474
- return [delegateProp, initBlock, getDelegateFun];
475
- }
476
- // #endregion
477
-
478
- // #region API Delegate Interface
479
- protected generateApiDelegateInterfaceFile(ctx: Context, args: Args.GenerateApiDelegateInterfaceFile): KotlinImport {
480
- const { dirPath, packageName } = args;
481
- const typeName = this.getApiDelegateInterfaceName(ctx, {});
482
- const fileName = `${typeName}.kt`;
483
- const filePath = `${dirPath}/${fileName}`;
484
- console.log(` Generating API delegate ${typeName} to ${fileName}...`);
485
-
486
- const builder = new KotlinFileBuilder(packageName, ctx.config);
487
- builder.append(this.getApiDelegateInterfaceFileContent(ctx, { delegateInterfaceName: typeName }));
488
- fs.writeFileSync(filePath, builder.toString());
489
-
490
- return { typeName, packageName };
491
- }
492
-
493
- protected getApiDelegateInterfaceFileContent(
494
- ctx: Context,
495
- args: Args.GetApiDelegateInterfaceFileContent,
496
- ): AppendValueGroup<Builder> {
497
- const { delegateInterfaceName } = args;
498
-
499
- return appendValueGroup([this.getApiDelegateInterface(ctx, { delegateInterfaceName })], '\n');
500
- }
501
-
502
- protected getApiDelegateInterface(ctx: Context, args: Args.GetApiDelegateInterface): kt.Interface<Builder> {
503
- const { delegateInterfaceName } = args;
504
-
505
- return kt.interface(delegateInterfaceName, {
506
- annotations: this.getApiDelegateInterfaceAnnotations(ctx),
507
- members: this.getApiDelegateInterfaceMembers(ctx),
508
- });
509
- }
510
-
511
- private getApiDelegateInterfaceAnnotations(ctx: Context): kt.Annotation<Builder>[] {
512
- const annotations: kt.Annotation<Builder>[] = [];
513
- if (ctx.config.addJakartaValidationAnnotations) {
514
- annotations.push(
515
- kt.annotation(kt.refs.jakarta.generated(), [
516
- kt.argument.named('value', kt.collectionLiteral([kt.string('com.goast.kotlin.spring-service-generator')])),
517
- ]),
518
- );
519
- }
520
- return annotations;
521
- }
522
-
523
- private getApiDelegateInterfaceMembers(ctx: Context): kt.InterfaceMember<Builder>[] {
524
- const members: kt.InterfaceMember<Builder>[] = [];
525
-
526
- members.push(
527
- kt.function('getRequest', {
528
- returnType: kt.refs.java.optional([kt.refs.spring.nativeWebRequest()]),
529
- singleExpression: true,
530
- body: kt.call([kt.refs.java.optional.infer(), 'empty'], []),
531
- }),
532
- );
533
-
534
- ctx.service.endpoints.forEach((endpoint) => {
535
- members.push(this.getApiDelegateInterfaceEndpointMethod(ctx, { endpoint }));
536
- });
537
-
538
- return members;
539
- }
540
-
541
- protected getApiDelegateInterfaceEndpointMethod(
542
- ctx: Context,
543
- args: Args.GetApiDelegateInterfaceEndpointMethod,
544
- ): kt.Function<Builder> {
545
- const { endpoint } = args;
546
- const parameters = this.getAllParameters(ctx, { endpoint });
547
-
548
- const fn = kt.function<Builder>(toCasing(endpoint.name, ctx.config.functionNameCasing), {
549
- suspend: true,
550
- parameters: parameters.map((parameter) => {
551
- return kt.parameter(
552
- toCasing(parameter.name, ctx.config.parameterNameCasing),
553
- this.getParameterType(ctx, { endpoint, parameter }),
554
- );
555
- }),
556
- });
557
-
558
- if (ctx.config.strictResponseEntities) {
559
- const responseEntity = kt.reference.genericFactory(
560
- this.getApiResponseEntityName(ctx, { endpoint }),
561
- `${this.getPackageName(ctx, {})}.${this.getApiInterfaceName(ctx, {})}`,
562
- );
563
- fn.returnType = responseEntity(['*']);
564
- fn.body = appendValueGroup(
565
- [s`return ${
566
- kt.call([
567
- responseEntity.infer(),
568
- toCasing(getReasonPhrase(501), ctx.config.functionNameCasing),
569
- ], [])
570
- }`],
571
- '\n',
572
- );
573
- } else {
574
- fn.returnType = kt.refs.spring.responseEntity([this.getResponseType(ctx, { endpoint })]);
575
- fn.body = appendValueGroup(
576
- [s`return ${kt.refs.spring.responseEntity.infer()}(${kt.refs.spring.httpStatus()}.NOT_IMPLEMENTED)`],
577
- '\n',
578
- );
579
- }
580
-
581
- return fn;
582
- }
583
- // #endregion
584
-
585
- protected getParameterType(ctx: Context, args: Args.GetParameterType): kt.Type<Builder> {
586
- const { parameter } = args;
587
- if (parameter.multipart?.isFile) {
588
- return kt.refs.spring.filePart();
589
- }
590
- const type = this.getTypeUsage(ctx, {
591
- schema: parameter.schema,
592
- nullable: (!parameter.required && parameter.schema?.default === undefined) || undefined,
593
- });
594
- return parameter.target === 'body' ? adjustListType(ctx, type) : type;
595
- }
596
-
597
- protected getResponseType(ctx: Context, args: Args.GetResponseType): kt.Type<Builder> {
598
- const { endpoint, response } = args;
599
- const responseSchemas = (response ? [response] : endpoint.responses)
600
- .flatMap((x) => x.contentOptions.flatMap((x) => x.schema))
601
- .filter(notNullish)
602
- .filter(
603
- (x, i, a) =>
604
- a.findIndex((y) => {
605
- const xType = this.getSchemaType(ctx, { schema: x });
606
- const yType = this.getSchemaType(ctx, { schema: y });
607
- return xType?.name === yType?.name && xType?.packageName === yType?.packageName;
608
- }) === i,
609
- );
610
-
611
- if (responseSchemas.length === 1) {
612
- return adjustListType(ctx, this.getTypeUsage(ctx, { schema: responseSchemas[0], fallback: kt.refs.unit() }));
613
- } else if (responseSchemas.length === 0) {
614
- return kt.refs.unit();
615
- } else {
616
- return kt.refs.any({ nullable: true });
617
- }
618
- }
619
-
620
- protected getTypeUsage(ctx: Context, args: Args.GetTypeUsage<Builder>): kt.Type<Builder> {
621
- const { schema, nullable, fallback } = args;
622
- const type = this.getSchemaType(ctx, { schema });
623
- return type
624
- ? createOverwriteProxy(type, { nullable: nullable ?? type.nullable })
625
- : (fallback ?? kt.refs.any({ nullable }));
626
- }
627
-
628
- protected getSchemaType(ctx: Context, args: Args.GetSchemaType): kt.Reference<SourceBuilder> | undefined {
629
- const { schema } = args;
630
- return schema && ctx.input.kotlin.models[schema.id].type;
631
- }
632
-
633
- protected getControllerRequestMapping(ctx: Context, args: Args.GetControllerRequestMapping): kt.String<Builder> {
634
- let { prefix } = args;
635
- const basePath = this.getBasePath(ctx, {});
636
- prefix ??= `openapi.${toCasing(ctx.service.name, ctx.config.propertyNameCasing)}`;
637
- return kt.string(`\${${prefix}.base-path:${basePath}}`);
638
- }
639
-
640
- protected getBasePath(ctx: Context, _args: Args.GetBasePath): string {
641
- return modifyString(
642
- (ctx.service.$src ?? ctx.service.endpoints[0]?.$src)?.document.servers?.[0]?.url ?? '/',
643
- ctx.config.basePath,
644
- ctx.service,
645
- );
646
- }
647
-
648
- protected getEndpointPath(ctx: Context, args: Args.GetEndpointPath): string {
649
- const { endpoint } = args;
650
- return modifyString(endpoint.path, ctx.config.pathModifier, endpoint);
651
- }
652
-
653
- protected getDirectoryPath(ctx: Context, args: Args.GetDirectoryPath): string {
654
- const { packageName } = args;
655
- return `${ctx.config.outputDir}/${packageName.replace(/\./g, '/')}`;
656
- }
657
-
658
- protected getPathConstantName(ctx: Context, args: Args.GetPathConstantName): string {
659
- const { endpoint } = args;
660
- return toCasing(`${endpoint.name}_path`, ctx.config.constantNameCasing);
661
- }
662
-
663
- protected getPackageName(ctx: Context, _args: Args.GetPackageName): string {
664
- const packageSuffix = typeof ctx.config.packageSuffix === 'string'
665
- ? ctx.config.packageSuffix
666
- : ctx.config.packageSuffix(ctx.service);
667
- return ctx.config.packageName + packageSuffix;
668
- }
669
-
670
- protected getApiResponseEntityName(ctx: Context, args: Args.GetApiResponseEntityName): string {
671
- const { endpoint } = args;
672
- return toCasing(`${endpoint.name}_ResponseEntity`, ctx.config.typeNameCasing);
673
- }
674
-
675
- protected getApiInterfaceName(ctx: Context, _args: Args.GetApiInterfaceName): string {
676
- return toCasing(ctx.service.name + '_Api', ctx.config.typeNameCasing);
677
- }
678
-
679
- protected getApiControllerName(ctx: Context, _args: Args.GetApiControllerName): string {
680
- return toCasing(ctx.service.name + '_ApiController', ctx.config.typeNameCasing);
681
- }
682
-
683
- protected getApiDelegateInterfaceName(ctx: Context, _args: Args.GetApiDelegateInterfaceName): string {
684
- return toCasing(ctx.service.name + '_ApiDelegate', ctx.config.typeNameCasing);
685
- }
686
-
687
- protected getAllParameters(ctx: Context, args: Args.GetAllParameters): ApiParameterWithMultipartInfo[] {
688
- const { endpoint } = args;
689
- const parameters = endpoint.parameters.filter(
690
- (parameter) => parameter.target === 'query' || parameter.target === 'path' || parameter.target === 'header',
691
- );
692
- if (endpoint.requestBody) {
693
- const content = endpoint.requestBody.content[0];
694
- let schema = content.schema;
695
-
696
- if (content.type === 'multipart/form-data') {
697
- if (schema && schema.kind === 'object') {
698
- schema = resolveAnyOfAndAllOf(schema, true) ?? schema;
699
- const properties = schema.properties ?? {};
700
- for (const [name, property] of properties.entries()) {
701
- parameters.push(
702
- Object.assign(
703
- this.createApiParameter({
704
- id: `multipart-${name}`,
705
- name,
706
- target: 'body',
707
- schema: property.schema,
708
- required: schema.required.has(name),
709
- description: property.schema.description,
710
- }),
711
- {
712
- multipart: {
713
- name,
714
- isFile: property.schema.kind === 'string' && property.schema.format === 'binary',
715
- },
716
- },
717
- ),
718
- );
719
- }
720
- }
721
- } else {
722
- const schemaType = this.getSchemaType(ctx, { schema });
723
- const name = !schemaType || /^Any\??$/.test(schemaType.name)
724
- ? 'body'
725
- : SourceBuilder.build((b) => kt.reference.write(b, schemaType));
726
- parameters.push(
727
- this.createApiParameter({
728
- id: 'body',
729
- name,
730
- target: 'body',
731
- schema,
732
- required: endpoint.requestBody.required,
733
- description: endpoint.requestBody.description,
734
- }),
735
- );
736
- }
737
- }
738
-
739
- return parameters;
740
- }
741
-
742
- private createApiParameter(data: Partial<ApiParameter> & Pick<ApiParameter, 'id' | 'name' | 'target'>): ApiParameter {
743
- return {
744
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
745
- $src: undefined!,
746
- $ref: undefined,
747
- schema: undefined,
748
- required: false,
749
- description: undefined,
750
- allowEmptyValue: undefined,
751
- allowReserved: undefined,
752
- deprecated: false,
753
- explode: undefined,
754
- style: undefined,
755
- ...data,
756
- };
757
- }
758
- }
759
-
760
- export function adjustListType<T>(ctx: Context, type: T): T {
761
- if (!kt.refs.list.matches(type)) return type;
762
- switch (ctx.config.arrayType) {
763
- case 'flux':
764
- return kt.refs.reactor.flux([type.generics[0]]) as T;
765
- default:
766
- return type;
767
- }
768
- }