@gtkx/codegen 0.21.0 → 1.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (756) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +25 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +420 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +62 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +127 -0
  9. package/dist/analysis/descriptor.js.map +1 -0
  10. package/dist/analysis/inheritance.d.ts +38 -0
  11. package/dist/analysis/inheritance.d.ts.map +1 -0
  12. package/dist/analysis/inheritance.js +248 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +27 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +158 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +20 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +111 -0
  21. package/dist/analysis/ts-type.js.map +1 -0
  22. package/dist/compile.d.ts +18 -0
  23. package/dist/compile.d.ts.map +1 -0
  24. package/dist/compile.js +130 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +67 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +372 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +12 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +156 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +26 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +156 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +34 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +143 -0
  41. package/dist/docs/render.js.map +1 -0
  42. package/dist/docs/symbol-page.d.ts +41 -0
  43. package/dist/docs/symbol-page.d.ts.map +1 -0
  44. package/dist/docs/symbol-page.js +380 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +31 -28
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +84 -19
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gi.d.ts +13 -0
  51. package/dist/gi.d.ts.map +1 -0
  52. package/dist/gi.js +21 -0
  53. package/dist/gi.js.map +1 -0
  54. package/dist/gir/ancestry.d.ts +10 -0
  55. package/dist/gir/ancestry.d.ts.map +1 -0
  56. package/dist/gir/ancestry.js +26 -0
  57. package/dist/gir/ancestry.js.map +1 -0
  58. package/dist/gir/callback.d.ts +8 -14
  59. package/dist/gir/callback.d.ts.map +1 -1
  60. package/dist/gir/callback.js +16 -16
  61. package/dist/gir/callback.js.map +1 -1
  62. package/dist/gir/class.d.ts +25 -44
  63. package/dist/gir/class.d.ts.map +1 -1
  64. package/dist/gir/class.js +16 -26
  65. package/dist/gir/class.js.map +1 -1
  66. package/dist/gir/enum.d.ts +16 -34
  67. package/dist/gir/enum.d.ts.map +1 -1
  68. package/dist/gir/enum.js +10 -16
  69. package/dist/gir/enum.js.map +1 -1
  70. package/dist/gir/field.d.ts +16 -24
  71. package/dist/gir/field.d.ts.map +1 -1
  72. package/dist/gir/field.js +35 -18
  73. package/dist/gir/field.js.map +1 -1
  74. package/dist/gir/function.d.ts +15 -43
  75. package/dist/gir/function.d.ts.map +1 -1
  76. package/dist/gir/function.js +26 -23
  77. package/dist/gir/function.js.map +1 -1
  78. package/dist/gir/gir-path.d.ts +3 -0
  79. package/dist/gir/gir-path.d.ts.map +1 -0
  80. package/dist/gir/gir-path.js +57 -0
  81. package/dist/gir/gir-path.js.map +1 -0
  82. package/dist/gir/libraries.d.ts +5 -0
  83. package/dist/gir/libraries.d.ts.map +1 -0
  84. package/dist/gir/libraries.js +74 -0
  85. package/dist/gir/libraries.js.map +1 -0
  86. package/dist/gir/library.d.ts +43 -0
  87. package/dist/gir/library.d.ts.map +1 -0
  88. package/dist/gir/library.js +242 -0
  89. package/dist/gir/library.js.map +1 -0
  90. package/dist/gir/namespace.d.ts +40 -54
  91. package/dist/gir/namespace.d.ts.map +1 -1
  92. package/dist/gir/namespace.js +51 -40
  93. package/dist/gir/namespace.js.map +1 -1
  94. package/dist/gir/nullable-overrides.d.ts +3 -0
  95. package/dist/gir/nullable-overrides.d.ts.map +1 -0
  96. package/dist/gir/nullable-overrides.js +5 -0
  97. package/dist/gir/nullable-overrides.js.map +1 -0
  98. package/dist/gir/parameter.d.ts +34 -76
  99. package/dist/gir/parameter.d.ts.map +1 -1
  100. package/dist/gir/parameter.js +47 -59
  101. package/dist/gir/parameter.js.map +1 -1
  102. package/dist/gir/parse.d.ts +12 -77
  103. package/dist/gir/parse.d.ts.map +1 -1
  104. package/dist/gir/parse.js +65 -103
  105. package/dist/gir/parse.js.map +1 -1
  106. package/dist/gir/primitives.d.ts +5 -35
  107. package/dist/gir/primitives.d.ts.map +1 -1
  108. package/dist/gir/primitives.js +21 -36
  109. package/dist/gir/primitives.js.map +1 -1
  110. package/dist/gir/property.d.ts +18 -26
  111. package/dist/gir/property.d.ts.map +1 -1
  112. package/dist/gir/property.js +16 -12
  113. package/dist/gir/property.js.map +1 -1
  114. package/dist/gir/record.d.ts +28 -0
  115. package/dist/gir/record.d.ts.map +1 -0
  116. package/dist/gir/record.js +26 -0
  117. package/dist/gir/record.js.map +1 -0
  118. package/dist/gir/size.d.ts +15 -61
  119. package/dist/gir/size.d.ts.map +1 -1
  120. package/dist/gir/size.js +49 -72
  121. package/dist/gir/size.js.map +1 -1
  122. package/dist/gir/type-id.d.ts +51 -0
  123. package/dist/gir/type-id.d.ts.map +1 -0
  124. package/dist/gir/type-id.js +12 -0
  125. package/dist/gir/type-id.js.map +1 -0
  126. package/dist/gir/type-ref.d.ts +4 -77
  127. package/dist/gir/type-ref.d.ts.map +1 -1
  128. package/dist/gir/type-ref.js +58 -77
  129. package/dist/gir/type-ref.js.map +1 -1
  130. package/dist/gir/type.d.ts +34 -0
  131. package/dist/gir/type.d.ts.map +1 -0
  132. package/dist/gir/type.js +2 -0
  133. package/dist/gir/type.js.map +1 -0
  134. package/dist/index.d.ts +7 -11
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +6 -11
  137. package/dist/index.js.map +1 -1
  138. package/dist/jsx.d.ts +26 -0
  139. package/dist/jsx.d.ts.map +1 -0
  140. package/dist/jsx.js +40 -0
  141. package/dist/jsx.js.map +1 -0
  142. package/dist/khronos/args.d.ts +30 -0
  143. package/dist/khronos/args.d.ts.map +1 -0
  144. package/dist/khronos/args.js +171 -0
  145. package/dist/khronos/args.js.map +1 -0
  146. package/dist/khronos/jsdoc.d.ts +21 -0
  147. package/dist/khronos/jsdoc.d.ts.map +1 -0
  148. package/dist/khronos/jsdoc.js +72 -0
  149. package/dist/khronos/jsdoc.js.map +1 -0
  150. package/dist/khronos/model.d.ts +38 -0
  151. package/dist/khronos/model.d.ts.map +1 -0
  152. package/dist/khronos/model.js +167 -0
  153. package/dist/khronos/model.js.map +1 -0
  154. package/dist/khronos/modules.d.ts +12 -0
  155. package/dist/khronos/modules.d.ts.map +1 -0
  156. package/dist/khronos/modules.js +73 -0
  157. package/dist/khronos/modules.js.map +1 -0
  158. package/dist/khronos/param-pair.d.ts +11 -0
  159. package/dist/khronos/param-pair.d.ts.map +1 -0
  160. package/dist/khronos/param-pair.js +6 -0
  161. package/dist/khronos/param-pair.js.map +1 -0
  162. package/dist/khronos/parse.d.ts +8 -0
  163. package/dist/khronos/parse.d.ts.map +1 -0
  164. package/dist/khronos/parse.js +62 -0
  165. package/dist/khronos/parse.js.map +1 -0
  166. package/dist/khronos/pipeline.d.ts +24 -0
  167. package/dist/khronos/pipeline.d.ts.map +1 -0
  168. package/dist/khronos/pipeline.js +223 -0
  169. package/dist/khronos/pipeline.js.map +1 -0
  170. package/dist/khronos/plan.d.ts +81 -0
  171. package/dist/khronos/plan.d.ts.map +1 -0
  172. package/dist/khronos/plan.js +200 -0
  173. package/dist/khronos/plan.js.map +1 -0
  174. package/dist/khronos/render.d.ts +17 -0
  175. package/dist/khronos/render.d.ts.map +1 -0
  176. package/dist/khronos/render.js +205 -0
  177. package/dist/khronos/render.js.map +1 -0
  178. package/dist/khronos/select.d.ts +15 -0
  179. package/dist/khronos/select.d.ts.map +1 -0
  180. package/dist/khronos/select.js +56 -0
  181. package/dist/khronos/select.js.map +1 -0
  182. package/dist/react/element-config.d.ts +17 -0
  183. package/dist/react/element-config.d.ts.map +1 -0
  184. package/dist/react/element-config.js +61 -0
  185. package/dist/react/element-config.js.map +1 -0
  186. package/dist/runner.d.ts +38 -49
  187. package/dist/runner.d.ts.map +1 -1
  188. package/dist/runner.js +81 -54
  189. package/dist/runner.js.map +1 -1
  190. package/dist/store/compile-store.d.ts +11 -0
  191. package/dist/store/compile-store.d.ts.map +1 -0
  192. package/dist/store/compile-store.js +40 -0
  193. package/dist/store/compile-store.js.map +1 -0
  194. package/dist/store/gi/async.d.ts +5 -0
  195. package/dist/store/gi/async.d.ts.map +1 -0
  196. package/dist/store/gi/async.js +45 -0
  197. package/dist/store/gi/async.js.map +1 -0
  198. package/dist/store/gi/callables.d.ts +42 -0
  199. package/dist/store/gi/callables.d.ts.map +1 -0
  200. package/dist/store/gi/callables.js +264 -0
  201. package/dist/store/gi/callables.js.map +1 -0
  202. package/dist/store/gi/callback.d.ts +5 -0
  203. package/dist/store/gi/callback.d.ts.map +1 -0
  204. package/dist/store/gi/callback.js +17 -0
  205. package/dist/store/gi/callback.js.map +1 -0
  206. package/dist/store/gi/class-struct-record.d.ts +10 -0
  207. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  208. package/dist/store/gi/class-struct-record.js +52 -0
  209. package/dist/store/gi/class-struct-record.js.map +1 -0
  210. package/dist/store/gi/class.d.ts +5 -0
  211. package/dist/store/gi/class.d.ts.map +1 -0
  212. package/dist/store/gi/class.js +208 -0
  213. package/dist/store/gi/class.js.map +1 -0
  214. package/dist/store/gi/companion.d.ts +5 -0
  215. package/dist/store/gi/companion.d.ts.map +1 -0
  216. package/dist/store/gi/companion.js +16 -0
  217. package/dist/store/gi/companion.js.map +1 -0
  218. package/dist/store/gi/constant.d.ts +6 -0
  219. package/dist/store/gi/constant.d.ts.map +1 -0
  220. package/dist/store/gi/constant.js +35 -0
  221. package/dist/store/gi/constant.js.map +1 -0
  222. package/dist/store/gi/constructor-props.d.ts +6 -0
  223. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  224. package/dist/store/gi/constructor-props.js +71 -0
  225. package/dist/store/gi/constructor-props.js.map +1 -0
  226. package/dist/store/gi/enum.d.ts +6 -0
  227. package/dist/store/gi/enum.d.ts.map +1 -0
  228. package/dist/store/gi/enum.js +41 -0
  229. package/dist/store/gi/enum.js.map +1 -0
  230. package/dist/store/gi/function.d.ts +9 -0
  231. package/dist/store/gi/function.d.ts.map +1 -0
  232. package/dist/store/gi/function.js +114 -0
  233. package/dist/store/gi/function.js.map +1 -0
  234. package/dist/store/gi/gtype-binding.d.ts +10 -0
  235. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  236. package/dist/store/gi/gtype-binding.js +24 -0
  237. package/dist/store/gi/gtype-binding.js.map +1 -0
  238. package/dist/store/gi/interface.d.ts +5 -0
  239. package/dist/store/gi/interface.d.ts.map +1 -0
  240. package/dist/store/gi/interface.js +117 -0
  241. package/dist/store/gi/interface.js.map +1 -0
  242. package/dist/store/gi/item-comparators.d.ts +7 -0
  243. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  244. package/dist/store/gi/item-comparators.js +88 -0
  245. package/dist/store/gi/item-comparators.js.map +1 -0
  246. package/dist/store/gi/method.d.ts +24 -0
  247. package/dist/store/gi/method.d.ts.map +1 -0
  248. package/dist/store/gi/method.js +336 -0
  249. package/dist/store/gi/method.js.map +1 -0
  250. package/dist/store/gi/param-marshal.d.ts +10 -0
  251. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  252. package/dist/store/gi/param-marshal.js +50 -0
  253. package/dist/store/gi/param-marshal.js.map +1 -0
  254. package/dist/store/gi/pipeline.d.ts +5 -0
  255. package/dist/store/gi/pipeline.d.ts.map +1 -0
  256. package/dist/store/gi/pipeline.js +95 -0
  257. package/dist/store/gi/pipeline.js.map +1 -0
  258. package/dist/store/gi/properties.d.ts +6 -0
  259. package/dist/store/gi/properties.d.ts.map +1 -0
  260. package/dist/store/gi/properties.js +32 -0
  261. package/dist/store/gi/properties.js.map +1 -0
  262. package/dist/store/gi/property-accessor.d.ts +27 -0
  263. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  264. package/dist/store/gi/property-accessor.js +158 -0
  265. package/dist/store/gi/property-accessor.js.map +1 -0
  266. package/dist/store/gi/record-constructor.d.ts +6 -0
  267. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  268. package/dist/store/gi/record-constructor.js +76 -0
  269. package/dist/store/gi/record-constructor.js.map +1 -0
  270. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  271. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  272. package/dist/store/gi/record-field-accessor.js +360 -0
  273. package/dist/store/gi/record-field-accessor.js.map +1 -0
  274. package/dist/store/gi/record-layout.d.ts +15 -0
  275. package/dist/store/gi/record-layout.d.ts.map +1 -0
  276. package/dist/store/gi/record-layout.js +132 -0
  277. package/dist/store/gi/record-layout.js.map +1 -0
  278. package/dist/store/gi/record.d.ts +5 -0
  279. package/dist/store/gi/record.d.ts.map +1 -0
  280. package/dist/store/gi/record.js +65 -0
  281. package/dist/store/gi/record.js.map +1 -0
  282. package/dist/store/gi/registration.d.ts +16 -0
  283. package/dist/store/gi/registration.d.ts.map +1 -0
  284. package/dist/store/gi/registration.js +21 -0
  285. package/dist/store/gi/registration.js.map +1 -0
  286. package/dist/store/gi/return-wrap.d.ts +10 -0
  287. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  288. package/dist/store/gi/return-wrap.js +67 -0
  289. package/dist/store/gi/return-wrap.js.map +1 -0
  290. package/dist/store/gi/runtime-override.d.ts +4 -0
  291. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  292. package/dist/store/gi/runtime-override.js +32 -0
  293. package/dist/store/gi/runtime-override.js.map +1 -0
  294. package/dist/store/gi/signal.d.ts +6 -0
  295. package/dist/store/gi/signal.d.ts.map +1 -0
  296. package/dist/store/gi/signal.js +280 -0
  297. package/dist/store/gi/signal.js.map +1 -0
  298. package/dist/store/gi/vtable.d.ts +5 -0
  299. package/dist/store/gi/vtable.d.ts.map +1 -0
  300. package/dist/store/gi/vtable.js +108 -0
  301. package/dist/store/gi/vtable.js.map +1 -0
  302. package/dist/store/gi-store.d.ts +10 -0
  303. package/dist/store/gi-store.d.ts.map +1 -0
  304. package/dist/store/gi-store.js +59 -0
  305. package/dist/store/gi-store.js.map +1 -0
  306. package/dist/store/jsx/element-components.d.ts +23 -0
  307. package/dist/store/jsx/element-components.d.ts.map +1 -0
  308. package/dist/store/jsx/element-components.js +86 -0
  309. package/dist/store/jsx/element-components.js.map +1 -0
  310. package/dist/store/jsx/element-prop-imports.d.ts +17 -0
  311. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
  312. package/dist/store/jsx/element-prop-imports.js +15 -0
  313. package/dist/store/jsx/element-prop-imports.js.map +1 -0
  314. package/dist/store/jsx/element-prop-types.d.ts +10 -0
  315. package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
  316. package/dist/store/jsx/element-prop-types.js +41 -0
  317. package/dist/store/jsx/element-prop-types.js.map +1 -0
  318. package/dist/store/jsx/gir-index.d.ts +16 -0
  319. package/dist/store/jsx/gir-index.d.ts.map +1 -0
  320. package/dist/store/jsx/gir-index.js +33 -0
  321. package/dist/store/jsx/gir-index.js.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
  323. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  324. package/dist/store/jsx/intrinsic-elements.js +128 -0
  325. package/dist/store/jsx/intrinsic-elements.js.map +1 -0
  326. package/dist/store/jsx/jsx.d.ts +16 -0
  327. package/dist/store/jsx/jsx.d.ts.map +1 -0
  328. package/dist/store/jsx/jsx.js +242 -0
  329. package/dist/store/jsx/jsx.js.map +1 -0
  330. package/dist/store/jsx/metadata.d.ts +4 -0
  331. package/dist/store/jsx/metadata.d.ts.map +1 -0
  332. package/dist/store/jsx/metadata.js +253 -0
  333. package/dist/store/jsx/metadata.js.map +1 -0
  334. package/dist/store/jsx/pipeline.d.ts +21 -0
  335. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  336. package/dist/store/jsx/pipeline.js +81 -0
  337. package/dist/store/jsx/pipeline.js.map +1 -0
  338. package/dist/store/jsx/props.d.ts +33 -0
  339. package/dist/store/jsx/props.d.ts.map +1 -0
  340. package/dist/store/jsx/props.js +158 -0
  341. package/dist/store/jsx/props.js.map +1 -0
  342. package/dist/store/jsx-store.d.ts +7 -0
  343. package/dist/store/jsx-store.d.ts.map +1 -0
  344. package/dist/store/jsx-store.js +26 -0
  345. package/dist/store/jsx-store.js.map +1 -0
  346. package/dist/store/store-fs.d.ts +43 -0
  347. package/dist/store/store-fs.d.ts.map +1 -0
  348. package/dist/store/store-fs.js +73 -0
  349. package/dist/store/store-fs.js.map +1 -0
  350. package/dist/writer/context.d.ts +17 -0
  351. package/dist/writer/context.d.ts.map +1 -0
  352. package/dist/writer/context.js +50 -0
  353. package/dist/writer/context.js.map +1 -0
  354. package/dist/writer/doc.d.ts +3 -0
  355. package/dist/writer/doc.d.ts.map +1 -0
  356. package/dist/writer/doc.js +18 -0
  357. package/dist/writer/doc.js.map +1 -0
  358. package/dist/writer/emit.d.ts +9 -0
  359. package/dist/writer/emit.d.ts.map +1 -0
  360. package/dist/writer/emit.js +24 -0
  361. package/dist/writer/emit.js.map +1 -0
  362. package/dist/writer/gtk-doc.d.ts +3 -0
  363. package/dist/writer/gtk-doc.d.ts.map +1 -0
  364. package/dist/writer/gtk-doc.js +78 -0
  365. package/dist/writer/gtk-doc.js.map +1 -0
  366. package/dist/writer/imports.d.ts +12 -0
  367. package/dist/writer/imports.d.ts.map +1 -0
  368. package/dist/writer/imports.js +61 -0
  369. package/dist/writer/imports.js.map +1 -0
  370. package/dist/writer/module.d.ts +16 -0
  371. package/dist/writer/module.d.ts.map +1 -0
  372. package/dist/writer/module.js +53 -0
  373. package/dist/writer/module.js.map +1 -0
  374. package/dist/xml.d.ts +4 -0
  375. package/dist/xml.d.ts.map +1 -0
  376. package/dist/xml.js +10 -0
  377. package/dist/xml.js.map +1 -0
  378. package/overrides/cairo/context.ts.ejs +1269 -0
  379. package/overrides/cairo/font-face.ts.ejs +151 -0
  380. package/overrides/cairo/font-options.ts.ejs +199 -0
  381. package/overrides/cairo/image-surface.ts.ejs +132 -0
  382. package/overrides/cairo/index.ts.ejs +22 -0
  383. package/overrides/cairo/matrix.ts.ejs +171 -0
  384. package/overrides/cairo/pattern.ts.ejs +476 -0
  385. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  386. package/overrides/cairo/region.ts.ejs +237 -0
  387. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  388. package/overrides/cairo/surface.ts.ejs +296 -0
  389. package/overrides/gdk/index.ts.ejs +2 -0
  390. package/overrides/gdk/rgba.ts.ejs +11 -0
  391. package/overrides/gobject/index.ts.ejs +29 -0
  392. package/overrides/gobject/object.ts.ejs +51 -0
  393. package/overrides/gobject/value.ts.ejs +17 -0
  394. package/overrides/graphene/index.ts.ejs +2 -0
  395. package/overrides/graphene/structs.ts.ejs +37 -0
  396. package/package.json +21 -15
  397. package/src/analysis/descriptor-render.ts +723 -0
  398. package/src/analysis/descriptor.ts +300 -0
  399. package/src/analysis/inheritance.ts +430 -0
  400. package/src/analysis/param-structure.ts +258 -0
  401. package/src/analysis/ts-type.ts +174 -0
  402. package/src/compile.ts +179 -0
  403. package/src/docs/api-reference.ts +557 -0
  404. package/src/docs/element-page.ts +281 -0
  405. package/src/docs/pipeline.ts +241 -0
  406. package/src/docs/render.ts +255 -0
  407. package/src/docs/symbol-page.ts +589 -0
  408. package/src/fingerprint.ts +144 -35
  409. package/src/gi.ts +26 -0
  410. package/src/gir/ancestry.ts +53 -0
  411. package/src/gir/callback.ts +22 -24
  412. package/src/gir/class.ts +39 -61
  413. package/src/gir/enum.ts +25 -41
  414. package/src/gir/field.ts +51 -37
  415. package/src/gir/function.ts +44 -59
  416. package/src/gir/gir-path.ts +73 -0
  417. package/src/gir/libraries.ts +102 -0
  418. package/src/gir/library.ts +351 -0
  419. package/src/gir/namespace.ts +109 -88
  420. package/src/gir/nullable-overrides.ts +5 -0
  421. package/src/gir/parameter.ts +111 -102
  422. package/src/gir/parse.ts +124 -121
  423. package/src/gir/primitives.ts +43 -63
  424. package/src/gir/property.ts +33 -33
  425. package/src/gir/record.ts +55 -0
  426. package/src/gir/size.ts +93 -107
  427. package/src/gir/type-id.ts +64 -0
  428. package/src/gir/type-ref.ts +77 -146
  429. package/src/gir/type.ts +18 -0
  430. package/src/index.ts +27 -15
  431. package/src/jsx.ts +70 -0
  432. package/src/khronos/args.ts +271 -0
  433. package/src/khronos/jsdoc.ts +114 -0
  434. package/src/khronos/model.ts +267 -0
  435. package/src/khronos/modules.ts +115 -0
  436. package/src/khronos/param-pair.ts +14 -0
  437. package/src/khronos/parse.ts +86 -0
  438. package/src/khronos/pipeline.ts +337 -0
  439. package/src/khronos/plan.ts +340 -0
  440. package/src/khronos/registry/LICENSE +202 -0
  441. package/src/khronos/registry/gl.xml +47748 -0
  442. package/src/khronos/render.ts +330 -0
  443. package/src/khronos/select.ts +97 -0
  444. package/src/react/element-config.ts +91 -0
  445. package/src/runner.ts +153 -80
  446. package/src/store/compile-store.ts +55 -0
  447. package/src/store/gi/async.ts +69 -0
  448. package/src/store/gi/callables.ts +518 -0
  449. package/src/store/gi/callback.ts +24 -0
  450. package/src/store/gi/class-struct-record.ts +72 -0
  451. package/src/store/gi/class.ts +334 -0
  452. package/src/store/gi/companion.ts +22 -0
  453. package/src/store/gi/constant.ts +58 -0
  454. package/src/store/gi/constructor-props.ts +108 -0
  455. package/src/store/gi/enum.ts +64 -0
  456. package/src/store/gi/function.ts +173 -0
  457. package/src/store/gi/gtype-binding.ts +46 -0
  458. package/src/store/gi/interface.ts +222 -0
  459. package/src/store/gi/item-comparators.ts +138 -0
  460. package/src/store/gi/method.ts +634 -0
  461. package/src/store/gi/param-marshal.ts +71 -0
  462. package/src/store/gi/pipeline.ts +135 -0
  463. package/src/store/gi/properties.ts +50 -0
  464. package/src/store/gi/property-accessor.ts +302 -0
  465. package/src/store/gi/record-constructor.ts +119 -0
  466. package/src/store/gi/record-field-accessor.ts +607 -0
  467. package/src/store/gi/record-layout.ts +221 -0
  468. package/src/store/gi/record.ts +89 -0
  469. package/src/store/gi/registration.ts +44 -0
  470. package/src/store/gi/return-wrap.ts +100 -0
  471. package/src/store/gi/runtime-override.ts +46 -0
  472. package/src/store/gi/signal.ts +450 -0
  473. package/src/store/gi/vtable.ts +175 -0
  474. package/src/store/gi-store.ts +92 -0
  475. package/src/store/jsx/element-components.ts +152 -0
  476. package/src/store/jsx/element-prop-imports.ts +24 -0
  477. package/src/store/jsx/element-prop-types.ts +59 -0
  478. package/src/store/jsx/gir-index.ts +62 -0
  479. package/src/store/jsx/intrinsic-elements.ts +262 -0
  480. package/src/store/jsx/jsx.ts +408 -0
  481. package/src/store/jsx/metadata.ts +385 -0
  482. package/src/store/jsx/pipeline.ts +145 -0
  483. package/src/store/jsx/props.ts +274 -0
  484. package/src/store/jsx-store.ts +39 -0
  485. package/src/store/store-fs.ts +128 -0
  486. package/src/writer/context.ts +67 -0
  487. package/src/writer/doc.ts +25 -0
  488. package/src/writer/emit.ts +35 -0
  489. package/src/writer/gtk-doc.ts +101 -0
  490. package/src/writer/imports.ts +94 -0
  491. package/src/writer/module.ts +69 -0
  492. package/src/xml.ts +12 -0
  493. package/LICENSE +0 -373
  494. package/dist/dsl/context.d.ts +0 -104
  495. package/dist/dsl/context.d.ts.map +0 -1
  496. package/dist/dsl/context.js +0 -140
  497. package/dist/dsl/context.js.map +0 -1
  498. package/dist/dsl/emit.d.ts +0 -28
  499. package/dist/dsl/emit.d.ts.map +0 -1
  500. package/dist/dsl/emit.js +0 -41
  501. package/dist/dsl/emit.js.map +0 -1
  502. package/dist/dsl/identifier.d.ts +0 -28
  503. package/dist/dsl/identifier.d.ts.map +0 -1
  504. package/dist/dsl/identifier.js +0 -45
  505. package/dist/dsl/identifier.js.map +0 -1
  506. package/dist/dsl/imports.d.ts +0 -58
  507. package/dist/dsl/imports.d.ts.map +0 -1
  508. package/dist/dsl/imports.js +0 -107
  509. package/dist/dsl/imports.js.map +0 -1
  510. package/dist/dsl/module.d.ts +0 -53
  511. package/dist/dsl/module.d.ts.map +0 -1
  512. package/dist/dsl/module.js +0 -76
  513. package/dist/dsl/module.js.map +0 -1
  514. package/dist/ffi/pipeline.d.ts +0 -19
  515. package/dist/ffi/pipeline.d.ts.map +0 -1
  516. package/dist/ffi/pipeline.js +0 -107
  517. package/dist/ffi/pipeline.js.map +0 -1
  518. package/dist/gi-store.d.ts +0 -34
  519. package/dist/gi-store.d.ts.map +0 -1
  520. package/dist/gi-store.js +0 -154
  521. package/dist/gi-store.js.map +0 -1
  522. package/dist/gir/boxed.d.ts +0 -66
  523. package/dist/gir/boxed.d.ts.map +0 -1
  524. package/dist/gir/boxed.js +0 -49
  525. package/dist/gir/boxed.js.map +0 -1
  526. package/dist/gir/qualified-name.d.ts +0 -37
  527. package/dist/gir/qualified-name.d.ts.map +0 -1
  528. package/dist/gir/qualified-name.js +0 -39
  529. package/dist/gir/qualified-name.js.map +0 -1
  530. package/dist/gir/qualify.d.ts +0 -32
  531. package/dist/gir/qualify.d.ts.map +0 -1
  532. package/dist/gir/qualify.js +0 -60
  533. package/dist/gir/qualify.js.map +0 -1
  534. package/dist/gir/repository.d.ts +0 -82
  535. package/dist/gir/repository.d.ts.map +0 -1
  536. package/dist/gir/repository.js +0 -122
  537. package/dist/gir/repository.js.map +0 -1
  538. package/dist/gir/signal.d.ts +0 -22
  539. package/dist/gir/signal.d.ts.map +0 -1
  540. package/dist/gir/signal.js +0 -20
  541. package/dist/gir/signal.js.map +0 -1
  542. package/dist/jsx-store.d.ts +0 -22
  543. package/dist/jsx-store.d.ts.map +0 -1
  544. package/dist/jsx-store.js +0 -40
  545. package/dist/jsx-store.js.map +0 -1
  546. package/dist/react/compounds-meta.d.ts +0 -18
  547. package/dist/react/compounds-meta.d.ts.map +0 -1
  548. package/dist/react/compounds-meta.js +0 -93
  549. package/dist/react/compounds-meta.js.map +0 -1
  550. package/dist/react/compounds.d.ts +0 -27
  551. package/dist/react/compounds.d.ts.map +0 -1
  552. package/dist/react/compounds.js +0 -164
  553. package/dist/react/compounds.js.map +0 -1
  554. package/dist/react/internal.d.ts +0 -14
  555. package/dist/react/internal.d.ts.map +0 -1
  556. package/dist/react/internal.js +0 -79
  557. package/dist/react/internal.js.map +0 -1
  558. package/dist/react/jsx.d.ts +0 -22
  559. package/dist/react/jsx.d.ts.map +0 -1
  560. package/dist/react/jsx.js +0 -134
  561. package/dist/react/jsx.js.map +0 -1
  562. package/dist/react/pipeline.d.ts +0 -13
  563. package/dist/react/pipeline.d.ts.map +0 -1
  564. package/dist/react/pipeline.js +0 -25
  565. package/dist/react/pipeline.js.map +0 -1
  566. package/dist/react/props.d.ts +0 -38
  567. package/dist/react/props.d.ts.map +0 -1
  568. package/dist/react/props.js +0 -231
  569. package/dist/react/props.js.map +0 -1
  570. package/dist/react/slot-props.d.ts +0 -10
  571. package/dist/react/slot-props.d.ts.map +0 -1
  572. package/dist/react/slot-props.js +0 -56
  573. package/dist/react/slot-props.js.map +0 -1
  574. package/dist/react/widgets.d.ts +0 -83
  575. package/dist/react/widgets.d.ts.map +0 -1
  576. package/dist/react/widgets.js +0 -152
  577. package/dist/react/widgets.js.map +0 -1
  578. package/dist/store-fs.d.ts +0 -109
  579. package/dist/store-fs.d.ts.map +0 -1
  580. package/dist/store-fs.js +0 -98
  581. package/dist/store-fs.js.map +0 -1
  582. package/dist/transpile.d.ts +0 -32
  583. package/dist/transpile.d.ts.map +0 -1
  584. package/dist/transpile.js +0 -63
  585. package/dist/transpile.js.map +0 -1
  586. package/dist/typecheck-store.d.ts +0 -41
  587. package/dist/typecheck-store.d.ts.map +0 -1
  588. package/dist/typecheck-store.js +0 -102
  589. package/dist/typecheck-store.js.map +0 -1
  590. package/dist/writers/alias.d.ts +0 -13
  591. package/dist/writers/alias.d.ts.map +0 -1
  592. package/dist/writers/alias.js +0 -17
  593. package/dist/writers/alias.js.map +0 -1
  594. package/dist/writers/async.d.ts +0 -22
  595. package/dist/writers/async.d.ts.map +0 -1
  596. package/dist/writers/async.js +0 -48
  597. package/dist/writers/async.js.map +0 -1
  598. package/dist/writers/boxed-constructor.d.ts +0 -26
  599. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  600. package/dist/writers/boxed-constructor.js +0 -85
  601. package/dist/writers/boxed-constructor.js.map +0 -1
  602. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  603. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  604. package/dist/writers/boxed-field-accessor.js +0 -260
  605. package/dist/writers/boxed-field-accessor.js.map +0 -1
  606. package/dist/writers/boxed-layout.d.ts +0 -27
  607. package/dist/writers/boxed-layout.d.ts.map +0 -1
  608. package/dist/writers/boxed-layout.js +0 -128
  609. package/dist/writers/boxed-layout.js.map +0 -1
  610. package/dist/writers/boxed.d.ts +0 -20
  611. package/dist/writers/boxed.d.ts.map +0 -1
  612. package/dist/writers/boxed.js +0 -71
  613. package/dist/writers/boxed.js.map +0 -1
  614. package/dist/writers/callables.d.ts +0 -124
  615. package/dist/writers/callables.d.ts.map +0 -1
  616. package/dist/writers/callables.js +0 -283
  617. package/dist/writers/callables.js.map +0 -1
  618. package/dist/writers/callback.d.ts +0 -16
  619. package/dist/writers/callback.d.ts.map +0 -1
  620. package/dist/writers/callback.js +0 -38
  621. package/dist/writers/callback.js.map +0 -1
  622. package/dist/writers/class-struct-record.d.ts +0 -31
  623. package/dist/writers/class-struct-record.d.ts.map +0 -1
  624. package/dist/writers/class-struct-record.js +0 -67
  625. package/dist/writers/class-struct-record.js.map +0 -1
  626. package/dist/writers/class-struct.d.ts +0 -22
  627. package/dist/writers/class-struct.d.ts.map +0 -1
  628. package/dist/writers/class-struct.js +0 -85
  629. package/dist/writers/class-struct.js.map +0 -1
  630. package/dist/writers/class.d.ts +0 -16
  631. package/dist/writers/class.d.ts.map +0 -1
  632. package/dist/writers/class.js +0 -307
  633. package/dist/writers/class.js.map +0 -1
  634. package/dist/writers/constant.d.ts +0 -15
  635. package/dist/writers/constant.d.ts.map +0 -1
  636. package/dist/writers/constant.js +0 -23
  637. package/dist/writers/constant.js.map +0 -1
  638. package/dist/writers/constants.d.ts +0 -15
  639. package/dist/writers/constants.d.ts.map +0 -1
  640. package/dist/writers/constants.js +0 -23
  641. package/dist/writers/constants.js.map +0 -1
  642. package/dist/writers/constructor-props.d.ts +0 -32
  643. package/dist/writers/constructor-props.d.ts.map +0 -1
  644. package/dist/writers/constructor-props.js +0 -110
  645. package/dist/writers/constructor-props.js.map +0 -1
  646. package/dist/writers/enum.d.ts +0 -21
  647. package/dist/writers/enum.d.ts.map +0 -1
  648. package/dist/writers/enum.js +0 -48
  649. package/dist/writers/enum.js.map +0 -1
  650. package/dist/writers/function.d.ts +0 -40
  651. package/dist/writers/function.d.ts.map +0 -1
  652. package/dist/writers/function.js +0 -127
  653. package/dist/writers/function.js.map +0 -1
  654. package/dist/writers/gtype-binding.d.ts +0 -19
  655. package/dist/writers/gtype-binding.d.ts.map +0 -1
  656. package/dist/writers/gtype-binding.js +0 -40
  657. package/dist/writers/gtype-binding.js.map +0 -1
  658. package/dist/writers/inheritance.d.ts +0 -48
  659. package/dist/writers/inheritance.d.ts.map +0 -1
  660. package/dist/writers/inheritance.js +0 -90
  661. package/dist/writers/inheritance.js.map +0 -1
  662. package/dist/writers/interface.d.ts +0 -16
  663. package/dist/writers/interface.d.ts.map +0 -1
  664. package/dist/writers/interface.js +0 -155
  665. package/dist/writers/interface.js.map +0 -1
  666. package/dist/writers/method.d.ts +0 -150
  667. package/dist/writers/method.d.ts.map +0 -1
  668. package/dist/writers/method.js +0 -510
  669. package/dist/writers/method.js.map +0 -1
  670. package/dist/writers/param-classify.d.ts +0 -93
  671. package/dist/writers/param-classify.d.ts.map +0 -1
  672. package/dist/writers/param-classify.js +0 -163
  673. package/dist/writers/param-classify.js.map +0 -1
  674. package/dist/writers/property-accessor.d.ts +0 -19
  675. package/dist/writers/property-accessor.d.ts.map +0 -1
  676. package/dist/writers/property-accessor.js +0 -117
  677. package/dist/writers/property-accessor.js.map +0 -1
  678. package/dist/writers/registration.d.ts +0 -27
  679. package/dist/writers/registration.d.ts.map +0 -1
  680. package/dist/writers/registration.js +0 -30
  681. package/dist/writers/registration.js.map +0 -1
  682. package/dist/writers/return-wrap.d.ts +0 -39
  683. package/dist/writers/return-wrap.d.ts.map +0 -1
  684. package/dist/writers/return-wrap.js +0 -152
  685. package/dist/writers/return-wrap.js.map +0 -1
  686. package/dist/writers/runtime-override.d.ts +0 -18
  687. package/dist/writers/runtime-override.d.ts.map +0 -1
  688. package/dist/writers/runtime-override.js +0 -44
  689. package/dist/writers/runtime-override.js.map +0 -1
  690. package/dist/writers/signal.d.ts +0 -21
  691. package/dist/writers/signal.d.ts.map +0 -1
  692. package/dist/writers/signal.js +0 -260
  693. package/dist/writers/signal.js.map +0 -1
  694. package/dist/writers/ts-type.d.ts +0 -50
  695. package/dist/writers/ts-type.d.ts.map +0 -1
  696. package/dist/writers/ts-type.js +0 -75
  697. package/dist/writers/ts-type.js.map +0 -1
  698. package/dist/writers/types-ts.d.ts +0 -27
  699. package/dist/writers/types-ts.d.ts.map +0 -1
  700. package/dist/writers/types-ts.js +0 -97
  701. package/dist/writers/types-ts.js.map +0 -1
  702. package/dist/writers/value.d.ts +0 -89
  703. package/dist/writers/value.d.ts.map +0 -1
  704. package/dist/writers/value.js +0 -402
  705. package/dist/writers/value.js.map +0 -1
  706. package/src/dsl/context.ts +0 -146
  707. package/src/dsl/emit.ts +0 -42
  708. package/src/dsl/identifier.ts +0 -52
  709. package/src/dsl/imports.ts +0 -109
  710. package/src/dsl/module.ts +0 -75
  711. package/src/ffi/pipeline.ts +0 -113
  712. package/src/gi-store.ts +0 -199
  713. package/src/gir/boxed.ts +0 -94
  714. package/src/gir/qualified-name.ts +0 -55
  715. package/src/gir/qualify.ts +0 -64
  716. package/src/gir/repository.ts +0 -149
  717. package/src/gir/signal.ts +0 -36
  718. package/src/jsx-store.ts +0 -53
  719. package/src/react/compounds-meta.ts +0 -99
  720. package/src/react/compounds.ts +0 -204
  721. package/src/react/internal.ts +0 -91
  722. package/src/react/jsx.ts +0 -155
  723. package/src/react/pipeline.ts +0 -29
  724. package/src/react/props.ts +0 -307
  725. package/src/react/slot-props.ts +0 -57
  726. package/src/react/widgets.ts +0 -185
  727. package/src/store-fs.ts +0 -157
  728. package/src/transpile.ts +0 -80
  729. package/src/typecheck-store.ts +0 -136
  730. package/src/writers/alias.ts +0 -19
  731. package/src/writers/async.ts +0 -44
  732. package/src/writers/boxed-constructor.ts +0 -105
  733. package/src/writers/boxed-field-accessor.ts +0 -306
  734. package/src/writers/boxed-layout.ts +0 -166
  735. package/src/writers/boxed.ts +0 -77
  736. package/src/writers/callables.ts +0 -339
  737. package/src/writers/callback.ts +0 -40
  738. package/src/writers/class-struct-record.ts +0 -75
  739. package/src/writers/class-struct.ts +0 -96
  740. package/src/writers/class.ts +0 -384
  741. package/src/writers/constant.ts +0 -29
  742. package/src/writers/constructor-props.ts +0 -130
  743. package/src/writers/enum.ts +0 -53
  744. package/src/writers/function.ts +0 -136
  745. package/src/writers/gtype-binding.ts +0 -48
  746. package/src/writers/inheritance.ts +0 -104
  747. package/src/writers/interface.ts +0 -168
  748. package/src/writers/method.ts +0 -678
  749. package/src/writers/param-classify.ts +0 -178
  750. package/src/writers/property-accessor.ts +0 -139
  751. package/src/writers/registration.ts +0 -42
  752. package/src/writers/return-wrap.ts +0 -180
  753. package/src/writers/runtime-override.ts +0 -59
  754. package/src/writers/signal.ts +0 -318
  755. package/src/writers/ts-type.ts +0 -115
  756. package/src/writers/value.ts +0 -485
