@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
@@ -1,8 +1,11 @@
1
- import { lowerFirst, sourceStringLiteral, toCamelIdentifier } from "@gtkx/utils";
1
+ import { sourceStringLiteral, toCamelIdentifier } from "@gtkx/utils";
2
+ import type { GlDocContext } from "./doc-context.js";
2
3
  import type { CommandPlan, GlScalar, ReturnPlan } from "./plan.js";
4
+ import type { GlSymbolProvenance } from "./select.js";
3
5
  import { tBind, tInlineStruct, tRef, tString, tUint8, tVoid } from "../analysis/descriptor.js";
4
- import { type OutArg, planArgs, scalarAliasOrGroup, scalarPrefixArgs, trackInto } from "./args.js";
5
- import { commandJsDoc, inParamDocLine, singularJsDoc } from "./jsdoc.js";
6
+ import { type InArg, type OutArg, planArgs, returnPlanTsType, scalarPrefixArgs, trackInto } from "./args.js";
7
+ import { commandJsDoc, derivedJsDoc, inParamDocLine } from "./jsdoc.js";
8
+ import { commandExportName } from "./notes.js";
6
9
 
7
10
  type RenderedCommand = {
8
11
  exportName: string;
@@ -10,6 +13,12 @@ type RenderedCommand = {
10
13
  declaration: string;
11
14
  };
12
15
 
16
+ type SingularContext = {
17
+ plan: CommandPlan & { isOk: true };
18
+ provenance: GlSymbolProvenance;
19
+ docs: GlDocContext;
20
+ };
21
+
13
22
  type EmittedReturn = {
14
23
  tsType: string;
15
24
  descriptor: string;
@@ -34,9 +43,6 @@ const glBind = (name: string, argList: string, returnType: string): string =>
34
43
  returnType,
35
44
  });
36
45
 
37
- const commandExportName = (name: string): string =>
38
- toCamelIdentifier(name.startsWith("gl") ? lowerFirst(name.slice(2)) : name);
39
-
40
46
  const singularize = (plural: string): string =>
41
47
  plural.endsWith("ies") ? `${plural.slice(0, -3)}y` : plural.replace(/s$/, "");
42
48
 
@@ -48,32 +54,27 @@ const buildEmittedReturn = (
48
54
  returnGroup: string | undefined,
49
55
  usedTypes: Set<string>,
50
56
  ): EmittedReturn => {
51
- const track = trackInto(usedTypes);
57
+ const tsType = trackInto(usedTypes)(returnPlanTsType(plan, returnGroup));
58
+ const cast = (call: string): string => `${call} as ${tsType}`;
52
59
 
53
60
  switch (plan.kind) {
54
61
  case "void": {
55
- return { tsType: "void", descriptor: tVoid };
62
+ return { tsType, descriptor: tVoid };
56
63
  }
57
64
  case "scalar": {
58
- const alias = track(scalarAliasOrGroup(plan.scalar, returnGroup));
59
-
60
- return { tsType: alias, descriptor: plan.scalar.descriptor, expr: (call) => `${call} as ${alias}` };
65
+ return { tsType, descriptor: plan.scalar.descriptor, expr: cast };
61
66
  }
62
67
  case "boolean": {
63
- return { tsType: "boolean", descriptor: tUint8, expr: (call) => `(${call} as number) !== 0` };
68
+ return { tsType, descriptor: tUint8, expr: (call) => `(${call} as number) !== 0` };
64
69
  }
65
70
  case "string": {
66
- return { tsType: "string", descriptor: tString("borrowed"), expr: (call) => `${call} as string` };
71
+ return { tsType, descriptor: tString("borrowed"), expr: cast };
67
72
  }
68
73
  case "sync": {
69
- return { tsType: track("GLsync"), descriptor: tInlineStruct(), expr: (call) => `${call} as GLsync` };
74
+ return { tsType, descriptor: tInlineStruct(), expr: cast };
70
75
  }
71
76
  case "opaque-pointer": {
72
- return {
73
- tsType: track("GLpointer"),
74
- descriptor: tInlineStruct(),
75
- expr: (call) => `${call} as GLpointer`,
76
- };
77
+ return { tsType, descriptor: tInlineStruct(), expr: cast };
77
78
  }
78
79
  }
79
80
  };
