@goast/kotlin 0.1.18 → 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.
Files changed (179) hide show
  1. package/cjs/index.js +3 -0
  2. package/cjs/lib/ast/_index.js +81 -0
  3. package/cjs/lib/ast/common.js +2 -0
  4. package/cjs/lib/ast/index.js +5 -0
  5. package/cjs/lib/ast/node.js +10 -0
  6. package/cjs/lib/ast/nodes/annotation.js +39 -0
  7. package/cjs/lib/ast/nodes/argument.js +32 -0
  8. package/cjs/lib/ast/nodes/call.js +37 -0
  9. package/cjs/lib/ast/nodes/class.js +94 -0
  10. package/cjs/lib/ast/nodes/collection-literal.js +24 -0
  11. package/cjs/lib/ast/nodes/constructor.js +75 -0
  12. package/cjs/lib/ast/nodes/doc-tag.js +60 -0
  13. package/cjs/lib/ast/nodes/doc.js +55 -0
  14. package/cjs/lib/ast/nodes/enum-value.js +50 -0
  15. package/cjs/lib/ast/nodes/enum.js +83 -0
  16. package/cjs/lib/ast/nodes/function.js +105 -0
  17. package/cjs/lib/ast/nodes/generic-parameter.js +29 -0
  18. package/cjs/lib/ast/nodes/init-block.js +19 -0
  19. package/cjs/lib/ast/nodes/interface.js +68 -0
  20. package/cjs/lib/ast/nodes/lambda-type.js +44 -0
  21. package/cjs/lib/ast/nodes/lambda.js +36 -0
  22. package/cjs/lib/ast/nodes/object.js +58 -0
  23. package/cjs/lib/ast/nodes/parameter.js +57 -0
  24. package/cjs/lib/ast/nodes/property.js +142 -0
  25. package/cjs/lib/ast/nodes/reference.js +79 -0
  26. package/cjs/lib/ast/nodes/string.js +87 -0
  27. package/cjs/lib/ast/nodes/types.js +2 -0
  28. package/cjs/lib/ast/references/index.js +12 -0
  29. package/cjs/lib/ast/references/jackson.js +12 -0
  30. package/cjs/lib/ast/references/jakarta.js +10 -0
  31. package/cjs/lib/ast/references/java.js +14 -0
  32. package/cjs/lib/ast/references/kotlin.js +27 -0
  33. package/cjs/lib/ast/references/okhttp3.js +7 -0
  34. package/cjs/lib/ast/references/reactor.js +6 -0
  35. package/cjs/lib/ast/references/spring.js +21 -0
  36. package/cjs/lib/ast/references/swagger.js +11 -0
  37. package/cjs/lib/ast/utils/get-kotlin-builder-options.js +19 -0
  38. package/cjs/lib/ast/utils/to-kt-node.js +22 -0
  39. package/cjs/lib/ast/utils/write-kt-annotations.js +13 -0
  40. package/cjs/lib/ast/utils/write-kt-arguments.js +33 -0
  41. package/cjs/lib/ast/utils/write-kt-enum-values.js +17 -0
  42. package/cjs/lib/ast/utils/write-kt-generic-parameters.js +12 -0
  43. package/cjs/lib/ast/utils/write-kt-members.js +16 -0
  44. package/cjs/lib/ast/utils/write-kt-node.js +24 -0
  45. package/cjs/lib/ast/utils/write-kt-parameters.js +13 -0
  46. package/cjs/lib/config.js +15 -1
  47. package/cjs/lib/file-builder.js +17 -2
  48. package/cjs/lib/generators/models/args.js +2 -0
  49. package/cjs/lib/generators/models/index.js +2 -0
  50. package/cjs/lib/generators/models/model-generator.js +277 -322
  51. package/cjs/lib/generators/services/okhttp3-clients/args.js +2 -0
  52. package/cjs/lib/generators/services/okhttp3-clients/index.js +2 -0
  53. package/cjs/lib/generators/services/okhttp3-clients/okhttp3-client-generator.js +240 -348
  54. package/cjs/lib/generators/services/okhttp3-clients/okhttp3-clients-generator.js +4 -1
  55. package/cjs/lib/generators/services/okhttp3-clients/refs.js +34 -0
  56. package/cjs/lib/generators/services/spring-controllers/args.js +2 -0
  57. package/cjs/lib/generators/services/spring-controllers/index.js +2 -0
  58. package/cjs/lib/generators/services/spring-controllers/spring-controller-generator.js +270 -346
  59. package/cjs/lib/import-collection.js +24 -15
  60. package/esm/index.js +3 -0
  61. package/esm/lib/ast/_index.js +27 -0
  62. package/esm/lib/ast/common.js +1 -0
  63. package/esm/lib/ast/index.js +2 -0
  64. package/esm/lib/ast/node.js +6 -0
  65. package/esm/lib/ast/nodes/annotation.js +35 -0
  66. package/esm/lib/ast/nodes/argument.js +28 -0
  67. package/esm/lib/ast/nodes/call.js +33 -0
  68. package/esm/lib/ast/nodes/class.js +90 -0
  69. package/esm/lib/ast/nodes/collection-literal.js +20 -0
  70. package/esm/lib/ast/nodes/constructor.js +71 -0
  71. package/esm/lib/ast/nodes/doc-tag.js +56 -0
  72. package/esm/lib/ast/nodes/doc.js +51 -0
  73. package/esm/lib/ast/nodes/enum-value.js +46 -0
  74. package/esm/lib/ast/nodes/enum.js +79 -0
  75. package/esm/lib/ast/nodes/function.js +101 -0
  76. package/esm/lib/ast/nodes/generic-parameter.js +25 -0
  77. package/esm/lib/ast/nodes/init-block.js +15 -0
  78. package/esm/lib/ast/nodes/interface.js +64 -0
  79. package/esm/lib/ast/nodes/lambda-type.js +40 -0
  80. package/esm/lib/ast/nodes/lambda.js +32 -0
  81. package/esm/lib/ast/nodes/object.js +54 -0
  82. package/esm/lib/ast/nodes/parameter.js +53 -0
  83. package/esm/lib/ast/nodes/property.js +135 -0
  84. package/esm/lib/ast/nodes/reference.js +75 -0
  85. package/esm/lib/ast/nodes/string.js +83 -0
  86. package/esm/lib/ast/nodes/types.js +1 -0
  87. package/esm/lib/ast/references/index.js +15 -0
  88. package/esm/lib/ast/references/jackson.js +9 -0
  89. package/esm/lib/ast/references/jakarta.js +7 -0
  90. package/esm/lib/ast/references/java.js +11 -0
  91. package/esm/lib/ast/references/kotlin.js +24 -0
  92. package/esm/lib/ast/references/okhttp3.js +4 -0
  93. package/esm/lib/ast/references/reactor.js +3 -0
  94. package/esm/lib/ast/references/spring.js +18 -0
  95. package/esm/lib/ast/references/swagger.js +8 -0
  96. package/esm/lib/ast/utils/get-kotlin-builder-options.js +15 -0
  97. package/esm/lib/ast/utils/to-kt-node.js +18 -0
  98. package/esm/lib/ast/utils/write-kt-annotations.js +9 -0
  99. package/esm/lib/ast/utils/write-kt-arguments.js +29 -0
  100. package/esm/lib/ast/utils/write-kt-enum-values.js +13 -0
  101. package/esm/lib/ast/utils/write-kt-generic-parameters.js +8 -0
  102. package/esm/lib/ast/utils/write-kt-members.js +12 -0
  103. package/esm/lib/ast/utils/write-kt-node.js +19 -0
  104. package/esm/lib/ast/utils/write-kt-parameters.js +9 -0
  105. package/esm/lib/config.js +15 -1
  106. package/esm/lib/file-builder.js +16 -2
  107. package/esm/lib/generators/models/args.js +1 -0
  108. package/esm/lib/generators/models/index.js +2 -0
  109. package/esm/lib/generators/models/model-generator.js +278 -323
  110. package/esm/lib/generators/services/okhttp3-clients/args.js +1 -0
  111. package/esm/lib/generators/services/okhttp3-clients/index.js +2 -0
  112. package/esm/lib/generators/services/okhttp3-clients/okhttp3-client-generator.js +242 -350
  113. package/esm/lib/generators/services/okhttp3-clients/okhttp3-clients-generator.js +4 -1
  114. package/esm/lib/generators/services/okhttp3-clients/refs.js +30 -0
  115. package/esm/lib/generators/services/spring-controllers/args.js +1 -0
  116. package/esm/lib/generators/services/spring-controllers/index.js +2 -0
  117. package/esm/lib/generators/services/spring-controllers/spring-controller-generator.js +269 -346
  118. package/esm/lib/import-collection.js +23 -14
  119. package/package.json +6 -6
  120. package/types/index.d.ts +2 -0
  121. package/types/lib/ast/_index.d.ts +28 -0
  122. package/types/lib/ast/common.d.ts +1 -0
  123. package/types/lib/ast/index.d.ts +1 -0
  124. package/types/lib/ast/node.d.ts +4 -0
  125. package/types/lib/ast/nodes/annotation.d.ts +23 -0
  126. package/types/lib/ast/nodes/argument.d.ts +22 -0
  127. package/types/lib/ast/nodes/call.d.ts +22 -0
  128. package/types/lib/ast/nodes/class.d.ts +54 -0
  129. package/types/lib/ast/nodes/collection-literal.d.ts +17 -0
  130. package/types/lib/ast/nodes/constructor.d.ts +34 -0
  131. package/types/lib/ast/nodes/doc-tag.d.ts +34 -0
  132. package/types/lib/ast/nodes/doc.d.ts +26 -0
  133. package/types/lib/ast/nodes/enum-value.d.ts +30 -0
  134. package/types/lib/ast/nodes/enum.d.ts +45 -0
  135. package/types/lib/ast/nodes/function.d.ts +58 -0
  136. package/types/lib/ast/nodes/generic-parameter.d.ts +21 -0
  137. package/types/lib/ast/nodes/init-block.d.ts +16 -0
  138. package/types/lib/ast/nodes/interface.d.ts +41 -0
  139. package/types/lib/ast/nodes/lambda-type.d.ts +21 -0
  140. package/types/lib/ast/nodes/lambda.d.ts +20 -0
  141. package/types/lib/ast/nodes/object.d.ts +34 -0
  142. package/types/lib/ast/nodes/parameter.d.ts +48 -0
  143. package/types/lib/ast/nodes/property.d.ts +87 -0
  144. package/types/lib/ast/nodes/reference.d.ts +63 -0
  145. package/types/lib/ast/nodes/string.d.ts +30 -0
  146. package/types/lib/ast/nodes/types.d.ts +10 -0
  147. package/types/lib/ast/references/index.d.ts +8 -0
  148. package/types/lib/ast/references/jackson.d.ts +77 -0
  149. package/types/lib/ast/references/jakarta.d.ts +33 -0
  150. package/types/lib/ast/references/java.d.ts +71 -0
  151. package/types/lib/ast/references/kotlin.d.ts +265 -0
  152. package/types/lib/ast/references/okhttp3.d.ts +22 -0
  153. package/types/lib/ast/references/reactor.d.ts +16 -0
  154. package/types/lib/ast/references/spring.d.ts +126 -0
  155. package/types/lib/ast/references/swagger.d.ts +44 -0
  156. package/types/lib/ast/utils/get-kotlin-builder-options.d.ts +3 -0
  157. package/types/lib/ast/utils/to-kt-node.d.ts +7 -0
  158. package/types/lib/ast/utils/write-kt-annotations.d.ts +5 -0
  159. package/types/lib/ast/utils/write-kt-arguments.d.ts +3 -0
  160. package/types/lib/ast/utils/write-kt-enum-values.d.ts +3 -0
  161. package/types/lib/ast/utils/write-kt-generic-parameters.d.ts +3 -0
  162. package/types/lib/ast/utils/write-kt-members.d.ts +5 -0
  163. package/types/lib/ast/utils/write-kt-node.d.ts +7 -0
  164. package/types/lib/ast/utils/write-kt-parameters.d.ts +3 -0
  165. package/types/lib/config.d.ts +4 -0
  166. package/types/lib/file-builder.d.ts +10 -3
  167. package/types/lib/generators/models/args.d.ts +99 -0
  168. package/types/lib/generators/models/index.d.ts +1 -0
  169. package/types/lib/generators/models/model-generator.d.ts +35 -32
  170. package/types/lib/generators/models/models.d.ts +4 -4
  171. package/types/lib/generators/services/okhttp3-clients/args.d.ts +66 -0
  172. package/types/lib/generators/services/okhttp3-clients/index.d.ts +1 -0
  173. package/types/lib/generators/services/okhttp3-clients/models.d.ts +2 -0
  174. package/types/lib/generators/services/okhttp3-clients/okhttp3-client-generator.d.ts +25 -47
  175. package/types/lib/generators/services/okhttp3-clients/refs.d.ts +235 -0
  176. package/types/lib/generators/services/spring-controllers/args.d.ts +70 -0
  177. package/types/lib/generators/services/spring-controllers/index.d.ts +1 -0
  178. package/types/lib/generators/services/spring-controllers/spring-controller-generator.d.ts +37 -51
  179. package/types/lib/import-collection.d.ts +7 -1
