@gtkx/codegen 1.0.0-rc.1 → 1.0.0-rc.2

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 (521) hide show
  1. package/dist/analysis/descriptor-render.d.ts +18 -11
  2. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  3. package/dist/analysis/descriptor-render.js +275 -152
  4. package/dist/analysis/descriptor-render.js.map +1 -1
  5. package/dist/analysis/descriptor.d.ts +37 -34
  6. package/dist/analysis/descriptor.d.ts.map +1 -1
  7. package/dist/analysis/descriptor.js +34 -30
  8. package/dist/analysis/descriptor.js.map +1 -1
  9. package/dist/analysis/inheritance.d.ts +16 -16
  10. package/dist/analysis/inheritance.d.ts.map +1 -1
  11. package/dist/analysis/inheritance.js +139 -84
  12. package/dist/analysis/inheritance.js.map +1 -1
  13. package/dist/analysis/param-structure.d.ts +14 -13
  14. package/dist/analysis/param-structure.d.ts.map +1 -1
  15. package/dist/analysis/param-structure.js +104 -53
  16. package/dist/analysis/param-structure.js.map +1 -1
  17. package/dist/analysis/ts-type.d.ts +6 -5
  18. package/dist/analysis/ts-type.d.ts.map +1 -1
  19. package/dist/analysis/ts-type.js +69 -23
  20. package/dist/analysis/ts-type.js.map +1 -1
  21. package/dist/compile.d.ts +5 -5
  22. package/dist/compile.d.ts.map +1 -1
  23. package/dist/compile.js +70 -63
  24. package/dist/compile.js.map +1 -1
  25. package/dist/docs/api-reference.d.ts +12 -11
  26. package/dist/docs/api-reference.d.ts.map +1 -1
  27. package/dist/docs/api-reference.js +194 -121
  28. package/dist/docs/api-reference.js.map +1 -1
  29. package/dist/docs/element-page.d.ts +6 -9
  30. package/dist/docs/element-page.d.ts.map +1 -1
  31. package/dist/docs/element-page.js +68 -133
  32. package/dist/docs/element-page.js.map +1 -1
  33. package/dist/docs/pipeline.d.ts +8 -7
  34. package/dist/docs/pipeline.d.ts.map +1 -1
  35. package/dist/docs/pipeline.js +79 -53
  36. package/dist/docs/pipeline.js.map +1 -1
  37. package/dist/docs/render.d.ts +21 -19
  38. package/dist/docs/render.d.ts.map +1 -1
  39. package/dist/docs/render.js +80 -71
  40. package/dist/docs/render.js.map +1 -1
  41. package/dist/docs/symbol-page.d.ts +6 -6
  42. package/dist/docs/symbol-page.d.ts.map +1 -1
  43. package/dist/docs/symbol-page.js +126 -84
  44. package/dist/docs/symbol-page.js.map +1 -1
  45. package/dist/fingerprint.d.ts +28 -5
  46. package/dist/fingerprint.d.ts.map +1 -1
  47. package/dist/fingerprint.js +66 -13
  48. package/dist/fingerprint.js.map +1 -1
  49. package/dist/gi.d.ts +13 -0
  50. package/dist/gi.d.ts.map +1 -0
  51. package/dist/gi.js +21 -0
  52. package/dist/gi.js.map +1 -0
  53. package/dist/gir/ancestry.d.ts +4 -3
  54. package/dist/gir/ancestry.d.ts.map +1 -1
  55. package/dist/gir/ancestry.js +12 -15
  56. package/dist/gir/ancestry.js.map +1 -1
  57. package/dist/gir/callback.d.ts +6 -11
  58. package/dist/gir/callback.d.ts.map +1 -1
  59. package/dist/gir/callback.js +6 -7
  60. package/dist/gir/callback.js.map +1 -1
  61. package/dist/gir/class.d.ts +7 -5
  62. package/dist/gir/class.d.ts.map +1 -1
  63. package/dist/gir/class.js +14 -12
  64. package/dist/gir/class.js.map +1 -1
  65. package/dist/gir/enum.d.ts +3 -3
  66. package/dist/gir/enum.d.ts.map +1 -1
  67. package/dist/gir/enum.js +7 -6
  68. package/dist/gir/enum.js.map +1 -1
  69. package/dist/gir/field.d.ts +8 -3
  70. package/dist/gir/field.d.ts.map +1 -1
  71. package/dist/gir/field.js +30 -7
  72. package/dist/gir/field.js.map +1 -1
  73. package/dist/gir/function.d.ts +6 -3
  74. package/dist/gir/function.d.ts.map +1 -1
  75. package/dist/gir/function.js +23 -7
  76. package/dist/gir/function.js.map +1 -1
  77. package/dist/gir/gir-path.d.ts +2 -1
  78. package/dist/gir/gir-path.d.ts.map +1 -1
  79. package/dist/gir/gir-path.js +26 -10
  80. package/dist/gir/gir-path.js.map +1 -1
  81. package/dist/gir/libraries.d.ts +3 -2
  82. package/dist/gir/libraries.d.ts.map +1 -1
  83. package/dist/gir/libraries.js +39 -27
  84. package/dist/gir/libraries.js.map +1 -1
  85. package/dist/gir/library.d.ts +17 -11
  86. package/dist/gir/library.d.ts.map +1 -1
  87. package/dist/gir/library.js +116 -92
  88. package/dist/gir/library.js.map +1 -1
  89. package/dist/gir/namespace.d.ts +10 -10
  90. package/dist/gir/namespace.d.ts.map +1 -1
  91. package/dist/gir/namespace.js +21 -20
  92. package/dist/gir/namespace.js.map +1 -1
  93. package/dist/gir/nullable-overrides.d.ts +3 -0
  94. package/dist/gir/nullable-overrides.d.ts.map +1 -0
  95. package/dist/gir/nullable-overrides.js +5 -0
  96. package/dist/gir/nullable-overrides.js.map +1 -0
  97. package/dist/gir/parameter.d.ts +14 -12
  98. package/dist/gir/parameter.d.ts.map +1 -1
  99. package/dist/gir/parameter.js +27 -18
  100. package/dist/gir/parameter.js.map +1 -1
  101. package/dist/gir/parse.d.ts +12 -13
  102. package/dist/gir/parse.d.ts.map +1 -1
  103. package/dist/gir/parse.js +50 -40
  104. package/dist/gir/parse.js.map +1 -1
  105. package/dist/gir/primitives.d.ts +5 -4
  106. package/dist/gir/primitives.d.ts.map +1 -1
  107. package/dist/gir/primitives.js +4 -3
  108. package/dist/gir/primitives.js.map +1 -1
  109. package/dist/gir/property.d.ts +5 -4
  110. package/dist/gir/property.d.ts.map +1 -1
  111. package/dist/gir/property.js +10 -9
  112. package/dist/gir/property.js.map +1 -1
  113. package/dist/gir/record.d.ts +5 -4
  114. package/dist/gir/record.d.ts.map +1 -1
  115. package/dist/gir/record.js +13 -12
  116. package/dist/gir/record.js.map +1 -1
  117. package/dist/gir/size.d.ts +6 -5
  118. package/dist/gir/size.d.ts.map +1 -1
  119. package/dist/gir/size.js +49 -47
  120. package/dist/gir/size.js.map +1 -1
  121. package/dist/gir/type-id.d.ts +17 -15
  122. package/dist/gir/type-id.d.ts.map +1 -1
  123. package/dist/gir/type-id.js +5 -1
  124. package/dist/gir/type-id.js.map +1 -1
  125. package/dist/gir/type-ref.d.ts +3 -2
  126. package/dist/gir/type-ref.d.ts.map +1 -1
  127. package/dist/gir/type-ref.js +36 -25
  128. package/dist/gir/type-ref.js.map +1 -1
  129. package/dist/gir/type.d.ts +3 -2
  130. package/dist/gir/type.d.ts.map +1 -1
  131. package/dist/gir/type.js.map +1 -1
  132. package/dist/index.d.ts +2 -0
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +1 -0
  135. package/dist/index.js.map +1 -1
  136. package/dist/jsx.d.ts +26 -0
  137. package/dist/jsx.d.ts.map +1 -0
  138. package/dist/jsx.js +40 -0
  139. package/dist/jsx.js.map +1 -0
  140. package/dist/khronos/args.d.ts +7 -7
  141. package/dist/khronos/args.d.ts.map +1 -1
  142. package/dist/khronos/args.js +88 -67
  143. package/dist/khronos/args.js.map +1 -1
  144. package/dist/khronos/jsdoc.d.ts +4 -4
  145. package/dist/khronos/jsdoc.d.ts.map +1 -1
  146. package/dist/khronos/jsdoc.js +29 -16
  147. package/dist/khronos/jsdoc.js.map +1 -1
  148. package/dist/khronos/model.d.ts +8 -7
  149. package/dist/khronos/model.d.ts.map +1 -1
  150. package/dist/khronos/model.js +94 -59
  151. package/dist/khronos/model.js.map +1 -1
  152. package/dist/khronos/modules.d.ts +4 -3
  153. package/dist/khronos/modules.d.ts.map +1 -1
  154. package/dist/khronos/modules.js +40 -25
  155. package/dist/khronos/modules.js.map +1 -1
  156. package/dist/khronos/param-pair.d.ts +11 -0
  157. package/dist/khronos/param-pair.d.ts.map +1 -0
  158. package/dist/khronos/param-pair.js +6 -0
  159. package/dist/khronos/param-pair.js.map +1 -0
  160. package/dist/khronos/parse.d.ts +7 -8
  161. package/dist/khronos/parse.d.ts.map +1 -1
  162. package/dist/khronos/parse.js +17 -16
  163. package/dist/khronos/parse.js.map +1 -1
  164. package/dist/khronos/pipeline.d.ts +4 -4
  165. package/dist/khronos/pipeline.d.ts.map +1 -1
  166. package/dist/khronos/pipeline.js +97 -56
  167. package/dist/khronos/pipeline.js.map +1 -1
  168. package/dist/khronos/plan.d.ts +11 -10
  169. package/dist/khronos/plan.d.ts.map +1 -1
  170. package/dist/khronos/plan.js +109 -45
  171. package/dist/khronos/plan.js.map +1 -1
  172. package/dist/khronos/render.d.ts +5 -4
  173. package/dist/khronos/render.d.ts.map +1 -1
  174. package/dist/khronos/render.js +106 -59
  175. package/dist/khronos/render.js.map +1 -1
  176. package/dist/khronos/select.d.ts +4 -4
  177. package/dist/khronos/select.d.ts.map +1 -1
  178. package/dist/khronos/select.js +30 -19
  179. package/dist/khronos/select.js.map +1 -1
  180. package/dist/react/element-config.d.ts +17 -0
  181. package/dist/react/element-config.d.ts.map +1 -0
  182. package/dist/react/element-config.js +61 -0
  183. package/dist/react/element-config.js.map +1 -0
  184. package/dist/runner.d.ts +17 -10
  185. package/dist/runner.d.ts.map +1 -1
  186. package/dist/runner.js +45 -43
  187. package/dist/runner.js.map +1 -1
  188. package/dist/store/compile-store.d.ts +5 -3
  189. package/dist/store/compile-store.d.ts.map +1 -1
  190. package/dist/store/compile-store.js +24 -22
  191. package/dist/store/compile-store.js.map +1 -1
  192. package/dist/store/gi/async.d.ts +2 -1
  193. package/dist/store/gi/async.d.ts.map +1 -1
  194. package/dist/store/gi/async.js +28 -24
  195. package/dist/store/gi/async.js.map +1 -1
  196. package/dist/store/gi/callables.d.ts +26 -20
  197. package/dist/store/gi/callables.d.ts.map +1 -1
  198. package/dist/store/gi/callables.js +162 -100
  199. package/dist/store/gi/callables.js.map +1 -1
  200. package/dist/store/gi/callback.d.ts +3 -2
  201. package/dist/store/gi/callback.d.ts.map +1 -1
  202. package/dist/store/gi/callback.js +6 -3
  203. package/dist/store/gi/callback.js.map +1 -1
  204. package/dist/store/gi/class-struct-record.d.ts +4 -3
  205. package/dist/store/gi/class-struct-record.d.ts.map +1 -1
  206. package/dist/store/gi/class-struct-record.js +33 -15
  207. package/dist/store/gi/class-struct-record.js.map +1 -1
  208. package/dist/store/gi/class.d.ts +2 -1
  209. package/dist/store/gi/class.d.ts.map +1 -1
  210. package/dist/store/gi/class.js +86 -47
  211. package/dist/store/gi/class.js.map +1 -1
  212. package/dist/store/gi/companion.d.ts +2 -1
  213. package/dist/store/gi/companion.d.ts.map +1 -1
  214. package/dist/store/gi/companion.js +8 -5
  215. package/dist/store/gi/companion.js.map +1 -1
  216. package/dist/store/gi/constant.d.ts +3 -2
  217. package/dist/store/gi/constant.d.ts.map +1 -1
  218. package/dist/store/gi/constant.js +25 -8
  219. package/dist/store/gi/constant.js.map +1 -1
  220. package/dist/store/gi/constructor-props.d.ts +3 -2
  221. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  222. package/dist/store/gi/constructor-props.js +17 -10
  223. package/dist/store/gi/constructor-props.js.map +1 -1
  224. package/dist/store/gi/enum.d.ts +3 -2
  225. package/dist/store/gi/enum.d.ts.map +1 -1
  226. package/dist/store/gi/enum.js +14 -11
  227. package/dist/store/gi/enum.js.map +1 -1
  228. package/dist/store/gi/function.d.ts +5 -4
  229. package/dist/store/gi/function.d.ts.map +1 -1
  230. package/dist/store/gi/function.js +50 -23
  231. package/dist/store/gi/function.js.map +1 -1
  232. package/dist/store/gi/gtype-binding.d.ts +4 -4
  233. package/dist/store/gi/gtype-binding.d.ts.map +1 -1
  234. package/dist/store/gi/gtype-binding.js +15 -11
  235. package/dist/store/gi/gtype-binding.js.map +1 -1
  236. package/dist/store/gi/interface.d.ts +2 -1
  237. package/dist/store/gi/interface.d.ts.map +1 -1
  238. package/dist/store/gi/interface.js +36 -18
  239. package/dist/store/gi/interface.js.map +1 -1
  240. package/dist/store/gi/item-comparators.d.ts +3 -2
  241. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  242. package/dist/store/gi/item-comparators.js +33 -21
  243. package/dist/store/gi/item-comparators.js.map +1 -1
  244. package/dist/store/gi/method.d.ts +13 -13
  245. package/dist/store/gi/method.d.ts.map +1 -1
  246. package/dist/store/gi/method.js +187 -130
  247. package/dist/store/gi/method.js.map +1 -1
  248. package/dist/store/gi/param-marshal.d.ts +7 -6
  249. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  250. package/dist/store/gi/param-marshal.js +26 -13
  251. package/dist/store/gi/param-marshal.js.map +1 -1
  252. package/dist/store/gi/pipeline.d.ts +2 -1
  253. package/dist/store/gi/pipeline.d.ts.map +1 -1
  254. package/dist/store/gi/pipeline.js +38 -23
  255. package/dist/store/gi/pipeline.js.map +1 -1
  256. package/dist/store/gi/properties.d.ts +2 -1
  257. package/dist/store/gi/properties.d.ts.map +1 -1
  258. package/dist/store/gi/properties.js +6 -4
  259. package/dist/store/gi/properties.js.map +1 -1
  260. package/dist/store/gi/property-accessor.d.ts +11 -10
  261. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  262. package/dist/store/gi/property-accessor.js +86 -60
  263. package/dist/store/gi/property-accessor.js.map +1 -1
  264. package/dist/store/gi/record-constructor.d.ts +3 -2
  265. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  266. package/dist/store/gi/record-constructor.js +36 -25
  267. package/dist/store/gi/record-constructor.js.map +1 -1
  268. package/dist/store/gi/record-field-accessor.d.ts +8 -8
  269. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  270. package/dist/store/gi/record-field-accessor.js +171 -99
  271. package/dist/store/gi/record-field-accessor.js.map +1 -1
  272. package/dist/store/gi/record-layout.d.ts +6 -5
  273. package/dist/store/gi/record-layout.d.ts.map +1 -1
  274. package/dist/store/gi/record-layout.js +75 -39
  275. package/dist/store/gi/record-layout.js.map +1 -1
  276. package/dist/store/gi/record.d.ts +2 -1
  277. package/dist/store/gi/record.d.ts.map +1 -1
  278. package/dist/store/gi/record.js +19 -13
  279. package/dist/store/gi/record.js.map +1 -1
  280. package/dist/store/gi/registration.d.ts +3 -3
  281. package/dist/store/gi/registration.d.ts.map +1 -1
  282. package/dist/store/gi/registration.js +3 -2
  283. package/dist/store/gi/registration.js.map +1 -1
  284. package/dist/store/gi/return-wrap.d.ts +2 -2
  285. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  286. package/dist/store/gi/return-wrap.js +43 -22
  287. package/dist/store/gi/return-wrap.js.map +1 -1
  288. package/dist/store/gi/runtime-override.d.ts +2 -1
  289. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  290. package/dist/store/gi/runtime-override.js +6 -3
  291. package/dist/store/gi/runtime-override.js.map +1 -1
  292. package/dist/store/gi/signal.d.ts +3 -2
  293. package/dist/store/gi/signal.d.ts.map +1 -1
  294. package/dist/store/gi/signal.js +113 -66
  295. package/dist/store/gi/signal.js.map +1 -1
  296. package/dist/store/gi/vtable.d.ts +2 -1
  297. package/dist/store/gi/vtable.d.ts.map +1 -1
  298. package/dist/store/gi/vtable.js +60 -30
  299. package/dist/store/gi/vtable.js.map +1 -1
  300. package/dist/store/gi-store.d.ts +5 -4
  301. package/dist/store/gi-store.d.ts.map +1 -1
  302. package/dist/store/gi-store.js +4 -2
  303. package/dist/store/gi-store.js.map +1 -1
  304. package/dist/store/jsx/element-components.d.ts +23 -0
  305. package/dist/store/jsx/element-components.d.ts.map +1 -0
  306. package/dist/store/jsx/element-components.js +86 -0
  307. package/dist/store/jsx/element-components.js.map +1 -0
  308. package/dist/store/jsx/element-prop-imports.d.ts +17 -0
  309. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
  310. package/dist/store/jsx/element-prop-imports.js +15 -0
  311. package/dist/store/jsx/element-prop-imports.js.map +1 -0
  312. package/dist/store/jsx/element-prop-types.d.ts +10 -0
  313. package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
  314. package/dist/store/jsx/element-prop-types.js +41 -0
  315. package/dist/store/jsx/element-prop-types.js.map +1 -0
  316. package/dist/store/jsx/gir-index.d.ts +16 -0
  317. package/dist/store/jsx/gir-index.d.ts.map +1 -0
  318. package/dist/store/jsx/gir-index.js +33 -0
  319. package/dist/store/jsx/gir-index.js.map +1 -0
  320. package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
  321. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.js +128 -0
  323. package/dist/store/jsx/intrinsic-elements.js.map +1 -0
  324. package/dist/store/{react → jsx}/jsx.d.ts +2 -4
  325. package/dist/store/jsx/jsx.d.ts.map +1 -0
  326. package/dist/store/{react → jsx}/jsx.js +110 -71
  327. package/dist/store/jsx/jsx.js.map +1 -0
  328. package/dist/store/jsx/metadata.d.ts +4 -0
  329. package/dist/store/jsx/metadata.d.ts.map +1 -0
  330. package/dist/store/{react → jsx}/metadata.js +148 -69
  331. package/dist/store/jsx/metadata.js.map +1 -0
  332. package/dist/store/jsx/pipeline.d.ts +21 -0
  333. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  334. package/dist/store/{react → jsx}/pipeline.js +36 -15
  335. package/dist/store/jsx/pipeline.js.map +1 -0
  336. package/dist/store/{react → jsx}/props.d.ts +9 -12
  337. package/dist/store/jsx/props.d.ts.map +1 -0
  338. package/dist/store/jsx/props.js +158 -0
  339. package/dist/store/jsx/props.js.map +1 -0
  340. package/dist/store/jsx-store.d.ts +5 -3
  341. package/dist/store/jsx-store.d.ts.map +1 -1
  342. package/dist/store/jsx-store.js +4 -1
  343. package/dist/store/jsx-store.js.map +1 -1
  344. package/dist/store/store-fs.d.ts +14 -12
  345. package/dist/store/store-fs.d.ts.map +1 -1
  346. package/dist/store/store-fs.js +9 -7
  347. package/dist/store/store-fs.js.map +1 -1
  348. package/dist/writer/context.d.ts +2 -1
  349. package/dist/writer/context.d.ts.map +1 -1
  350. package/dist/writer/context.js +12 -6
  351. package/dist/writer/context.js.map +1 -1
  352. package/dist/writer/doc.d.ts +2 -1
  353. package/dist/writer/doc.d.ts.map +1 -1
  354. package/dist/writer/doc.js +13 -7
  355. package/dist/writer/doc.js.map +1 -1
  356. package/dist/writer/emit.d.ts +8 -7
  357. package/dist/writer/emit.d.ts.map +1 -1
  358. package/dist/writer/emit.js +13 -10
  359. package/dist/writer/emit.js.map +1 -1
  360. package/dist/writer/gtk-doc.d.ts +2 -1
  361. package/dist/writer/gtk-doc.d.ts.map +1 -1
  362. package/dist/writer/gtk-doc.js +29 -18
  363. package/dist/writer/gtk-doc.js.map +1 -1
  364. package/dist/writer/imports.d.ts +4 -2
  365. package/dist/writer/imports.d.ts.map +1 -1
  366. package/dist/writer/imports.js +35 -24
  367. package/dist/writer/imports.js.map +1 -1
  368. package/dist/writer/module.d.ts +3 -2
  369. package/dist/writer/module.d.ts.map +1 -1
  370. package/dist/writer/module.js +16 -9
  371. package/dist/writer/module.js.map +1 -1
  372. package/dist/xml.d.ts +4 -0
  373. package/dist/xml.d.ts.map +1 -0
  374. package/dist/xml.js +10 -0
  375. package/dist/xml.js.map +1 -0
  376. package/overrides/cairo/context.ts.ejs +7 -7
  377. package/overrides/cairo/matrix.ts.ejs +2 -2
  378. package/overrides/cairo/recording-surface.ts.ejs +2 -2
  379. package/overrides/cairo/region.ts.ejs +1 -1
  380. package/overrides/cairo/scaled-font.ts.ejs +3 -3
  381. package/package.json +15 -9
  382. package/src/analysis/descriptor-render.ts +484 -168
  383. package/src/analysis/descriptor.ts +162 -125
  384. package/src/analysis/inheritance.ts +286 -98
  385. package/src/analysis/param-structure.ts +188 -57
  386. package/src/analysis/ts-type.ts +112 -26
  387. package/src/compile.ts +103 -76
  388. package/src/docs/api-reference.ts +340 -144
  389. package/src/docs/element-page.ts +137 -146
  390. package/src/docs/pipeline.ts +132 -73
  391. package/src/docs/render.ts +151 -87
  392. package/src/docs/symbol-page.ts +268 -123
  393. package/src/fingerprint.ts +127 -29
  394. package/src/gi.ts +26 -0
  395. package/src/gir/ancestry.ts +26 -14
  396. package/src/gir/callback.ts +10 -15
  397. package/src/gir/class.ts +20 -16
  398. package/src/gir/enum.ts +9 -7
  399. package/src/gir/field.ts +37 -8
  400. package/src/gir/function.ts +33 -9
  401. package/src/gir/gir-path.ts +36 -12
  402. package/src/gir/libraries.ts +56 -31
  403. package/src/gir/library.ts +200 -97
  404. package/src/gir/namespace.ts +42 -26
  405. package/src/gir/nullable-overrides.ts +5 -0
  406. package/src/gir/parameter.ts +80 -42
  407. package/src/gir/parse.ts +102 -47
  408. package/src/gir/primitives.ts +25 -23
  409. package/src/gir/property.ts +13 -11
  410. package/src/gir/record.ts +16 -14
  411. package/src/gir/size.ts +91 -58
  412. package/src/gir/type-id.ts +33 -18
  413. package/src/gir/type-ref.ts +62 -26
  414. package/src/gir/type.ts +10 -8
  415. package/src/index.ts +7 -0
  416. package/src/jsx.ts +70 -0
  417. package/src/khronos/args.ts +158 -89
  418. package/src/khronos/jsdoc.ts +67 -29
  419. package/src/khronos/model.ts +154 -53
  420. package/src/khronos/modules.ts +67 -27
  421. package/src/khronos/param-pair.ts +14 -0
  422. package/src/khronos/parse.ts +37 -17
  423. package/src/khronos/pipeline.ts +193 -90
  424. package/src/khronos/plan.ts +235 -86
  425. package/src/khronos/render.ts +208 -71
  426. package/src/khronos/select.ts +48 -18
  427. package/src/react/element-config.ts +91 -0
  428. package/src/runner.ts +93 -57
  429. package/src/store/compile-store.ts +32 -26
  430. package/src/store/gi/async.ts +48 -21
  431. package/src/store/gi/callables.ts +345 -136
  432. package/src/store/gi/callback.ts +13 -4
  433. package/src/store/gi/class-struct-record.ts +49 -17
  434. package/src/store/gi/class.ts +186 -64
  435. package/src/store/gi/companion.ts +15 -6
  436. package/src/store/gi/constant.ts +42 -8
  437. package/src/store/gi/constructor-props.ts +42 -16
  438. package/src/store/gi/enum.ts +28 -13
  439. package/src/store/gi/function.ts +90 -24
  440. package/src/store/gi/gtype-binding.ts +31 -18
  441. package/src/store/gi/interface.ts +101 -36
  442. package/src/store/gi/item-comparators.ts +74 -26
  443. package/src/store/gi/method.ts +376 -159
  444. package/src/store/gi/param-marshal.ts +38 -15
  445. package/src/store/gi/pipeline.ts +72 -22
  446. package/src/store/gi/properties.ts +16 -5
  447. package/src/store/gi/property-accessor.ts +192 -84
  448. package/src/store/gi/record-constructor.ts +62 -30
  449. package/src/store/gi/record-field-accessor.ts +380 -167
  450. package/src/store/gi/record-layout.ts +130 -43
  451. package/src/store/gi/record.ts +37 -14
  452. package/src/store/gi/registration.ts +15 -9
  453. package/src/store/gi/return-wrap.ts +71 -23
  454. package/src/store/gi/runtime-override.ts +13 -3
  455. package/src/store/gi/signal.ts +244 -104
  456. package/src/store/gi/vtable.ts +117 -41
  457. package/src/store/gi-store.ts +26 -13
  458. package/src/store/jsx/element-components.ts +152 -0
  459. package/src/store/jsx/element-prop-imports.ts +24 -0
  460. package/src/store/jsx/element-prop-types.ts +59 -0
  461. package/src/store/jsx/gir-index.ts +62 -0
  462. package/src/store/jsx/intrinsic-elements.ts +262 -0
  463. package/src/store/{react → jsx}/jsx.ts +213 -99
  464. package/src/store/jsx/metadata.ts +385 -0
  465. package/src/store/jsx/pipeline.ts +145 -0
  466. package/src/store/jsx/props.ts +274 -0
  467. package/src/store/jsx-store.ts +15 -3
  468. package/src/store/store-fs.ts +36 -20
  469. package/src/writer/context.ts +25 -6
  470. package/src/writer/doc.ts +19 -5
  471. package/src/writer/emit.ts +20 -11
  472. package/src/writer/gtk-doc.ts +48 -21
  473. package/src/writer/imports.ts +63 -28
  474. package/src/writer/module.ts +35 -11
  475. package/src/xml.ts +12 -0
  476. package/dist/store/react/built-ins.d.ts +0 -9
  477. package/dist/store/react/built-ins.d.ts.map +0 -1
  478. package/dist/store/react/built-ins.js +0 -226
  479. package/dist/store/react/built-ins.js.map +0 -1
  480. package/dist/store/react/element-components.d.ts +0 -15
  481. package/dist/store/react/element-components.d.ts.map +0 -1
  482. package/dist/store/react/element-components.js +0 -92
  483. package/dist/store/react/element-components.js.map +0 -1
  484. package/dist/store/react/element-prop-types.d.ts +0 -19
  485. package/dist/store/react/element-prop-types.d.ts.map +0 -1
  486. package/dist/store/react/element-prop-types.js +0 -244
  487. package/dist/store/react/element-prop-types.js.map +0 -1
  488. package/dist/store/react/element-props.d.ts +0 -4
  489. package/dist/store/react/element-props.d.ts.map +0 -1
  490. package/dist/store/react/element-props.js +0 -178
  491. package/dist/store/react/element-props.js.map +0 -1
  492. package/dist/store/react/gir-index.d.ts +0 -25
  493. package/dist/store/react/gir-index.d.ts.map +0 -1
  494. package/dist/store/react/gir-index.js +0 -55
  495. package/dist/store/react/gir-index.js.map +0 -1
  496. package/dist/store/react/intrinsic-elements.d.ts +0 -26
  497. package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
  498. package/dist/store/react/intrinsic-elements.js +0 -107
  499. package/dist/store/react/intrinsic-elements.js.map +0 -1
  500. package/dist/store/react/jsx.d.ts.map +0 -1
  501. package/dist/store/react/jsx.js.map +0 -1
  502. package/dist/store/react/metadata.d.ts +0 -4
  503. package/dist/store/react/metadata.d.ts.map +0 -1
  504. package/dist/store/react/metadata.js.map +0 -1
  505. package/dist/store/react/pipeline.d.ts +0 -14
  506. package/dist/store/react/pipeline.d.ts.map +0 -1
  507. package/dist/store/react/pipeline.js.map +0 -1
  508. package/dist/store/react/props.d.ts.map +0 -1
  509. package/dist/store/react/props.js +0 -133
  510. package/dist/store/react/props.js.map +0 -1
  511. package/overrides/gtk/constants.ts.ejs +0 -3
  512. package/overrides/gtk/index.ts.ejs +0 -2
  513. package/src/store/react/built-ins.ts +0 -260
  514. package/src/store/react/element-components.ts +0 -138
  515. package/src/store/react/element-prop-types.ts +0 -280
  516. package/src/store/react/element-props.ts +0 -204
  517. package/src/store/react/gir-index.ts +0 -85
  518. package/src/store/react/intrinsic-elements.ts +0 -161
  519. package/src/store/react/metadata.ts +0 -197
  520. package/src/store/react/pipeline.ts +0 -90
  521. package/src/store/react/props.ts +0 -197