@@ -1,50 +1,159 @@
1
+ import { sortStrings } from "@gtkx/utils";
1
2
  import { createHash } from "node:crypto";
2
- import { readFileSync } from "node:fs";
3
+ import { type Dirent, existsSync, readdirSync, readFileSync } from "node:fs";
3
4
  import { createRequire } from "node:module";
5
+ import { dirname, join, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ /** The freshness sentinel of the `@gtkx/gi` store, derived purely from the GIR inputs. */
9
+ type GiFingerprint = {
10
+ value: string;
11
+ girFiles: string[];
12
+ libraries: string[];
13
+ girPath?: string[];
14
+ };
15
+
16
+ type ModuleExport = { module: string; export: string };
17
+
18
+ /** The `@gtkx/react` element config that shapes the generated `@gtkx/jsx` store. */
19
+ type JsxFingerprintInput = {
20
+ reactVersion: string;
21
+ components: Record<string, ModuleExport>;
22
+ lazyElements: string[];
23
+ props: Record<string, ModuleExport>;
24
+ };
25
+
26
+ /** The freshness sentinel of the `@gtkx/jsx` store, derived from the React element config. */
27
+ type JsxFingerprint = {
28
+ value: string;
29
+ intrinsicElementCount: number;
30
+ };
4
31
 
5
32
  const require = createRequire(import.meta.url);
33
+ const FINGERPRINT_FILENAME = ".codegen-fingerprint.json";
34
+ const CODEGEN_VERSION: string = (require("../package.json") as { version: string }).version;
35
+ const OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "overrides");
36
+
37
+ const sortAlpha = (values: string[]): string => sortStrings(values).join(",");
6
38
 
