@ir-kit/openapi-kotlin 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.md +13 -13
  2. package/dist/ast/index.d.ts +168 -0
  3. package/dist/ast/index.d.ts.map +1 -0
  4. package/dist/ast/index.js +194 -0
  5. package/dist/ast/index.js.map +1 -0
  6. package/dist/generate.d.ts.map +1 -1
  7. package/dist/generate.js +9 -9
  8. package/dist/generate.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/ir/identifiers.d.ts +7 -0
  14. package/dist/ir/identifiers.d.ts.map +1 -1
  15. package/dist/ir/identifiers.js +92 -3
  16. package/dist/ir/identifiers.js.map +1 -1
  17. package/dist/ir/impl/body.d.ts +4 -3
  18. package/dist/ir/impl/body.d.ts.map +1 -1
  19. package/dist/ir/impl/body.js +11 -8
  20. package/dist/ir/impl/body.js.map +1 -1
  21. package/dist/ir/impl/decode.d.ts +3 -2
  22. package/dist/ir/impl/decode.d.ts.map +1 -1
  23. package/dist/ir/impl/decode.js +16 -16
  24. package/dist/ir/impl/decode.js.map +1 -1
  25. package/dist/ir/impl/headers.d.ts +1 -1
  26. package/dist/ir/impl/headers.d.ts.map +1 -1
  27. package/dist/ir/impl/headers.js +3 -3
  28. package/dist/ir/impl/headers.js.map +1 -1
  29. package/dist/ir/impl/index.d.ts +5 -2
  30. package/dist/ir/impl/index.d.ts.map +1 -1
  31. package/dist/ir/impl/index.js +6 -7
  32. package/dist/ir/impl/index.js.map +1 -1
  33. package/dist/ir/impl/request.d.ts +6 -6
  34. package/dist/ir/impl/request.d.ts.map +1 -1
  35. package/dist/ir/impl/request.js +18 -8
  36. package/dist/ir/impl/request.js.map +1 -1
  37. package/dist/ir/impl/serializer.d.ts +4 -2
  38. package/dist/ir/impl/serializer.d.ts.map +1 -1
  39. package/dist/ir/impl/serializer.js +41 -60
  40. package/dist/ir/impl/serializer.js.map +1 -1
  41. package/dist/ir/impl/url.d.ts +1 -1
  42. package/dist/ir/impl/url.d.ts.map +1 -1
  43. package/dist/ir/impl/url.js +4 -4
  44. package/dist/ir/impl/url.js.map +1 -1
  45. package/dist/ir/index.d.ts +1 -1
  46. package/dist/ir/index.d.ts.map +1 -1
  47. package/dist/ir/index.js +1 -1
  48. package/dist/ir/index.js.map +1 -1
  49. package/dist/ir/operation/body.d.ts +1 -1
  50. package/dist/ir/operation/body.d.ts.map +1 -1
  51. package/dist/ir/operation/body.js +3 -3
  52. package/dist/ir/operation/body.js.map +1 -1
  53. package/dist/ir/operation/params.d.ts +1 -1
  54. package/dist/ir/operation/params.d.ts.map +1 -1
  55. package/dist/ir/operation/params.js +3 -3
  56. package/dist/ir/operation/params.js.map +1 -1
  57. package/dist/ir/operation/response.d.ts +3 -1
  58. package/dist/ir/operation/response.d.ts.map +1 -1
  59. package/dist/ir/operation/response.js +3 -4
  60. package/dist/ir/operation/response.js.map +1 -1
  61. package/dist/ir/operation/signature.d.ts +4 -2
  62. package/dist/ir/operation/signature.d.ts.map +1 -1
  63. package/dist/ir/operation/signature.js +5 -4
  64. package/dist/ir/operation/signature.js.map +1 -1
  65. package/dist/ir/operations.d.ts +7 -1
  66. package/dist/ir/operations.d.ts.map +1 -1
  67. package/dist/ir/operations.js +13 -7
  68. package/dist/ir/operations.js.map +1 -1
  69. package/dist/ir/runtime/index.d.ts +1 -1
  70. package/dist/ir/runtime/index.d.ts.map +1 -1
  71. package/dist/ir/runtime/index.js +1 -1
  72. package/dist/ir/runtime/index.js.map +1 -1
  73. package/dist/ir/runtime/templates.d.ts +1 -21
  74. package/dist/ir/runtime/templates.d.ts.map +1 -1
  75. package/dist/ir/runtime/templates.js +24 -428
  76. package/dist/ir/runtime/templates.js.map +1 -1
  77. package/dist/ir/schema.d.ts +3 -2
  78. package/dist/ir/schema.d.ts.map +1 -1
  79. package/dist/ir/schema.js +24 -11
  80. package/dist/ir/schema.js.map +1 -1
  81. package/dist/ir/type/context.d.ts +1 -1
  82. package/dist/ir/type/context.d.ts.map +1 -1
  83. package/dist/ir/type/index.d.ts +5 -3
  84. package/dist/ir/type/index.d.ts.map +1 -1
  85. package/dist/ir/type/index.js +12 -8
  86. package/dist/ir/type/index.js.map +1 -1
  87. package/dist/ir/type/primitive.d.ts +1 -1
  88. package/dist/ir/type/primitive.d.ts.map +1 -1
  89. package/dist/ir/type/primitive.js +1 -1
  90. package/dist/ir/type/primitive.js.map +1 -1
  91. package/dist/ir/type-ops.d.ts +2 -2
  92. package/dist/ir/type-ops.d.ts.map +1 -1
  93. package/dist/ir/type-ops.js +13 -17
  94. package/dist/ir/type-ops.js.map +1 -1
  95. package/dist/kt-compiler/index.d.ts +3 -6
  96. package/dist/kt-compiler/index.d.ts.map +1 -1
  97. package/dist/kt-compiler/index.js +7 -22
  98. package/dist/kt-compiler/index.js.map +1 -1
  99. package/dist/project/build.d.ts +1 -1
  100. package/dist/project/build.d.ts.map +1 -1
  101. package/dist/project/build.js +6 -8
  102. package/dist/project/build.js.map +1 -1
  103. package/dist/project/imports.d.ts +12 -12
  104. package/dist/project/imports.d.ts.map +1 -1
  105. package/dist/project/imports.js +60 -138
  106. package/dist/project/imports.js.map +1 -1
  107. package/dist/project/layout.d.ts +1 -1
  108. package/dist/project/layout.d.ts.map +1 -1
  109. package/dist/project/layout.js +1 -3
  110. package/dist/project/layout.js.map +1 -1
  111. package/package.json +11 -8
  112. package/runtime/APIClient.kt +140 -0
  113. package/runtime/APIError.kt +42 -0
  114. package/runtime/APIInterceptors.kt +14 -0
  115. package/runtime/APIKeyLocation.kt +7 -0
  116. package/runtime/Auth.kt +86 -0
  117. package/runtime/MultipartFormBody.kt +41 -0
  118. package/runtime/QueryStyle.kt +12 -0
  119. package/runtime/RequestOptions.kt +29 -0
  120. package/runtime/URLEncoding.kt +45 -0
  121. package/dist/kt-compiler/decl/class.d.ts +0 -6
  122. package/dist/kt-compiler/decl/class.d.ts.map +0 -1
  123. package/dist/kt-compiler/decl/class.js +0 -38
  124. package/dist/kt-compiler/decl/class.js.map +0 -1
  125. package/dist/kt-compiler/decl/dataClass.d.ts +0 -3
  126. package/dist/kt-compiler/decl/dataClass.d.ts.map +0 -1
  127. package/dist/kt-compiler/decl/dataClass.js +0 -18
  128. package/dist/kt-compiler/decl/dataClass.js.map +0 -1
  129. package/dist/kt-compiler/decl/enum.d.ts +0 -3
  130. package/dist/kt-compiler/decl/enum.d.ts.map +0 -1
  131. package/dist/kt-compiler/decl/enum.js +0 -32
  132. package/dist/kt-compiler/decl/enum.js.map +0 -1
  133. package/dist/kt-compiler/decl/fun.d.ts +0 -11
  134. package/dist/kt-compiler/decl/fun.d.ts.map +0 -1
  135. package/dist/kt-compiler/decl/fun.js +0 -69
  136. package/dist/kt-compiler/decl/fun.js.map +0 -1
  137. package/dist/kt-compiler/decl/index.d.ts +0 -13
  138. package/dist/kt-compiler/decl/index.d.ts.map +0 -1
  139. package/dist/kt-compiler/decl/index.js +0 -39
  140. package/dist/kt-compiler/decl/index.js.map +0 -1
  141. package/dist/kt-compiler/decl/interface.d.ts +0 -3
  142. package/dist/kt-compiler/decl/interface.d.ts.map +0 -1
  143. package/dist/kt-compiler/decl/interface.js +0 -15
  144. package/dist/kt-compiler/decl/interface.js.map +0 -1
  145. package/dist/kt-compiler/decl/object.d.ts +0 -3
  146. package/dist/kt-compiler/decl/object.d.ts.map +0 -1
  147. package/dist/kt-compiler/decl/object.js +0 -19
  148. package/dist/kt-compiler/decl/object.js.map +0 -1
  149. package/dist/kt-compiler/decl/prop.d.ts +0 -20
  150. package/dist/kt-compiler/decl/prop.d.ts.map +0 -1
  151. package/dist/kt-compiler/decl/prop.js +0 -42
  152. package/dist/kt-compiler/decl/prop.js.map +0 -1
  153. package/dist/kt-compiler/decl/sealedClass.d.ts +0 -3
  154. package/dist/kt-compiler/decl/sealedClass.d.ts.map +0 -1
  155. package/dist/kt-compiler/decl/sealedClass.js +0 -32
  156. package/dist/kt-compiler/decl/sealedClass.js.map +0 -1
  157. package/dist/kt-compiler/decl/topLevel.d.ts +0 -3
  158. package/dist/kt-compiler/decl/topLevel.d.ts.map +0 -1
  159. package/dist/kt-compiler/decl/topLevel.js +0 -5
  160. package/dist/kt-compiler/decl/topLevel.js.map +0 -1
  161. package/dist/kt-compiler/decl/typeAlias.d.ts +0 -3
  162. package/dist/kt-compiler/decl/typeAlias.d.ts.map +0 -1
  163. package/dist/kt-compiler/decl/typeAlias.js +0 -6
  164. package/dist/kt-compiler/decl/typeAlias.js.map +0 -1
  165. package/dist/kt-compiler/expr.d.ts +0 -4
  166. package/dist/kt-compiler/expr.d.ts.map +0 -1
  167. package/dist/kt-compiler/expr.js +0 -123
  168. package/dist/kt-compiler/expr.js.map +0 -1
  169. package/dist/kt-compiler/format.d.ts +0 -20
  170. package/dist/kt-compiler/format.d.ts.map +0 -1
  171. package/dist/kt-compiler/format.js +0 -27
  172. package/dist/kt-compiler/format.js.map +0 -1
  173. package/dist/kt-compiler/stmt.d.ts +0 -4
  174. package/dist/kt-compiler/stmt.d.ts.map +0 -1
  175. package/dist/kt-compiler/stmt.js +0 -72
  176. package/dist/kt-compiler/stmt.js.map +0 -1
  177. package/dist/kt-compiler/type.d.ts +0 -3
  178. package/dist/kt-compiler/type.d.ts.map +0 -1
  179. package/dist/kt-compiler/type.js +0 -28
  180. package/dist/kt-compiler/type.js.map +0 -1
  181. package/dist/kt-dsl/decl/class.d.ts +0 -50
  182. package/dist/kt-dsl/decl/class.d.ts.map +0 -1
  183. package/dist/kt-dsl/decl/class.js +0 -33
  184. package/dist/kt-dsl/decl/class.js.map +0 -1
  185. package/dist/kt-dsl/decl/dataClass.d.ts +0 -36
  186. package/dist/kt-dsl/decl/dataClass.d.ts.map +0 -1
  187. package/dist/kt-dsl/decl/dataClass.js +0 -25
  188. package/dist/kt-dsl/decl/dataClass.js.map +0 -1
  189. package/dist/kt-dsl/decl/enum.d.ts +0 -60
  190. package/dist/kt-dsl/decl/enum.d.ts.map +0 -1
  191. package/dist/kt-dsl/decl/enum.js +0 -38
  192. package/dist/kt-dsl/decl/enum.js.map +0 -1
  193. package/dist/kt-dsl/decl/index.d.ts +0 -11
  194. package/dist/kt-dsl/decl/index.d.ts.map +0 -1
  195. package/dist/kt-dsl/decl/index.js +0 -11
  196. package/dist/kt-dsl/decl/index.js.map +0 -1
  197. package/dist/kt-dsl/decl/interface.d.ts +0 -33
  198. package/dist/kt-dsl/decl/interface.d.ts.map +0 -1
  199. package/dist/kt-dsl/decl/interface.js +0 -24
  200. package/dist/kt-dsl/decl/interface.js.map +0 -1
  201. package/dist/kt-dsl/decl/object.d.ts +0 -34
  202. package/dist/kt-dsl/decl/object.d.ts.map +0 -1
  203. package/dist/kt-dsl/decl/object.js +0 -24
  204. package/dist/kt-dsl/decl/object.js.map +0 -1
  205. package/dist/kt-dsl/decl/prop.d.ts +0 -47
  206. package/dist/kt-dsl/decl/prop.d.ts.map +0 -1
  207. package/dist/kt-dsl/decl/prop.js +0 -28
  208. package/dist/kt-dsl/decl/prop.js.map +0 -1
  209. package/dist/kt-dsl/decl/sealedClass.d.ts +0 -68
  210. package/dist/kt-dsl/decl/sealedClass.d.ts.map +0 -1
  211. package/dist/kt-dsl/decl/sealedClass.js +0 -52
  212. package/dist/kt-dsl/decl/sealedClass.js.map +0 -1
  213. package/dist/kt-dsl/decl/topLevel.d.ts +0 -19
  214. package/dist/kt-dsl/decl/topLevel.d.ts.map +0 -1
  215. package/dist/kt-dsl/decl/topLevel.js +0 -17
  216. package/dist/kt-dsl/decl/topLevel.js.map +0 -1
  217. package/dist/kt-dsl/decl/typeAlias.d.ts +0 -23
  218. package/dist/kt-dsl/decl/typeAlias.d.ts.map +0 -1
  219. package/dist/kt-dsl/decl/typeAlias.js +0 -18
  220. package/dist/kt-dsl/decl/typeAlias.js.map +0 -1
  221. package/dist/kt-dsl/decl/types.d.ts +0 -10
  222. package/dist/kt-dsl/decl/types.d.ts.map +0 -1
  223. package/dist/kt-dsl/decl/types.js +0 -2
  224. package/dist/kt-dsl/decl/types.js.map +0 -1
  225. package/dist/kt-dsl/expr/access.d.ts +0 -48
  226. package/dist/kt-dsl/expr/access.d.ts.map +0 -1
  227. package/dist/kt-dsl/expr/access.js +0 -59
  228. package/dist/kt-dsl/expr/access.js.map +0 -1
  229. package/dist/kt-dsl/expr/call.d.ts +0 -38
  230. package/dist/kt-dsl/expr/call.d.ts.map +0 -1
  231. package/dist/kt-dsl/expr/call.js +0 -38
  232. package/dist/kt-dsl/expr/call.js.map +0 -1
  233. package/dist/kt-dsl/expr/index.d.ts +0 -7
  234. package/dist/kt-dsl/expr/index.d.ts.map +0 -1
  235. package/dist/kt-dsl/expr/index.js +0 -7
  236. package/dist/kt-dsl/expr/index.js.map +0 -1
  237. package/dist/kt-dsl/expr/literal.d.ts +0 -100
  238. package/dist/kt-dsl/expr/literal.d.ts.map +0 -1
  239. package/dist/kt-dsl/expr/literal.js +0 -108
  240. package/dist/kt-dsl/expr/literal.js.map +0 -1
  241. package/dist/kt-dsl/expr/misc.d.ts +0 -45
  242. package/dist/kt-dsl/expr/misc.d.ts.map +0 -1
  243. package/dist/kt-dsl/expr/misc.js +0 -63
  244. package/dist/kt-dsl/expr/misc.js.map +0 -1
  245. package/dist/kt-dsl/expr/op.d.ts +0 -25
  246. package/dist/kt-dsl/expr/op.d.ts.map +0 -1
  247. package/dist/kt-dsl/expr/op.js +0 -24
  248. package/dist/kt-dsl/expr/op.js.map +0 -1
  249. package/dist/kt-dsl/expr/types.d.ts +0 -93
  250. package/dist/kt-dsl/expr/types.d.ts.map +0 -1
  251. package/dist/kt-dsl/expr/types.js +0 -2
  252. package/dist/kt-dsl/expr/types.js.map +0 -1
  253. package/dist/kt-dsl/file.d.ts +0 -14
  254. package/dist/kt-dsl/file.d.ts.map +0 -1
  255. package/dist/kt-dsl/file.js +0 -9
  256. package/dist/kt-dsl/file.js.map +0 -1
  257. package/dist/kt-dsl/fun.d.ts +0 -73
  258. package/dist/kt-dsl/fun.d.ts.map +0 -1
  259. package/dist/kt-dsl/fun.js +0 -50
  260. package/dist/kt-dsl/fun.js.map +0 -1
  261. package/dist/kt-dsl/index.d.ts +0 -8
  262. package/dist/kt-dsl/index.d.ts.map +0 -1
  263. package/dist/kt-dsl/index.js +0 -8
  264. package/dist/kt-dsl/index.js.map +0 -1
  265. package/dist/kt-dsl/stmt/binding.d.ts +0 -56
  266. package/dist/kt-dsl/stmt/binding.d.ts.map +0 -1
  267. package/dist/kt-dsl/stmt/binding.js +0 -70
  268. package/dist/kt-dsl/stmt/binding.js.map +0 -1
  269. package/dist/kt-dsl/stmt/control.d.ts +0 -80
  270. package/dist/kt-dsl/stmt/control.d.ts.map +0 -1
  271. package/dist/kt-dsl/stmt/control.js +0 -77
  272. package/dist/kt-dsl/stmt/control.js.map +0 -1
  273. package/dist/kt-dsl/stmt/index.d.ts +0 -4
  274. package/dist/kt-dsl/stmt/index.d.ts.map +0 -1
  275. package/dist/kt-dsl/stmt/index.js +0 -4
  276. package/dist/kt-dsl/stmt/index.js.map +0 -1
  277. package/dist/kt-dsl/stmt/types.d.ts +0 -62
  278. package/dist/kt-dsl/stmt/types.d.ts.map +0 -1
  279. package/dist/kt-dsl/stmt/types.js +0 -2
  280. package/dist/kt-dsl/stmt/types.js.map +0 -1
  281. package/dist/kt-dsl/type/builders.d.ts +0 -75
  282. package/dist/kt-dsl/type/builders.d.ts.map +0 -1
  283. package/dist/kt-dsl/type/builders.js +0 -83
  284. package/dist/kt-dsl/type/builders.js.map +0 -1
  285. package/dist/kt-dsl/type/index.d.ts +0 -3
  286. package/dist/kt-dsl/type/index.d.ts.map +0 -1
  287. package/dist/kt-dsl/type/index.js +0 -3
  288. package/dist/kt-dsl/type/index.js.map +0 -1
  289. package/dist/kt-dsl/type/types.d.ts +0 -25
  290. package/dist/kt-dsl/type/types.d.ts.map +0 -1
  291. package/dist/kt-dsl/type/types.js +0 -2
  292. package/dist/kt-dsl/type/types.js.map +0 -1
  293. package/dist/kt-dsl/visibility.d.ts +0 -2
  294. package/dist/kt-dsl/visibility.d.ts.map +0 -1
  295. package/dist/kt-dsl/visibility.js +0 -2
  296. package/dist/kt-dsl/visibility.js.map +0 -1
