@goast/kotlin 0.5.11-beta.2 → 0.5.12
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.
- package/LICENSE +21 -21
- package/assets/client/okhttp3/ApiAbstractions.kt +30 -30
- package/assets/client/okhttp3/ApiClient.kt +252 -252
- package/assets/client/okhttp3/ApiResponse.kt +43 -43
- package/assets/client/okhttp3/Errors.kt +21 -21
- package/assets/client/okhttp3/PartConfig.kt +11 -11
- package/assets/client/okhttp3/RequestConfig.kt +18 -18
- package/assets/client/okhttp3/RequestMethod.kt +8 -8
- package/assets/client/okhttp3/ResponseExtensions.kt +24 -24
- package/assets/client/spring-reactive-web-clients/ApiRequestFile.kt +33 -33
- package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
- package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +9 -9
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +9 -9
- package/esm/src/generators/services/spring-reactive-web-clients/args.d.ts +10 -0
- package/esm/src/generators/services/spring-reactive-web-clients/args.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/models.d.ts +14 -0
- package/esm/src/generators/services/spring-reactive-web-clients/models.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/models.js +1 -0
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts +8 -0
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +57 -20
- package/package.json +1 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +28 -28
- package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +9 -9
- package/script/src/generators/services/spring-controllers/spring-controller-generator.js +9 -9
- package/script/src/generators/services/spring-reactive-web-clients/args.d.ts +10 -0
- package/script/src/generators/services/spring-reactive-web-clients/args.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/models.d.ts +14 -0
- package/script/src/generators/services/spring-reactive-web-clients/models.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/models.js +1 -0
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts +8 -0
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +57 -20
- package/src/mod.ts +8 -0
- package/src/src/assets.ts +9 -0
- package/src/src/ast/_index.ts +66 -0
- package/src/src/ast/common.ts +1 -0
- package/src/src/ast/index.ts +1 -0
- package/src/src/ast/node.ts +10 -0
- package/src/src/ast/nodes/annotation.ts +79 -0
- package/src/src/ast/nodes/argument.ts +62 -0
- package/src/src/ast/nodes/call.ts +75 -0
- package/src/src/ast/nodes/class.ts +178 -0
- package/src/src/ast/nodes/collection-literal.ts +49 -0
- package/src/src/ast/nodes/constructor.ts +126 -0
- package/src/src/ast/nodes/doc-tag.ts +138 -0
- package/src/src/ast/nodes/doc.ts +111 -0
- package/src/src/ast/nodes/enum-value.ts +100 -0
- package/src/src/ast/nodes/enum.ts +163 -0
- package/src/src/ast/nodes/function.ts +178 -0
- package/src/src/ast/nodes/generic-parameter.ts +54 -0
- package/src/src/ast/nodes/init-block.ts +38 -0
- package/src/src/ast/nodes/interface.ts +133 -0
- package/src/src/ast/nodes/lambda-type.ts +73 -0
- package/src/src/ast/nodes/lambda.ts +74 -0
- package/src/src/ast/nodes/object.ts +102 -0
- package/src/src/ast/nodes/parameter.ts +118 -0
- package/src/src/ast/nodes/property.ts +225 -0
- package/src/src/ast/nodes/reference.ts +178 -0
- package/src/src/ast/nodes/string.ts +114 -0
- package/src/src/ast/nodes/types.ts +23 -0
- package/src/src/ast/references/index.ts +10 -0
- package/src/src/ast/references/jackson.ts +59 -0
- package/src/src/ast/references/jakarta.ts +14 -0
- package/src/src/ast/references/java.ts +27 -0
- package/src/src/ast/references/kotlin.ts +41 -0
- package/src/src/ast/references/kotlinx.ts +14 -0
- package/src/src/ast/references/okhttp3.ts +5 -0
- package/src/src/ast/references/reactor.ts +5 -0
- package/src/src/ast/references/spring-reactive.ts +37 -0
- package/src/src/ast/references/spring.ts +86 -0
- package/src/src/ast/references/swagger.ts +23 -0
- package/src/src/ast/utils/get-kotlin-builder-options.ts +19 -0
- package/src/src/ast/utils/to-kt-node.ts +31 -0
- package/src/src/ast/utils/write-kt-annotations.ts +15 -0
- package/src/src/ast/utils/write-kt-arguments.ts +45 -0
- package/src/src/ast/utils/write-kt-enum-values.ts +27 -0
- package/src/src/ast/utils/write-kt-generic-parameters.ts +12 -0
- package/src/src/ast/utils/write-kt-members.ts +25 -0
- package/src/src/ast/utils/write-kt-node.ts +37 -0
- package/src/src/ast/utils/write-kt-parameters.ts +25 -0
- package/src/src/common-results.ts +4 -0
- package/src/src/config.ts +61 -0
- package/src/src/file-builder.ts +112 -0
- package/src/src/generators/file-generator.ts +29 -0
- package/src/src/generators/index.ts +5 -0
- package/src/src/generators/models/args.ts +136 -0
- package/src/src/generators/models/index.ts +4 -0
- package/src/src/generators/models/model-generator.ts +725 -0
- package/src/src/generators/models/models-generator.ts +65 -0
- package/src/src/generators/models/models.ts +95 -0
- package/src/src/generators/services/okhttp3-clients/args.ts +90 -0
- package/src/src/generators/services/okhttp3-clients/index.ts +4 -0
- package/src/src/generators/services/okhttp3-clients/models.ts +73 -0
- package/src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts +613 -0
- package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +188 -0
- package/src/src/generators/services/okhttp3-clients/refs.ts +59 -0
- package/src/src/generators/services/spring-controllers/args.ts +95 -0
- package/src/src/generators/services/spring-controllers/index.ts +4 -0
- package/src/src/generators/services/spring-controllers/models.ts +76 -0
- package/src/src/generators/services/spring-controllers/refs.ts +17 -0
- package/src/src/generators/services/spring-controllers/spring-controller-generator.ts +1109 -0
- package/src/src/generators/services/spring-controllers/spring-controllers-generator.ts +140 -0
- package/src/src/generators/services/spring-reactive-web-clients/args.ts +112 -0
- package/src/src/generators/services/spring-reactive-web-clients/index.ts +4 -0
- package/src/src/generators/services/spring-reactive-web-clients/models.ts +78 -0
- package/src/src/generators/services/spring-reactive-web-clients/refs.ts +11 -0
- package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts +625 -0
- package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-clients-generator.ts +125 -0
- package/src/src/import-collection.ts +98 -0
- package/src/src/types.ts +3 -0
- package/src/src/utils.ts +47 -0
|
@@ -127,7 +127,7 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
127
127
|
const { endpoint, parameters, responseSchema } = args;
|
|
128
128
|
const result = appendValueGroup([], '\n');
|
|
129
129
|
const callChain = [];
|
|
130
|
-
callChain.push(s `return this.method(${kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`,
|
|
130
|
+
callChain.push(s `return this.method(${kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`, this.getEndpointUriCall(ctx, { endpoint, parameters }));
|
|
131
131
|
if (responseSchema) {
|
|
132
132
|
callChain.push(s `accept(${kt.refs.spring.mediaType()}.APPLICATION_JSON)`);
|
|
133
133
|
}
|
|
@@ -201,6 +201,57 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
201
201
|
result.values.push(kt.call(callChain));
|
|
202
202
|
return result;
|
|
203
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
206
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
207
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
208
|
+
*/
|
|
209
|
+
getEndpointUriCall(ctx, args) {
|
|
210
|
+
const { endpoint, parameters } = args;
|
|
211
|
+
if (!ctx.config.preserveUriTemplate) {
|
|
212
|
+
return kt.call('uri', [kt.call([this.getEndpointUriFunctionName(ctx, { endpoint })], parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) => toCasing(p.name, ctx.config.parameterNameCasing)))]);
|
|
213
|
+
}
|
|
214
|
+
const uriTemplate = kt.string(this.getEndpointPath(ctx, { endpoint }));
|
|
215
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
216
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
217
|
+
// Without query parameters the template and its variables can be handed to `uri` directly.
|
|
218
|
+
if (!queryParameterCalls) {
|
|
219
|
+
return kt.call('uri', [uriTemplate, pathVariables]);
|
|
220
|
+
}
|
|
221
|
+
// Query parameters need a `UriBuilder`, which the `uri(String, Function<UriBuilder, URI>)` overload provides
|
|
222
|
+
// while still recording the template.
|
|
223
|
+
return kt.call('uri', [
|
|
224
|
+
uriTemplate,
|
|
225
|
+
kt.lambda(['uriBuilder'], kt.call([
|
|
226
|
+
'uriBuilder',
|
|
227
|
+
kt.call('apply', [kt.lambda([], queryParameterCalls)]),
|
|
228
|
+
kt.call('build', [pathVariables]),
|
|
229
|
+
])),
|
|
230
|
+
]);
|
|
231
|
+
}
|
|
232
|
+
getUriPathVariablesValue(ctx, args) {
|
|
233
|
+
const { endpoint } = args;
|
|
234
|
+
const pathParameters = endpoint.parameters.filter((p) => p.target === 'path');
|
|
235
|
+
if (pathParameters.length === 0)
|
|
236
|
+
return null;
|
|
237
|
+
return kt.call([kt.refs.mapOf.infer()], pathParameters.map((p) => s `${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`));
|
|
238
|
+
}
|
|
239
|
+
getUriQueryParameterCalls(ctx, args) {
|
|
240
|
+
const { endpoint } = args;
|
|
241
|
+
const queryParameters = endpoint.parameters.filter((p) => p.target === 'query');
|
|
242
|
+
if (queryParameters.length === 0)
|
|
243
|
+
return null;
|
|
244
|
+
return appendValueGroup(queryParameters.map((p) => {
|
|
245
|
+
var _a;
|
|
246
|
+
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
247
|
+
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
248
|
+
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
249
|
+
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
250
|
+
: kt.call([`${parameterName}?`, 'also'], [
|
|
251
|
+
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
252
|
+
]);
|
|
253
|
+
}), '\n');
|
|
254
|
+
}
|
|
204
255
|
getEndpointUriFunctionName(ctx, args) {
|
|
205
256
|
const { endpoint } = args;
|
|
206
257
|
return toCasing(`${this.getEndpointFunctionName(ctx, { endpoint })}_uri`, ctx.config.functionNameCasing);
|
|
@@ -219,26 +270,12 @@ export class DefaultKotlinSpringReactiveWebClientGenerator extends KotlinFileGen
|
|
|
219
270
|
const result = appendValueGroup([], '\n');
|
|
220
271
|
const callChain = [];
|
|
221
272
|
callChain.push(s `${kt.refs.spring.uriComponentsBuilder()}.fromPath(${kt.string(this.getEndpointPath(ctx, { endpoint }))})`);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const parameterName = toCasing(p.name, ctx.config.parameterNameCasing);
|
|
226
|
-
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
227
|
-
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
228
|
-
? kt.call('queryParam', [kt.string(p.name), parameterName + toString])
|
|
229
|
-
: kt.call([`${parameterName}?`, 'also'], [
|
|
230
|
-
kt.lambda([], kt.call('queryParam', [kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
231
|
-
]);
|
|
232
|
-
}), '\n'))]));
|
|
233
|
-
}
|
|
234
|
-
if (endpoint.parameters.some((x) => x.target === 'path')) {
|
|
235
|
-
callChain.push(kt.call('buildAndExpand', [
|
|
236
|
-
kt.call([kt.refs.mapOf.infer()], endpoint.parameters.filter((p) => p.target === 'path').map((p) => s `${kt.string(p.name)} to ${toCasing(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`)),
|
|
237
|
-
]));
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
callChain.push(kt.call('build', []));
|
|
273
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
274
|
+
if (queryParameterCalls) {
|
|
275
|
+
callChain.push(kt.call('apply', [kt.lambda([], queryParameterCalls)]));
|
|
241
276
|
}
|
|
277
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
278
|
+
callChain.push(pathVariables ? kt.call('buildAndExpand', [pathVariables]) : kt.call('build', []));
|
|
242
279
|
callChain.push('toUriString');
|
|
243
280
|
result.values.push(s `return ${kt.call(callChain, [])}`);
|
|
244
281
|
return result;
|
package/package.json
CHANGED
|
@@ -112,31 +112,31 @@ class DefaultKotlinOkHttp3Generator extends file_generator_js_1.KotlinFileGenera
|
|
|
112
112
|
return (0, core_1.appendValueGroup)([
|
|
113
113
|
(0, core_1.builderTemplate) `val localVarResponse = ${index_js_1.kt.call([(0, core_1.toCasing)(endpoint.name + '_WithHttpInfo', ctx.config.functionNameCasing)], parameters.map((x) => (0, core_1.toCasing)(x.name, ctx.config.parameterNameCasing)))}`,
|
|
114
114
|
'',
|
|
115
|
-
(0, core_1.builderTemplate) `return when (localVarResponse.responseType) {${core_1.builderTemplate.indent `
|
|
115
|
+
(0, core_1.builderTemplate) `return when (localVarResponse.responseType) {${core_1.builderTemplate.indent `
|
|
116
116
|
${ctx.refs.responseType()}.Success -> ${responseSchema === undefined
|
|
117
117
|
? index_js_1.kt.refs.unit()
|
|
118
118
|
: (0, core_1.builderTemplate) `(localVarResponse as ${ctx.refs.success(['*'])}).data as ${this.getTypeUsage(ctx, {
|
|
119
119
|
schema: responseSchema,
|
|
120
|
-
})}`}
|
|
121
|
-
${ctx.refs.responseType()}.Informational -> throw ${index_js_1.kt.refs.java.unsupportedOperationException()}("Client does not support Informational responses.")
|
|
122
|
-
${ctx.refs.responseType()}.Redirection -> throw ${index_js_1.kt.refs.java.unsupportedOperationException()}("Client does not support Redirection responses.")
|
|
123
|
-
${ctx.refs.responseType()}.ClientError -> {${core_1.builderTemplate.indent `
|
|
124
|
-
val localVarError = localVarResponse as ${ctx.refs.clientError(['*'])}
|
|
125
|
-
throw ${ctx.refs.clientException()}(${core_1.builderTemplate.indent `
|
|
126
|
-
"Client error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
|
|
127
|
-
localVarError.statusCode,
|
|
128
|
-
localVarResponse`}
|
|
129
|
-
)`}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
${ctx.refs.responseType()}.ServerError -> {${core_1.builderTemplate.indent `
|
|
133
|
-
val localVarError = localVarResponse as ${ctx.refs.serverError(['*'])}
|
|
134
|
-
throw ${ctx.refs.serverException()}(${core_1.builderTemplate.indent `
|
|
135
|
-
"Server error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
|
|
136
|
-
localVarError.statusCode,
|
|
137
|
-
localVarResponse`}
|
|
138
|
-
)`}
|
|
139
|
-
}`}
|
|
120
|
+
})}`}
|
|
121
|
+
${ctx.refs.responseType()}.Informational -> throw ${index_js_1.kt.refs.java.unsupportedOperationException()}("Client does not support Informational responses.")
|
|
122
|
+
${ctx.refs.responseType()}.Redirection -> throw ${index_js_1.kt.refs.java.unsupportedOperationException()}("Client does not support Redirection responses.")
|
|
123
|
+
${ctx.refs.responseType()}.ClientError -> {${core_1.builderTemplate.indent `
|
|
124
|
+
val localVarError = localVarResponse as ${ctx.refs.clientError(['*'])}
|
|
125
|
+
throw ${ctx.refs.clientException()}(${core_1.builderTemplate.indent `
|
|
126
|
+
"Client error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
|
|
127
|
+
localVarError.statusCode,
|
|
128
|
+
localVarResponse`}
|
|
129
|
+
)`}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
${ctx.refs.responseType()}.ServerError -> {${core_1.builderTemplate.indent `
|
|
133
|
+
val localVarError = localVarResponse as ${ctx.refs.serverError(['*'])}
|
|
134
|
+
throw ${ctx.refs.serverException()}(${core_1.builderTemplate.indent `
|
|
135
|
+
"Server error : \${localVarError.statusCode} \${localVarError.message.orEmpty()}",
|
|
136
|
+
localVarError.statusCode,
|
|
137
|
+
localVarResponse`}
|
|
138
|
+
)`}
|
|
139
|
+
}`}
|
|
140
140
|
}`,
|
|
141
141
|
], '\n');
|
|
142
142
|
}
|
|
@@ -215,16 +215,16 @@ class DefaultKotlinOkHttp3Generator extends file_generator_js_1.KotlinFileGenera
|
|
|
215
215
|
result.values.push(`val localVariableBody = ${bodyParamName}`);
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
result.values.push((0, core_1.builderTemplate) `val localVariableQuery: ${ctx.refs.multiValueMap()} = ${index_js_1.kt.call([index_js_1.kt.refs.mutableMapOf([index_js_1.kt.refs.string(), index_js_1.kt.refs.list([index_js_1.kt.refs.string()])])], [])}${queryParameters.length === 0 ? '' : core_1.builderTemplate.indent `
|
|
219
|
-
.apply {${core_1.builderTemplate.indent `
|
|
218
|
+
result.values.push((0, core_1.builderTemplate) `val localVariableQuery: ${ctx.refs.multiValueMap()} = ${index_js_1.kt.call([index_js_1.kt.refs.mutableMapOf([index_js_1.kt.refs.string(), index_js_1.kt.refs.list([index_js_1.kt.refs.string()])])], [])}${queryParameters.length === 0 ? '' : core_1.builderTemplate.indent `
|
|
219
|
+
.apply {${core_1.builderTemplate.indent `
|
|
220
220
|
${(0, core_1.appendValueGroup)(queryParameters.map((param) => {
|
|
221
221
|
const paramName = (0, core_1.toCasing)(param.name, ctx.config.parameterNameCasing);
|
|
222
222
|
const toString = this.getParameterToString(ctx, { endpoint, parameter: param });
|
|
223
223
|
const put = (0, core_1.builderTemplate) `put(${index_js_1.kt.string(param.name)}, listOf(${paramName}${toString}))`;
|
|
224
|
-
return param.required ? put : (0, core_1.builderTemplate) `if (${paramName} != null) {${core_1.builderTemplate.indent `
|
|
225
|
-
${put}`}
|
|
224
|
+
return param.required ? put : (0, core_1.builderTemplate) `if (${paramName} != null) {${core_1.builderTemplate.indent `
|
|
225
|
+
${put}`}
|
|
226
226
|
}`;
|
|
227
|
-
}), '\n')}`}
|
|
227
|
+
}), '\n')}`}
|
|
228
228
|
}`}`);
|
|
229
229
|
result.values.push('val localVariableHeaders: MutableMap<String, String> = mutableMapOf()');
|
|
230
230
|
if (((_b = endpoint.requestBody) === null || _b === void 0 ? void 0 : _b.content[0]) !== undefined) {
|
|
@@ -233,8 +233,8 @@ class DefaultKotlinOkHttp3Generator extends file_generator_js_1.KotlinFileGenera
|
|
|
233
233
|
for (const header of headerParameters) {
|
|
234
234
|
const paramName = (0, core_1.toCasing)(header.name, ctx.config.parameterNameCasing);
|
|
235
235
|
const toString = this.getParameterToString(ctx, { endpoint, parameter: header });
|
|
236
|
-
result.values.push((0, core_1.builderTemplate) `if (${paramName} != null) {${core_1.builderTemplate.indent `
|
|
237
|
-
localVariableHeaders["${header.name}"] = ${paramName}${toString}`}
|
|
236
|
+
result.values.push((0, core_1.builderTemplate) `if (${paramName} != null) {${core_1.builderTemplate.indent `
|
|
237
|
+
localVariableHeaders["${header.name}"] = ${paramName}${toString}`}
|
|
238
238
|
}`);
|
|
239
239
|
}
|
|
240
240
|
result.values.push((0, core_1.builderTemplate) `return ${index_js_1.kt.call([ctx.refs.requestConfig.infer()], [
|
|
@@ -103,16 +103,16 @@ class KotlinOkHttp3ClientsGenerator extends core_1.OpenApiServicesGenerationProv
|
|
|
103
103
|
const jsonIncludeMember = (0, core_1.toCasing)(ctx.config.serializerJsonInclude, 'snake');
|
|
104
104
|
const defaultFactory = springBootVersion === 4
|
|
105
105
|
// Jackson 3's ObjectMapper is immutable; configuration moved to the (Kotlin) mapper builder.
|
|
106
|
-
? (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
107
|
-
.findAndAddModules()
|
|
108
|
-
.changeDefaultPropertyInclusion { it.withValueInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
|
|
109
|
-
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
110
|
-
.configure(${index_js_1.kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
106
|
+
? (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonMapperBuilder(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
107
|
+
.findAndAddModules()
|
|
108
|
+
.changeDefaultPropertyInclusion { it.withValueInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}).withContentInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember}) }
|
|
109
|
+
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
110
|
+
.configure(${index_js_1.kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
111
111
|
.build()`}`
|
|
112
|
-
: (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
113
|
-
.findAndRegisterModules()
|
|
114
|
-
.setSerializationInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
|
|
115
|
-
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
112
|
+
: (0, core_1.builderTemplate) `${index_js_1.kt.refs.jackson.jacksonObjectMapper(springBootVersion)}()${core_1.builderTemplate.indent `
|
|
113
|
+
.findAndRegisterModules()
|
|
114
|
+
.setSerializationInclusion(${index_js_1.kt.refs.jackson.jsonInclude()}.Include.${jsonIncludeMember})
|
|
115
|
+
.configure(${index_js_1.kt.refs.jackson.serializationFeature(springBootVersion)}.WRITE_DATES_AS_TIMESTAMPS, false)
|
|
116
116
|
.configure(${index_js_1.kt.refs.jackson.deserializationFeature(springBootVersion)}.FAIL_ON_UNKNOWN_PROPERTIES, false)`}`;
|
|
117
117
|
const factory = typeof ctx.config.serializer === 'object'
|
|
118
118
|
? ctx.config.serializer.factory
|
|
@@ -261,13 +261,13 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_js_1.KotlinF
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
|
-
body.values.push((0, core_1.builderTemplate) `try {${core_1.builderTemplate.indent `
|
|
264
|
+
body.values.push((0, core_1.builderTemplate) `try {${core_1.builderTemplate.indent `
|
|
265
265
|
return ${index_js_1.kt.call([
|
|
266
266
|
index_js_1.kt.call(index_js_1.kt.reference('getDelegate'), []),
|
|
267
267
|
(0, core_1.toCasing)(endpoint.name, ctx.config.functionNameCasing),
|
|
268
|
-
], parameters.map((x) => (0, core_1.toCasing)(x.name, ctx.config.parameterNameCasing)))}`}
|
|
269
|
-
} catch (e: ${index_js_1.kt.refs.throwable()}) {${core_1.builderTemplate.indent `
|
|
270
|
-
return getExceptionHandler()?.handleApiException(e) ?: throw e`}
|
|
268
|
+
], parameters.map((x) => (0, core_1.toCasing)(x.name, ctx.config.parameterNameCasing)))}`}
|
|
269
|
+
} catch (e: ${index_js_1.kt.refs.throwable()}) {${core_1.builderTemplate.indent `
|
|
270
|
+
return getExceptionHandler()?.handleApiException(e) ?: throw e`}
|
|
271
271
|
}`);
|
|
272
272
|
return body;
|
|
273
273
|
}
|
|
@@ -329,11 +329,11 @@ class DefaultKotlinSpringControllerGenerator extends file_generator_js_1.KotlinF
|
|
|
329
329
|
hasResponseBody ? index_js_1.kt.argument('body') : index_js_1.kt.toNode(null),
|
|
330
330
|
index_js_1.kt.toNode(code),
|
|
331
331
|
contentType
|
|
332
|
-
? (0, core_1.builderTemplate) `${index_js_1.kt.refs.spring.linkedMultiValueMap([index_js_1.kt.refs.string(), index_js_1.kt.refs.string()])}().also {
|
|
333
|
-
if (headers != null) {
|
|
334
|
-
it.putAll(headers)
|
|
335
|
-
}
|
|
336
|
-
it.addIfAbsent("Content-Type", ${index_js_1.kt.string(contentType)})
|
|
332
|
+
? (0, core_1.builderTemplate) `${index_js_1.kt.refs.spring.linkedMultiValueMap([index_js_1.kt.refs.string(), index_js_1.kt.refs.string()])}().also {
|
|
333
|
+
if (headers != null) {
|
|
334
|
+
it.putAll(headers)
|
|
335
|
+
}
|
|
336
|
+
it.addIfAbsent("Content-Type", ${index_js_1.kt.string(contentType)})
|
|
337
337
|
}`
|
|
338
338
|
: index_js_1.kt.argument('headers'),
|
|
339
339
|
]),
|
|
@@ -43,6 +43,16 @@ export type GetEndpointFunctionWithHandlerBody = {
|
|
|
43
43
|
parameters: ApiParameterWithMultipartInfo[];
|
|
44
44
|
responseSchema: ApiSchema | undefined;
|
|
45
45
|
};
|
|
46
|
+
export type GetEndpointUriCall = {
|
|
47
|
+
endpoint: ApiEndpoint;
|
|
48
|
+
parameters: ApiParameterWithMultipartInfo[];
|
|
49
|
+
};
|
|
50
|
+
export type GetUriPathVariablesValue = {
|
|
51
|
+
endpoint: ApiEndpoint;
|
|
52
|
+
};
|
|
53
|
+
export type GetUriQueryParameterCalls = {
|
|
54
|
+
endpoint: ApiEndpoint;
|
|
55
|
+
};
|
|
46
56
|
export type GetEndpointUriFunctionName = {
|
|
47
57
|
endpoint: ApiEndpoint;
|
|
48
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,20 @@ export type KotlinSpringReactiveWebClientsGeneratorConfig = KotlinGeneratorConfi
|
|
|
13
13
|
basePath?: string | RegExp | ((basePath: string, service: ApiService) => string);
|
|
14
14
|
pathModifier?: RegExp | ((path: string, endpoint: ApiEndpoint) => string);
|
|
15
15
|
serializerJsonInclude: 'always' | 'non-null' | 'non-absent' | 'non-default' | 'non-empty' | 'use-defaults';
|
|
16
|
+
/**
|
|
17
|
+
* Whether the generated request functions pass the URI template (e.g. `pets/{id}`) to `WebClient` instead of an
|
|
18
|
+
* already expanded URI string. Only with the template does Spring populate
|
|
19
|
+
* `ClientRequestObservationContext.uriTemplate`, which keeps the `uri` tag of `http.client.requests` bounded by the
|
|
20
|
+
* number of endpoints instead of by the number of distinct path parameter values.
|
|
21
|
+
*
|
|
22
|
+
* Note that path parameter values are then encoded as URI variables, i.e. reserved characters (`/`, `?`, `#`, `%`)
|
|
23
|
+
* inside a value are percent-encoded. Values consisting of unreserved characters are unaffected, so for those the
|
|
24
|
+
* request is byte-identical to the expanded form.
|
|
25
|
+
*
|
|
26
|
+
* The `<endpoint>Uri(...)` helper functions are generated either way.
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
29
|
+
preserveUriTemplate: boolean;
|
|
16
30
|
};
|
|
17
31
|
export declare const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenerationProviderConfig<KotlinSpringReactiveWebClientsGeneratorConfig>;
|
|
18
32
|
export type KotlinSpringReactiveWebClientsGeneratorInput = KotlinModelsGeneratorOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,6CAA6C,GAAG,qBAAqB,GAAG;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3D,yBAAyB,EACrB,MAAM,GACN;QAAE,IAAI,EAAE,qBAAqB,GAAG,0BAA0B,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5F,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;IACjF,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC1E,qBAAqB,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC;IAE3G;;;;;;;;;;;;OAYG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,oDAAoD,EAAE,+BAA+B,CAChG,6CAA6C,CAS9C,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,2BAA2B,CAAC;AAEvF,MAAM,MAAM,6CAA6C,GAAG;IAC1D,MAAM,EAAE;QACN,OAAO,EAAE;YACP,CAAC,SAAS,EAAE,MAAM,GAAG,4CAA4C,CAAC;SACnE,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4CAA4C,GAAG,YAAY,CAAC;AAExE,MAAM,MAAM,8CAA8C,GACtD,wCAAwC,CACxC,4CAA4C,EAC5C,6CAA6C,EAC7C,6CAA6C,EAC7C,4CAA4C,CAC7C,GACC;IACA,yBAAyB,EAAE,MAAM,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAChD,CAAC;AAEJ,MAAM,MAAM,6CAA6C,GAAG,8CAA8C,GAAG;IAC3G,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC"}
|
|
@@ -24,6 +24,14 @@ export declare class DefaultKotlinSpringReactiveWebClientGenerator extends Kotli
|
|
|
24
24
|
protected getEndpointRequestFunctionName(ctx: Context, args: Args.GetEndpointRequestFunctionName): string;
|
|
25
25
|
protected getEndpointRequestFunction(ctx: Context, args: Args.GetEndpointRequestFunction): kt.Function<Builder>;
|
|
26
26
|
protected getEndpointRequestFunctionBody(ctx: Context, args: Args.GetEndpointRequestFunctionBody): AppendValueGroup<Builder>;
|
|
27
|
+
/**
|
|
28
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
29
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
30
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
31
|
+
*/
|
|
32
|
+
protected getEndpointUriCall(ctx: Context, args: Args.GetEndpointUriCall): kt.Value<Builder>;
|
|
33
|
+
protected getUriPathVariablesValue(ctx: Context, args: Args.GetUriPathVariablesValue): kt.Value<Builder> | null;
|
|
34
|
+
protected getUriQueryParameterCalls(ctx: Context, args: Args.GetUriQueryParameterCalls): AppendValueGroup<Builder> | null;
|
|
27
35
|
protected getEndpointUriFunctionName(ctx: Context, args: Args.GetEndpointUriFunctionName): string;
|
|
28
36
|
protected getEndpointUriFunction(ctx: Context, args: Args.GetEndpointUriFunction): kt.Function<Builder>;
|
|
29
37
|
protected getEndpointUriFunctionBody(ctx: Context, args: Args.GetEndpointUriFunctionBody): AppendValueGroup<Builder>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAGjB,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iDAAiD,IAAI,IAAI,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EACV,6CAA6C,EAC7C,4CAA4C,EAC7C,MAAM,aAAa,CAAC;AAErB,KAAK,OAAO,GAAG,6CAA6C,CAAC;AAC7D,KAAK,MAAM,GAAG,4CAA4C,CAAC;AAC3D,KAAK,OAAO,GAAG,iBAAiB,CAAC;AAEjC,MAAM,WAAW,sCAAsC,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACrF,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,6CAA8C,SAAQ,mBAAmB,CAAC,OAAO,EAAE,MAAM,CACpG,YAAW,sCAAsC;IAC1C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;IAoBnD,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAKxG,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;IAS3F,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;IAYrG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,MAAM;IAK3F,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAoBjG,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;IA6B9G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IA8BvB,SAAS,CAAC,kCAAkC,CAC1C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,kCAAkC,GAC5C,gBAAgB,CAAC,OAAO,CAAC;IAiB5B,SAAS,CAAC,8BAA8B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,8BAA8B,GAAG,MAAM;IAKzG,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAmB/G,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,8BAA8B,GACxC,gBAAgB,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spring-reactive-web-client-generator.d.ts","sourceRoot":"","sources":["../../../../../src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -130,7 +130,7 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
130
130
|
const { endpoint, parameters, responseSchema } = args;
|
|
131
131
|
const result = (0, core_1.appendValueGroup)([], '\n');
|
|
132
132
|
const callChain = [];
|
|
133
|
-
callChain.push((0, core_1.builderTemplate) `return this.method(${index_js_1.kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`,
|
|
133
|
+
callChain.push((0, core_1.builderTemplate) `return this.method(${index_js_1.kt.refs.spring.httpMethod()}.${endpoint.method.toUpperCase()})`, this.getEndpointUriCall(ctx, { endpoint, parameters }));
|
|
134
134
|
if (responseSchema) {
|
|
135
135
|
callChain.push((0, core_1.builderTemplate) `accept(${index_js_1.kt.refs.spring.mediaType()}.APPLICATION_JSON)`);
|
|
136
136
|
}
|
|
@@ -204,6 +204,57 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
204
204
|
result.values.push(index_js_1.kt.call(callChain));
|
|
205
205
|
return result;
|
|
206
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Emits the `uri(...)` call of the request function. If `preserveUriTemplate` is enabled, the URI template is
|
|
209
|
+
* passed to `WebClient` verbatim, so Spring can record it (`ClientRequestObservationContext.uriTemplate`) and tag
|
|
210
|
+
* `http.client.requests` with the route instead of the expanded path.
|
|
211
|
+
*/
|
|
212
|
+
getEndpointUriCall(ctx, args) {
|
|
213
|
+
const { endpoint, parameters } = args;
|
|
214
|
+
if (!ctx.config.preserveUriTemplate) {
|
|
215
|
+
return index_js_1.kt.call('uri', [index_js_1.kt.call([this.getEndpointUriFunctionName(ctx, { endpoint })], parameters.filter((p) => p.target === 'path' || p.target === 'query').map((p) => (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)))]);
|
|
216
|
+
}
|
|
217
|
+
const uriTemplate = index_js_1.kt.string(this.getEndpointPath(ctx, { endpoint }));
|
|
218
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
219
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
220
|
+
// Without query parameters the template and its variables can be handed to `uri` directly.
|
|
221
|
+
if (!queryParameterCalls) {
|
|
222
|
+
return index_js_1.kt.call('uri', [uriTemplate, pathVariables]);
|
|
223
|
+
}
|
|
224
|
+
// Query parameters need a `UriBuilder`, which the `uri(String, Function<UriBuilder, URI>)` overload provides
|
|
225
|
+
// while still recording the template.
|
|
226
|
+
return index_js_1.kt.call('uri', [
|
|
227
|
+
uriTemplate,
|
|
228
|
+
index_js_1.kt.lambda(['uriBuilder'], index_js_1.kt.call([
|
|
229
|
+
'uriBuilder',
|
|
230
|
+
index_js_1.kt.call('apply', [index_js_1.kt.lambda([], queryParameterCalls)]),
|
|
231
|
+
index_js_1.kt.call('build', [pathVariables]),
|
|
232
|
+
])),
|
|
233
|
+
]);
|
|
234
|
+
}
|
|
235
|
+
getUriPathVariablesValue(ctx, args) {
|
|
236
|
+
const { endpoint } = args;
|
|
237
|
+
const pathParameters = endpoint.parameters.filter((p) => p.target === 'path');
|
|
238
|
+
if (pathParameters.length === 0)
|
|
239
|
+
return null;
|
|
240
|
+
return index_js_1.kt.call([index_js_1.kt.refs.mapOf.infer()], pathParameters.map((p) => (0, core_1.builderTemplate) `${index_js_1.kt.string(p.name)} to ${(0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`));
|
|
241
|
+
}
|
|
242
|
+
getUriQueryParameterCalls(ctx, args) {
|
|
243
|
+
const { endpoint } = args;
|
|
244
|
+
const queryParameters = endpoint.parameters.filter((p) => p.target === 'query');
|
|
245
|
+
if (queryParameters.length === 0)
|
|
246
|
+
return null;
|
|
247
|
+
return (0, core_1.appendValueGroup)(queryParameters.map((p) => {
|
|
248
|
+
var _a;
|
|
249
|
+
const parameterName = (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing);
|
|
250
|
+
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
251
|
+
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
252
|
+
? index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), parameterName + toString])
|
|
253
|
+
: index_js_1.kt.call([`${parameterName}?`, 'also'], [
|
|
254
|
+
index_js_1.kt.lambda([], index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
255
|
+
]);
|
|
256
|
+
}), '\n');
|
|
257
|
+
}
|
|
207
258
|
getEndpointUriFunctionName(ctx, args) {
|
|
208
259
|
const { endpoint } = args;
|
|
209
260
|
return (0, core_1.toCasing)(`${this.getEndpointFunctionName(ctx, { endpoint })}_uri`, ctx.config.functionNameCasing);
|
|
@@ -222,26 +273,12 @@ class DefaultKotlinSpringReactiveWebClientGenerator extends file_generator_js_1.
|
|
|
222
273
|
const result = (0, core_1.appendValueGroup)([], '\n');
|
|
223
274
|
const callChain = [];
|
|
224
275
|
callChain.push((0, core_1.builderTemplate) `${index_js_1.kt.refs.spring.uriComponentsBuilder()}.fromPath(${index_js_1.kt.string(this.getEndpointPath(ctx, { endpoint }))})`);
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const parameterName = (0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing);
|
|
229
|
-
const toString = this.getParameterToString(ctx, { endpoint, parameter: p });
|
|
230
|
-
return p.required && !((_a = p.schema) === null || _a === void 0 ? void 0 : _a.nullable)
|
|
231
|
-
? index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), parameterName + toString])
|
|
232
|
-
: index_js_1.kt.call([`${parameterName}?`, 'also'], [
|
|
233
|
-
index_js_1.kt.lambda([], index_js_1.kt.call('queryParam', [index_js_1.kt.string(p.name), 'it' + toString]), { singleline: true }),
|
|
234
|
-
]);
|
|
235
|
-
}), '\n'))]));
|
|
236
|
-
}
|
|
237
|
-
if (endpoint.parameters.some((x) => x.target === 'path')) {
|
|
238
|
-
callChain.push(index_js_1.kt.call('buildAndExpand', [
|
|
239
|
-
index_js_1.kt.call([index_js_1.kt.refs.mapOf.infer()], endpoint.parameters.filter((p) => p.target === 'path').map((p) => (0, core_1.builderTemplate) `${index_js_1.kt.string(p.name)} to ${(0, core_1.toCasing)(p.name, ctx.config.parameterNameCasing)}${this.getParameterToString(ctx, { endpoint, parameter: p })}`)),
|
|
240
|
-
]));
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
callChain.push(index_js_1.kt.call('build', []));
|
|
276
|
+
const queryParameterCalls = this.getUriQueryParameterCalls(ctx, { endpoint });
|
|
277
|
+
if (queryParameterCalls) {
|
|
278
|
+
callChain.push(index_js_1.kt.call('apply', [index_js_1.kt.lambda([], queryParameterCalls)]));
|
|
244
279
|
}
|
|
280
|
+
const pathVariables = this.getUriPathVariablesValue(ctx, { endpoint });
|
|
281
|
+
callChain.push(pathVariables ? index_js_1.kt.call('buildAndExpand', [pathVariables]) : index_js_1.kt.call('build', []));
|
|
245
282
|
callChain.push('toUriString');
|
|
246
283
|
result.values.push((0, core_1.builderTemplate) `return ${index_js_1.kt.call(callChain, [])}`);
|
|
247
284
|
return result;
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './src/ast/index.js';
|
|
2
|
+
export * from './src/common-results.js';
|
|
3
|
+
export * from './src/config.js';
|
|
4
|
+
export * from './src/file-builder.js';
|
|
5
|
+
export * from './src/generators/index.js';
|
|
6
|
+
export * from './src/import-collection.js';
|
|
7
|
+
export * from './src/types.js';
|
|
8
|
+
export * from './src/utils.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AssetManager } from '@goast/core';
|
|
2
|
+
import { pathToFileURL, URL } from 'node:url';
|
|
3
|
+
|
|
4
|
+
declare const __filename: string | undefined;
|
|
5
|
+
const scriptUrl = typeof __filename === 'undefined' ? import.meta.url : pathToFileURL(__filename);
|
|
6
|
+
|
|
7
|
+
const manager = new AssetManager(new URL('../assets/', scriptUrl));
|
|
8
|
+
export const getAssetFileContent = manager.getAssetFileContent.bind(manager);
|
|
9
|
+
export const copyAssetFile = manager.copyAssetFile.bind(manager);
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export { type KtAccessModifier as AccessModifier } from './common.js';
|
|
2
|
+
export { KtNode as Node } from './node.js';
|
|
3
|
+
export {
|
|
4
|
+
KtAnnotation as Annotation,
|
|
5
|
+
ktAnnotation as annotation,
|
|
6
|
+
type KtAnnotationTarget as AnnotationTarget,
|
|
7
|
+
} from './nodes/annotation.js';
|
|
8
|
+
export { KtArgument as Argument, ktArgument as argument } from './nodes/argument.js';
|
|
9
|
+
export { KtCall as Call, ktCall as call } from './nodes/call.js';
|
|
10
|
+
export {
|
|
11
|
+
KtClass as Class,
|
|
12
|
+
ktClass as class,
|
|
13
|
+
type KtClassKind as ClassKind,
|
|
14
|
+
type KtClassMember as ClassMember,
|
|
15
|
+
} from './nodes/class.js';
|
|
16
|
+
export {
|
|
17
|
+
KtCollectionLiteral as CollectionLiteral,
|
|
18
|
+
ktCollectionLiteral as collectionLiteral,
|
|
19
|
+
} from './nodes/collection-literal.js';
|
|
20
|
+
export {
|
|
21
|
+
KtConstructor as Constructor,
|
|
22
|
+
ktConstructor as constructor,
|
|
23
|
+
type KtDelegateTarget as DelegateTarget,
|
|
24
|
+
} from './nodes/constructor.js';
|
|
25
|
+
export { KtDocTag as DocTag, ktDocTag as docTag } from './nodes/doc-tag.js';
|
|
26
|
+
export { KtDoc as Doc, ktDoc as doc } from './nodes/doc.js';
|
|
27
|
+
export {
|
|
28
|
+
KtEnumValue as EnumValue,
|
|
29
|
+
ktEnumValue as enumValue,
|
|
30
|
+
type KtEnumValueMember as EnumValueMember,
|
|
31
|
+
} from './nodes/enum-value.js';
|
|
32
|
+
export { KtEnum as Enum, ktEnum as enum, type KtEnumMember as EnumMember } from './nodes/enum.js';
|
|
33
|
+
export { KtFunction as Function, ktFunction as function } from './nodes/function.js';
|
|
34
|
+
export {
|
|
35
|
+
KtGenericParameter as GenericParameter,
|
|
36
|
+
ktGenericParameter as genericParameter,
|
|
37
|
+
} from './nodes/generic-parameter.js';
|
|
38
|
+
export { KtInitBlock as InitBlock, ktInitBlock as initBlock } from './nodes/init-block.js';
|
|
39
|
+
export {
|
|
40
|
+
KtInterface as Interface,
|
|
41
|
+
ktInterface as interface,
|
|
42
|
+
type KtInterfaceMember as InterfaceMember,
|
|
43
|
+
} from './nodes/interface.js';
|
|
44
|
+
export { KtLambdaType as LambdaType, ktLambdaType as lambdaType } from './nodes/lambda-type.js';
|
|
45
|
+
export { KtLambda as Lambda, ktLambda as lambda } from './nodes/lambda.js';
|
|
46
|
+
export { KtObject as Object, ktObject as object, type KtObjectMember as ObjectMember } from './nodes/object.js';
|
|
47
|
+
export { KtParameter as Parameter, ktParameter as parameter } from './nodes/parameter.js';
|
|
48
|
+
export {
|
|
49
|
+
KtProperty as Property,
|
|
50
|
+
ktProperty as property,
|
|
51
|
+
KtPropertyAccessor as PropertyAccessor,
|
|
52
|
+
KtPropertyGetter as PropertyGetter,
|
|
53
|
+
KtPropertySetter as PropertySetter,
|
|
54
|
+
} from './nodes/property.js';
|
|
55
|
+
export {
|
|
56
|
+
type KtGenericReferenceFactory as GenericReferenceFactory,
|
|
57
|
+
KtReference as Reference,
|
|
58
|
+
ktReference as reference,
|
|
59
|
+
type KtReferenceFactory as ReferenceFactory,
|
|
60
|
+
} from './nodes/reference.js';
|
|
61
|
+
export { KtString as String, ktString as string } from './nodes/string.js';
|
|
62
|
+
export { type KtType as Type, type KtValue as Value } from './nodes/types.js';
|
|
63
|
+
export * as refs from './references/index.js';
|
|
64
|
+
export { getKotlinBuilderOptions as getBuilderOptions } from './utils/get-kotlin-builder-options.js';
|
|
65
|
+
export { toKtNode as toNode } from './utils/to-kt-node.js';
|
|
66
|
+
export { writeKtNode as writeNode, writeKtNodes as writeNodes } from './utils/write-kt-node.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type KtAccessModifier = 'public' | 'protected' | 'internal' | 'private';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as kt from './_index.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AstNode, type AstNodeOptions, type SourceBuilder } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
export abstract class KtNode<TBuilder extends SourceBuilder, TInjects extends string = never> extends AstNode<
|
|
4
|
+
TBuilder,
|
|
5
|
+
TInjects
|
|
6
|
+
> {
|
|
7
|
+
constructor(options: AstNodeOptions<typeof AstNode<TBuilder, TInjects>>) {
|
|
8
|
+
super(options);
|
|
9
|
+
}
|
|
10
|
+
}
|