@ir-kit/openapi-kotlin 2.0.0 → 3.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.
Files changed (297) hide show
  1. package/README.md +13 -13
  2. package/dist/ast/index.d.ts +152 -0
  3. package/dist/ast/index.d.ts.map +1 -0
  4. package/dist/ast/index.js +159 -0
  5. package/dist/ast/index.js.map +1 -0
  6. package/dist/generate.d.ts +1 -1
  7. package/dist/generate.d.ts.map +1 -1
  8. package/dist/generate.js +13 -27
  9. package/dist/generate.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/ir/identifiers.d.ts +7 -0
  15. package/dist/ir/identifiers.d.ts.map +1 -1
  16. package/dist/ir/identifiers.js +92 -3
  17. package/dist/ir/identifiers.js.map +1 -1
  18. package/dist/ir/impl/body.d.ts +4 -3
  19. package/dist/ir/impl/body.d.ts.map +1 -1
  20. package/dist/ir/impl/body.js +36 -37
  21. package/dist/ir/impl/body.js.map +1 -1
  22. package/dist/ir/impl/decode.d.ts +3 -2
  23. package/dist/ir/impl/decode.d.ts.map +1 -1
  24. package/dist/ir/impl/decode.js +16 -16
  25. package/dist/ir/impl/decode.js.map +1 -1
  26. package/dist/ir/impl/headers.d.ts +1 -1
  27. package/dist/ir/impl/headers.d.ts.map +1 -1
  28. package/dist/ir/impl/headers.js +3 -3
  29. package/dist/ir/impl/headers.js.map +1 -1
  30. package/dist/ir/impl/index.d.ts +5 -2
  31. package/dist/ir/impl/index.d.ts.map +1 -1
  32. package/dist/ir/impl/index.js +6 -7
  33. package/dist/ir/impl/index.js.map +1 -1
  34. package/dist/ir/impl/request.d.ts +6 -6
  35. package/dist/ir/impl/request.d.ts.map +1 -1
  36. package/dist/ir/impl/request.js +18 -8
  37. package/dist/ir/impl/request.js.map +1 -1
  38. package/dist/ir/impl/serializer.d.ts +4 -2
  39. package/dist/ir/impl/serializer.d.ts.map +1 -1
  40. package/dist/ir/impl/serializer.js +41 -60
  41. package/dist/ir/impl/serializer.js.map +1 -1
  42. package/dist/ir/impl/url.d.ts +1 -1
  43. package/dist/ir/impl/url.d.ts.map +1 -1
  44. package/dist/ir/impl/url.js +4 -4
  45. package/dist/ir/impl/url.js.map +1 -1
  46. package/dist/ir/index.d.ts +1 -1
  47. package/dist/ir/index.d.ts.map +1 -1
  48. package/dist/ir/index.js +1 -1
  49. package/dist/ir/index.js.map +1 -1
  50. package/dist/ir/operation/body.d.ts +1 -1
  51. package/dist/ir/operation/body.d.ts.map +1 -1
  52. package/dist/ir/operation/body.js +3 -3
  53. package/dist/ir/operation/body.js.map +1 -1
  54. package/dist/ir/operation/params.d.ts +1 -1
  55. package/dist/ir/operation/params.d.ts.map +1 -1
  56. package/dist/ir/operation/params.js +3 -3
  57. package/dist/ir/operation/params.js.map +1 -1
  58. package/dist/ir/operation/response.d.ts +3 -1
  59. package/dist/ir/operation/response.d.ts.map +1 -1
  60. package/dist/ir/operation/response.js +3 -4
  61. package/dist/ir/operation/response.js.map +1 -1
  62. package/dist/ir/operation/signature.d.ts +4 -2
  63. package/dist/ir/operation/signature.d.ts.map +1 -1
  64. package/dist/ir/operation/signature.js +5 -4
  65. package/dist/ir/operation/signature.js.map +1 -1
  66. package/dist/ir/operations.d.ts +7 -1
  67. package/dist/ir/operations.d.ts.map +1 -1
  68. package/dist/ir/operations.js +14 -17
  69. package/dist/ir/operations.js.map +1 -1
  70. package/dist/ir/runtime/index.d.ts +1 -1
  71. package/dist/ir/runtime/index.d.ts.map +1 -1
  72. package/dist/ir/runtime/index.js +1 -1
  73. package/dist/ir/runtime/index.js.map +1 -1
  74. package/dist/ir/runtime/templates.d.ts +1 -21
  75. package/dist/ir/runtime/templates.d.ts.map +1 -1
  76. package/dist/ir/runtime/templates.js +24 -428
  77. package/dist/ir/runtime/templates.js.map +1 -1
  78. package/dist/ir/schema.d.ts +3 -5
  79. package/dist/ir/schema.d.ts.map +1 -1
  80. package/dist/ir/schema.js +25 -37
  81. package/dist/ir/schema.js.map +1 -1
  82. package/dist/ir/type/context.d.ts +1 -1
  83. package/dist/ir/type/context.d.ts.map +1 -1
  84. package/dist/ir/type/index.d.ts +5 -3
  85. package/dist/ir/type/index.d.ts.map +1 -1
  86. package/dist/ir/type/index.js +12 -8
  87. package/dist/ir/type/index.js.map +1 -1
  88. package/dist/ir/type/primitive.d.ts +1 -1
  89. package/dist/ir/type/primitive.d.ts.map +1 -1
  90. package/dist/ir/type/primitive.js +1 -1
  91. package/dist/ir/type/primitive.js.map +1 -1
  92. package/dist/ir/type-ops.d.ts +2 -2
  93. package/dist/ir/type-ops.d.ts.map +1 -1
  94. package/dist/ir/type-ops.js +13 -17
  95. package/dist/ir/type-ops.js.map +1 -1
  96. package/dist/kt-compiler/index.d.ts +3 -6
  97. package/dist/kt-compiler/index.d.ts.map +1 -1
  98. package/dist/kt-compiler/index.js +7 -22
  99. package/dist/kt-compiler/index.js.map +1 -1
  100. package/dist/project/build.d.ts +1 -1
  101. package/dist/project/build.d.ts.map +1 -1
  102. package/dist/project/build.js +6 -8
  103. package/dist/project/build.js.map +1 -1
  104. package/dist/project/imports.d.ts +12 -12
  105. package/dist/project/imports.d.ts.map +1 -1
  106. package/dist/project/imports.js +60 -138
  107. package/dist/project/imports.js.map +1 -1
  108. package/dist/project/layout.d.ts +1 -1
  109. package/dist/project/layout.d.ts.map +1 -1
  110. package/dist/project/layout.js +1 -3
  111. package/dist/project/layout.js.map +1 -1
  112. package/package.json +12 -10
  113. package/runtime/APIClient.kt +140 -0
  114. package/runtime/APIError.kt +42 -0
  115. package/runtime/APIInterceptors.kt +14 -0
  116. package/runtime/APIKeyLocation.kt +7 -0
  117. package/runtime/Auth.kt +86 -0
  118. package/runtime/MultipartFormBody.kt +41 -0
  119. package/runtime/QueryStyle.kt +12 -0
  120. package/runtime/RequestOptions.kt +29 -0
  121. package/runtime/URLEncoding.kt +45 -0
  122. package/dist/kt-compiler/decl/class.d.ts +0 -6
  123. package/dist/kt-compiler/decl/class.d.ts.map +0 -1
  124. package/dist/kt-compiler/decl/class.js +0 -38
  125. package/dist/kt-compiler/decl/class.js.map +0 -1
  126. package/dist/kt-compiler/decl/dataClass.d.ts +0 -3
  127. package/dist/kt-compiler/decl/dataClass.d.ts.map +0 -1
  128. package/dist/kt-compiler/decl/dataClass.js +0 -18
  129. package/dist/kt-compiler/decl/dataClass.js.map +0 -1
  130. package/dist/kt-compiler/decl/enum.d.ts +0 -3
  131. package/dist/kt-compiler/decl/enum.d.ts.map +0 -1
  132. package/dist/kt-compiler/decl/enum.js +0 -32
  133. package/dist/kt-compiler/decl/enum.js.map +0 -1
  134. package/dist/kt-compiler/decl/fun.d.ts +0 -11
  135. package/dist/kt-compiler/decl/fun.d.ts.map +0 -1
  136. package/dist/kt-compiler/decl/fun.js +0 -69
  137. package/dist/kt-compiler/decl/fun.js.map +0 -1
  138. package/dist/kt-compiler/decl/index.d.ts +0 -13
  139. package/dist/kt-compiler/decl/index.d.ts.map +0 -1
  140. package/dist/kt-compiler/decl/index.js +0 -39
  141. package/dist/kt-compiler/decl/index.js.map +0 -1
  142. package/dist/kt-compiler/decl/interface.d.ts +0 -3
  143. package/dist/kt-compiler/decl/interface.d.ts.map +0 -1
  144. package/dist/kt-compiler/decl/interface.js +0 -15
  145. package/dist/kt-compiler/decl/interface.js.map +0 -1
  146. package/dist/kt-compiler/decl/object.d.ts +0 -3
  147. package/dist/kt-compiler/decl/object.d.ts.map +0 -1
  148. package/dist/kt-compiler/decl/object.js +0 -19
  149. package/dist/kt-compiler/decl/object.js.map +0 -1
  150. package/dist/kt-compiler/decl/prop.d.ts +0 -20
  151. package/dist/kt-compiler/decl/prop.d.ts.map +0 -1
  152. package/dist/kt-compiler/decl/prop.js +0 -42
  153. package/dist/kt-compiler/decl/prop.js.map +0 -1
  154. package/dist/kt-compiler/decl/sealedClass.d.ts +0 -3
  155. package/dist/kt-compiler/decl/sealedClass.d.ts.map +0 -1
  156. package/dist/kt-compiler/decl/sealedClass.js +0 -32
  157. package/dist/kt-compiler/decl/sealedClass.js.map +0 -1
  158. package/dist/kt-compiler/decl/topLevel.d.ts +0 -3
  159. package/dist/kt-compiler/decl/topLevel.d.ts.map +0 -1
  160. package/dist/kt-compiler/decl/topLevel.js +0 -5
  161. package/dist/kt-compiler/decl/topLevel.js.map +0 -1
  162. package/dist/kt-compiler/decl/typeAlias.d.ts +0 -3
  163. package/dist/kt-compiler/decl/typeAlias.d.ts.map +0 -1
  164. package/dist/kt-compiler/decl/typeAlias.js +0 -6
  165. package/dist/kt-compiler/decl/typeAlias.js.map +0 -1
  166. package/dist/kt-compiler/expr.d.ts +0 -4
  167. package/dist/kt-compiler/expr.d.ts.map +0 -1
  168. package/dist/kt-compiler/expr.js +0 -123
  169. package/dist/kt-compiler/expr.js.map +0 -1
  170. package/dist/kt-compiler/format.d.ts +0 -20
  171. package/dist/kt-compiler/format.d.ts.map +0 -1
  172. package/dist/kt-compiler/format.js +0 -27
  173. package/dist/kt-compiler/format.js.map +0 -1
  174. package/dist/kt-compiler/stmt.d.ts +0 -4
  175. package/dist/kt-compiler/stmt.d.ts.map +0 -1
  176. package/dist/kt-compiler/stmt.js +0 -72
  177. package/dist/kt-compiler/stmt.js.map +0 -1
  178. package/dist/kt-compiler/type.d.ts +0 -3
  179. package/dist/kt-compiler/type.d.ts.map +0 -1
  180. package/dist/kt-compiler/type.js +0 -28
  181. package/dist/kt-compiler/type.js.map +0 -1
  182. package/dist/kt-dsl/decl/class.d.ts +0 -50
  183. package/dist/kt-dsl/decl/class.d.ts.map +0 -1
  184. package/dist/kt-dsl/decl/class.js +0 -33
  185. package/dist/kt-dsl/decl/class.js.map +0 -1
  186. package/dist/kt-dsl/decl/dataClass.d.ts +0 -36
  187. package/dist/kt-dsl/decl/dataClass.d.ts.map +0 -1
  188. package/dist/kt-dsl/decl/dataClass.js +0 -25
  189. package/dist/kt-dsl/decl/dataClass.js.map +0 -1
  190. package/dist/kt-dsl/decl/enum.d.ts +0 -60
  191. package/dist/kt-dsl/decl/enum.d.ts.map +0 -1
  192. package/dist/kt-dsl/decl/enum.js +0 -38
  193. package/dist/kt-dsl/decl/enum.js.map +0 -1
  194. package/dist/kt-dsl/decl/index.d.ts +0 -11
  195. package/dist/kt-dsl/decl/index.d.ts.map +0 -1
  196. package/dist/kt-dsl/decl/index.js +0 -11
  197. package/dist/kt-dsl/decl/index.js.map +0 -1
  198. package/dist/kt-dsl/decl/interface.d.ts +0 -33
  199. package/dist/kt-dsl/decl/interface.d.ts.map +0 -1
  200. package/dist/kt-dsl/decl/interface.js +0 -24
  201. package/dist/kt-dsl/decl/interface.js.map +0 -1
  202. package/dist/kt-dsl/decl/object.d.ts +0 -34
  203. package/dist/kt-dsl/decl/object.d.ts.map +0 -1
  204. package/dist/kt-dsl/decl/object.js +0 -24
  205. package/dist/kt-dsl/decl/object.js.map +0 -1
  206. package/dist/kt-dsl/decl/prop.d.ts +0 -47
  207. package/dist/kt-dsl/decl/prop.d.ts.map +0 -1
  208. package/dist/kt-dsl/decl/prop.js +0 -28
  209. package/dist/kt-dsl/decl/prop.js.map +0 -1
  210. package/dist/kt-dsl/decl/sealedClass.d.ts +0 -68
  211. package/dist/kt-dsl/decl/sealedClass.d.ts.map +0 -1
  212. package/dist/kt-dsl/decl/sealedClass.js +0 -52
  213. package/dist/kt-dsl/decl/sealedClass.js.map +0 -1
  214. package/dist/kt-dsl/decl/topLevel.d.ts +0 -19
  215. package/dist/kt-dsl/decl/topLevel.d.ts.map +0 -1
  216. package/dist/kt-dsl/decl/topLevel.js +0 -17
  217. package/dist/kt-dsl/decl/topLevel.js.map +0 -1
  218. package/dist/kt-dsl/decl/typeAlias.d.ts +0 -23
  219. package/dist/kt-dsl/decl/typeAlias.d.ts.map +0 -1
  220. package/dist/kt-dsl/decl/typeAlias.js +0 -18
  221. package/dist/kt-dsl/decl/typeAlias.js.map +0 -1
  222. package/dist/kt-dsl/decl/types.d.ts +0 -10
  223. package/dist/kt-dsl/decl/types.d.ts.map +0 -1
  224. package/dist/kt-dsl/decl/types.js +0 -2
  225. package/dist/kt-dsl/decl/types.js.map +0 -1
  226. package/dist/kt-dsl/expr/access.d.ts +0 -48
  227. package/dist/kt-dsl/expr/access.d.ts.map +0 -1
  228. package/dist/kt-dsl/expr/access.js +0 -59
  229. package/dist/kt-dsl/expr/access.js.map +0 -1
  230. package/dist/kt-dsl/expr/call.d.ts +0 -38
  231. package/dist/kt-dsl/expr/call.d.ts.map +0 -1
  232. package/dist/kt-dsl/expr/call.js +0 -38
  233. package/dist/kt-dsl/expr/call.js.map +0 -1
  234. package/dist/kt-dsl/expr/index.d.ts +0 -7
  235. package/dist/kt-dsl/expr/index.d.ts.map +0 -1
  236. package/dist/kt-dsl/expr/index.js +0 -7
  237. package/dist/kt-dsl/expr/index.js.map +0 -1
  238. package/dist/kt-dsl/expr/literal.d.ts +0 -100
  239. package/dist/kt-dsl/expr/literal.d.ts.map +0 -1
  240. package/dist/kt-dsl/expr/literal.js +0 -108
  241. package/dist/kt-dsl/expr/literal.js.map +0 -1
  242. package/dist/kt-dsl/expr/misc.d.ts +0 -45
  243. package/dist/kt-dsl/expr/misc.d.ts.map +0 -1
  244. package/dist/kt-dsl/expr/misc.js +0 -63
  245. package/dist/kt-dsl/expr/misc.js.map +0 -1
  246. package/dist/kt-dsl/expr/op.d.ts +0 -25
  247. package/dist/kt-dsl/expr/op.d.ts.map +0 -1
  248. package/dist/kt-dsl/expr/op.js +0 -24
  249. package/dist/kt-dsl/expr/op.js.map +0 -1
  250. package/dist/kt-dsl/expr/types.d.ts +0 -93
  251. package/dist/kt-dsl/expr/types.d.ts.map +0 -1
  252. package/dist/kt-dsl/expr/types.js +0 -2
  253. package/dist/kt-dsl/expr/types.js.map +0 -1
  254. package/dist/kt-dsl/file.d.ts +0 -14
  255. package/dist/kt-dsl/file.d.ts.map +0 -1
  256. package/dist/kt-dsl/file.js +0 -9
  257. package/dist/kt-dsl/file.js.map +0 -1
  258. package/dist/kt-dsl/fun.d.ts +0 -73
  259. package/dist/kt-dsl/fun.d.ts.map +0 -1
  260. package/dist/kt-dsl/fun.js +0 -50
  261. package/dist/kt-dsl/fun.js.map +0 -1
  262. package/dist/kt-dsl/index.d.ts +0 -8
  263. package/dist/kt-dsl/index.d.ts.map +0 -1
  264. package/dist/kt-dsl/index.js +0 -8
  265. package/dist/kt-dsl/index.js.map +0 -1
  266. package/dist/kt-dsl/stmt/binding.d.ts +0 -56
  267. package/dist/kt-dsl/stmt/binding.d.ts.map +0 -1
  268. package/dist/kt-dsl/stmt/binding.js +0 -70
  269. package/dist/kt-dsl/stmt/binding.js.map +0 -1
  270. package/dist/kt-dsl/stmt/control.d.ts +0 -80
  271. package/dist/kt-dsl/stmt/control.d.ts.map +0 -1
  272. package/dist/kt-dsl/stmt/control.js +0 -77
  273. package/dist/kt-dsl/stmt/control.js.map +0 -1
  274. package/dist/kt-dsl/stmt/index.d.ts +0 -4
  275. package/dist/kt-dsl/stmt/index.d.ts.map +0 -1
  276. package/dist/kt-dsl/stmt/index.js +0 -4
  277. package/dist/kt-dsl/stmt/index.js.map +0 -1
  278. package/dist/kt-dsl/stmt/types.d.ts +0 -62
  279. package/dist/kt-dsl/stmt/types.d.ts.map +0 -1
  280. package/dist/kt-dsl/stmt/types.js +0 -2
  281. package/dist/kt-dsl/stmt/types.js.map +0 -1
  282. package/dist/kt-dsl/type/builders.d.ts +0 -75
  283. package/dist/kt-dsl/type/builders.d.ts.map +0 -1
  284. package/dist/kt-dsl/type/builders.js +0 -83
  285. package/dist/kt-dsl/type/builders.js.map +0 -1
  286. package/dist/kt-dsl/type/index.d.ts +0 -3
  287. package/dist/kt-dsl/type/index.d.ts.map +0 -1
  288. package/dist/kt-dsl/type/index.js +0 -3
  289. package/dist/kt-dsl/type/index.js.map +0 -1
  290. package/dist/kt-dsl/type/types.d.ts +0 -25
  291. package/dist/kt-dsl/type/types.d.ts.map +0 -1
  292. package/dist/kt-dsl/type/types.js +0 -2
  293. package/dist/kt-dsl/type/types.js.map +0 -1
  294. package/dist/kt-dsl/visibility.d.ts +0 -2
  295. package/dist/kt-dsl/visibility.d.ts.map +0 -1
  296. package/dist/kt-dsl/visibility.js +0 -2
  297. package/dist/kt-dsl/visibility.js.map +0 -1