@@ -1,7 +1,12 @@
1
1
  import { StringBuilder } from '@goast/core';
2
+ import { defaultKotlinGeneratorConfig } from './config';
3
+ export const defaultImportCollectionOptions = {
4
+ globalImports: defaultKotlinGeneratorConfig.globalImports,
5
+ };
2
6
  export class ImportCollection {
3
- constructor() {
7
+ constructor(options = {}) {
4
8
  this._imports = new Map();
9
+ this._options = Object.assign(Object.assign({}, defaultImportCollectionOptions), options);
5
10
  }
6
11
  get hasImports() {
7
12
  return this._imports.size > 0;
@@ -43,24 +48,28 @@ export class ImportCollection {
43
48
  }
44
49
  writeTo(builder) {
45
50
  if (this._imports.size > 0) {
46
- const sortedImports = Array.from(this._imports.entries()).sort(([fromModuleA], [fromModuleB]) => {
47
- if (isCoreImport(fromModuleA) && !isCoreImport(fromModuleB)) {
51
+ const globalPackages = this._options.globalImports
52
+ .filter((g) => g.endsWith('.*'))
53
+ .map((g) => g.substring(0, g.length - 2));
54
+ const globalImports = this._options.globalImports.filter((g) => !g.endsWith('.*'));
55
+ Array.from(this._imports.entries())
56
+ .filter(([packageName]) => !globalPackages.includes(packageName))
57
+ .flatMap(([packageName, importNames]) => Array.from(importNames).map((importName) => [packageName, importName]))
58
+ .map(([packageName, importName]) => `${packageName}.${importName}`)
59
+ .filter((importPath) => !globalImports.includes(importPath))
60
+ .sort((a, b) => {
61
+ if (isCoreImport(a) && !isCoreImport(b)) {
48
62
  return 1;
49
63
  }
50
- else if (!isCoreImport(fromModuleA) && isCoreImport(fromModuleB)) {
64
+ else if (!isCoreImport(a) && isCoreImport(b)) {
51
65
  return -1;
52
66
  }
53
- return fromModuleA.localeCompare(fromModuleB);
54
- });
55
- for (const [fromPackage, importNames] of sortedImports) {
56
- const sortedImportNames = Array.from(importNames).sort();
57
- for (const importName of sortedImportNames) {
58
- builder.appendLine(`import ${fromPackage}.${importName}`);
59
- }
60
- }
67
+ return a.localeCompare(b);
68
+ })
69
+ .forEach((importPath) => builder.appendLine(`import ${importPath}`));
61
70
  }
62
71
  }
63
72
  }
64
- function isCoreImport(packageName) {
65
- return packageName.startsWith('kotlin.') || packageName.startsWith('java.') || packageName.startsWith('javax.');
73
+ function isCoreImport(importPath) {
74
+ return importPath.startsWith('kotlin.') || importPath.startsWith('java.') || importPath.startsWith('javax.');
66
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goast/kotlin",
3
- "version": "0.1.18",
3
+ "version": "0.2.0",
4
4
  "repository": "https://github.com/MaSch0212/goast.git",
5
5
  "author": {
6
6
  "name": "Marc Schmidt (MaSch0212)",
@@ -9,11 +9,11 @@
9
9
  "license": "MIT",
10
10
  "type": "module",
11
11
  "dependencies": {
12
- "fs-extra": "^11.1.1",
13
- "node-fetch": "^2.6.11",
14
- "yaml": "^2.3.1",
15
- "@goast/core": "0.1.1",
16
- "tslib": "^2.3.0"
12
+ "fs-extra": "^11.2.0",
13
+ "node-fetch": "^2.7.0",
14
+ "yaml": "^2.4.1",
15
+ "@goast/core": "0.2.0",
16
+ "tslib": "2.6.2"
17
17
  },
18
18
  "module": "./esm/index.js",
19
19
  "main": "./cjs/index.js",
package/types/index.d.ts CHANGED
@@ -4,3 +4,5 @@ export * from './lib/generators';
4
4
  export * from './lib/file-builder';
5
5
  export * from './lib/import-collection';
6
6
  export * from './lib/utils';
7
+ export * from './lib/ast';
8
+ export * as kt from './lib/ast/references';
@@ -0,0 +1,28 @@
1
+ export { KtAccessModifier as AccessModifier } from './common';
2
+ export { KtNode as Node } from './node';
3
+ export { KtAnnotation as Annotation, KtAnnotationTarget as AnnotationTarget, ktAnnotation as annotation, } from './nodes/annotation';
4
+ export { KtArgument as Argument, ktArgument as argument } from './nodes/argument';
5
+ export { KtCall as Call, ktCall as call } from './nodes/call';
6
+ export { KtClass as Class, KtClassKind as ClassKind, KtClassMember as ClassMember, ktClass as class, } from './nodes/class';
7
+ export { KtCollectionLiteral as CollectionLiteral, ktCollectionLiteral as collectionLiteral, } from './nodes/collection-literal';
8
+ export { KtConstructor as Constructor, KtDelegateTarget as DelegateTarget, ktConstructor as constructor, } from './nodes/constructor';
9
+ export { KtDoc as Doc, ktDoc as doc } from './nodes/doc';
10
+ export { KtDocTag as DocTag, ktDocTag as docTag } from './nodes/doc-tag';
11
+ export { KtEnum as Enum, KtEnumMember as EnumMember, ktEnum as enum } from './nodes/enum';
12
+ export { KtEnumValue as EnumValue, KtEnumValueMember as EnumValueMember, ktEnumValue as enumValue, } from './nodes/enum-value';
13
+ export { KtFunction as Function, ktFunction as function } from './nodes/function';
14
+ export { KtGenericParameter as GenericParameter, ktGenericParameter as genericParameter, } from './nodes/generic-parameter';
15
+ export { KtInitBlock as InitBlock, ktInitBlock as initBlock } from './nodes/init-block';
16
+ export { KtInterface as Interface, KtInterfaceMember as InterfaceMember, ktInterface as interface, } from './nodes/interface';
17
+ export { KtLambda as Lambda, ktLambda as lambda } from './nodes/lambda';
18
+ export { KtLambdaType as LambdaType, ktLambdaType as lambdaType } from './nodes/lambda-type';
19
+ export { KtObject as Object, KtObjectMember as ObjectMember, ktObject as object } from './nodes/object';
20
+ export { KtParameter as Parameter, ktParameter as parameter } from './nodes/parameter';
21
+ export { KtProperty as Property, KtPropertyAccessor as PropertyAccessor, KtPropertyGetter as PropertyGetter, KtPropertySetter as PropertySetter, ktProperty as property, } from './nodes/property';
22
+ export { KtReference as Reference, ktReference as reference } from './nodes/reference';
23
+ export { KtString as String, ktString as string } from './nodes/string';
24
+ export { KtType as Type, KtValue as Value } from './nodes/types';
25
+ export * as refs from './references';
26
+ export { getKotlinBuilderOptions as getBuilderOptions } from './utils/get-kotlin-builder-options';
27
+ export { toKtNode as toNode } from './utils/to-kt-node';
28
+ export { writeKtNode as writeNode, writeKtNodes as writeNodes } from './utils/write-kt-node';
@@ -0,0 +1 @@
1
+ export type KtAccessModifier = 'public' | 'protected' | 'internal' | 'private';
@@ -0,0 +1 @@
1
+ export * as kt from './_index';
@@ -0,0 +1,4 @@
1
+ import { AstNode, AstNodeOptions, SourceBuilder } from '@goast/core';
2
+ export declare abstract class KtNode<TBuilder extends SourceBuilder, TInjects extends string = never> extends AstNode<TBuilder, TInjects> {
3
+ constructor(options: AstNodeOptions<typeof AstNode<TBuilder, TInjects>>);
4
+ }
@@ -0,0 +1,23 @@
1
+ import { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtArgument } from './argument';
3
+ import { KtType, KtValue } from './types';
4
+ import { KtNode } from '../node';
5
+ import { writeKtAnnotations } from '../utils/write-kt-annotations';
6
+ type Injects = 'class' | 'target' | 'arguments';
7
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
8
+ class: KtType<TBuilder>;
9
+ arguments?: Nullable<Nullable<KtArgument<TBuilder> | KtValue<TBuilder>>[]>;
10
+ target?: Nullable<KtAnnotationTarget>;
11
+ }>;
12
+ export type KtAnnotationTarget = 'file' | 'property' | 'field' | 'get' | 'set' | 'receiver' | 'param' | 'setparam' | 'delegate';
13
+ export declare class KtAnnotation<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
14
+ class: KtType<TBuilder>;
15
+ arguments: (KtArgument<TBuilder> | KtValue<TBuilder>)[];
16
+ target: KtAnnotationTarget | null;
17
+ constructor(options: Options<TBuilder, TInjects>);
18
+ protected onWrite(builder: TBuilder): void;
19
+ }
20
+ export declare const ktAnnotation: (<TBuilder extends SourceBuilder<never>>($class: Options<TBuilder>['class'], $arguments?: Options<TBuilder>['arguments'], options?: Prettify<Omit<Options<TBuilder>, 'class' | 'arguments'>>) => KtAnnotation<TBuilder, never>) & {
21
+ write: typeof writeKtAnnotations;
22
+ };
23
+ export {};
@@ -0,0 +1,22 @@
1
+ import { AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtValue } from './types';
3
+ import { KtNode } from '../node';
4
+ import { writeKtArguments } from '../utils/write-kt-arguments';
5
+ type Injects = 'name' | 'value';
6
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
7
+ name?: Nullable<string>;
8
+ value: KtValue<TBuilder>;
9
+ }>;
10
+ export declare class KtArgument<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
11
+ name: string | null;
12
+ value: KtValue<TBuilder>;
13
+ constructor(options: Options<TBuilder, TInjects>);
14
+ protected onWrite(builder: TBuilder): void;
15
+ }
16
+ export declare const ktArgument: (<TBuilder extends SourceBuilder<never>>(value: Options<TBuilder>['value'], options?: Prettify<Omit<Options<TBuilder>, 'value'>>) => KtArgument<TBuilder, never>) & {
17
+ named: <TBuilder_1 extends SourceBuilder<never>>(name: Nullable<string>, value: KtValue<TBuilder_1>, options?: {
18
+ inject?: import("@goast/core").AstNodeInject<TBuilder_1, "" | Injects> | undefined;
19
+ } | undefined) => KtArgument<TBuilder_1, never>;
20
+ write: typeof writeKtArguments;
21
+ };
22
+ export {};
@@ -0,0 +1,22 @@
1
+ import { ArrayItem, AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtArgument } from './argument';
3
+ import { KtType, KtValue } from './types';
4
+ import { KtNode } from '../node';
5
+ import { writeKtNodes } from '../utils/write-kt-node';
6
+ type Injects = never;
7
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
8
+ path: Nullable<KtType<TBuilder> | KtValue<TBuilder>>[];
9
+ arguments?: Nullable<Nullable<KtArgument<TBuilder> | KtValue<TBuilder>>[]>;
10
+ infix?: boolean;
11
+ }>;
12
+ export declare class KtCall<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
13
+ path: (KtType<TBuilder> | KtValue<TBuilder>)[];
14
+ arguments: (KtArgument<TBuilder> | KtValue<TBuilder>)[] | null;
15
+ infix: boolean;
16
+ constructor(options: Options<TBuilder, TInjects>);
17
+ protected onWrite(builder: TBuilder): void;
18
+ }
19
+ export declare const ktCall: (<TBuilder extends SourceBuilder<never>>(path: Options<TBuilder>['path'] | ArrayItem<Options<TBuilder>['path']>, args?: Options<TBuilder>['arguments'], options?: Prettify<Omit<Options<TBuilder>, 'path' | 'arguments'>>) => KtCall<TBuilder, never>) & {
20
+ write: typeof writeKtNodes;
21
+ };
22
+ export {};
@@ -0,0 +1,54 @@
1
+ import { AppendValue, AstNodeOptions, BasicAppendValue, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtConstructor } from './constructor';
4
+ import { KtDoc } from './doc';
5
+ import { KtEnum } from './enum';
6
+ import { KtFunction } from './function';
7
+ import { KtGenericParameter } from './generic-parameter';
8
+ import { KtInitBlock } from './init-block';
9
+ import { KtInterface } from './interface';
10
+ import { KtObject } from './object';
11
+ import { KtProperty } from './property';
12
+ import { KtType } from './types';
13
+ import { KtAccessModifier } from '../common';
14
+ import { KtNode } from '../node';
15
+ import { writeKtNodes } from '../utils/write-kt-node';
16
+ type Injects = 'doc' | 'annotations' | 'modifiers' | 'name' | 'generics' | 'primaryConstructor' | 'inheritList' | 'body' | 'members';
17
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
18
+ doc?: Nullable<KtDoc<TBuilder>>;
19
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
20
+ accessModifier?: Nullable<KtAccessModifier>;
21
+ open?: Nullable<boolean>;
22
+ abstract?: Nullable<boolean>;
23
+ classKind?: Nullable<KtClassKind>;
24
+ name: string;
25
+ generics?: Nullable<Nullable<KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
26
+ primaryConstructor?: Nullable<KtConstructor<TBuilder>>;
27
+ extends?: Nullable<KtType<TBuilder>>;
28
+ implements?: Nullable<Nullable<KtType<TBuilder>>[]>;
29
+ companionObject?: Nullable<KtObject<TBuilder>>;
30
+ members?: Nullable<Nullable<KtClassMember<TBuilder>>[]>;
31
+ }>;
32
+ export type KtClassKind = 'data' | 'value' | 'annotation' | 'sealed';
33
+ export type KtClassMember<TBuilder extends SourceBuilder> = KtConstructor<TBuilder> | KtEnum<TBuilder> | KtInitBlock<TBuilder> | KtInterface<TBuilder> | KtProperty<TBuilder> | KtFunction<TBuilder> | KtClass<TBuilder> | AppendValue<TBuilder>;
34
+ export declare class KtClass<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
35
+ doc: KtDoc<TBuilder> | null;
36
+ annotations: KtAnnotation<TBuilder>[];
37
+ accessModifier: KtAccessModifier | null;
38
+ open: boolean;
39
+ abstract: boolean;
40
+ classKind: KtClassKind | null;
41
+ name: string;
42
+ generics: (KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
43
+ primaryConstructor: KtConstructor<TBuilder> | null;
44
+ extends: KtType<TBuilder> | null;
45
+ implements: KtType<TBuilder>[];
46
+ members: KtClassMember<TBuilder>[];
47
+ companionObject: Nullable<KtObject<TBuilder>>;
48
+ constructor(options: Options<TBuilder, TInjects>);
49
+ protected onWrite(builder: TBuilder): void;
50
+ }
51
+ export declare const ktClass: (<TBuilder extends SourceBuilder<never>>(name: Options<TBuilder>['name'], options?: Prettify<Omit<Options<TBuilder>, 'name'>>) => KtClass<TBuilder, never>) & {
52
+ write: typeof writeKtNodes;
53
+ };
54
+ export {};
@@ -0,0 +1,17 @@
1
+ import { SourceBuilder, AstNodeOptions, Nullable } from '@goast/core';
2
+ import { KtValue } from './types';
3
+ import { KtNode } from '../node';
4
+ import { writeKtNodes } from '../utils/write-kt-node';
5
+ type Injects = never;
6
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
7
+ elements: Nullable<Nullable<KtValue<TBuilder>>[]>;
8
+ }>;
9
+ export declare class KtCollectionLiteral<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
10
+ elements: KtValue<TBuilder>[];
11
+ constructor(options: Options<TBuilder, TInjects>);
12
+ protected onWrite(builder: TBuilder): void;
13
+ }
14
+ export declare const ktCollectionLiteral: (<TBuilder extends SourceBuilder<never>>(elements: Options<TBuilder>['elements'], options?: Omit<Options<TBuilder>, 'elements'>) => KtCollectionLiteral<TBuilder, never>) & {
15
+ write: typeof writeKtNodes;
16
+ };
17
+ export {};
@@ -0,0 +1,34 @@
1
+ import { AppendValue, AstNodeOptions, BasicAppendValue, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtArgument } from './argument';
4
+ import { KtParameter } from './parameter';
5
+ import { KtValue } from './types';
6
+ import { KtAccessModifier } from '../common';
7
+ import { KtNode } from '../node';
8
+ import { writeKtNodes } from '../utils/write-kt-node';
9
+ type Injects = 'annotations' | 'modifiers' | 'params' | 'body' | 'delegate';
10
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
11
+ accessModifier?: Nullable<KtAccessModifier>;
12
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
13
+ parameters?: Nullable<Nullable<KtParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
14
+ body?: Nullable<AppendValue<TBuilder>>;
15
+ delegateTarget?: Nullable<KtDelegateTarget>;
16
+ delegateArguments?: Nullable<Nullable<KtArgument<TBuilder> | KtValue<TBuilder>>[]>;
17
+ }>;
18
+ export type KtDelegateTarget = 'this' | 'super';
19
+ export declare class KtConstructor<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
20
+ accessModifier: KtAccessModifier | null;
21
+ annotations: KtAnnotation<TBuilder>[];
22
+ parameters: (KtParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
23
+ body: AppendValue<TBuilder> | null;
24
+ delegateTarget: KtDelegateTarget | null;
25
+ delegateArguments: (KtArgument<TBuilder> | KtValue<TBuilder>)[];
26
+ constructor(options: Options<TBuilder, TInjects>);
27
+ protected onWrite(builder: TBuilder): void;
28
+ writeAsPrimary(builder: TBuilder): void;
29
+ protected onWriteAsPrimary(builder: TBuilder): void;
30
+ }
31
+ export declare const ktConstructor: (<TBuilder extends SourceBuilder<never>>(parameters?: Options<TBuilder>['parameters'], body?: Options<TBuilder>['body'], options?: Prettify<Omit<Options<TBuilder>, 'parameters' | 'body'>>) => KtConstructor<TBuilder, never>) & {
32
+ write: typeof writeKtNodes;
33
+ };
34
+ export {};
@@ -0,0 +1,34 @@
1
+ import { SourceBuilder, AstNodeOptions, StringSuggestions, ParametersWithOverloads, Prettify, SingleOrMultiple, Nullable, BasicAppendValue } from '@goast/core';
2
+ import { KtNode } from '../node';
3
+ import { KtAppendValue } from '../utils/write-kt-node';
4
+ type Injects = never;
5
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
6
+ tag: string;
7
+ args?: Nullable<Nullable<BasicAppendValue<TBuilder>>[]>;
8
+ description?: Nullable<BasicAppendValue<TBuilder>>;
9
+ }>;
10
+ export declare class KtDocTag<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
11
+ tag: string;
12
+ args: BasicAppendValue<TBuilder>[];
13
+ description: BasicAppendValue<TBuilder> | null;
14
+ constructor(options: Options<TBuilder, TInjects>);
15
+ protected onWrite(builder: TBuilder): void;
16
+ }
17
+ type _KtDocTagOpt<TBuilder extends SourceBuilder> = Prettify<Omit<Options<TBuilder>, 'tag'>>;
18
+ type _KtDocTagArgsMap<TBuilder extends SourceBuilder> = {
19
+ suppress(options?: _KtDocTagOpt<TBuilder>): never;
20
+ } & {
21
+ [K in 'return' | 'constructor' | 'receiver' | 'author' | 'since']: (description: BasicAppendValue<TBuilder>, options?: _KtDocTagOpt<TBuilder>) => never;
22
+ } & {
23
+ [K in 'param' | 'property']: (name: string, description: BasicAppendValue<TBuilder>, options?: _KtDocTagOpt<TBuilder>) => never;
24
+ } & {
25
+ [K in 'see' | 'sample']: (identifier: string, options?: _KtDocTagOpt<TBuilder>) => never;
26
+ } & {
27
+ [K in 'throws' | 'exception']: ($class: BasicAppendValue<TBuilder>, description: BasicAppendValue<TBuilder>, options?: _KtDocTagOpt<TBuilder>) => never;
28
+ };
29
+ type _KtDocTagArgs<TTagName extends StringSuggestions<keyof _KtDocTagArgsMap<TBuilder>>, TBuilder extends SourceBuilder> = TTagName extends keyof _KtDocTagArgsMap<TBuilder> ? _KtDocTagArgsMap<TBuilder>[TTagName] extends (...args: any[]) => any ? ParametersWithOverloads<_KtDocTagArgsMap<TBuilder>[TTagName]> : never : [options?: _KtDocTagOpt<TBuilder>];
30
+ declare function createDocTag<TTagName extends StringSuggestions<keyof _KtDocTagArgsMap<TBuilder>>, TBuilder extends SourceBuilder>(tag: TTagName, ...args: _KtDocTagArgs<TTagName, TBuilder>): KtDocTag<TBuilder>;
31
+ export declare const ktDocTag: typeof createDocTag & {
32
+ write: <TBuilder extends SourceBuilder<never>>(builder: TBuilder, nodes: SingleOrMultiple<Nullable<KtAppendValue<TBuilder>>>) => void;
33
+ };
34
+ export {};
@@ -0,0 +1,26 @@
1
+ import { SourceBuilder, AstNodeOptions, Prettify, Nullable, BasicAppendValue } from '@goast/core';
2
+ import { KtDocTag } from './doc-tag';
3
+ import { KtGenericParameter } from './generic-parameter';
4
+ import { KtParameter } from './parameter';
5
+ import { KtNode } from '../node';
6
+ import { writeKtNodes } from '../utils/write-kt-node';
7
+ type Injects = never;
8
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
9
+ description?: Nullable<BasicAppendValue<TBuilder>>;
10
+ tags?: Nullable<Nullable<KtDocTag<TBuilder>>[]>;
11
+ }>;
12
+ export declare class KtDoc<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
13
+ description: BasicAppendValue<TBuilder> | null;
14
+ tags: KtDocTag<TBuilder>[];
15
+ constructor(options: Options<TBuilder, TInjects>);
16
+ protected onWrite(builder: TBuilder): void;
17
+ }
18
+ declare function getDoc<TBuilder extends SourceBuilder>(baseDoc: KtDoc<TBuilder> | null, options: {
19
+ parameters?: Nullable<Nullable<KtParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
20
+ generics?: Nullable<Nullable<KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
21
+ }): KtDoc<TBuilder> | null;
22
+ export declare const ktDoc: (<TBuilder extends SourceBuilder<never>>(description?: Options<TBuilder>['description'], tags?: Options<TBuilder>['tags'], options?: Prettify<Omit<Options<TBuilder>, 'description' | 'tags'>>) => KtDoc<TBuilder, never>) & {
23
+ write: typeof writeKtNodes;
24
+ get: typeof getDoc;
25
+ };
26
+ export {};
@@ -0,0 +1,30 @@
1
+ import { AppendValue, AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtArgument } from './argument';
4
+ import { KtDoc } from './doc';
5
+ import { KtFunction } from './function';
6
+ import { KtParameter } from './parameter';
7
+ import { KtNode } from '../node';
8
+ import { writeKtEnumValues } from '../utils/write-kt-enum-values';
9
+ type Injects = 'doc' | 'annotations' | 'name' | 'arguments' | 'body' | 'members';
10
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
11
+ name: string;
12
+ doc?: Nullable<KtDoc<TBuilder>>;
13
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
14
+ arguments?: Nullable<Nullable<KtArgument<TBuilder> | AppendValue<TBuilder>>[]>;
15
+ members?: Nullable<Nullable<KtEnumValueMember<TBuilder>>[]>;
16
+ }>;
17
+ export type KtEnumValueMember<TBuilder extends SourceBuilder> = KtParameter<TBuilder> | KtFunction<TBuilder> | AppendValue<TBuilder>;
18
+ export declare class KtEnumValue<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
19
+ name: string;
20
+ doc: KtDoc<TBuilder> | null;
21
+ annotations: KtAnnotation<TBuilder>[];
22
+ arguments: (KtArgument<TBuilder> | AppendValue<TBuilder>)[];
23
+ members: KtEnumValueMember<TBuilder>[];
24
+ constructor(options: Options<TBuilder, TInjects>);
25
+ protected onWrite(builder: TBuilder): void;
26
+ }
27
+ export declare const ktEnumValue: (<TBuilder extends SourceBuilder<never>>(name: Options<TBuilder>['name'], options?: Prettify<Omit<Options<TBuilder>, 'name'>>) => KtEnumValue<TBuilder, never>) & {
28
+ write: typeof writeKtEnumValues;
29
+ };
30
+ export {};
@@ -0,0 +1,45 @@
1
+ import { AppendValue, AstNodeOptions, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtClass } from './class';
4
+ import { KtConstructor } from './constructor';
5
+ import { KtDoc } from './doc';
6
+ import { KtEnumValue } from './enum-value';
7
+ import { KtFunction } from './function';
8
+ import { KtInitBlock } from './init-block';
9
+ import { KtInterface } from './interface';
10
+ import { KtObject } from './object';
11
+ import { KtProperty } from './property';
12
+ import { KtType } from './types';
13
+ import { KtAccessModifier } from '../common';
14
+ import { KtNode } from '../node';
15
+ import { writeKtNodes } from '../utils/write-kt-node';
16
+ type Injects = 'doc' | 'annotations' | 'modifiers' | 'name' | 'primaryConstructor' | 'implements' | 'body' | 'values' | 'members';
17
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
18
+ name: string;
19
+ doc?: Nullable<KtDoc<TBuilder>>;
20
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
21
+ accessModifier?: Nullable<KtAccessModifier>;
22
+ primaryConstructor?: Nullable<KtConstructor<TBuilder>>;
23
+ implements?: Nullable<Nullable<KtType<TBuilder>>[]>;
24
+ values?: Nullable<KtEnumValue<TBuilder>[]>;
25
+ members?: Nullable<Nullable<KtEnumMember<TBuilder>>[]>;
26
+ companionObject?: Nullable<KtObject<TBuilder>>;
27
+ }>;
28
+ export type KtEnumMember<TBuilder extends SourceBuilder> = KtConstructor<TBuilder> | KtEnum<TBuilder> | KtInitBlock<TBuilder> | KtInterface<TBuilder> | KtProperty<TBuilder> | KtFunction<TBuilder> | KtClass<TBuilder> | AppendValue<TBuilder>;
29
+ export declare class KtEnum<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
30
+ name: string;
31
+ doc: KtDoc<TBuilder> | null;
32
+ annotations: KtAnnotation<TBuilder>[];
33
+ accessModifier: KtAccessModifier | null;
34
+ primaryConstructor: KtConstructor<TBuilder> | null;
35
+ implements: KtType<TBuilder>[];
36
+ values: KtEnumValue<TBuilder>[];
37
+ members: KtEnumMember<TBuilder>[];
38
+ companionObject: KtObject<TBuilder> | null;
39
+ constructor(options: Options<TBuilder, TInjects>);
40
+ protected onWrite(builder: TBuilder): void;
41
+ }
42
+ export declare const ktEnum: (<TBuilder extends SourceBuilder<never>>(name: Options<TBuilder>['name'], values?: Options<TBuilder>['values'], options?: Prettify<Omit<Options<TBuilder>, 'name' | 'values'>>) => KtEnum<TBuilder, never>) & {
43
+ write: typeof writeKtNodes;
44
+ };
45
+ export {};
@@ -0,0 +1,58 @@
1
+ import { SourceBuilder, AstNodeOptions, AppendValue, Prettify, Nullable, BasicAppendValue } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtDoc } from './doc';
4
+ import { KtGenericParameter } from './generic-parameter';
5
+ import { KtParameter } from './parameter';
6
+ import { KtType } from './types';
7
+ import { KtAccessModifier } from '../common';
8
+ import { KtNode } from '../node';
9
+ import { writeKtNodes } from '../utils/write-kt-node';
10
+ type Injects = 'doc' | 'annotations' | 'modifiers' | 'generics' | 'receiverAnnotations' | 'receiverType' | 'name' | 'parameters' | 'returnType';
11
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
12
+ name: string;
13
+ generics?: Nullable<Nullable<KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
14
+ parameters?: Nullable<Nullable<KtParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
15
+ doc?: Nullable<KtDoc<TBuilder>>;
16
+ returnType?: Nullable<KtType<TBuilder>>;
17
+ body?: Nullable<AppendValue<TBuilder>>;
18
+ accessModifier?: Nullable<KtAccessModifier>;
19
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
20
+ receiverType?: Nullable<KtType<TBuilder>>;
21
+ receiverAnnotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
22
+ singleExpression?: Nullable<boolean>;
23
+ open?: Nullable<boolean>;
24
+ inline?: Nullable<boolean>;
25
+ infix?: Nullable<boolean>;
26
+ tailrec?: Nullable<boolean>;
27
+ suspend?: Nullable<boolean>;
28
+ operator?: Nullable<boolean>;
29
+ override?: Nullable<boolean>;
30
+ abstract?: Nullable<boolean>;
31
+ }>;
32
+ export declare class KtFunction<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
33
+ name: string;
34
+ generics: (KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
35
+ parameters: (KtParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
36
+ doc: KtDoc<TBuilder> | null;
37
+ returnType: KtType<TBuilder> | null;
38
+ body: AppendValue<TBuilder> | null;
39
+ accessModifier: KtAccessModifier | null;
40
+ annotations: KtAnnotation<TBuilder>[];
41
+ receiverType: KtType<TBuilder> | null;
42
+ receiverAnnotations: KtAnnotation<TBuilder>[];
43
+ singleExpression: boolean;
44
+ open: boolean;
45
+ inline: boolean;
46
+ infix: boolean;
47
+ tailrec: boolean;
48
+ suspend: boolean;
49
+ operator: boolean;
50
+ override: boolean;
51
+ abstract: boolean;
52
+ constructor(options: Options<TBuilder, TInjects>);
53
+ protected onWrite(builder: TBuilder): void;
54
+ }
55
+ export declare const ktFunction: (<TBuilder extends SourceBuilder<never>>(name: Options<TBuilder>['name'], options?: Prettify<Omit<Options<TBuilder>, 'name'>>) => KtFunction<TBuilder, never>) & {
56
+ write: typeof writeKtNodes;
57
+ };
58
+ export {};
@@ -0,0 +1,21 @@
1
+ import { AstNodeOptions, BasicAppendValue, Nullable, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtType } from './types';
3
+ import { KtNode } from '../node';
4
+ import { writeKtGenericParameters } from '../utils/write-kt-generic-parameters';
5
+ type Injects = 'name' | 'constraint';
6
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
7
+ name: string;
8
+ description?: Nullable<BasicAppendValue<TBuilder>>;
9
+ constraint?: Nullable<KtType<TBuilder>>;
10
+ }>;
11
+ export declare class KtGenericParameter<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
12
+ name: string;
13
+ description: BasicAppendValue<TBuilder> | null;
14
+ constraint: KtType<TBuilder> | null;
15
+ constructor(options: Options<TBuilder, TInjects>);
16
+ protected onWrite(builder: TBuilder): void;
17
+ }
18
+ export declare const ktGenericParameter: (<TBuilder extends SourceBuilder<never>>(name: Options<TBuilder>['name'], options?: Prettify<Omit<Options<TBuilder>, 'name'>>) => KtGenericParameter<TBuilder, never>) & {
19
+ write: typeof writeKtGenericParameters;
20
+ };
21
+ export {};
@@ -0,0 +1,16 @@
1
+ import { AppendValue, AstNodeOptions, Prettify, SourceBuilder } from '@goast/core';
2
+ import { KtNode } from '../node';
3
+ import { writeKtNodes } from '../utils/write-kt-node';
4
+ type Injects = never;
5
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
6
+ body: AppendValue<TBuilder>;
7
+ }>;
8
+ export declare class KtInitBlock<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
9
+ body: AppendValue<TBuilder>;
10
+ constructor(options: Options<TBuilder, TInjects>);
11
+ protected onWrite(builder: TBuilder): void;
12
+ }
13
+ export declare const ktInitBlock: (<TBuilder extends SourceBuilder<never>>(body: Options<TBuilder>['body'], options?: Prettify<Omit<Options<TBuilder>, 'body'>>) => KtInitBlock<TBuilder, never>) & {
14
+ write: typeof writeKtNodes;
15
+ };
16
+ export {};
@@ -0,0 +1,41 @@
1
+ import { SourceBuilder, AppendValue, AstNodeOptions, Prettify, Nullable, BasicAppendValue } from '@goast/core';
2
+ import { KtAnnotation } from './annotation';
3
+ import { KtClass } from './class';
4
+ import { KtDoc } from './doc';
5
+ import { KtEnum } from './enum';
6
+ import { KtFunction } from './function';
7
+ import { KtGenericParameter } from './generic-parameter';
8
+ import { KtObject } from './object';
9
+ import { KtProperty } from './property';
10
+ import { KtType } from './types';
11
+ import { KtAccessModifier } from '../common';
12
+ import { KtNode } from '../node';
13
+ import { writeKtNodes } from '../utils/write-kt-node';
14
+ type Injects = 'doc' | 'annotations' | 'modifiers' | 'name' | 'generics' | 'extends' | 'body' | 'members';
15
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
16
+ doc?: Nullable<KtDoc<TBuilder>>;
17
+ annotations?: Nullable<Nullable<KtAnnotation<TBuilder>>[]>;
18
+ accessModifier?: Nullable<KtAccessModifier>;
19
+ name: string;
20
+ generics?: Nullable<Nullable<KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>>[]>;
21
+ extends?: Nullable<Nullable<KtType<TBuilder>>[]>;
22
+ members?: Nullable<Nullable<KtInterfaceMember<TBuilder>>[]>;
23
+ companionObject?: Nullable<KtObject<TBuilder>>;
24
+ }>;
25
+ export type KtInterfaceMember<TBuilder extends SourceBuilder> = KtEnum<TBuilder> | KtInterface<TBuilder> | KtProperty<TBuilder> | KtFunction<TBuilder> | KtClass<TBuilder> | AppendValue<TBuilder>;
26
+ export declare class KtInterface<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
27
+ doc: KtDoc<TBuilder> | null;
28
+ annotations: KtAnnotation<TBuilder>[];
29
+ accessModifier: KtAccessModifier | null;
30
+ name: string;
31
+ generics: (KtGenericParameter<TBuilder> | BasicAppendValue<TBuilder>)[];
32
+ extends: KtType<TBuilder>[];
33
+ members: KtInterfaceMember<TBuilder>[];
34
+ companionObject: KtObject<TBuilder> | null;
35
+ constructor(options: Options<TBuilder, TInjects>);
36
+ protected onWrite(builder: TBuilder): void;
37
+ }
38
+ export declare const ktInterface: (<TBuilder extends SourceBuilder<never>>(name: KtInterface<TBuilder>['name'], options?: Prettify<Omit<Options<TBuilder>, 'name'>>) => KtInterface<TBuilder, never>) & {
39
+ write: typeof writeKtNodes;
40
+ };
41
+ export {};
@@ -0,0 +1,21 @@
1
+ import { SourceBuilder, AstNodeOptions, Nullable } from '@goast/core';
2
+ import { KtType } from './types';
3
+ import { KtNode } from '../node';
4
+ import { writeKtNodes } from '../utils/write-kt-node';
5
+ type Injects = 'extensionFor' | 'params' | 'returnType';
6
+ type Options<TBuilder extends SourceBuilder, TInjects extends string = never> = AstNodeOptions<typeof KtNode<TBuilder, TInjects | Injects>, {
7
+ extensionFor?: Nullable<KtType<TBuilder>>;
8
+ parameters?: Nullable<Nullable<KtType<TBuilder>>[]>;
9
+ returnType: KtType<TBuilder>;
10
+ }>;
11
+ export declare class KtLambdaType<TBuilder extends SourceBuilder, TInjects extends string = never> extends KtNode<TBuilder, TInjects | Injects> {
12
+ extensionFor: KtType<TBuilder> | null;
13
+ parameters: KtType<TBuilder>[];
14
+ returnType: KtType<TBuilder>;
15
+ constructor(options: Options<TBuilder, TInjects>);
16
+ protected onWrite(builder: TBuilder): void;
17
+ }
18
+ export declare const ktLambdaType: (<TBuilder extends SourceBuilder<never>>(parameters: Options<TBuilder>['parameters'], returnType: Options<TBuilder>['returnType'], options?: Omit<Options<TBuilder>, 'parameters' | 'returnType'>) => KtLambdaType<TBuilder, never>) & {
19
+ write: typeof writeKtNodes;
20
+ };
21
+ export {};