@goast/kotlin 0.5.12 → 0.5.13-beta.1

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 (113) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +45 -45
  3. package/assets/client/okhttp3/ApiAbstractions.kt +30 -30
  4. package/assets/client/okhttp3/ApiClient.kt +252 -252
  5. package/assets/client/okhttp3/ApiResponse.kt +43 -43
  6. package/assets/client/okhttp3/Errors.kt +21 -21
  7. package/assets/client/okhttp3/PartConfig.kt +11 -11
  8. package/assets/client/okhttp3/RequestConfig.kt +18 -18
  9. package/assets/client/okhttp3/RequestMethod.kt +8 -8
  10. package/assets/client/okhttp3/ResponseExtensions.kt +24 -24
  11. package/assets/client/spring-reactive-web-clients/ApiRequestFile.kt +33 -33
  12. package/esm/src/generators/models/model-generator.d.ts.map +1 -1
  13. package/esm/src/generators/models/model-generator.js +12 -3
  14. package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
  15. package/esm/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +19 -12
  16. package/esm/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  17. package/esm/src/generators/services/spring-controllers/spring-controller-generator.js +30 -22
  18. package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
  19. package/esm/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +25 -16
  20. package/esm/src/utils.d.ts +3 -1
  21. package/esm/src/utils.d.ts.map +1 -1
  22. package/esm/src/utils.js +7 -0
  23. package/package.json +1 -1
  24. package/script/src/generators/models/model-generator.d.ts.map +1 -1
  25. package/script/src/generators/models/model-generator.js +11 -2
  26. package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts.map +1 -1
  27. package/script/src/generators/services/okhttp3-clients/okhttp3-client-generator.js +18 -11
  28. package/script/src/generators/services/spring-controllers/spring-controller-generator.d.ts.map +1 -1
  29. package/script/src/generators/services/spring-controllers/spring-controller-generator.js +29 -21
  30. package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.d.ts.map +1 -1
  31. package/script/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.js +24 -15
  32. package/script/src/utils.d.ts +3 -1
  33. package/script/src/utils.d.ts.map +1 -1
  34. package/script/src/utils.js +9 -0
  35. package/src/mod.ts +0 -8
  36. package/src/src/assets.ts +0 -9
  37. package/src/src/ast/_index.ts +0 -66
  38. package/src/src/ast/common.ts +0 -1
  39. package/src/src/ast/index.ts +0 -1
  40. package/src/src/ast/node.ts +0 -10
  41. package/src/src/ast/nodes/annotation.ts +0 -79
  42. package/src/src/ast/nodes/argument.ts +0 -62
  43. package/src/src/ast/nodes/call.ts +0 -75
  44. package/src/src/ast/nodes/class.ts +0 -178
  45. package/src/src/ast/nodes/collection-literal.ts +0 -49
  46. package/src/src/ast/nodes/constructor.ts +0 -126
  47. package/src/src/ast/nodes/doc-tag.ts +0 -138
  48. package/src/src/ast/nodes/doc.ts +0 -111
  49. package/src/src/ast/nodes/enum-value.ts +0 -100
  50. package/src/src/ast/nodes/enum.ts +0 -163
  51. package/src/src/ast/nodes/function.ts +0 -178
  52. package/src/src/ast/nodes/generic-parameter.ts +0 -54
  53. package/src/src/ast/nodes/init-block.ts +0 -38
  54. package/src/src/ast/nodes/interface.ts +0 -133
  55. package/src/src/ast/nodes/lambda-type.ts +0 -73
  56. package/src/src/ast/nodes/lambda.ts +0 -74
  57. package/src/src/ast/nodes/object.ts +0 -102
  58. package/src/src/ast/nodes/parameter.ts +0 -118
  59. package/src/src/ast/nodes/property.ts +0 -225
  60. package/src/src/ast/nodes/reference.ts +0 -178
  61. package/src/src/ast/nodes/string.ts +0 -114
  62. package/src/src/ast/nodes/types.ts +0 -23
  63. package/src/src/ast/references/index.ts +0 -10
  64. package/src/src/ast/references/jackson.ts +0 -59
  65. package/src/src/ast/references/jakarta.ts +0 -14
  66. package/src/src/ast/references/java.ts +0 -27
  67. package/src/src/ast/references/kotlin.ts +0 -41
  68. package/src/src/ast/references/kotlinx.ts +0 -14
  69. package/src/src/ast/references/okhttp3.ts +0 -5
  70. package/src/src/ast/references/reactor.ts +0 -5
  71. package/src/src/ast/references/spring-reactive.ts +0 -37
  72. package/src/src/ast/references/spring.ts +0 -86
  73. package/src/src/ast/references/swagger.ts +0 -23
  74. package/src/src/ast/utils/get-kotlin-builder-options.ts +0 -19
  75. package/src/src/ast/utils/to-kt-node.ts +0 -31
  76. package/src/src/ast/utils/write-kt-annotations.ts +0 -15
  77. package/src/src/ast/utils/write-kt-arguments.ts +0 -45
  78. package/src/src/ast/utils/write-kt-enum-values.ts +0 -27
  79. package/src/src/ast/utils/write-kt-generic-parameters.ts +0 -12
  80. package/src/src/ast/utils/write-kt-members.ts +0 -25
  81. package/src/src/ast/utils/write-kt-node.ts +0 -37
  82. package/src/src/ast/utils/write-kt-parameters.ts +0 -25
  83. package/src/src/common-results.ts +0 -4
  84. package/src/src/config.ts +0 -61
  85. package/src/src/file-builder.ts +0 -112
  86. package/src/src/generators/file-generator.ts +0 -29
  87. package/src/src/generators/index.ts +0 -5
  88. package/src/src/generators/models/args.ts +0 -136
  89. package/src/src/generators/models/index.ts +0 -4
  90. package/src/src/generators/models/model-generator.ts +0 -725
  91. package/src/src/generators/models/models-generator.ts +0 -65
  92. package/src/src/generators/models/models.ts +0 -95
  93. package/src/src/generators/services/okhttp3-clients/args.ts +0 -90
  94. package/src/src/generators/services/okhttp3-clients/index.ts +0 -4
  95. package/src/src/generators/services/okhttp3-clients/models.ts +0 -73
  96. package/src/src/generators/services/okhttp3-clients/okhttp3-client-generator.ts +0 -613
  97. package/src/src/generators/services/okhttp3-clients/okhttp3-clients-generator.ts +0 -188
  98. package/src/src/generators/services/okhttp3-clients/refs.ts +0 -59
  99. package/src/src/generators/services/spring-controllers/args.ts +0 -95
  100. package/src/src/generators/services/spring-controllers/index.ts +0 -4
  101. package/src/src/generators/services/spring-controllers/models.ts +0 -76
  102. package/src/src/generators/services/spring-controllers/refs.ts +0 -17
  103. package/src/src/generators/services/spring-controllers/spring-controller-generator.ts +0 -1109
  104. package/src/src/generators/services/spring-controllers/spring-controllers-generator.ts +0 -140
  105. package/src/src/generators/services/spring-reactive-web-clients/args.ts +0 -112
  106. package/src/src/generators/services/spring-reactive-web-clients/index.ts +0 -4
  107. package/src/src/generators/services/spring-reactive-web-clients/models.ts +0 -78
  108. package/src/src/generators/services/spring-reactive-web-clients/refs.ts +0 -11
  109. package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-client-generator.ts +0 -625
  110. package/src/src/generators/services/spring-reactive-web-clients/spring-reactive-web-clients-generator.ts +0 -125
  111. package/src/src/import-collection.ts +0 -98
  112. package/src/src/types.ts +0 -3
  113. package/src/src/utils.ts +0 -47
