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

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