@ir-kit/openapi-kotlin 1.0.0 → 2.1.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/README.md +13 -13
- package/dist/ast/index.d.ts +168 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +194 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +9 -9
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/identifiers.d.ts +7 -0
- package/dist/ir/identifiers.d.ts.map +1 -1
- package/dist/ir/identifiers.js +92 -3
- package/dist/ir/identifiers.js.map +1 -1
- package/dist/ir/impl/body.d.ts +4 -3
- package/dist/ir/impl/body.d.ts.map +1 -1
- package/dist/ir/impl/body.js +11 -8
- package/dist/ir/impl/body.js.map +1 -1
- package/dist/ir/impl/decode.d.ts +3 -2
- package/dist/ir/impl/decode.d.ts.map +1 -1
- package/dist/ir/impl/decode.js +16 -16
- package/dist/ir/impl/decode.js.map +1 -1
- package/dist/ir/impl/headers.d.ts +1 -1
- package/dist/ir/impl/headers.d.ts.map +1 -1
- package/dist/ir/impl/headers.js +3 -3
- package/dist/ir/impl/headers.js.map +1 -1
- package/dist/ir/impl/index.d.ts +5 -2
- package/dist/ir/impl/index.d.ts.map +1 -1
- package/dist/ir/impl/index.js +6 -7
- package/dist/ir/impl/index.js.map +1 -1
- package/dist/ir/impl/request.d.ts +6 -6
- package/dist/ir/impl/request.d.ts.map +1 -1
- package/dist/ir/impl/request.js +18 -8
- package/dist/ir/impl/request.js.map +1 -1
- package/dist/ir/impl/serializer.d.ts +4 -2
- package/dist/ir/impl/serializer.d.ts.map +1 -1
- package/dist/ir/impl/serializer.js +41 -60
- package/dist/ir/impl/serializer.js.map +1 -1
- package/dist/ir/impl/url.d.ts +1 -1
- package/dist/ir/impl/url.d.ts.map +1 -1
- package/dist/ir/impl/url.js +4 -4
- package/dist/ir/impl/url.js.map +1 -1
- package/dist/ir/index.d.ts +1 -1
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +1 -1
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/operation/body.d.ts +1 -1
- package/dist/ir/operation/body.d.ts.map +1 -1
- package/dist/ir/operation/body.js +3 -3
- package/dist/ir/operation/body.js.map +1 -1
- package/dist/ir/operation/params.d.ts +1 -1
- package/dist/ir/operation/params.d.ts.map +1 -1
- package/dist/ir/operation/params.js +3 -3
- package/dist/ir/operation/params.js.map +1 -1
- package/dist/ir/operation/response.d.ts +3 -1
- package/dist/ir/operation/response.d.ts.map +1 -1
- package/dist/ir/operation/response.js +3 -4
- package/dist/ir/operation/response.js.map +1 -1
- package/dist/ir/operation/signature.d.ts +4 -2
- package/dist/ir/operation/signature.d.ts.map +1 -1
- package/dist/ir/operation/signature.js +5 -4
- package/dist/ir/operation/signature.js.map +1 -1
- package/dist/ir/operations.d.ts +7 -1
- package/dist/ir/operations.d.ts.map +1 -1
- package/dist/ir/operations.js +13 -7
- package/dist/ir/operations.js.map +1 -1
- package/dist/ir/runtime/index.d.ts +1 -1
- package/dist/ir/runtime/index.d.ts.map +1 -1
- package/dist/ir/runtime/index.js +1 -1
- package/dist/ir/runtime/index.js.map +1 -1
- package/dist/ir/runtime/templates.d.ts +1 -21
- package/dist/ir/runtime/templates.d.ts.map +1 -1
- package/dist/ir/runtime/templates.js +24 -428
- package/dist/ir/runtime/templates.js.map +1 -1
- package/dist/ir/schema.d.ts +3 -2
- package/dist/ir/schema.d.ts.map +1 -1
- package/dist/ir/schema.js +24 -11
- package/dist/ir/schema.js.map +1 -1
- package/dist/ir/type/context.d.ts +1 -1
- package/dist/ir/type/context.d.ts.map +1 -1
- package/dist/ir/type/index.d.ts +5 -3
- package/dist/ir/type/index.d.ts.map +1 -1
- package/dist/ir/type/index.js +12 -8
- package/dist/ir/type/index.js.map +1 -1
- package/dist/ir/type/primitive.d.ts +1 -1
- package/dist/ir/type/primitive.d.ts.map +1 -1
- package/dist/ir/type/primitive.js +1 -1
- package/dist/ir/type/primitive.js.map +1 -1
- package/dist/ir/type-ops.d.ts +2 -2
- package/dist/ir/type-ops.d.ts.map +1 -1
- package/dist/ir/type-ops.js +13 -17
- package/dist/ir/type-ops.js.map +1 -1
- package/dist/kt-compiler/index.d.ts +3 -6
- package/dist/kt-compiler/index.d.ts.map +1 -1
- package/dist/kt-compiler/index.js +7 -22
- package/dist/kt-compiler/index.js.map +1 -1
- package/dist/project/build.d.ts +1 -1
- package/dist/project/build.d.ts.map +1 -1
- package/dist/project/build.js +6 -8
- package/dist/project/build.js.map +1 -1
- package/dist/project/imports.d.ts +12 -12
- package/dist/project/imports.d.ts.map +1 -1
- package/dist/project/imports.js +60 -138
- package/dist/project/imports.js.map +1 -1
- package/dist/project/layout.d.ts +1 -1
- package/dist/project/layout.d.ts.map +1 -1
- package/dist/project/layout.js +1 -3
- package/dist/project/layout.js.map +1 -1
- package/package.json +11 -8
- package/runtime/APIClient.kt +140 -0
- package/runtime/APIError.kt +42 -0
- package/runtime/APIInterceptors.kt +14 -0
- package/runtime/APIKeyLocation.kt +7 -0
- package/runtime/Auth.kt +86 -0
- package/runtime/MultipartFormBody.kt +41 -0
- package/runtime/QueryStyle.kt +12 -0
- package/runtime/RequestOptions.kt +29 -0
- package/runtime/URLEncoding.kt +45 -0
- package/dist/kt-compiler/decl/class.d.ts +0 -6
- package/dist/kt-compiler/decl/class.d.ts.map +0 -1
- package/dist/kt-compiler/decl/class.js +0 -38
- package/dist/kt-compiler/decl/class.js.map +0 -1
- package/dist/kt-compiler/decl/dataClass.d.ts +0 -3
- package/dist/kt-compiler/decl/dataClass.d.ts.map +0 -1
- package/dist/kt-compiler/decl/dataClass.js +0 -18
- package/dist/kt-compiler/decl/dataClass.js.map +0 -1
- package/dist/kt-compiler/decl/enum.d.ts +0 -3
- package/dist/kt-compiler/decl/enum.d.ts.map +0 -1
- package/dist/kt-compiler/decl/enum.js +0 -32
- package/dist/kt-compiler/decl/enum.js.map +0 -1
- package/dist/kt-compiler/decl/fun.d.ts +0 -11
- package/dist/kt-compiler/decl/fun.d.ts.map +0 -1
- package/dist/kt-compiler/decl/fun.js +0 -69
- package/dist/kt-compiler/decl/fun.js.map +0 -1
- package/dist/kt-compiler/decl/index.d.ts +0 -13
- package/dist/kt-compiler/decl/index.d.ts.map +0 -1
- package/dist/kt-compiler/decl/index.js +0 -39
- package/dist/kt-compiler/decl/index.js.map +0 -1
- package/dist/kt-compiler/decl/interface.d.ts +0 -3
- package/dist/kt-compiler/decl/interface.d.ts.map +0 -1
- package/dist/kt-compiler/decl/interface.js +0 -15
- package/dist/kt-compiler/decl/interface.js.map +0 -1
- package/dist/kt-compiler/decl/object.d.ts +0 -3
- package/dist/kt-compiler/decl/object.d.ts.map +0 -1
- package/dist/kt-compiler/decl/object.js +0 -19
- package/dist/kt-compiler/decl/object.js.map +0 -1
- package/dist/kt-compiler/decl/prop.d.ts +0 -20
- package/dist/kt-compiler/decl/prop.d.ts.map +0 -1
- package/dist/kt-compiler/decl/prop.js +0 -42
- package/dist/kt-compiler/decl/prop.js.map +0 -1
- package/dist/kt-compiler/decl/sealedClass.d.ts +0 -3
- package/dist/kt-compiler/decl/sealedClass.d.ts.map +0 -1
- package/dist/kt-compiler/decl/sealedClass.js +0 -32
- package/dist/kt-compiler/decl/sealedClass.js.map +0 -1
- package/dist/kt-compiler/decl/topLevel.d.ts +0 -3
- package/dist/kt-compiler/decl/topLevel.d.ts.map +0 -1
- package/dist/kt-compiler/decl/topLevel.js +0 -5
- package/dist/kt-compiler/decl/topLevel.js.map +0 -1
- package/dist/kt-compiler/decl/typeAlias.d.ts +0 -3
- package/dist/kt-compiler/decl/typeAlias.d.ts.map +0 -1
- package/dist/kt-compiler/decl/typeAlias.js +0 -6
- package/dist/kt-compiler/decl/typeAlias.js.map +0 -1
- package/dist/kt-compiler/expr.d.ts +0 -4
- package/dist/kt-compiler/expr.d.ts.map +0 -1
- package/dist/kt-compiler/expr.js +0 -123
- package/dist/kt-compiler/expr.js.map +0 -1
- package/dist/kt-compiler/format.d.ts +0 -20
- package/dist/kt-compiler/format.d.ts.map +0 -1
- package/dist/kt-compiler/format.js +0 -27
- package/dist/kt-compiler/format.js.map +0 -1
- package/dist/kt-compiler/stmt.d.ts +0 -4
- package/dist/kt-compiler/stmt.d.ts.map +0 -1
- package/dist/kt-compiler/stmt.js +0 -72
- package/dist/kt-compiler/stmt.js.map +0 -1
- package/dist/kt-compiler/type.d.ts +0 -3
- package/dist/kt-compiler/type.d.ts.map +0 -1
- package/dist/kt-compiler/type.js +0 -28
- package/dist/kt-compiler/type.js.map +0 -1
- package/dist/kt-dsl/decl/class.d.ts +0 -50
- package/dist/kt-dsl/decl/class.d.ts.map +0 -1
- package/dist/kt-dsl/decl/class.js +0 -33
- package/dist/kt-dsl/decl/class.js.map +0 -1
- package/dist/kt-dsl/decl/dataClass.d.ts +0 -36
- package/dist/kt-dsl/decl/dataClass.d.ts.map +0 -1
- package/dist/kt-dsl/decl/dataClass.js +0 -25
- package/dist/kt-dsl/decl/dataClass.js.map +0 -1
- package/dist/kt-dsl/decl/enum.d.ts +0 -60
- package/dist/kt-dsl/decl/enum.d.ts.map +0 -1
- package/dist/kt-dsl/decl/enum.js +0 -38
- package/dist/kt-dsl/decl/enum.js.map +0 -1
- package/dist/kt-dsl/decl/index.d.ts +0 -11
- package/dist/kt-dsl/decl/index.d.ts.map +0 -1
- package/dist/kt-dsl/decl/index.js +0 -11
- package/dist/kt-dsl/decl/index.js.map +0 -1
- package/dist/kt-dsl/decl/interface.d.ts +0 -33
- package/dist/kt-dsl/decl/interface.d.ts.map +0 -1
- package/dist/kt-dsl/decl/interface.js +0 -24
- package/dist/kt-dsl/decl/interface.js.map +0 -1
- package/dist/kt-dsl/decl/object.d.ts +0 -34
- package/dist/kt-dsl/decl/object.d.ts.map +0 -1
- package/dist/kt-dsl/decl/object.js +0 -24
- package/dist/kt-dsl/decl/object.js.map +0 -1
- package/dist/kt-dsl/decl/prop.d.ts +0 -47
- package/dist/kt-dsl/decl/prop.d.ts.map +0 -1
- package/dist/kt-dsl/decl/prop.js +0 -28
- package/dist/kt-dsl/decl/prop.js.map +0 -1
- package/dist/kt-dsl/decl/sealedClass.d.ts +0 -68
- package/dist/kt-dsl/decl/sealedClass.d.ts.map +0 -1
- package/dist/kt-dsl/decl/sealedClass.js +0 -52
- package/dist/kt-dsl/decl/sealedClass.js.map +0 -1
- package/dist/kt-dsl/decl/topLevel.d.ts +0 -19
- package/dist/kt-dsl/decl/topLevel.d.ts.map +0 -1
- package/dist/kt-dsl/decl/topLevel.js +0 -17
- package/dist/kt-dsl/decl/topLevel.js.map +0 -1
- package/dist/kt-dsl/decl/typeAlias.d.ts +0 -23
- package/dist/kt-dsl/decl/typeAlias.d.ts.map +0 -1
- package/dist/kt-dsl/decl/typeAlias.js +0 -18
- package/dist/kt-dsl/decl/typeAlias.js.map +0 -1
- package/dist/kt-dsl/decl/types.d.ts +0 -10
- package/dist/kt-dsl/decl/types.d.ts.map +0 -1
- package/dist/kt-dsl/decl/types.js +0 -2
- package/dist/kt-dsl/decl/types.js.map +0 -1
- package/dist/kt-dsl/expr/access.d.ts +0 -48
- package/dist/kt-dsl/expr/access.d.ts.map +0 -1
- package/dist/kt-dsl/expr/access.js +0 -59
- package/dist/kt-dsl/expr/access.js.map +0 -1
- package/dist/kt-dsl/expr/call.d.ts +0 -38
- package/dist/kt-dsl/expr/call.d.ts.map +0 -1
- package/dist/kt-dsl/expr/call.js +0 -38
- package/dist/kt-dsl/expr/call.js.map +0 -1
- package/dist/kt-dsl/expr/index.d.ts +0 -7
- package/dist/kt-dsl/expr/index.d.ts.map +0 -1
- package/dist/kt-dsl/expr/index.js +0 -7
- package/dist/kt-dsl/expr/index.js.map +0 -1
- package/dist/kt-dsl/expr/literal.d.ts +0 -100
- package/dist/kt-dsl/expr/literal.d.ts.map +0 -1
- package/dist/kt-dsl/expr/literal.js +0 -108
- package/dist/kt-dsl/expr/literal.js.map +0 -1
- package/dist/kt-dsl/expr/misc.d.ts +0 -45
- package/dist/kt-dsl/expr/misc.d.ts.map +0 -1
- package/dist/kt-dsl/expr/misc.js +0 -63
- package/dist/kt-dsl/expr/misc.js.map +0 -1
- package/dist/kt-dsl/expr/op.d.ts +0 -25
- package/dist/kt-dsl/expr/op.d.ts.map +0 -1
- package/dist/kt-dsl/expr/op.js +0 -24
- package/dist/kt-dsl/expr/op.js.map +0 -1
- package/dist/kt-dsl/expr/types.d.ts +0 -93
- package/dist/kt-dsl/expr/types.d.ts.map +0 -1
- package/dist/kt-dsl/expr/types.js +0 -2
- package/dist/kt-dsl/expr/types.js.map +0 -1
- package/dist/kt-dsl/file.d.ts +0 -14
- package/dist/kt-dsl/file.d.ts.map +0 -1
- package/dist/kt-dsl/file.js +0 -9
- package/dist/kt-dsl/file.js.map +0 -1
- package/dist/kt-dsl/fun.d.ts +0 -73
- package/dist/kt-dsl/fun.d.ts.map +0 -1
- package/dist/kt-dsl/fun.js +0 -50
- package/dist/kt-dsl/fun.js.map +0 -1
- package/dist/kt-dsl/index.d.ts +0 -8
- package/dist/kt-dsl/index.d.ts.map +0 -1
- package/dist/kt-dsl/index.js +0 -8
- package/dist/kt-dsl/index.js.map +0 -1
- package/dist/kt-dsl/stmt/binding.d.ts +0 -56
- package/dist/kt-dsl/stmt/binding.d.ts.map +0 -1
- package/dist/kt-dsl/stmt/binding.js +0 -70
- package/dist/kt-dsl/stmt/binding.js.map +0 -1
- package/dist/kt-dsl/stmt/control.d.ts +0 -80
- package/dist/kt-dsl/stmt/control.d.ts.map +0 -1
- package/dist/kt-dsl/stmt/control.js +0 -77
- package/dist/kt-dsl/stmt/control.js.map +0 -1
- package/dist/kt-dsl/stmt/index.d.ts +0 -4
- package/dist/kt-dsl/stmt/index.d.ts.map +0 -1
- package/dist/kt-dsl/stmt/index.js +0 -4
- package/dist/kt-dsl/stmt/index.js.map +0 -1
- package/dist/kt-dsl/stmt/types.d.ts +0 -62
- package/dist/kt-dsl/stmt/types.d.ts.map +0 -1
- package/dist/kt-dsl/stmt/types.js +0 -2
- package/dist/kt-dsl/stmt/types.js.map +0 -1
- package/dist/kt-dsl/type/builders.d.ts +0 -75
- package/dist/kt-dsl/type/builders.d.ts.map +0 -1
- package/dist/kt-dsl/type/builders.js +0 -83
- package/dist/kt-dsl/type/builders.js.map +0 -1
- package/dist/kt-dsl/type/index.d.ts +0 -3
- package/dist/kt-dsl/type/index.d.ts.map +0 -1
- package/dist/kt-dsl/type/index.js +0 -3
- package/dist/kt-dsl/type/index.js.map +0 -1
- package/dist/kt-dsl/type/types.d.ts +0 -25
- package/dist/kt-dsl/type/types.d.ts.map +0 -1
- package/dist/kt-dsl/type/types.js +0 -2
- package/dist/kt-dsl/type/types.js.map +0 -1
- package/dist/kt-dsl/visibility.d.ts +0 -2
- package/dist/kt-dsl/visibility.d.ts.map +0 -1
- package/dist/kt-dsl/visibility.js +0 -2
- package/dist/kt-dsl/visibility.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Generate idiomatic Android / JVM Kotlin client SDKs from an OpenAPI 3.x spec —
|
|
|
4
4
|
|
|
5
5
|
Built on the [`@hey-api`](https://github.com/hey-api/openapi-ts) toolchain (`@hey-api/json-schema-ref-parser` for spec loading, `@hey-api/shared` IR for normalization). 2.0 / 3.0 / 3.1 inputs all produce the same output.
|
|
6
6
|
|
|
7
|
-
Sibling package to [`@ir-kit/openapi-swift`](../openapi-swift). Part of [ir-kit](https://github.com/
|
|
7
|
+
Sibling package to [`@ir-kit/openapi-swift`](../openapi-swift). Part of [ir-kit](https://github.com/ahmedrowaihi/ir-kit). Companion to the [`openapi-sdk-petstore` example](../../examples/openapi-sdk-petstore).
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
@@ -38,18 +38,18 @@ public data class Pet(
|
|
|
38
38
|
public val category: Category? = null,
|
|
39
39
|
public val photoUrls: List<String>,
|
|
40
40
|
public val tags: List<Tag>? = null,
|
|
41
|
-
public val status:
|
|
41
|
+
public val status: PetStatus? = null,
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
@Serializable
|
|
45
|
-
public enum class
|
|
45
|
+
public enum class PetStatus(public val raw: String) {
|
|
46
46
|
@SerialName("available") AVAILABLE("available"),
|
|
47
47
|
@SerialName("pending") PENDING("pending"),
|
|
48
48
|
@SerialName("sold") SOLD("sold"),
|
|
49
49
|
}
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
Inline enums on a property get promoted to a top-level `
|
|
52
|
+
Inline enums on a property get promoted to a top-level `OwnerProperty` enum class. Renamed JSON keys (snake_case → camelCase) get a `@SerialName` so the wire format stays untouched.
|
|
53
53
|
|
|
54
54
|
### Operations → interfaces + impls
|
|
55
55
|
|
|
@@ -150,10 +150,10 @@ public sealed class APIError(message: String? = null, cause: Throwable? = null)
|
|
|
150
150
|
When an operation declares more than one 2xx response code with distinct schemas, the generator emits a sealed-class hierarchy and the impl dispatches on `response.code`:
|
|
151
151
|
|
|
152
152
|
```kotlin
|
|
153
|
-
public sealed class
|
|
154
|
-
public data class Status200(public val value: JobResult) :
|
|
155
|
-
public data class Status202(public val value: Pending) :
|
|
156
|
-
public object Status204 :
|
|
153
|
+
public sealed class SubmitJobResponse {
|
|
154
|
+
public data class Status200(public val value: JobResult) : SubmitJobResponse()
|
|
155
|
+
public data class Status202(public val value: Pending) : SubmitJobResponse()
|
|
156
|
+
public object Status204 : SubmitJobResponse()
|
|
157
157
|
}
|
|
158
158
|
```
|
|
159
159
|
|
|
@@ -212,7 +212,7 @@ sdk-kotlin/
|
|
|
212
212
|
│ │ └── RequestOptions.kt
|
|
213
213
|
│ └── models/
|
|
214
214
|
│ ├── Pet.kt # @Serializable data classes
|
|
215
|
-
│ ├──
|
|
215
|
+
│ ├── PetStatus.kt # enum classes
|
|
216
216
|
│ └── …
|
|
217
217
|
└── (build.gradle.kts + settings.gradle.kts when `gradle:` is set)
|
|
218
218
|
```
|
|
@@ -245,15 +245,15 @@ Runtime dependencies (set up by the `gradle:` option, or by the consuming module
|
|
|
245
245
|
| `printFile(file)` / `kt*` builders | Lower-level Kotlin AST + printer. |
|
|
246
246
|
|
|
247
247
|
```text
|
|
248
|
-
src/kt
|
|
249
|
-
src/kt-compiler/
|
|
248
|
+
src/ast/ kt* builders returning @ir-kit/compiler-kotlin nodes; KtDecl
|
|
249
|
+
src/kt-compiler/ printFile / printDecl via @ir-kit/compiler-kotlin
|
|
250
250
|
src/ir/
|
|
251
251
|
├── type/ IR.SchemaObject → KtType
|
|
252
252
|
├── operation/ IR.OperationObject → signature shared by interface + impl
|
|
253
253
|
├── impl/ OkHttp body builders (url, request, headers, body, decode)
|
|
254
|
-
├── runtime/
|
|
254
|
+
├── runtime/ Copies runtime/*.kt into the SDK
|
|
255
255
|
├── schema.ts schemasToDecls
|
|
256
256
|
└── operations.ts paths → interfaces + impl classes (orchestrator)
|
|
257
257
|
```
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
Per-method bodies are built as `@ir-kit/compiler-kotlin` nodes; imports are collected from those nodes. Runtime helpers (the same Kotlin every time) are real, ktlint-checked sources in `runtime/` and are copied with the package header rewritten.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { kt } from "@ir-kit/compiler-kotlin";
|
|
2
|
+
export type KtType = kt.Type;
|
|
3
|
+
export type KtExpr = kt.Expression;
|
|
4
|
+
export type KtStmt = kt.Statement;
|
|
5
|
+
export type KtCallArg = kt.ValueArgument;
|
|
6
|
+
export type KtLambdaExpr = kt.LambdaExpression;
|
|
7
|
+
export type KtAnnotation = kt.Annotation;
|
|
8
|
+
export type KtEnumEntry = kt.EnumEntry;
|
|
9
|
+
export type KtFun = kt.FunctionDeclaration;
|
|
10
|
+
export type KtProp = kt.Property;
|
|
11
|
+
export type KtWhenCase = kt.WhenEntry;
|
|
12
|
+
export type KtCatchClause = kt.CatchClause;
|
|
13
|
+
export type KtSealedSubclass = kt.ClassDeclaration | kt.ObjectDeclaration;
|
|
14
|
+
export type KtVisibility = "public" | "internal" | "private" | "protected";
|
|
15
|
+
export type KtClassModifier = "open" | "abstract" | "final";
|
|
16
|
+
export type KtFunModifier = "override" | "open" | "abstract" | "suspend";
|
|
17
|
+
export declare const ktString: KtType;
|
|
18
|
+
export declare const ktInt: KtType;
|
|
19
|
+
export declare const ktLong: KtType;
|
|
20
|
+
export declare const ktShort: KtType;
|
|
21
|
+
export declare const ktByte: KtType;
|
|
22
|
+
export declare const ktDouble: KtType;
|
|
23
|
+
export declare const ktFloat: KtType;
|
|
24
|
+
export declare const ktBoolean: KtType;
|
|
25
|
+
export declare const ktUnit: KtType;
|
|
26
|
+
export declare const ktAny: KtType;
|
|
27
|
+
export declare const ktJsonElement: KtType;
|
|
28
|
+
export declare const ktNothing: KtType;
|
|
29
|
+
export declare const ktByteArray: KtType;
|
|
30
|
+
export declare const ktNullable: (inner: KtType) => KtType;
|
|
31
|
+
export declare const ktList: (element: KtType) => KtType;
|
|
32
|
+
export declare const ktMap: (key: KtType, value: KtType) => KtType;
|
|
33
|
+
export declare const ktRef: (name: string, args?: ReadonlyArray<KtType>) => KtType;
|
|
34
|
+
export declare const ktFunc: (params: ReadonlyArray<KtType>, returnType: KtType) => KtType;
|
|
35
|
+
/** `Pet` for `Pet` / `Pair<Pet, Response>`; `undefined` for composites. */
|
|
36
|
+
export declare const typeName: (t: KtType) => string | undefined;
|
|
37
|
+
export declare const typeArgs: (t: KtType) => ReadonlyArray<KtType>;
|
|
38
|
+
export declare const isUnit: (t: KtType) => boolean;
|
|
39
|
+
export declare const ktIdent: (name: string) => KtExpr;
|
|
40
|
+
export declare const ktMember: (on: KtExpr, name: string) => KtExpr;
|
|
41
|
+
export declare const ktSafeMember: (on: KtExpr, name: string) => KtExpr;
|
|
42
|
+
export declare const ktIndex: (on: KtExpr, index: KtExpr) => KtExpr;
|
|
43
|
+
export declare const ktNotNull: (on: KtExpr) => KtExpr;
|
|
44
|
+
export declare const ktThis: KtExpr;
|
|
45
|
+
export declare const ktStr: (value: string) => KtExpr;
|
|
46
|
+
export declare const ktIntLit: (value: number) => KtExpr;
|
|
47
|
+
export declare const ktLongLit: (value: number) => KtExpr;
|
|
48
|
+
export declare const ktDoubleLit: (value: number) => KtExpr;
|
|
49
|
+
export declare const ktBoolLit: (value: boolean) => KtExpr;
|
|
50
|
+
export declare const ktNull: KtExpr;
|
|
51
|
+
export declare const ktInterp: (parts: ReadonlyArray<string | KtExpr>) => KtExpr;
|
|
52
|
+
export declare const ktListLit: (items: ReadonlyArray<KtExpr>) => KtExpr;
|
|
53
|
+
export declare const ktArg: (expression: KtExpr, name?: string) => KtCallArg;
|
|
54
|
+
export declare const ktCall: (callee: KtExpr, args?: ReadonlyArray<KtCallArg>, trailingLambda?: KtLambdaExpr, typeArgs?: ReadonlyArray<KtType>) => KtExpr;
|
|
55
|
+
export declare const ktLambda: (params: ReadonlyArray<string>, body: ReadonlyArray<KtStmt>) => KtLambdaExpr;
|
|
56
|
+
export declare const ktAs: (expr: KtExpr, type: KtType) => KtExpr;
|
|
57
|
+
export declare const ktAsSafe: (expr: KtExpr, type: KtType) => KtExpr;
|
|
58
|
+
type BinOp = "==" | "!=" | "<" | "<=" | ">" | ">=" | "&&" | "||" | "+";
|
|
59
|
+
export declare const ktBinOp: (op: BinOp, left: KtExpr, right: KtExpr) => KtExpr;
|
|
60
|
+
export declare const ktEq: (l: KtExpr, r: KtExpr) => KtExpr;
|
|
61
|
+
export declare const ktNe: (l: KtExpr, r: KtExpr) => KtExpr;
|
|
62
|
+
export declare const ktElvis: (l: KtExpr, r: KtExpr) => KtExpr;
|
|
63
|
+
export declare const ktVal: (name: string, expr: KtExpr, type?: KtType) => KtStmt;
|
|
64
|
+
export declare const ktVar: (name: string, expr: KtExpr, type?: KtType) => KtStmt;
|
|
65
|
+
export declare const ktAssign: (target: KtExpr, value: KtExpr) => KtStmt;
|
|
66
|
+
export declare const ktExprStmt: (expr: KtExpr) => KtStmt;
|
|
67
|
+
export declare const ktReturn: (expr?: KtExpr) => KtStmt;
|
|
68
|
+
export declare const ktThrow: (expr: KtExpr) => KtStmt;
|
|
69
|
+
export declare const ktIf: (cond: KtExpr, then: ReadonlyArray<KtStmt>, else_?: ReadonlyArray<KtStmt>) => KtStmt;
|
|
70
|
+
export declare const ktWhenCase: (patterns: ReadonlyArray<KtExpr>, body: ReadonlyArray<KtStmt>) => KtWhenCase;
|
|
71
|
+
export declare const ktWhen: (on: KtExpr | undefined, cases: ReadonlyArray<KtWhenCase>, default_?: ReadonlyArray<KtStmt>) => KtStmt;
|
|
72
|
+
export declare const ktForIn: (name: string, source: KtExpr, body: ReadonlyArray<KtStmt>) => KtStmt;
|
|
73
|
+
export declare const ktCatch: (name: string, type: KtType, body: ReadonlyArray<KtStmt>) => KtCatchClause;
|
|
74
|
+
export declare const ktTryCatch: (body: ReadonlyArray<KtStmt>, catches: ReadonlyArray<KtCatchClause>) => KtStmt;
|
|
75
|
+
/** A function parameter as carried on operation signatures. */
|
|
76
|
+
export interface KtFunParam {
|
|
77
|
+
name: string;
|
|
78
|
+
type: KtType;
|
|
79
|
+
default?: string;
|
|
80
|
+
}
|
|
81
|
+
export declare const ktFunParam: (opts: KtFunParam) => KtFunParam;
|
|
82
|
+
export declare const ktAnnotation: (name: string, arg?: KtExpr) => KtAnnotation;
|
|
83
|
+
export declare function ktProp(opts: {
|
|
84
|
+
name: string;
|
|
85
|
+
type: KtType;
|
|
86
|
+
mutable?: boolean;
|
|
87
|
+
default?: string;
|
|
88
|
+
visibility?: KtVisibility;
|
|
89
|
+
annotations?: ReadonlyArray<KtAnnotation>;
|
|
90
|
+
}): KtProp;
|
|
91
|
+
export declare function ktFun(opts: {
|
|
92
|
+
name: string;
|
|
93
|
+
params: ReadonlyArray<KtFunParam>;
|
|
94
|
+
returnType: KtType;
|
|
95
|
+
modifiers?: ReadonlyArray<KtFunModifier>;
|
|
96
|
+
body?: ReadonlyArray<KtStmt>;
|
|
97
|
+
doc?: string;
|
|
98
|
+
visibility?: KtVisibility;
|
|
99
|
+
receiver?: KtType;
|
|
100
|
+
}): KtFun;
|
|
101
|
+
export declare const ktEnumEntry: (name: string, arg?: KtExpr, annotations?: ReadonlyArray<KtAnnotation>) => KtEnumEntry;
|
|
102
|
+
export declare function ktSealedSubclass(opts: {
|
|
103
|
+
variant: "class" | "object";
|
|
104
|
+
name: string;
|
|
105
|
+
properties?: ReadonlyArray<KtProp>;
|
|
106
|
+
annotations?: ReadonlyArray<KtAnnotation>;
|
|
107
|
+
}): KtSealedSubclass;
|
|
108
|
+
/**
|
|
109
|
+
* A top-level declaration plus the facts the project layer needs to
|
|
110
|
+
* place and import it.
|
|
111
|
+
*/
|
|
112
|
+
export interface KtDecl {
|
|
113
|
+
kind: "dataClass" | "class" | "sealedClass" | "object" | "interface" | "enum" | "typeAlias" | "topLevelFun";
|
|
114
|
+
name: string;
|
|
115
|
+
/** Target of a `typeAlias` declaration. */
|
|
116
|
+
aliasOf?: KtType;
|
|
117
|
+
/** Runtime-helper types live with the API surface. */
|
|
118
|
+
runtime?: boolean;
|
|
119
|
+
/** Receiver type name of a top-level extension fun. */
|
|
120
|
+
receiver?: string;
|
|
121
|
+
node: kt.Declaration;
|
|
122
|
+
}
|
|
123
|
+
interface DeclOpts {
|
|
124
|
+
name: string;
|
|
125
|
+
annotations?: ReadonlyArray<KtAnnotation>;
|
|
126
|
+
superTypes?: ReadonlyArray<string>;
|
|
127
|
+
visibility?: KtVisibility;
|
|
128
|
+
funs?: ReadonlyArray<KtFun>;
|
|
129
|
+
runtime?: boolean;
|
|
130
|
+
}
|
|
131
|
+
export declare function ktDataClass(opts: DeclOpts & {
|
|
132
|
+
properties: ReadonlyArray<KtProp>;
|
|
133
|
+
}): KtDecl;
|
|
134
|
+
export declare function ktClass(opts: DeclOpts & {
|
|
135
|
+
properties?: ReadonlyArray<KtProp>;
|
|
136
|
+
modifiers?: ReadonlyArray<KtClassModifier>;
|
|
137
|
+
}): KtDecl;
|
|
138
|
+
export declare function ktSealedClass(opts: DeclOpts & {
|
|
139
|
+
subclasses: ReadonlyArray<KtSealedSubclass>;
|
|
140
|
+
}): KtDecl;
|
|
141
|
+
export declare function ktObject(opts: DeclOpts & {
|
|
142
|
+
properties?: ReadonlyArray<KtProp>;
|
|
143
|
+
}): KtDecl;
|
|
144
|
+
export declare function ktInterface(opts: DeclOpts & {
|
|
145
|
+
funs: ReadonlyArray<KtFun>;
|
|
146
|
+
}): KtDecl;
|
|
147
|
+
export declare function ktEnum(opts: DeclOpts & {
|
|
148
|
+
entries: ReadonlyArray<KtEnumEntry>;
|
|
149
|
+
properties?: ReadonlyArray<KtProp>;
|
|
150
|
+
}): KtDecl;
|
|
151
|
+
export declare function ktTypeAlias(opts: {
|
|
152
|
+
name: string;
|
|
153
|
+
type: KtType;
|
|
154
|
+
visibility?: KtVisibility;
|
|
155
|
+
}): KtDecl;
|
|
156
|
+
export declare const ktTopLevelFun: (fn: KtFun) => KtDecl;
|
|
157
|
+
export interface KtFile {
|
|
158
|
+
pkg?: string;
|
|
159
|
+
imports: ReadonlyArray<string>;
|
|
160
|
+
decls: ReadonlyArray<KtDecl>;
|
|
161
|
+
}
|
|
162
|
+
export declare const ktFile: (opts: {
|
|
163
|
+
decls: ReadonlyArray<KtDecl>;
|
|
164
|
+
pkg?: string;
|
|
165
|
+
imports?: ReadonlyArray<string>;
|
|
166
|
+
}) => KtFile;
|
|
167
|
+
export {};
|
|
168
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { kt } from "@ir-kit/compiler-kotlin";
|
|
2
|
+
const f = kt.factory;
|
|
3
|
+
const K = kt.KotlinNodeKind;
|
|
4
|
+
const VISIBILITIES = new Set([
|
|
5
|
+
"public",
|
|
6
|
+
"internal",
|
|
7
|
+
"private",
|
|
8
|
+
"protected",
|
|
9
|
+
]);
|
|
10
|
+
const SIMPLE_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
|
+
/** Verbatim source fragment (defaults, annotation args). */
|
|
12
|
+
const raw = (text) => f.createIdentifier(text);
|
|
13
|
+
// Types
|
|
14
|
+
const named = (name) => f.createUserType(name);
|
|
15
|
+
export const ktString = named("String");
|
|
16
|
+
export const ktInt = named("Int");
|
|
17
|
+
export const ktLong = named("Long");
|
|
18
|
+
export const ktShort = named("Short");
|
|
19
|
+
export const ktByte = named("Byte");
|
|
20
|
+
export const ktDouble = named("Double");
|
|
21
|
+
export const ktFloat = named("Float");
|
|
22
|
+
export const ktBoolean = named("Boolean");
|
|
23
|
+
export const ktUnit = named("Unit");
|
|
24
|
+
export const ktAny = named("Any");
|
|
25
|
+
export const ktJsonElement = named("JsonElement");
|
|
26
|
+
export const ktNothing = named("Nothing");
|
|
27
|
+
export const ktByteArray = named("ByteArray");
|
|
28
|
+
export const ktNullable = (inner) => inner.kind === K.NullableType ? inner : f.createNullableType(inner);
|
|
29
|
+
export const ktList = (element) => f.createUserType("List", [element]);
|
|
30
|
+
export const ktMap = (key, value) => f.createUserType("Map", [key, value]);
|
|
31
|
+
export const ktRef = (name, args) => f.createUserType(name, args?.length ? args : undefined);
|
|
32
|
+
export const ktFunc = (params, returnType) => f.createFunctionType(params.map((type) => ({ type })), returnType);
|
|
33
|
+
/** `Pet` for `Pet` / `Pair<Pet, Response>`; `undefined` for composites. */
|
|
34
|
+
export const typeName = (t) => t.kind === K.UserType ? t.name : undefined;
|
|
35
|
+
export const typeArgs = (t) => t.kind === K.UserType ? (t.typeArguments ?? []) : [];
|
|
36
|
+
export const isUnit = (t) => typeName(t) === "Unit";
|
|
37
|
+
// Expressions
|
|
38
|
+
export const ktIdent = (name) => f.createIdentifier(name);
|
|
39
|
+
export const ktMember = (on, name) => f.createNavigationExpression(on, f.createIdentifier(name));
|
|
40
|
+
export const ktSafeMember = (on, name) => f.createNavigationExpression(on, f.createIdentifier(name), true);
|
|
41
|
+
export const ktIndex = (on, index) => f.createIndexingExpression(on, [index]);
|
|
42
|
+
export const ktNotNull = (on) => f.createPostfixUnaryExpression(on, "!!");
|
|
43
|
+
export const ktThis = f.createThisExpression();
|
|
44
|
+
export const ktStr = (value) => f.createStringLiteral([{ text: value }]);
|
|
45
|
+
export const ktIntLit = (value) => f.createLiteral(String(value), "int");
|
|
46
|
+
export const ktLongLit = (value) => f.createLiteral(`${value}L`, "long");
|
|
47
|
+
export const ktDoubleLit = (value) => {
|
|
48
|
+
const s = String(value);
|
|
49
|
+
return f.createLiteral(s.includes(".") ? s : `${s}.0`, "double");
|
|
50
|
+
};
|
|
51
|
+
export const ktBoolLit = (value) => f.createLiteral(String(value), "boolean");
|
|
52
|
+
export const ktNull = f.createLiteral("null", "null");
|
|
53
|
+
export const ktInterp = (parts) => f.createStringLiteral(parts.map((p) => {
|
|
54
|
+
if (typeof p === "string")
|
|
55
|
+
return { text: p };
|
|
56
|
+
const simple = p.kind !== K.Identifier || SIMPLE_IDENT.test(p.name);
|
|
57
|
+
return {
|
|
58
|
+
expression: simple ? p : f.createParenthesizedExpression(p),
|
|
59
|
+
};
|
|
60
|
+
}));
|
|
61
|
+
export const ktListLit = (items) => ktCall(ktIdent("listOf"), items.map((i) => ktArg(i)));
|
|
62
|
+
export const ktArg = (expression, name) => ({
|
|
63
|
+
expression,
|
|
64
|
+
name,
|
|
65
|
+
});
|
|
66
|
+
export const ktCall = (callee, args = [], trailingLambda, typeArgs) => f.createCallExpression(callee, args, typeArgs?.length ? typeArgs : undefined, trailingLambda);
|
|
67
|
+
export const ktLambda = (params, body) => f.createLambdaExpression(body, params.map((name) => ({ name })));
|
|
68
|
+
export const ktAs = (expr, type) => f.createAsExpression(expr, type);
|
|
69
|
+
export const ktAsSafe = (expr, type) => f.createAsExpression(expr, type, true);
|
|
70
|
+
export const ktBinOp = (op, left, right) => f.createBinaryExpression(left, op, right);
|
|
71
|
+
export const ktEq = (l, r) => ktBinOp("==", l, r);
|
|
72
|
+
export const ktNe = (l, r) => ktBinOp("!=", l, r);
|
|
73
|
+
export const ktElvis = (l, r) => f.createElvisExpression(l, r);
|
|
74
|
+
// Statements
|
|
75
|
+
export const ktVal = (name, expr, type) => f.createProperty(name, "val", type, expr);
|
|
76
|
+
export const ktVar = (name, expr, type) => f.createProperty(name, "var", type, expr);
|
|
77
|
+
export const ktAssign = (target, value) => f.createAssignment(target, value);
|
|
78
|
+
export const ktExprStmt = (expr) => f.createExpressionStatement(expr);
|
|
79
|
+
export const ktReturn = (expr) => f.createReturnStatement(expr);
|
|
80
|
+
export const ktThrow = (expr) => f.createThrowStatement(expr);
|
|
81
|
+
const block = (body) => f.createBlock(body);
|
|
82
|
+
export const ktIf = (cond, then, else_) => f.createIfStatement(cond, block(then), else_ && block(else_));
|
|
83
|
+
export const ktWhenCase = (patterns, body) => ({ conditions: patterns, body: block(body) });
|
|
84
|
+
export const ktWhen = (on, cases, default_) => f.createWhenStatement(default_ ? [...cases, { body: block(default_) }] : cases, on);
|
|
85
|
+
export const ktForIn = (name, source, body) => f.createForStatement([name], source, block(body));
|
|
86
|
+
export const ktCatch = (name, type, body) => ({
|
|
87
|
+
parameter: f.createParameter(name, type),
|
|
88
|
+
body: block(body),
|
|
89
|
+
});
|
|
90
|
+
export const ktTryCatch = (body, catches) => f.createTryExpression(block(body), catches);
|
|
91
|
+
export const ktFunParam = (opts) => ({ ...opts });
|
|
92
|
+
export const ktAnnotation = (name, arg) => f.createAnnotation(name, arg === undefined ? undefined : [ktArg(arg)]);
|
|
93
|
+
export function ktProp(opts) {
|
|
94
|
+
return f.createProperty(opts.name, opts.mutable ? "var" : "val", opts.type, opts.default === undefined ? undefined : raw(opts.default), undefined, [opts.visibility ?? "public"], opts.annotations);
|
|
95
|
+
}
|
|
96
|
+
/** Properties of data/enum/impl classes live in the primary constructor. */
|
|
97
|
+
const primaryConstructor = (props) => f.createPrimaryConstructor(props.map((p) => f.createParameter(p.name, p.type ?? ktAny, p.initializer, p.valOrVar, p.modifiers, p.annotations)));
|
|
98
|
+
const superTypes = (names) => names?.map((name) => ({ type: f.createUserType(name) }));
|
|
99
|
+
export function ktFun(opts) {
|
|
100
|
+
const abstract = opts.body === undefined;
|
|
101
|
+
const fn = f.createFunctionDeclaration(opts.name, opts.params.map((p) => f.createParameter(p.name, p.type, abstract || p.default === undefined ? undefined : raw(p.default))), isUnit(opts.returnType) ? undefined : opts.returnType, opts.body, undefined, [opts.visibility ?? "public", ...(opts.modifiers ?? [])], undefined, opts.receiver);
|
|
102
|
+
return opts.doc
|
|
103
|
+
? {
|
|
104
|
+
...fn,
|
|
105
|
+
leadingComments: opts.doc.split("\n").map((l) => `/** ${l} */`),
|
|
106
|
+
}
|
|
107
|
+
: fn;
|
|
108
|
+
}
|
|
109
|
+
export const ktEnumEntry = (name, arg, annotations) => f.createEnumEntry(name, arg === undefined ? undefined : [ktArg(arg)], undefined, annotations);
|
|
110
|
+
export function ktSealedSubclass(opts) {
|
|
111
|
+
return opts.variant === "object"
|
|
112
|
+
? f.createObjectDeclaration(opts.name, undefined, ["public"], opts.annotations)
|
|
113
|
+
: f.createClassDeclaration(opts.name, primaryConstructor(opts.properties ?? []), undefined, ["public", "data"], opts.annotations);
|
|
114
|
+
}
|
|
115
|
+
export function ktDataClass(opts) {
|
|
116
|
+
return {
|
|
117
|
+
kind: "dataClass",
|
|
118
|
+
name: opts.name,
|
|
119
|
+
runtime: opts.runtime,
|
|
120
|
+
// A data class needs at least one constructor property.
|
|
121
|
+
node: f.createClassDeclaration(opts.name, opts.properties.length ? primaryConstructor(opts.properties) : undefined, opts.funs, opts.properties.length
|
|
122
|
+
? [opts.visibility ?? "public", "data"]
|
|
123
|
+
: [opts.visibility ?? "public"], opts.annotations, superTypes(opts.superTypes)),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export function ktClass(opts) {
|
|
127
|
+
return {
|
|
128
|
+
kind: "class",
|
|
129
|
+
name: opts.name,
|
|
130
|
+
runtime: opts.runtime,
|
|
131
|
+
node: f.createClassDeclaration(opts.name, opts.properties?.length ? primaryConstructor(opts.properties) : undefined, opts.funs, [opts.visibility ?? "public", ...(opts.modifiers ?? [])], opts.annotations, superTypes(opts.superTypes)),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function ktSealedClass(opts) {
|
|
135
|
+
const parent = [{ type: f.createUserType(opts.name), arguments: [] }];
|
|
136
|
+
return {
|
|
137
|
+
kind: "sealedClass",
|
|
138
|
+
name: opts.name,
|
|
139
|
+
runtime: opts.runtime,
|
|
140
|
+
node: f.createClassDeclaration(opts.name, undefined, [
|
|
141
|
+
...opts.subclasses.map((sc) => ({ ...sc, superTypes: parent })),
|
|
142
|
+
...(opts.funs ?? []),
|
|
143
|
+
], [opts.visibility ?? "public", "sealed"], opts.annotations, superTypes(opts.superTypes)),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export function ktObject(opts) {
|
|
147
|
+
return {
|
|
148
|
+
kind: "object",
|
|
149
|
+
name: opts.name,
|
|
150
|
+
runtime: opts.runtime,
|
|
151
|
+
node: f.createObjectDeclaration(opts.name, [...(opts.properties ?? []), ...(opts.funs ?? [])], [opts.visibility ?? "public"], opts.annotations, superTypes(opts.superTypes)),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export function ktInterface(opts) {
|
|
155
|
+
return {
|
|
156
|
+
kind: "interface",
|
|
157
|
+
name: opts.name,
|
|
158
|
+
runtime: opts.runtime,
|
|
159
|
+
node: f.createClassDeclaration(opts.name, undefined, opts.funs.map((fn) => ({
|
|
160
|
+
...fn,
|
|
161
|
+
modifiers: fn.modifiers?.filter((m) => !VISIBILITIES.has(m)),
|
|
162
|
+
})), [opts.visibility ?? "public"], opts.annotations, superTypes(opts.superTypes), undefined, true),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
export function ktEnum(opts) {
|
|
166
|
+
return {
|
|
167
|
+
kind: "enum",
|
|
168
|
+
name: opts.name,
|
|
169
|
+
runtime: opts.runtime,
|
|
170
|
+
node: f.createClassDeclaration(opts.name, opts.properties?.length ? primaryConstructor(opts.properties) : undefined, opts.funs, [opts.visibility ?? "public", "enum"], opts.annotations, superTypes(opts.superTypes), opts.entries),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export function ktTypeAlias(opts) {
|
|
174
|
+
return {
|
|
175
|
+
kind: "typeAlias",
|
|
176
|
+
name: opts.name,
|
|
177
|
+
aliasOf: opts.type,
|
|
178
|
+
node: f.createTypeAlias(opts.name, opts.type, [
|
|
179
|
+
opts.visibility ?? "public",
|
|
180
|
+
]),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export const ktTopLevelFun = (fn) => ({
|
|
184
|
+
kind: "topLevelFun",
|
|
185
|
+
name: fn.name,
|
|
186
|
+
receiver: fn.receiverType && typeName(fn.receiverType),
|
|
187
|
+
node: fn,
|
|
188
|
+
});
|
|
189
|
+
export const ktFile = (opts) => ({
|
|
190
|
+
pkg: opts.pkg,
|
|
191
|
+
imports: opts.imports ?? [],
|
|
192
|
+
decls: opts.decls,
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAGd,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,KAAK,0BAA0B,GAAG,IAAI,CACpC,iBAAiB,EACjB,qBAAqB,CACtB,CAAC;AAEF,MAAM,WAAW,eACf,SAAQ,YAAY,EAClB,0BAA0B;IAC5B;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACjC,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAoD7E"}
|
package/dist/generate.js
CHANGED
|
@@ -2,18 +2,20 @@ import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { assertSafeOutputDir, defaultProjectName } from "@ir-kit/codegen-core";
|
|
4
4
|
import { extractSecuritySchemeNames, } from "@ir-kit/openapi";
|
|
5
|
-
import {
|
|
5
|
+
import { loadOpenAPI } from "@ir-kit/openapi-loader";
|
|
6
6
|
import { parseSpec } from "@ir-kit/openapi-tools/parse";
|
|
7
|
-
import {
|
|
7
|
+
import { newTypeNames } from "./ir/identifiers.js";
|
|
8
|
+
import { aliasesOf, operationsToDecls, schemasToDecls, } from "./ir/index.js";
|
|
8
9
|
import { buildRuntimeFiles } from "./ir/runtime/index.js";
|
|
9
10
|
import { buildGradleFile, buildKotlinProject, settingsGradleFile, } from "./project/index.js";
|
|
10
11
|
export async function generate(opts) {
|
|
11
|
-
const bundled = await
|
|
12
|
+
const bundled = await loadOpenAPI({
|
|
12
13
|
input: opts.input,
|
|
13
14
|
normalize: opts.normalize,
|
|
14
15
|
});
|
|
15
16
|
const ir = parseSpec(bundled);
|
|
16
|
-
const
|
|
17
|
+
const names = newTypeNames();
|
|
18
|
+
const schemaDecls = schemasToDecls(ir.components?.schemas ?? {}, names);
|
|
17
19
|
const opsResult = operationsToDecls(ir.paths, {
|
|
18
20
|
defaultTag: opts.defaultTag,
|
|
19
21
|
interfaceName: opts.interfaceName,
|
|
@@ -21,16 +23,14 @@ export async function generate(opts) {
|
|
|
21
23
|
interfaceOnly: opts.interfaceOnly,
|
|
22
24
|
openImpl: opts.openImpl,
|
|
23
25
|
securitySchemeNames: extractSecuritySchemeNames(bundled),
|
|
26
|
+
names,
|
|
27
|
+
aliases: new Map(aliasesOf(schemaDecls)),
|
|
24
28
|
});
|
|
25
29
|
const decls = [...schemaDecls, ...opsResult.decls];
|
|
26
30
|
const sdkFiles = buildKotlinProject(decls, opts);
|
|
27
31
|
const pkg = opts.packageName ?? "com.example.api";
|
|
28
32
|
const apiSubDir = (opts.layout ?? "split") === "flat" ? "" : "api";
|
|
29
|
-
const runtimeFiles = buildRuntimeFiles({
|
|
30
|
-
hasAuth: opsResult.needsAuth,
|
|
31
|
-
hasMultipart: opsResult.needsMultipart,
|
|
32
|
-
hasFormUrlEncoded: false,
|
|
33
|
-
}, runtimeSubPackage(pkg, apiSubDir)).map((rf) => ({
|
|
33
|
+
const runtimeFiles = buildRuntimeFiles({ hasMultipart: opsResult.needsMultipart }, runtimeSubPackage(pkg, apiSubDir)).map((rf) => ({
|
|
34
34
|
path: runtimePath(pkg, apiSubDir, rf.name),
|
|
35
35
|
content: rf.content,
|
|
36
36
|
}));
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EACL,0BAA0B,GAE3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
|
package/dist/ir/identifiers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Namespace } from "@ir-kit/codegen-core";
|
|
1
2
|
/**
|
|
2
3
|
* Kotlin-specific identifier transforms. Generic case helpers
|
|
3
4
|
* (`pascal`, `camel`, `safeIdent`, `safeCaseName`, `synthName`,
|
|
@@ -20,4 +21,10 @@ export declare function paramIdent(name: string): string;
|
|
|
20
21
|
* leading underscore if the result starts with a digit.
|
|
21
22
|
*/
|
|
22
23
|
export declare function enumEntryIdent(s: string): string;
|
|
24
|
+
/** `typeIdent` joined into the PascalCase form Kotlin's class-naming convention expects. */
|
|
25
|
+
export declare function kotlinTypeIdent(name: string): string;
|
|
26
|
+
/** Operation parameter name that cannot shadow a local of the generated method body. */
|
|
27
|
+
export declare function operationParamIdent(name: string): string;
|
|
28
|
+
/** Owns every top-level Kotlin type name for one generation run. */
|
|
29
|
+
export declare function newTypeNames(): Namespace;
|
|
23
30
|
//# sourceMappingURL=identifiers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/ir/identifiers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/ir/identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAGV,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;GAOG;AAEH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAuCD,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,oEAAoE;AACpE,wBAAgB,YAAY,IAAI,SAAS,CAKxC"}
|