@goast/kotlin 0.5.9-beta.2 → 0.5.10

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 (100) hide show
  1. package/LICENSE +21 -21
  2. package/assets/client/okhttp3/ApiAbstractions.kt +30 -30
  3. package/assets/client/okhttp3/ApiClient.kt +252 -252
  4. package/assets/client/okhttp3/ApiResponse.kt +43 -43
  5. package/assets/client/okhttp3/Errors.kt +21 -21
  6. package/assets/client/okhttp3/PartConfig.kt +11 -11
  7. package/assets/client/okhttp3/RequestConfig.kt +18 -18
  8. package/assets/client/okhttp3/RequestMethod.kt +8 -8
  9. package/assets/client/okhttp3/ResponseExtensions.kt +24 -24
  10. package/assets/client/spring-reactive-web-clients/ApiRequestFile.kt +33 -33
  11. package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
  12. package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +9 -9
  13. package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts +11 -11
  14. package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  15. package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +15 -13
  16. package/package.json +1 -1
  17. package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
  18. package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +9 -9
  19. package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts +11 -11
  20. package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  21. package/script/src/generators/services/spring-controllers/spring-controller-generator.js +15 -13
  22. package/src/mod.ts +8 -0
  23. package/src/src/assets.ts +9 -0
  24. package/src/src/ast/_index.ts +66 -0
  25. package/src/src/ast/common.ts +1 -0
  26. package/src/src/ast/index.ts +1 -0
  27. package/src/src/ast/node.ts +10 -0
  28. package/src/src/ast/nodes/annotation.ts +79 -0
  29. package/src/src/ast/nodes/argument.ts +62 -0
  30. package/src/src/ast/nodes/call.ts +75 -0
  31. package/src/src/ast/nodes/class.ts +178 -0
  32. package/src/src/ast/nodes/collection-literal.ts +49 -0
  33. package/src/src/ast/nodes/constructor.ts +126 -0
  34. package/src/src/ast/nodes/doc-tag.ts +138 -0
  35. package/src/src/ast/nodes/doc.ts +111 -0
  36. package/src/src/ast/nodes/enum-value.ts +100 -0
  37. package/src/src/ast/nodes/enum.ts +163 -0
  38. package/src/src/ast/nodes/function.ts +178 -0
  39. package/src/src/ast/nodes/generic-parameter.ts +54 -0
  40. package/src/src/ast/nodes/init-block.ts +38 -0
  41. package/src/src/ast/nodes/interface.ts +133 -0
  42. package/src/src/ast/nodes/lambda-type.ts +73 -0
  43. package/src/src/ast/nodes/lambda.ts +74 -0
  44. package/src/src/ast/nodes/object.ts +102 -0
  45. package/src/src/ast/nodes/parameter.ts +118 -0
  46. package/src/src/ast/nodes/property.ts +225 -0
  47. package/src/src/ast/nodes/reference.ts +178 -0
  48. package/src/src/ast/nodes/string.ts +114 -0
  49. package/src/src/ast/nodes/types.ts +23 -0
  50. package/src/src/ast/references/index.ts +10 -0
  51. package/src/src/ast/references/jackson.ts +59 -0
  52. package/src/src/ast/references/jakarta.ts +14 -0
  53. package/src/src/ast/references/java.ts +27 -0
  54. package/src/src/ast/references/kotlin.ts +41 -0
  55. package/src/src/ast/references/kotlinx.ts +14 -0
  56. package/src/src/ast/references/okhttp3.ts +5 -0
  57. package/src/src/ast/references/reactor.ts +5 -0
  58. package/src/src/ast/references/spring-reactive.ts +33 -0
  59. package/src/src/ast/references/spring.ts +86 -0
  60. package/src/src/ast/references/swagger.ts +23 -0
  61. package/src/src/ast/utils/get-kotlin-builder-options.ts +19 -0
  62. package/src/src/ast/utils/to-kt-node.ts +31 -0
  63. package/src/src/ast/utils/write-kt-annotations.ts +15 -0
  64. package/src/src/ast/utils/write-kt-arguments.ts +45 -0
  65. package/src/src/ast/utils/write-kt-enum-values.ts +27 -0
  66. package/src/src/ast/utils/write-kt-generic-parameters.ts +12 -0
  67. package/src/src/ast/utils/write-kt-members.ts +25 -0
  68. package/src/src/ast/utils/write-kt-node.ts +37 -0
  69. package/src/src/ast/utils/write-kt-parameters.ts +25 -0
  70. package/src/src/common-results.ts +4 -0
  71. package/src/src/config.ts +61 -0
  72. package/src/src/file-builder.ts +112 -0
  73. package/src/src/generators/file-generator.ts +29 -0
  74. package/src/src/generators/index.ts +5 -0
  75. package/src/src/generators/models/args.ts +136 -0
  76. package/src/src/generators/models/index.ts +4 -0
  77. package/src/src/generators/models/model-generator.ts +725 -0
  78. package/src/src/generators/models/models-generator.ts +65 -0
  79. package/src/src/generators/models/models.ts +95 -0
  80. package/src/src/generators/services/okhttp3-clients/args.ts +90 -0
  81. package/src/src/generators/services/okhttp3-clients/index.ts +4 -0
  82. package/src/src/generators/services/okhttp3-clients/models.ts +73 -0
  83. package/src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts +613 -0
  84. package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +188 -0
  85. package/src/src/generators/services/okhttp3-clients/refs.ts +59 -0
  86. package/src/src/generators/services/spring-controllers/args.ts +95 -0
  87. package/src/src/generators/services/spring-controllers/index.ts +4 -0
  88. package/src/src/generators/services/spring-controllers/models.ts +76 -0
  89. package/src/src/generators/services/spring-controllers/refs.ts +17 -0
  90. package/src/src/generators/services/spring-controllers/spring-controller-generator.ts +1109 -0
  91. package/src/src/generators/services/spring-controllers/spring-controllers-generator.ts +140 -0
  92. package/src/src/generators/services/spring-reactive-web-clients/args.ts +103 -0
  93. package/src/src/generators/services/spring-reactive-web-clients/index.ts +4 -0
  94. package/src/src/generators/services/spring-reactive-web-clients/models.ts +62 -0
  95. package/src/src/generators/services/spring-reactive-web-clients/refs.ts +11 -0
  96. package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts +586 -0
  97. package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-clients-generator.ts +125 -0
  98. package/src/src/import-collection.ts +98 -0
  99. package/src/src/types.ts +3 -0
  100. package/src/src/utils.ts +47 -0
