@goast/kotlin 0.5.9-beta.1 → 0.5.9
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 +253 -253
- 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/ast/references/jackson.d.ts +5 -8
- package/esm/src/ast/references/jackson.d.ts.map +1 -1
- package/esm/src/ast/references/jackson.js +6 -14
- package/esm/src/config.d.ts +0 -10
- package/esm/src/config.d.ts.map +1 -1
- package/esm/src/config.js +0 -1
- package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
- package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +32 -36
- package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.d.ts.map +1 -1
- package/esm/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +6 -22
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts +11 -11
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
- package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +19 -27
- 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 +1 -4
- package/package.json +2 -2
- package/script/src/ast/references/jackson.d.ts +5 -8
- package/script/src/ast/references/jackson.d.ts.map +1 -1
- package/script/src/ast/references/jackson.js +7 -20
- package/script/src/config.d.ts +0 -10
- package/script/src/config.d.ts.map +1 -1
- package/script/src/config.js +0 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +32 -36
- package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.d.ts.map +1 -1
- package/script/src/generators/services/okhttp3-clients/okhttp3-clients-generator.js +6 -22
- package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts +11 -11
- package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
- package/script/src/generators/services/spring-controllers/spring-controller-generator.js +19 -27
- 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 +1 -4
- 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 +44 -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 +33 -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 +48 -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 +609 -0
- package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +169 -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 +1099 -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 +103 -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 +62 -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 +583 -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
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// com.fasterxml.jackson.annotation
|
|
4
|
+
export const jsonTypeInfo: KtReferenceFactory = ktReference.factory('JsonTypeInfo', 'com.fasterxml.jackson.annotation');
|
|
5
|
+
export const jsonSubTypes: KtReferenceFactory = ktReference.factory('JsonSubTypes', 'com.fasterxml.jackson.annotation');
|
|
6
|
+
export const jsonClassDescription: KtReferenceFactory = ktReference.factory(
|
|
7
|
+
'JsonClassDescription',
|
|
8
|
+
'com.fasterxml.jackson.annotation',
|
|
9
|
+
);
|
|
10
|
+
export const jsonProperty: KtReferenceFactory = ktReference.factory('JsonProperty', 'com.fasterxml.jackson.annotation');
|
|
11
|
+
export const jsonPropertyDescription: KtReferenceFactory = ktReference.factory(
|
|
12
|
+
'JsonPropertyDescription',
|
|
13
|
+
'com.fasterxml.jackson.annotation',
|
|
14
|
+
);
|
|
15
|
+
export const jsonInclude: KtReferenceFactory = ktReference.factory('JsonInclude', 'com.fasterxml.jackson.annotation');
|
|
16
|
+
export const jsonIgnore: KtReferenceFactory = ktReference.factory('JsonIgnore', 'com.fasterxml.jackson.annotation');
|
|
17
|
+
export const jsonAnySetter: KtReferenceFactory = ktReference.factory(
|
|
18
|
+
'JsonAnySetter',
|
|
19
|
+
'com.fasterxml.jackson.annotation',
|
|
20
|
+
);
|
|
21
|
+
export const jsonAnyGetter: KtReferenceFactory = ktReference.factory(
|
|
22
|
+
'JsonAnyGetter',
|
|
23
|
+
'com.fasterxml.jackson.annotation',
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
// com.fasterxml.jackson.databind
|
|
27
|
+
export const objectMapper: KtReferenceFactory = ktReference.factory(
|
|
28
|
+
'ObjectMapper',
|
|
29
|
+
'com.fasterxml.jackson.databind',
|
|
30
|
+
);
|
|
31
|
+
export const serializationFeature: KtReferenceFactory = ktReference.factory(
|
|
32
|
+
'SerializationFeature',
|
|
33
|
+
'com.fasterxml.jackson.databind',
|
|
34
|
+
);
|
|
35
|
+
export const deserializationFeature: KtReferenceFactory = ktReference.factory(
|
|
36
|
+
'DeserializationFeature',
|
|
37
|
+
'com.fasterxml.jackson.databind',
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
// com.fasterxml.jackson.module.kotlin
|
|
41
|
+
export const jacksonObjectMapper: KtReferenceFactory = ktReference.factory(
|
|
42
|
+
'jacksonObjectMapper',
|
|
43
|
+
'com.fasterxml.jackson.module.kotlin',
|
|
44
|
+
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// jakarta.annotation
|
|
4
|
+
export const generated: KtReferenceFactory = ktReference.factory('Generated', 'jakarta.annotation');
|
|
5
|
+
|
|
6
|
+
// jakarta.validation
|
|
7
|
+
export const valid: KtReferenceFactory = ktReference.factory('Valid', 'jakarta.validation');
|
|
8
|
+
|
|
9
|
+
// jakarta.validation.constraints
|
|
10
|
+
export const pattern: KtReferenceFactory = ktReference.factory('Pattern', 'jakarta.validation.constraints');
|
|
11
|
+
export const min: KtReferenceFactory = ktReference.factory('Min', 'jakarta.validation.constraints');
|
|
12
|
+
export const max: KtReferenceFactory = ktReference.factory('Max', 'jakarta.validation.constraints');
|
|
13
|
+
export const notEmpty: KtReferenceFactory = ktReference.factory('NotEmpty', 'jakarta.validation.constraints');
|
|
14
|
+
export const size: KtReferenceFactory = ktReference.factory('Size', 'jakarta.validation.constraints');
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// java.io
|
|
4
|
+
export const file: KtReferenceFactory = ktReference.factory('File', 'java.io');
|
|
5
|
+
export const ioException: KtReferenceFactory = ktReference.factory('IOException', 'java.io');
|
|
6
|
+
|
|
7
|
+
// java.lang
|
|
8
|
+
export const illegalStateException: KtReferenceFactory = ktReference.factory('IllegalStateException', 'java.lang');
|
|
9
|
+
export const system: KtReferenceFactory = ktReference.factory('System', 'java.lang');
|
|
10
|
+
export const unsupportedOperationException: KtReferenceFactory = ktReference.factory(
|
|
11
|
+
'UnsupportedOperationException',
|
|
12
|
+
'java.lang',
|
|
13
|
+
);
|
|
14
|
+
export const void_: KtReferenceFactory = ktReference.factory('Void', 'java.lang');
|
|
15
|
+
|
|
16
|
+
// java.net
|
|
17
|
+
export const uri: KtReferenceFactory = ktReference.factory('URI', 'java.net');
|
|
18
|
+
|
|
19
|
+
// java.time
|
|
20
|
+
export const offsetDateTime: KtReferenceFactory = ktReference.factory('OffsetDateTime', 'java.time');
|
|
21
|
+
export const offsetTime: KtReferenceFactory = ktReference.factory('OffsetTime', 'java.time');
|
|
22
|
+
export const localDateTime: KtReferenceFactory = ktReference.factory('LocalDateTime', 'java.time');
|
|
23
|
+
export const localDate: KtReferenceFactory = ktReference.factory('LocalDate', 'java.time');
|
|
24
|
+
export const localTime: KtReferenceFactory = ktReference.factory('LocalTime', 'java.time');
|
|
25
|
+
|
|
26
|
+
// java.util
|
|
27
|
+
export const optional: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('Optional', 'java.util');
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// kotlin
|
|
4
|
+
export const any: KtReferenceFactory = ktReference.factory('Any', 'kotlin');
|
|
5
|
+
export const nothing: KtReferenceFactory = ktReference.factory('Nothing', 'kotlin');
|
|
6
|
+
export const unit: KtReferenceFactory = ktReference.factory('Unit', 'kotlin');
|
|
7
|
+
export const string: KtReferenceFactory = ktReference.factory('String', 'kotlin');
|
|
8
|
+
export const int: KtReferenceFactory = ktReference.factory('Int', 'kotlin');
|
|
9
|
+
export const long: KtReferenceFactory = ktReference.factory('Long', 'kotlin');
|
|
10
|
+
export const float: KtReferenceFactory = ktReference.factory('Float', 'kotlin');
|
|
11
|
+
export const double: KtReferenceFactory = ktReference.factory('Double', 'kotlin');
|
|
12
|
+
export const boolean: KtReferenceFactory = ktReference.factory('Boolean', 'kotlin');
|
|
13
|
+
export const lazyFun: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('lazy', 'kotlin');
|
|
14
|
+
export const throws: KtReferenceFactory = ktReference.factory('Throws', 'kotlin');
|
|
15
|
+
export const deprecated: KtReferenceFactory = ktReference.factory('Deprecated', 'kotlin');
|
|
16
|
+
export const throwable: KtReferenceFactory = ktReference.factory('Throwable', 'kotlin');
|
|
17
|
+
|
|
18
|
+
// kotlin.collections
|
|
19
|
+
export const list: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('List', 'kotlin.collections');
|
|
20
|
+
export const mutableList: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>(
|
|
21
|
+
'MutableList',
|
|
22
|
+
'kotlin.collections',
|
|
23
|
+
);
|
|
24
|
+
export const map: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>('Map', 'kotlin.collections');
|
|
25
|
+
export const mutableMap: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>(
|
|
26
|
+
'MutableMap',
|
|
27
|
+
'kotlin.collections',
|
|
28
|
+
);
|
|
29
|
+
export const listOf: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('listOf', 'kotlin.collections');
|
|
30
|
+
export const mutableListOf: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>(
|
|
31
|
+
'mutableListOf',
|
|
32
|
+
'kotlin.collections',
|
|
33
|
+
);
|
|
34
|
+
export const mapOf: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>('mapOf', 'kotlin.collections');
|
|
35
|
+
export const mutableMapOf: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>(
|
|
36
|
+
'mutableMapOf',
|
|
37
|
+
'kotlin.collections',
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
// kotlin.jvm
|
|
41
|
+
export const jvmStatic: KtReferenceFactory = ktReference.factory('JvmStatic', 'kotlin.jvm');
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// kotlinx.coroutines.reactive
|
|
4
|
+
export const awaitFirst: KtGenericReferenceFactory<1> = ktReference.genericFactory(
|
|
5
|
+
'awaitFirst',
|
|
6
|
+
'kotlinx.coroutines.reactive',
|
|
7
|
+
);
|
|
8
|
+
export const awaitFirstOrNull: KtGenericReferenceFactory<1> = ktReference.genericFactory(
|
|
9
|
+
'awaitFirstOrNull',
|
|
10
|
+
'kotlinx.coroutines.reactive',
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
// kotlinx.coroutines.reactor
|
|
14
|
+
export const mono: KtGenericReferenceFactory<1> = ktReference.genericFactory('mono', 'kotlinx.coroutines.reactor');
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// okhttp3
|
|
4
|
+
export const okHttpClient: KtReferenceFactory = ktReference.factory('Factory', 'okhttp3.Call');
|
|
5
|
+
export const httpUrl: KtReferenceFactory = ktReference.factory('HttpUrl', 'okhttp3');
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// reactor.core.publisher
|
|
4
|
+
export const flux: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('Flux', 'reactor.core.publisher');
|
|
5
|
+
export const mono: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>('Mono', 'reactor.core.publisher');
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// org.springframework.web.reactive.function
|
|
4
|
+
export const bodyInserters: KtReferenceFactory = ktReference.factory(
|
|
5
|
+
'BodyInserters',
|
|
6
|
+
'org.springframework.web.reactive.function',
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
// org.springframework.web.reactive.function.client
|
|
10
|
+
export const webClient: KtReferenceFactory = ktReference.factory(
|
|
11
|
+
'WebClient',
|
|
12
|
+
'org.springframework.web.reactive.function.client',
|
|
13
|
+
);
|
|
14
|
+
export const clientResponse: KtReferenceFactory = ktReference.factory(
|
|
15
|
+
'ClientResponse',
|
|
16
|
+
'org.springframework.web.reactive.function.client',
|
|
17
|
+
);
|
|
18
|
+
export const requestHeadersSpec: KtGenericReferenceFactory<1> = ktReference.genericFactory(
|
|
19
|
+
'RequestHeadersSpec',
|
|
20
|
+
'org.springframework.web.reactive.function.client.WebClient',
|
|
21
|
+
);
|
|
22
|
+
export const toEntity: KtGenericReferenceFactory<1> = ktReference.genericFactory(
|
|
23
|
+
'toEntity',
|
|
24
|
+
'org.springframework.web.reactive.function.client',
|
|
25
|
+
);
|
|
26
|
+
export const awaitBody: KtGenericReferenceFactory<1> = ktReference.genericFactory(
|
|
27
|
+
'awaitBody',
|
|
28
|
+
'org.springframework.web.reactive.function.client',
|
|
29
|
+
);
|
|
30
|
+
export const awaitBodilessEntity: KtReferenceFactory = ktReference.factory(
|
|
31
|
+
'awaitBodilessEntity',
|
|
32
|
+
'org.springframework.web.reactive.function.client',
|
|
33
|
+
);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type KtGenericReferenceFactory, ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// org.springframework.beans.factory.annotation
|
|
4
|
+
export const autowired: KtReferenceFactory = ktReference.factory(
|
|
5
|
+
'Autowired',
|
|
6
|
+
'org.springframework.beans.factory.annotation',
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
// org.springframework.http
|
|
10
|
+
export const httpStatus: KtReferenceFactory = ktReference.factory('HttpStatus', 'org.springframework.http');
|
|
11
|
+
export const httpMethod: KtReferenceFactory = ktReference.factory('HttpMethod', 'org.springframework.http');
|
|
12
|
+
export const responseEntity: KtGenericReferenceFactory<1> = ktReference.genericFactory<1>(
|
|
13
|
+
'ResponseEntity',
|
|
14
|
+
'org.springframework.http',
|
|
15
|
+
);
|
|
16
|
+
export const mediaType: KtReferenceFactory = ktReference.factory('MediaType', 'org.springframework.http');
|
|
17
|
+
|
|
18
|
+
// org.springframework.http.client
|
|
19
|
+
export const multipartBodyBuilder: KtReferenceFactory = ktReference.factory(
|
|
20
|
+
'MultipartBodyBuilder',
|
|
21
|
+
'org.springframework.http.client',
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
// org.springframework.http.codec.multipart
|
|
25
|
+
export const filePart: KtReferenceFactory = ktReference.factory('FilePart', 'org.springframework.http.codec.multipart');
|
|
26
|
+
|
|
27
|
+
// org.springframework.stereotype
|
|
28
|
+
export const controller: KtReferenceFactory = ktReference.factory('Controller', 'org.springframework.stereotype');
|
|
29
|
+
|
|
30
|
+
// org.springframework.util
|
|
31
|
+
export const multiValueMap: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>(
|
|
32
|
+
'MultiValueMap',
|
|
33
|
+
'org.springframework.util',
|
|
34
|
+
);
|
|
35
|
+
export const linkedMultiValueMap: KtGenericReferenceFactory<2> = ktReference.genericFactory<2>(
|
|
36
|
+
'LinkedMultiValueMap',
|
|
37
|
+
'org.springframework.util',
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
// org.springframework.validation.annotation
|
|
41
|
+
export const validated: KtReferenceFactory = ktReference.factory(
|
|
42
|
+
'Validated',
|
|
43
|
+
'org.springframework.validation.annotation',
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
// org.springframework.web.bind.annotation
|
|
47
|
+
export const pathVariable: KtReferenceFactory = ktReference.factory(
|
|
48
|
+
'PathVariable',
|
|
49
|
+
'org.springframework.web.bind.annotation',
|
|
50
|
+
);
|
|
51
|
+
export const requestBody: KtReferenceFactory = ktReference.factory(
|
|
52
|
+
'RequestBody',
|
|
53
|
+
'org.springframework.web.bind.annotation',
|
|
54
|
+
);
|
|
55
|
+
export const requestMapping: KtReferenceFactory = ktReference.factory(
|
|
56
|
+
'RequestMapping',
|
|
57
|
+
'org.springframework.web.bind.annotation',
|
|
58
|
+
);
|
|
59
|
+
export const requestMethod: KtReferenceFactory = ktReference.factory(
|
|
60
|
+
'RequestMethod',
|
|
61
|
+
'org.springframework.web.bind.annotation',
|
|
62
|
+
);
|
|
63
|
+
export const requestParam: KtReferenceFactory = ktReference.factory(
|
|
64
|
+
'RequestParam',
|
|
65
|
+
'org.springframework.web.bind.annotation',
|
|
66
|
+
);
|
|
67
|
+
export const requestPart: KtReferenceFactory = ktReference.factory(
|
|
68
|
+
'RequestPart',
|
|
69
|
+
'org.springframework.web.bind.annotation',
|
|
70
|
+
);
|
|
71
|
+
export const requestHeader: KtReferenceFactory = ktReference.factory(
|
|
72
|
+
'RequestHeader',
|
|
73
|
+
'org.springframework.web.bind.annotation',
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// org.springframework.web.context.request
|
|
77
|
+
export const nativeWebRequest: KtReferenceFactory = ktReference.factory(
|
|
78
|
+
'NativeWebRequest',
|
|
79
|
+
'org.springframework.web.context.request',
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// org.springframework.web.util
|
|
83
|
+
export const uriComponentsBuilder: KtReferenceFactory = ktReference.factory(
|
|
84
|
+
'UriComponentsBuilder',
|
|
85
|
+
'org.springframework.web.util',
|
|
86
|
+
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ktReference, type KtReferenceFactory } from '../nodes/reference.js';
|
|
2
|
+
|
|
3
|
+
// io.swagger.v3.oas.annotations
|
|
4
|
+
export const parameter: KtReferenceFactory = ktReference.factory('Parameter', 'io.swagger.v3.oas.annotations');
|
|
5
|
+
export const operation: KtReferenceFactory = ktReference.factory('Operation', 'io.swagger.v3.oas.annotations');
|
|
6
|
+
|
|
7
|
+
// io.swagger.v3.oas.annotations.media
|
|
8
|
+
export const schema: KtReferenceFactory = ktReference.factory('Schema', 'io.swagger.v3.oas.annotations.media');
|
|
9
|
+
export const arraySchema: KtReferenceFactory = ktReference.factory(
|
|
10
|
+
'ArraySchema',
|
|
11
|
+
'io.swagger.v3.oas.annotations.media',
|
|
12
|
+
);
|
|
13
|
+
export const content: KtReferenceFactory = ktReference.factory('Content', 'io.swagger.v3.oas.annotations.media');
|
|
14
|
+
|
|
15
|
+
// io.swagger.v3.oas.annotations.responses
|
|
16
|
+
export const apiResponse: KtReferenceFactory = ktReference.factory(
|
|
17
|
+
'ApiResponse',
|
|
18
|
+
'io.swagger.v3.oas.annotations.responses',
|
|
19
|
+
);
|
|
20
|
+
export const apiResponses: KtReferenceFactory = ktReference.factory(
|
|
21
|
+
'ApiResponses',
|
|
22
|
+
'io.swagger.v3.oas.annotations.responses',
|
|
23
|
+
);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defaultOpenApiGeneratorConfig, type SourceBuilder } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { defaultKotlinGeneratorConfig, type KotlinGeneratorConfig } from '../../config.js';
|
|
4
|
+
import { KotlinFileBuilder } from '../../file-builder.js';
|
|
5
|
+
|
|
6
|
+
const ktConfigSymbol = Symbol();
|
|
7
|
+
type _BuilderWithConfig = SourceBuilder & { [ktConfigSymbol]?: KotlinGeneratorConfig };
|
|
8
|
+
|
|
9
|
+
export function getKotlinBuilderOptions(builder: SourceBuilder): KotlinGeneratorConfig {
|
|
10
|
+
if (builder instanceof KotlinFileBuilder) {
|
|
11
|
+
return builder.options;
|
|
12
|
+
}
|
|
13
|
+
if (ktConfigSymbol in builder.options) {
|
|
14
|
+
return builder.options[ktConfigSymbol] as KotlinGeneratorConfig;
|
|
15
|
+
}
|
|
16
|
+
const options = { ...defaultOpenApiGeneratorConfig, ...defaultKotlinGeneratorConfig, ...builder.options };
|
|
17
|
+
(builder as _BuilderWithConfig)[ktConfigSymbol] = options;
|
|
18
|
+
return options;
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BasicAppendValue, SourceBuilder } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { type KtCall, ktCall } from '../nodes/call.js';
|
|
4
|
+
import { type KtString, ktString } from '../nodes/string.js';
|
|
5
|
+
import { listOf, mapOf } from '../references/index.js';
|
|
6
|
+
|
|
7
|
+
export function toKtNode<TBuilder extends SourceBuilder>(object: Record<string | number, unknown>): KtCall<TBuilder>;
|
|
8
|
+
export function toKtNode<TBuilder extends SourceBuilder>(list: unknown[]): KtCall<TBuilder>;
|
|
9
|
+
export function toKtNode<TBuilder extends SourceBuilder>(string: string): KtString<TBuilder>;
|
|
10
|
+
export function toKtNode<TBuilder extends SourceBuilder>(value: unknown): BasicAppendValue<TBuilder>;
|
|
11
|
+
export function toKtNode<TBuilder extends SourceBuilder>(value: unknown): unknown {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return ktCall(
|
|
14
|
+
[listOf.infer()],
|
|
15
|
+
value.map((x) => toKtNode<TBuilder>(x)),
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
if (typeof value === 'object' && value !== null) {
|
|
19
|
+
return ktCall(
|
|
20
|
+
[mapOf.infer()],
|
|
21
|
+
Object.entries(value).map(([k, v]) => ktCall([toKtNode(k), 'to'], [toKtNode(v)])),
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
if (value === null || value === undefined) {
|
|
25
|
+
return 'null';
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === 'boolean' || typeof value === 'number') {
|
|
28
|
+
return String(value);
|
|
29
|
+
}
|
|
30
|
+
return ktString(String(value));
|
|
31
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { notNullish, type Nullable, type SingleOrMultiple, type SourceBuilder, toArray } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { type KtAppendValue, writeKtNode } from './write-kt-node.js';
|
|
4
|
+
|
|
5
|
+
export function writeKtAnnotations<TBuilder extends SourceBuilder>(
|
|
6
|
+
builder: TBuilder,
|
|
7
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
8
|
+
options?: { multiline: boolean },
|
|
9
|
+
) {
|
|
10
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
11
|
+
builder.forEach(filteredNodes, (b, a) => {
|
|
12
|
+
writeKtNode(b, a);
|
|
13
|
+
b.append(options?.multiline ? '\n' : ' ');
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { notNullish, type Nullable, type SingleOrMultiple, type SourceBuilder, toArray } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { KtLambda } from '../nodes/lambda.js';
|
|
4
|
+
import { type KtAppendValue, writeKtNode, writeKtNodes } from './write-kt-node.js';
|
|
5
|
+
|
|
6
|
+
export function writeKtArguments<TBuilder extends SourceBuilder>(
|
|
7
|
+
builder: TBuilder,
|
|
8
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
9
|
+
) {
|
|
10
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
11
|
+
|
|
12
|
+
if (filteredNodes.length === 0) {
|
|
13
|
+
builder.append('()');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const lastNode = filteredNodes[filteredNodes.length - 1];
|
|
18
|
+
let lambda: KtAppendValue<TBuilder> | null = null;
|
|
19
|
+
if (lastNode instanceof KtLambda) {
|
|
20
|
+
lambda = lastNode;
|
|
21
|
+
filteredNodes.pop();
|
|
22
|
+
} else if (
|
|
23
|
+
typeof lastNode === 'object' &&
|
|
24
|
+
(!('name' in lastNode) || !lastNode.name) &&
|
|
25
|
+
'value' in lastNode &&
|
|
26
|
+
lastNode.value instanceof KtLambda
|
|
27
|
+
) {
|
|
28
|
+
lambda = lastNode.value;
|
|
29
|
+
filteredNodes.pop();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const multiline = filteredNodes.length > 3;
|
|
33
|
+
|
|
34
|
+
builder.parenthesizeIf(
|
|
35
|
+
filteredNodes.length > 0,
|
|
36
|
+
'()',
|
|
37
|
+
(b) => writeKtNodes(b, filteredNodes, { separator: multiline ? ',\n' : ', ' }),
|
|
38
|
+
{ multiline },
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
if (lambda) {
|
|
42
|
+
builder.append(' ');
|
|
43
|
+
writeKtNode(builder, lambda);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { notNullish, type Nullable, type SingleOrMultiple, type SourceBuilder, toArray } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { type KtAppendValue, writeKtNode } from './write-kt-node.js';
|
|
4
|
+
|
|
5
|
+
export function writeKtEnumValues<TBuilder extends SourceBuilder>(
|
|
6
|
+
builder: TBuilder,
|
|
7
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
8
|
+
) {
|
|
9
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
10
|
+
const spacing = filteredNodes.some(
|
|
11
|
+
(v) =>
|
|
12
|
+
typeof v === 'object' &&
|
|
13
|
+
(('annotations' in v && Array.isArray(v.annotations) && v.annotations.length > 0) ||
|
|
14
|
+
('doc' in v && v.doc) ||
|
|
15
|
+
('members' in v && Array.isArray(v.members) && v.members.some(notNullish))),
|
|
16
|
+
);
|
|
17
|
+
const multiline = spacing ||
|
|
18
|
+
filteredNodes.length > 4 ||
|
|
19
|
+
filteredNodes.some(
|
|
20
|
+
(v) => typeof v === 'object' && 'arguments' in v && Array.isArray(v.arguments) && v.arguments.length > 0,
|
|
21
|
+
);
|
|
22
|
+
builder.forEach(
|
|
23
|
+
filteredNodes,
|
|
24
|
+
(b, v, i) => b.if(spacing && i > 0, (b) => b.ensurePreviousLineEmpty()).append((b) => writeKtNode(b, v)),
|
|
25
|
+
{ separator: multiline ? ',\n' : ', ' },
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { notNullish, type Nullable, type SingleOrMultiple, type SourceBuilder, toArray } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { type KtAppendValue, writeKtNode } from './write-kt-node.js';
|
|
4
|
+
|
|
5
|
+
export function writeKtGenericParameters<TBuilder extends SourceBuilder>(
|
|
6
|
+
builder: TBuilder,
|
|
7
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
8
|
+
) {
|
|
9
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
10
|
+
if (filteredNodes.length === 0) return;
|
|
11
|
+
builder.parenthesize('<>', (b) => b.forEach(filteredNodes, writeKtNode, { separator: ', ' }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isAppendValue, isAppendValueGroup, notNullish, type Nullable, type SourceBuilder } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { KtProperty } from '../nodes/property.js';
|
|
4
|
+
import { type KtAppendValue, writeKtNode } from './write-kt-node.js';
|
|
5
|
+
|
|
6
|
+
export function writeKtMembers<TBuilder extends SourceBuilder>(
|
|
7
|
+
builder: TBuilder,
|
|
8
|
+
members: Nullable<KtAppendValue<TBuilder>>[],
|
|
9
|
+
options?: { alreadyHasMembers?: boolean },
|
|
10
|
+
): void {
|
|
11
|
+
const filteredMembers = members.filter(notNullish);
|
|
12
|
+
builder.forEach(filteredMembers, (b, m, i) =>
|
|
13
|
+
b.if(
|
|
14
|
+
() =>
|
|
15
|
+
!(m instanceof KtProperty && !m.doc && m.annotations.length === 0) &&
|
|
16
|
+
!isAppendValue(m) &&
|
|
17
|
+
!isAppendValueGroup(m),
|
|
18
|
+
(b) =>
|
|
19
|
+
b
|
|
20
|
+
.if(i > 0 || !!options?.alreadyHasMembers, (b) => b.ensurePreviousLineEmpty())
|
|
21
|
+
.append((b) => writeKtNode(b, m))
|
|
22
|
+
.if(i < filteredMembers.length - 1, (b) => b.ensurePreviousLineEmpty()),
|
|
23
|
+
(b) => b.append((b) => writeKtNode(b, m)).ensureCurrentLineEmpty(),
|
|
24
|
+
));
|
|
25
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type AppendValue,
|
|
3
|
+
notNullish,
|
|
4
|
+
type Nullable,
|
|
5
|
+
type Separator,
|
|
6
|
+
type SingleOrMultiple,
|
|
7
|
+
type SourceBuilder,
|
|
8
|
+
toArray,
|
|
9
|
+
} from '@goast/core';
|
|
10
|
+
|
|
11
|
+
import { KtNode } from '../node.js';
|
|
12
|
+
|
|
13
|
+
export type KtAppendValue<TBuilder extends SourceBuilder> = AppendValue<TBuilder> | KtNode<TBuilder>;
|
|
14
|
+
|
|
15
|
+
export function writeKtNode<TBuilder extends SourceBuilder>(
|
|
16
|
+
builder: TBuilder,
|
|
17
|
+
node: Nullable<KtAppendValue<TBuilder>>,
|
|
18
|
+
): void {
|
|
19
|
+
if (node instanceof KtNode) {
|
|
20
|
+
node.write(builder);
|
|
21
|
+
} else {
|
|
22
|
+
builder.append(node);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function writeKtNodes<TBuilder extends SourceBuilder>(
|
|
27
|
+
builder: TBuilder,
|
|
28
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
29
|
+
options?: { separator?: Separator<TBuilder, KtAppendValue<TBuilder>> },
|
|
30
|
+
): void {
|
|
31
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
32
|
+
if (filteredNodes.length === 1) {
|
|
33
|
+
writeKtNode(builder, filteredNodes[0]);
|
|
34
|
+
} else if (filteredNodes.length > 1) {
|
|
35
|
+
builder.forEach(filteredNodes, writeKtNode, { separator: options?.separator });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { notNullish, type Nullable, type SingleOrMultiple, type SourceBuilder, toArray } from '@goast/core';
|
|
2
|
+
|
|
3
|
+
import { type KtAppendValue, writeKtNode } from './write-kt-node.js';
|
|
4
|
+
|
|
5
|
+
export function writeKtParameters<TBuilder extends SourceBuilder>(
|
|
6
|
+
builder: TBuilder,
|
|
7
|
+
nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>,
|
|
8
|
+
) {
|
|
9
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
10
|
+
const hasAnnotations = filteredNodes.some(
|
|
11
|
+
(p) => typeof p === 'object' && 'annotations' in p && Array.isArray(p.annotations) && p.annotations.length > 0,
|
|
12
|
+
);
|
|
13
|
+
const multiline = filteredNodes.length > 2 || hasAnnotations;
|
|
14
|
+
const spacing = multiline && hasAnnotations;
|
|
15
|
+
builder.parenthesize(
|
|
16
|
+
'()',
|
|
17
|
+
(b) =>
|
|
18
|
+
b.forEach(
|
|
19
|
+
filteredNodes,
|
|
20
|
+
(b, p, i) => b.if(i > 0 && spacing, (b) => b.ensurePreviousLineEmpty()).append((b) => writeKtNode(b, p)),
|
|
21
|
+
{ separator: multiline ? ',\n' : ', ' },
|
|
22
|
+
),
|
|
23
|
+
{ multiline },
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DefaultGenerationProviderConfig,
|
|
3
|
+
OpenApiGeneratorConfig,
|
|
4
|
+
StringCasing,
|
|
5
|
+
StringCasingWithOptions,
|
|
6
|
+
} from '@goast/core';
|
|
7
|
+
|
|
8
|
+
export type KotlinGeneratorConfig = OpenApiGeneratorConfig & {
|
|
9
|
+
typeNameCasing: StringCasing | StringCasingWithOptions;
|
|
10
|
+
parameterNameCasing: StringCasing | StringCasingWithOptions;
|
|
11
|
+
functionNameCasing: StringCasing | StringCasingWithOptions;
|
|
12
|
+
propertyNameCasing: StringCasing | StringCasingWithOptions;
|
|
13
|
+
enumValueNameCasing: StringCasing | StringCasingWithOptions;
|
|
14
|
+
constantNameCasing: StringCasing | StringCasingWithOptions;
|
|
15
|
+
|
|
16
|
+
globalImports: string[];
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Whether to include the source OpenAPI document path in the generated documentation comments.
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
includeSourceInDocs: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const defaultKotlinGeneratorConfig: DefaultGenerationProviderConfig<KotlinGeneratorConfig> = {
|
|
26
|
+
indent: { type: 'spaces', count: 4 },
|
|
27
|
+
|
|
28
|
+
typeNameCasing: 'pascal',
|
|
29
|
+
parameterNameCasing: 'camel',
|
|
30
|
+
functionNameCasing: 'camel',
|
|
31
|
+
propertyNameCasing: 'camel',
|
|
32
|
+
enumValueNameCasing: 'snake',
|
|
33
|
+
constantNameCasing: 'snake',
|
|
34
|
+
|
|
35
|
+
globalImports: [
|
|
36
|
+
'kotlin.*',
|
|
37
|
+
'kotlin.annotation.*',
|
|
38
|
+
'kotlin.collections.*',
|
|
39
|
+
'kotlin.comparisons.*',
|
|
40
|
+
'kotlin.io.*',
|
|
41
|
+
'kotlin.ranges.*',
|
|
42
|
+
'kotlin.sequences.*',
|
|
43
|
+
'kotlin.text.*',
|
|
44
|
+
'java.lang.*',
|
|
45
|
+
'kotlin.jvm.*',
|
|
46
|
+
],
|
|
47
|
+
includeSourceInDocs: false,
|
|
48
|
+
};
|