@@ -117,19 +118,20 @@ const returnStatements = (call: string, returned: EmittedReturn, outs: OutArg[])
117
118
  };
118
119
 
119
120
  const renderCommand = (
120
- plan: CommandPlan & { ok: true },
121
- feature: string,
121
+ plan: CommandPlan & { isOk: true },
122
+ provenance: GlSymbolProvenance,
122
123
  usedTypes: Set<string>,
124
+ docs: GlDocContext,
123
125
  ): RenderedCommand => {
124
126
  const { command } = plan;
125
127
  const exportName = commandExportName(command.name);
126
128
  const { args, ins, outs } = planArgs(plan, usedTypes);
127
129
  const returned = buildEmittedReturn(plan.returnPlan, command.returnGroup, usedTypes);
128
130
  const signature = ins.map((arg) => `${arg.name}: ${arg.tsType}`).join(", ");
129
- const argNames = args.map((arg) => (arg.out ? arg.cellName : arg.name)).join(", ");
131
+ const argNames = args.map((arg) => (arg.isOut ? arg.cellName : arg.name)).join(", ");
130
132
  const descriptors = renderDescriptorList(args.map((arg) => arg.descriptor));
131
133
  const tsReturn = returnTsType(returned, outs);
132
- const jsDoc = commandJsDoc({ command, feature, ins, outs, returnPlan: plan.returnPlan });
134
+ const jsDoc = commandJsDoc({ plan, provenance, ins, outs, docs });
133
135
  const seeds = outs.map((out) => out.seed);
134
136
  const bindExpression = glBind(command.name, descriptors, returned.descriptor);
135
137
  const isInline = plan.params.some((paramPlan) => paramPlan.kind === "string-out");
@@ -150,15 +152,17 @@ const renderCommand = (
150
152
  };
151
153
  };
152
154
 
153
- const singularCommandJsDoc = (
154
- plan: CommandPlan & { ok: true },
155
- feature: string,
156
- summary: string,
157
- body: string[],
158
- ): string => singularJsDoc({ commandName: plan.command.name, feature, summary, body });
155
+ const singularCommandJsDoc = (context: SingularContext, summary: string, body: string[]): string =>
156
+ derivedJsDoc({
157
+ command: context.plan.command,
158
+ provenance: context.provenance,
159
+ docs: context.docs,
160
+ summary,
161
+ body,
162
+ });
159
163
 
