@ir-kit/openapi-kotlin 0.1.1 → 1.0.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/dist/ir/impl/body.d.ts +8 -10
- package/dist/ir/impl/body.d.ts.map +1 -1
- package/dist/ir/impl/body.js +12 -15
- package/dist/ir/impl/body.js.map +1 -1
- package/dist/ir/operation/body.d.ts +8 -10
- package/dist/ir/operation/body.d.ts.map +1 -1
- package/dist/ir/operation/body.js +10 -13
- package/dist/ir/operation/body.js.map +1 -1
- package/dist/ir/operation/params.d.ts.map +1 -1
- package/dist/ir/operation/params.js +2 -2
- package/dist/ir/operation/params.js.map +1 -1
- package/dist/ir/operation/response.d.ts +4 -14
- package/dist/ir/operation/response.d.ts.map +1 -1
- package/dist/ir/operation/response.js +31 -44
- package/dist/ir/operation/response.js.map +1 -1
- package/dist/ir/operation/signature.d.ts +6 -2
- package/dist/ir/operation/signature.d.ts.map +1 -1
- package/dist/ir/operation/signature.js.map +1 -1
- package/dist/ir/schema.d.ts +11 -5
- package/dist/ir/schema.d.ts.map +1 -1
- package/dist/ir/schema.js +17 -13
- package/dist/ir/schema.js.map +1 -1
- package/dist/ir/type/index.d.ts +7 -18
- package/dist/ir/type/index.d.ts.map +1 -1
- package/dist/ir/type/index.js +3 -14
- package/dist/ir/type/index.js.map +1 -1
- package/dist/ir/type/primitive.d.ts +2 -7
- package/dist/ir/type/primitive.d.ts.map +1 -1
- package/dist/ir/type/primitive.js +5 -7
- package/dist/ir/type/primitive.js.map +1 -1
- package/dist/ir/type-ops.d.ts.map +1 -1
- package/dist/ir/type-ops.js +1 -1
- package/dist/ir/type-ops.js.map +1 -1
- package/package.json +4 -4
package/dist/ir/impl/body.d.ts
CHANGED
|
@@ -12,16 +12,14 @@ export interface BodyResult {
|
|
|
12
12
|
* Build the request body and re-set the HTTP method on `builder` to
|
|
13
13
|
* carry it. Dispatches on media type:
|
|
14
14
|
*
|
|
15
|
-
* - `application/json` (and `+json`) →
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* and ships it raw.
|
|
19
|
-
* - `multipart/form-data`
|
|
20
|
-
* `
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `FormBody.Builder()`, `add(name, value)` per property, take
|
|
24
|
-
* `formBody.build()` as the RequestBody.
|
|
15
|
+
* - `application/json` (and `+json`) →
|
|
16
|
+
* `client.json.encodeToString(<ser>, body)` then
|
|
17
|
+
* `.toRequestBody("application/json".toMediaType())`. Opaque
|
|
18
|
+
* schemas: impl receives `body: ByteArray` and ships it raw.
|
|
19
|
+
* - `multipart/form-data` + object → assemble a `MultipartFormBody`,
|
|
20
|
+
* `appendText` / `appendFile` per property, take `.build()`.
|
|
21
|
+
* - `application/x-www-form-urlencoded` + object → `FormBody.Builder()`
|
|
22
|
+
* + `add(name, value)` per property + `.build()`.
|
|
25
23
|
* - octet-stream / image / etc. → `body.toRequestBody("<mt>".toMediaType())`.
|
|
26
24
|
*
|
|
27
25
|
* Optional fields are wrapped in `if (<id> != null)`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/ir/impl/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/ir/impl/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAEL,KAAK,MAAM,EAYZ,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B;kDAC8C;IAC9C,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,UAAU,CA4BZ"}
|
package/dist/ir/impl/body.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classifyBody } from "@ir-kit/openapi";
|
|
1
|
+
import { classifyBody, isSchemaObject } from "@ir-kit/openapi";
|
|
2
2
|
import { ktArg, ktCall, ktExprStmt, ktIdent, ktIf, ktInterp, ktMember, ktNe, ktNull, ktStr, ktVal, } from "../../kt-dsl/index.js";
|
|
3
3
|
import { paramIdent } from "../identifiers.js";
|
|
4
4
|
import { setMethodWithBody } from "./request.js";
|
|
@@ -7,23 +7,20 @@ import { serializerFor } from "./serializer.js";
|
|
|
7
7
|
* Build the request body and re-set the HTTP method on `builder` to
|
|
8
8
|
* carry it. Dispatches on media type:
|
|
9
9
|
*
|
|
10
|
-
* - `application/json` (and `+json`) →
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* and ships it raw.
|
|
14
|
-
* - `multipart/form-data`
|
|
15
|
-
* `
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* `FormBody.Builder()`, `add(name, value)` per property, take
|
|
19
|
-
* `formBody.build()` as the RequestBody.
|
|
10
|
+
* - `application/json` (and `+json`) →
|
|
11
|
+
* `client.json.encodeToString(<ser>, body)` then
|
|
12
|
+
* `.toRequestBody("application/json".toMediaType())`. Opaque
|
|
13
|
+
* schemas: impl receives `body: ByteArray` and ships it raw.
|
|
14
|
+
* - `multipart/form-data` + object → assemble a `MultipartFormBody`,
|
|
15
|
+
* `appendText` / `appendFile` per property, take `.build()`.
|
|
16
|
+
* - `application/x-www-form-urlencoded` + object → `FormBody.Builder()`
|
|
17
|
+
* + `add(name, value)` per property + `.build()`.
|
|
20
18
|
* - octet-stream / image / etc. → `body.toRequestBody("<mt>".toMediaType())`.
|
|
21
19
|
*
|
|
22
20
|
* Optional fields are wrapped in `if (<id> != null)`.
|
|
23
21
|
*/
|
|
24
22
|
export function buildBodyStmts(body, method, bodyType) {
|
|
25
|
-
const shape = classifyBody(body);
|
|
26
|
-
const schema = body.schema;
|
|
23
|
+
const { shape, schema } = classifyBody(body);
|
|
27
24
|
switch (shape.kind) {
|
|
28
25
|
case "json-opaque":
|
|
29
26
|
return {
|
|
@@ -53,8 +50,6 @@ function toMediaTypeCall(mt) {
|
|
|
53
50
|
return ktCall(ktMember(ktStr(mt), "toMediaType"), []);
|
|
54
51
|
}
|
|
55
52
|
function emitJsonBody(method, bodyType) {
|
|
56
|
-
// val payload = client.json.encodeToString(<serializer>, body)
|
|
57
|
-
// builder.method("POST", payload.toRequestBody("application/json".toMediaType()))
|
|
58
53
|
return [
|
|
59
54
|
ktVal("payload", ktCall(ktMember(ktMember(ktIdent("client"), "json"), "encodeToString"), [
|
|
60
55
|
ktArg(serializerFor(bodyType)),
|
|
@@ -76,6 +71,8 @@ function emitMultipartBody(schema, method) {
|
|
|
76
71
|
ktVal("multipart", ktCall(ktIdent("MultipartFormBody"), [])),
|
|
77
72
|
];
|
|
78
73
|
for (const [propName, propSchema] of Object.entries(schema.properties ?? {})) {
|
|
74
|
+
if (!isSchemaObject(propSchema))
|
|
75
|
+
continue;
|
|
79
76
|
const id = paramIdent(propName);
|
|
80
77
|
const isBinary = propSchema.type === "string" && propSchema.format === "binary";
|
|
81
78
|
const append = isBinary
|
package/dist/ir/impl/body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../src/ir/impl/body.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../src/ir/impl/body.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,15 @@ import type { IR } from "@hey-api/shared";
|
|
|
2
2
|
import { type KtFunParam } from "../../kt-dsl/index.js";
|
|
3
3
|
import type { TypeCtx } from "../type/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* Resolve an `IR.BodyObject` into
|
|
6
|
-
*
|
|
5
|
+
* Resolve an `IR.BodyObject` into function parameters for both the
|
|
6
|
+
* interface signature and the impl method:
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* - `application/x-www-form-urlencoded` + object schema → one param per property
|
|
15
|
-
* - empty / octet-stream / image/* / unknown → `body: ByteArray` (caller pre-encodes)
|
|
8
|
+
* - `application/json` (and `+json`) → single `body: T`. Opaque
|
|
9
|
+
* schemas fall back to `ByteArray` since `Any` isn't `@Serializable`.
|
|
10
|
+
* - `multipart/form-data` + object → one param per property; binary
|
|
11
|
+
* fields become `ByteArray`.
|
|
12
|
+
* - `application/x-www-form-urlencoded` + object → one param per property.
|
|
13
|
+
* - empty / octet-stream / image / unknown → `body: ByteArray`.
|
|
16
14
|
*/
|
|
17
15
|
export declare function buildBodyParams(body: IR.BodyObject, ctx: TypeCtx): ReadonlyArray<KtFunParam>;
|
|
18
16
|
//# sourceMappingURL=body.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAO1C,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,EAAE,CAAC,UAAU,EACnB,GAAG,EAAE,OAAO,GACX,aAAa,CAAC,UAAU,CAAC,CAoB3B"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import { classifyBody, iterateObjectProperties } from "@ir-kit/openapi";
|
|
1
|
+
import { classifyBody, iterateObjectProperties, } from "@ir-kit/openapi";
|
|
2
2
|
import { ktByteArray, ktFunParam, ktNullable, } from "../../kt-dsl/index.js";
|
|
3
3
|
import { paramIdent } from "../identifiers.js";
|
|
4
4
|
import { schemaToType } from "../type/index.js";
|
|
5
5
|
/**
|
|
6
|
-
* Resolve an `IR.BodyObject` into
|
|
7
|
-
*
|
|
6
|
+
* Resolve an `IR.BodyObject` into function parameters for both the
|
|
7
|
+
* interface signature and the impl method:
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* - `application/x-www-form-urlencoded` + object schema → one param per property
|
|
16
|
-
* - empty / octet-stream / image/* / unknown → `body: ByteArray` (caller pre-encodes)
|
|
9
|
+
* - `application/json` (and `+json`) → single `body: T`. Opaque
|
|
10
|
+
* schemas fall back to `ByteArray` since `Any` isn't `@Serializable`.
|
|
11
|
+
* - `multipart/form-data` + object → one param per property; binary
|
|
12
|
+
* fields become `ByteArray`.
|
|
13
|
+
* - `application/x-www-form-urlencoded` + object → one param per property.
|
|
14
|
+
* - empty / octet-stream / image / unknown → `body: ByteArray`.
|
|
17
15
|
*/
|
|
18
16
|
export function buildBodyParams(body, ctx) {
|
|
19
|
-
const shape = classifyBody(body);
|
|
20
|
-
const schema = body.schema;
|
|
17
|
+
const { shape, schema } = classifyBody(body);
|
|
21
18
|
switch (shape.kind) {
|
|
22
19
|
case "json-opaque":
|
|
23
20
|
return [ktFunParam({ name: "body", type: ktByteArray })];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../src/ir/operation/body.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../src/ir/operation/body.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAmB,EACnB,GAAY;IAEZ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAE7C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,YAAY;YACf,OAAO;gBACL,UAAU,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;iBAC3D,CAAC;aACH,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC3E,KAAK,wBAAwB;YAC3B,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,QAAQ;YACX,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAc,EACd,GAAY,EACZ,iBAA0B;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CACpD,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChE,MAAM,CAAC,GACL,iBAAiB,IAAI,QAAQ;YAC3B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,UAAU,CAAC;YAChB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAClC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACvC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,uBAAuB,CAAC;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,EAAE,CAAC,eAAe,EACtB,GAAG,EAAE,OAAO,GACX;IAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAiBnD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { collectLocatedParams } from "@ir-kit/openapi";
|
|
1
|
+
import { collectLocatedParams, fromHeyApi, } from "@ir-kit/openapi";
|
|
2
2
|
import { ktFunParam, ktNullable } from "../../kt-dsl/index.js";
|
|
3
3
|
import { paramIdent } from "../identifiers.js";
|
|
4
4
|
import { schemaToType } from "../type/index.js";
|
|
@@ -13,7 +13,7 @@ export function buildNonBodyParams(op, ctx) {
|
|
|
13
13
|
const located = collectLocatedParams(op).filter((l) => l.loc !== "cookie");
|
|
14
14
|
located.sort((a, b) => Number(!a.param.required) - Number(!b.param.required));
|
|
15
15
|
const params = located.map(({ param: p }) => {
|
|
16
|
-
const t = schemaToType(p.schema, {
|
|
16
|
+
const t = schemaToType(fromHeyApi(p.schema), {
|
|
17
17
|
...ctx,
|
|
18
18
|
propPath: ["param", p.name],
|
|
19
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/ir/operation/params.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/ir/operation/params.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,UAAU,GAEX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAmB,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAsB,EACtB,GAAY;IAEZ,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;YAC3C,GAAG,GAAG;YACN,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;SAC5B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;YAChB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;SACzC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -5,22 +5,12 @@ import type { ResponseCase } from "./signature.js";
|
|
|
5
5
|
export interface ResolvedReturn {
|
|
6
6
|
type: KtType;
|
|
7
7
|
/**
|
|
8
|
-
* Per-status
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* dispatch on `response.code` to pick the matching subclass.
|
|
8
|
+
* Per-status cases for multi-2xx ops. Empty for single-2xx — the
|
|
9
|
+
* impl decodes straight into `type`. Non-empty means `type` is a
|
|
10
|
+
* `ktRef` to an emitted sealed-class hierarchy and the impl
|
|
11
|
+
* dispatches on `response.code`.
|
|
13
12
|
*/
|
|
14
13
|
cases: ReadonlyArray<ResponseCase>;
|
|
15
14
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Resolve the success-path return shape for an op.
|
|
18
|
-
*
|
|
19
|
-
* - 0 successful responses → `Unit`
|
|
20
|
-
* - 1 successful response, empty schema → `Unit`
|
|
21
|
-
* - 1 successful response, schema → schema type
|
|
22
|
-
* - 2+ successful responses → emit `<Owner>_Response`
|
|
23
|
-
* sealed-class hierarchy, return a ref + the per-status case info
|
|
24
|
-
*/
|
|
25
15
|
export declare function returnTypeFor(op: IR.OperationObject, ctx: TypeCtx): ResolvedReturn;
|
|
26
16
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAI1C,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CACpC;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,EAAE,CAAC,eAAe,EACtB,GAAG,EAAE,OAAO,GACX,cAAc,CA2ChB"}
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { synthName } from "@ir-kit/codegen-core";
|
|
2
|
-
import { classifyReturnShape
|
|
2
|
+
import { classifyReturnShape } from "@ir-kit/openapi";
|
|
3
3
|
import { ktProp, ktRef, ktSealedClass, ktSealedSubclass, ktUnit, } from "../../kt-dsl/index.js";
|
|
4
4
|
import { schemaToType } from "../type/index.js";
|
|
5
|
-
/**
|
|
6
|
-
* Resolve the success-path return shape for an op.
|
|
7
|
-
*
|
|
8
|
-
* - 0 successful responses → `Unit`
|
|
9
|
-
* - 1 successful response, empty schema → `Unit`
|
|
10
|
-
* - 1 successful response, schema → schema type
|
|
11
|
-
* - 2+ successful responses → emit `<Owner>_Response`
|
|
12
|
-
* sealed-class hierarchy, return a ref + the per-status case info
|
|
13
|
-
*/
|
|
14
5
|
export function returnTypeFor(op, ctx) {
|
|
15
6
|
const shape = classifyReturnShape(op);
|
|
16
7
|
switch (shape.kind) {
|
|
@@ -18,40 +9,36 @@ export function returnTypeFor(op, ctx) {
|
|
|
18
9
|
return { type: ktUnit, cases: [] };
|
|
19
10
|
case "single":
|
|
20
11
|
return { type: schemaToType(shape.schema, ctx), cases: [] };
|
|
21
|
-
case "multi":
|
|
22
|
-
|
|
12
|
+
case "multi": {
|
|
13
|
+
const sealedName = synthName(ctx.ownerName, ["response"]);
|
|
14
|
+
const cases = shape.cases.map(({ statusCode, schema }) => {
|
|
15
|
+
const caseName = `Status${statusCode}`;
|
|
16
|
+
if (!schema)
|
|
17
|
+
return { statusCode, caseName };
|
|
18
|
+
const payloadType = schemaToType(schema, {
|
|
19
|
+
...ctx,
|
|
20
|
+
propPath: ["response", statusCode],
|
|
21
|
+
});
|
|
22
|
+
return { statusCode, caseName, payloadType };
|
|
23
|
+
});
|
|
24
|
+
ctx.emit(ktSealedClass({
|
|
25
|
+
name: sealedName,
|
|
26
|
+
subclasses: cases.map((c) => c.payloadType
|
|
27
|
+
? ktSealedSubclass({
|
|
28
|
+
variant: "class",
|
|
29
|
+
name: c.caseName,
|
|
30
|
+
properties: [
|
|
31
|
+
ktProp({
|
|
32
|
+
name: "value",
|
|
33
|
+
type: c.payloadType,
|
|
34
|
+
inPrimary: true,
|
|
35
|
+
}),
|
|
36
|
+
],
|
|
37
|
+
})
|
|
38
|
+
: ktSealedSubclass({ variant: "object", name: c.caseName })),
|
|
39
|
+
}));
|
|
40
|
+
return { type: ktRef(sealedName), cases };
|
|
41
|
+
}
|
|
23
42
|
}
|
|
24
43
|
}
|
|
25
|
-
function emitMultiResponseSealed(responses, ctx) {
|
|
26
|
-
const sealedName = synthName(ctx.ownerName, ["response"]);
|
|
27
|
-
const cases = responses.map(([code, resp]) => {
|
|
28
|
-
const schema = resp?.schema;
|
|
29
|
-
const isVoid = !schema || isMeaningless(schema);
|
|
30
|
-
const caseName = `Status${code}`;
|
|
31
|
-
if (isVoid)
|
|
32
|
-
return { statusCode: code, caseName };
|
|
33
|
-
const payloadType = schemaToType(schema, {
|
|
34
|
-
...ctx,
|
|
35
|
-
propPath: ["response", code],
|
|
36
|
-
});
|
|
37
|
-
return { statusCode: code, caseName, payloadType };
|
|
38
|
-
});
|
|
39
|
-
ctx.emit(ktSealedClass({
|
|
40
|
-
name: sealedName,
|
|
41
|
-
subclasses: cases.map((c) => c.payloadType
|
|
42
|
-
? ktSealedSubclass({
|
|
43
|
-
variant: "class",
|
|
44
|
-
name: c.caseName,
|
|
45
|
-
properties: [
|
|
46
|
-
ktProp({
|
|
47
|
-
name: "value",
|
|
48
|
-
type: c.payloadType,
|
|
49
|
-
inPrimary: true,
|
|
50
|
-
}),
|
|
51
|
-
],
|
|
52
|
-
})
|
|
53
|
-
: ktSealedSubclass({ variant: "object", name: c.caseName })),
|
|
54
|
-
}));
|
|
55
|
-
return { type: ktRef(sealedName), cases };
|
|
56
|
-
}
|
|
57
44
|
//# sourceMappingURL=response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/ir/operation/response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/ir/operation/response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAEL,MAAM,EACN,KAAK,EACL,aAAa,EACb,gBAAgB,EAChB,MAAM,GACP,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAchD,MAAM,UAAU,aAAa,CAC3B,EAAsB,EACtB,GAAY;IAEZ,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAC9D,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAmB,KAAK,CAAC,KAAK,CAAC,GAAG,CAC3C,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;gBACzB,MAAM,QAAQ,GAAG,SAAS,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM;oBAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE;oBACvC,GAAG,GAAG;oBACN,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;iBACnC,CAAC,CAAC;gBACH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC/C,CAAC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CACN,aAAa,CAAC;gBACZ,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,WAAW;oBACX,CAAC,CAAC,gBAAgB,CAAC;wBACf,OAAO,EAAE,OAAO;wBAChB,IAAI,EAAE,CAAC,CAAC,QAAQ;wBAChB,UAAU,EAAE;4BACV,MAAM,CAAC;gCACL,IAAI,EAAE,OAAO;gCACb,IAAI,EAAE,CAAC,CAAC,WAAW;gCACnB,SAAS,EAAE,IAAI;6BAChB,CAAC;yBACH;qBACF,CAAC;oBACJ,CAAC,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC9D;aACF,CAAC,CACH,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IR } from "@hey-api/shared";
|
|
2
2
|
import type { HttpMethod } from "@ir-kit/openapi";
|
|
3
|
-
import { type
|
|
3
|
+
import { type LocatedParam } from "@ir-kit/openapi";
|
|
4
4
|
import { type KtFunParam, type KtType } from "../../kt-dsl/index.js";
|
|
5
5
|
import type { TypeCtx } from "../type/index.js";
|
|
6
6
|
export interface OperationSignature {
|
|
@@ -23,7 +23,11 @@ export interface OperationSignature {
|
|
|
23
23
|
* into the matching sealed-subclass. `payloadType` is `undefined` for
|
|
24
24
|
* empty bodies (e.g. 204).
|
|
25
25
|
*/
|
|
26
|
-
export
|
|
26
|
+
export interface ResponseCase {
|
|
27
|
+
statusCode: string;
|
|
28
|
+
caseName: string;
|
|
29
|
+
payloadType?: KtType;
|
|
30
|
+
}
|
|
27
31
|
/**
|
|
28
32
|
* One source of truth for `params + returnType + doc` so the interface
|
|
29
33
|
* declaration and the impl class share the same signature shape.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAEL,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/ir/operation/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,MAAM,EAGZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKhD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3C,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,EAAE,CAAC,eAAe,EACtB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,WAAW,GAAE,aAAa,CAAC,MAAM,CAAM,GACtC,kBAAkB,CA0BpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/ir/operation/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/ir/operation/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,cAAc,EAEd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,UAAU,EACV,KAAK,GACN,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA6B9C;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAsB,EACtB,MAAkB,EAClB,OAAe,EACf,IAAqB,EACrB,cAAqC,EAAE;IAEvC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEvD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE;QACnE,GAAG,GAAG;QACN,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;QACjB,SAAS;QACT,MAAM;QACN,UAAU;QACV,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC;QACtC,aAAa,EAAE,OAAO;QACtB,EAAE;QACF,MAAM;QACN,OAAO;QACP,mBAAmB,EAAE,WAAW;QAChC,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,YAAY;IACnB,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC"}
|
package/dist/ir/schema.d.ts
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { IR } from "@hey-api/shared";
|
|
2
2
|
import { type KtDecl } from "../kt-dsl/index.js";
|
|
3
3
|
/**
|
|
4
|
-
* Translate `IR.Model.components.schemas` into Kotlin decls.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Translate `IR.Model.components.schemas` into Kotlin decls.
|
|
5
|
+
*
|
|
6
|
+
* - object schemas with properties → `@Serializable` data class
|
|
7
|
+
* - enum schemas → `enum class(val raw: String)` (or `typealias = Int`
|
|
8
|
+
* for integer enums; kotlinx can't round-trip integer enums)
|
|
9
|
+
* - object schemas with only `additionalProperties` → typealias to
|
|
10
|
+
* `Map<String, V>`
|
|
11
|
+
* - everything else → typealias to the dispatcher's resolved type
|
|
12
|
+
*
|
|
13
|
+
* Schemas come in as hey-api's `IR.SchemaObject` and are folded to
|
|
14
|
+
* canonical {@link Schema} at the boundary.
|
|
9
15
|
*/
|
|
10
16
|
export declare function schemasToDecls(schemas: Record<string, IR.SchemaObject>): KtDecl[];
|
|
11
17
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/ir/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,oBAAoB,CAAC;AAG5B
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,GACvC,MAAM,EAAE,CA2CV"}
|
package/dist/ir/schema.js
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
import { refName } from "@ir-kit/openapi";
|
|
1
|
+
import { fromHeyApi, refName } from "@ir-kit/openapi";
|
|
2
2
|
import { ktAny, ktMap, ktRef, ktString, ktTypeAlias, } from "../kt-dsl/index.js";
|
|
3
3
|
import { buildEnumFromIR, buildStruct, schemaToType } from "./type/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* Translate `IR.Model.components.schemas` into Kotlin decls.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Translate `IR.Model.components.schemas` into Kotlin decls.
|
|
6
|
+
*
|
|
7
|
+
* - object schemas with properties → `@Serializable` data class
|
|
8
|
+
* - enum schemas → `enum class(val raw: String)` (or `typealias = Int`
|
|
9
|
+
* for integer enums; kotlinx can't round-trip integer enums)
|
|
10
|
+
* - object schemas with only `additionalProperties` → typealias to
|
|
11
|
+
* `Map<String, V>`
|
|
12
|
+
* - everything else → typealias to the dispatcher's resolved type
|
|
13
|
+
*
|
|
14
|
+
* Schemas come in as hey-api's `IR.SchemaObject` and are folded to
|
|
15
|
+
* canonical {@link Schema} at the boundary.
|
|
10
16
|
*/
|
|
11
17
|
export function schemasToDecls(schemas) {
|
|
12
18
|
const decls = [];
|
|
13
19
|
const emit = (d) => decls.push(d);
|
|
14
|
-
for (const [name,
|
|
20
|
+
for (const [name, heySchema] of Object.entries(schemas)) {
|
|
21
|
+
const schema = fromHeyApi(heySchema);
|
|
15
22
|
if (schema.$ref) {
|
|
16
23
|
decls.push(ktTypeAlias({ name, type: ktRef(refName(schema.$ref)) }));
|
|
17
24
|
continue;
|
|
18
25
|
}
|
|
19
|
-
|
|
26
|
+
const isEnum = Array.isArray(schema.enum) && schema.enum.length > 0;
|
|
27
|
+
if (isEnum) {
|
|
20
28
|
buildEnumFromIR(name, schema, emit);
|
|
21
29
|
continue;
|
|
22
30
|
}
|
|
@@ -26,11 +34,7 @@ export function schemasToDecls(schemas) {
|
|
|
26
34
|
}
|
|
27
35
|
if (schema.type === "object") {
|
|
28
36
|
const ap = schema.additionalProperties;
|
|
29
|
-
const sealed = ap === false
|
|
30
|
-
(typeof ap === "object" &&
|
|
31
|
-
(ap.type === "void" ||
|
|
32
|
-
ap.type === "never" ||
|
|
33
|
-
ap.type === "undefined"));
|
|
37
|
+
const sealed = ap === false;
|
|
34
38
|
if (sealed) {
|
|
35
39
|
decls.push(buildStruct(name, schema, { emit }));
|
|
36
40
|
continue;
|
package/dist/ir/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAe,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAEL,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAwC;IAExC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,CAAC;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GACb,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ;gBAC1B,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CACR,WAAW,CAAC;YACV,IAAI;YACJ,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SACpE,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/ir/type/index.d.ts
CHANGED
|
@@ -1,27 +1,16 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Schema } from "@ir-kit/openapi";
|
|
2
2
|
import type { KtDecl } from "../../kt-dsl/decl/types.js";
|
|
3
3
|
import type { KtType } from "../../kt-dsl/index.js";
|
|
4
4
|
import type { TypeCtx } from "./context.js";
|
|
5
5
|
export type { TypeCtx } from "./context.js";
|
|
6
6
|
/**
|
|
7
|
-
* Top-level dispatch from
|
|
8
|
-
* inline objects/enums get promoted to top-level decls
|
|
9
|
-
*
|
|
10
|
-
* Kotlin ops record bound.
|
|
7
|
+
* Top-level dispatch from canonical {@link Schema} to a `KtType`.
|
|
8
|
+
* Side-effects: inline objects / enums get promoted to top-level decls
|
|
9
|
+
* via `ctx.emit`.
|
|
11
10
|
*/
|
|
12
|
-
export declare function schemaToType(schema:
|
|
13
|
-
|
|
14
|
-
* Build a top-level Kotlin data class from an object-shaped IR schema
|
|
15
|
-
* — used by `schemasToDecls` for `components.schemas` entries where
|
|
16
|
-
* the name is given. Returns the decl; caller decides whether to emit.
|
|
17
|
-
*/
|
|
18
|
-
export declare function buildStruct(name: string, schema: IR.SchemaObject, ctx: {
|
|
11
|
+
export declare function schemaToType(schema: Schema, ctx: TypeCtx): KtType;
|
|
12
|
+
export declare function buildStruct(name: string, schema: Schema, ctx: {
|
|
19
13
|
emit: (d: KtDecl) => void;
|
|
20
14
|
}): KtDecl;
|
|
21
|
-
|
|
22
|
-
* Build a top-level Kotlin enum (`enum class(val raw: String)`) or
|
|
23
|
-
* integer-degrade typealias from an enum-typed IR schema. Decls are
|
|
24
|
-
* pushed via `emit`; a ref to the named type is returned.
|
|
25
|
-
*/
|
|
26
|
-
export declare function buildEnumFromIR(name: string, schema: IR.SchemaObject, emit: (d: KtDecl) => void): KtType;
|
|
15
|
+
export declare function buildEnumFromIR(name: string, schema: Schema, emit: (d: KtDecl) => void): KtType;
|
|
27
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAEjE;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACjC,MAAM,CAUR;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACxB,MAAM,CAMR"}
|
package/dist/ir/type/index.js
CHANGED
|
@@ -2,29 +2,18 @@ import { classifyEnumLiterals, iterateObjectProperties, schemaToType as sharedSc
|
|
|
2
2
|
import { getEnumLiterals } from "@ir-kit/openapi-tools";
|
|
3
3
|
import { ktOps } from "../type-ops.js";
|
|
4
4
|
/**
|
|
5
|
-
* Top-level dispatch from
|
|
6
|
-
* inline objects/enums get promoted to top-level decls
|
|
7
|
-
*
|
|
8
|
-
* Kotlin ops record bound.
|
|
5
|
+
* Top-level dispatch from canonical {@link Schema} to a `KtType`.
|
|
6
|
+
* Side-effects: inline objects / enums get promoted to top-level decls
|
|
7
|
+
* via `ctx.emit`.
|
|
9
8
|
*/
|
|
10
9
|
export function schemaToType(schema, ctx) {
|
|
11
10
|
return sharedSchemaToType(schema, ctx, ktOps);
|
|
12
11
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Build a top-level Kotlin data class from an object-shaped IR schema
|
|
15
|
-
* — used by `schemasToDecls` for `components.schemas` entries where
|
|
16
|
-
* the name is given. Returns the decl; caller decides whether to emit.
|
|
17
|
-
*/
|
|
18
12
|
export function buildStruct(name, schema, ctx) {
|
|
19
13
|
const properties = Array.from(iterateObjectProperties(schema));
|
|
20
14
|
const dispatch = (s, c) => sharedSchemaToType(s, c, ktOps);
|
|
21
15
|
return ktOps.buildStructDecl(name, properties, { emit: ctx.emit, ownerName: name, propPath: [] }, dispatch);
|
|
22
16
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Build a top-level Kotlin enum (`enum class(val raw: String)`) or
|
|
25
|
-
* integer-degrade typealias from an enum-typed IR schema. Decls are
|
|
26
|
-
* pushed via `emit`; a ref to the named type is returned.
|
|
27
|
-
*/
|
|
28
17
|
export function buildEnumFromIR(name, schema, emit) {
|
|
29
18
|
const rawValues = getEnumLiterals(schema);
|
|
30
19
|
const kind = classifyEnumLiterals(rawValues, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EAEvB,YAAY,IAAI,kBAAkB,GACnC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAKvC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,GAAY;IACvD,OAAO,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,MAAc,EACd,GAAkC;IAElC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAU,EAAU,EAAE,CACjD,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,eAAe,CAC1B,IAAI,EACJ,UAAU,EACV,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EACjD,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAc,EACd,IAAyB;IAEzB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,IAAI,KAAK,SAAS;QACpB,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,SAAqB,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,SAAqB,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Schema } from "@ir-kit/openapi";
|
|
2
2
|
import { type KtType } from "../../kt-dsl/index.js";
|
|
3
|
-
|
|
4
|
-
* Map a primitive `IR.SchemaObject.type` (with optional `format`) to the
|
|
5
|
-
* matching Kotlin type. Returns `undefined` for non-primitive types so
|
|
6
|
-
* the dispatcher can fall through.
|
|
7
|
-
*/
|
|
8
|
-
export declare function typeForPrimitive(s: IR.SchemaObject): KtType | undefined;
|
|
3
|
+
export declare function typeForPrimitive(s: Schema): KtType | undefined;
|
|
9
4
|
//# sourceMappingURL=primitive.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/ir/type/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/ir/type/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EACL,KAAK,MAAM,EASZ,MAAM,uBAAuB,CAAC;AA8B/B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB9D"}
|
|
@@ -3,7 +3,7 @@ import { ktBoolean, ktByteArray, ktDouble, ktFloat, ktInt, ktLong, ktRef, ktStri
|
|
|
3
3
|
* OpenAPI string `format` → Kotlin / kotlinx-datetime / `String` type.
|
|
4
4
|
* Unknown formats fall back to `String`.
|
|
5
5
|
*
|
|
6
|
-
* - `date-time` → `Instant` (kotlinx-datetime
|
|
6
|
+
* - `date-time` → `Instant` (kotlinx-datetime, built-in
|
|
7
7
|
* `@Serializable` serializer).
|
|
8
8
|
* - `date` → `LocalDate` (kotlinx-datetime, same).
|
|
9
9
|
* - `uuid` / `uri` / `url` → `String`. kotlinx-serialization has no
|
|
@@ -26,13 +26,11 @@ function typeForStringFormat(format) {
|
|
|
26
26
|
return ktString;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Map a primitive `IR.SchemaObject.type` (with optional `format`) to the
|
|
31
|
-
* matching Kotlin type. Returns `undefined` for non-primitive types so
|
|
32
|
-
* the dispatcher can fall through.
|
|
33
|
-
*/
|
|
34
29
|
export function typeForPrimitive(s) {
|
|
35
|
-
|
|
30
|
+
const t = Array.isArray(s.type)
|
|
31
|
+
? s.type.find((x) => x !== "null")
|
|
32
|
+
: s.type;
|
|
33
|
+
switch (t) {
|
|
36
34
|
case "string":
|
|
37
35
|
return typeForStringFormat(s.format);
|
|
38
36
|
case "integer":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../../src/ir/type/primitive.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../../src/ir/type/primitive.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,SAAS,mBAAmB,CAAC,MAA0B;IACrD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,MAAM,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-ops.d.ts","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"type-ops.d.ts","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,KAAK,MAAM,EAeZ,MAAM,oBAAoB,CAAC;AAK5B;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAuEjD,CAAC"}
|
package/dist/ir/type-ops.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { synthName } from "@ir-kit/codegen-core";
|
|
2
|
-
import { assertNoEnumCollisions } from "@ir-kit/openapi";
|
|
2
|
+
import { assertNoEnumCollisions, } from "@ir-kit/openapi";
|
|
3
3
|
import { ktAnnotation, ktAny, ktDataClass, ktEnum, ktEnumEntry, ktInt, ktList, ktMap, ktNullable, ktProp, ktRef, ktString, ktTypeAlias, ktUnit, } from "../kt-dsl/index.js";
|
|
4
4
|
import { enumEntryIdent } from "./identifiers.js";
|
|
5
5
|
import { typeForPrimitive } from "./type/primitive.js";
|
package/dist/ir/type-ops.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-ops.js","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"type-ops.js","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,sBAAsB,GAGvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,YAAY,EACZ,KAAK,EACL,WAAW,EACX,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,GACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAoC;IACpD,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC1C,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM;IACtB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;IACpB,mCAAmC;IACnC,eAAe,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;IACxC,iEAAiE;IACjE,kBAAkB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACtC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;IACnE,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,aAAa,EAAE,gBAAgB;IAC/B,4DAA4D;IAC5D,SAAS;IACT,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE;YAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAoB,EAAE;gBACvC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,CAAC,eAAe,CAAC;aAC5B,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAC3B,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACtC,WAAW,EAAE,MAAM,CAAC,OAAO;oBACzB,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,OAAO,WAAW,CAAC;YACjB,IAAI;YACJ,WAAW,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAC3C,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IACD,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC;YAC/B,GAAG;SACJ,CAAC,CAAC,CAAC;QACJ,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CACjD,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC3C,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAChD,CAAC,CACH,CAAC;QACF,IAAI,CACF,MAAM,CAAC;YACL,IAAI;YACJ,WAAW,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAC3C,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO;SACR,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,2DAA2D;IAC3D,gEAAgE;IAChE,2DAA2D;IAC3D,eAAe,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;QAC1C,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ir-kit/openapi-kotlin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Generate idiomatic Kotlin (OkHttp + kotlinx-serialization + suspend) client SDKs from an OpenAPI 3.x spec.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openapi",
|
|
@@ -49,18 +49,18 @@
|
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@hey-api/shared": ">=0.3.0",
|
|
51
51
|
"@hey-api/spec-types": ">=0.2.0",
|
|
52
|
-
"@ir-kit/openapi-tools": ">=0.
|
|
52
|
+
"@ir-kit/openapi-tools": ">=0.2.0"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@ir-kit/codegen-core": "0.1.0",
|
|
56
|
-
"@ir-kit/openapi": "0.
|
|
56
|
+
"@ir-kit/openapi": "0.3.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@hey-api/shared": "^0.4.2",
|
|
60
60
|
"@hey-api/spec-types": "^0.2.0",
|
|
61
61
|
"@types/node": "^22",
|
|
62
62
|
"vitest": "^4.0.0",
|
|
63
|
-
"@ir-kit/openapi-tools": "0.
|
|
63
|
+
"@ir-kit/openapi-tools": "0.2.0",
|
|
64
64
|
"@ir-kit/tsconfig": "0.0.0"
|
|
65
65
|
},
|
|
66
66
|
"engines": {
|