@@ -1,43 +1,43 @@
1
- package @PACKAGE_NAME@
2
-
3
- enum class ResponseType {
4
- Success, Informational, Redirection, ClientError, ServerError
5
- }
6
-
7
- interface Response
8
-
9
- abstract class ApiResponse<T>(val responseType: ResponseType) : Response {
10
- abstract val statusCode: Int
11
- abstract val headers: Map<String, List<String>>
12
- }
13
-
14
- class Success<T>(
15
- val data: T,
16
- override val statusCode: Int = -1,
17
- override val headers: Map<String, List<String>> = mapOf()
18
- ) : ApiResponse<T>(ResponseType.Success)
19
-
20
- class Informational<T>(
21
- val statusText: String,
22
- override val statusCode: Int = -1,
23
- override val headers: Map<String, List<String>> = mapOf()
24
- ) : ApiResponse<T>(ResponseType.Informational)
25
-
26
- class Redirection<T>(
27
- override val statusCode: Int = -1,
28
- override val headers: Map<String, List<String>> = mapOf()
29
- ) : ApiResponse<T>(ResponseType.Redirection)
30
-
31
- class ClientError<T>(
32
- val message: String? = null,
33
- val body: Any? = null,
34
- override val statusCode: Int = -1,
35
- override val headers: Map<String, List<String>> = mapOf()
36
- ) : ApiResponse<T>(ResponseType.ClientError)
37
-
38
- class ServerError<T>(
39
- val message: String? = null,
40
- val body: Any? = null,
41
- override val statusCode: Int = -1,
42
- override val headers: Map<String, List<String>>
43
- ) : ApiResponse<T>(ResponseType.ServerError)
1
+ package @PACKAGE_NAME@
2
+
3
+ enum class ResponseType {
4
+ Success, Informational, Redirection, ClientError, ServerError
5
+ }
6
+
7
+ interface Response
8
+
9
+ abstract class ApiResponse<T>(val responseType: ResponseType) : Response {
10
+ abstract val statusCode: Int
11
+ abstract val headers: Map<String, List<String>>
12
+ }
13
+
14
+ class Success<T>(
15
+ val data: T,
16
+ override val statusCode: Int = -1,
17
+ override val headers: Map<String, List<String>> = mapOf()
18
+ ) : ApiResponse<T>(ResponseType.Success)
19
+
20
+ class Informational<T>(
21
+ val statusText: String,
22
+ override val statusCode: Int = -1,
23
+ override val headers: Map<String, List<String>> = mapOf()
24
+ ) : ApiResponse<T>(ResponseType.Informational)
25
+
26
+ class Redirection<T>(
27
+ override val statusCode: Int = -1,
28
+ override val headers: Map<String, List<String>> = mapOf()
29
+ ) : ApiResponse<T>(ResponseType.Redirection)
30
+
31
+ class ClientError<T>(
32
+ val message: String? = null,
33
+ val body: Any? = null,
34
+ override val statusCode: Int = -1,
35
+ override val headers: Map<String, List<String>> = mapOf()
36
+ ) : ApiResponse<T>(ResponseType.ClientError)
37
+
38
+ class ServerError<T>(
39
+ val message: String? = null,
40
+ val body: Any? = null,
41
+ override val statusCode: Int = -1,
42
+ override val headers: Map<String, List<String>>
43
+ ) : ApiResponse<T>(ResponseType.ServerError)
@@ -1,21 +1,21 @@
1
- @file:Suppress("unused")
2
-
3
- package @PACKAGE_NAME@
4
-
5
- import java.lang.RuntimeException
6
-
7
- open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) :
8
- RuntimeException(message) {
9
-
10
- companion object {
11
- private const val serialVersionUID: Long = 123L
12
- }
13
- }
14
-
15
- open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) :
16
- RuntimeException(message) {
17
-
18
- companion object {
19
- private const val serialVersionUID: Long = 456L
20
- }
21
- }
1
+ @file:Suppress("unused")
2
+
3
+ package @PACKAGE_NAME@
4
+
5
+ import java.lang.RuntimeException
6
+
7
+ open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) :
8
+ RuntimeException(message) {
9
+
10
+ companion object {
11
+ private const val serialVersionUID: Long = 123L
12
+ }
13
+ }
14
+
15
+ open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) :
16
+ RuntimeException(message) {
17
+
18
+ companion object {
19
+ private const val serialVersionUID: Long = 456L
20
+ }
21
+ }
@@ -1,11 +1,11 @@
1
- package @PACKAGE_NAME@
2
-
3
- /**
4
- * Defines a config object for a given part of a multi-part request.
5
- * NOTE: Headers is a Map<String,String> because rfc2616 defines
6
- * multi-valued headers as csv-only.
7
- */
8
- data class PartConfig<T>(
9
- val headers: MutableMap<String, String> = mutableMapOf(),
10
- val body: T? = null
11
- )
1
+ package @PACKAGE_NAME@
2
+
3
+ /**
4
+ * Defines a config object for a given part of a multi-part request.
5
+ * NOTE: Headers is a Map<String,String> because rfc2616 defines
6
+ * multi-valued headers as csv-only.
7
+ */
8
+ data class PartConfig<T>(
9
+ val headers: MutableMap<String, String> = mutableMapOf(),
10
+ val body: T? = null
11
+ )
@@ -1,18 +1,18 @@
1
- package @PACKAGE_NAME@
2
-
3
- /**
4
- * Defines a config object for a given request.
5
- * NOTE: This object doesn't include 'body' because it
6
- * allows for caching of the constructed object
7
- * for many request definitions.
8
- * NOTE: Headers is a Map<String,String> because rfc2616 defines
9
- * multi-valued headers as csv-only.
10
- */
11
- data class RequestConfig<T>(
12
- val method: RequestMethod,
13
- val path: String,
14
- val headers: MutableMap<String, String> = mutableMapOf(),
15
- val query: MutableMap<String, List<String>> = mutableMapOf(),
16
- val requiresAuthentication: Boolean,
17
- val body: T? = null
18
- )
1
+ package @PACKAGE_NAME@
2
+
3
+ /**
4
+ * Defines a config object for a given request.
5
+ * NOTE: This object doesn't include 'body' because it
6
+ * allows for caching of the constructed object
7
+ * for many request definitions.
8
+ * NOTE: Headers is a Map<String,String> because rfc2616 defines
9
+ * multi-valued headers as csv-only.
10
+ */
11
+ data class RequestConfig<T>(
12
+ val method: RequestMethod,
13
+ val path: String,
14
+ val headers: MutableMap<String, String> = mutableMapOf(),
15
+ val query: MutableMap<String, List<String>> = mutableMapOf(),
16
+ val requiresAuthentication: Boolean,
17
+ val body: T? = null
18
+ )
@@ -1,8 +1,8 @@
1
- package @PACKAGE_NAME@
2
-
3
- /**
4
- * Provides enumerated HTTP verbs
5
- */
6
- enum class RequestMethod {
7
- GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT
8
- }
1
+ package @PACKAGE_NAME@
2
+
3
+ /**
4
+ * Provides enumerated HTTP verbs
5
+ */
6
+ enum class RequestMethod {
7
+ GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT
8
+ }
@@ -1,24 +1,24 @@
1
- package @PACKAGE_NAME@
2
-
3
- import okhttp3.Response
4
-
5
- /**
6
- * Provides an extension to evaluation whether the response is a 1xx code
7
- */
8
- val Response.isInformational: Boolean get() = this.code in 100..199
9
-
10
- /**
11
- * Provides an extension to evaluation whether the response is a 3xx code
12
- */
13
- @Suppress("EXTENSION_SHADOWED_BY_MEMBER")
14
- val Response.isRedirect: Boolean get() = this.code in 300..399
15
-
16
- /**
17
- * Provides an extension to evaluation whether the response is a 4xx code
18
- */
19
- val Response.isClientError: Boolean get() = this.code in 400..499
20
-
21
- /**
22
- * Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code
23
- */
24
- val Response.isServerError: Boolean get() = this.code in 500..999
1
+ package @PACKAGE_NAME@
2
+
3
+ import okhttp3.Response
4
+
5
+ /**
6
+ * Provides an extension to evaluation whether the response is a 1xx code
7
+ */
8
+ val Response.isInformational: Boolean get() = this.code in 100..199
9
+
10
+ /**
11
+ * Provides an extension to evaluation whether the response is a 3xx code
12
+ */
13
+ @Suppress("EXTENSION_SHADOWED_BY_MEMBER")
14
+ val Response.isRedirect: Boolean get() = this.code in 300..399
15
+
16
+ /**
17
+ * Provides an extension to evaluation whether the response is a 4xx code
18
+ */
19
+ val Response.isClientError: Boolean get() = this.code in 400..499
20
+
21
+ /**
22
+ * Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code
23
+ */
24
+ val Response.isServerError: Boolean get() = this.code in 500..999
@@ -1,33 +1,33 @@
1
- package @PACKAGE_NAME@
2
-
3
- import org.springframework.core.io.buffer.DataBuffer
4
- import org.springframework.http.MediaType
5
- import org.springframework.http.client.MultipartBodyBuilder
6
- import org.springframework.http.codec.multipart.FilePart
7
- import java.io.File
8
-
9
- interface ApiRequestFile {
10
- companion object {
11
- fun from(file: File): ApiRequestFile =
12
- object : ApiRequestFile {
13
- override fun addToBuilder(builder: MultipartBodyBuilder) {
14
- builder
15
- .part("file", file)
16
- .filename(file.name)
17
- .contentType(MediaType.APPLICATION_OCTET_STREAM)
18
- }
19
- }
20
-
21
- fun from(filePart: FilePart): ApiRequestFile =
22
- object : ApiRequestFile {
23
- override fun addToBuilder(builder: MultipartBodyBuilder) {
24
- builder
25
- .asyncPart("file", filePart.content(), DataBuffer::class.java)
26
- .filename(filePart.filename())
27
- .contentType(filePart.headers().contentType ?: MediaType.APPLICATION_OCTET_STREAM)
28
- }
29
- }
30
- }
31
-
32
- fun addToBuilder(builder: MultipartBodyBuilder)
33
- }
1
+ package @PACKAGE_NAME@
2
+
3
+ import org.springframework.core.io.buffer.DataBuffer
4
+ import org.springframework.http.MediaType
5
+ import org.springframework.http.client.MultipartBodyBuilder
6
+ import org.springframework.http.codec.multipart.FilePart
7
+ import java.io.File
8
+
9
+ interface ApiRequestFile {
10
+ companion object {
11
+ fun from(file: File): ApiRequestFile =
12
+ object : ApiRequestFile {
13
+ override fun addToBuilder(builder: MultipartBodyBuilder) {
14
+ builder
15
+ .part("file", file)
16
+ .filename(file.name)
17
+ .contentType(MediaType.APPLICATION_OCTET_STREAM)
18
+ }
19
+ }
20
+
21
+ fun from(filePart: FilePart): ApiRequestFile =
22
+ object : ApiRequestFile {
23
+ override fun addToBuilder(builder: MultipartBodyBuilder) {
24
+ builder
25
+ .asyncPart("file", filePart.content(), DataBuffer::class.java)
26
+ .filename(filePart.filename())
27
+ .contentType(filePart.headers().contentType ?: MediaType.APPLICATION_OCTET_STREAM)
28
+ }
29
+ }
30
+ }
31
+
32
+ fun addToBuilder(builder: MultipartBodyBuilder)
33
+ }
@@ -109,31 +109,31 @@ export class DefaultKotlinOkHttp3Generator extends KotlinFileGenerator {
109
109
  return appendValueGroup([
110
110
  s `val localVarResponse = ${kt.call([toCasing(endpoint.name + '_WithHttpInfo', ctx.config.functionNameCasing)], parameters.map((x) => toCasing(x.name, ctx.config.parameterNameCasing)))}`,
111
111
  '',
112
- s `return when (localVarResponse.responseType) {${s.indent `
112
+ s `return when (localVarResponse.responseType) {${s.indent `
113
113
  ${ctx.refs.responseType()}.Success -> ${responseSchema === undefined
114
114
  ? kt.refs.unit()
115
115
  : s `(localVarResponse as ${ctx.refs.success(['*'])}).data as ${this.getTypeUsage(ctx, {
116
116
  schema: responseSchema,
117
- })}`}
118
- ${ctx.refs.responseType()}.Informational -> throw ${kt.refs.java.unsupportedOperationException()}("Client does not support Informational responses.")
119
- ${ctx.refs.responseType()}.Redirection -> throw ${kt.refs.java.unsupportedOperationException()}("Client does not support Redirection responses.")
120
- ${ctx.refs.responseType()}.ClientError -> {${s.indent `
121
- val localVarError = localVarResponse as ${ctx.refs.clientError(['*'])}
122
- throw ${ctx.refs.clientException()}(${s.indent `
123
- "Client error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
124
- localVarError.statusCode,
125
- localVarResponse`}
126
- )`}
127
- }
128
-
129
- ${ctx.refs.responseType()}.ServerError -> {${s.indent `
130
- val localVarError = localVarResponse as ${ctx.refs.serverError(['*'])}
131
- throw ${ctx.refs.serverException()}(${s.indent `
132
- "Server error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
133
- localVarError.statusCode,
134
- localVarResponse`}
135
- )`}
136
- }`}
117
+ })}`}
118
+ ${ctx.refs.responseType()}.Informational -> throw ${kt.refs.java.unsupportedOperationException()}("Client does not support Informational responses.")
119
+ ${ctx.refs.responseType()}.Redirection -> throw ${kt.refs.java.unsupportedOperationException()}("Client does not support Redirection responses.")
120
+ ${ctx.refs.responseType()}.ClientError -> {${s.indent `
121
+ val localVarError = localVarResponse as ${ctx.refs.clientError(['*'])}
122
+ throw ${ctx.refs.clientException()}(${s.indent `
123
+ "Client error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
124
+ localVarError.statusCode,
125
+ localVarResponse`}
126
+ )`}
127
+ }
128
+
129
+ ${ctx.refs.responseType()}.ServerError -> {${s.indent `
130
+ val localVarError = localVarResponse as ${ctx.refs.serverError(['*'])}
131
+ throw ${ctx.refs.serverException()}(${s.indent `
132
+ "Server error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
133
+ localVarError.statusCode,
134
+ localVarResponse`}
135
+ )`}
136
+ }`}
137
137
  }`,
138
138
  ], '\n');