7
- /** Filename of the staleness sentinel written into the `@gtkx/gi` store root. */
8
- export const FINGERPRINT_FILENAME = ".codegen-fingerprint.json";
9
-
10
- /**
11
- * The `@gtkx/codegen` package version, mixed into the store fingerprint so a
12
- * codegen upgrade invalidates a previously-generated store.
13
- */
14
- export const CODEGEN_VERSION: string = (require("../package.json") as { version: string }).version;
15
-
16
- /**
17
- * The staleness sentinel written into the generated `@gtkx/gi` store: the
18
- * fingerprint value plus the inputs that produced it, so a consumer can
19
- * recompute and compare without reloading the GIR repository.
20
- */
21
- export type CodegenFingerprint = {
22
- /** The fingerprint hash of {@link CODEGEN_VERSION}, libraries, and GIR contents. */
23
- readonly value: string;
24
- /** Absolute paths of every loaded `.gir` file, in load order. */
25
- readonly girFiles: readonly string[];
26
- /** The resolved `Name-Version` library identifiers the store was built for. */
27
- readonly libraries: readonly string[];
28
- };
29
-
30
- /**
31
- * Computes a content fingerprint over the codegen version, the resolved library
32
- * set, and the contents of every loaded GIR file. A change to any of these
33
- * means the generated bindings are stale and must be regenerated.
34
- *
35
- * @param girFiles - Absolute paths of the loaded `.gir` files
36
- * @param libraries - The resolved `Name-Version` library identifiers
37
- */
38
- export const computeFingerprint = (girFiles: readonly string[], libraries: readonly string[]): string => {
39
+ // The overrides are copied verbatim into the store, so editing one changes the output even though no
40
+ // GIR file moved. Without them in the hash a stale override survives every non-forced run.
41
+ const overrideFiles = (): string[] => {
42
+ if (!existsSync(OVERRIDES_ROOT)) {
43
+ return [];
44
+ }
45
+
46
+ return readdirSync(OVERRIDES_ROOT, { recursive: true, withFileTypes: true })
47
+ .filter((entry: Dirent) => entry.isFile())
48
+ .map((entry: Dirent) => join(entry.parentPath, entry.name));
49
+ };
50
+
51
+ const hashGi = (girFiles: string[], libraries: string[], girPath: string[]): string => {
39
52
  const hash = createHash("sha256");
40
53
  hash.update(CODEGEN_VERSION);
41
54
  hash.update("\n");
42
- hash.update([...libraries].sort((a, b) => a.localeCompare(b)).join(","));
43
- for (const file of [...girFiles].sort((a, b) => a.localeCompare(b))) {
55
+ hash.update(sortAlpha(libraries));
56
+ hash.update("\n");
57
+ hash.update(sortAlpha(girPath));
58
+ const hashedFiles = sortStrings([...girFiles, ...overrideFiles()]);
59
+
60
+ for (const file of hashedFiles) {
44
61
  hash.update("\n");
45
62
  hash.update(file);
46
63
  hash.update("\0");
47
64
  hash.update(readFileSync(file));
48
65
  }
66
+
49
67
  return hash.digest("hex");
50
68
  };
69
+
70
+ const computeGiFingerprint = (girFiles: string[], libraries: string[], girPath: string[]): GiFingerprint => ({
71
+ value: hashGi(girFiles, libraries, girPath),
72
+ girFiles,
73
+ libraries,
74
+ girPath,
75
+ });
76
+
77
+ const isGiStoreFresh = (giStoreDir: string, libraries: string[], girPath: string[]): boolean => {
78
+ const sentinelPath = join(giStoreDir, FINGERPRINT_FILENAME);
79
+
80
+ if (!existsSync(sentinelPath)) {
81
+ return false;
82
+ }
83
+
84
+ let sentinel: GiFingerprint;
85
+
86
+ try {
87
+ sentinel = JSON.parse(readFileSync(sentinelPath, "utf8")) as GiFingerprint;
88
+ } catch {
89
+ return false;
90
+ }
91
+
92
+ if (!hasMatchingRecordedInputs(sentinel, libraries, girPath)) {
93
+ return false;
94
+ }
95
+
96
+ try {
97
+ return hashGi(sentinel.girFiles, sentinel.libraries, girPath) === sentinel.value;
98
+ } catch {
99
+ return false;
100
+ }
101
+ };
102
+
103
+ const hasMatchingRecordedInputs = (sentinel: GiFingerprint, libraries: string[], girPath: string[]): boolean =>
104
+ sortAlpha(sentinel.libraries) === sortAlpha(libraries) && sortAlpha(sentinel.girPath ?? []) === sortAlpha(girPath);
105
+
106
+ const serializeModuleExports = (map: Record<string, ModuleExport>): [string, string, string][] =>
107
+ sortStrings(Object.keys(map)).map((type) => [type, map[type]?.module ?? "", map[type]?.export ?? ""]);
108
+
109
+ const hashJsx = (input: JsxFingerprintInput): string =>
110
+ createHash("sha256")
111
+ .update(
112
+ JSON.stringify([
113
+ CODEGEN_VERSION,
114
+ input.reactVersion,
115
+ serializeModuleExports(input.components),
116
+ sortStrings(input.lazyElements),
117
+ serializeModuleExports(input.props),
118
+ ]),
119
+ )
120
+ .digest("hex");
121
+
122
+ const computeJsxFingerprint = (input: JsxFingerprintInput, intrinsicElementCount: number): JsxFingerprint => ({
123
+ value: hashJsx(input),
124
+ intrinsicElementCount,
125
+ });
126
+
127
+ const jsxStoreFreshness = (
128
+ jsxStoreDir: string,
129
+ input: JsxFingerprintInput,
130
+ ): { fresh: boolean; intrinsicElementCount: number } => {
131
+ const sentinelPath = join(jsxStoreDir, FINGERPRINT_FILENAME);
132
+
133
+ if (!existsSync(sentinelPath)) {
134
+ return { fresh: false, intrinsicElementCount: 0 };
135
+ }
136
+
137
+ let sentinel: JsxFingerprint;
138
+
139
+ try {
140
+ sentinel = JSON.parse(readFileSync(sentinelPath, "utf8")) as JsxFingerprint;
141
+ } catch {
142
+ return { fresh: false, intrinsicElementCount: 0 };
143
+ }
144
+
145
+ return sentinel.value === hashJsx(input)
146
+ ? { fresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }
147
+ : { fresh: false, intrinsicElementCount: 0 };
148
+ };
149
+
150
+ export {
151
+ FINGERPRINT_FILENAME,
152
+ computeGiFingerprint,
153
+ isGiStoreFresh,
154
+ computeJsxFingerprint,
155
+ jsxStoreFreshness,
156
+ type GiFingerprint,
157
+ type JsxFingerprintInput,
158
+ type JsxFingerprint,
159
+ };
package/src/gi.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type { Library } from "./gir/library.js";
2
+ import { computeGiFingerprint } from "./fingerprint.js";
3
+ import { namespaceDirectory } from "./gir/namespace.js";
4
+ import { type GiNamespaceInput, type GiStoreOptions, writeGiStore } from "./store/gi-store.js";
5
+ import { generateNamespaceModule } from "./store/gi/pipeline.js";
6
+
7
+ /**
8
+ * Generates the `@gtkx/gi` store from the loaded GIR library and links it into the project. This is the
9
+ * react-free half of codegen: it can run before `@gtkx/gi` (or `@gtkx/react`) exists, since it produces them.
10
+ *
11
+ * @returns The number of namespaces written.
12
+ */
13
+ const runGiCodegen = (library: Library, gi: GiStoreOptions, libraries: string[], girPath: string[]): number => {
14
+ const namespaces: GiNamespaceInput[] = Array.from(library.namespaces.values(), (namespace) => ({
15
+ directory: namespaceDirectory(namespace),
16
+ rawSource: generateNamespaceModule(namespace, library),
17
+ }));
18
+
19
+ writeGiStore(gi, namespaces, computeGiFingerprint(library.girFiles, [...libraries], [...girPath]));
20
+
21
+ return library.namespaces.size;
22
+ };
23
+
24
+ export { isGiStoreFresh } from "./fingerprint.js";
25
+ export type { GiStoreOptions } from "./store/gi-store.js";
26
+ export { runGiCodegen };
@@ -0,0 +1,53 @@
1
+ import type { GirClass } from "./class.js";
2
+ import type { Library } from "./library.js";
3
+ import type { GirType } from "./type.js";
4
+
5
+ type ResolvedAncestor = {
6
+ klass: GirClass;
7
+ namespaceName: string;
8
+ };
9
+
10
+ const getAncestor = (resolved: GirType | undefined): ResolvedAncestor | undefined =>
11
+ resolved !== undefined && (resolved.kind === "class" || resolved.kind === "interface")
12
+ ? { klass: resolved.value, namespaceName: resolved.namespace.name }
13
+ : undefined;
14
+
15
+ const resolveClassOrInterface = (
16
+ library: Library,
17
+ defaultNamespace: string,
18
+ name: string,
19
+ ): ResolvedAncestor | undefined => getAncestor(library.resolveType(defaultNamespace, name));
20
+
21
+ const resolveInterface = (
22
+ library: Library,
23
+ defaultNamespace: string,
24
+ name: string,
25
+ ): ResolvedAncestor | undefined => {
26
+ const resolved = library.resolveType(defaultNamespace, name);
27
+
28
+ return resolved?.kind === "interface" ? getAncestor(resolved) : undefined;
29
+ };
30
+
31
+ function* ancestorChain(library: Library, klass: GirClass, namespaceName: string): Generator<ResolvedAncestor> {
32
+ const visited: Set<string> = new Set();
33
+ let current: ResolvedAncestor | undefined = { klass, namespaceName };
34
+
35
+ while (current !== undefined) {
36
+ const key = `${current.namespaceName}.${current.klass.name}`;
37
+
38
+ if (visited.has(key)) {
39
+ return;
40
+ }
41
+
42
+ visited.add(key);
43
+ yield current;
44
+
45
+ if (current.klass.parent === undefined) {
46
+ return;
47
+ }
48
+
49
+ current = resolveClassOrInterface(library, current.namespaceName, current.klass.parent);
50
+ }
51
+ }
52
+
53
+ export { resolveInterface, ancestorChain, type ResolvedAncestor };
@@ -1,26 +1,24 @@
1
- import { type GirParameter, type GirReturnValue, parameterFromNode, returnValueFromNode } from "./parameter.js";
2
- import { attr, childOf, childrenOf, type RawNode } from "./parse.js";
1
+ import type { GirFunction } from "./function.js";
2
+ import type { RawNode } from "./parse.js";
3
+ import type { ParseContext } from "./type-id.js";
4
+ import { type GirCallable, parseCallable } from "./parameter.js";
3
5
 
4
- /** A `<callback>` declaration (top-level inside a namespace or nested in a field). */
5
- export type GirCallback = {
6
- readonly name: string;
7
- readonly cType: string | undefined;
8
- readonly parameters: readonly GirParameter[];
9
- readonly returnValue: GirReturnValue;
10
- readonly introspectable: boolean;
11
- };
6
+ type GirCallback = GirCallable;
12
7
 
13
- /**
14
- * Builds a {@link GirCallback} from a `<callback>` element.
15
- */
16
- export const callbackFromNode = (node: RawNode): GirCallback => {
17
- const parametersNode = childOf(node, "parameters");
18
- const parameterNodes = childrenOf(parametersNode, "parameter");
19
- return {
20
- name: attr(node, "name") ?? "",
21
- cType: attr(node, "c:type"),
22
- parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, false)),
23
- returnValue: returnValueFromNode(childOf(node, "return-value")),
24
- introspectable: attr(node, "introspectable") !== "0",
25
- };
26
- };
8
+ const callbackFromNode = (node: RawNode, context: ParseContext): GirCallback => parseCallable(node, context);
9
+
10
+ const callbackAsFunction = (callback: GirCallback): GirFunction => ({
11
+ name: callback.name,
12
+ doc: callback.doc,
13
+ cIdentifier: undefined,
14
+ movedTo: undefined,
15
+ throws: callback.throws,
16
+ introspectable: callback.introspectable,
17
+ shadowedBy: undefined,
18
+ finishFunc: undefined,
19
+ instance: undefined,
20
+ parameters: callback.parameters,
21
+ returnValue: callback.returnValue,
22
+ });
23
+
24
+ export { callbackFromNode, callbackAsFunction, type GirCallback };
package/src/gir/class.ts CHANGED
@@ -1,54 +1,35 @@
1
- import { fieldFromNode, type GirField } from "./field.js";
1
+ import type { ParseContext } from "./type-id.js";
2
2
  import { functionFromNode, type GirFunction } from "./function.js";
