@goast/kotlin 0.1.17 → 0.2.0
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/cjs/index.js +3 -0
- package/cjs/lib/ast/_index.js +81 -0
- package/cjs/lib/ast/common.js +2 -0
- package/cjs/lib/ast/index.js +5 -0
- package/cjs/lib/ast/node.js +10 -0
- package/cjs/lib/ast/nodes/annotation.js +39 -0
- package/cjs/lib/ast/nodes/argument.js +32 -0
- package/cjs/lib/ast/nodes/call.js +37 -0
- package/cjs/lib/ast/nodes/class.js +94 -0
- package/cjs/lib/ast/nodes/collection-literal.js +24 -0
- package/cjs/lib/ast/nodes/constructor.js +75 -0
- package/cjs/lib/ast/nodes/doc-tag.js +60 -0
- package/cjs/lib/ast/nodes/doc.js +55 -0
- package/cjs/lib/ast/nodes/enum-value.js +50 -0
- package/cjs/lib/ast/nodes/enum.js +83 -0
- package/cjs/lib/ast/nodes/function.js +105 -0
- package/cjs/lib/ast/nodes/generic-parameter.js +29 -0
- package/cjs/lib/ast/nodes/init-block.js +19 -0
- package/cjs/lib/ast/nodes/interface.js +68 -0
- package/cjs/lib/ast/nodes/lambda-type.js +44 -0
- package/cjs/lib/ast/nodes/lambda.js +36 -0
- package/cjs/lib/ast/nodes/object.js +58 -0
- package/cjs/lib/ast/nodes/parameter.js +57 -0
- package/cjs/lib/ast/nodes/property.js +142 -0
- package/cjs/lib/ast/nodes/reference.js +79 -0
- package/cjs/lib/ast/nodes/string.js +87 -0
- package/cjs/lib/ast/nodes/types.js +2 -0
- package/cjs/lib/ast/references/index.js +12 -0
- package/cjs/lib/ast/references/jackson.js +12 -0
- package/cjs/lib/ast/references/jakarta.js +10 -0
- package/cjs/lib/ast/references/java.js +14 -0
- package/cjs/lib/ast/references/kotlin.js +27 -0
- package/cjs/lib/ast/references/okhttp3.js +7 -0
- package/cjs/lib/ast/references/reactor.js +6 -0
- package/cjs/lib/ast/references/spring.js +21 -0
- package/cjs/lib/ast/references/swagger.js +11 -0
- package/cjs/lib/ast/utils/get-kotlin-builder-options.js +19 -0
- package/cjs/lib/ast/utils/to-kt-node.js +22 -0
- package/cjs/lib/ast/utils/write-kt-annotations.js +13 -0
- package/cjs/lib/ast/utils/write-kt-arguments.js +33 -0
- package/cjs/lib/ast/utils/write-kt-enum-values.js +17 -0
- package/cjs/lib/ast/utils/write-kt-generic-parameters.js +12 -0
- package/cjs/lib/ast/utils/write-kt-members.js +16 -0
- package/cjs/lib/ast/utils/write-kt-node.js +24 -0
- package/cjs/lib/ast/utils/write-kt-parameters.js +13 -0
- package/cjs/lib/config.js +15 -1
- package/cjs/lib/file-builder.js +17 -2
- package/cjs/lib/generators/models/args.js +2 -0
- package/cjs/lib/generators/models/index.js +2 -0
- package/cjs/lib/generators/models/model-generator.js +281 -322
- package/cjs/lib/generators/services/okhttp3-clients/args.js +2 -0
- package/cjs/lib/generators/services/okhttp3-clients/index.js +2 -0
- package/cjs/lib/generators/services/okhttp3-clients/okhttp3-client-generator.js +240 -348
- package/cjs/lib/generators/services/okhttp3-clients/okhttp3-clients-generator.js +4 -1
- package/cjs/lib/generators/services/okhttp3-clients/refs.js +34 -0
- package/cjs/lib/generators/services/spring-controllers/args.js +2 -0
- package/cjs/lib/generators/services/spring-controllers/index.js +2 -0
- package/cjs/lib/generators/services/spring-controllers/spring-controller-generator.js +270 -346
- package/cjs/lib/import-collection.js +24 -15
- package/esm/index.js +3 -0
- package/esm/lib/ast/_index.js +27 -0
- package/esm/lib/ast/common.js +1 -0
- package/esm/lib/ast/index.js +2 -0
- package/esm/lib/ast/node.js +6 -0
- package/esm/lib/ast/nodes/annotation.js +35 -0
- package/esm/lib/ast/nodes/argument.js +28 -0
- package/esm/lib/ast/nodes/call.js +33 -0
- package/esm/lib/ast/nodes/class.js +90 -0
- package/esm/lib/ast/nodes/collection-literal.js +20 -0
- package/esm/lib/ast/nodes/constructor.js +71 -0
- package/esm/lib/ast/nodes/doc-tag.js +56 -0
- package/esm/lib/ast/nodes/doc.js +51 -0
- package/esm/lib/ast/nodes/enum-value.js +46 -0
- package/esm/lib/ast/nodes/enum.js +79 -0
- package/esm/lib/ast/nodes/function.js +101 -0
- package/esm/lib/ast/nodes/generic-parameter.js +25 -0
- package/esm/lib/ast/nodes/init-block.js +15 -0
- package/esm/lib/ast/nodes/interface.js +64 -0
- package/esm/lib/ast/nodes/lambda-type.js +40 -0
- package/esm/lib/ast/nodes/lambda.js +32 -0
- package/esm/lib/ast/nodes/object.js +54 -0
- package/esm/lib/ast/nodes/parameter.js +53 -0
- package/esm/lib/ast/nodes/property.js +135 -0
- package/esm/lib/ast/nodes/reference.js +75 -0
- package/esm/lib/ast/nodes/string.js +83 -0
- package/esm/lib/ast/nodes/types.js +1 -0
- package/esm/lib/ast/references/index.js +15 -0
- package/esm/lib/ast/references/jackson.js +9 -0
- package/esm/lib/ast/references/jakarta.js +7 -0
- package/esm/lib/ast/references/java.js +11 -0
- package/esm/lib/ast/references/kotlin.js +24 -0
- package/esm/lib/ast/references/okhttp3.js +4 -0
- package/esm/lib/ast/references/reactor.js +3 -0
- package/esm/lib/ast/references/spring.js +18 -0
- package/esm/lib/ast/references/swagger.js +8 -0
- package/esm/lib/ast/utils/get-kotlin-builder-options.js +15 -0
- package/esm/lib/ast/utils/to-kt-node.js +18 -0
- package/esm/lib/ast/utils/write-kt-annotations.js +9 -0
- package/esm/lib/ast/utils/write-kt-arguments.js +29 -0
- package/esm/lib/ast/utils/write-kt-enum-values.js +13 -0
- package/esm/lib/ast/utils/write-kt-generic-parameters.js +8 -0
- package/esm/lib/ast/utils/write-kt-members.js +12 -0
- package/esm/lib/ast/utils/write-kt-node.js +19 -0
- package/esm/lib/ast/utils/write-kt-parameters.js +9 -0
- package/esm/lib/config.js +15 -1
- package/esm/lib/file-builder.js +16 -2
- package/esm/lib/generators/models/args.js +1 -0
- package/esm/lib/generators/models/index.js +2 -0
- package/esm/lib/generators/models/model-generator.js +282 -323
- package/esm/lib/generators/services/okhttp3-clients/args.js +1 -0
- package/esm/lib/generators/services/okhttp3-clients/index.js +2 -0
- package/esm/lib/generators/services/okhttp3-clients/okhttp3-client-generator.js +242 -350
- package/esm/lib/generators/services/okhttp3-clients/okhttp3-clients-generator.js +4 -1
- package/esm/lib/generators/services/okhttp3-clients/refs.js +30 -0
- package/esm/lib/generators/services/spring-controllers/args.js +1 -0
- package/esm/lib/generators/services/spring-controllers/index.js +2 -0
- package/esm/lib/generators/services/spring-controllers/spring-controller-generator.js +269 -346
- package/esm/lib/import-collection.js +23 -14
- package/package.json +6 -6
- package/types/index.d.ts +2 -0
- package/types/lib/ast/_index.d.ts +28 -0
- package/types/lib/ast/common.d.ts +1 -0
- package/types/lib/ast/index.d.ts +1 -0
- package/types/lib/ast/node.d.ts +4 -0
- package/types/lib/ast/nodes/annotation.d.ts +23 -0
- package/types/lib/ast/nodes/argument.d.ts +22 -0
- package/types/lib/ast/nodes/call.d.ts +22 -0
- package/types/lib/ast/nodes/class.d.ts +54 -0
- package/types/lib/ast/nodes/collection-literal.d.ts +17 -0
- package/types/lib/ast/nodes/constructor.d.ts +34 -0
- package/types/lib/ast/nodes/doc-tag.d.ts +34 -0
- package/types/lib/ast/nodes/doc.d.ts +26 -0
- package/types/lib/ast/nodes/enum-value.d.ts +30 -0
- package/types/lib/ast/nodes/enum.d.ts +45 -0
- package/types/lib/ast/nodes/function.d.ts +58 -0
- package/types/lib/ast/nodes/generic-parameter.d.ts +21 -0
- package/types/lib/ast/nodes/init-block.d.ts +16 -0
- package/types/lib/ast/nodes/interface.d.ts +41 -0
- package/types/lib/ast/nodes/lambda-type.d.ts +21 -0
- package/types/lib/ast/nodes/lambda.d.ts +20 -0
- package/types/lib/ast/nodes/object.d.ts +34 -0
- package/types/lib/ast/nodes/parameter.d.ts +48 -0
- package/types/lib/ast/nodes/property.d.ts +87 -0
- package/types/lib/ast/nodes/reference.d.ts +63 -0
- package/types/lib/ast/nodes/string.d.ts +30 -0
- package/types/lib/ast/nodes/types.d.ts +10 -0
- package/types/lib/ast/references/index.d.ts +8 -0
- package/types/lib/ast/references/jackson.d.ts +77 -0
- package/types/lib/ast/references/jakarta.d.ts +33 -0
- package/types/lib/ast/references/java.d.ts +71 -0
- package/types/lib/ast/references/kotlin.d.ts +265 -0
- package/types/lib/ast/references/okhttp3.d.ts +22 -0
- package/types/lib/ast/references/reactor.d.ts +16 -0
- package/types/lib/ast/references/spring.d.ts +126 -0
- package/types/lib/ast/references/swagger.d.ts +44 -0
- package/types/lib/ast/utils/get-kotlin-builder-options.d.ts +3 -0
- package/types/lib/ast/utils/to-kt-node.d.ts +7 -0
- package/types/lib/ast/utils/write-kt-annotations.d.ts +5 -0
- package/types/lib/ast/utils/write-kt-arguments.d.ts +3 -0
- package/types/lib/ast/utils/write-kt-enum-values.d.ts +3 -0
- package/types/lib/ast/utils/write-kt-generic-parameters.d.ts +3 -0
- package/types/lib/ast/utils/write-kt-members.d.ts +5 -0
- package/types/lib/ast/utils/write-kt-node.d.ts +7 -0
- package/types/lib/ast/utils/write-kt-parameters.d.ts +3 -0
- package/types/lib/config.d.ts +4 -0
- package/types/lib/file-builder.d.ts +10 -3
- package/types/lib/generators/models/args.d.ts +99 -0
- package/types/lib/generators/models/index.d.ts +1 -0
- package/types/lib/generators/models/model-generator.d.ts +35 -32
- package/types/lib/generators/models/models.d.ts +4 -4
- package/types/lib/generators/services/okhttp3-clients/args.d.ts +66 -0
- package/types/lib/generators/services/okhttp3-clients/index.d.ts +1 -0
- package/types/lib/generators/services/okhttp3-clients/models.d.ts +2 -0
- package/types/lib/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts +25 -47
- package/types/lib/generators/services/okhttp3-clients/refs.d.ts +235 -0
- package/types/lib/generators/services/spring-controllers/args.d.ts +70 -0
- package/types/lib/generators/services/spring-controllers/index.d.ts +1 -0
- package/types/lib/generators/services/spring-controllers/spring-controller-generator.d.ts +37 -51
- package/types/lib/import-collection.d.ts +7 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { spliceString } from '@goast/core';
|
|
2
|
+
import { ktArgument } from './argument';
|
|
3
|
+
import { KtNode } from '../node';
|
|
4
|
+
import { writeKtNodes } from '../utils/write-kt-node';
|
|
5
|
+
export class KtString extends KtNode {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8
|
+
super(options);
|
|
9
|
+
this.value = (_a = options === null || options === void 0 ? void 0 : options.value) !== null && _a !== void 0 ? _a : null;
|
|
10
|
+
this.template = (_b = options === null || options === void 0 ? void 0 : options.template) !== null && _b !== void 0 ? _b : false;
|
|
11
|
+
this.multiline = (_c = options === null || options === void 0 ? void 0 : options.multiline) !== null && _c !== void 0 ? _c : false;
|
|
12
|
+
this.trimMargin = (_d = options === null || options === void 0 ? void 0 : options.trimMargin) !== null && _d !== void 0 ? _d : true;
|
|
13
|
+
this.marginPrefix = (_e = options === null || options === void 0 ? void 0 : options.marginPrefix) !== null && _e !== void 0 ? _e : null;
|
|
14
|
+
this.autoAddMarginPrefix = (_f = options === null || options === void 0 ? void 0 : options.autoAddMarginPrefix) !== null && _f !== void 0 ? _f : true;
|
|
15
|
+
}
|
|
16
|
+
onWrite(builder) {
|
|
17
|
+
if (this.value === null) {
|
|
18
|
+
builder.append('null');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let value = JSON.stringify(this.value).slice(1, -1);
|
|
22
|
+
if (this.multiline) {
|
|
23
|
+
value = value.replace(/\\n/g, '\n').replace(/\\r/g, '\r');
|
|
24
|
+
}
|
|
25
|
+
if (!this.template) {
|
|
26
|
+
value = value.replace(/\$/g, '\\$');
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const originalParts = this.findTemplateParts(this.value);
|
|
30
|
+
const escapedParts = this.findTemplateParts(value);
|
|
31
|
+
if (originalParts.length !== escapedParts.length) {
|
|
32
|
+
throw new Error('Template parts count mismatch');
|
|
33
|
+
}
|
|
34
|
+
for (let i = originalParts.length - 1; i >= 0; i--) {
|
|
35
|
+
const original = originalParts[i];
|
|
36
|
+
const escaped = escapedParts[i];
|
|
37
|
+
value = spliceString(value, escaped.index, escaped.value.length, original.value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
builder.append(this.multiline ? '"""' + (this.trimMargin ? '\n' : '') : '"');
|
|
41
|
+
if (this.multiline && this.trimMargin) {
|
|
42
|
+
builder.indent((b) => {
|
|
43
|
+
var _a;
|
|
44
|
+
if (this.autoAddMarginPrefix) {
|
|
45
|
+
b.appendWithLinePrefix((_a = this.marginPrefix) !== null && _a !== void 0 ? _a : '|', value);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
b.append(value);
|
|
49
|
+
}
|
|
50
|
+
b.append('\n""".trimMargin');
|
|
51
|
+
ktArgument.write(b, [this.marginPrefix ? new KtString({ value: this.marginPrefix }) : null]);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
builder.append(value, this.multiline ? '"""' : '"');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
findTemplateParts(value) {
|
|
59
|
+
const parts = [];
|
|
60
|
+
let start = undefined;
|
|
61
|
+
let bracketCount = 0;
|
|
62
|
+
for (let i = 0; i < value.length; i++) {
|
|
63
|
+
if (value[i] === '$' && value[i + 1] === '{') {
|
|
64
|
+
start = i;
|
|
65
|
+
}
|
|
66
|
+
else if (value[i] === '{') {
|
|
67
|
+
bracketCount++;
|
|
68
|
+
}
|
|
69
|
+
else if (value[i] === '}') {
|
|
70
|
+
bracketCount--;
|
|
71
|
+
if (bracketCount === 0 && start !== undefined) {
|
|
72
|
+
parts.push({ value: value.slice(start, i + 1), index: start });
|
|
73
|
+
start = undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return parts;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const createString = (value, options) => new KtString(Object.assign(Object.assign({}, options), { value }));
|
|
81
|
+
export const ktString = Object.assign(createString, {
|
|
82
|
+
write: writeKtNodes,
|
|
83
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as jackson_1 from './jackson';
|
|
2
|
+
export { jackson_1 as jackson };
|
|
3
|
+
import * as jakarta_1 from './jakarta';
|
|
4
|
+
export { jakarta_1 as jakarta };
|
|
5
|
+
import * as java_1 from './java';
|
|
6
|
+
export { java_1 as java };
|
|
7
|
+
export * from './kotlin';
|
|
8
|
+
import * as okhttp3_1 from './okhttp3';
|
|
9
|
+
export { okhttp3_1 as okhttp3 };
|
|
10
|
+
import * as reactor_1 from './reactor';
|
|
11
|
+
export { reactor_1 as reactor };
|
|
12
|
+
import * as spring_1 from './spring';
|
|
13
|
+
export { spring_1 as spring };
|
|
14
|
+
import * as swagger_1 from './swagger';
|
|
15
|
+
export { swagger_1 as swagger };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// com.fasterxml.jackson.annotation
|
|
3
|
+
export const jsonTypeInfo = ktReference.factory('JsonTypeInfo', 'com.fasterxml.jackson.annotation');
|
|
4
|
+
export const jsonSubTypes = ktReference.factory('JsonSubTypes', 'com.fasterxml.jackson.annotation');
|
|
5
|
+
export const jsonProperty = ktReference.factory('JsonProperty', 'com.fasterxml.jackson.annotation');
|
|
6
|
+
export const jsonInclude = ktReference.factory('JsonInclude', 'com.fasterxml.jackson.annotation');
|
|
7
|
+
export const jsonIgnore = ktReference.factory('JsonIgnore', 'com.fasterxml.jackson.annotation');
|
|
8
|
+
export const jsonAnySetter = ktReference.factory('JsonAnySetter', 'com.fasterxml.jackson.annotation');
|
|
9
|
+
export const jsonAnyGetter = ktReference.factory('JsonAnyGetter', 'com.fasterxml.jackson.annotation');
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// jakarta.annotation
|
|
3
|
+
export const generated = ktReference.factory('Generated', 'jakarta.annotation');
|
|
4
|
+
// jakarta.validation
|
|
5
|
+
export const valid = ktReference.factory('Valid', 'jakarta.validation');
|
|
6
|
+
// jakarta.validation.constraints
|
|
7
|
+
export const pattern = ktReference.factory('Pattern', 'jakarta.validation.constraints');
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// java.lang
|
|
3
|
+
export const system = ktReference.factory('System', 'java.lang');
|
|
4
|
+
export const illegalStateException = ktReference.factory('IllegalStateException', 'java.lang');
|
|
5
|
+
export const unsupportedOperationException = ktReference.factory('UnsupportedOperationException', 'java.lang');
|
|
6
|
+
// java.io
|
|
7
|
+
export const ioException = ktReference.factory('IOException', 'java.io');
|
|
8
|
+
// java.time
|
|
9
|
+
export const offsetDateTime = ktReference.factory('OffsetDateTime', 'java.time');
|
|
10
|
+
// java.util
|
|
11
|
+
export const optional = ktReference.genericFactory('Optional', 'java.util');
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// kotlin
|
|
3
|
+
export const any = ktReference.factory('Any', 'kotlin');
|
|
4
|
+
export const nothing = ktReference.factory('Nothing', 'kotlin');
|
|
5
|
+
export const unit = ktReference.factory('Unit', 'kotlin');
|
|
6
|
+
export const string = ktReference.factory('String', 'kotlin');
|
|
7
|
+
export const int = ktReference.factory('Int', 'kotlin');
|
|
8
|
+
export const long = ktReference.factory('Long', 'kotlin');
|
|
9
|
+
export const float = ktReference.factory('Float', 'kotlin');
|
|
10
|
+
export const double = ktReference.factory('Double', 'kotlin');
|
|
11
|
+
export const boolean = ktReference.factory('Boolean', 'kotlin');
|
|
12
|
+
export const lazyFun = ktReference.genericFactory('lazy', 'kotlin');
|
|
13
|
+
export const throws = ktReference.factory('Throws', 'kotlin');
|
|
14
|
+
// kotlin.collections
|
|
15
|
+
export const list = ktReference.genericFactory('List', 'kotlin.collections');
|
|
16
|
+
export const mutableList = ktReference.genericFactory('MutableList', 'kotlin.collections');
|
|
17
|
+
export const map = ktReference.genericFactory('Map', 'kotlin.collections');
|
|
18
|
+
export const mutableMap = ktReference.genericFactory('MutableMap', 'kotlin.collections');
|
|
19
|
+
export const listOf = ktReference.genericFactory('listOf', 'kotlin.collections');
|
|
20
|
+
export const mutableListOf = ktReference.genericFactory('mutableListOf', 'kotlin.collections');
|
|
21
|
+
export const mapOf = ktReference.genericFactory('mapOf', 'kotlin.collections');
|
|
22
|
+
export const mutableMapOf = ktReference.genericFactory('mutableMapOf', 'kotlin.collections');
|
|
23
|
+
// kotlin.jvm
|
|
24
|
+
export const jvmStatic = ktReference.factory('JvmStatic', 'kotlin.jvm');
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// org.springframework.web.bind.annotation
|
|
3
|
+
export const requestMapping = ktReference.factory('RequestMapping', 'org.springframework.web.bind.annotation');
|
|
4
|
+
export const requestBody = ktReference.factory('RequestBody', 'org.springframework.web.bind.annotation');
|
|
5
|
+
export const requestParam = ktReference.factory('RequestParam', 'org.springframework.web.bind.annotation');
|
|
6
|
+
export const requestMethod = ktReference.factory('RequestMethod', 'org.springframework.web.bind.annotation');
|
|
7
|
+
export const pathVariable = ktReference.factory('PathVariable', 'org.springframework.web.bind.annotation');
|
|
8
|
+
// org.springframework.web.context.request
|
|
9
|
+
export const nativeWebRequest = ktReference.factory('NativeWebRequest', 'org.springframework.web.context.request');
|
|
10
|
+
// org.springframework.beans.factory.annotation
|
|
11
|
+
export const autowired = ktReference.factory('Autowired', 'org.springframework.beans.factory.annotation');
|
|
12
|
+
// org.springframework.validation.annotation
|
|
13
|
+
export const validated = ktReference.factory('Validated', 'org.springframework.validation.annotation');
|
|
14
|
+
// org.springframework.http
|
|
15
|
+
export const responseEntity = ktReference.genericFactory('ResponseEntity', 'org.springframework.http');
|
|
16
|
+
export const httpStatus = ktReference.factory('HttpStatus', 'org.springframework.http');
|
|
17
|
+
// org.springframework.stereotype
|
|
18
|
+
export const controller = ktReference.factory('Controller', 'org.springframework.stereotype');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ktReference } from '../nodes/reference';
|
|
2
|
+
// io.swagger.v3.oas.annotations
|
|
3
|
+
export const parameter = ktReference.factory('Parameter', 'io.swagger.v3.oas.annotations');
|
|
4
|
+
export const operation = ktReference.factory('Operation', 'io.swagger.v3.oas.annotations');
|
|
5
|
+
// io.swagger.v3.oas.annotations.media
|
|
6
|
+
export const schema = ktReference.factory('Schema', 'io.swagger.v3.oas.annotations.media');
|
|
7
|
+
// io.swagger.v3.oas.annotations.responses
|
|
8
|
+
export const apiResponse = ktReference.factory('ApiResponse', 'io.swagger.v3.oas.annotations.responses');
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defaultOpenApiGeneratorConfig } from '@goast/core';
|
|
2
|
+
import { defaultKotlinGeneratorConfig } from '../../config';
|
|
3
|
+
import { KotlinFileBuilder } from '../../file-builder';
|
|
4
|
+
const ktConfigSymbol = Symbol();
|
|
5
|
+
export function getKotlinBuilderOptions(builder) {
|
|
6
|
+
if (builder instanceof KotlinFileBuilder) {
|
|
7
|
+
return builder.options;
|
|
8
|
+
}
|
|
9
|
+
if (ktConfigSymbol in builder.options) {
|
|
10
|
+
return builder.options[ktConfigSymbol];
|
|
11
|
+
}
|
|
12
|
+
const options = Object.assign(Object.assign(Object.assign({}, defaultOpenApiGeneratorConfig), defaultKotlinGeneratorConfig), builder.options);
|
|
13
|
+
builder[ktConfigSymbol] = options;
|
|
14
|
+
return options;
|
|
15
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ktCall } from '../nodes/call';
|
|
2
|
+
import { ktString } from '../nodes/string';
|
|
3
|
+
import { listOf, mapOf } from '../references';
|
|
4
|
+
export function toKtNode(value) {
|
|
5
|
+
if (Array.isArray(value)) {
|
|
6
|
+
return ktCall([listOf.infer()], value.map((x) => toKtNode(x)));
|
|
7
|
+
}
|
|
8
|
+
if (typeof value === 'object' && value !== null) {
|
|
9
|
+
return ktCall([mapOf.infer()], Object.entries(value).map(([k, v]) => ktCall([toKtNode(k), 'to'], [toKtNode(v)])));
|
|
10
|
+
}
|
|
11
|
+
if (value === null || value === undefined) {
|
|
12
|
+
return 'null';
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'boolean' || typeof value === 'number') {
|
|
15
|
+
return String(value);
|
|
16
|
+
}
|
|
17
|
+
return ktString(String(value));
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { toArray, notNullish } from '@goast/core';
|
|
2
|
+
import { writeKtNode } from './write-kt-node';
|
|
3
|
+
export function writeKtAnnotations(builder, nodes, options) {
|
|
4
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
5
|
+
builder.forEach(filteredNodes, (b, a) => {
|
|
6
|
+
writeKtNode(b, a);
|
|
7
|
+
b.append((options === null || options === void 0 ? void 0 : options.multiline) ? '\n' : ' ');
|
|
8
|
+
});
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { notNullish, toArray } from '@goast/core';
|
|
2
|
+
import { writeKtNode, writeKtNodes } from './write-kt-node';
|
|
3
|
+
import { KtLambda } from '../nodes/lambda';
|
|
4
|
+
export function writeKtArguments(builder, nodes) {
|
|
5
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
6
|
+
if (filteredNodes.length === 0) {
|
|
7
|
+
builder.append('()');
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const lastNode = filteredNodes[filteredNodes.length - 1];
|
|
11
|
+
let lambda = null;
|
|
12
|
+
if (lastNode instanceof KtLambda) {
|
|
13
|
+
lambda = lastNode;
|
|
14
|
+
filteredNodes.pop();
|
|
15
|
+
}
|
|
16
|
+
else if (typeof lastNode === 'object' &&
|
|
17
|
+
(!('name' in lastNode) || !lastNode.name) &&
|
|
18
|
+
'value' in lastNode &&
|
|
19
|
+
lastNode.value instanceof KtLambda) {
|
|
20
|
+
lambda = lastNode.value;
|
|
21
|
+
filteredNodes.pop();
|
|
22
|
+
}
|
|
23
|
+
const multiline = filteredNodes.length > 3;
|
|
24
|
+
builder.parenthesizeIf(filteredNodes.length > 0, '()', (b) => writeKtNodes(b, filteredNodes, { separator: multiline ? ',\n' : ', ' }), { multiline });
|
|
25
|
+
if (lambda) {
|
|
26
|
+
builder.append(' ');
|
|
27
|
+
writeKtNode(builder, lambda);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { toArray, notNullish } from '@goast/core';
|
|
2
|
+
import { writeKtNode } from './write-kt-node';
|
|
3
|
+
export function writeKtEnumValues(builder, nodes) {
|
|
4
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
5
|
+
const spacing = filteredNodes.some((v) => typeof v === 'object' &&
|
|
6
|
+
(('annotations' in v && Array.isArray(v.annotations) && v.annotations.length > 0) ||
|
|
7
|
+
('doc' in v && v.doc) ||
|
|
8
|
+
('members' in v && Array.isArray(v.members) && v.members.some(notNullish))));
|
|
9
|
+
const multiline = spacing ||
|
|
10
|
+
filteredNodes.length > 4 ||
|
|
11
|
+
filteredNodes.some((v) => typeof v === 'object' && 'arguments' in v && Array.isArray(v.arguments) && v.arguments.length > 0);
|
|
12
|
+
builder.forEach(filteredNodes, (b, v, i) => b.if(spacing && i > 0, (b) => b.ensurePreviousLineEmpty()).append((b) => writeKtNode(b, v)), { separator: multiline ? ',\n' : ', ' });
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { toArray, notNullish } from '@goast/core';
|
|
2
|
+
import { writeKtNode } from './write-kt-node';
|
|
3
|
+
export function writeKtGenericParameters(builder, nodes) {
|
|
4
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
5
|
+
if (filteredNodes.length === 0)
|
|
6
|
+
return;
|
|
7
|
+
builder.parenthesize('<>', (b) => b.forEach(filteredNodes, writeKtNode, { separator: ', ' }));
|
|
8
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { notNullish, isAppendValue, isAppendValueGroup } from '@goast/core';
|
|
2
|
+
import { writeKtNode } from './write-kt-node';
|
|
3
|
+
import { KtProperty } from '../nodes/property';
|
|
4
|
+
export function writeKtMembers(builder, members, options) {
|
|
5
|
+
const filteredMembers = members.filter(notNullish);
|
|
6
|
+
builder.forEach(filteredMembers, (b, m, i) => b.if(() => !(m instanceof KtProperty && !m.doc && m.annotations.length === 0) &&
|
|
7
|
+
!isAppendValue(m) &&
|
|
8
|
+
!isAppendValueGroup(m), (b) => b
|
|
9
|
+
.if(i > 0 || !!(options === null || options === void 0 ? void 0 : options.alreadyHasMembers), (b) => b.ensurePreviousLineEmpty())
|
|
10
|
+
.append((b) => writeKtNode(b, m))
|
|
11
|
+
.if(i < filteredMembers.length - 1, (b) => b.ensurePreviousLineEmpty()), (b) => b.append((b) => writeKtNode(b, m)).ensureCurrentLineEmpty()));
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { toArray, notNullish } from '@goast/core';
|
|
2
|
+
import { KtNode } from '../node';
|
|
3
|
+
export function writeKtNode(builder, node) {
|
|
4
|
+
if (node instanceof KtNode) {
|
|
5
|
+
node.write(builder);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
builder.append(node);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function writeKtNodes(builder, nodes, options) {
|
|
12
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
13
|
+
if (filteredNodes.length === 1) {
|
|
14
|
+
writeKtNode(builder, filteredNodes[0]);
|
|
15
|
+
}
|
|
16
|
+
else if (filteredNodes.length > 1) {
|
|
17
|
+
builder.forEach(filteredNodes, writeKtNode, { separator: options === null || options === void 0 ? void 0 : options.separator });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { toArray, notNullish } from '@goast/core';
|
|
2
|
+
import { writeKtNode } from './write-kt-node';
|
|
3
|
+
export function writeKtParameters(builder, nodes) {
|
|
4
|
+
const filteredNodes = toArray(nodes).filter(notNullish);
|
|
5
|
+
const hasAnnotations = filteredNodes.some((p) => typeof p === 'object' && 'annotations' in p && Array.isArray(p.annotations) && p.annotations.length > 0);
|
|
6
|
+
const multiline = filteredNodes.length > 2 || hasAnnotations;
|
|
7
|
+
const spacing = multiline && hasAnnotations;
|
|
8
|
+
builder.parenthesize('()', (b) => b.forEach(filteredNodes, (b, p, i) => b.if(i > 0 && spacing, (b) => b.ensurePreviousLineEmpty()).append((b) => writeKtNode(b, p)), { separator: multiline ? ',\n' : ', ' }), { multiline });
|
|
9
|
+
}
|
package/esm/lib/config.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
export const defaultKotlinGeneratorConfig = {
|
|
2
|
-
charsTreatedAsEmptyLine: ['{'],
|
|
3
2
|
indent: { type: 'spaces', count: 4 },
|
|
3
|
+
typeNameCasing: 'pascal',
|
|
4
|
+
parameterNameCasing: 'camel',
|
|
5
|
+
functionNameCasing: 'camel',
|
|
4
6
|
propertyNameCasing: 'camel',
|
|
5
7
|
enumValueNameCasing: 'snake',
|
|
8
|
+
globalImports: [
|
|
9
|
+
'kotlin.*',
|
|
10
|
+
'kotlin.annotation.*',
|
|
11
|
+
'kotlin.collections.*',
|
|
12
|
+
'kotlin.comparisons.*',
|
|
13
|
+
'kotlin.io.*',
|
|
14
|
+
'kotlin.ranges.*',
|
|
15
|
+
'kotlin.sequences.*',
|
|
16
|
+
'kotlin.text.*',
|
|
17
|
+
'java.lang.*',
|
|
18
|
+
'kotlin.jvm.*',
|
|
19
|
+
],
|
|
6
20
|
};
|
package/esm/lib/file-builder.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import { SourceBuilder } from '@goast/core';
|
|
1
|
+
import { SourceBuilder, isAppendValue } from '@goast/core';
|
|
2
|
+
import { KtNode } from './ast/node';
|
|
3
|
+
import { defaultKotlinGeneratorConfig } from './config';
|
|
2
4
|
import { ImportCollection } from './import-collection';
|
|
5
|
+
export function isKotlinAppendValue(value) {
|
|
6
|
+
return isAppendValue(value) || value instanceof KtNode;
|
|
7
|
+
}
|
|
3
8
|
export class KotlinFileBuilder extends SourceBuilder {
|
|
9
|
+
get options() {
|
|
10
|
+
return super.options;
|
|
11
|
+
}
|
|
4
12
|
constructor(packageName, options) {
|
|
5
|
-
super(options);
|
|
13
|
+
super(options !== null && options !== void 0 ? options : defaultKotlinGeneratorConfig);
|
|
6
14
|
this.imports = new ImportCollection();
|
|
7
15
|
this.packageName = packageName;
|
|
8
16
|
}
|
|
@@ -56,4 +64,10 @@ export class KotlinFileBuilder extends SourceBuilder {
|
|
|
56
64
|
.if(addPadding, (builder) => builder.ensureCurrentLineEmpty())
|
|
57
65
|
.toString();
|
|
58
66
|
}
|
|
67
|
+
appendSingle(value) {
|
|
68
|
+
super.appendSingle(value);
|
|
69
|
+
if (value instanceof KtNode) {
|
|
70
|
+
value.write(this);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
59
73
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|