139
139
  }
@@ -212,16 +212,16 @@ export class DefaultKotlinOkHttp3Generator extends KotlinFileGenerator {
212
212
  result.values.push(`val localVariableBody = ${bodyParamName}`);
213
213
  }
214
214
  }
215
- result.values.push(s `val localVariableQuery: ${ctx.refs.multiValueMap()} = ${kt.call([kt.refs.mutableMapOf([kt.refs.string(), kt.refs.list([kt.refs.string()])])], [])}${queryParameters.length === 0 ? '' : s.indent `
216
- .apply {${s.indent `
215
+ result.values.push(s `val localVariableQuery: ${ctx.refs.multiValueMap()} = ${kt.call([kt.refs.mutableMapOf([kt.refs.string(), kt.refs.list([kt.refs.string()])])], [])}${queryParameters.length === 0 ? '' : s.indent `
216
+ .apply {${s.indent `
217
217
  ${appendValueGroup(queryParameters.map((param) => {
218
218
  const paramName = toCasing(param.name, ctx.config.parameterNameCasing);
219
219
  const toString = this.getParameterToString(ctx, { endpoint, parameter: param });
220
220
  const put = s `put(${kt.string(param.name)}, listOf(${paramName}${toString}))`;
221
- return param.required ? put : s `if (${paramName} != null) {${s.indent `
222
- ${put}`}
221
+ return param.required ? put : s `if (${paramName} != null) {${s.indent `
222
+ ${put}`}
223
223
  }`;
224
- }), '\n')}`}
224
+ }), '\n')}`}
225
225
  }`}`);
226
226
  result.values.push('val localVariableHeaders: MutableMap<String, String> = mutableMapOf()');
227
227
  if (((_b = endpoint.requestBody) === null || _b === void 0 ? void 0 : _b.content[0]) !== undefined) {
@@ -230,8 +230,8 @@ export class DefaultKotlinOkHttp3Generator extends KotlinFileGenerator {
230
230
  for (const header of headerParameters) {
231
231
  const paramName = toCasing(header.name, ctx.config.parameterNameCasing);
232
232
  const toString = this.getParameterToString(ctx, { endpoint, parameter: header });
233
- result.values.push(s `if (${paramName} != null) {${s.indent `
234
- localVariableHeaders["${header.name}"] = ${paramName}${toString}`}
233
+ result.values.push(s `if (${paramName} != null) {${s.indent `
234
+ localVariableHeaders["${header.name}"] = ${paramName}${toString}`}
235
235
  }`);
236
236
  }
237
237
  result.values.push(s `return ${kt.call([ctx.refs.requestConfig.infer()], [
@@ -100,16 +100,16 @@ export class KotlinOkHttp3ClientsGenerator extends OpenApiServicesGenerationProv
100
100
  const jsonIncludeMember = toCasing(ctx.config.serializerJsonInclude, 'snake');
101
101
  const defaultFactory = springBootVersion === 4
102
102
  // Jackson 3's ObjectMapper is immutable; configuration moved to the (Kotlin) mapper builder.
103
- ? s `${kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${s.indent `
104
- .findAndAddModules()
105
- .changeDefaultPropertyInclusion { it.withValueInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
106
- .configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
107
- .configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
103
+ ? s `${kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${s.indent `
104
+ .findAndAddModules()
105
+ .changeDefaultPropertyInclusion { it.withValueInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
106
+ .configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
107
+ .configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
108
108
  .build()`}`
109
- : s `${kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${s.indent `
110
- .findAndRegisterModules()
111
- .setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
112
- .configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
109
+ : s `${kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${s.indent `
110
+ .findAndRegisterModules()
111
+ .setSerializationInclusion(${kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
112
+ .configure(${kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
113
113
  .configure(${kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
114
114
  const factory = typeof ctx.config.serializer === 'object'
115
115
  ? ctx.config.serializer.factory
@@ -1,4 +1,4 @@
1
- import { type AppendValueGroup, type BasicAppendValue, type MaybePromise, SourceBuilder } from '@goast/core';
1
+ import { type ApiEndpoint, type AppendValueGroup, type BasicAppendValue, type MaybePromise, SourceBuilder } from '@goast/core';
2
2
  import { kt } from '../../../ast/index.js';
3
3
  import type { KotlinImport } from '../../../common-results.js';
4
4
  import { KotlinFileBuilder } from '../../../file-builder.js';
@@ -17,23 +17,23 @@ export declare class DefaultKotlinSpringControllerGenerator extends KotlinFileGe
17
17
  protected generateApiInterfaceFile(ctx: Context, args: Args.GenerateApiInterfaceFile): KotlinImport;
18
18
  protected getApiInterfaceFileContent(ctx: Context, args: Args.GetApiInterfaceFileContent): AppendValueGroup<Builder>;
19
19
  protected getApiInterface(ctx: Context, args: Args.GetApiInterface): kt.Interface<Builder>;
20
- private getApiInterfaceAnnotations;
21
- private getApiInterfaceMembers;
20
+ protected getApiInterfaceAnnotations(ctx: Context): kt.Annotation<Builder>[];
21
+ protected getApiInterfaceMembers(ctx: Context): kt.InterfaceMember<Builder>[];
22
22
  protected getApiInterfaceEndpointMethod(ctx: Context, args: Args.GetApiInterfaceEndpointMethod): kt.Function<Builder>;
23
- private getApiInterfaceEndpointMethodAnnnotations;
24
- private getApiInterfaceEndpointMethodParameter;
25
- private getApiInterfaceEndpointMethodBody;
26
- private getApiResponseEntityClass;
23
+ protected getApiInterfaceEndpointMethodAnnnotations(ctx: Context, endpoint: ApiEndpoint): kt.Annotation<Builder>[];
24
+ protected getApiInterfaceEndpointMethodParameter(ctx: Context, endpoint: ApiEndpoint, parameter: ApiParameterWithMultipartInfo): kt.Parameter<Builder>;
25
+ protected getApiInterfaceEndpointMethodBody(ctx: Context, endpoint: ApiEndpoint, parameters: ApiParameterWithMultipartInfo[]): AppendValueGroup<Builder>;
26
+ protected getApiResponseEntityClass(ctx: Context, args: Args.GetApiResponseEntityClass): kt.Class<Builder>;
27
27
  protected generateApiControllerFile(ctx: Context, args: Args.GenerateApiControllerFile): KotlinImport;
28
28
  protected getApiControllerFileContent(ctx: Context, args: Args.GetApiControllerFileContent): AppendValueGroup<Builder>;
29
29
  protected getApiController(ctx: Context, args: Args.GetApiController): kt.Class<Builder>;
30
- private getApiControllerAnnotations;
31
- private getApiControllerMembers;
30
+ protected getApiControllerAnnotations(ctx: Context): kt.Annotation<Builder>[];
31
+ protected getApiControllerMembers(ctx: Context): kt.ClassMember<Builder>[];
32
32
  protected generateApiDelegateInterfaceFile(ctx: Context, args: Args.GenerateApiDelegateInterfaceFile): KotlinImport;
33
33
  protected getApiDelegateInterfaceFileContent(ctx: Context, args: Args.GetApiDelegateInterfaceFileContent): AppendValueGroup<Builder>;
34
34
  protected getApiDelegateInterface(ctx: Context, args: Args.GetApiDelegateInterface): kt.Interface<Builder>;
35
- private getApiDelegateInterfaceAnnotations;
36
- private getApiDelegateInterfaceMembers;
35
+ protected getApiDelegateInterfaceAnnotations(ctx: Context): kt.Annotation<Builder>[];
36
+ protected getApiDelegateInterfaceMembers(ctx: Context): kt.InterfaceMember<Builder>[];
37
37
  protected getApiDelegateInterfaceEndpointMethod(ctx: Context, args: Args.GetApiDelegateInterfaceEndpointMethod): kt.Function<Builder>;
38
38
  protected getParameterType(ctx: Context, args: Args.GetParameterType): kt.Type<Builder>;
39
39
  protected getResponseType(ctx: Context, args: Args.GetResponseType): kt.Type<Builder>;
@@ -1 +1 @@
1
- {"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spring-controller-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-controllers/spring-controller-generator.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { kt } from '../../../ast/index.js';
4
4
  import { KotlinFileBuilder } from '../../../file-builder.js';
5
5
  import { getSourceDocLine, modifyString } from '../../../utils.js';
6
6
  import { KotlinFileGenerator } from '../../file-generator.js';
7
+ const strictResponseCustomProperty = 'strict-response';
7
8
  export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator {
8
9
  generate(ctx) {
9
10
  const packageName = this.getPackageName(ctx, {});
@@ -81,9 +82,9 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
81
82
  ctx.service.endpoints.forEach((endpoint) => {
82
83
  members.push(this.getApiInterfaceEndpointMethod(ctx, { endpoint }));
83
84
  });
84
- if (ctx.config.strictResponseEntities) {
85
- members.push(...ctx.service.endpoints.map((endpoint) => this.getApiResponseEntityClass(ctx, { endpoint })));
86
- }
85
+ members.push(...ctx.service.endpoints
86
+ .filter((endpoint) => { var _a; return (_a = endpoint.custom[strictResponseCustomProperty]) !== null && _a !== void 0 ? _a : ctx.config.strictResponseEntities; })
87
+ .map((endpoint) => this.getApiResponseEntityClass(ctx, { endpoint })));
87
88
  return members;
88
89
  }
89
90
  getApiInterfaceEndpointMethod(ctx, args) {
@@ -256,13 +257,13 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
256
257
  }
257
258
  }
258
259
  });
259
- body.values.push(s `try {${s.indent `
260
+ body.values.push(s `try {${s.indent `
260
261
  return ${kt.call([
261
262
  kt.call(kt.reference('getDelegate'), []),
262
263
  toCasing(endpoint.name, ctx.config.functionNameCasing),
263
- ], parameters.map((x) => toCasing(x.name, ctx.config.parameterNameCasing)))}`}
264
- } catch (e: ${kt.refs.throwable()}) {${s.indent `
265
- return getExceptionHandler()?.handleApiException(e) ?: throw e`}
264
+ ], parameters.map((x) => toCasing(x.name, ctx.config.parameterNameCasing)))}`}
265
+ } catch (e: ${kt.refs.throwable()}) {${s.indent `
266
+ return getExceptionHandler()?.handleApiException(e) ?: throw e`}
266
267
  }`);
267
268
  return body;
268
269
  }
@@ -324,11 +325,11 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
324
325
  hasResponseBody ? kt.argument('body') : kt.toNode(null),
325
326
  kt.toNode(code),
326
327
  contentType
327
- ? s `${kt.refs.spring.linkedMultiValueMap([kt.refs.string(), kt.refs.string()])}().also {
328
- if (headers != null) {
329
- it.putAll(headers)
330
- }
331
- it.addIfAbsent("Content-Type", ${kt.string(contentType)})
328
+ ? s `${kt.refs.spring.linkedMultiValueMap([kt.refs.string(), kt.refs.string()])}().also {
329
+ if (headers != null) {
330
+ it.putAll(headers)
331
+ }
332
+ it.addIfAbsent("Content-Type", ${kt.string(contentType)})
332
333
  }`
333
334
  : kt.argument('headers'),
334
335
  ]),
@@ -467,6 +468,7 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
467
468
  return members;
468
469
  }
469
470
  getApiDelegateInterfaceEndpointMethod(ctx, args) {
471
+ var _a;
470
472
  const { endpoint } = args;
471
473
  const parameters = this.getAllParameters(ctx, { endpoint });
472
474
  const fn = kt.function(toCasing(endpoint.name, ctx.config.functionNameCasing), {
@@ -476,7 +478,7 @@ export class DefaultKotlinSpringControllerGenerator extends KotlinFileGenerator
476
478
  return kt.parameter(toCasing(parameter.name, ctx.config.parameterNameCasing), this.getParameterType(ctx, { endpoint, parameter }));
477
479
  }),
478
480
  });
479
- if (ctx.config.strictResponseEntities) {
481
+ if ((_a = endpoint.custom[strictResponseCustomProperty]) !== null && _a !== void 0 ? _a : ctx.config.strictResponseEntities) {
480
482
  const responseEntity = kt.reference.genericFactory(this.getApiResponseEntityName(ctx, { endpoint }), `${this.getPackageName(ctx, {})}.${this.getApiInterfaceName(ctx, {})}`);
481
483
  fn.returnType = responseEntity(['*']);
482
484
  fn.body = appendValueGroup([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goast/kotlin",
3
- "version": "0.5.9-beta.2",
3
+ "version": "0.5.10",
4
4
  "description": "Provides gOAst generators for generating Kotlin code from OpenAPI specifications.",
5
5
  "author": {
6
6
  "name": "Marc Schmidt (MaSch0212)",