@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,15 +1,15 @@
1
- import { toCamelCase, toCamelIdentifier, uniqBy } from "@gtkx/utils";
2
- import { hasCallerAllocatedArrayLength } from "../../analysis/param-structure.js";
1
+ import { camelCase, toCamelIdentifier, uniqBy } from "@gtkx/utils";
3
2
  import type { GirFunction } from "../../gir/function.js";
4
3
  import type { ModuleContext } from "../../writer/context.js";
4
+ import { hasCallerAllocatedArrayLength } from "../../analysis/param-structure.js";
5
5
  import { renderJsDoc } from "../../writer/doc.js";
6
6
  import { renderBlock } from "../../writer/emit.js";
7
7
  import { matchAsyncFinish } from "./async.js";
8
- import { callableReferencesClassStruct } from "./class-struct-record.js";
8
+ import { hasClassStructReference } from "./class-struct-record.js";
9
9
  import { renderFnExpression } from "./function.js";
10
10
  import { gtypeMemberDeclaration } from "./gtype-binding.js";
11
11
  import {
12
- boundFinishExpression,
12
+ finishCallExpression,
13
13
  methodExportName,
14
14
  renderMethodBody,
15
15
  renderMethodReturnType,
@@ -19,13 +19,73 @@ import {
19
19
  } from "./method.js";
20
20
  import { renderRuntimeOverride } from "./runtime-override.js";
21
21
 
22
- export type Callables = {
22
+ type Callables = {
23
23
  constructors: GirFunction[];
24
24
  functions: GirFunction[];
25
25
  methods: GirFunction[];
26
26
  };
27
27
 
28
- export const dedupeCallables = (callables: GirFunction[]): GirFunction[] =>
28
+ type InstanceScope = {
29
+ ownerName: string;
30
+ methodByName: Map<string, GirFunction>;
31
+ statics: GirFunction[];
32
+ };
33
+
34
+ type CallableMemberOptions = {
35
+ resolveName: (callable: GirFunction) => string | undefined;
36
+ isStatic: boolean;
37
+ returnTypeOverride?: string | undefined;
38
+ allowRuntimeOverride?: boolean;
39
+ };
40
+
41
+ type StaticEntryOptions = {
42
+ resolveName: (callable: GirFunction) => string | undefined;
43
+ ownerName: string;
44
+ returnTypeOverride?: string | undefined;
45
+ };
46
+
47
+ type ResolvedInstanceMember = {
48
+ name: string;
49
+ finishFn: GirFunction | undefined;
50
+ };
51
+
52
+ type InstanceMemberRenderer = (
53
+ context: ModuleContext,
54
+ callable: GirFunction,
55
+ scope: InstanceScope,
56
+ nameOverride?: string,
57
+ ) => string | undefined;
58
+
59
+ type PlainTypeMembersOptions = {
60
+ context: ModuleContext;
61
+ className: string;
62
+ callables: Callables;
63
+ hasGtype: boolean;
64
+ };
65
+
66
+ const renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(
67
+ (context, callable, { name, finishFn }) =>
68
+ `${renderJsDoc(callable.doc)}${memberSignatureText(context, callable, name, { finishFn })};`,
69
+ );
70
+
71
+ const renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(
72
+ (context, callable, { name, finishFn }, scope) =>
73
+ finishFn === undefined
74
+ ? renderInstanceMethod(context, callable, name)
75
+ : renderPromisifiedCallable(context, callable, finishFn, {
76
+ name,
77
+ isStatic: false,
78
+ ownerName: scope.ownerName,
79
+ }),
80
+ );
81
+
82
+ const instanceScope = (ownerName: string, callables: Callables): InstanceScope => ({
83
+ ownerName,
84
+ methodByName: indexMethodsByName(callables.methods),
85
+ statics: [...callables.constructors, ...callables.functions],
86
+ });
87
+
88
+ const dedupeCallables = (callables: GirFunction[]): GirFunction[] =>
29
89
  uniqBy(
30
90
  callables.filter(
31
91
  (callable): callable is GirFunction & { cIdentifier: string } => callable.cIdentifier !== undefined,
@@ -33,27 +93,86 @@ export const dedupeCallables = (callables: GirFunction[]): GirFunction[] =>
33
93
  (callable) => callable.cIdentifier,
34
94
  );
35
95
 
36
- export const generateBindings = (context: ModuleContext, callables: Callables): void => {
96
+ const renderBinding = (
97
+ context: ModuleContext,
98
+ callable: GirFunction,
99
+ ): { text: string; cIdentifier: string } | undefined => {
100
+ if (!callable.introspectable) {
101
+ return undefined;
102
+ }
103
+
104
+ if (callable.shadowedBy !== undefined) {
105
+ return undefined;
106
+ }
107
+
108
+ const cIdentifier = callable.cIdentifier;
109
+
110
+ if (cIdentifier === undefined) {
111
+ return undefined;
112
+ }
113
+
114
+ if (hasClassStructReference(context, callable)) {
115
+ return undefined;
116
+ }
117
+
118
+ const expression = renderFnExpression(context, callable);
119
+
120
+ if (expression === undefined) {
121
+ return undefined;
122
+ }
123
+
124
+ return { text: `const ${toCamelIdentifier(cIdentifier)} = ${expression};`, cIdentifier };
125
+ };
126
+
127
+ const generateBindings = (context: ModuleContext, callables: Callables): void => {
37
128
  const all = [...callables.constructors, ...callables.functions, ...callables.methods];
129
+
38
130
  for (const callable of all) {
39
- if (!callable.introspectable) continue;
40
- if (callable.shadowedBy !== undefined) continue;
41
- if (callable.cIdentifier === undefined) continue;
42
- if (callableReferencesClassStruct(context, callable)) continue;
43
- const expression = renderFnExpression(context, callable);
44
- if (expression === undefined) continue;
45
- context.module.appendBinding(
46
- `const ${toCamelIdentifier(callable.cIdentifier)} = ${expression};`,
47
- callable.cIdentifier,
48
- );
131
+ const binding = renderBinding(context, callable);
132
+
133
+ if (binding !== undefined) {
134
+ context.module.appendBinding(binding.text, binding.cIdentifier);
135
+ }
49
136
  }
50
137
  };
51
138
 
52
- type CallableMemberOptions = {
53
- resolveName: (callable: GirFunction) => string | undefined;
54
- isStatic: boolean;
55
- returnTypeOverride?: string | undefined;
56
- allowRuntimeOverride?: boolean;
139
+ const resolveCallableMember = (
140
+ context: ModuleContext,
141
+ callable: GirFunction,
142
+ resolveName: (callable: GirFunction) => string | undefined,
143
+ ): { cIdentifier: string; name: string } | undefined => {
144
+ if (!isEmittableCallable(context, callable)) {
145
+ return undefined;
146
+ }
147
+
148
+ const cIdentifier = callable.cIdentifier;
149
+
150
+ if (cIdentifier === undefined) {
151
+ return undefined;
152
+ }
153
+
154
+ const name = resolveName(callable);
155
+
156
+ if (name === undefined || name === "constructor") {
157
+ return undefined;
158
+ }
159
+
160
+ return { cIdentifier, name };
161
+ };
162
+
163
+ const runtimeOverrideMember = (
164
+ callable: GirFunction,
165
+ name: string,
166
+ doc: string,
167
+ allow: boolean | undefined,
168
+ ): string | undefined => {
169
+ if (allow !== true) {
170
+ return undefined;
171
+ }
172
+
173
+ const override = renderRuntimeOverride(callable, name);
174
+
175
+ return override === undefined ? undefined : `${doc}${override}`;
57
176
  };
58
177
 
59
178
  const renderCallableMember = (
@@ -61,29 +180,32 @@ const renderCallableMember = (
61
180
  callable: GirFunction,
62
181
  options: CallableMemberOptions,
63
182
  ): string | undefined => {
64
- if (!isEmittableCallable(context, callable)) return undefined;
65
- const cIdentifier = callable.cIdentifier;
66
- if (cIdentifier === undefined) return undefined;
67
- const name = options.resolveName(callable);
68
- if (name === undefined || name === "constructor") return undefined;
183
+ const resolved = resolveCallableMember(context, callable, options.resolveName);
184
+
185
+ if (resolved === undefined) {
186
+ return undefined;
187
+ }
188
+
189
+ const { cIdentifier, name } = resolved;
69
190
  const doc = renderJsDoc(callable.doc);
70
- if (options.allowRuntimeOverride === true) {
71
- const override = renderRuntimeOverride(callable, name);
72
- if (override !== undefined) return `${doc}${override}`;
191
+ const override = runtimeOverrideMember(callable, name, doc, options.allowRuntimeOverride);
192
+
193
+ if (override !== undefined) {
194
+ return override;
73
195
  }
196
+
74
197
  const signature = renderMethodSignature(context, callable);
75
198
  const returnType = options.returnTypeOverride ?? renderMethodReturnType(context, callable);
76
- const bindingExpression = toCamelIdentifier(cIdentifier);
199
+
77
200
  const body = renderMethodBody(context, callable, {
78
- bindingExpression,
201
+ bindingExpression: toCamelIdentifier(cIdentifier),
79
202
  returnTypeOverride: options.returnTypeOverride,
80
203
  });
81
- return `${doc}${renderBlock(`${options.isStatic ? "static " : ""}${name}(${signature}): ${returnType}`, body)}`;
82
- };
83
204
 
84
- type StaticEntryOptions = {
85
- resolveName: (callable: GirFunction) => string | undefined;
86
- returnTypeOverride?: string | undefined;
205
+ const prefix = options.isStatic ? "static " : "";
206
+ const header = `${prefix}${name}(${signature}): ${returnType}`;
207
+
208
+ return `${doc}${renderBlock(header, body)}`;
87
209
  };
88
210
 
89
211
  const renderStaticEntry = (
@@ -93,11 +215,21 @@ const renderStaticEntry = (
93
215
  options: StaticEntryOptions,
94
216
  ): string | undefined => {
95
217
  const finishFn = matchStaticFinishFunction(context, callable, siblings);
218
+
96
219
  if (finishFn !== undefined) {
97
220
  const name = options.resolveName(callable);
98
- if (name === undefined || name === "constructor") return undefined;
99
- return renderPromisifiedCallable(context, callable, finishFn, { name, isStatic: true });
221
+
222
+ if (name === undefined || name === "constructor") {
223
+ return undefined;
224
+ }
225
+
226
+ return renderPromisifiedCallable(context, callable, finishFn, {
227
+ name,
228
+ isStatic: true,
229
+ ownerName: options.ownerName,
230
+ });
100
231
  }
232
+
101
233
  return renderCallableMember(context, callable, {
102
234
  resolveName: options.resolveName,
103
235
  isStatic: true,
@@ -116,75 +248,85 @@ const renderInstanceMethod = (
116
248
  allowRuntimeOverride: true,
117
249
  });
118
250
 
119
- type ResolvedInstanceMember = {
120
- name: string;
121
- finishFn: GirFunction | undefined;
122
- };
123
-
124
251
  const resolveInstanceMember = (
125
252
  context: ModuleContext,
126
253
  callable: GirFunction,
127
- siblings: Map<string, GirFunction>,
254
+ scope: InstanceScope,
128
255
  nameOverride?: string,
129
256
  ): ResolvedInstanceMember | undefined => {
130
- if (!isEmittableCallable(context, callable)) return undefined;
257
+ if (!isEmittableCallable(context, callable)) {
258
+ return undefined;
259
+ }
260
+
131
261
  const name = nameOverride ?? methodExportName(callable);
132
- if (name === "constructor") return undefined;
133
- const finishFn = matchFinishFunction(context, callable, siblings);
134
- if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) return undefined;
262
+
263
+ if (name === "constructor") {
264
+ return undefined;
265
+ }
266
+
267
+ const finishFn = matchFinishFunction(context, callable, scope);
268
+
269
+ if (finishFn !== undefined && !isEmittableCallable(context, finishFn)) {
270
+ return undefined;
271
+ }
272
+
135
273
  return { name, finishFn };
136
274
  };
137
275
 
138
- type InstanceMemberRenderer = (
276
+ function instanceMemberRenderer(
277
+ render: (
278
+ context: ModuleContext,
279
+ callable: GirFunction,
280
+ member: ResolvedInstanceMember,
281
+ scope: InstanceScope,
282
+ ) => string | undefined,
283
+ ): InstanceMemberRenderer {
284
+ return (context, callable, scope, nameOverride) => {
285
+ const member = resolveInstanceMember(context, callable, scope, nameOverride);
286
+
287
+ return member === undefined ? undefined : render(context, callable, member, scope);
288
+ };
289
+ }
290
+
291
+ const memberSignatureText = (
139
292
  context: ModuleContext,
140
293
  callable: GirFunction,
141
- siblings: Map<string, GirFunction>,
142
- nameOverride?: string,
143
- ) => string | undefined;
294
+ name: string,
295
+ options: { finishFn: GirFunction | undefined; returnTypeOverride?: string | undefined },
296
+ ): string => {
297
+ const promisified =
298
+ options.finishFn === undefined ? undefined : renderPromisifiedSignature(context, callable, options.finishFn);
144
299
 
145
- const instanceMemberRenderer =
146
- (
147
- render: (context: ModuleContext, callable: GirFunction, member: ResolvedInstanceMember) => string | undefined,
148
- ): InstanceMemberRenderer =>
149
- (context, callable, siblings, nameOverride) => {
150
- const member = resolveInstanceMember(context, callable, siblings, nameOverride);
151
- return member === undefined ? undefined : render(context, callable, member);
152
- };
300
+ const signature = promisified?.signature ?? renderMethodSignature(context, callable);
153
301
 
154
- export const renderInstanceMethodSignature: InstanceMemberRenderer = instanceMemberRenderer(
155
- (context, callable, { name, finishFn }) => {
156
- const doc = renderJsDoc(callable.doc);
157
- if (finishFn !== undefined) {
158
- const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);
159
- return `${doc}${name}(${signature}): ${returnType};`;
160
- }
161
- const signature = renderMethodSignature(context, callable);
162
- const returnType = renderMethodReturnType(context, callable);
163
- return `${doc}${name}(${signature}): ${returnType};`;
164
- },
165
- );
302
+ const returnType =
303
+ promisified?.returnType ?? options.returnTypeOverride ?? renderMethodReturnType(context, callable);
166
304
 
167
- export const renderClassInstanceMember: InstanceMemberRenderer = instanceMemberRenderer(
168
- (context, callable, { name, finishFn }) =>
169
- finishFn !== undefined
170
- ? renderPromisifiedCallable(context, callable, finishFn, { name, isStatic: false })
171
- : renderInstanceMethod(context, callable, name),
172
- );
305
+ return `${name}(${signature}): ${returnType}`;
306
+ };
173
307
 
174
308
  const matchFinishFunction = (
175
309
  context: ModuleContext,
176
310
  callable: GirFunction,
177
- siblings: Map<string, GirFunction>,
178
- ): GirFunction | undefined => matchAsyncFinish(context.library, callable, [...siblings.values()]);
311
+ scope: InstanceScope,
312
+ ): GirFunction | undefined =>
313
+ matchAsyncFinish(context.library, callable, [...scope.methodByName.values(), ...scope.statics]);
179
314
 
180
- export const matchStaticFinishFunction = (
315
+ const matchStaticFinishFunction = (
181
316
  context: ModuleContext,
182
317
  callable: GirFunction,
183
318
  siblings: GirFunction[],
184
319
  ): GirFunction | undefined => {
185
- if (!isEmittableCallable(context, callable)) return undefined;
320
+ if (!isEmittableCallable(context, callable)) {
321
+ return undefined;
322
+ }
323
+
186
324
  const finishFn = matchAsyncFinish(context.library, callable, siblings);
187
- if (finishFn === undefined || !isEmittableCallable(context, finishFn)) return undefined;
325
+
326
+ if (finishFn === undefined || !isEmittableCallable(context, finishFn)) {
327
+ return undefined;
328
+ }
329
+
188
330
  return finishFn;
189
331
  };
190
332
 
@@ -192,118 +334,185 @@ const renderPromisifiedCallable = (
192
334
  context: ModuleContext,
193
335
  callable: GirFunction,
194
336
  finishFn: GirFunction,
195
- member: { name: string; isStatic: boolean },
337
+ member: { name: string; isStatic: boolean; ownerName: string },
196
338
  ): string | undefined => {
197
339
  const cIdentifier = callable.cIdentifier;
198
- if (cIdentifier === undefined) return undefined;
340
+
341
+ if (cIdentifier === undefined) {
342
+ return undefined;
343
+ }
344
+
199
345
  const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);
346
+
200
347
  const body = renderPromisifiedBody(
201
348
  context,
202
349
  callable,
203
- boundFinishExpression(finishFn),
350
+ finishCallExpression(callable, finishFn, member.ownerName),
204
351
  toCamelIdentifier(cIdentifier),
205
352
  );
353
+
206
354
  const prefix = member.isStatic ? "static " : "";
207
- return `${renderJsDoc(callable.doc)}${renderBlock(`${prefix}${member.name}(${signature}): ${returnType}`, body)}`;
355
+ const header = `${prefix}${member.name}(${signature}): ${returnType}`;
356
+
357
+ return `${renderJsDoc(callable.doc)}${renderBlock(header, body)}`;
208
358
  };
209
359
 
210
- export const indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {
211
- const map = new Map<string, GirFunction>();
212
- for (const callable of methods) map.set(callable.name, callable);
360
+ const indexMethodsByName = (methods: GirFunction[]): Map<string, GirFunction> => {
361
+ const map: Map<string, GirFunction> = new Map();
362
+
363
+ for (const callable of methods) {
364
+ map.set(callable.name, callable);
365
+ }
366
+
213
367
  return map;
214
368
  };
215
369
 
216
- export const isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>
370
+ const isEmittableCallable = (context: ModuleContext, callable: GirFunction): boolean =>
217
371
  callable.introspectable &&
218
372
  callable.shadowedBy === undefined &&
219
373
  callable.cIdentifier !== undefined &&
220
- !callableReferencesClassStruct(context, callable) &&
374
+ !hasClassStructReference(context, callable) &&
221
375
  !hasCallerAllocatedArrayLength(context.library, callable);
222
376
 
223
377
  const constructorMemberName = (girName: string): string | undefined => {
224
- const camel = toCamelCase(girName);
225
- if (camel === "constructor") return undefined;
378
+ const camel = camelCase(girName);
379
+
380
+ if (camel === "constructor") {
381
+ return undefined;
382
+ }
383
+
226
384
  return camel;
227
385
  };
228
386
 
229
- export const renderStaticSignature = (
387
+ const renderStaticSignature = (
230
388
  context: ModuleContext,
231
389
  callable: GirFunction,
232
390
  options?: { returnTypeOverride?: string | undefined; siblings?: GirFunction[] | undefined },
233
391
  ): { name: string; signature: string } | undefined => {
234
- if (!isEmittableCallable(context, callable)) return undefined;
392
+ if (!isEmittableCallable(context, callable)) {
393
+ return undefined;
394
+ }
395
+
235
396
  const name = constructorMemberName(callable.name);
236
- if (name === undefined) return undefined;
397
+
398
+ if (name === undefined) {
399
+ return undefined;
400
+ }
401
+
237
402
  const finishFn =
238
403
  options?.siblings === undefined ? undefined : matchStaticFinishFunction(context, callable, options.siblings);
239
- if (finishFn !== undefined) {
240
- const { signature, returnType } = renderPromisifiedSignature(context, callable, finishFn);
241
- return { name, signature: `${name}(${signature}): ${returnType}` };
242
- }
243
- const parameters = renderMethodSignature(context, callable);
244
- const returnType = options?.returnTypeOverride ?? renderMethodReturnType(context, callable);
245
- return { name, signature: `${name}(${parameters}): ${returnType}` };
404
+
405
+ return {
406
+ name,
407
+ signature: memberSignatureText(context, callable, name, {
408
+ finishFn,
409
+ returnTypeOverride: options?.returnTypeOverride,
410
+ }),
411
+ };
246
412
  };
247
413
 
248
- export const classConstructorMemberNames = (context: ModuleContext, callables: Callables): string[] => {
414
+ const classConstructorMemberNames = (context: ModuleContext, callables: Callables): string[] => {
249
415
  const names: string[] = [];
416
+
250
417
  for (const callable of callables.constructors) {
251
- if (!isEmittableCallable(context, callable)) continue;
418
+ if (!isEmittableCallable(context, callable)) {
419
+ continue;
420
+ }
421
+
252
422
  const member = constructorMemberName(callable.name);
253
- if (member !== undefined) names.push(member);
423
+
424
+ if (member !== undefined) {
425
+ names.push(member);
426
+ }
254
427
  }
428
+
255
429
  return names;
256
430
  };
257
431
 
258
- export const renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {
259
- const siblings = [...callables.constructors, ...callables.functions];
432
+ const collectStaticEntries = (
433
+ context: ModuleContext,
434
+ group: GirFunction[],
435
+ siblings: GirFunction[],
436
+ options: StaticEntryOptions,
437
+ ): string[] => {
260
438
  const blocks: string[] = [];
261
- for (const callable of callables.constructors) {
262
- const block = renderStaticEntry(context, callable, siblings, {
263
- resolveName: (member) => constructorMemberName(member.name),
264
- returnTypeOverride: ownerClassName,
265
- });
266
- if (block !== undefined) blocks.push(block);
267
- }
268
- for (const callable of callables.functions) {
269
- const block = renderStaticEntry(context, callable, siblings, {
270
- resolveName: (member) => toCamelCase(member.name),
271
- });
272
- if (block !== undefined) blocks.push(block);
439
+
440
+ for (const callable of group) {
441
+ const block = renderStaticEntry(context, callable, siblings, options);
442
+
443
+ if (block !== undefined) {
444
+ blocks.push(block);
445
+ }
273
446
  }
447
+
274
448
  return blocks;
275
449
  };
276
450
 
451
+ const renderStaticHead = (context: ModuleContext, callables: Callables, ownerClassName: string): string[] => {
452
+ const siblings = [...callables.constructors, ...callables.functions];
453
+
454
+ return [
455
+ ...collectStaticEntries(context, callables.constructors, siblings, {
456
+ resolveName: (member) => constructorMemberName(member.name),
457
+ ownerName: ownerClassName,
458
+ returnTypeOverride: ownerClassName,
459
+ }),
460
+ ...collectStaticEntries(context, callables.functions, siblings, {
461
+ resolveName: (member) => camelCase(member.name),
462
+ ownerName: ownerClassName,
463
+ }),
464
+ ];
465
+ };
466
+
277
467
  const renderPlainInstanceMethods = (
278
468
  context: ModuleContext,
279
469
  methods: GirFunction[],
280
470
  claimedNames: Set<string>,
281
471
  ): string[] => {
282
472
  const blocks: string[] = [];
473
+
283
474
  for (const callable of methods) {
284
475
  const block = renderInstanceMethod(context, callable);
285
- if (block === undefined) continue;
476
+
477
+ if (block === undefined) {
478
+ continue;
479
+ }
480
+
286
481
  blocks.push(block);
287
482
  claimedNames.add(methodExportName(callable));
288
483
  }
289
- return blocks;
290
- };
291
484
 
292
- type PlainTypeMembersOptions = {
293
- context: ModuleContext;
294
- className: string;
295
- callables: Callables;
296
- hasGtype: boolean;
485
+ return blocks;
297
486
  };
298
487
 
299
- export const renderPlainTypeMembers = (
488
+ const renderPlainTypeMembers = (
300
489
  options: PlainTypeMembersOptions,
301
490
  ): { members: string[]; claimedNames: Set<string> } => {
302
491
  const { context, className, callables, hasGtype } = options;
303
- const members: string[] = [];
304
- if (hasGtype) members.push(gtypeMemberDeclaration(context));
305
- const claimedNames = new Set<string>();
306
- members.push(...renderStaticHead(context, callables, className));
307
- members.push(...renderPlainInstanceMethods(context, callables.methods, claimedNames));
492
+ const claimedNames: Set<string> = new Set();
493
+
494
+ const members: string[] = [
495
+ ...(hasGtype ? [gtypeMemberDeclaration(context)] : []),
496
+ ...renderStaticHead(context, callables, className),
497
+ ...renderPlainInstanceMethods(context, callables.methods, claimedNames),
498
+ ];
499
+
308
500
  return { members, claimedNames };
309
501
  };
502
+
503
+ export {
504
+ renderInstanceMethodSignature,
505
+ renderClassInstanceMember,
506
+ instanceScope,
507
+ dedupeCallables,
508
+ generateBindings,
509
+ matchStaticFinishFunction,
510
+ indexMethodsByName,
511
+ isEmittableCallable,
512
+ renderStaticSignature,
513
+ classConstructorMemberNames,
514
+ renderStaticHead,
515
+ renderPlainTypeMembers,
516
+ type Callables,
517
+ type InstanceScope,
518
+ };
@@ -1,15 +1,24 @@
1
- import { callbackAsFunction, type GirCallback } from "../../gir/callback.js";
2
1
  import type { ModuleContext } from "../../writer/context.js";
2
+ import { callbackAsFunction, type GirCallback } from "../../gir/callback.js";
3
3
  import { renderJsDoc } from "../../writer/doc.js";
4
4
  import { renderMethodReturnType, renderMethodSignature } from "./method.js";
5
5
 
6
- export const generateCallback = (context: ModuleContext, callback: GirCallback): void => {
7
- if (!callback.introspectable) return;
8
- if (callback.name.length === 0) return;
6
+ const generateCallback = (context: ModuleContext, callback: GirCallback): void => {
7
+ if (!callback.introspectable) {
8
+ return;
9
+ }
10
+
11
+ if (callback.name.length === 0) {
12
+ return;
13
+ }
14
+
9
15
  const fn = callbackAsFunction(callback);
10
16
  const signature = renderMethodSignature(context, fn);
11
17
  const returnType = renderMethodReturnType(context, fn);
18
+
12
19
  context.module.appendDeclaration(
13
20
  `${renderJsDoc(callback.doc)}export type ${callback.name} = (${signature}) => ${returnType};`,
14
21
  );
15
22
  };
23
+
24
+ export { generateCallback };