@@ -1,13 +1,13 @@
1
- import { lowerFirst, toCamelCase, toCamelIdentifier, toPascalCase } from "@gtkx/utils";
2
- import { ancestorChain, type ResolvedAncestor, resolveInterface } from "../gir/ancestry.js";
1
+ import { camelCase, lowerFirst, pascalCase, toCamelIdentifier } from "@gtkx/utils";
3
2
  import type { GirClass } from "../gir/class.js";
4
3
  import type { GirFunction } from "../gir/function.js";
5
4
  import type { Library } from "../gir/library.js";
6
5
  import type { GirProperty } from "../gir/property.js";
7
6
  import type { TypeId } from "../gir/type-id.js";
7
+ import type { ModuleContext } from "../writer/context.js";
8
+ import { ancestorChain, type ResolvedAncestor, resolveInterface } from "../gir/ancestry.js";
8
9
  import { methodExportName } from "../store/gi/method.js";
9
10
  import { resolveAccessorType } from "../store/gi/property-accessor.js";
10
- import type { ModuleContext } from "../writer/context.js";
11
11
  import { inputParameters } from "./param-structure.js";
12
12
  import { renderTsType } from "./ts-type.js";
13
13
 
@@ -16,7 +16,36 @@ type AncestryContext = {
16
16
  namespace: { name: string };
17
17
  };