160
164
  const genSingularScalars = (
161
- plan: CommandPlan & { ok: true },
165
+ plan: CommandPlan & { isOk: true },
162
166
  ): { countScalar: GlScalar; outScalar: GlScalar; lenParamName: string } | undefined => {
163
167
  const countPlan = plan.params.at(-2);
164
168
 
@@ -175,7 +179,7 @@ const genSingularScalars = (
175
179
  return { countScalar: countPlan.scalar, outScalar: outPlan.scalar, lenParamName: outPlan.lenParamName };
176
180
  };
177
181
 
178
- const genSingularObjectClass = (plan: CommandPlan & { ok: true }, lenParamName: string): string | undefined => {
182
+ const genSingularObjectClass = (plan: CommandPlan & { isOk: true }, lenParamName: string): string | undefined => {
179
183
  const countParam = plan.command.params[plan.params.length - 2];
180
184
  const outParam = plan.command.params[plan.params.length - 1];
181
185
 
@@ -190,7 +194,7 @@ const genSingularObjectClass = (plan: CommandPlan & { ok: true }, lenParamName:
190
194
  return outParam.objectClass;
191
195
  };
192
196
 
193
- const genSingularShape = (plan: CommandPlan & { ok: true }): GenSingularShape | undefined => {
197
+ const genSingularShape = (plan: CommandPlan & { isOk: true }): GenSingularShape | undefined => {
194
198
  const scalars = genSingularScalars(plan);
195
199
 
196
200
  if (scalars === undefined) {
@@ -206,10 +210,25 @@ const genSingularShape = (plan: CommandPlan & { ok: true }): GenSingularShape |
206
210
  return { countScalar: scalars.countScalar, outScalar: scalars.outScalar, objectClass };
207
211
  };
208
212
 
213
+ const genSingularJsDoc = (context: SingularContext, prefix: InArg[], shape: GenSingularShape): string => {
214
+ const { command } = context.plan;
215
+
216
+ return singularCommandJsDoc(
217
+ context,
218
+ `Returns one ${shape.objectClass} object name via ` +
219
+ `\`${command.name}(${prefix.length > 0 ? "..., " : ""}1, ...)\`.`,
220
+ [
221
+ ...prefix.map((arg) => inParamDocLine(context.plan, arg, context.docs)),
222
+ ` * @returns \`${shape.outScalar.tsAlias}\`, object class \`${shape.objectClass}\``,
223
+ ],
224
+ );
225
+ };
226
+
209
227
  const deriveGenSingular = (
210
- plan: CommandPlan & { ok: true },
211
- feature: string,
228
+ plan: CommandPlan & { isOk: true },
229
+ provenance: GlSymbolProvenance,
212
230
  usedTypes: Set<string>,
231
+ docs: GlDocContext,
213
232
  ): RenderedCommand | undefined => {
214
233
  if (!GEN_FAMILY.test(plan.command.name)) {
215
234
  return undefined;
@@ -227,21 +246,14 @@ const deriveGenSingular = (
227
246
  return undefined;
228
247
  }
229
248
 
230
- const { countScalar, outScalar, objectClass } = shape;
249
+ const { countScalar, outScalar } = shape;
231
250
  const exportName = singularize(commandExportName(plan.command.name));
232
251
  const bindingName = `${plan.command.name}Single`;
233
252
  const descriptors = [...prefix.map((arg) => arg.descriptor), countScalar.descriptor, tRef(outScalar.descriptor)];
234
253
  usedTypes.add(outScalar.tsAlias);
235
254
  const signature = prefix.map((arg) => `${arg.name}: ${arg.tsType}`).join(", ");
236
255
  const callArgs = [...prefix.map((arg) => arg.name), "1", "out"].join(", ");
237
-
238
- const jsDoc = singularCommandJsDoc(
239
- plan,
240
- feature,
241
- `Returns one ${objectClass} object name via ` +
242
- `\`${plan.command.name}(${prefix.length > 0 ? "..., " : ""}1, ...)\`.`,
243
- [...prefix.map((arg) => inParamDocLine(plan.command, arg)), ` * @returns The new ${objectClass} object name`],
244
- );
256
+ const jsDoc = genSingularJsDoc({ plan, provenance, docs }, prefix, shape);
245
257
 
246
258
  const body = [" const out = { value: 0 };", ` ${bindingName}(${callArgs});`, " return out.value;"].join(
247
259
  "\n",
@@ -256,7 +268,7 @@ const deriveGenSingular = (
256
268
  };
257
269
  };
258
270
 
259
- const deleteSingularAlias = (plan: CommandPlan & { ok: true }): string | undefined => {
271
+ const deleteSingularAlias = (plan: CommandPlan & { isOk: true }): string | undefined => {
260
272
  if (plan.params.length !== 2) {
261
273
  return undefined;
262
274
  }
@@ -274,7 +286,7 @@ const deleteSingularAlias = (plan: CommandPlan & { ok: true }): string | undefin
274
286
  return arrayPlan.scalar.tsAlias;
275
287
  };
276
288
 
277
- const deleteSingularObjectClass = (plan: CommandPlan & { ok: true }): string | undefined => {
289
+ const deleteSingularObjectClass = (plan: CommandPlan & { isOk: true }): string | undefined => {
278
290
  const [countParam, arrayParam] = plan.command.params;
279
291
 
280
292
  if (countParam === undefined || arrayParam === undefined) {
@@ -289,9 +301,10 @@ const deleteSingularObjectClass = (plan: CommandPlan & { ok: true }): string | u
289
301
  };
290
302
 
291
303
  const deriveDeleteSingular = (
292
- plan: CommandPlan & { ok: true },
293
- feature: string,
304
+ plan: CommandPlan & { isOk: true },
305
+ provenance: GlSymbolProvenance,
294
306
  usedTypes: Set<string>,
307
+ docs: GlDocContext,
295
308
  ): RenderedCommand | undefined => {
296
309
  if (!DELETE_FAMILY.test(plan.command.name)) {
297
310
  return undefined;
@@ -313,10 +326,9 @@ const deriveDeleteSingular = (
313
326
  const exportName = singularize(commandExportName(plan.command.name));
314
327
 
315
328
  const jsDoc = singularCommandJsDoc(
316
- plan,
317
- feature,
329
+ { plan, provenance, docs },
318
330
  `Deletes one ${objectClass} object name via \`${plan.command.name}(1, ...)\`.`,
319
- [` * @param name - The ${objectClass} object name to delete`],
331
+ [` * @param name - \`${scalarAlias}\`, object class \`${objectClass}\``],
320
332
  );
321
333
 
322
334
  return {
@@ -1,3 +1,4 @@
1
+ import { sortStringsBy } from "@gtkx/utils";
1
2
  import type { GlEnum, GlFeature, GlInterfaceBlock, GlRegistry } from "./model.js";
2
3
 
3
4
  type GlProfile = "core";
@@ -8,60 +9,94 @@ type GlSelection = {
8
9
  profile: GlProfile;
9
10
  };
10
11
 
12
+ type GlSymbolKind = "command" | "enum";
13
+
14
+ type GlRemoval = {
15
+ feature: string;
16
+ comment?: string;
17
+ };
18
+
19
+ type GlSymbolProvenance = {
20
+ feature: string;
21
+ requireComment?: string;
22
+ removals: GlRemoval[];
23
+ };
24
+
25
+ type GlRemovedSymbol = {
26
+ name: string;
27
+ kind: GlSymbolKind;
28
+ feature: string;
29
+ comment?: string;
30
+ };
31
+
11
32
  type GlSubset = {
12
- commands: Map<string, string>;
13
- enums: Map<string, string>;
33
+ commands: Map<string, GlSymbolProvenance>;
34
+ enums: Map<string, GlSymbolProvenance>;
35
+ removed: GlRemovedSymbol[];
14
36
  };
15
37
 
16
- const isBlockApplicable = (block: GlInterfaceBlock, selection: GlSelection): boolean =>
17
- block.profile === undefined || block.profile === selection.profile;
38
+ type SelectionState = GlSubset & {
39
+ history: Map<string, GlRemoval[]>;
40
+ };
18
41
 
19
- const addMissing = (target: Map<string, string>, names: string[], value: string): void => {
20
- for (const name of names) {
21
- if (!target.has(name)) {
22
- target.set(name, value);
23
- }
24
- }
42
+ type MemberContext = {
43
+ feature: GlFeature;
44
+ block: GlInterfaceBlock;
45
+ kind: GlSymbolKind;
25
46
  };
26
47
 
27
- const applyRequires = (
28
- feature: GlFeature,
29
- selection: GlSelection,
30
- commands: Map<string, string>,
31
- enums: Map<string, string>,
32
- ): void => {
33
- for (const block of feature.requires) {
34
- if (!isBlockApplicable(block, selection)) {
35
- continue;
36
- }
48
+ const isBlockApplicable = (block: GlInterfaceBlock, selection: GlSelection): boolean =>
49
+ (block.profile === undefined || block.profile === selection.profile) &&
50
+ (block.api === undefined || block.api === selection.api);
51
+
52
+ const targetFor = (state: SelectionState, kind: GlSymbolKind): Map<string, GlSymbolProvenance> =>
53
+ kind === "command" ? state.commands : state.enums;
37
54
 
38
- addMissing(commands, block.commands, feature.name);
39
- addMissing(enums, block.enums, feature.name);
55
+ const commentEntry = (comment: string | undefined): { comment?: string } =>
56
+ comment === undefined ? {} : { comment };
57
+
58
+ const requireMember = (state: SelectionState, name: string, context: MemberContext): void => {
59
+ const target = targetFor(state, context.kind);
60
+
61
+ if (target.has(name)) {
62
+ return;
40
63
  }
64
+
65
+ const { block, feature } = context;
66
+
67
+ target.set(name, {
68
+ feature: feature.name,
69
+ ...(block.comment !== undefined && { requireComment: block.comment }),
70
+ removals: [...(state.history.get(name) ?? [])],
71
+ });
41
72
  };
42
73
 
43
- const removeBlock = (block: GlInterfaceBlock, commands: Map<string, string>, enums: Map<string, string>): void => {
44
- for (const name of block.commands) {
45
- commands.delete(name);
46
- }
74
+ const removeMember = (state: SelectionState, name: string, context: MemberContext): void => {
75
+ const { block, feature, kind } = context;
76
+ const removal: GlRemoval = { feature: feature.name, ...commentEntry(block.comment) };
77
+ targetFor(state, kind).delete(name);
78
+ state.history.set(name, [...(state.history.get(name) ?? []), removal]);
79
+ state.removed.push({ name, kind, ...removal });
80
+ };
81
+
82
+ const applyMembers = (state: SelectionState, names: string[], context: MemberContext): void => {
83
+ const apply = context.block.kind === "require" ? requireMember : removeMember;
47
84
 
48
- for (const name of block.enums) {
49
- enums.delete(name);
85
+ for (const name of names) {
86
+ apply(state, name, context);
50
87
  }
51
88
  };
52
89
 
53
- const applyRemoves = (
54
- feature: GlFeature,
55
- selection: GlSelection,
56
- commands: Map<string, string>,
57
- enums: Map<string, string>,
58
- ): void => {
59
- for (const block of feature.removes) {
60
- if (!isBlockApplicable(block, selection)) {
61
- continue;
62
- }
90
+ const applyBlock = (state: SelectionState, feature: GlFeature, block: GlInterfaceBlock): void => {
91
+ applyMembers(state, block.commands, { feature, block, kind: "command" });
92
+ applyMembers(state, block.enums, { feature, block, kind: "enum" });
93
+ };
63
94
 
64
- removeBlock(block, commands, enums);
95
+ const applyFeature = (state: SelectionState, feature: GlFeature, selection: GlSelection): void => {
96
+ for (const block of feature.blocks) {
97
+ if (isBlockApplicable(block, selection)) {
98
+ applyBlock(state, feature, block);
99
+ }
65
100
  }
66
101
  };
67
102
 
@@ -70,22 +105,28 @@ const selectSubset = (registry: GlRegistry, selection: GlSelection): GlSubset =>
70
105
  .filter((feature) => feature.api === selection.api && feature.number <= selection.version)
71
106
  .toSorted((a, b) => a.number - b.number);
72
107
 
73
- const commands: Map<string, string> = new Map();
74
- const enums: Map<string, string> = new Map();
75
-
76
- for (const feature of features) {
77
- applyRequires(feature, selection, commands, enums);
78
- }
108
+ const state: SelectionState = {
109
+ commands: new Map(),
110
+ enums: new Map(),
111
+ removed: [],
112
+ history: new Map(),
113
+ };
79
114
 
80
115
  for (const feature of features) {
81
- applyRemoves(feature, selection, commands, enums);
116
+ applyFeature(state, feature, selection);
82
117
  }
83
118
 
84
- return { commands, enums };
119
+ return {
120
+ commands: state.commands,
121
+ enums: state.enums,
122
+ removed: sortStringsBy(state.removed, (entry) => entry.name),
123
+ };
85
124
  };
86
125
 
87
- const resolveEnum = (registry: GlRegistry, name: string): GlEnum => {
88
- const found = registry.enums.find((candidate) => candidate.name === name);
126
+ const resolveEnum = (registry: GlRegistry, name: string, api: string): GlEnum => {
127
+ const found = registry.enums.find(
128
+ (candidate) => candidate.name === name && (candidate.api === undefined || candidate.api === api),
129
+ );
89
130
 
90
131
  if (found === undefined) {
91
132
  throw new Error(`Enum token ${name} has no definition in the registry`);
@@ -94,4 +135,4 @@ const resolveEnum = (registry: GlRegistry, name: string): GlEnum => {
94
135
  return found;
95
136
  };
96
137
 
97
- export { selectSubset, resolveEnum, type GlSelection };
138
+ export { selectSubset, resolveEnum, type GlRemoval, type GlSelection, type GlSubset, type GlSymbolProvenance };
@@ -2,15 +2,18 @@ import type { ModuleExport } from "@gtkx/react/config";
2
2
  import { readdirSync } from "node:fs";
3
3
  import type { OmittedProps } from "../store/jsx/omitted-props.js";
4
4
 
5
- /** The codegen-relevant subset of a React element config; behaviors are ignored at codegen time. */
6
- type BuiltinElement = { component?: ModuleExport; lazy?: boolean; props?: ModuleExport; omitProps?: string[] };
5
+ type BuiltinElement = { component?: ModuleExport; isLazy?: boolean; props?: ModuleExport; omittedProps?: string[] };
7
6
 
8
7
  /** The framework's built-in element config, split into the maps codegen consumes. */
9
8
  type BuiltinElements = {
9
+ /** Component wrappers keyed by GLib type name; an element without one inherits its nearest ancestor's. */
10
10
  components: Record<string, ModuleExport>;
11
+ /** GLib type names with no GObject of their own, exported as elements that drop their construct-only props. */
11
12
  lazyElements: string[];
13
+ /** Base props interfaces the generated element props extend, keyed by GLib type name. */
12
14
  props: Record<string, ModuleExport>;
13
- omitProps: OmittedProps;
15
+ /** Props left out of the generated element props, keyed by GLib type name. */
16
+ omittedProps: OmittedProps;
14
17
  };
15
18
 
16
19
  const CONFIG_ENTRYPOINT = "config";
@@ -29,10 +32,6 @@ const presentNamespaceDirs = (giStoreDir: string): Set<string> => {
29
32
  return dirs;
30
33
  };
31
34
 
32
- /**
33
- * The clean, reconciler-free `@gtkx/react` config entrypoints to import: the base `config` entry plus
34
- * each namespace's `<ns>/config` entry whose GIR namespace is present in the gi store.
35
- */
36
35
  const configEntrypoints = (reactSubexports: string[], present: Set<string>): string[] =>
37
36
  reactSubexports.filter((sub) => {
38
37
  if (sub === CONFIG_ENTRYPOINT) {
@@ -61,30 +60,34 @@ const applyBuiltinElement = (target: BuiltinElements, type: string, config: Buil
61
60
  target.props[type] = config.props;
62
61
  }
63
62
 
64
- if (config.omitProps !== undefined) {
65
- target.omitProps[type] = [...(target.omitProps[type] ?? []), ...config.omitProps];
63
+ if (config.omittedProps !== undefined) {
64
+ target.omittedProps[type] = [...(target.omittedProps[type] ?? []), ...config.omittedProps];
66
65
  }
67
66
 
68
- if (config.lazy === true) {
67
+ if (config.isLazy === true) {
69
68
  target.lazyElements.push(type);
70
69
  }
71
70
  };
72
71
 
73
- /**
74
- * Reads the framework's built-in element config by importing the freshly linked `@gtkx/react` config
75
- * entrypoints. These are reconciler-free, so importing them resolves `@gtkx/gi` but never `virtual:gtkx-config`;
76
- * it must run only after the gi store has been linked.
77
- */
78
72
  const collectBuiltinElements = (target: BuiltinElements, elements: Record<string, BuiltinElement>): void => {
79
73
  for (const [type, config] of Object.entries(elements)) {
80
74
  applyBuiltinElement(target, type, config);
81
75
  }
82
76
  };
83
77
 
78
+ /**
79
+ * Reads the framework's built-in element config by importing the `config` entrypoints of the installed
80
+ * `@gtkx/react`, skipping the per-namespace ones whose namespace the gi store does not carry. Those
81
+ * entrypoints are reconciler-free, so importing them resolves `@gtkx/gi` but never `virtual:gtkx-config`,
82
+ * which means this must run only after the gi store has been written and linked.
83
+ *
84
+ * @param reactSubexports Subexport names of the installed `@gtkx/react`, as `resolveStore` reports them.
85
+ * @param giStoreDir The gi store directory, whose subdirectories name the generated namespaces.
86
+ */
84
87
  const readBuiltinElements = async (reactSubexports: string[], giStoreDir: string): Promise<BuiltinElements> => {
85
88
  const present = presentNamespaceDirs(giStoreDir);
86
89
  const entrypoints = configEntrypoints(reactSubexports, present);
87
- const result: BuiltinElements = { components: {}, lazyElements: [], props: {}, omitProps: {} };
90
+ const result: BuiltinElements = { components: {}, lazyElements: [], props: {}, omittedProps: {} };
88
91
 
89
92
  for (const entrypoint of entrypoints) {
90
93
  collectBuiltinElements(result, await importBuiltinElements(entrypoint));
@@ -93,5 +96,5 @@ const readBuiltinElements = async (reactSubexports: string[], giStoreDir: string
93
96
  return result;
94
97
  };
95
98
 
96
- export { type ModuleExport } from "@gtkx/react/config";
97
- export { readBuiltinElements, type BuiltinElement, type BuiltinElements };
99
+ export type { ModuleExport } from "@gtkx/react/config";
100
+ export { readBuiltinElements, type BuiltinElements };