@@ -1,140 +0,0 @@
1
- import {
2
- type ApiService,
3
- type AppendValueGroup,
4
- appendValueGroup,
5
- Factory,
6
- type MaybePromise,
7
- type OpenApiGeneratorContext,
8
- OpenApiServicesGenerationProviderBase,
9
- } from '@goast/core';
10
-
11
- import { kt } from '../../../ast/index.js';
12
- import { KotlinFileBuilder } from '../../../file-builder.js';
13
- import {
14
- defaultKotlinServicesGeneratorConfig,
15
- type KotlinServiceGeneratorOutput,
16
- type KotlinServicesGeneratorConfig,
17
- type KotlinServicesGeneratorContext,
18
- type KotlinServicesGeneratorInput,
19
- type KotlinServicesGeneratorOutput,
20
- } from './models.js';
21
- import { getReferenceFactories } from './refs.js';
22
- import {
23
- DefaultKotlinSpringControllerGenerator,
24
- type KotlinSpringControllerGenerator,
25
- } from './spring-controller-generator.js';
26
-
27
- type Input = KotlinServicesGeneratorInput;
28
- type Output = KotlinServicesGeneratorOutput;
29
- type Config = KotlinServicesGeneratorConfig;
30
- type ServiceOutput = KotlinServiceGeneratorOutput;
31
- type Context = KotlinServicesGeneratorContext;
32
-
33
- export class KotlinSpringControllersGenerator extends OpenApiServicesGenerationProviderBase<
34
- Input,
35
- Output,
36
- Config,
37
- ServiceOutput,
38
- Context
39
- > {
40
- private readonly _serviceGeneratorFactory: Factory<
41
- KotlinSpringControllerGenerator,
42
- []
43
- >;
44
-
45
- constructor(
46
- serviceGeneratorFactory?: Factory<KotlinSpringControllerGenerator, []>,
47
- ) {
48
- super();
49
- this._serviceGeneratorFactory = serviceGeneratorFactory ??
50
- Factory.fromValue(new DefaultKotlinSpringControllerGenerator());
51
- }
52
-
53
- protected initResult(): Output {
54
- return {
55
- kotlin: {
56
- services: {},
57
- },
58
- };
59
- }
60
-
61
- protected generateService(
62
- ctx: Context,
63
- service: ApiService,
64
- ): MaybePromise<ServiceOutput> {
65
- const serviceGenerator = this._serviceGeneratorFactory.create();
66
- return serviceGenerator.generate({
67
- ...ctx,
68
- service,
69
- });
70
- }
71
-
72
- protected addServiceResult(
73
- ctx: Context,
74
- service: ApiService,
75
- result: ServiceOutput,
76
- ): void {
77
- ctx.output.kotlin.services[service.id] = result;
78
- }
79
-
80
- protected buildContext(
81
- context: OpenApiGeneratorContext<KotlinServicesGeneratorInput>,
82
- config?: Partial<Config> | undefined,
83
- ): Context {
84
- context.data.services = context.data.services.filter(
85
- (x) => x.name !== 'exclude-from-generation',
86
- );
87
- const providerContext = this.getProviderContext(
88
- context,
89
- config,
90
- defaultKotlinServicesGeneratorConfig,
91
- );
92
- return Object.assign(providerContext, {
93
- refs: getReferenceFactories(providerContext.config),
94
- });
95
- }
96
-
97
- protected override generateAdditionalFiles(
98
- ctx: KotlinServicesGeneratorContext,
99
- ): void {
100
- this.generateApiExceptionHandler(ctx);
101
- }
102
-
103
- protected generateApiExceptionHandler(ctx: Context): void {
104
- const packageName = ctx.refs.apiExceptionHandler.packageName ?? ctx.config.packageName;
105
- const dir = `${ctx.config.outputDir}/${packageName.replace(/\./g, '/')}`;
106
- const fileName = `${ctx.refs.apiExceptionHandler.refName}.kt`;
107
- console.log(`Generating Api Exception Handler to ${fileName}...`);
108
-
109
- const builder = new KotlinFileBuilder(packageName, ctx.config);
110
- builder.append(this.getApiExceptionHandlerInterface(ctx));
111
- builder.writeToFile(`${dir}/${fileName}`);
112
- }
113
-
114
- protected getApiExceptionHandlerFileContent(
115
- ctx: Context,
116
- ): AppendValueGroup<KotlinFileBuilder> {
117
- return appendValueGroup([this.getApiExceptionHandlerInterface(ctx)], '\n');
118
- }
119
-
120
- protected getApiExceptionHandlerInterface(
121
- ctx: Context,
122
- ): kt.Interface<KotlinFileBuilder> {
123
- return kt.interface(ctx.refs.apiExceptionHandler.refName, {
124
- members: [
125
- kt.function('handleApiException', {
126
- doc: kt.doc('Handler for API exceptions.', [
127
- kt.docTag('return', 'Response entity.'),
128
- ]),
129
- suspend: ctx.config.suspendingFunctions,
130
- parameters: [
131
- kt.parameter('exception', kt.refs.throwable(), {
132
- description: 'Exception that has been thrown by the API.',
133
- }),
134
- ],
135
- returnType: kt.refs.spring.responseEntity(['*']),
136
- }),
137
- ],
138
- });
139
- }
140
- }
@@ -1,112 +0,0 @@
1
- import type { ApiEndpoint, ApiParameter, ApiSchema, SourceBuilder } from '@goast/core';
2
- import type { kt } from '../../../ast/index.js';
3
- import type { ApiParameterWithMultipartInfo } from '../../../types.js';
4
-
5
- export type GetClientFileContent = object;
6
-
7
- export type GetRequestsObject = object;
8
-
9
- export type GetEndpointMembers = { endpoint: ApiEndpoint; parameters: ApiParameterWithMultipartInfo[] };
10
-
11
- export type GetEndpointFunctionName = { endpoint: ApiEndpoint };
12
-
13
- export type GetEndpointFunction = {
14
- endpoint: ApiEndpoint;
15
- parameters: ApiParameterWithMultipartInfo[];
16
- responseSchema: ApiSchema | undefined;
17
- };
18
-
19
- export type GetEndpointFunctionBody = {
20
- endpoint: ApiEndpoint;
21
- parameters: ApiParameterWithMultipartInfo[];
22
- responseSchema: ApiSchema | undefined;
23
- };
24
-
25
- export type GetEndpointRequestFunctionName = { endpoint: ApiEndpoint };
26
-
27
- export type GetEndpointRequestFunction = {
28
- endpoint: ApiEndpoint;
29
- parameters: ApiParameterWithMultipartInfo[];
30
- responseSchema: ApiSchema | undefined;
31
- };
32
-
33
- export type GetEndpointRequestFunctionBody = {
34
- endpoint: ApiEndpoint;
35
- parameters: ApiParameterWithMultipartInfo[];
36
- responseSchema: ApiSchema | undefined;
37
- };
38
-
39
- export type GetEndpointFunctionWithHandler = {
40
- endpoint: ApiEndpoint;
41
- parameters: ApiParameterWithMultipartInfo[];
42
- responseSchema: ApiSchema | undefined;
43
- };
44
-
45
- export type GetEndpointFunctionWithHandlerBody = {
46
- endpoint: ApiEndpoint;
47
- parameters: ApiParameterWithMultipartInfo[];
48
- responseSchema: ApiSchema | undefined;
49
- };
50
-
51
- export type GetEndpointUriCall = {
52
- endpoint: ApiEndpoint;
53
- parameters: ApiParameterWithMultipartInfo[];
54
- };
55
-
56
- export type GetUriPathVariablesValue = { endpoint: ApiEndpoint };
57
-
58
- export type GetUriQueryParameterCalls = { endpoint: ApiEndpoint };
59
-
60
- export type GetEndpointUriFunctionName = { endpoint: ApiEndpoint };
61
-
62
- export type GetEndpointUriFunction = {
63
- endpoint: ApiEndpoint;
64
- parameters: ApiParameterWithMultipartInfo[];
65
- };
66
-
67
- export type GetEndpointUriFunctionBody = {
68
- endpoint: ApiEndpoint;
69
- parameters: ApiParameterWithMultipartInfo[];
70
- };
71
-
72
- export type GetParameterToString = {
73
- endpoint: ApiEndpoint;
74
- parameter: ApiParameterWithMultipartInfo;
75
- };
76
-
77
- export type GetAdditionalClientMembers = object;
78
-
79
- export type GetParameterType = { endpoint: ApiEndpoint; parameter: ApiParameterWithMultipartInfo };
80
-
81
- export type GetRequestBodyType = { endpoint: ApiEndpoint };
82
-
83
- export type GetParameterDefaultValue = {
84
- endpoint: ApiEndpoint;
85
- parameter: ApiParameter;
86
- };
87
-
88
- export type GetTypeUsage<TBuilder extends SourceBuilder> = {
89
- schema: ApiSchema | undefined;
90
- nullable?: boolean;
91
- fallback?: kt.Type<TBuilder>;
92
- };
93
-
94
- export type GetPackageName = object;
95
-
96
- export type GetResponseSchema = { endpoint: ApiEndpoint };
97
-
98
- export type GetSchemaType = { schema: ApiSchema | undefined };
99
-
100
- export type GetAllParameters = { endpoint: ApiEndpoint };
101
-
102
- export type GetRequestBodyParamName = { endpoint: ApiEndpoint };
103
-
104
- export type GetEndpointDocDescription = { endpoint: ApiEndpoint };
105
-
106
- export type GetBasePath = object;
107
-
108
- export type GetEndpointPath = { endpoint: ApiEndpoint };
109
-
110
- export type GetFilePath = { packageName: string };
111
-
112
- export type GetRequestsObjectName = object;
@@ -1,4 +0,0 @@
1
- export * as DefaultKotlinSpringReactiveWebClientGeneratorArgs from './args.js';
2
- export * from './models.js';
3
- export * from './spring-reactive-web-client-generator.js';
4
- export * from './spring-reactive-web-clients-generator.js';
@@ -1,78 +0,0 @@
1
- import type {
2
- ApiEndpoint,
3
- ApiService,
4
- DefaultGenerationProviderConfig,
5
- OpenApiServicesGenerationProviderContext,
6
- } from '@goast/core';
7
-
8
- import type { KotlinImport } from '../../../common-results.js';
9
- import { defaultKotlinGeneratorConfig, type KotlinGeneratorConfig } from '../../../config.js';
10
- import type { KotlinModelsGeneratorOutput } from '../../models/index.js';
11
- import type { getReferenceFactories } from './refs.js';
12
-
13
- export type KotlinSpringReactiveWebClientsGeneratorConfig = KotlinGeneratorConfig & {
14
- packageName: string;
15
- packageSuffix: string | ((service?: ApiService) => string);
16
- infrastructurePackageName:
17
- | string
18
- | { mode: 'append-package-name' | 'append-full-package-name' | 'replace'; value: string };
19
-
20
- basePath?: string | RegExp | ((basePath: string, service: ApiService) => string);
21
- pathModifier?: RegExp | ((path: string, endpoint: ApiEndpoint) => string);
22
- serializerJsonInclude: 'always' | 'non-null' | 'non-absent' | 'non-default' | 'non-empty' | 'use-defaults';
23
-
24
- /**
25
- * Whether the generated request functions pass the URI template (e.g. `pets/{id}`) to `WebClient` instead of an
26
- * already expanded URI string. Only with the template does Spring populate
27
- * `ClientRequestObservationContext.uriTemplate`, which keeps the `uri` tag of `http.client.requests` bounded by the
28
- * number of endpoints instead of by the number of distinct path parameter values.
29
- *
30
- * Note that path parameter values are then encoded as URI variables, i.e. reserved characters (`/`, `?`, `#`, `%`)
31
- * inside a value are percent-encoded. Values consisting of unreserved characters are unaffected, so for those the
32
- * request is byte-identical to the expanded form.
33
- *
34
- * The `<endpoint>Uri(...)` helper functions are generated either way.
35
- * @default true
36
- */
37
- preserveUriTemplate: boolean;
38
- };
39
-
40
- export const defaultKotlinSpringReactiveWebClientsGeneratorConfig: DefaultGenerationProviderConfig<
41
- KotlinSpringReactiveWebClientsGeneratorConfig
42
- > = {
43
- ...defaultKotlinGeneratorConfig,
44
-
45
- packageName: 'com.openapi.generated',
46
- packageSuffix: '.api.client',
47
- infrastructurePackageName: { mode: 'append-full-package-name', value: '.infrastructure' },
48
- serializerJsonInclude: 'non-absent',
49
- preserveUriTemplate: true,
50
- };
51
-
52
- export type KotlinSpringReactiveWebClientsGeneratorInput = KotlinModelsGeneratorOutput;
53
-
54
- export type KotlinSpringReactiveWebClientsGeneratorOutput = {
55
- kotlin: {
56
- clients: {
57
- [serviceId: string]: KotlinSpringReactiveWebClientGeneratorOutput;
58
- };
59
- };
60
- };
61
-
62
- export type KotlinSpringReactiveWebClientGeneratorOutput = KotlinImport;
63
-
64
- export type KotlinSpringReactiveWebClientsGeneratorContext =
65
- & OpenApiServicesGenerationProviderContext<
66
- KotlinSpringReactiveWebClientsGeneratorInput,
67
- KotlinSpringReactiveWebClientsGeneratorOutput,
68
- KotlinSpringReactiveWebClientsGeneratorConfig,
69
- KotlinSpringReactiveWebClientGeneratorOutput
70
- >
71
- & {
72
- infrastructurePackageName: string;
73
- refs: ReturnType<typeof getReferenceFactories>;
74
- };
75
-
76
- export type KotlinSpringReactiveWebClientGeneratorContext = KotlinSpringReactiveWebClientsGeneratorContext & {
77
- service: ApiService;
78
- };
@@ -1,11 +0,0 @@
1
- import { kt } from '../../../ast/index.js';
2
-
3
- // See packages/kotlin/assets/client/spring-reactive-web-clients for reference
4
- export function getReferenceFactories(infrastructurePackageName: string): {
5
- apiRequestFile: kt.ReferenceFactory;
6
- } {
7
- return {
8
- // ApiRequestFile.kt
9
- apiRequestFile: kt.reference.factory('ApiRequestFile', infrastructurePackageName),
10
- };
11
- }