18
18
 
19
- export const resolveImplementedInterface = (
19
+ type OwnedProperty = { owner: GirClass; property: GirProperty };
20
+ type MethodSignature = { returnType: string; arity: number };
21
+
22
+ type InheritedMethod = {
23
+ method: GirFunction;
24
+ namespaceName: string;
25
+ };
26
+
27
+ type InheritedMethods = {
28
+ returnTypes: Map<string, string>;
29
+ definitions: Map<string, InheritedMethod>;
30
+ };
31
+
32
+ type InheritedMatch = {
33
+ inheritedReturn: string;
34
+ inheritedMethod: InheritedMethod;
35
+ };
36
+
37
+ const RESERVED_SIGNAL_MEMBERS = new Set([
38
+ "connect",
39
+ "disconnect",
40
+ "emit",
41
+ "on",
42
+ "once",
43
+ "off",
44
+ "addEventListener",
45
+ "removeEventListener",
46
+ ]);
47
+
48
+ const resolveImplementedInterface = (
20
49
  context: AncestryContext,
21
50
  name: string,
22
51
  defaultNamespace: string = context.namespace.name,
@@ -28,139 +57,229 @@ const resolveDirectInterfaces = (
28
57
  defaultNamespace: string,
29
58
  ): ResolvedAncestor[] => {
30
59
  const interfaces: ResolvedAncestor[] = [];
60
+
31
61
  for (const implementName of klass.implements) {
32
62
  const iface = resolveImplementedInterface(context, implementName, defaultNamespace);
33
- if (iface !== undefined) interfaces.push(iface);
63
+
64
+ if (iface !== undefined) {
65
+ interfaces.push(iface);
66
+ }
34
67
  }
68
+
35
69
  return interfaces;
36
70
  };
37
71
 
38
- export const resolvePrerequisiteReference = (context: ModuleContext, name: string): string | undefined => {
72
+ const resolvePrerequisiteReference = (context: ModuleContext, name: string): string | undefined => {
39
73
  const resolved = context.library.resolveType(context.namespace.name, name);
40
- if (resolved === undefined) return undefined;
41
- if (resolved.kind !== "interface" && resolved.kind !== "class") return undefined;
42
- return context.qualify(resolved.namespace.name, toPascalCase(resolved.value.name));
74
+
75
+ if (resolved === undefined) {
76
+ return undefined;
77
+ }
78
+
79
+ if (resolved.kind !== "interface" && resolved.kind !== "class") {
80
+ return undefined;
81
+ }
82
+
83
+ return context.qualify(resolved.namespace.name, pascalCase(resolved.value.name));
43
84
  };
44
85
 
45
- export const forEachAncestor = (
86
+ const forEachAncestor = (
46
87
  context: AncestryContext,
47
88
  klass: GirClass,
48
89
  visit: (ancestor: ResolvedAncestor, interfaces: ResolvedAncestor[]) => void,
49
- stop: (ancestor: GirClass) => boolean = () => false,
90
+ shouldStop: (ancestor: GirClass) => boolean = () => false,
50
91
  ): void => {
51
- let first = true;
92
+ let isFirst = true;
93
+
52
94
  for (const ancestor of ancestorChain(context.library, klass, context.namespace.name)) {
53
- if (first) {
54
- first = false;
95
+ if (isFirst) {
96
+ isFirst = false;
55
97
  continue;
56
98
  }
57
- if (stop(ancestor.klass)) break;
99
+
100
+ if (shouldStop(ancestor.klass)) {
101
+ break;
102
+ }
103
+
58
104
  visit(ancestor, resolveDirectInterfaces(context, ancestor.klass, ancestor.namespaceName));
59
105
  }
60
106
  };
61
107
 
108
+ const visitInterfaceProperties = (
109
+ interfaces: ResolvedAncestor[],
110
+ visit: (owner: GirClass, property: GirProperty) => void,
111
+ ): void => {
112
+ for (const iface of interfaces) {
113
+ for (const property of iface.klass.properties) {
114
+ visit(iface.klass, property);
115
+ }
116
+ }
117
+ };
118
+
62
119
  const forEachInheritedProperty = (
63
120
  context: ModuleContext,
64
121
  klass: GirClass,
65
122
  visit: (owner: GirClass, property: GirProperty) => void,
66
123
  ): void => {
67
124
  forEachAncestor(context, klass, (ancestor, interfaces) => {
68
- for (const property of ancestor.klass.properties) visit(ancestor.klass, property);
69
- for (const iface of interfaces) {
70
- for (const property of iface.klass.properties) visit(iface.klass, property);
125
+ for (const property of ancestor.klass.properties) {
126
+ visit(ancestor.klass, property);
71
127
  }
128
+
129
+ visitInterfaceProperties(interfaces, visit);
72
130
  });
73
131
  };
74
132
 
75
- export type OwnedProperty = { owner: GirClass; property: GirProperty };
133
+ const collectSeenPropertyNames = (context: ModuleContext, klass: GirClass): Set<string> => {
134
+ const seen: Set<string> = new Set();
135
+
136
+ for (const property of klass.properties) {
137
+ seen.add(toCamelIdentifier(property.name));
138
+ }
76
139
 
77
- export const collectInterfaceProperties = (context: ModuleContext, klass: GirClass): OwnedProperty[] => {
78
- const seen = new Set<string>();
79
- for (const property of klass.properties) seen.add(toCamelIdentifier(property.name));
80
140
  forEachInheritedProperty(context, klass, (_owner, property) => seen.add(toCamelIdentifier(property.name)));
141
+
142
+ return seen;
143
+ };
144
+
145
+ const collectNewInterfaceProperties = (iface: ResolvedAncestor, seen: Set<string>): OwnedProperty[] => {
81
146
  const result: OwnedProperty[] = [];
82
- for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {
83
- for (const property of iface.klass.properties) {
84
- const name = toCamelIdentifier(property.name);
85
- if (seen.has(name)) continue;
86
- seen.add(name);
87
- result.push({ owner: iface.klass, property });
147
+
148
+ for (const property of iface.klass.properties) {
149
+ const name = toCamelIdentifier(property.name);
150
+
151
+ if (seen.has(name)) {
152
+ continue;
88
153
  }
154
+
155
+ seen.add(name);
156
+ result.push({ owner: iface.klass, property });
89
157
  }
158
+
90
159
  return result;
91
160
  };
92
161
 
93
- type MethodSignature = { returnType: string; arity: number };
162
+ const collectInterfaceProperties = (context: ModuleContext, klass: GirClass): OwnedProperty[] => {
163
+ const seen = collectSeenPropertyNames(context, klass);
164
+ const result: OwnedProperty[] = [];
165
+
166
+ for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {
167
+ result.push(...collectNewInterfaceProperties(iface, seen));
168
+ }
169
+
170
+ return result;
171
+ };
172
+
173
+ const recordAncestorSignatures = (
174
+ context: ModuleContext,
175
+ klass: GirClass,
176
+ signatures: Map<string, MethodSignature>,
177
+ ): void => {
178
+ for (const method of klass.methods) {
179
+ const name = camelCase(method.name);
180
+
181
+ if (!method.introspectable || signatures.has(name)) {
182
+ continue;
183
+ }
184
+
185
+ signatures.set(name, {
186
+ returnType: renderTsType(context, method.returnValue.type, method.returnValue.nullable),
187
+ arity: inputParameters(context.library, method).length,
188
+ });
189
+ }
190
+ };
94
191
 
95
192
  const ancestorClassMethodSignatures = (context: ModuleContext, klass: GirClass): Map<string, MethodSignature> => {
96
- const signatures = new Map<string, MethodSignature>();
193
+ const signatures: Map<string, MethodSignature> = new Map();
194
+
97
195
  forEachAncestor(context, klass, (ancestor) => {
98
- for (const method of ancestor.klass.methods) {
99
- if (!method.introspectable) continue;
100
- const name = toCamelCase(method.name);
101
- if (signatures.has(name)) continue;
102
- signatures.set(name, {
103
- returnType: renderTsType(context, method.returnValue.type, method.returnValue.nullable),
104
- arity: inputParameters(context.library, method).length,
105
- });
106
- }
196
+ recordAncestorSignatures(context, ancestor.klass, signatures);
107
197
  });
198
+
108
199
  return signatures;
109
200
  };
110
201
 
111
- export const collectInterfaceMergeOmissions = (
202
+ const mergeOmissionName = (
203
+ context: ModuleContext,
204
+ method: GirFunction,
205
+ ancestors: Map<string, MethodSignature>,
206
+ ): string | undefined => {
207
+ if (!method.introspectable) {
208
+ return undefined;
209
+ }
210
+
211
+ const name = camelCase(method.name);
212
+ const ancestor = ancestors.get(name);
213
+
214
+ if (ancestor === undefined) {
215
+ return undefined;
216
+ }
217
+
218
+ const returnType = renderTsType(context, method.returnValue.type, method.returnValue.nullable);
219
+ const arity = inputParameters(context.library, method).length;
220
+
221
+ return ancestor.returnType !== returnType || ancestor.arity !== arity ? name : undefined;
222
+ };
223
+
224
+ const collectInterfaceMergeOmissions = (
112
225
  context: ModuleContext,
113
226
  klass: GirClass,
114
227
  iface: { klass: GirClass; namespaceName: string },
115
228
  ): string[] => {
116
229
  const ancestors = ancestorClassMethodSignatures(context, klass);
117
230
  const omissions: string[] = [];
231
+
118
232
  for (const method of iface.klass.methods) {
119
- if (!method.introspectable) continue;
120
- const name = toCamelCase(method.name);
121
- const ancestor = ancestors.get(name);
122
- if (ancestor === undefined) continue;
123
- const returnType = renderTsType(context, method.returnValue.type, method.returnValue.nullable);
124
- const arity = inputParameters(context.library, method).length;
125
- if (ancestor.returnType !== returnType || ancestor.arity !== arity) omissions.push(name);
233
+ const name = mergeOmissionName(context, method, ancestors);
234
+
235
+ if (name !== undefined) {
236
+ omissions.push(name);
237
+ }
126
238
  }
239
+
127
240
  return omissions;
128
241
  };
129
242
 
130
- export const collectInheritedPropertyTypes = (context: ModuleContext, klass: GirClass): Map<string, string> => {
131
- const types = new Map<string, string>();
243
+ const collectInheritedPropertyTypes = (context: ModuleContext, klass: GirClass): Map<string, string> => {
244
+ const types: Map<string, string> = new Map();
245
+
132
246
  const record = (owner: GirClass, property: GirProperty): void => {
133
247
  const jsName = toCamelIdentifier(property.name);
134
- if (types.has(jsName)) return;
248
+
249
+ if (types.has(jsName)) {
250
+ return;
251
+ }
252
+
135
253
  const tsType = resolveAccessorType(context, property, owner.methods);
136
- if (tsType !== undefined) types.set(jsName, tsType);
254
+
255
+ if (tsType !== undefined) {
256
+ types.set(jsName, tsType);
257
+ }
137
258
  };
138
- forEachInheritedProperty(context, klass, record);
139
- return types;
140
- };
141
259
 
142
- type InheritedMethod = {
143
- method: GirFunction;
144
- namespaceName: string;
145
- };
260
+ forEachInheritedProperty(context, klass, record);
146
261
 
147
- export type InheritedMethods = {
148
- returnTypes: Map<string, string>;
149
- definitions: Map<string, InheritedMethod>;
262
+ return types;
150
263
  };
151
264
 
152
- export const collectInheritedMethods = (context: ModuleContext, klass: GirClass): InheritedMethods => {
265
+ const collectInheritedMethods = (context: ModuleContext, klass: GirClass): InheritedMethods => {
153
266
  const accumulator: InheritedMethods = {
154
267
  returnTypes: new Map<string, string>(),
155
268
  definitions: new Map<string, InheritedMethod>(),
156
269
  };
270
+
157
271
  for (const iface of resolveDirectInterfaces(context, klass, context.namespace.name)) {
158
272
  absorbInheritedMethods(context, iface, accumulator);
159
273
  }
274
+
160
275
  forEachAncestor(context, klass, (ancestor, interfaces) => {
161
276
  absorbInheritedMethods(context, ancestor, accumulator);
162
- for (const iface of interfaces) absorbInheritedMethods(context, iface, accumulator);
277
+
278
+ for (const iface of interfaces) {
279
+ absorbInheritedMethods(context, iface, accumulator);
280
+ }
163
281
  });
282
+
164
283
  return accumulator;
165
284
  };
166
285
 
@@ -170,73 +289,142 @@ const absorbInheritedMethods = (
170
289
  accumulator: InheritedMethods,
171
290
  ): void => {
172
291
  const { returnTypes, definitions } = accumulator;
292
+
173
293
  for (const method of resolved.klass.methods) {
174
- if (!method.introspectable) continue;
175
- const name = toCamelCase(method.name);
176
- if (returnTypes.has(name)) continue;
294
+ if (!method.introspectable) {
295
+ continue;
296
+ }
297
+
298
+ const name = camelCase(method.name);
299
+
300
+ if (returnTypes.has(name)) {
301
+ continue;
302
+ }
303
+
177
304
  definitions.set(name, { method, namespaceName: resolved.namespaceName });
178
305
  returnTypes.set(name, renderTsType(context, method.returnValue.type, method.returnValue.nullable));
179
306
  }
180
307
  };
181
308
 
182
- const RESERVED_SIGNAL_MEMBERS = new Set([
183
- "connect",
184
- "disconnect",
185
- "emit",
186
- "on",
187
- "once",
188
- "off",
189
- "addEventListener",
190
- "removeEventListener",
191
- ]);
309
+ const inheritedMatch = (inherited: InheritedMethods, name: string): InheritedMatch | undefined => {
310
+ const inheritedReturn = inherited.returnTypes.get(name);
311
+ const inheritedMethod = inherited.definitions.get(name);
312
+
313
+ if (inheritedReturn === undefined || inheritedMethod === undefined) {
314
+ return undefined;
315
+ }
192
316
 
193
- export const conflictRename = (
317
+ return { inheritedReturn, inheritedMethod };
318
+ };
319
+
320
+ const hasMethodConflict = (options: {
321
+ context: ModuleContext;
322
+ callable: GirFunction;
323
+ inheritedReturn: string;
324
+ inheritedMethod: InheritedMethod;
325
+ }): boolean => {
326
+ const { context, callable, inheritedReturn, inheritedMethod } = options;
327
+ const ownReturn = renderTsType(context, callable.returnValue.type, callable.returnValue.nullable);
328
+
329
+ return (
330
+ inheritedReturn !== ownReturn ||
331
+ hasParameterEnumConflict(context, callable, inheritedMethod) ||
332
+ inputParameters(context.library, callable).length !==
333
+ inputParameters(context.library, inheritedMethod.method).length
334
+ );
335
+ };
336
+
337
+ const conflictRename = (
194
338
  context: ModuleContext,
195
339
  callable: GirFunction,
196
340
  inherited: InheritedMethods,
197
341
  className: string,
198
342
  ): string | undefined => {
199
- if (!callable.introspectable) return undefined;
343
+ if (!callable.introspectable) {
344
+ return undefined;
345
+ }
346
+
200
347
  const name = methodExportName(callable);
201
- if (RESERVED_SIGNAL_MEMBERS.has(name)) return conflictingMethodName(className, callable.name);
202
- const inheritedReturn = inherited.returnTypes.get(name);
203
- const inheritedMethod = inherited.definitions.get(name);
204
- if (inheritedReturn === undefined || inheritedMethod === undefined) return undefined;
205
- const ownReturn = renderTsType(context, callable.returnValue.type, callable.returnValue.nullable);
206
- const conflicts =
207
- inheritedReturn !== ownReturn ||
208
- hasParameterEnumConflict(context, callable, inheritedMethod) ||
209
- inputParameters(context.library, callable).length !==
210
- inputParameters(context.library, inheritedMethod.method).length;
211
- return conflicts ? conflictingMethodName(className, callable.name) : undefined;
348
+
349
+ if (RESERVED_SIGNAL_MEMBERS.has(name)) {
350
+ return conflictingMethodName(className, callable.name);
351
+ }
352
+
353
+ const match = inheritedMatch(inherited, name);
354
+
355
+ if (match === undefined) {
356
+ return undefined;
357
+ }
358
+
359
+ const hasConflict = hasMethodConflict({ context, callable, ...match });
360
+
361
+ return hasConflict ? conflictingMethodName(className, callable.name) : undefined;
212
362
  };
213
363
 
214
364
  const conflictingMethodName = (className: string, methodName: string): string =>
215
- `${lowerFirst(className)}${toPascalCase(methodName)}`;
365
+ `${lowerFirst(className)}${pascalCase(methodName)}`;
216
366
 
217
- export const reservedSignalMemberRename = (className: string, callable: GirFunction): string | undefined =>
367
+ const reservedSignalMemberRename = (className: string, callable: GirFunction): string | undefined =>
218
368
  RESERVED_SIGNAL_MEMBERS.has(methodExportName(callable))
219
369
  ? conflictingMethodName(className, callable.name)
220
370
  : undefined;
221
371
 
372
+ const hasEnumConflict = (
373
+ context: ModuleContext,
374
+ ownRef: TypeId | undefined,
375
+ inheritedRef: TypeId | undefined,
376
+ ): boolean => {
377
+ const ownEnum = enumIdentity(context, ownRef);
378
+ const inheritedEnum = enumIdentity(context, inheritedRef);
379
+
380
+ return ownEnum !== undefined && inheritedEnum !== undefined && ownEnum !== inheritedEnum;
381
+ };
382
+
222
383
  const hasParameterEnumConflict = (context: ModuleContext, own: GirFunction, inherited: InheritedMethod): boolean => {
223
384
  const ownParams = inputParameters(context.library, own);
224
385
  const inheritedParams = inputParameters(context.library, inherited.method);
225
386
  const count = Math.min(ownParams.length, inheritedParams.length);
387
+
226
388
  for (let index = 0; index < count; index += 1) {
227
389
  const ownParam = ownParams[index];
228
390
  const inheritedParam = inheritedParams[index];
229
- if (ownParam === undefined || inheritedParam === undefined) continue;
230
- const ownEnum = enumIdentity(context, ownParam.parameter.type);
231
- const inheritedEnum = enumIdentity(context, inheritedParam.parameter.type);
232
- if (ownEnum !== undefined && inheritedEnum !== undefined && ownEnum !== inheritedEnum) return true;
391
+
392
+ if (
393
+ ownParam !== undefined &&
394
+ inheritedParam !== undefined &&
395
+ hasEnumConflict(context, ownParam.parameter.type, inheritedParam.parameter.type)
396
+ ) {
397
+ return true;
398
+ }
233
399
  }
400
+
234
401
  return false;
235
402
  };
236
403
 
237
404
  const enumIdentity = (context: ModuleContext, ref: TypeId | undefined): string | undefined => {
238
- if (ref === undefined) return undefined;
239
- const resolved = context.library.typeOf(ref);
240
- if (resolved?.kind !== "enum") return undefined;
405
+ if (ref === undefined) {
406
+ return undefined;
407
+ }
408
+
409
+ const resolved = context.library.typeFor(ref);
410
+
411
+ if (resolved?.kind !== "enum") {
412
+ return undefined;
413
+ }
414
+
241
415
  return `${resolved.namespace.name}.${resolved.value.name}`;
242
416
  };
417
+
418
+ export {
419
+ resolveImplementedInterface,
420
+ resolvePrerequisiteReference,
421
+ forEachAncestor,
422
+ collectInterfaceProperties,
423
+ collectInterfaceMergeOmissions,
424
+ collectInheritedPropertyTypes,
425
+ collectInheritedMethods,
426
+ conflictRename,
427
+ reservedSignalMemberRename,
428
+ type OwnedProperty,
429
+ type InheritedMethods,
430
+ };