3
- import { attr, attrBool, childrenOf, GIR_CONSTRUCTOR_TAG, type RawNode } from "./parse.js";
3
+ import { type GirCallable, parseCallable } from "./parameter.js";
4
+ import { attr, getChildren, getDoc, GIR_CONSTRUCTOR_TAG, isAttrTrue, nameAttr, type RawNode } from "./parse.js";
4
5
  import { type GirProperty, propertyFromNode } from "./property.js";
5
- import { type GirSignal, signalFromNode } from "./signal.js";
6
6
 
7
- /** A `<class>` or `<interface>` declaration. */
8
- export type GirClass = {
9
- /** Local name inside the namespace (no prefix). */
10
- readonly name: string;
11
- readonly cType: string | undefined;
12
- /** GIR `parent`, possibly cross-namespace (e.g. `"GObject.InitiallyUnowned"`). */
13
- readonly parent: string | undefined;
14
- /** GLib type name (e.g. `"GtkWidget"`). */
15
- readonly glibTypeName: string | undefined;
16
- /** C symbol that returns the GType integer (e.g. `"gtk_widget_get_type"`). */
17
- readonly glibGetType: string | undefined;
18
- /** Local record name that holds this class's vtable (`glib:type-struct`). */
19
- readonly glibTypeStruct: string | undefined;
20
- /** Glib ref/unref/etc. function names on fundamentals; not used for GObject subclasses. */
21
- readonly glibRefFunc: string | undefined;
22
- readonly glibUnrefFunc: string | undefined;
23
- readonly glibSetValueFunc: string | undefined;
24
- readonly glibGetValueFunc: string | undefined;
25
- /** `glib:fundamental="1"` — a non-GObject fundamental type (e.g. `GdkEvent`, `GskRenderNode`). */
26
- readonly fundamental: boolean;
27
- readonly abstract: boolean;
28
- readonly final: boolean;
29
- readonly isInterface: boolean;
30
- readonly introspectable: boolean;
31
- /** Names of interfaces this class implements (cross-namespace possible). */
32
- readonly implements: readonly string[];
33
- /** Names of interfaces a `<interface>` requires (`<prerequisite>` elements). */
34
- readonly prerequisites: readonly string[];
35
- readonly methods: readonly GirFunction[];
36
- readonly constructors: readonly GirFunction[];
37
- readonly functions: readonly GirFunction[];
38
- readonly virtualMethods: readonly GirFunction[];
39
- readonly properties: readonly GirProperty[];
40
- readonly signals: readonly GirSignal[];
41
- readonly fields: readonly GirField[];
7
+ type GirClass = {
8
+ name: string;
9
+ doc: string | undefined;
10
+ cType: string | undefined;
11
+ parent: string | undefined;
12
+ glibTypeName: string | undefined;
13
+ glibGetType: string | undefined;
14
+ glibTypeStruct: string | undefined;
15
+ glibRefFunc: string | undefined;
16
+ glibUnrefFunc: string | undefined;
17
+ fundamental: boolean;
18
+ isAbstract: boolean;
19
+ isInterface: boolean;
20
+ introspectable: boolean;
21
+ implements: string[];
22
+ prerequisites: string[];
23
+ methods: GirFunction[];
24
+ constructors: GirFunction[];
25
+ functions: GirFunction[];
26
+ properties: GirProperty[];
27
+ signals: GirCallable[];
42
28
  };
43
29
 
44
- /**
45
- * Builds a {@link GirClass} from a `<class>` or `<interface>` element.
46
- *
47
- * @param node - The XML element
48
- * @param isInterface - `true` when the source element was `<interface>`
49
- */
50
- export const classFromNode = (node: RawNode, isInterface: boolean): GirClass => ({
51
- name: attr(node, "name") ?? "",
30
+ const classFromNode = (node: RawNode, isInterface: boolean, context: ParseContext): GirClass => ({
31
+ name: nameAttr(node),
32
+ doc: getDoc(node),
52
33
  cType: attr(node, "c:type"),
53
34
  parent: attr(node, "parent"),
54
35
  glibTypeName: attr(node, "glib:type-name"),
@@ -56,24 +37,21 @@ export const classFromNode = (node: RawNode, isInterface: boolean): GirClass =>
56
37
  glibTypeStruct: attr(node, "glib:type-struct"),
57
38
  glibRefFunc: attr(node, "glib:ref-func"),
58
39
  glibUnrefFunc: attr(node, "glib:unref-func"),
59
- glibSetValueFunc: attr(node, "glib:set-value-func"),
60
- glibGetValueFunc: attr(node, "glib:get-value-func"),
61
- fundamental: attrBool(node, "glib:fundamental"),
62
- abstract: attrBool(node, "abstract"),
63
- final: attrBool(node, "final"),
40
+ fundamental: isAttrTrue(node, "glib:fundamental"),
41
+ isAbstract: isAttrTrue(node, "abstract"),
64
42
  isInterface,
65
- introspectable: attr(node, "introspectable") !== "0",
66
- implements: childrenOf(node, "implements")
43
+ introspectable: isAttrTrue(node, "introspectable", true),
44
+ implements: getChildren(node, "implements")
67
45
  .map((implement) => attr(implement, "name"))
68
46
  .filter((name): name is string => name !== undefined),
69
- prerequisites: childrenOf(node, "prerequisite")
47
+ prerequisites: getChildren(node, "prerequisite")
70
48
  .map((prerequisite) => attr(prerequisite, "name"))
71
49
  .filter((name): name is string => name !== undefined),
72
- methods: childrenOf(node, "method").map((method) => functionFromNode(method, "method")),
73
- constructors: childrenOf(node, GIR_CONSTRUCTOR_TAG).map((ctor) => functionFromNode(ctor, "constructor")),
74
- functions: childrenOf(node, "function").map((function_) => functionFromNode(function_, "function")),
75
- virtualMethods: childrenOf(node, "virtual-method").map((vmethod) => functionFromNode(vmethod, "virtual-method")),
76
- properties: childrenOf(node, "property").map(propertyFromNode),
77
- signals: childrenOf(node, "glib:signal").map(signalFromNode),
78
- fields: childrenOf(node, "field").map(fieldFromNode),
50
+ methods: getChildren(node, "method").map((method) => functionFromNode(method, context)),
51
+ constructors: getChildren(node, GIR_CONSTRUCTOR_TAG).map((ctor) => functionFromNode(ctor, context)),
52
+ functions: getChildren(node, "function").map((fn) => functionFromNode(fn, context)),
53
+ properties: getChildren(node, "property").map((property) => propertyFromNode(property, context)),
54
+ signals: getChildren(node, "glib:signal").map((signal) => parseCallable(signal, context)),
79
55
  });
56
+
57
+ export { classFromNode, type GirClass };
package/src/gir/enum.ts CHANGED
@@ -1,55 +1,39 @@
1
- import { functionFromNode, type GirFunction } from "./function.js";
2
- import { attr, childrenOf, type RawNode } from "./parse.js";
1
+ import { attr, getChildren, getDoc, isAttrTrue, nameAttr, type RawNode } from "./parse.js";
3
2
 
4
- /** A single `<member>` of an `<enumeration>` or `<bitfield>`. */
5
3
  type EnumMember = {
6
- /** GIR `name`, snake_case lowercase (e.g. `"fill"`). */
7
- readonly name: string;
8
- /** GIR `c:identifier`, SCREAMING_SNAKE_CASE (e.g. `"GTK_ALIGN_FILL"`). */
9
- readonly cIdentifier: string | undefined;
10
- /** Numeric value as a string; preserved verbatim from GIR. */
11
- readonly value: string;
4
+ name: string;
5
+ doc: string | undefined;
6
+ value: string;
7
+ cIdentifier: string | undefined;
12
8
  };
13
9
 
14
- /** Discriminator for enums vs bitfields. */
15
- export type EnumKind = "enumeration" | "bitfield";
10
+ type EnumKind = "enumeration" | "bitfield";
16
11
 
17
- /** An `<enumeration>` or `<bitfield>` declaration. */
18
- export type GirEnum = {
19
- readonly kind: EnumKind;
20
- /** Local name within the namespace (no namespace prefix). */
21
- readonly name: string;
22
- readonly cType: string | undefined;
23
- /** GLib type name (e.g. `"GtkAlign"`); absent for unregistered enums. */
24
- readonly glibTypeName: string | undefined;
25
- /** GLib get-type C symbol; absent for unregistered enums. */
26
- readonly glibGetType: string | undefined;
27
- /** Optional `glib:error-domain` marker; presence flips emission to `createErrorDomain`. */
28
- readonly errorDomain: string | undefined;
29
- readonly introspectable: boolean;
30
- readonly members: readonly EnumMember[];
31
- /** Free functions nested inside the enum (e.g. error quark accessors). */
32
- readonly functions: readonly GirFunction[];
12
+ type GirEnum = {
13
+ kind: EnumKind;
14
+ name: string;
15
+ doc: string | undefined;
16
+ glibTypeName: string | undefined;
17
+ glibGetType: string | undefined;
18
+ errorDomain: string | undefined;
19
+ introspectable: boolean;
20
+ members: EnumMember[];
33
21
  };
34
22
 
35
- /**
36
- * Builds a {@link GirEnum} from an `<enumeration>` or `<bitfield>` element.
37
- *
38
- * @param node - The XML element
39
- * @param kind - `"enumeration"` or `"bitfield"`, matching the element name
40
- */
41
- export const enumFromNode = (node: RawNode, kind: EnumKind): GirEnum => ({
23
+ const enumFromNode = (node: RawNode, kind: EnumKind): GirEnum => ({
42
24
  kind,
43
- name: attr(node, "name") ?? "",
44
- cType: attr(node, "c:type"),
25
+ name: nameAttr(node),
26
+ doc: getDoc(node),
45
27
  glibTypeName: attr(node, "glib:type-name"),
46
28
  glibGetType: attr(node, "glib:get-type"),
47
29
  errorDomain: attr(node, "glib:error-domain"),
48
- introspectable: attr(node, "introspectable") !== "0",
49
- members: childrenOf(node, "member").map((member) => ({
50
- name: attr(member, "name") ?? "",
51
- cIdentifier: attr(member, "c:identifier"),
30
+ introspectable: isAttrTrue(node, "introspectable", true),
31
+ members: getChildren(node, "member").map((member) => ({
32
+ name: nameAttr(member),
33
+ doc: getDoc(member),
52
34
  value: attr(member, "value") ?? "0",
35
+ cIdentifier: attr(member, "c:identifier"),
53
36
  })),
54
- functions: childrenOf(node, "function").map((function_) => functionFromNode(function_, "function")),
55
37
  });
38
+
39
+ export { enumFromNode, type GirEnum };
package/src/gir/field.ts CHANGED
@@ -1,40 +1,54 @@
1
- import { attr, attrBool, childOf, type RawNode } from "./parse.js";
2
- import { type GirTypeRef, typeRefFromSlot } from "./type-ref.js";
1
+ import type { ParseContext, TypeId } from "./type-id.js";
2
+ import { attr, getChild, getChildren, getDoc, intAttr, isAttrTrue, nameAttr, type RawNode } from "./parse.js";
3
+ import { typeRefFromNode } from "./type-ref.js";
3
4
 
4
- /**
5
- * A `<field>` inside a class, interface, record, or union.
6
- *
7
- * Vtable slots (fields holding `<callback>` children inside a
8
- * `glib:is-gtype-struct-for` record) keep `callback` populated; ordinary
9
- * data fields keep `type`. The two are mutually exclusive.
10
- */
11
- export type GirField = {
12
- /** GIR field name, snake_case. */
13
- readonly name: string;
14
- /** Field type, or `undefined` when the field is a vtable callback slot. */
15
- readonly type: GirTypeRef | undefined;
16
- /** Inline callback for vtable slots; `undefined` for data fields. */
17
- readonly callback: RawNode | undefined;
18
- readonly readable: boolean;
19
- readonly writable: boolean;
20
- readonly private: boolean;
21
- /** GIR `bits` attribute width when the field is a bitfield member. */
22
- readonly bits: number | undefined;
5
+ type GirField = {
6
+ name: string;
7
+ doc: string | undefined;
8
+ type: TypeId | undefined;
9
+ cType: string | undefined;
10
+ readable: boolean;
11
+ writable: boolean;
12
+ private: boolean;
13
+ bits: number | undefined;
14
+ /** Members of an anonymous nested `<union>`/`<record>`, which occupies a slot but has no type. */
15
+ inlineMembers: GirField[] | undefined;
16
+ inlineIsUnion: boolean;
23
17
  };
24
18
 
25
- /**
26
- * Builds a {@link GirField} from a `<field>` element.
27
- */
28
- export const fieldFromNode = (node: RawNode): GirField => {
29
- const callback = childOf(node, "callback");
30
- const bitsAttr = attr(node, "bits");
31
- return {
32
- name: attr(node, "name") ?? "",
33
- type: callback === undefined ? typeRefFromSlot(node) : undefined,
34
- callback,
35
- readable: attrBool(node, "readable", true),
36
- writable: attrBool(node, "writable", false),
37
- private: attrBool(node, "private", false),
38
- bits: bitsAttr === undefined ? undefined : Number.parseInt(bitsAttr, 10),
39
- };
40
- };
19
+ const fieldFromNode = (node: RawNode, context: ParseContext): GirField => ({
20
+ name: nameAttr(node),
21
+ doc: getDoc(node),
22
+ type: typeRefFromNode(node, context),
23
+ cType: attr(getChild(node, "type"), "c:type"),
24
+ readable: isAttrTrue(node, "readable", true),
25
+ writable: isAttrTrue(node, "writable", false),
26
+ private: isAttrTrue(node, "private", false),
27
+ bits: intAttr(node, "bits"),
28
+ inlineMembers: undefined,
29
+ inlineIsUnion: false,
30
+ });
31
+
32
+ // A record may embed an anonymous `<union>` or `<record>` instead of naming a type for it. The
33
+ // member occupies a real slot and contributes its own size and alignment, but carries no `<type>`,
34
+ // so it has to be admitted as a field whose layout comes from its own children.
35
+ const anonymousMemberFromNode = (node: RawNode, isUnion: boolean, context: ParseContext): GirField => ({
36
+ name: nameAttr(node),
37
+ doc: getDoc(node),
38
+ type: undefined,
39
+ cType: undefined,
40
+ readable: false,
41
+ writable: false,
42
+ private: true,
43
+ bits: undefined,
44
+ inlineMembers: collectFields(node, context),
45
+ inlineIsUnion: isUnion,
46
+ });
47
+
48
+ const collectFields = (node: RawNode, context: ParseContext): GirField[] => [
49
+ ...getChildren(node, "field").map((field) => fieldFromNode(field, context)),
50
+ ...getChildren(node, "union").map((member) => anonymousMemberFromNode(member, true, context)),
51
+ ...getChildren(node, "record").map((member) => anonymousMemberFromNode(member, false, context)),
52
+ ];
53
+
54
+ export { collectFields, fieldFromNode, type GirField };