@@ -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":"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"}
@@ -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"}
@@ -1,149 +1,71 @@
1
+ import { kt } from "@ir-kit/compiler-kotlin";
2
+ const K = kt.KotlinNodeKind;
3
+ const NAME_TOKEN = /[A-Za-z_][A-Za-z0-9_]*/g;
1
4
  /**
2
- * Compute the import list for a single Kotlin file by walking the
3
- * already-printed source and matching against known identifiers.
4
- * Coarse-import-everything caused unused imports per file; the
5
- * print-then-scan pattern is precise without needing a full type-tree
6
- * walker.
7
- *
8
- * Identifiers that share names across packages (e.g. `Response` exists
9
- * in both `okhttp3` and a hypothetical user model) are disambiguated
10
- * by file kind: API-layer files always pull `okhttp3.Response`, model
11
- * files never do.
5
+ * Every identifier, type and annotation name the declarations reference,
6
+ * collected from the AST (string literals and comments never count).
12
7
  */
13
- export function importsForSource(source, ctx) {
14
- const set = new Set();
15
- // kotlinx-serialization annotations.
16
- if (/@Serializable\b/.test(source)) {
17
- set.add("kotlinx.serialization.Serializable");
18
- }
19
- if (/@SerialName\b/.test(source)) {
20
- set.add("kotlinx.serialization.SerialName");
21
- }
22
- // kotlinx-datetime model fields.
23
- if (/\bInstant\b/.test(source))
24
- set.add("kotlinx.datetime.Instant");
25
- if (/\bLocalDate\b/.test(source))
26
- set.add("kotlinx.datetime.LocalDate");
27
- // kotlinx-serialization builtins (only when actually mentioned).
28
- if (/\bListSerializer\(/.test(source)) {
29
- set.add("kotlinx.serialization.builtins.ListSerializer");
30
- }
31
- if (/\bMapSerializer\(/.test(source)) {
32
- set.add("kotlinx.serialization.builtins.MapSerializer");
33
- }
34
- if (/\bByteArraySerializer\(\)/.test(source)) {
35
- set.add("kotlinx.serialization.builtins.ByteArraySerializer");
36
- }
37
- if (/\.nullable\b/.test(source)) {
38
- set.add("kotlinx.serialization.builtins.nullable");
39
- }
40
- if (/\bserializer\(\)/.test(source) && ctx.isApiSurface) {
41
- // Built-in `String.serializer()`, `Int.serializer()`, etc. live
42
- // under kotlinx.serialization.builtins. Only the API surface uses
43
- // them — model files use the auto-generated companion form.
44
- set.add("kotlinx.serialization.builtins.serializer");
45
- }
46
- if (/\bJsonElement\b/.test(source)) {
47
- set.add("kotlinx.serialization.json.JsonElement");
48
- }
49
- // OkHttp types — only API-surface files reference them.
50
- if (ctx.isApiSurface) {
51
- if (/\bHttpUrl\b/.test(source))
52
- set.add("okhttp3.HttpUrl");
53
- if (/\bRequest\b/.test(source))
54
- set.add("okhttp3.Request");
55
- if (/\bResponse\b/.test(source))
56
- set.add("okhttp3.Response");
57
- if (/\bFormBody\b/.test(source))
58
- set.add("okhttp3.FormBody");
59
- if (/\.toMediaType\(\)/.test(source)) {
60
- set.add("okhttp3.MediaType.Companion.toMediaType");
61
- }
62
- if (/\.toRequestBody\(/.test(source)) {
63
- set.add("okhttp3.RequestBody.Companion.toRequestBody");
8
+ export function referencedNames(decls) {
9
+ const names = new Set();
10
+ const visit = (value) => {
11
+ if (Array.isArray(value)) {
12
+ for (const item of value)
13
+ visit(item);
14
+ return;
64
15
  }
65
- // Cross-package model refs. The API surface lives in `<root>.api`
66
- // and references model types from `<root>.models`. Wildcard-import
67
- // when the file mentions any PascalCased identifier that isn't a
68
- // built-in (cheap heuristic; the alternative is walking every type
69
- // ref through the decl tree).
70
- if (ctx.subPkg === `${ctx.rootPkg}.api` &&
71
- /\b[A-Z][A-Za-z0-9_]*\b/.test(source) &&
72
- hasLikelyModelRef(source)) {
73
- set.add(`${ctx.rootPkg}.models.*`);
16
+ if (!value || typeof value !== "object")
17
+ return;
18
+ const node = value;
19
+ if ((node.kind === K.Identifier ||
20
+ node.kind === K.UserType ||
21
+ node.kind === K.Annotation) &&
22
+ typeof node.name === "string") {
23
+ for (const m of node.name.matchAll(NAME_TOKEN))
24
+ names.add(m[0]);
74
25
  }
75
- }
76
- // Drop self-package imports — Kotlin allows them but they're noise.
77
- return [...set].filter((i) => !i.startsWith(`${ctx.subPkg}.`)).sort();
26
+ for (const child of Object.values(value))
27
+ visit(child);
28
+ };
29
+ for (const decl of decls)
30
+ visit(decl.node);
31
+ return names;
78
32
  }
79
33
  /**
80
- * Identifiers that ship in `kotlin.*` / `okhttp3.*` / kotlinx — and so
81
- * do NOT trigger a `<root>.models.*` import. Used to keep the wildcard
82
- * model import out of files that never actually reference user types.
34
+ * Import list for one Kotlin file. Names shared across packages (e.g.
35
+ * `Response` in `okhttp3` vs. a user model) are disambiguated by file
36
+ * kind: API-layer files pull `okhttp3.Response`, model files never do.
83
37
  */
84
- const NON_MODEL_TYPES = new Set([
85
- // Kotlin stdlib
86
- "Any",
87
- "Unit",
88
- "Nothing",
89
- "String",
90
- "Int",
91
- "Long",
92
- "Short",
93
- "Byte",
94
- "Double",
95
- "Float",
96
- "Boolean",
97
- "ByteArray",
98
- "List",
99
- "Map",
100
- "Pair",
101
- "Triple",
102
- "Throwable",
103
- "Exception",
104
- "RuntimeException",
105
- "Result",
106
- "Charsets",
107
- "Base64",
108
- "TimeUnit",
109
- // kotlinx
110
- "Instant",
111
- "LocalDate",
112
- "JsonElement",
113
- "Json",
114
- "Dispatchers",
115
- "Serializable",
116
- "SerialName",
117
- "ListSerializer",
118
- "MapSerializer",
119
- "ByteArraySerializer",
120
- // OkHttp
121
- "HttpUrl",
122
- "Request",
123
- "Response",
124
- "OkHttpClient",
125
- "FormBody",
126
- "MultipartBody",
127
- "RequestBody",
128
- "MediaType",
129
- // Runtime helpers (same package)
130
- "APIClient",
131
- "APIError",
132
- "APIInterceptors",
133
- "Auth",
134
- "APIKeyLocation",
135
- "MultipartFormBody",
136
- "QueryStyle",
137
- "RequestOptions",
138
- "URLEncoding",
139
- ]);
140
- function hasLikelyModelRef(source) {
141
- const matches = source.matchAll(/\b([A-Z][A-Za-z0-9_]*)\b/g);
142
- for (const m of matches) {
143
- if (!NON_MODEL_TYPES.has(m[1]))
144
- return true;
38
+ export function importsFor(names, ctx) {
39
+ const set = new Set();
40
+ const when = (name, imp) => {
41
+ if (names.has(name))
42
+ set.add(imp);
43
+ };
44
+ when("Serializable", "kotlinx.serialization.Serializable");
45
+ when("SerialName", "kotlinx.serialization.SerialName");
46
+ when("Instant", "kotlinx.datetime.Instant");
47
+ when("LocalDate", "kotlinx.datetime.LocalDate");
48
+ when("ListSerializer", "kotlinx.serialization.builtins.ListSerializer");
49
+ when("MapSerializer", "kotlinx.serialization.builtins.MapSerializer");
50
+ when("ByteArraySerializer", "kotlinx.serialization.builtins.ByteArraySerializer");
51
+ when("nullable", "kotlinx.serialization.builtins.nullable");
52
+ when("JsonElement", "kotlinx.serialization.json.JsonElement");
53
+ if (ctx.isApiSurface) {
54
+ // `String.serializer()` etc.; model files use generated companions.
55
+ when("serializer", "kotlinx.serialization.builtins.serializer");
56
+ when("HttpUrl", "okhttp3.HttpUrl");
57
+ when("Request", "okhttp3.Request");
58
+ when("Response", "okhttp3.Response");
59
+ when("FormBody", "okhttp3.FormBody");
60
+ when("toMediaType", "okhttp3.MediaType.Companion.toMediaType");
61
+ when("toRequestBody", "okhttp3.RequestBody.Companion.toRequestBody");
145
62
  }
146
- return false;
63
+ for (const name of names) {
64
+ const pkg = ctx.declared.get(name);
65
+ if (pkg && pkg !== ctx.subPkg)
66
+ set.add(`${pkg}.${name}`);
67
+ }
68
+ return [...set].filter((i) => !i.startsWith(`${ctx.subPkg}.`)).sort();
147
69
  }
148
70
  /** API-surface predicate, exposed for the build orchestrator. */
149
71
  export function isApiSurface(decl) {
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/project/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/project/imports.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { KtDecl } from "../kt-dsl/decl/types.js";
1
+ import type { KtDecl } from "../ast/index.js";
2
2
  export type LayoutKind = "flat" | "split";
3
3
  export interface PlacedDecl {
4
4
  decl: KtDecl;
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/project/layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC9D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAM1E;AAmCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQjD"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/project/layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC9D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,UAAU,CAM1E;AAmCD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD"}
@@ -48,9 +48,7 @@ function isApiDecl(decl) {
48
48
  */
49
49
  export function declFileName(decl) {
50
50
  if (decl.kind === "topLevelFun") {
51
- const receiver = decl.fun.receiver;
52
- const recvName = receiver && receiver.kind === "ref" ? receiver.name : "Extensions";
53
- return `${recvName}Extensions.kt`;
51
+ return `${decl.receiver ?? "Extensions"}Extensions.kt`;
54
52
  }
55
53
  return `${decl.name}.kt`;
56
54
  }