@gtkx/codegen 1.0.0-rc.4 → 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 (410) hide show
  1. package/README.md +5 -5
  2. package/dist/analysis/descriptor-render.d.ts +8 -1
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +37 -24
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +1 -1
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js.map +1 -1
  9. package/dist/analysis/inheritance.d.ts +1 -2
  10. package/dist/analysis/inheritance.d.ts.map +1 -1
  11. package/dist/analysis/inheritance.js +25 -22
  12. package/dist/analysis/inheritance.js.map +1 -1
  13. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  14. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  15. package/dist/analysis/nul-terminated-bytes.js +18 -0
  16. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  17. package/dist/analysis/param-capability.d.ts +5 -0
  18. package/dist/analysis/param-capability.d.ts.map +1 -0
  19. package/dist/analysis/param-capability.js +130 -0
  20. package/dist/analysis/param-capability.js.map +1 -0
  21. package/dist/analysis/param-structure.d.ts +11 -4
  22. package/dist/analysis/param-structure.d.ts.map +1 -1
  23. package/dist/analysis/param-structure.js +40 -14
  24. package/dist/analysis/param-structure.js.map +1 -1
  25. package/dist/analysis/type-shape.d.ts +8 -0
  26. package/dist/analysis/type-shape.d.ts.map +1 -0
  27. package/dist/analysis/type-shape.js +12 -0
  28. package/dist/analysis/type-shape.js.map +1 -0
  29. package/dist/compile.d.ts +1 -1
  30. package/dist/compile.d.ts.map +1 -1
  31. package/dist/compile.js.map +1 -1
  32. package/dist/docs/api-reference.d.ts +2 -2
  33. package/dist/docs/api-reference.d.ts.map +1 -1
  34. package/dist/docs/api-reference.js +7 -14
  35. package/dist/docs/api-reference.js.map +1 -1
  36. package/dist/docs/element-page.d.ts +4 -4
  37. package/dist/docs/element-page.d.ts.map +1 -1
  38. package/dist/docs/element-page.js +32 -20
  39. package/dist/docs/element-page.js.map +1 -1
  40. package/dist/docs/handwritten-props.d.ts +9 -0
  41. package/dist/docs/handwritten-props.d.ts.map +1 -0
  42. package/dist/docs/handwritten-props.js +149 -0
  43. package/dist/docs/handwritten-props.js.map +1 -0
  44. package/dist/docs/pipeline.js +2 -2
  45. package/dist/docs/pipeline.js.map +1 -1
  46. package/dist/docs/render.d.ts +25 -5
  47. package/dist/docs/render.d.ts.map +1 -1
  48. package/dist/docs/render.js +84 -22
  49. package/dist/docs/render.js.map +1 -1
  50. package/dist/docs/symbol-page.d.ts +17 -0
  51. package/dist/docs/symbol-page.d.ts.map +1 -1
  52. package/dist/docs/symbol-page.js +128 -43
  53. package/dist/docs/symbol-page.js.map +1 -1
  54. package/dist/fingerprint.d.ts +1 -1
  55. package/dist/fingerprint.d.ts.map +1 -1
  56. package/dist/fingerprint.js.map +1 -1
  57. package/dist/gir/ancestry.d.ts +2 -2
  58. package/dist/gir/ancestry.d.ts.map +1 -1
  59. package/dist/gir/ancestry.js +11 -1
  60. package/dist/gir/ancestry.js.map +1 -1
  61. package/dist/gir/annotations.d.ts +22 -0
  62. package/dist/gir/annotations.d.ts.map +1 -0
  63. package/dist/gir/annotations.js +15 -0
  64. package/dist/gir/annotations.js.map +1 -0
  65. package/dist/gir/callback.d.ts +1 -0
  66. package/dist/gir/callback.d.ts.map +1 -1
  67. package/dist/gir/callback.js +1 -0
  68. package/dist/gir/callback.js.map +1 -1
  69. package/dist/gir/class.d.ts +32 -1
  70. package/dist/gir/class.d.ts.map +1 -1
  71. package/dist/gir/class.js +8 -3
  72. package/dist/gir/class.js.map +1 -1
  73. package/dist/gir/enum.d.ts +21 -1
  74. package/dist/gir/enum.d.ts.map +1 -1
  75. package/dist/gir/enum.js +9 -9
  76. package/dist/gir/enum.js.map +1 -1
  77. package/dist/gir/field.d.ts +19 -3
  78. package/dist/gir/field.d.ts.map +1 -1
  79. package/dist/gir/field.js +7 -8
  80. package/dist/gir/field.js.map +1 -1
  81. package/dist/gir/function.d.ts +15 -0
  82. package/dist/gir/function.d.ts.map +1 -1
  83. package/dist/gir/function.js.map +1 -1
  84. package/dist/gir/libraries.d.ts +1 -3
  85. package/dist/gir/libraries.d.ts.map +1 -1
  86. package/dist/gir/libraries.js +0 -1
  87. package/dist/gir/libraries.js.map +1 -1
  88. package/dist/gir/library.d.ts +36 -0
  89. package/dist/gir/library.d.ts.map +1 -1
  90. package/dist/gir/library.js +34 -0
  91. package/dist/gir/library.js.map +1 -1
  92. package/dist/gir/namespace.d.ts +38 -0
  93. package/dist/gir/namespace.d.ts.map +1 -1
  94. package/dist/gir/namespace.js +4 -5
  95. package/dist/gir/namespace.js.map +1 -1
  96. package/dist/gir/parameter.d.ts +39 -0
  97. package/dist/gir/parameter.d.ts.map +1 -1
  98. package/dist/gir/parameter.js +7 -3
  99. package/dist/gir/parameter.js.map +1 -1
  100. package/dist/gir/parse.d.ts +3 -1
  101. package/dist/gir/parse.d.ts.map +1 -1
  102. package/dist/gir/parse.js +6 -3
  103. package/dist/gir/parse.js.map +1 -1
  104. package/dist/gir/primitives.d.ts +1 -0
  105. package/dist/gir/primitives.d.ts.map +1 -1
  106. package/dist/gir/primitives.js.map +1 -1
  107. package/dist/gir/property.d.ts +16 -0
  108. package/dist/gir/property.d.ts.map +1 -1
  109. package/dist/gir/property.js +3 -3
  110. package/dist/gir/property.js.map +1 -1
  111. package/dist/gir/record.d.ts +22 -0
  112. package/dist/gir/record.d.ts.map +1 -1
  113. package/dist/gir/record.js +3 -2
  114. package/dist/gir/record.js.map +1 -1
  115. package/dist/gir/size.d.ts +5 -4
  116. package/dist/gir/size.d.ts.map +1 -1
  117. package/dist/gir/size.js.map +1 -1
  118. package/dist/gir/type-id.d.ts +35 -0
  119. package/dist/gir/type-id.d.ts.map +1 -1
  120. package/dist/gir/type-id.js +1 -0
  121. package/dist/gir/type-id.js.map +1 -1
  122. package/dist/gir/type-ref.d.ts.map +1 -1
  123. package/dist/gir/type-ref.js +1 -0
  124. package/dist/gir/type-ref.js.map +1 -1
  125. package/dist/gir/type.d.ts +20 -0
  126. package/dist/gir/type.d.ts.map +1 -1
  127. package/dist/gir/type.js.map +1 -1
  128. package/dist/khronos/args.d.ts +7 -6
  129. package/dist/khronos/args.d.ts.map +1 -1
  130. package/dist/khronos/args.js +28 -6
  131. package/dist/khronos/args.js.map +1 -1
  132. package/dist/khronos/doc-context.d.ts +29 -0
  133. package/dist/khronos/doc-context.d.ts.map +1 -0
  134. package/dist/khronos/doc-context.js +29 -0
  135. package/dist/khronos/doc-context.js.map +1 -0
  136. package/dist/khronos/extensions.d.ts +13 -0
  137. package/dist/khronos/extensions.d.ts.map +1 -0
  138. package/dist/khronos/extensions.js +49 -0
  139. package/dist/khronos/extensions.js.map +1 -0
  140. package/dist/khronos/jsdoc.d.ts +17 -11
  141. package/dist/khronos/jsdoc.d.ts.map +1 -1
  142. package/dist/khronos/jsdoc.js +104 -46
  143. package/dist/khronos/jsdoc.js.map +1 -1
  144. package/dist/khronos/model.d.ts +42 -3
  145. package/dist/khronos/model.d.ts.map +1 -1
  146. package/dist/khronos/model.js +218 -63
  147. package/dist/khronos/model.js.map +1 -1
  148. package/dist/khronos/modules.d.ts +9 -6
  149. package/dist/khronos/modules.d.ts.map +1 -1
  150. package/dist/khronos/modules.js +96 -26
  151. package/dist/khronos/modules.js.map +1 -1
  152. package/dist/khronos/notes.d.ts +19 -0
  153. package/dist/khronos/notes.d.ts.map +1 -0
  154. package/dist/khronos/notes.js +35 -0
  155. package/dist/khronos/notes.js.map +1 -0
  156. package/dist/khronos/param-pair.d.ts +1 -1
  157. package/dist/khronos/param-pair.d.ts.map +1 -1
  158. package/dist/khronos/param-pair.js.map +1 -1
  159. package/dist/khronos/pipeline.d.ts +3 -1
  160. package/dist/khronos/pipeline.d.ts.map +1 -1
  161. package/dist/khronos/pipeline.js +58 -27
  162. package/dist/khronos/pipeline.js.map +1 -1
  163. package/dist/khronos/plan.d.ts +3 -3
  164. package/dist/khronos/plan.d.ts.map +1 -1
  165. package/dist/khronos/plan.js +2 -2
  166. package/dist/khronos/plan.js.map +1 -1
  167. package/dist/khronos/render.d.ts +8 -6
  168. package/dist/khronos/render.d.ts.map +1 -1
  169. package/dist/khronos/render.js +35 -26
  170. package/dist/khronos/render.js.map +1 -1
  171. package/dist/khronos/select.d.ts +21 -4
  172. package/dist/khronos/select.d.ts.map +1 -1
  173. package/dist/khronos/select.js +47 -34
  174. package/dist/khronos/select.js.map +1 -1
  175. package/dist/react/element-config.d.ts +2 -2
  176. package/dist/react/element-config.d.ts.map +1 -1
  177. package/dist/react/element-config.js.map +1 -1
  178. package/dist/runner.d.ts +1 -7
  179. package/dist/runner.d.ts.map +1 -1
  180. package/dist/runner.js.map +1 -1
  181. package/dist/store/compile-store.d.ts +1 -1
  182. package/dist/store/compile-store.d.ts.map +1 -1
  183. package/dist/store/compile-store.js.map +1 -1
  184. package/dist/store/gi/callable-doc.d.ts +11 -0
  185. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  186. package/dist/store/gi/callable-doc.js +62 -0
  187. package/dist/store/gi/callable-doc.js.map +1 -0
  188. package/dist/store/gi/callables.d.ts +3 -1
  189. package/dist/store/gi/callables.d.ts.map +1 -1
  190. package/dist/store/gi/callables.js +12 -12
  191. package/dist/store/gi/callables.js.map +1 -1
  192. package/dist/store/gi/callback.d.ts.map +1 -1
  193. package/dist/store/gi/callback.js +2 -2
  194. package/dist/store/gi/callback.js.map +1 -1
  195. package/dist/store/gi/class.d.ts.map +1 -1
  196. package/dist/store/gi/class.js +5 -3
  197. package/dist/store/gi/class.js.map +1 -1
  198. package/dist/store/gi/closure-invocation.d.ts +4 -0
  199. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  200. package/dist/store/gi/closure-invocation.js +22 -0
  201. package/dist/store/gi/closure-invocation.js.map +1 -0
  202. package/dist/store/gi/constant.d.ts.map +1 -1
  203. package/dist/store/gi/constant.js +3 -2
  204. package/dist/store/gi/constant.js.map +1 -1
  205. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  206. package/dist/store/gi/constructor-props.js +18 -20
  207. package/dist/store/gi/constructor-props.js.map +1 -1
  208. package/dist/store/gi/doc-spec.d.ts +14 -0
  209. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  210. package/dist/store/gi/doc-spec.js +23 -0
  211. package/dist/store/gi/doc-spec.js.map +1 -0
  212. package/dist/store/gi/enum.d.ts.map +1 -1
  213. package/dist/store/gi/enum.js +29 -16
  214. package/dist/store/gi/enum.js.map +1 -1
  215. package/dist/store/gi/function.d.ts.map +1 -1
  216. package/dist/store/gi/function.js +27 -12
  217. package/dist/store/gi/function.js.map +1 -1
  218. package/dist/store/gi/interface.d.ts.map +1 -1
  219. package/dist/store/gi/interface.js +130 -16
  220. package/dist/store/gi/interface.js.map +1 -1
  221. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  222. package/dist/store/gi/item-comparators.js +3 -5
  223. package/dist/store/gi/item-comparators.js.map +1 -1
  224. package/dist/store/gi/method.d.ts +9 -1
  225. package/dist/store/gi/method.d.ts.map +1 -1
  226. package/dist/store/gi/method.js +69 -26
  227. package/dist/store/gi/method.js.map +1 -1
  228. package/dist/store/gi/param-marshal.d.ts +4 -1
  229. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  230. package/dist/store/gi/param-marshal.js +5 -1
  231. package/dist/store/gi/param-marshal.js.map +1 -1
  232. package/dist/store/gi/pipeline.d.ts.map +1 -1
  233. package/dist/store/gi/pipeline.js +3 -2
  234. package/dist/store/gi/pipeline.js.map +1 -1
  235. package/dist/store/gi/properties.d.ts.map +1 -1
  236. package/dist/store/gi/properties.js +2 -2
  237. package/dist/store/gi/properties.js.map +1 -1
  238. package/dist/store/gi/property-accessor.d.ts +3 -1
  239. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  240. package/dist/store/gi/property-accessor.js +6 -5
  241. package/dist/store/gi/property-accessor.js.map +1 -1
  242. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  243. package/dist/store/gi/record-constructor.js +3 -1
  244. package/dist/store/gi/record-constructor.js.map +1 -1
  245. package/dist/store/gi/record-field-accessor.d.ts +3 -1
  246. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  247. package/dist/store/gi/record-field-accessor.js +3 -2
  248. package/dist/store/gi/record-field-accessor.js.map +1 -1
  249. package/dist/store/gi/record-layout.js +1 -1
  250. package/dist/store/gi/record-layout.js.map +1 -1
  251. package/dist/store/gi/record.d.ts.map +1 -1
  252. package/dist/store/gi/record.js +3 -2
  253. package/dist/store/gi/record.js.map +1 -1
  254. package/dist/store/gi/registration.d.ts +1 -1
  255. package/dist/store/gi/registration.js +2 -2
  256. package/dist/store/gi/registration.js.map +1 -1
  257. package/dist/store/gi/runtime-override.d.ts +2 -1
  258. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  259. package/dist/store/gi/runtime-override.js +8 -5
  260. package/dist/store/gi/runtime-override.js.map +1 -1
  261. package/dist/store/gi/signal.d.ts.map +1 -1
  262. package/dist/store/gi/signal.js +14 -15
  263. package/dist/store/gi/signal.js.map +1 -1
  264. package/dist/store/gi/value-marshalable.d.ts +1 -2
  265. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  266. package/dist/store/gi/value-marshalable.js +1 -1
  267. package/dist/store/gi/value-marshalable.js.map +1 -1
  268. package/dist/store/gi/vtable.d.ts +16 -1
  269. package/dist/store/gi/vtable.d.ts.map +1 -1
  270. package/dist/store/gi/vtable.js +214 -51
  271. package/dist/store/gi/vtable.js.map +1 -1
  272. package/dist/store/jsx/element-components.d.ts +1 -1
  273. package/dist/store/jsx/element-components.d.ts.map +1 -1
  274. package/dist/store/jsx/element-components.js +6 -4
  275. package/dist/store/jsx/element-components.js.map +1 -1
  276. package/dist/store/jsx/element-prop-imports.d.ts +1 -3
  277. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  278. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  279. package/dist/store/jsx/element-prop-types.d.ts +3 -0
  280. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  281. package/dist/store/jsx/element-prop-types.js +7 -1
  282. package/dist/store/jsx/element-prop-types.js.map +1 -1
  283. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  284. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  285. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  286. package/dist/store/jsx/jsx.d.ts.map +1 -1
  287. package/dist/store/jsx/jsx.js +7 -6
  288. package/dist/store/jsx/jsx.js.map +1 -1
  289. package/dist/store/jsx/metadata.js +2 -2
  290. package/dist/store/jsx/metadata.js.map +1 -1
  291. package/dist/store/jsx/pipeline.d.ts +1 -1
  292. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  293. package/dist/store/jsx/pipeline.js.map +1 -1
  294. package/dist/store/jsx/props.d.ts +1 -7
  295. package/dist/store/jsx/props.d.ts.map +1 -1
  296. package/dist/store/jsx/props.js +14 -6
  297. package/dist/store/jsx/props.js.map +1 -1
  298. package/dist/writer/context.d.ts +2 -1
  299. package/dist/writer/context.d.ts.map +1 -1
  300. package/dist/writer/context.js +3 -0
  301. package/dist/writer/context.js.map +1 -1
  302. package/dist/writer/doc-tags.d.ts +21 -0
  303. package/dist/writer/doc-tags.d.ts.map +1 -0
  304. package/dist/writer/doc-tags.js +38 -0
  305. package/dist/writer/doc-tags.js.map +1 -0
  306. package/dist/writer/doc.d.ts +3 -1
  307. package/dist/writer/doc.d.ts.map +1 -1
  308. package/dist/writer/doc.js +19 -6
  309. package/dist/writer/doc.js.map +1 -1
  310. package/dist/writer/gtk-doc.d.ts +1 -1
  311. package/dist/writer/gtk-doc.d.ts.map +1 -1
  312. package/dist/writer/gtk-doc.js +64 -15
  313. package/dist/writer/gtk-doc.js.map +1 -1
  314. package/dist/writer/module.d.ts +8 -2
  315. package/dist/writer/module.d.ts.map +1 -1
  316. package/dist/writer/module.js +13 -1
  317. package/dist/writer/module.js.map +1 -1
  318. package/overrides/gdk/rgba.ts.ejs +26 -0
  319. package/overrides/gobject/object.ts.ejs +48 -3
  320. package/overrides/gobject/value.ts.ejs +7 -0
  321. package/overrides/graphene/structs.ts.ejs +55 -0
  322. package/package.json +4 -4
  323. package/src/analysis/descriptor-render.ts +47 -28
  324. package/src/analysis/descriptor.ts +0 -3
  325. package/src/analysis/inheritance.ts +35 -34
  326. package/src/analysis/nul-terminated-bytes.ts +31 -0
  327. package/src/analysis/param-capability.ts +172 -0
  328. package/src/analysis/param-structure.ts +83 -23
  329. package/src/analysis/type-shape.ts +24 -0
  330. package/src/compile.ts +1 -1
  331. package/src/docs/api-reference.ts +36 -25
  332. package/src/docs/element-page.ts +53 -47
  333. package/src/docs/handwritten-props.ts +230 -0
  334. package/src/docs/pipeline.ts +2 -2
  335. package/src/docs/render.ts +146 -32
  336. package/src/docs/symbol-page.ts +224 -79
  337. package/src/fingerprint.ts +0 -1
  338. package/src/gir/ancestry.ts +15 -1
  339. package/src/gir/annotations.ts +37 -0
  340. package/src/gir/callback.ts +2 -0
  341. package/src/gir/class.ts +42 -4
  342. package/src/gir/enum.ts +30 -10
  343. package/src/gir/field.ts +24 -9
  344. package/src/gir/function.ts +15 -0
  345. package/src/gir/libraries.ts +11 -3
  346. package/src/gir/library.ts +51 -2
  347. package/src/gir/namespace.ts +41 -5
  348. package/src/gir/parameter.ts +47 -3
  349. package/src/gir/parse.ts +8 -2
  350. package/src/gir/primitives.ts +1 -0
  351. package/src/gir/property.ts +18 -3
  352. package/src/gir/record.ts +24 -2
  353. package/src/gir/size.ts +8 -3
  354. package/src/gir/type-id.ts +49 -3
  355. package/src/gir/type-ref.ts +1 -0
  356. package/src/gir/type.ts +50 -6
  357. package/src/khronos/args.ts +36 -13
  358. package/src/khronos/doc-context.ts +62 -0
  359. package/src/khronos/extensions.ts +85 -0
  360. package/src/khronos/jsdoc.ts +152 -56
  361. package/src/khronos/model.ts +314 -69
  362. package/src/khronos/modules.ts +134 -40
  363. package/src/khronos/notes.ts +74 -0
  364. package/src/khronos/param-pair.ts +1 -1
  365. package/src/khronos/pipeline.ts +94 -41
  366. package/src/khronos/plan.ts +4 -5
  367. package/src/khronos/render.ts +62 -50
  368. package/src/khronos/select.ts +91 -50
  369. package/src/react/element-config.ts +2 -2
  370. package/src/runner.ts +1 -8
  371. package/src/store/compile-store.ts +1 -1
  372. package/src/store/gi/callable-doc.ts +102 -0
  373. package/src/store/gi/callables.ts +18 -12
  374. package/src/store/gi/callback.ts +3 -2
  375. package/src/store/gi/class.ts +6 -3
  376. package/src/store/gi/closure-invocation.ts +26 -0
  377. package/src/store/gi/constant.ts +3 -4
  378. package/src/store/gi/constructor-props.ts +19 -23
  379. package/src/store/gi/doc-spec.ts +38 -0
  380. package/src/store/gi/enum.ts +55 -20
  381. package/src/store/gi/function.ts +43 -21
  382. package/src/store/gi/interface.ts +214 -26
  383. package/src/store/gi/item-comparators.ts +3 -5
  384. package/src/store/gi/method.ts +98 -42
  385. package/src/store/gi/param-marshal.ts +15 -1
  386. package/src/store/gi/pipeline.ts +7 -2
  387. package/src/store/gi/properties.ts +3 -2
  388. package/src/store/gi/property-accessor.ts +9 -4
  389. package/src/store/gi/record-constructor.ts +6 -1
  390. package/src/store/gi/record-field-accessor.ts +5 -3
  391. package/src/store/gi/record-layout.ts +1 -1
  392. package/src/store/gi/record.ts +8 -2
  393. package/src/store/gi/registration.ts +3 -3
  394. package/src/store/gi/runtime-override.ts +13 -6
  395. package/src/store/gi/signal.ts +19 -20
  396. package/src/store/gi/value-marshalable.ts +1 -1
  397. package/src/store/gi/vtable.ts +361 -60
  398. package/src/store/jsx/element-components.ts +8 -5
  399. package/src/store/jsx/element-prop-imports.ts +1 -3
  400. package/src/store/jsx/element-prop-types.ts +10 -1
  401. package/src/store/jsx/intrinsic-elements.ts +4 -0
  402. package/src/store/jsx/jsx.ts +8 -6
  403. package/src/store/jsx/metadata.ts +2 -2
  404. package/src/store/jsx/pipeline.ts +1 -1
  405. package/src/store/jsx/props.ts +20 -7
  406. package/src/writer/context.ts +5 -1
  407. package/src/writer/doc-tags.ts +70 -0
  408. package/src/writer/doc.ts +29 -6
  409. package/src/writer/gtk-doc.ts +82 -15
  410. package/src/writer/module.ts +25 -2
