@gtkx/codegen 1.0.0-rc.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/README.md +8 -9
  2. package/dist/analysis/descriptor-render.d.ts +9 -4
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +51 -61
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +7 -7
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js +7 -7
  9. package/dist/analysis/descriptor.js.map +1 -1
  10. package/dist/analysis/inheritance.d.ts +1 -2
  11. package/dist/analysis/inheritance.d.ts.map +1 -1
  12. package/dist/analysis/inheritance.js +25 -22
  13. package/dist/analysis/inheritance.js.map +1 -1
  14. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  15. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  16. package/dist/analysis/nul-terminated-bytes.js +18 -0
  17. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  18. package/dist/analysis/param-capability.d.ts +5 -0
  19. package/dist/analysis/param-capability.d.ts.map +1 -0
  20. package/dist/analysis/param-capability.js +130 -0
  21. package/dist/analysis/param-capability.js.map +1 -0
  22. package/dist/analysis/param-structure.d.ts +13 -6
  23. package/dist/analysis/param-structure.d.ts.map +1 -1
  24. package/dist/analysis/param-structure.js +44 -20
  25. package/dist/analysis/param-structure.js.map +1 -1
  26. package/dist/analysis/ts-type.d.ts +1 -1
  27. package/dist/analysis/ts-type.d.ts.map +1 -1
  28. package/dist/analysis/ts-type.js +3 -5
  29. package/dist/analysis/ts-type.js.map +1 -1
  30. package/dist/analysis/type-shape.d.ts +8 -0
  31. package/dist/analysis/type-shape.d.ts.map +1 -0
  32. package/dist/analysis/type-shape.js +12 -0
  33. package/dist/analysis/type-shape.js.map +1 -0
  34. package/dist/compile.d.ts +1 -1
  35. package/dist/compile.d.ts.map +1 -1
  36. package/dist/compile.js +2 -1
  37. package/dist/compile.js.map +1 -1
  38. package/dist/docs/api-reference.d.ts +79 -3
  39. package/dist/docs/api-reference.d.ts.map +1 -1
  40. package/dist/docs/api-reference.js +68 -13
  41. package/dist/docs/api-reference.js.map +1 -1
  42. package/dist/docs/element-page.d.ts +4 -4
  43. package/dist/docs/element-page.d.ts.map +1 -1
  44. package/dist/docs/element-page.js +32 -20
  45. package/dist/docs/element-page.js.map +1 -1
  46. package/dist/docs/handwritten-props.d.ts +9 -0
  47. package/dist/docs/handwritten-props.d.ts.map +1 -0
  48. package/dist/docs/handwritten-props.js +149 -0
  49. package/dist/docs/handwritten-props.js.map +1 -0
  50. package/dist/docs/pipeline.d.ts +4 -4
  51. package/dist/docs/pipeline.d.ts.map +1 -1
  52. package/dist/docs/pipeline.js +6 -6
  53. package/dist/docs/pipeline.js.map +1 -1
  54. package/dist/docs/render.d.ts +25 -5
  55. package/dist/docs/render.d.ts.map +1 -1
  56. package/dist/docs/render.js +90 -28
  57. package/dist/docs/render.js.map +1 -1
  58. package/dist/docs/symbol-page.d.ts +22 -0
  59. package/dist/docs/symbol-page.d.ts.map +1 -1
  60. package/dist/docs/symbol-page.js +129 -44
  61. package/dist/docs/symbol-page.js.map +1 -1
  62. package/dist/fingerprint.d.ts +3 -6
  63. package/dist/fingerprint.d.ts.map +1 -1
  64. package/dist/fingerprint.js +6 -8
  65. package/dist/fingerprint.js.map +1 -1
  66. package/dist/gi.d.ts +3 -11
  67. package/dist/gi.d.ts.map +1 -1
  68. package/dist/gi.js +0 -7
  69. package/dist/gi.js.map +1 -1
  70. package/dist/gir/ancestry.d.ts +2 -2
  71. package/dist/gir/ancestry.d.ts.map +1 -1
  72. package/dist/gir/ancestry.js +11 -1
  73. package/dist/gir/ancestry.js.map +1 -1
  74. package/dist/gir/annotations.d.ts +22 -0
  75. package/dist/gir/annotations.d.ts.map +1 -0
  76. package/dist/gir/annotations.js +15 -0
  77. package/dist/gir/annotations.js.map +1 -0
  78. package/dist/gir/callback.d.ts +1 -0
  79. package/dist/gir/callback.d.ts.map +1 -1
  80. package/dist/gir/callback.js +1 -0
  81. package/dist/gir/callback.js.map +1 -1
  82. package/dist/gir/class.d.ts +32 -1
  83. package/dist/gir/class.d.ts.map +1 -1
  84. package/dist/gir/class.js +8 -3
  85. package/dist/gir/class.js.map +1 -1
  86. package/dist/gir/enum.d.ts +21 -1
  87. package/dist/gir/enum.d.ts.map +1 -1
  88. package/dist/gir/enum.js +9 -9
  89. package/dist/gir/enum.js.map +1 -1
  90. package/dist/gir/field.d.ts +19 -4
  91. package/dist/gir/field.d.ts.map +1 -1
  92. package/dist/gir/field.js +7 -11
  93. package/dist/gir/field.js.map +1 -1
  94. package/dist/gir/function.d.ts +15 -0
  95. package/dist/gir/function.d.ts.map +1 -1
  96. package/dist/gir/function.js.map +1 -1
  97. package/dist/gir/gir-path.d.ts +7 -0
  98. package/dist/gir/gir-path.d.ts.map +1 -1
  99. package/dist/gir/gir-path.js +7 -0
  100. package/dist/gir/gir-path.js.map +1 -1
  101. package/dist/gir/libraries.d.ts +13 -2
  102. package/dist/gir/libraries.d.ts.map +1 -1
  103. package/dist/gir/libraries.js +11 -0
  104. package/dist/gir/libraries.js.map +1 -1
  105. package/dist/gir/library.d.ts +36 -0
  106. package/dist/gir/library.d.ts.map +1 -1
  107. package/dist/gir/library.js +34 -0
  108. package/dist/gir/library.js.map +1 -1
  109. package/dist/gir/namespace.d.ts +38 -0
  110. package/dist/gir/namespace.d.ts.map +1 -1
  111. package/dist/gir/namespace.js +4 -5
  112. package/dist/gir/namespace.js.map +1 -1
  113. package/dist/gir/parameter.d.ts +39 -0
  114. package/dist/gir/parameter.d.ts.map +1 -1
  115. package/dist/gir/parameter.js +7 -7
  116. package/dist/gir/parameter.js.map +1 -1
  117. package/dist/gir/parse.d.ts +3 -1
  118. package/dist/gir/parse.d.ts.map +1 -1
  119. package/dist/gir/parse.js +6 -3
  120. package/dist/gir/parse.js.map +1 -1
  121. package/dist/gir/primitives.d.ts +1 -0
  122. package/dist/gir/primitives.d.ts.map +1 -1
  123. package/dist/gir/primitives.js.map +1 -1
  124. package/dist/gir/property.d.ts +16 -0
  125. package/dist/gir/property.d.ts.map +1 -1
  126. package/dist/gir/property.js +3 -3
  127. package/dist/gir/property.js.map +1 -1
  128. package/dist/gir/record.d.ts +22 -0
  129. package/dist/gir/record.d.ts.map +1 -1
  130. package/dist/gir/record.js +3 -2
  131. package/dist/gir/record.js.map +1 -1
  132. package/dist/gir/size.d.ts +5 -4
  133. package/dist/gir/size.d.ts.map +1 -1
  134. package/dist/gir/size.js +0 -3
  135. package/dist/gir/size.js.map +1 -1
  136. package/dist/gir/type-id.d.ts +36 -1
  137. package/dist/gir/type-id.d.ts.map +1 -1
  138. package/dist/gir/type-id.js +2 -3
  139. package/dist/gir/type-id.js.map +1 -1
  140. package/dist/gir/type-ref.d.ts.map +1 -1
  141. package/dist/gir/type-ref.js +2 -1
  142. package/dist/gir/type-ref.js.map +1 -1
  143. package/dist/gir/type.d.ts +20 -0
  144. package/dist/gir/type.d.ts.map +1 -1
  145. package/dist/gir/type.js.map +1 -1
  146. package/dist/index.d.ts +18 -6
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +12 -3
  149. package/dist/index.js.map +1 -1
  150. package/dist/internal.d.ts +3 -0
  151. package/dist/internal.d.ts.map +1 -0
  152. package/dist/internal.js +3 -0
  153. package/dist/internal.js.map +1 -0
  154. package/dist/jsx.d.ts +7 -12
  155. package/dist/jsx.d.ts.map +1 -1
  156. package/dist/jsx.js +18 -19
  157. package/dist/jsx.js.map +1 -1
  158. package/dist/khronos/args.d.ts +7 -6
  159. package/dist/khronos/args.d.ts.map +1 -1
  160. package/dist/khronos/args.js +29 -7
  161. package/dist/khronos/args.js.map +1 -1
  162. package/dist/khronos/doc-context.d.ts +29 -0
  163. package/dist/khronos/doc-context.d.ts.map +1 -0
  164. package/dist/khronos/doc-context.js +29 -0
  165. package/dist/khronos/doc-context.js.map +1 -0
  166. package/dist/khronos/extensions.d.ts +13 -0
  167. package/dist/khronos/extensions.d.ts.map +1 -0
  168. package/dist/khronos/extensions.js +49 -0
  169. package/dist/khronos/extensions.js.map +1 -0
  170. package/dist/khronos/jsdoc.d.ts +17 -11
  171. package/dist/khronos/jsdoc.d.ts.map +1 -1
  172. package/dist/khronos/jsdoc.js +104 -46
  173. package/dist/khronos/jsdoc.js.map +1 -1
  174. package/dist/khronos/model.d.ts +42 -3
  175. package/dist/khronos/model.d.ts.map +1 -1
  176. package/dist/khronos/model.js +218 -63
  177. package/dist/khronos/model.js.map +1 -1
  178. package/dist/khronos/modules.d.ts +9 -6
  179. package/dist/khronos/modules.d.ts.map +1 -1
  180. package/dist/khronos/modules.js +96 -26
  181. package/dist/khronos/modules.js.map +1 -1
  182. package/dist/khronos/notes.d.ts +19 -0
  183. package/dist/khronos/notes.d.ts.map +1 -0
  184. package/dist/khronos/notes.js +35 -0
  185. package/dist/khronos/notes.js.map +1 -0
  186. package/dist/khronos/param-pair.d.ts +1 -1
  187. package/dist/khronos/param-pair.d.ts.map +1 -1
  188. package/dist/khronos/param-pair.js.map +1 -1
  189. package/dist/khronos/pipeline.d.ts +3 -1
  190. package/dist/khronos/pipeline.d.ts.map +1 -1
  191. package/dist/khronos/pipeline.js +59 -28
  192. package/dist/khronos/pipeline.js.map +1 -1
  193. package/dist/khronos/plan.d.ts +5 -5
  194. package/dist/khronos/plan.d.ts.map +1 -1
  195. package/dist/khronos/plan.js +8 -8
  196. package/dist/khronos/plan.js.map +1 -1
  197. package/dist/khronos/render.d.ts +8 -6
  198. package/dist/khronos/render.d.ts.map +1 -1
  199. package/dist/khronos/render.js +35 -26
  200. package/dist/khronos/render.js.map +1 -1
  201. package/dist/khronos/select.d.ts +21 -4
  202. package/dist/khronos/select.d.ts.map +1 -1
  203. package/dist/khronos/select.js +47 -34
  204. package/dist/khronos/select.js.map +1 -1
  205. package/dist/react/element-config.d.ts +16 -10
  206. package/dist/react/element-config.d.ts.map +1 -1
  207. package/dist/react/element-config.js +22 -15
  208. package/dist/react/element-config.js.map +1 -1
  209. package/dist/runner.d.ts +33 -21
  210. package/dist/runner.d.ts.map +1 -1
  211. package/dist/runner.js +19 -20
  212. package/dist/runner.js.map +1 -1
  213. package/dist/store/compile-store.d.ts +2 -3
  214. package/dist/store/compile-store.d.ts.map +1 -1
  215. package/dist/store/compile-store.js +2 -2
  216. package/dist/store/compile-store.js.map +1 -1
  217. package/dist/store/gi/callable-doc.d.ts +11 -0
  218. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  219. package/dist/store/gi/callable-doc.js +62 -0
  220. package/dist/store/gi/callable-doc.js.map +1 -0
  221. package/dist/store/gi/callables.d.ts +3 -1
  222. package/dist/store/gi/callables.d.ts.map +1 -1
  223. package/dist/store/gi/callables.js +16 -16
  224. package/dist/store/gi/callables.js.map +1 -1
  225. package/dist/store/gi/callback.d.ts.map +1 -1
  226. package/dist/store/gi/callback.js +2 -2
  227. package/dist/store/gi/callback.js.map +1 -1
  228. package/dist/store/gi/class.d.ts.map +1 -1
  229. package/dist/store/gi/class.js +5 -3
  230. package/dist/store/gi/class.js.map +1 -1
  231. package/dist/store/gi/closure-invocation.d.ts +4 -0
  232. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  233. package/dist/store/gi/closure-invocation.js +22 -0
  234. package/dist/store/gi/closure-invocation.js.map +1 -0
  235. package/dist/store/gi/constant.d.ts.map +1 -1
  236. package/dist/store/gi/constant.js +3 -4
  237. package/dist/store/gi/constant.js.map +1 -1
  238. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  239. package/dist/store/gi/constructor-props.js +18 -20
  240. package/dist/store/gi/constructor-props.js.map +1 -1
  241. package/dist/store/gi/doc-spec.d.ts +14 -0
  242. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  243. package/dist/store/gi/doc-spec.js +23 -0
  244. package/dist/store/gi/doc-spec.js.map +1 -0
  245. package/dist/store/gi/enum.d.ts.map +1 -1
  246. package/dist/store/gi/enum.js +29 -16
  247. package/dist/store/gi/enum.js.map +1 -1
  248. package/dist/store/gi/function.d.ts.map +1 -1
  249. package/dist/store/gi/function.js +28 -17
  250. package/dist/store/gi/function.js.map +1 -1
  251. package/dist/store/gi/interface.d.ts.map +1 -1
  252. package/dist/store/gi/interface.js +130 -16
  253. package/dist/store/gi/interface.js.map +1 -1
  254. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  255. package/dist/store/gi/item-comparators.js +3 -5
  256. package/dist/store/gi/item-comparators.js.map +1 -1
  257. package/dist/store/gi/method.d.ts +9 -1
  258. package/dist/store/gi/method.d.ts.map +1 -1
  259. package/dist/store/gi/method.js +92 -47
  260. package/dist/store/gi/method.js.map +1 -1
  261. package/dist/store/gi/param-marshal.d.ts +4 -1
  262. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  263. package/dist/store/gi/param-marshal.js +5 -1
  264. package/dist/store/gi/param-marshal.js.map +1 -1
  265. package/dist/store/gi/pipeline.d.ts.map +1 -1
  266. package/dist/store/gi/pipeline.js +3 -2
  267. package/dist/store/gi/pipeline.js.map +1 -1
  268. package/dist/store/gi/properties.d.ts.map +1 -1
  269. package/dist/store/gi/properties.js +2 -2
  270. package/dist/store/gi/properties.js.map +1 -1
  271. package/dist/store/gi/property-accessor.d.ts +4 -2
  272. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  273. package/dist/store/gi/property-accessor.js +10 -11
  274. package/dist/store/gi/property-accessor.js.map +1 -1
  275. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  276. package/dist/store/gi/record-constructor.js +3 -1
  277. package/dist/store/gi/record-constructor.js.map +1 -1
  278. package/dist/store/gi/record-field-accessor.d.ts +4 -2
  279. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  280. package/dist/store/gi/record-field-accessor.js +6 -11
  281. package/dist/store/gi/record-field-accessor.js.map +1 -1
  282. package/dist/store/gi/record-layout.d.ts.map +1 -1
  283. package/dist/store/gi/record-layout.js +1 -5
  284. package/dist/store/gi/record-layout.js.map +1 -1
  285. package/dist/store/gi/record.d.ts.map +1 -1
  286. package/dist/store/gi/record.js +3 -2
  287. package/dist/store/gi/record.js.map +1 -1
  288. package/dist/store/gi/registration.d.ts +1 -1
  289. package/dist/store/gi/registration.js +2 -2
  290. package/dist/store/gi/registration.js.map +1 -1
  291. package/dist/store/gi/return-wrap.d.ts +1 -1
  292. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  293. package/dist/store/gi/return-wrap.js +4 -4
  294. package/dist/store/gi/return-wrap.js.map +1 -1
  295. package/dist/store/gi/runtime-override.d.ts +2 -1
  296. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  297. package/dist/store/gi/runtime-override.js +8 -5
  298. package/dist/store/gi/runtime-override.js.map +1 -1
  299. package/dist/store/gi/signal.d.ts.map +1 -1
  300. package/dist/store/gi/signal.js +27 -31
  301. package/dist/store/gi/signal.js.map +1 -1
  302. package/dist/store/gi/value-marshalable.d.ts +1 -10
  303. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  304. package/dist/store/gi/value-marshalable.js +1 -10
  305. package/dist/store/gi/value-marshalable.js.map +1 -1
  306. package/dist/store/gi/vtable.d.ts +16 -1
  307. package/dist/store/gi/vtable.d.ts.map +1 -1
  308. package/dist/store/gi/vtable.js +214 -51
  309. package/dist/store/gi/vtable.js.map +1 -1
  310. package/dist/store/gi-store.d.ts +2 -3
  311. package/dist/store/gi-store.d.ts.map +1 -1
  312. package/dist/store/gi-store.js.map +1 -1
  313. package/dist/store/jsx/element-components.d.ts +1 -3
  314. package/dist/store/jsx/element-components.d.ts.map +1 -1
  315. package/dist/store/jsx/element-components.js +6 -8
  316. package/dist/store/jsx/element-components.js.map +1 -1
  317. package/dist/store/jsx/element-prop-imports.d.ts +1 -4
  318. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  319. package/dist/store/jsx/element-prop-imports.js +0 -2
  320. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  321. package/dist/store/jsx/element-prop-types.d.ts +3 -1
  322. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  323. package/dist/store/jsx/element-prop-types.js +7 -2
  324. package/dist/store/jsx/element-prop-types.js.map +1 -1
  325. package/dist/store/jsx/generated-elements.d.ts +29 -0
  326. package/dist/store/jsx/generated-elements.d.ts.map +1 -0
  327. package/dist/store/jsx/generated-elements.js +30 -0
  328. package/dist/store/jsx/generated-elements.js.map +1 -0
  329. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  330. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  331. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  332. package/dist/store/jsx/jsx.d.ts.map +1 -1
  333. package/dist/store/jsx/jsx.js +13 -12
  334. package/dist/store/jsx/jsx.js.map +1 -1
  335. package/dist/store/jsx/metadata.js +9 -9
  336. package/dist/store/jsx/metadata.js.map +1 -1
  337. package/dist/store/jsx/omitted-props.d.ts +2 -4
  338. package/dist/store/jsx/omitted-props.d.ts.map +1 -1
  339. package/dist/store/jsx/omitted-props.js +2 -4
  340. package/dist/store/jsx/omitted-props.js.map +1 -1
  341. package/dist/store/jsx/pipeline.d.ts +4 -2
  342. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  343. package/dist/store/jsx/pipeline.js +3 -2
  344. package/dist/store/jsx/pipeline.js.map +1 -1
  345. package/dist/store/jsx/props.d.ts +1 -7
  346. package/dist/store/jsx/props.d.ts.map +1 -1
  347. package/dist/store/jsx/props.js +16 -8
  348. package/dist/store/jsx/props.js.map +1 -1
  349. package/dist/store/jsx-store.d.ts +2 -3
  350. package/dist/store/jsx-store.d.ts.map +1 -1
  351. package/dist/store/jsx-store.js +3 -3
  352. package/dist/store/jsx-store.js.map +1 -1
  353. package/dist/store/resolve-store.d.ts +28 -0
  354. package/dist/store/resolve-store.d.ts.map +1 -0
  355. package/dist/store/resolve-store.js +65 -0
  356. package/dist/store/resolve-store.js.map +1 -0
  357. package/dist/store/store-fs.d.ts +5 -1
  358. package/dist/store/store-fs.d.ts.map +1 -1
  359. package/dist/store/store-fs.js +6 -4
  360. package/dist/store/store-fs.js.map +1 -1
  361. package/dist/writer/context.d.ts +2 -1
  362. package/dist/writer/context.d.ts.map +1 -1
  363. package/dist/writer/context.js +3 -0
  364. package/dist/writer/context.js.map +1 -1
  365. package/dist/writer/doc-tags.d.ts +21 -0
  366. package/dist/writer/doc-tags.d.ts.map +1 -0
  367. package/dist/writer/doc-tags.js +38 -0
  368. package/dist/writer/doc-tags.js.map +1 -0
  369. package/dist/writer/doc.d.ts +3 -1
  370. package/dist/writer/doc.d.ts.map +1 -1
  371. package/dist/writer/doc.js +19 -6
  372. package/dist/writer/doc.js.map +1 -1
  373. package/dist/writer/gtk-doc.d.ts +1 -1
  374. package/dist/writer/gtk-doc.d.ts.map +1 -1
  375. package/dist/writer/gtk-doc.js +64 -15
  376. package/dist/writer/gtk-doc.js.map +1 -1
  377. package/dist/writer/module.d.ts +8 -2
  378. package/dist/writer/module.d.ts.map +1 -1
  379. package/dist/writer/module.js +13 -1
  380. package/dist/writer/module.js.map +1 -1
  381. package/overrides/gdk/rgba.ts.ejs +26 -0
  382. package/overrides/gobject/object.ts.ejs +56 -11
  383. package/overrides/gobject/value.ts.ejs +7 -0
  384. package/overrides/graphene/structs.ts.ejs +55 -0
  385. package/package.json +7 -11
  386. package/src/analysis/descriptor-render.ts +67 -73
  387. package/src/analysis/descriptor.ts +13 -16
  388. package/src/analysis/inheritance.ts +35 -34
  389. package/src/analysis/nul-terminated-bytes.ts +31 -0
  390. package/src/analysis/param-capability.ts +172 -0
  391. package/src/analysis/param-structure.ts +90 -32
  392. package/src/analysis/ts-type.ts +4 -6
  393. package/src/analysis/type-shape.ts +24 -0
  394. package/src/compile.ts +3 -2
  395. package/src/docs/api-reference.ts +162 -28
  396. package/src/docs/element-page.ts +53 -47
  397. package/src/docs/handwritten-props.ts +230 -0
  398. package/src/docs/pipeline.ts +10 -10
  399. package/src/docs/render.ts +153 -39
  400. package/src/docs/symbol-page.ts +230 -80
  401. package/src/fingerprint.ts +8 -14
  402. package/src/gi.ts +4 -11
  403. package/src/gir/ancestry.ts +15 -1
  404. package/src/gir/annotations.ts +37 -0
  405. package/src/gir/callback.ts +2 -0
  406. package/src/gir/class.ts +42 -4
  407. package/src/gir/enum.ts +30 -10
  408. package/src/gir/field.ts +24 -13
  409. package/src/gir/function.ts +15 -0
  410. package/src/gir/gir-path.ts +7 -0
  411. package/src/gir/libraries.ts +23 -2
  412. package/src/gir/library.ts +51 -2
  413. package/src/gir/namespace.ts +41 -5
  414. package/src/gir/parameter.ts +47 -7
  415. package/src/gir/parse.ts +8 -2
  416. package/src/gir/primitives.ts +1 -0
  417. package/src/gir/property.ts +18 -3
  418. package/src/gir/record.ts +24 -2
  419. package/src/gir/size.ts +8 -6
  420. package/src/gir/type-id.ts +51 -7
  421. package/src/gir/type-ref.ts +2 -1
  422. package/src/gir/type.ts +50 -6
  423. package/src/index.ts +18 -16
  424. package/src/internal.ts +2 -0
  425. package/src/jsx.ts +26 -26
  426. package/src/khronos/args.ts +37 -14
  427. package/src/khronos/doc-context.ts +62 -0
  428. package/src/khronos/extensions.ts +85 -0
  429. package/src/khronos/jsdoc.ts +152 -56
  430. package/src/khronos/model.ts +314 -69
  431. package/src/khronos/modules.ts +134 -40
  432. package/src/khronos/notes.ts +74 -0
  433. package/src/khronos/param-pair.ts +1 -1
  434. package/src/khronos/pipeline.ts +95 -42
  435. package/src/khronos/plan.ts +12 -13
  436. package/src/khronos/render.ts +62 -50
  437. package/src/khronos/select.ts +91 -50
  438. package/src/react/element-config.ts +21 -18
  439. package/src/runner.ts +51 -40
  440. package/src/store/compile-store.ts +4 -5
  441. package/src/store/gi/callable-doc.ts +102 -0
  442. package/src/store/gi/callables.ts +23 -17
  443. package/src/store/gi/callback.ts +3 -2
  444. package/src/store/gi/class.ts +6 -3
  445. package/src/store/gi/closure-invocation.ts +26 -0
  446. package/src/store/gi/constant.ts +3 -6
  447. package/src/store/gi/constructor-props.ts +19 -23
  448. package/src/store/gi/doc-spec.ts +38 -0
  449. package/src/store/gi/enum.ts +55 -20
  450. package/src/store/gi/function.ts +44 -26
  451. package/src/store/gi/interface.ts +214 -26
  452. package/src/store/gi/item-comparators.ts +3 -5
  453. package/src/store/gi/method.ts +126 -68
  454. package/src/store/gi/param-marshal.ts +15 -1
  455. package/src/store/gi/pipeline.ts +7 -2
  456. package/src/store/gi/properties.ts +3 -2
  457. package/src/store/gi/property-accessor.ts +14 -11
  458. package/src/store/gi/record-constructor.ts +6 -1
  459. package/src/store/gi/record-field-accessor.ts +9 -13
  460. package/src/store/gi/record-layout.ts +1 -5
  461. package/src/store/gi/record.ts +8 -2
  462. package/src/store/gi/registration.ts +3 -3
  463. package/src/store/gi/return-wrap.ts +5 -5
  464. package/src/store/gi/runtime-override.ts +13 -6
  465. package/src/store/gi/signal.ts +36 -37
  466. package/src/store/gi/value-marshalable.ts +1 -10
  467. package/src/store/gi/vtable.ts +361 -60
  468. package/src/store/gi-store.ts +2 -4
  469. package/src/store/jsx/element-components.ts +8 -11
  470. package/src/store/jsx/element-prop-imports.ts +6 -5
  471. package/src/store/jsx/element-prop-types.ts +10 -2
  472. package/src/store/jsx/generated-elements.ts +60 -0
  473. package/src/store/jsx/intrinsic-elements.ts +4 -0
  474. package/src/store/jsx/jsx.ts +15 -13
  475. package/src/store/jsx/metadata.ts +10 -10
  476. package/src/store/jsx/omitted-props.ts +2 -4
  477. package/src/store/jsx/pipeline.ts +6 -4
  478. package/src/store/jsx/props.ts +22 -9
  479. package/src/store/jsx-store.ts +5 -7
  480. package/src/store/resolve-store.ts +100 -0
  481. package/src/store/store-fs.ts +12 -5
  482. package/src/writer/context.ts +5 -1
  483. package/src/writer/doc-tags.ts +70 -0
  484. package/src/writer/doc.ts +29 -6
  485. package/src/writer/gtk-doc.ts +82 -15
  486. package/src/writer/module.ts +25 -2