package/dist/ir/schema.js CHANGED
@@ -1,5 +1,6 @@
1
- import { fromHeyApi, refName } from "@ir-kit/openapi";
2
- import { ktAny, ktMap, ktRef, ktString, ktTypeAlias, } from "../kt-dsl/index.js";
1
+ import { classifyComponents } from "@ir-kit/openapi";
2
+ import { ktJsonElement, ktMap, ktRef, ktString, ktTypeAlias, } from "../ast/index.js";
3
+ import { newTypeNames } from "./identifiers.js";
3
4
  import { buildEnumFromIR, buildStruct, schemaToType } from "./type/index.js";
4
5
  /**
5
6
  * Translate `IR.Model.components.schemas` into Kotlin decls.
@@ -10,45 +11,32 @@ import { buildEnumFromIR, buildStruct, schemaToType } from "./type/index.js";
10
11
  * - object schemas with only `additionalProperties` → typealias to
11
12
  * `Map<String, V>`
12
13
  * - 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.
16
14
  */
17
- export function schemasToDecls(schemas) {
15
+ export function schemasToDecls(schemas, names = newTypeNames()) {
18
16
  const decls = [];
19
17
  const emit = (d) => decls.push(d);
20
- for (const [name, heySchema] of Object.entries(schemas)) {
21
- const schema = fromHeyApi(heySchema);
22
- if (schema.$ref) {
23
- decls.push(ktTypeAlias({ name, type: ktRef(refName(schema.$ref)) }));
24
- continue;
25
- }
26
- const isEnum = Array.isArray(schema.enum) && schema.enum.length > 0;
27
- if (isEnum) {
28
- buildEnumFromIR(name, schema, emit);
29
- continue;
30
- }
31
- if (schema.type === "object" && schema.properties) {
32
- decls.push(buildStruct(name, schema, { emit }));
33
- continue;
34
- }
35
- if (schema.type === "object") {
36
- const ap = schema.additionalProperties;
37
- const sealed = ap === false;
38
- if (sealed) {
39
- decls.push(buildStruct(name, schema, { emit }));
40
- continue;
41
- }
42
- const valueType = ap && typeof ap === "object"
43
- ? schemaToType(ap, { emit, ownerName: name, propPath: [] })
44
- : ktAny;
45
- decls.push(ktTypeAlias({ name, type: ktMap(ktString, valueType) }));
46
- continue;
18
+ for (const { name, schema, shape } of classifyComponents(schemas, names)) {
19
+ const ctx = () => ({ emit, names, ownerName: name, propPath: [] });
20
+ switch (shape.kind) {
21
+ case "ref":
22
+ decls.push(ktTypeAlias({ name, type: ktRef(shape.target) }));
23
+ break;
24
+ case "enum":
25
+ buildEnumFromIR(name, schema, emit, names);
26
+ break;
27
+ case "struct":
28
+ decls.push(buildStruct(name, schema, { emit, names }));
29
+ break;
30
+ case "map":
31
+ decls.push(ktTypeAlias({
32
+ name,
33
+ type: ktMap(ktString, shape.value ? schemaToType(shape.value, ctx()) : ktJsonElement),
34
+ }));
35
+ break;
36
+ case "type":
37
+ decls.push(ktTypeAlias({ name, type: schemaToType(schema, ctx()) }));
38
+ break;
47
39
  }
48
- decls.push(ktTypeAlias({
49
- name,
50
- type: schemaToType(schema, { emit, ownerName: name, propPath: [] }),
51
- }));
52
40
  }
53
41
  return decls;
54
42
  }
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAEL,aAAa,EACb,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAwC,EACxC,QAAmB,YAAY,EAAE;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,KAAK;gBACR,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,MAAM;gBACT,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,KAAK;gBACR,KAAK,CAAC,IAAI,CACR,WAAW,CAAC;oBACV,IAAI;oBACJ,IAAI,EAAE,KAAK,CACT,QAAQ,EACR,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAC/D;iBACF,CAAC,CACH,CAAC;gBACF,MAAM;YACR,KAAK,MAAM;gBACT,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrE,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { TypeCtx as IRTypeCtx } from "@ir-kit/openapi";
2
- import type { KtDecl } from "../../kt-dsl/decl/types.js";
2
+ import type { KtDecl } from "../../ast/index.js";
3
3
  export type TypeCtx = IRTypeCtx<KtDecl>;
4
4
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/ir/type/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/ir/type/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
+ import type { Namespace } from "@ir-kit/codegen-core";
1
2
  import { type Schema } from "@ir-kit/openapi";
2
- import type { KtDecl } from "../../kt-dsl/decl/types.js";
3
- import type { KtType } from "../../kt-dsl/index.js";
3
+ import type { KtDecl } from "../../ast/index.js";
4
+ import { type KtType } from "../../ast/index.js";
4
5
  import type { TypeCtx } from "./context.js";
5
6
  export type { TypeCtx } from "./context.js";
6
7
  /**
@@ -11,6 +12,7 @@ export type { TypeCtx } from "./context.js";
11
12
  export declare function schemaToType(schema: Schema, ctx: TypeCtx): KtType;
12
13
  export declare function buildStruct(name: string, schema: Schema, ctx: {
13
14
  emit: (d: KtDecl) => void;
15
+ names: Namespace;
14
16
  }): KtDecl;
15
- export declare function buildEnumFromIR(name: string, schema: Schema, emit: (d: KtDecl) => void): KtType;
17
+ export declare function buildEnumFromIR(name: string, schema: Schema, emit: (d: KtDecl) => void, names: Namespace): KtType;
16
18
  //# 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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AAErE,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,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACnD,MAAM,CAUR;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EACzB,KAAK,EAAE,SAAS,GACf,MAAM,CAQR"}
@@ -1,5 +1,6 @@
1
- import { classifyEnumLiterals, iterateObjectProperties, schemaToType as sharedSchemaToType, } from "@ir-kit/openapi";
1
+ import { enumType, iterateObjectProperties, schemaToType as sharedSchemaToType, } from "@ir-kit/openapi";
2
2
  import { getEnumLiterals } from "@ir-kit/openapi-tools";
3
+ import { ktRef, ktTypeAlias } from "../../ast/index.js";
3
4
  import { ktOps } from "../type-ops.js";
4
5
  /**
5
6
  * Top-level dispatch from canonical {@link Schema} to a `KtType`.
@@ -12,13 +13,16 @@ export function schemaToType(schema, ctx) {
12
13
  export function buildStruct(name, schema, ctx) {
13
14
  const properties = Array.from(iterateObjectProperties(schema));
14
15
  const dispatch = (s, c) => sharedSchemaToType(s, c, ktOps);
15
- return ktOps.buildStructDecl(name, properties, { emit: ctx.emit, ownerName: name, propPath: [] }, dispatch);
16
+ return ktOps.buildStructDecl(name, properties, { emit: ctx.emit, names: ctx.names, ownerName: name, propPath: [] }, dispatch);
16
17
  }
17
- export function buildEnumFromIR(name, schema, emit) {
18
- const rawValues = getEnumLiterals(schema);
19
- const kind = classifyEnumLiterals(rawValues, name);
20
- if (kind === "integer")
21
- return ktOps.emitIntegerEnum(name, rawValues, emit);
22
- return ktOps.emitStringEnum(name, rawValues, emit);
18
+ export function buildEnumFromIR(name, schema, emit, names) {
19
+ const { type, named } = enumType(name, getEnumLiterals(schema), ktOps, {
20
+ emit,
21
+ names,
22
+ });
23
+ if (named)
24
+ return type;
25
+ emit(ktTypeAlias({ name, type }));
26
+ return ktRef(name);
23
27
  }
24
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/type/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,uBAAuB,EAEvB,YAAY,IAAI,kBAAkB,GACnC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAe,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,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,GAAoD;IAEpD,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,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EACnE,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAc,EACd,IAAyB,EACzB,KAAgB;IAEhB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;QACrE,IAAI;QACJ,KAAK;KACN,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { Schema } from "@ir-kit/openapi";
2
- import { type KtType } from "../../kt-dsl/index.js";
2
+ import { type KtType } from "../../ast/index.js";
3
3
  export declare function typeForPrimitive(s: Schema): KtType | undefined;
4
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,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"}
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,oBAAoB,CAAC;AA8B5B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB9D"}
@@ -1,4 +1,4 @@
1
- import { ktBoolean, ktByteArray, ktDouble, ktFloat, ktInt, ktLong, ktRef, ktString, } from "../../kt-dsl/index.js";
1
+ import { ktBoolean, ktByteArray, ktDouble, ktFloat, ktInt, ktLong, ktRef, ktString, } from "../../ast/index.js";
2
2
  /**
3
3
  * OpenAPI string `format` → Kotlin / kotlinx-datetime / `String` type.
4
4
  * Unknown formats fall back to `String`.
@@ -1 +1 @@
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
+ {"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,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;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,6 +1,6 @@
1
1
  import { type SchemaToTypeOps } from "@ir-kit/openapi";
2
- import type { KtDecl } from "../kt-dsl/decl/types.js";
3
- import { type KtType } from "../kt-dsl/index.js";
2
+ import type { KtDecl } from "../ast/index.js";
3
+ import { type KtType } from "../ast/index.js";
4
4
  /**
5
5
  * Kotlin's plug into the shared `schemaToType` dispatcher. Per-target
6
6
  * choices: `kotlinx-serialization` `@Serializable` annotations and
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"type-ops.d.ts","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EAgBZ,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAwEjD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { synthName } from "@ir-kit/codegen-core";
2
- import { assertNoEnumCollisions, } from "@ir-kit/openapi";
3
- import { ktAnnotation, ktAny, ktDataClass, ktEnum, ktEnumEntry, ktInt, ktList, ktMap, ktNullable, ktProp, ktRef, ktString, ktTypeAlias, ktUnit, } from "../kt-dsl/index.js";
2
+ import { uniqueEnumEntries, } from "@ir-kit/openapi";
3
+ import { ktAnnotation, ktDataClass, ktEnum, ktEnumEntry, ktInt, ktJsonElement, ktList, ktMap, ktNullable, ktProp, ktRef, ktStr, ktString, ktTypeAlias, ktUnit, } from "../ast/index.js";
4
4
  import { enumEntryIdent } from "./identifiers.js";
5
5
  import { typeForPrimitive } from "./type/primitive.js";
6
6
  import { propertyName } from "./type/property-naming.js";
@@ -17,12 +17,12 @@ export const ktOps = {
17
17
  arrayType: ktList,
18
18
  mapType: (value) => ktMap(ktString, value),
19
19
  voidType: () => ktUnit,
20
- anyType: () => ktAny,
20
+ anyType: () => ktJsonElement,
21
21
  // `null`-typed primitive → `Any?`.
22
- nullableAnyType: () => ktNullable(ktAny),
22
+ nullableAnyType: () => ktNullable(ktJsonElement),
23
23
  // Single non-null + nullable → wrap in nullable iff not already.
24
- wrapForUnionSingle: (inner, nullable) => nullable && inner.kind !== "nullable" ? ktNullable(inner) : inner,
25
- unionFallback: (nullable) => (nullable ? ktNullable(ktAny) : ktAny),
24
+ wrapForUnionSingle: (inner, nullable) => nullable ? ktNullable(inner) : inner,
25
+ unionFallback: (nullable) => nullable ? ktNullable(ktJsonElement) : ktJsonElement,
26
26
  primitiveType: typeForPrimitive,
27
27
  // kotlinx convention: `Owner_Property` (underscore joiner).
28
28
  synthName,
@@ -31,18 +31,18 @@ export const ktOps = {
31
31
  const naming = propertyName(jsonKey);
32
32
  const t = dispatch(propSchema, {
33
33
  emit: ctx.emit,
34
+ names: ctx.names,
34
35
  ownerName: name,
35
36
  propPath: [propPathSegment],
36
37
  });
37
38
  const optional = !required;
38
- const finalType = optional && t.kind !== "nullable" ? ktNullable(t) : t;
39
+ const finalType = optional ? ktNullable(t) : t;
39
40
  return ktProp({
40
41
  name: naming.kotlinName,
41
42
  type: finalType,
42
- inPrimary: true,
43
43
  default: optional ? "null" : undefined,
44
44
  annotations: naming.renamed
45
- ? [ktAnnotation("SerialName", JSON.stringify(naming.jsonKey))]
45
+ ? [ktAnnotation("SerialName", ktStr(naming.jsonKey))]
46
46
  : [],
47
47
  });
48
48
  });
@@ -53,18 +53,14 @@ export const ktOps = {
53
53
  });
54
54
  },
55
55
  emitStringEnum: (name, rawValues, emit) => {
56
- const idents = rawValues.map((raw) => ({
57
- identifier: enumEntryIdent(raw),
58
- raw,
59
- }));
60
- assertNoEnumCollisions(name, idents);
61
- const entries = idents.map(({ identifier, raw }) => ktEnumEntry(identifier, JSON.stringify(raw), [
62
- ktAnnotation("SerialName", JSON.stringify(raw)),
56
+ const idents = uniqueEnumEntries(rawValues, enumEntryIdent, (b, n) => `${b}_${n}`);
57
+ const entries = idents.map(({ identifier, raw }) => ktEnumEntry(identifier, ktStr(raw), [
58
+ ktAnnotation("SerialName", ktStr(raw)),
63
59
  ]));
64
60
  emit(ktEnum({
65
61
  name,
66
62
  annotations: [ktAnnotation("Serializable")],
67
- properties: [ktProp({ name: "raw", type: ktString, inPrimary: true })],
63
+ properties: [ktProp({ name: "raw", type: ktString })],
68
64
  entries,
69
65
  }));
70
66
  return ktRef(name);
@@ -1 +1 @@
1
- {"version":3,"file":"type-ops.js","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-ops.js","sourceRoot":"","sources":["../../src/ir/type-ops.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- import type { KtFile } from "../kt-dsl/file.js";
2
- export declare function printFile(f: KtFile): string;
3
- export { printClass, printDataClass, printDecl, printEnum, printFun, printFunParam, printInterface, printObject, printProp, printSealedClass, printTopLevelFun, printTypeAlias, } from "./decl/index.js";
4
- export { printExpr } from "./expr.js";
5
- export { printStmt } from "./stmt.js";
6
- export { printType } from "./type.js";
1
+ import type { KtDecl, KtFile } from "../ast/index.js";
2
+ export declare function printFile(file: KtFile): string;
3
+ export declare const printDecl: (d: KtDecl) => string;
7
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kt-compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAe3C;AAED,OAAO,EACL,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kt-compiler/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAMtD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MACF,CAAC"}
@@ -1,24 +1,9 @@
1
- import { printDecl } from "./decl/index.js";
2
- export function printFile(f) {
3
- const out = [];
4
- if (f.pkg) {
5
- out.push(`package ${f.pkg}`);
6
- out.push("");
7
- }
8
- if (f.imports.length > 0) {
9
- for (const imp of f.imports)
10
- out.push(`import ${imp}`);
11
- out.push("");
12
- }
13
- for (let i = 0; i < f.decls.length; i++) {
14
- out.push(printDecl(f.decls[i]));
15
- if (i < f.decls.length - 1)
16
- out.push("");
17
- }
18
- return `${out.join("\n")}\n`;
1
+ import { kt } from "@ir-kit/compiler-kotlin";
2
+ const f = kt.factory;
3
+ const printer = kt.createPrinter({ indentSize: 4 });
4
+ const trimEnd = (s) => s.replace(/\n+$/, "");
5
+ export function printFile(file) {
6
+ return printer.printFile(f.createSourceFile(file.decls.map((d) => d.node), file.pkg ? f.createPackageHeader(file.pkg) : undefined, file.imports.map((i) => f.createImportDirective(i))));
19
7
  }
20
- export { printClass, printDataClass, printDecl, printEnum, printFun, printFunParam, printInterface, printObject, printProp, printSealedClass, printTopLevelFun, printTypeAlias, } from "./decl/index.js";
21
- export { printExpr } from "./expr.js";
22
- export { printStmt } from "./stmt.js";
23
- export { printType } from "./type.js";
8
+ export const printDecl = (d) => trimEnd(printer.printFile(d.node));
24
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kt-compiler/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED,OAAO,EACL,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kt-compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAI7C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;AACrB,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAErD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,OAAO,CAAC,SAAS,CACtB,CAAC,CAAC,gBAAgB,CAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CACpD,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAC7C,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type KtDecl } from "../kt-dsl/index.js";
1
+ import { type KtDecl } from "../ast/index.js";
2
2
  import { type PlacementOptions } from "./layout.js";
3
3
  export interface BuildOptions extends PlacementOptions {
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/project/build.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAgB,KAAK,gBAAgB,EAAa,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAC5B,IAAI,GAAE,YAAiB,GACtB,SAAS,EAAE,CAgCb;AAcD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,SAAS,CAMX"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/project/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,iBAAiB,CAAC;AAItD,OAAO,EAAgB,KAAK,gBAAgB,EAAa,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAC5B,IAAI,GAAE,YAAiB,GACtB,SAAS,EAAE,CAgCb;AAcD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,SAAS,CAMX"}
@@ -1,7 +1,7 @@
1
+ import { ktFile } from "../ast/index.js";
1
2
  import { DEFAULT_PACKAGE } from "../ir/constants.js";
2
- import { printDecl, printFile } from "../kt-compiler/index.js";
3
- import { ktFile } from "../kt-dsl/index.js";
4
- import { importsForSource, isApiSurface } from "./imports.js";
3
+ import { printFile } from "../kt-compiler/index.js";
4
+ import { importsFor, isApiSurface, referencedNames } from "./imports.js";
5
5
  import { declFileName, placeDecl } from "./layout.js";
6
6
  /**
7
7
  * Project assembler: places each decl in a file, picks imports, prints
@@ -29,14 +29,12 @@ export function buildKotlinProject(decls, opts = {}) {
29
29
  else
30
30
  groups.set(path, { decls: [decl], subPkg });
31
31
  }
32
+ const declared = new Map(decls.map((d) => [d.name, declPackage(pkg, placeDecl(d, opts).dir)]));
32
33
  return [...groups.entries()].map(([path, group]) => {
33
- // Print bodies first, scan the printed output for actually-used
34
- // identifiers, then re-print with the right imports. Avoids
35
- // shipping unused imports per file.
36
- const bodyOnly = group.decls.map((d) => printDecl(d)).join("\n\n");
37
34
  const apiSurface = group.decls.some(isApiSurface);
38
- const imports = importsForSource(bodyOnly, {
35
+ const imports = importsFor(referencedNames(group.decls), {
39
36
  isApiSurface: apiSurface,
37
+ declared,
40
38
  rootPkg: pkg,
41
39
  subPkg: group.subPkg,
42
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/project/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/project/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyB,SAAS,EAAE,MAAM,aAAa,CAAC;AAiB7E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA4B,EAC5B,OAAqB,EAAE;IAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+C,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,QAAQ;YAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACrE,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvD,YAAY,EAAE,UAAU;YACxB,QAAQ;YACR,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QACH,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,SAAS,CAChB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAC3D;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,OAAe,EAAE,GAAW;IAC/C,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,MAAc,EACd,QAAgB,EAChB,OAAe;IAEf,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,GAAG,OAAO,IAAI,MAAM,IAAI,QAAQ,EAAE;QACxC,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1,18 +1,18 @@
1
- import type { KtDecl } from "../kt-dsl/index.js";
1
+ import type { KtDecl } from "../ast/index.js";
2
2
  /**
3
- * Compute the import list for a single Kotlin file by walking the
4
- * already-printed source and matching against known identifiers.
5
- * Coarse-import-everything caused unused imports per file; the
6
- * print-then-scan pattern is precise without needing a full type-tree
7
- * walker.
8
- *
9
- * Identifiers that share names across packages (e.g. `Response` exists
10
- * in both `okhttp3` and a hypothetical user model) are disambiguated
11
- * by file kind: API-layer files always pull `okhttp3.Response`, model
12
- * files never do.
3
+ * Every identifier, type and annotation name the declarations reference,
4
+ * collected from the AST (string literals and comments never count).
13
5
  */
14
- export declare function importsForSource(source: string, ctx: {
6
+ export declare function referencedNames(decls: ReadonlyArray<KtDecl>): ReadonlySet<string>;
7
+ /**
8
+ * Import list for one Kotlin file. Names shared across packages (e.g.
9
+ * `Response` in `okhttp3` vs. a user model) are disambiguated by file
10
+ * kind: API-layer files pull `okhttp3.Response`, model files never do.
11
+ */
12
+ export declare function importsFor(names: ReadonlySet<string>, ctx: {
15
13
  isApiSurface: boolean;
14
+ /** Package of every generated declaration, by name. */
15
+ declared: ReadonlyMap<string, string>;
16
16
  rootPkg: string;
17
17
  subPkg: string;
18
18
  }): ReadonlyArray<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../src/project/imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9D,aAAa,CAAC,MAAM,CAAC,CAmEvB;AAwED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWlD"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../src/project/imports.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAK9C;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAC3B,WAAW,CAAC,MAAM,CAAC,CAqBrB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,GAAG,EAAE;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,aAAa,CAAC,MAAM,CAAC,CAmCvB;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWlD"}