@@ -5,10 +5,10 @@ import { renderTsType } from "../../analysis/ts-type.js";
5
5
  import { PRIMITIVE_TS_TYPE, primitiveCategory } from "../../gir/primitives.js";
6
6
  import { splitOptionalNamespace } from "../../gir/type-ref.js";
7
7
  import { ModuleContext } from "../../writer/context.js";
8
- import { renderJsDoc } from "../../writer/doc.js";
9
8
  import { generateCallback } from "./callback.js";
10
9
  import { generateClass } from "./class.js";
11
10
  import { generateConstant } from "./constant.js";
11
+ import { getDoc } from "./doc-spec.js";
12
12
  import { generateEnum } from "./enum.js";
13
13
  import { generateNamespaceBootstrap, generateNamespaceFunction } from "./function.js";
14
14
  import { generateInterface } from "./interface.js";
@@ -72,7 +72,12 @@ const generateNamespaceMembers = (context: ModuleContext, namespace: GirNamespac
72
72
  const generateAlias = (context: ModuleContext, alias: GirAlias): void => {
73
73
  const category = alias.cType === undefined ? undefined : primitiveCategory(alias.cType);
74
74
  const targetType = category === "gtype" ? PRIMITIVE_TS_TYPE.gtype : renderTsType(context, alias.target);
75
- context.module.appendDeclaration(`${renderJsDoc(alias.doc)}export type ${alias.name} = ${targetType};`);
75
+ const doc = getDoc(alias);
76
+
77
+ context.module.appendDeclaration(
78
+ `${doc}export type ${alias.name} = ${targetType};`,
79
+ context.declaredType(alias.name),
80
+ );
76
81
  };
77
82
 
78
83
  const visitClass = (state: TopologicalState, klass: GirClass): void => {
@@ -3,11 +3,12 @@ import type { ModuleContext } from "../../writer/context.js";
3
3
  import { collectInterfaceProperties } from "../../analysis/inheritance.js";
4
4
  import { renderBracedOrEmpty } from "../../writer/emit.js";
5
5
  import { parentCompanionRef } from "./companion.js";
6
- import { type ResolvedAccessor, resolveOwnerAccessor } from "./property-accessor.js";
6
+ import { propertyDoc, type ResolvedAccessor, resolveOwnerAccessor } from "./property-accessor.js";
7
7
 
8
8
  const PROPERTIES_SUFFIX = "Properties";
9
9
 
10
- const propertyEntry = (accessor: ResolvedAccessor): string => `${accessor.jsName}: ${accessor.tsType};`;
10
+ const propertyEntry = (accessor: ResolvedAccessor): string =>
11
+ `${propertyDoc(accessor.property)}${accessor.jsName}: ${accessor.tsType};`;
11
12
 
12
13
  const interfaceEntries = (context: ModuleContext, klass: GirClass): string[] => {
13
14
  const entries: string[] = [];
@@ -6,12 +6,13 @@ import { renderDescriptor } from "../../analysis/descriptor-render.js";
6
6
  import { inputParameters } from "../../analysis/param-structure.js";
7
7
  import { renderTsType } from "../../analysis/ts-type.js";
8
8
  import { type GirProperty, isConstructableProperty } from "../../gir/property.js";
9
- import { renderJsDoc } from "../../writer/doc.js";
10
9
  import { renderBlock } from "../../writer/emit.js";
11
10
  import { isEmittableCallable } from "./callables.js";
11
+ import { getDoc } from "./doc-spec.js";
12
12
  import { methodExportName, renderMethodReturnType } from "./method.js";
13
13
 
14
14
  type ResolvedAccessor = {
15
+ property: GirProperty;
15
16
  jsName: string;
16
17
  tsType: string;
17
18
  hasGetter: boolean;
@@ -148,7 +149,7 @@ const resolveAccessor = (args: PropertyAccessorArgs): ResolvedAccessor | undefin
148
149
  const ownType = resolveOwnType(context, property, getterMethod, setterMethod);
149
150
  const tsType = resolveTsType(args.inheritedType, ownType);
150
151
 
151
- return { jsName, tsType, hasGetter, isWritable, getterMember, getterMethod, setterMember };
152
+ return { property, jsName, tsType, hasGetter, isWritable, getterMember, getterMethod, setterMember };
152
153
  };
153
154
 
154
155
  const resolveOwnerAccessor = (
@@ -210,15 +211,18 @@ const renderResolvedPropertyAccessor = (
210
211
  blocks.push(renderBlock(`set ${jsName}(value: ${tsType})`, setterBody));
211
212
  }
212
213
 
213
- return `${renderJsDoc(property.doc)}${blocks.join("\n\n")}`;
214
+ return `${propertyDoc(property)}${blocks.join("\n\n")}`;
214
215
  };
215
216
 
217
+ const propertyDoc = (property: GirProperty): string =>
218
+ getDoc(property);
219
+
216
220
  const renderPropertyAccessor = (args: PropertyAccessorArgs): string | undefined =>
217
221
  withAccessor(args, (accessor) => renderResolvedPropertyAccessor(args.context, args.property, accessor));
218
222
 
219
223
  const renderPropertyAccessorSignature = (args: PropertyAccessorArgs): string | undefined =>
220
224
  withAccessor(args, ({ jsName, tsType, hasGetter, isWritable }) => {
221
- const doc = renderJsDoc(args.property.doc);
225
+ const doc = propertyDoc(args.property);
222
226
 
223
227
  if (hasGetter && isWritable) {
224
228
  return `${doc}${jsName}: ${tsType};`;
@@ -289,6 +293,7 @@ const delegateMember = (
289
293
  };
290
294
 
291
295
  export {
296
+ propertyDoc,
292
297
  resolveAccessor,
293
298
  resolveOwnerAccessor,
294
299
  resolveAccessorType,
@@ -6,6 +6,7 @@ import type { ModuleContext } from "../../writer/context.js";
6
6
  import { renderDescriptor } from "../../analysis/descriptor-render.js";
7
7
  import { renderTsType } from "../../analysis/ts-type.js";
8
8
  import { renderBlock, renderBracedOrEmpty } from "../../writer/emit.js";
9
+ import { getDoc } from "./doc-spec.js";
9
10
  import { renderSourceGtype } from "./gtype-binding.js";
10
11
  import { emitFieldWrite, isEmittableField, isInlineField } from "./record-field-accessor.js";
11
12
  import { computeRecordFieldSlots, type RecordFieldSlot } from "./record-layout.js";
@@ -33,7 +34,11 @@ const renderRecordConstructorPropsInterface = (
33
34
 
34
35
  const lines = slots
35
36
  .filter((entry): entry is WritableFieldSlot => isWritableFieldSlot(context, entry))
36
- .map((entry) => `${toCamelIdentifier(entry.field.name)}?: ${renderTsType(context, entry.field.type, true)};`);
37
+ .map(
38
+ (entry) =>
39
+ `${getDoc(entry.field)}${toCamelIdentifier(entry.field.name)}?: ` +
40
+ `${renderTsType(context, entry.field.type, true)};`,
41
+ );
37
42
 
38
43
  return renderBracedOrEmpty(head, lines.join("\n"));
39
44
  };
@@ -1,4 +1,5 @@
1
1
  import { toCamelIdentifier } from "@gtkx/utils";
2
+ import type { GirAnnotations } from "../../gir/annotations.js";
2
3
  import type { GirField } from "../../gir/field.js";
3
4
  import type { FieldSlot } from "../../gir/size.js";
4
5
  import type { TypeId } from "../../gir/type-id.js";
@@ -7,8 +8,8 @@ import type { ModuleContext } from "../../writer/context.js";
7
8
  import { isInlineCallbackRef, renderDescriptor } from "../../analysis/descriptor-render.js";
8
9
  import { tStruct } from "../../analysis/descriptor.js";
9
10
  import { renderTsType } from "../../analysis/ts-type.js";
10
- import { renderJsDoc } from "../../writer/doc.js";
11
11
  import { indent, renderBlock } from "../../writer/emit.js";
12
+ import { getDoc } from "./doc-spec.js";
12
13
  import { bitMask, computeRecordFieldSlots, mergeBitfield, type RecordFieldSlot } from "./record-layout.js";
13
14
  import { wrapReturnValue } from "./return-wrap.js";
14
15
  import { isValueMarshalable } from "./value-marshalable.js";
@@ -30,6 +31,7 @@ type RecordFieldEntry = {
30
31
  tsType: string;
31
32
  isWritable: boolean;
32
33
  doc: string | undefined;
34
+ annotations: GirAnnotations;
33
35
  };
34
36
 
35
37
  type InlineFieldVisit = {
@@ -180,6 +182,7 @@ const resolveRecordFieldEntry = (
180
182
  tsType: renderTsType(context, admitted.field.type, false),
181
183
  isWritable: admitted.field.writable,
182
184
  doc: admitted.field.doc,
185
+ annotations: admitted.field.annotations,
183
186
  };
184
187
  };
185
188
 
@@ -196,7 +199,7 @@ const renderRecordFieldAccessor = (
196
199
  }
197
200
 
198
201
  const { field, jsName } = admitted;
199
- const doc = renderJsDoc(field.doc);
202
+ const doc = getDoc(field);
200
203
  const structArray = renderStructArrayAccessor(context, { field, jsName, slot: slot.slot, siblingFields });
201
204
 
202
205
  if (structArray !== undefined) {
@@ -632,5 +635,4 @@ export {
632
635
  emitFieldWrite,
633
636
  resolveRecordFieldEntry,
634
637
  renderRecordFieldAccessor,
635
- type RecordFieldEntry,
636
638
  };
@@ -66,7 +66,7 @@ const mergeBitfield = (readExpr: string, valueExpr: string, mask: number, shift:
66
66
 
67
67
  const fieldLayoutInput = (context: ModuleContext, field: GirField, visited: Set<string>): FieldLayoutInput => {
68
68
  if (field.inlineMembers !== undefined) {
69
- const layout = inlineMemberLayout(context, field.inlineMembers, field.inlineIsUnion, visited);
69
+ const layout = inlineMemberLayout(context, field.inlineMembers, field.isInlineUnion, visited);
70
70
 
71
71
  return { layout, bits: undefined };
72
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
 
@@ -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,15 +13,16 @@ 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 = {
@@ -117,24 +118,26 @@ const renderSignalMap = (spec: SignalMapSpec): string => {
117
118
  const extendsRefs = signalMapParentRefs(context, klass, isParentlessObjectSubclass, suffix);
118
119
  const extendsClause = extendsRefs.length === 0 ? "" : ` extends ${extendsRefs.join(", ")}`;
119
120
 
120
- const signalEntries = collectClassSignals(context, klass).map((signal) => {
121
- const entry = `${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`;
122
-
123
- return suffix === SIGNALS_SUFFIX ? `${renderJsDoc(signal.doc)}${entry}` : entry;
124
- });
121
+ const signalEntries = collectClassSignals(context, klass).map(
122
+ (signal) => `${signalDoc(signal)}${sourceStringLiteral(signal.name)}: ${renderEntry(context, signal)};`,
123
+ );
125
124
 
126
125
  const entries = [...signalEntries, ...renderNotifyDetailEntries(context, klass, suffix)];
127
126
 
128
127
  return renderBracedOrEmpty(`export interface ${className}${suffix}${extendsClause}`, entries.join("\n"));
129
128
  };
130
129
 
130
+ const signalDoc = (signal: GirCallable): string =>
131
+ renderJsDoc(signal.doc, undefined, handlerSpec(signal, signal.parameters));
132
+
131
133
  const renderNotifyDetailEntries = (context: ModuleContext, klass: GirClass, suffix: string): string[] => {
132
134
  const notifyValue = `${gobjectObjectMapRef(context, suffix)}["notify"]`;
133
135
 
134
- return collectNotifyDetails(context, klass).map((name) => {
135
- const detailedSignal = `notify::${name}`;
136
+ return collectNotifyDetails(context, klass).map((property) => {
137
+ const detailedSignal = `notify::${property.name}`;
138
+ const doc = getDoc(property);
136
139
 
137
- return `${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
140
+ return `${doc}${sourceStringLiteral(detailedSignal)}: ${notifyValue};`;
138
141
  });
139
142
  };
140
143
 
@@ -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) {
@@ -84,4 +84,4 @@ const isValueMarshalable = (context: ModuleContext, namespaceName: string, recor
84
84
  const isConstructibleRecord = (context: ModuleContext, namespaceName: string, record: GirRecord): boolean =>
85
85
  hasOwnCopySemantics(record) || isValueMarshalable(context, namespaceName, record);
86
86
 
87
- export { hasOwnCopySemantics, isConstructibleRecord, isValueMarshalable };
87
+ export { isConstructibleRecord, isValueMarshalable };