@@ -20,10 +20,6 @@ type RecordFieldSlot = {
20
20
  const POINTER_LAYOUT: FieldLayout = { size: 8, align: 8 };
21
21
  const recordLayoutCache: Map<string, FieldLayout> = new Map();
22
22
 
23
- // GIR carries no alignment attribute, and a type whose alignment exceeds its widest member cannot be
24
- // derived from the field list: Graphene models `graphene_simd4f_t` as four `gfloat`, which computes
25
- // to align 4 while the real type is a 16-byte SIMD vector. Keying the override on `c:type` keeps it
26
- // to the handful of types where the XML genuinely cannot express the ABI.
27
23
  const ALIGNMENT_OVERRIDES: Map<string, FieldLayout> = new Map([
28
24
  ["graphene_simd4f_t", { size: 16, align: 16 }],
29
25
  ["graphene_simd4x4f_t", { size: 64, align: 16 }],
@@ -70,7 +66,7 @@ const mergeBitfield = (readExpr: string, valueExpr: string, mask: number, shift:
70
66
 
71
67
  const fieldLayoutInput = (context: ModuleContext, field: GirField, visited: Set<string>): FieldLayoutInput => {
72
68
  if (field.inlineMembers !== undefined) {
73
- const layout = inlineMemberLayout(context, field.inlineMembers, field.inlineIsUnion, visited);
69
+ const layout = inlineMemberLayout(context, field.inlineMembers, field.isInlineUnion, visited);
74
70
 
75
71
  return { layout, bits: undefined };
76
72
  }
@@ -1,8 +1,8 @@
1
1
  import type { GirRecord } from "../../gir/record.js";
2
2
  import type { ModuleContext } from "../../writer/context.js";
3
- import { renderJsDoc } from "../../writer/doc.js";
4
3
  import { indentMembers } from "../../writer/emit.js";
5
4
  import { type Callables, dedupeCallables, generateBindings, renderPlainTypeMembers } from "./callables.js";
5
+ import { getDoc } from "./doc-spec.js";
6
6
  import { renderSourceGtype } from "./gtype-binding.js";
7
7
  import { renderRecordConstructor, renderRecordConstructorPropsInterface } from "./record-constructor.js";
8
8
  import { renderRecordFieldAccessor } from "./record-field-accessor.js";
@@ -34,7 +34,13 @@ const generateRecord = (context: ModuleContext, record: GirRecord): void => {
34
34
  const members = renderRecordMembers(context, record, className, callables);
35
35
  const body = indentMembers(members);
36
36
  const heritage = isErrorSubclass ? " extends globalThis.Error" : "";
37
- context.module.appendDeclaration(`${renderJsDoc(record.doc)}export class ${className}${heritage} {\n${body}\n}`);
37
+ const doc = getDoc(record);
38
+
39
+ context.module.appendDeclaration(
40
+ `${doc}export class ${className}${heritage} {\n${body}\n}`,
41
+ context.declaredType(className),
42
+ );
43
+
38
44
  context.module.appendDeclaration(renderRecordConstructorPropsInterface(context, record, className));
39
45
  const gtypeExpr = renderSourceGtype(context, record);
40
46
 
@@ -10,7 +10,7 @@ type InterfaceRegistration = {
10
10
  className: string;
11
11
  makerName: string;
12
12
  gtypeExpr?: string | undefined;
13
- vfuncs?: string | undefined;
13
+ layout?: string | undefined;
14
14
  };
15
15
 
16
16
  const appendWrapperClassRegistration = (
@@ -29,7 +29,7 @@ const appendWrapperClassRegistration = (
29
29
  };
30
30
 
31
31
  const appendInterfaceRegistration = (context: ModuleContext, registration: InterfaceRegistration): void => {
32
- const { className, makerName, gtypeExpr, vfuncs } = registration;
32
+ const { className, makerName, gtypeExpr, layout } = registration;
33
33
 
34
34
  if (gtypeExpr === undefined) {
35
35
  return;
@@ -37,7 +37,7 @@ const appendInterfaceRegistration = (context: ModuleContext, registration: Inter
37
37
 
38
38
  context.addRuntimeImport("registerInterface");
39
39
  const base = `${className}, ${gtypeExpr}, ${makerName}`;
40
- const args = vfuncs === undefined ? base : `${base}, ${vfuncs}`;
40
+ const args = layout === undefined ? base : `${base}, ${layout}`;
41
41
  context.module.appendRegistration(`registerInterface(${args});`);
42
42
  };
43
43
 
@@ -6,14 +6,14 @@ import { renderTsType } from "../../analysis/ts-type.js";
6
6
 
7
7
  type WrapReturnOptions = {
8
8
  ref: TypeId | undefined;
9
- nullable: boolean;
9
+ isNullable: boolean;
10
10
  valueExpression: string;
11
11
  };
12
12
 
13
13
  const BIGINT_CATEGORIES: Set<PrimitiveCategory> = new Set(["gtype", "bigint64", "biguint64"]);
14
14
 
15
15
  const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): string => {
16
- const { ref, nullable, valueExpression } = options;
16
+ const { ref, isNullable, valueExpression } = options;
17
17
 
18
18
  if (ref === undefined) {
19
19
  return valueExpression;
@@ -27,7 +27,7 @@ const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): st
27
27
 
28
28
  switch (type.kind) {
29
29
  case "primitive": {
30
- return wrapPrimitive(type.category, nullable, valueExpression);
30
+ return wrapPrimitive(type.category, isNullable, valueExpression);
31
31
  }
32
32
  case "varargs": {
33
33
  return `(${valueExpression} as unknown[])`;
@@ -39,7 +39,7 @@ const wrapReturnValue = (context: ModuleContext, options: WrapReturnOptions): st
39
39
  return `(${valueExpression} as number)`;
40
40
  }
41
41
  case "alias": {
42
- return wrapAlias(context, type.value.target, nullable, valueExpression);
42
+ return wrapAlias(context, type.value.target, isNullable, valueExpression);
43
43
  }
44
44
  case "carray":
45
45
  case "class":
@@ -65,7 +65,7 @@ const wrapAlias = (
65
65
  ): string =>
66
66
  target === undefined
67
67
  ? valueExpression
68
- : wrapReturnValue(context, { ref: target, nullable: isNullable, valueExpression });
68
+ : wrapReturnValue(context, { ref: target, isNullable, valueExpression });
69
69
 
70
70
  const wrapValue = (context: ModuleContext, ref: TypeId, valueExpression: string): string => {
71
71
  context.addRuntimeImport("fromNative");
@@ -5,6 +5,7 @@ type RuntimeOverride = {
5
5
  signature: string;
6
6
  returnType: string;
7
7
  body: string;
8
+ renames?: [string, string][];
8
9
  };
9
10
 
10
11
  const RUNTIME_OVERRIDES: Map<string, RuntimeOverride> = new Map([
@@ -23,16 +24,22 @@ const RUNTIME_OVERRIDES: Map<string, RuntimeOverride> = new Map([
23
24
  signature: "boxed: object | null",
24
25
  returnType: "void",
25
26
  body: 'throw new Error("g_value_set_boxed: runtime override not installed");',
27
+ renames: [["v_boxed", "boxed"]],
26
28
  },
27
29
  ],
28
30
  ]);
29
31
 
30
- const renderRuntimeOverride = (callable: GirFunction, memberName: string): string | undefined => {
31
- if (callable.cIdentifier === undefined) {
32
- return undefined;
33
- }
32
+ const runtimeOverrideFor = (callable: GirFunction): RuntimeOverride | undefined =>
33
+ callable.cIdentifier === undefined ? undefined : RUNTIME_OVERRIDES.get(callable.cIdentifier);
34
+
35
+ const runtimeOverrideRenames = (callable: GirFunction): Map<string, string> | undefined => {
36
+ const renames = runtimeOverrideFor(callable)?.renames;
34
37
 
35
- const override = RUNTIME_OVERRIDES.get(callable.cIdentifier);
38
+ return renames === undefined ? undefined : new Map(renames);
39
+ };
40
+
41
+ const renderRuntimeOverride = (callable: GirFunction, memberName: string): string | undefined => {
42
+ const override = runtimeOverrideFor(callable);
36
43
 
37
44
  if (override === undefined) {
38
45
  return undefined;
@@ -43,4 +50,4 @@ const renderRuntimeOverride = (callable: GirFunction, memberName: string): strin
43
50
  return `${memberName}${generics}(${override.signature}): ${override.returnType} {\n ${override.body}\n}`;
44
51
  };
45
52
 
46
- export { renderRuntimeOverride };
53
+ export { renderRuntimeOverride, runtimeOverrideRenames };
@@ -13,22 +13,23 @@ import { tCallback, tObject, tVoid } from "../../analysis/descriptor.js";
13
13
  import {
14
14
  collectInterfaceProperties,
15
15
  forEachAncestor,
16
- resolveImplementedInterface,
17
16
  resolvePrerequisiteReference,
18
17
  } from "../../analysis/inheritance.js";
19
18
  import { renderHandlerParameters, renderHandlerResultType } from "../../analysis/param-structure.js";
20
19
  import { renderTsType } from "../../analysis/ts-type.js";
20
+ import { resolveInterfaces } from "../../gir/ancestry.js";
21
21
  import { isCallerAllocatedOut, isOutParameter } from "../../gir/parameter.js";
22
22
  import { renderJsDoc } from "../../writer/doc.js";
23
23
  import { indent, renderBlock, renderBracedOrEmpty } from "../../writer/emit.js";
24
24
  import { parentCompanionRef } from "./companion.js";
25
+ import { getDoc, handlerSpec } from "./doc-spec.js";
25
26
  import { isRecordCallerOut, isRecordInout } from "./param-marshal.js";
26
27
 
27
28
  type SignalMapSpec = {
28
29
  context: ModuleContext;
29
30
  klass: GirClass;
30
31
  className: string;
31
- parentlessExtendsObject: boolean;
32
+ isParentlessObjectSubclass: boolean;
32
33
  suffix: string;
33
34
  renderEntry: (context: ModuleContext, signal: GirCallable) => string;
34
35
  };
@@ -66,7 +67,7 @@ const renderSignalMembers = (context: ModuleContext, klass: GirClass): string[]
66
67
 
67
68
  const connectDefault = isRootObject
68
69
  ? "default:\n throw new globalThis.Error(\"Unknown signal '\" + signal + \"'\");"
69
- : "default:\n return super.connect(signal, handler, after);";
70
+ : "default:\n return super.connect(signal, handler, isAfter);";
70
71
 
71
72
  const emitDefault = isRootObject
72
73
  ? "default:\n throw new globalThis.Error(\"Unknown signal '\" + sigName + \"'\");"
@@ -78,7 +79,10 @@ const renderSignalMembers = (context: ModuleContext, klass: GirClass): string[]
78
79
  const emitSwitch = `switch (getSignalBaseName(sigName)) {\n${emitBody}\n}`;
79
80
 
80
81
  return [
81
- renderBlock(`connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number`, connectSwitch),
82
+ renderBlock(
83
+ `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, isAfter?: boolean): number`,
84
+ connectSwitch,
85
+ ),
82
86
  renderBlock("emit(sigName: string, ...args: unknown[]): unknown", emitSwitch),
83
87
  ];
84
88
  };
@@ -89,7 +93,7 @@ const renderSignalDeclarations = (
89
93
  className: string,
90
94
  isParentlessObjectSubclass: boolean,
91
95
  ): string[] => {
92
- const base = { context, klass, className, parentlessExtendsObject: isParentlessObjectSubclass };
96
+ const base = { context, klass, className, isParentlessObjectSubclass };
93
97
 
94
98
  const declarations = [
95
99
  renderSignalMap({ ...base, suffix: SIGNALS_SUFFIX, renderEntry: renderSignalHandlerType }),
@@ -110,28 +114,30 @@ const renderSignalDeclarations = (
110
114
  };
111
115
 
112
116
  const renderSignalMap = (spec: SignalMapSpec): string => {
113
- const { context, klass, className, parentlessExtendsObject, suffix, renderEntry } = spec;
114
- const extendsRefs = signalMapParentRefs(context, klass, parentlessExtendsObject, suffix);
117
+ const { context, klass, className, isParentlessObjectSubclass, suffix, renderEntry } = spec;
118
+ const extendsRefs = signalMapParentRefs(context, klass, isParentlessObjectSubclass, suffix);
115
119
  const extendsClause = extendsRefs.length === 0 ? "" : ` extends ${extendsRefs.join(", ")}`;
116
120
 
117
- const signalEntries = collectClassSignals(context, klass).map((signal) => {
118
- const entry = `${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`;
119
-
120
- return suffix === SIGNALS_SUFFIX ? `${renderJsDoc(signal.doc)}${entry}` : entry;
121
- });
121
+ const signalEntries = collectClassSignals(context, klass).map(
122
+ (signal) => `${signalDoc(signal)}${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`,
123
+ );
122
124
 
123
125
  const entries = [...signalEntries, ...renderNotifyDetailEntries(context, klass, suffix)];
124
126
 
125
127
  return renderBracedOrEmpty(`export interface ${className}${suffix}${extendsClause}`, entries.join("\n"));
126
128
  };
127
129
 
130
+ const signalDoc = (signal: GirCallable): string =>
131
+ renderJsDoc(signal.doc, undefined, handlerSpec(signal, signal.parameters));
132
+
128
133
  const renderNotifyDetailEntries = (context: ModuleContext, klass: GirClass, suffix: string): string[] => {
129
134
  const notifyValue = `${gobjectObjectMapRef(context, suffix)}["notify"]`;
130
135
 
131
- return collectNotifyDetails(context, klass).map((name) => {
132
- const detailedSignal = `notify::${name}`;
136
+ return collectNotifyDetails(context, klass).map((property) => {
137
+ const detailedSignal = `notify::${property.name}`;
138
+ const doc = getDoc(property);
133
139
 
134
- return `${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
140
+ return `${doc}${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
135
141
  });
136
142
  };
137
143
 
@@ -177,8 +183,8 @@ const renderSignalConnectInterface = (className: string, isRootObject: boolean):
177
183
 
178
184
  const lines = [
179
185
  `__signals__?: ${map};`,
180
- `connect<K extends keyof ${map}>(signal: K, handler: ${map}[K], after?: boolean): number;`,
181
- `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, after?: boolean): number;`,
186
+ `connect<K extends keyof ${map}>(signal: K, handler: ${map}[K], isAfter?: boolean): number;`,
187
+ `connect(signal: string, handler: ${SIGNAL_HANDLER_TYPE}, isAfter?: boolean): number;`,
182
188
  `emit<K extends keyof ${emitMap}>(sigName: K, ...args: ${emitMap}[K]["args"]): ${emitMap}[K]["result"];`,
183
189
  "emit(sigName: string, ...args: unknown[]): unknown;",
184
190
  ];
@@ -193,7 +199,7 @@ const renderSignalConnectInterface = (className: string, isRootObject: boolean):
193
199
  }
194
200
  };
195
201
 
196
- chainable(["on", "once", "addEventListener"], ", after?: boolean");
202
+ chainable(["on", "once", "addEventListener"], ", isAfter?: boolean");
197
203
  chainable(["off", "removeEventListener"], "");
198
204
  }
199
205
 
@@ -216,8 +222,8 @@ const renderResultType = (
216
222
  library: context.library,
217
223
  signal,
218
224
  renderType: (ref, nullable) => renderTsType(context, ref, nullable),
219
- includeCallerAllocated: shouldIncludeCallerAllocated,
220
- optOut: isOptOut,
225
+ shouldIncludeCallerAllocated,
226
+ isOptOut,
221
227
  });
222
228
 
223
229
  const renderSignalEmitEntry = (context: ModuleContext, signal: GirCallable): string => {
@@ -237,7 +243,7 @@ const nonVarargParameters = (signal: GirCallable): GirParameter[] =>
237
243
 
238
244
  const renderConnectCase = (context: ModuleContext, signal: GirCallable): string => {
239
245
  const callback = renderCallback(context, signal);
240
- const body = `return connectSignal(this, signal, { callback: ${callback}, handler, after: after ?? false });`;
246
+ const body = `return connectSignal(this, signal, { callback: ${callback}, handler, isAfter: isAfter ?? false });`;
241
247
 
242
248
  return renderBlock(`case ${sourceStringLiteral(signal.name)}:`, body);
243
249
  };
@@ -260,7 +266,7 @@ const renderEmitArgLiteral = (options: EmitArgOptions): { literal: string; nextA
260
266
  const value = renderCallerOutAllocation(context, parameter);
261
267
 
262
268
  return {
263
- literal: `{ type: ${descriptor}, direction: "out", callerAllocated: true, value: ${value} }`,
269
+ literal: `{ type: ${descriptor}, direction: "out", isCallerAllocated: true, value: ${value} }`,
264
270
  nextArgIndex: argIndex,
265
271
  };
266
272
  }
@@ -268,7 +274,7 @@ const renderEmitArgLiteral = (options: EmitArgOptions): { literal: string; nextA
268
274
  if (isRecordInout(context, parameter)) {
269
275
  return {
270
276
  literal:
271
- `{ type: ${descriptor}, direction: "inout", callerAllocated: true, ` +
277
+ `{ type: ${descriptor}, direction: "inout", isCallerAllocated: true, ` +
272
278
  `value: args[${String(argIndex)}] }`,
273
279
  nextArgIndex: argIndex + 1,
274
280
  };
@@ -328,9 +334,6 @@ const renderCallerOutAllocation = (context: ModuleContext, parameter: GirParamet
328
334
  const renderCallback = (context: ModuleContext, signal: GirCallable): string => {
329
335
  const params = nonVarargParameters(signal);
330
336
 
331
- // The emitted argument list prepends the instance the signal was raised on, so every index a
332
- // parameter descriptor carries (an array's `sizeParamIndex`, above all) sits one slot further
333
- // right than the position GIR assigned it.
334
337
  const callbackParamDescriptors = params.map((parameter) =>
335
338
  renderParamDescriptor(context, parameter, parameter.type, { argIndexOffset: 1 }),
336
339
  );
@@ -342,11 +345,13 @@ const renderCallback = (context: ModuleContext, signal: GirCallable): string =>
342
345
  : renderDescriptor(context, signal.returnValue.type, signal.returnValue.transferOwnership);
343
346
 
344
347
  const callbackArgs = [tObject("borrowed"), ...callbackParamDescriptors, tVoid];
348
+ const userDataIndex = String(params.length + 1);
349
+ const destroy = "hasDestroy: true, destroyKind: \"closureNotify\"";
345
350
 
346
351
  return tCallback(
347
352
  callbackArgs,
348
353
  returnDescriptor,
349
- `{ hasDestroy: true, userDataIndex: ${String(params.length + 1)} }`,
354
+ `{ ${destroy}, hasUserData: true, userDataIndex: ${userDataIndex} }`,
350
355
  );
351
356
  };
352
357
 
@@ -355,13 +360,7 @@ const forEachInterfaceSignal = (
355
360
  klass: GirClass,
356
361
  consider: (signal: GirCallable) => void,
357
362
  ): void => {
358
- for (const implementName of klass.implements) {
359
- const iface = resolveImplementedInterface(context, implementName);
360
-
361
- if (iface === undefined) {
362
- continue;
363
- }
364
-
363
+ for (const iface of resolveInterfaces(context.library, context.namespace.name, klass.implements)) {
365
364
  for (const signal of iface.klass.signals) {
366
365
  consider(signal);
367
366
  }
@@ -420,10 +419,10 @@ const collectInheritedMemberNames = (
420
419
  const collectInheritedSignalNames = (context: ModuleContext, klass: GirClass): Set<string> =>
421
420
  collectInheritedMemberNames(context, klass, (source) => source.signals);
422
421
 
423
- const collectNotifyDetails = (context: ModuleContext, klass: GirClass): string[] => {
422
+ const collectNotifyDetails = (context: ModuleContext, klass: GirClass): GirProperty[] => {
424
423
  const inherited = collectInheritedMemberNames(context, klass, (source) => source.properties);
425
424
  const seen: Set<string> = new Set();
426
- const result: string[] = [];
425
+ const result: GirProperty[] = [];
427
426
 
428
427
  const consider = (property: GirProperty): void => {
429
428
  const name = camelCase(property.name);
@@ -433,7 +432,7 @@ const collectNotifyDetails = (context: ModuleContext, klass: GirClass): string[]
433
432
  }
434
433
 
435
434
  seen.add(name);
436
- result.push(property.name);
435
+ result.push(property);
437
436
  };
438
437
 
439
438
  for (const property of klass.properties) {
@@ -7,7 +7,6 @@ import type { ModuleContext } from "../../writer/context.js";
7
7
 
8
8
  type Scope = { context: ModuleContext; seen: Set<string> };
9
9
 
10
- /** Primitive categories that are a pointer at the C level, so copying the bytes aliases the pointee. */
11
10
  const POINTER_CATEGORIES: Set<PrimitiveCategory> = new Set<PrimitiveCategory>(["string", "pointer"]);
12
11
 
13
12
  const recordKey = (namespaceName: string, record: GirRecord): string => `${namespaceName}.${record.name}`;
@@ -79,18 +78,10 @@ function isValueSafeRecord(scope: Scope, namespaceName: string, record: GirRecor
79
78
  return isSafe;
80
79
  }
81
80
 
82
- /**
83
- * Whether a record can be copied by value. A plain struct is duplicated with a byte-wise `g_memdup2`,
84
- * which shallow-copies whatever the bytes hold, so only a record whose every field is transitively a
85
- * scalar can be owned, allocated or written into an inline slot. A pointer, a string, a function
86
- * pointer or an opaque record makes it borrow-only. Records that carry their own copy/free pair are
87
- * duplicated through that instead and never reach the byte-wise path.
88
- */
89
81
  const isValueMarshalable = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>
90
82
  isValueSafeRecord({ context, seen: new Set<string>() }, namespaceName, record);
91
83
 
92
- /** Whether a record can be allocated and populated from JavaScript. */
93
84
  const isConstructibleRecord = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>
94
85
  hasOwnCopySemantics(record) || isValueMarshalable(context, namespaceName, record);
95
86
 
96
- export { hasOwnCopySemantics, isConstructibleRecord, isValueMarshalable };
87
+ export { isConstructibleRecord, isValueMarshalable };