@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
@@ -0,0 +1,51 @@
1
+ import type { RawNode } from "./parse.js";
2
+ import type { PrimitiveCategory } from "./primitives.js";
3
+ type TypeId = {
4
+ nsId: number;
5
+ id: number;
6
+ };
7
+ type ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];
8
+ type PrimitiveType = {
9
+ kind: "primitive";
10
+ category: PrimitiveCategory;
11
+ };
12
+ type VarargsType = {
13
+ kind: "varargs";
14
+ };
15
+ type CArrayType = {
16
+ kind: "carray";
17
+ element: TypeId;
18
+ elementCType: string | undefined;
19
+ lengthParameterIndex: number | undefined;
20
+ fixedSize: number | undefined;
21
+ zeroTerminated: boolean;
22
+ };
23
+ type ListType = {
24
+ kind: "list";
25
+ flavor: ListFlavor;
26
+ element: TypeId;
27
+ };
28
+ type HashTableType = {
29
+ kind: "hashtable";
30
+ key: TypeId;
31
+ value: TypeId;
32
+ };
33
+ type StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;
34
+ type ParseContext = {
35
+ nsId: number;
36
+ findType(name: string): TypeId;
37
+ addPrimitive(category: PrimitiveCategory): TypeId;
38
+ addVarargs(): TypeId;
39
+ addContainer(type: CArrayType | ListType | HashTableType): TypeId;
40
+ addAnonymousCallback(node: RawNode): TypeId;
41
+ };
42
+ declare const LIST_FLAVOR_BY_NAME: {
43
+ readonly "GLib.List": "glist";
44
+ readonly "GLib.SList": "gslist";
45
+ readonly "GLib.PtrArray": "gptrarray";
46
+ readonly "GLib.Array": "garray";
47
+ readonly "GLib.ByteArray": "gbytearray";
48
+ };
49
+ declare const hasUnknownArrayLength: (ref: CArrayType) => boolean;
50
+ export { hasUnknownArrayLength, LIST_FLAVOR_BY_NAME, type TypeId, type ListFlavor, type CArrayType, type ListType, type HashTableType, type StructuralType, type ParseContext, };
51
+ //# sourceMappingURL=type-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3C,KAAK,UAAU,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AACjF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AACxE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvC,KAAK,UAAU,GAAG;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE1F,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClD,UAAU,IAAI,MAAM,CAAC;IACrB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IAClE,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,mBAAmB;;;;;;CAMf,CAAC;AAIX,QAAA,MAAM,qBAAqB,GAAI,KAAK,UAAU,KAAG,OAC+C,CAAC;AAEjG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,GACpB,CAAC"}
@@ -0,0 +1,12 @@
1
+ const LIST_FLAVOR_BY_NAME = {
2
+ "GLib.List": "glist",
3
+ "GLib.SList": "gslist",
4
+ "GLib.PtrArray": "gptrarray",
5
+ "GLib.Array": "garray",
6
+ "GLib.ByteArray": "gbytearray",
7
+ };
8
+ // An array with no length parameter, no fixed size and an explicit `zero-terminated="0"` carries no
9
+ // way to recover its length, so it is a bare pointer rather than something that can be walked.
10
+ const hasUnknownArrayLength = (ref) => !ref.zeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;
11
+ export { hasUnknownArrayLength, LIST_FLAVOR_BY_NAME, };
12
+ //# sourceMappingURL=type-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAwCA,MAAM,mBAAmB,GAAG;IACxB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC;AAEX,oGAAoG;AACpG,+FAA+F;AAC/F,MAAM,qBAAqB,GAAG,CAAC,GAAe,EAAW,EAAE,CACvD,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC;AAEjG,OAAO,EACH,qBAAqB,EACrB,mBAAmB,GAQtB,CAAC","sourcesContent":["import type { RawNode } from \"./parse.js\";\nimport type { PrimitiveCategory } from \"./primitives.js\";\n\ntype TypeId = { nsId: number; id: number };\ntype ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];\ntype PrimitiveType = { kind: \"primitive\"; category: PrimitiveCategory };\ntype VarargsType = { kind: \"varargs\" };\n\ntype CArrayType = {\n kind: \"carray\";\n element: TypeId;\n elementCType: string | undefined;\n lengthParameterIndex: number | undefined;\n fixedSize: number | undefined;\n zeroTerminated: boolean;\n};\n\ntype ListType = {\n kind: \"list\";\n flavor: ListFlavor;\n element: TypeId;\n};\n\ntype HashTableType = {\n kind: \"hashtable\";\n key: TypeId;\n value: TypeId;\n};\n\ntype StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;\n\ntype ParseContext = {\n nsId: number;\n findType(name: string): TypeId;\n addPrimitive(category: PrimitiveCategory): TypeId;\n addVarargs(): TypeId;\n addContainer(type: CArrayType | ListType | HashTableType): TypeId;\n addAnonymousCallback(node: RawNode): TypeId;\n};\n\nconst LIST_FLAVOR_BY_NAME = {\n \"GLib.List\": \"glist\",\n \"GLib.SList\": \"gslist\",\n \"GLib.PtrArray\": \"gptrarray\",\n \"GLib.Array\": \"garray\",\n \"GLib.ByteArray\": \"gbytearray\",\n} as const;\n\n// An array with no length parameter, no fixed size and an explicit `zero-terminated=\"0\"` carries no\n// way to recover its length, so it is a bare pointer rather than something that can be walked.\nconst hasUnknownArrayLength = (ref: CArrayType): boolean =>\n !ref.zeroTerminated && ref.lengthParameterIndex === undefined && ref.fixedSize === undefined;\n\nexport {\n hasUnknownArrayLength,\n LIST_FLAVOR_BY_NAME,\n type TypeId,\n type ListFlavor,\n type CArrayType,\n type ListType,\n type HashTableType,\n type StructuralType,\n type ParseContext,\n};\n"]}
@@ -1,79 +1,6 @@
1
1
  import { type RawNode } from "./parse.js";
2
- import { type PrimitiveCategory } from "./primitives.js";
3
- /**
4
- * Lazily-resolved reference to a GIR type as it appears in a `<type>` or
5
- * `<array>` slot.
6
- *
7
- * The reference captures everything the writers need at emission time
8
- * without forcing entity resolution to happen at parse time (which would
9
- * impose a topological-sort order on namespace loading). Resolution into a
10
- * concrete `GirClass` / `GirBoxed` / `GirEnum` / … is performed on demand
11
- * by the writers via `GirRepository.resolveNamed`.
12
- */
13
- export type GirTypeRef = PrimitiveTypeRef | NamedTypeRef | ArrayTypeRef | ListTypeRef | HashTableTypeRef | InlineCallbackTypeRef | VarargsTypeRef;
14
- /** A GIR scalar primitive: `gint`, `gboolean`, `utf8`, `gpointer`, etc. */
15
- export type PrimitiveTypeRef = {
16
- readonly kind: "primitive";
17
- readonly category: PrimitiveCategory;
18
- readonly cType: string | undefined;
19
- };
20
- /**
21
- * A named type that resolves to a class, interface, boxed, enum, alias, or
22
- * fundamental in some namespace.
23
- *
24
- * `namespaceName` is the namespace prefix from the GIR (`"GLib"`, `"Gtk"`,
25
- * …) or `undefined` for an unqualified reference. The unqualified form
26
- * implies "look in the namespace the reference appears in".
27
- */
28
- export type NamedTypeRef = {
29
- readonly kind: "named";
30
- readonly namespaceName: string | undefined;
31
- readonly typeName: string;
32
- readonly cType: string | undefined;
33
- };
34
- /** A C array (`<array>`) with optional length, fixed-size, or zero-terminated metadata. */
35
- export type ArrayTypeRef = {
36
- readonly kind: "array";
37
- readonly element: GirTypeRef;
38
- readonly cType: string | undefined;
39
- readonly lengthParameterIndex: number | undefined;
40
- readonly fixedSize: number | undefined;
41
- readonly zeroTerminated: boolean;
42
- };
43
- /** A GLib `GList` / `GSList` / `GPtrArray` / `GArray` / `GByteArray`. */
44
- export type ListTypeRef = {
45
- readonly kind: "list";
46
- readonly flavor: "glist" | "gslist" | "gptrarray" | "garray" | "gbytearray";
47
- readonly element: GirTypeRef;
48
- readonly cType: string | undefined;
49
- };
50
- /** A GLib `GHashTable` with key and value element types. */
51
- export type HashTableTypeRef = {
52
- readonly kind: "hashtable";
53
- readonly key: GirTypeRef;
54
- readonly value: GirTypeRef;
55
- readonly cType: string | undefined;
56
- };
57
- /** An inline `<callback>` (used for vtable slots and callback parameters). */
58
- type InlineCallbackTypeRef = {
59
- readonly kind: "callback";
60
- readonly callback: RawNode;
61
- };
62
- /** A `<varargs/>` parameter placeholder; not marshalable. */
63
- type VarargsTypeRef = {
64
- readonly kind: "varargs";
65
- };
66
- /**
67
- * Builds a {@link GirTypeRef} from a parent XML node whose first `<type>`,
68
- * `<array>`, or `<varargs>` child describes the slot.
69
- *
70
- * Pass the parent (`<parameter>`, `<return-value>`, `<field>`, `<property>`,
71
- * `<constant>`, `<alias>`). The helper extracts the right child and routes
72
- * to {@link typeRefFromTypeNode}.
73
- *
74
- * @param parent - The element whose typed slot we are inspecting
75
- * @returns The reference, or `undefined` if no type slot exists
76
- */
77
- export declare const typeRefFromSlot: (parent: RawNode | undefined) => GirTypeRef | undefined;
78
- export {};
2
+ import { type ParseContext, type TypeId } from "./type-id.js";
3
+ declare const typeRefFromNode: (parent: RawNode | undefined, context: ParseContext) => TypeId | undefined;
4
+ declare const splitOptionalNamespace: (name: string) => [string | undefined, string];
5
+ export { typeRefFromNode, splitOptionalNamespace };
79
6
  //# sourceMappingURL=type-ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,iBAAiB,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAChB,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GACrB,cAAc,CAAC;AAErB,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC5E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,8EAA8E;AAC9E,KAAK,qBAAqB,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,6DAA6D;AAC7D,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAUnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,GAAG,SAAS,KAAG,UAAU,GAAG,SAU1E,CAAC"}
1
+ {"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtG,OAAO,EAAyD,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAUrH,QAAA,MAAM,eAAe,GAAI,QAAQ,OAAO,GAAG,SAAS,EAAE,SAAS,YAAY,KAAG,MAAM,GAAG,SA4BtF,CAAC;AA4DF,QAAA,MAAM,sBAAsB,GAAI,MAAM,MAAM,KAAG,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAQzE,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,101 +1,82 @@
1
- import { attr, attrBool, childOf, childrenOf } from "./parse.js";
1
+ import { attr, getChild, getChildren, intAttr, isAttrTrue, nameAttr } from "./parse.js";
2
2
  import { primitiveCategory } from "./primitives.js";
3
- const LIST_KIND_BY_NAME = new Map([
4
- ["GLib.List", "glist"],
5
- ["GLib.SList", "gslist"],
6
- ["GLib.PtrArray", "gptrarray"],
7
- ["GLib.Array", "garray"],
8
- ["GLib.ByteArray", "gbytearray"],
9
- ]);
10
- /**
11
- * Builds a {@link GirTypeRef} from a parent XML node whose first `<type>`,
12
- * `<array>`, or `<varargs>` child describes the slot.
13
- *
14
- * Pass the parent (`<parameter>`, `<return-value>`, `<field>`, `<property>`,
15
- * `<constant>`, `<alias>`). The helper extracts the right child and routes
16
- * to {@link typeRefFromTypeNode}.
17
- *
18
- * @param parent - The element whose typed slot we are inspecting
19
- * @returns The reference, or `undefined` if no type slot exists
20
- */
21
- export const typeRefFromSlot = (parent) => {
22
- if (parent === undefined)
3
+ import { LIST_FLAVOR_BY_NAME } from "./type-id.js";
4
+ const LIST_FLAVOR_BY_NAME_LOOKUP = new Map(Object.entries(LIST_FLAVOR_BY_NAME));
5
+ const getElementRef = (node, context) => {
6
+ const elementNode = getChild(node, "type");
7
+ return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);
8
+ };
9
+ const typeRefFromNode = (parent, context) => {
10
+ if (parent === undefined) {
23
11
  return undefined;
24
- if (childOf(parent, "varargs") !== undefined)
25
- return { kind: "varargs" };
26
- const arrayNode = childOf(parent, "array");
27
- if (arrayNode !== undefined)
28
- return arrayTypeRefFromNode(arrayNode);
29
- const typeNode = childOf(parent, "type");
30
- if (typeNode !== undefined)
31
- return typeRefFromTypeNode(typeNode);
32
- const callback = childOf(parent, "callback");
33
- if (callback !== undefined)
34
- return { kind: "callback", callback };
12
+ }
13
+ if (getChild(parent, "varargs") !== undefined) {
14
+ return context.addVarargs();
15
+ }
16
+ const arrayNode = getChild(parent, "array");
17
+ if (arrayNode !== undefined) {
18
+ return arrayTypeRefFromNode(arrayNode, context);
19
+ }
20
+ const typeNode = getChild(parent, "type");
21
+ if (typeNode !== undefined) {
22
+ return typeRefFromTypeNode(typeNode, context);
23
+ }
24
+ const callback = getChild(parent, "callback");
25
+ if (callback !== undefined) {
26
+ return context.addAnonymousCallback(callback);
27
+ }
35
28
  return undefined;
36
29
  };
37
- /**
38
- * Builds a {@link GirTypeRef} from a `<type>` element.
39
- *
40
- * Splits a `Namespace.TypeName` form into namespace + type, recognises GLib
41
- * container types (`GLib.List`, `GLib.HashTable`, …) by name and routes
42
- * them to the dedicated branches, otherwise produces a primitive or named
43
- * reference for later resolution.
44
- *
45
- * @param typeNode - A `<type>` element
46
- */
47
- const typeRefFromTypeNode = (typeNode) => {
48
- const name = attr(typeNode, "name") ?? "";
49
- const cType = attr(typeNode, "c:type");
50
- const listFlavor = LIST_KIND_BY_NAME.get(name);
30
+ const hashTableRefFromNode = (typeNode, context) => {
31
+ const elementTypes = getChildren(typeNode, "type");
32
+ const keyNode = elementTypes[0];
33
+ const valueNode = elementTypes[1];
34
+ return context.addContainer({
35
+ kind: "hashtable",
36
+ key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),
37
+ value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),
38
+ });
39
+ };
40
+ const typeRefFromTypeNode = (typeNode, context) => {
41
+ const name = nameAttr(typeNode);
42
+ const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);
51
43
  if (listFlavor !== undefined) {
52
- const elementNode = childOf(typeNode, "type");
53
- const element = elementNode === undefined ? pointerFallback() : typeRefFromTypeNode(elementNode);
54
- return { kind: "list", flavor: listFlavor, element, cType };
44
+ return context.addContainer({ kind: "list", flavor: listFlavor, element: getElementRef(typeNode, context) });
55
45
  }
56
46
  if (name === "GLib.HashTable") {
57
- const elementTypes = childrenOf(typeNode, "type");
58
- const keyNode = elementTypes[0];
59
- const valueNode = elementTypes[1];
60
- return {
61
- kind: "hashtable",
62
- key: keyNode === undefined ? pointerFallback() : typeRefFromTypeNode(keyNode),
63
- value: valueNode === undefined ? pointerFallback() : typeRefFromTypeNode(valueNode),
64
- cType,
65
- };
47
+ return hashTableRefFromNode(typeNode, context);
66
48
  }
67
49
  const primitive = primitiveCategory(name);
68
50
  if (primitive !== undefined) {
69
- return { kind: "primitive", category: primitive, cType };
51
+ return context.addPrimitive(primitive);
70
52
  }
71
- const [namespaceName, typeName] = splitOptionalNamespace(name);
72
- return { kind: "named", namespaceName, typeName, cType };
53
+ return context.findType(name);
73
54
  };
74
- const arrayTypeRefFromNode = (arrayNode) => {
75
- const elementNode = childOf(arrayNode, "type");
76
- const element = elementNode === undefined ? pointerFallback() : typeRefFromTypeNode(elementNode);
77
- const cType = attr(arrayNode, "c:type");
55
+ const arrayTypeRefFromNode = (arrayNode, context) => {
56
+ const element = getElementRef(arrayNode, context);
78
57
  const arrayName = attr(arrayNode, "name");
79
- const listFlavor = arrayName === undefined ? undefined : LIST_KIND_BY_NAME.get(arrayName);
58
+ const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);
80
59
  if (listFlavor !== undefined) {
81
- return { kind: "list", flavor: listFlavor, element, cType };
60
+ return context.addContainer({ kind: "list", flavor: listFlavor, element });
82
61
  }
83
- const lengthAttr = attr(arrayNode, "length");
84
- const fixedSizeAttr = attr(arrayNode, "fixed-size");
85
- return {
86
- kind: "array",
62
+ const elementNode = getChild(arrayNode, "type");
63
+ const carray = {
64
+ kind: "carray",
87
65
  element,
88
- cType,
89
- lengthParameterIndex: lengthAttr === undefined ? undefined : Number.parseInt(lengthAttr, 10),
90
- fixedSize: fixedSizeAttr === undefined ? undefined : Number.parseInt(fixedSizeAttr, 10),
91
- zeroTerminated: attrBool(arrayNode, "zero-terminated", false),
66
+ elementCType: elementNode === undefined ? undefined : attr(elementNode, "c:type"),
67
+ lengthParameterIndex: intAttr(arrayNode, "length"),
68
+ fixedSize: intAttr(arrayNode, "fixed-size"),
69
+ zeroTerminated: isAttrTrue(arrayNode, "zero-terminated", true),
92
70
  };
71
+ return context.addContainer(carray);
93
72
  };
94
- const pointerFallback = () => ({ kind: "primitive", category: "pointer", cType: undefined });
73
+ const pointerFallback = (context) => context.addPrimitive("pointer");
95
74
  const splitOptionalNamespace = (name) => {
96
75
  const dot = name.indexOf(".");
97
- if (dot === -1)
76
+ if (dot === -1) {
98
77
  return [undefined, name];
78
+ }
99
79
  return [name.slice(0, dot), name.slice(dot + 1)];
100
80
  };
81
+ export { typeRefFromNode, splitOptionalNamespace };
101
82
  //# sourceMappingURL=type-ref.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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","sourcesContent":["import { attr, getChild, getChildren, intAttr, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\nimport { primitiveCategory } from \"./primitives.js\";\nimport { type CArrayType, LIST_FLAVOR_BY_NAME, type ListFlavor, type ParseContext, type TypeId } from \"./type-id.js\";\n\nconst LIST_FLAVOR_BY_NAME_LOOKUP: Map<string, ListFlavor> = new Map(Object.entries(LIST_FLAVOR_BY_NAME));\n\nconst getElementRef = (node: RawNode, context: ParseContext): TypeId => {\n const elementNode = getChild(node, \"type\");\n\n return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);\n};\n\nconst typeRefFromNode = (parent: RawNode | undefined, context: ParseContext): TypeId | undefined => {\n if (parent === undefined) {\n return undefined;\n }\n\n if (getChild(parent, \"varargs\") !== undefined) {\n return context.addVarargs();\n }\n\n const arrayNode = getChild(parent, \"array\");\n\n if (arrayNode !== undefined) {\n return arrayTypeRefFromNode(arrayNode, context);\n }\n\n const typeNode = getChild(parent, \"type\");\n\n if (typeNode !== undefined) {\n return typeRefFromTypeNode(typeNode, context);\n }\n\n const callback = getChild(parent, \"callback\");\n\n if (callback !== undefined) {\n return context.addAnonymousCallback(callback);\n }\n\n return undefined;\n};\n\nconst hashTableRefFromNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const elementTypes = getChildren(typeNode, \"type\");\n const keyNode = elementTypes[0];\n const valueNode = elementTypes[1];\n\n return context.addContainer({\n kind: \"hashtable\",\n key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),\n value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),\n });\n};\n\nconst typeRefFromTypeNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const name = nameAttr(typeNode);\n const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element: getElementRef(typeNode, context) });\n }\n\n if (name === \"GLib.HashTable\") {\n return hashTableRefFromNode(typeNode, context);\n }\n\n const primitive = primitiveCategory(name);\n\n if (primitive !== undefined) {\n return context.addPrimitive(primitive);\n }\n\n return context.findType(name);\n};\n\nconst arrayTypeRefFromNode = (arrayNode: RawNode, context: ParseContext): TypeId => {\n const element = getElementRef(arrayNode, context);\n const arrayName = attr(arrayNode, \"name\");\n const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);\n\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element });\n }\n\n const elementNode = getChild(arrayNode, \"type\");\n\n const carray: CArrayType = {\n kind: \"carray\",\n element,\n elementCType: elementNode === undefined ? undefined : attr(elementNode, \"c:type\"),\n lengthParameterIndex: intAttr(arrayNode, \"length\"),\n fixedSize: intAttr(arrayNode, \"fixed-size\"),\n zeroTerminated: isAttrTrue(arrayNode, \"zero-terminated\", true),\n };\n\n return context.addContainer(carray);\n};\n\nconst pointerFallback = (context: ParseContext): TypeId => context.addPrimitive(\"pointer\");\n\nconst splitOptionalNamespace = (name: string): [string | undefined, string] => {\n const dot = name.indexOf(\".\");\n\n if (dot === -1) {\n return [undefined, name];\n }\n\n return [name.slice(0, dot), name.slice(dot + 1)];\n};\n\nexport { typeRefFromNode, splitOptionalNamespace };\n"]}
@@ -0,0 +1,34 @@
1
+ import type { GirCallback } from "./callback.js";
2
+ import type { GirClass } from "./class.js";
3
+ import type { GirEnum } from "./enum.js";
4
+ import type { GirAlias, GirNamespace } from "./namespace.js";
5
+ import type { GirRecord } from "./record.js";
6
+ import type { StructuralType } from "./type-id.js";
7
+ type EntityType = {
8
+ kind: "class";
9
+ namespace: GirNamespace;
10
+ value: GirClass;
11
+ } | {
12
+ kind: "interface";
13
+ namespace: GirNamespace;
14
+ value: GirClass;
15
+ } | {
16
+ kind: "record";
17
+ namespace: GirNamespace;
18
+ value: GirRecord;
19
+ } | {
20
+ kind: "enum";
21
+ namespace: GirNamespace;
22
+ value: GirEnum;
23
+ } | {
24
+ kind: "callback";
25
+ namespace: GirNamespace;
26
+ value: GirCallback;
27
+ } | {
28
+ kind: "alias";
29
+ namespace: GirNamespace;
30
+ value: GirAlias;
31
+ };
32
+ type GirType = StructuralType | EntityType;
33
+ export { type EntityType, type GirType };
34
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,KAAK,UAAU,GACT;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEhE,KAAK,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC;AAE3C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAiC,CAAC","sourcesContent":["import type { GirCallback } from \"./callback.js\";\nimport type { GirClass } from \"./class.js\";\nimport type { GirEnum } from \"./enum.js\";\nimport type { GirAlias, GirNamespace } from \"./namespace.js\";\nimport type { GirRecord } from \"./record.js\";\nimport type { StructuralType } from \"./type-id.js\";\n\ntype EntityType =\n | { kind: \"class\"; namespace: GirNamespace; value: GirClass } |\n { kind: \"interface\"; namespace: GirNamespace; value: GirClass } |\n { kind: \"record\"; namespace: GirNamespace; value: GirRecord } |\n { kind: \"enum\"; namespace: GirNamespace; value: GirEnum } |\n { kind: \"callback\"; namespace: GirNamespace; value: GirCallback } |\n { kind: \"alias\"; namespace: GirNamespace; value: GirAlias };\n\ntype GirType = StructuralType | EntityType;\n\nexport { type EntityType, type GirType };\n"]}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,8 @@
1
- /**
2
- * Public API of `@gtkx/codegen`.
3
- *
4
- * The package exposes a single entry point — {@link CodegenRunner} that
5
- * orchestrates the GIR-driven code generation for the FFI and React
6
- * surfaces. Internal modules (`gir/`, `dsl/`, `writers/`, `ffi/`,
7
- * `react/`) are not part of the supported surface and may change in any
8
- * release.
9
- */
10
- export { CODEGEN_VERSION, type CodegenFingerprint, computeFingerprint, FINGERPRINT_FILENAME, } from "./fingerprint.js";
11
- export { CodegenRunner } from "./runner.js";
1
+ export { API_SYMBOL_KINDS, type ApiLookupResult, type ApiNamespaceSummary, type ApiReference, type ApiReferenceOptions, type ApiSearchOptions, type ApiSymbol, type ApiSymbolKind, loadApiReference, } from "./docs/api-reference.js";
2
+ export { type DocsElementLink, type DocsNamespace, type DocsOptions, type DocsResult, writeDocs, } from "./docs/pipeline.js";
3
+ export { resolveGirPath } from "./gir/gir-path.js";
4
+ export { discoverGirNamespaces, resolveLibraries } from "./gir/libraries.js";
5
+ export { type BuiltinElement, type BuiltinElements, type ModuleExport, readBuiltinElements, } from "./react/element-config.js";
6
+ export { runCodegen } from "./runner.js";
7
+ export type { ElementProps } from "./store/jsx/element-prop-imports.js";
12
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACH,eAAe,EACf,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,SAAS,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,7 @@
1
- /**
2
- * Public API of `@gtkx/codegen`.
3
- *
4
- * The package exposes a single entry point — {@link CodegenRunner} that
5
- * orchestrates the GIR-driven code generation for the FFI and React
6
- * surfaces. Internal modules (`gir/`, `dsl/`, `writers/`, `ffi/`,
7
- * `react/`) are not part of the supported surface and may change in any
8
- * release.
9
- */
10
- export { CODEGEN_VERSION, computeFingerprint, FINGERPRINT_FILENAME, } from "./fingerprint.js";
11
- export { CodegenRunner } from "./runner.js";
1
+ export { API_SYMBOL_KINDS, loadApiReference, } from "./docs/api-reference.js";
2
+ export { writeDocs, } from "./docs/pipeline.js";
3
+ export { resolveGirPath } from "./gir/gir-path.js";
4
+ export { discoverGirNamespaces, resolveLibraries } from "./gir/libraries.js";
5
+ export { readBuiltinElements, } from "./react/element-config.js";
6
+ export { runCodegen } from "./runner.js";
12
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACH,eAAe,EAEf,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAQhB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAKH,SAAS,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAIH,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export {\n API_SYMBOL_KINDS,\n type ApiLookupResult,\n type ApiNamespaceSummary,\n type ApiReference,\n type ApiReferenceOptions,\n type ApiSearchOptions,\n type ApiSymbol,\n type ApiSymbolKind,\n loadApiReference,\n} from \"./docs/api-reference.js\";\nexport {\n type DocsElementLink,\n type DocsNamespace,\n type DocsOptions,\n type DocsResult,\n writeDocs,\n} from \"./docs/pipeline.js\";\nexport { resolveGirPath } from \"./gir/gir-path.js\";\nexport { discoverGirNamespaces, resolveLibraries } from \"./gir/libraries.js\";\nexport {\n type BuiltinElement,\n type BuiltinElements,\n type ModuleExport,\n readBuiltinElements,\n} from \"./react/element-config.js\";\nexport { runCodegen } from \"./runner.js\";\nexport type { ElementProps } from \"./store/jsx/element-prop-imports.js\";\n"]}
package/dist/jsx.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import type { Library } from "./gir/library.js";
2
+ import { type ModuleExport } from "./react/element-config.js";
3
+ import { type JsxStoreOptions } from "./store/jsx-store.js";
4
+ type RunJsxCodegenOptions = {
5
+ getLibrary: () => Library;
6
+ jsx: JsxStoreOptions;
7
+ giStoreDir: string;
8
+ reactSubexports: string[];
9
+ userComponents: Record<string, ModuleExport>;
10
+ userLazyElements: string[];
11
+ userProps: Record<string, ModuleExport>;
12
+ giRegenerated: boolean;
13
+ force: boolean;
14
+ };
15
+ type RunJsxCodegenResult = {
16
+ regenerated: boolean;
17
+ intrinsicElementCount: number;
18
+ };
19
+ /**
20
+ * Generates the `@gtkx/jsx` store, reading the framework's built-in element config from the freshly
21
+ * linked `@gtkx/react` and layering the project's own element config over it. This is the react-importing
22
+ * half of codegen: it must run only after the gi store has been written and linked.
23
+ */
24
+ declare const runJsxCodegen: (options: RunJsxCodegenOptions) => Promise<RunJsxCodegenResult>;
25
+ export { runJsxCodegen, type RunJsxCodegenOptions, type RunJsxCodegenResult };
26
+ //# sourceMappingURL=jsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOhD,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,sBAAsB,CAAC;AAG3E,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,GAAG,EAAE,eAAe,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,aAAa,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAkCvF,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,CAAC"}
package/dist/jsx.js ADDED
@@ -0,0 +1,40 @@
1
+ import { computeJsxFingerprint, FINGERPRINT_FILENAME, jsxStoreFreshness, } from "./fingerprint.js";
2
+ import { readBuiltinElements } from "./react/element-config.js";
3
+ import { writeJsxStore } from "./store/jsx-store.js";
4
+ import { generateJsxFiles } from "./store/jsx/pipeline.js";
5
+ /**
6
+ * Generates the `@gtkx/jsx` store, reading the framework's built-in element config from the freshly
7
+ * linked `@gtkx/react` and layering the project's own element config over it. This is the react-importing
8
+ * half of codegen: it must run only after the gi store has been written and linked.
9
+ */
10
+ const runJsxCodegen = async (options) => {
11
+ const builtin = await readBuiltinElements(options.reactSubexports, options.giStoreDir);
12
+ const components = { ...builtin.components, ...options.userComponents };
13
+ const lazyElements = [...builtin.lazyElements, ...options.userLazyElements];
14
+ const props = { ...builtin.props, ...options.userProps };
15
+ const fingerprintInput = {
16
+ reactVersion: options.jsx.version,
17
+ components,
18
+ lazyElements,
19
+ props,
20
+ };
21
+ if (!options.force && !options.giRegenerated) {
22
+ const { fresh, intrinsicElementCount } = jsxStoreFreshness(options.jsx.storeDir, fingerprintInput);
23
+ if (fresh) {
24
+ return { regenerated: false, intrinsicElementCount };
25
+ }
26
+ }
27
+ const { namespaces, metadata, intrinsicElementCount } = generateJsxFiles(options.getLibrary(), {
28
+ reactSubexports: options.reactSubexports,
29
+ components,
30
+ lazyElements,
31
+ props,
32
+ });
33
+ writeJsxStore(options.jsx, namespaces, metadata, {
34
+ relativePath: FINGERPRINT_FILENAME,
35
+ content: `${JSON.stringify(computeJsxFingerprint(fingerprintInput, intrinsicElementCount), null, 2)}\n`,
36
+ });
37
+ return { regenerated: true, intrinsicElementCount };
38
+ };
39
+ export { runJsxCodegen };
40
+ //# sourceMappingURL=jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":"AACA,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EAEpB,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAqB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAwB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAmB3D;;;;GAIG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,OAA6B,EAAgC,EAAE;IACxF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEzD,MAAM,gBAAgB,GAAwB;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;QACjC,UAAU;QACV,YAAY;QACZ,KAAK;KACR,CAAC;IAEF,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEnG,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QACzD,CAAC;IACL,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE;QAC3F,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,UAAU;QACV,YAAY;QACZ,KAAK;KACR,CAAC,CAAC;IAEH,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;QAC7C,YAAY,EAAE,oBAAoB;QAClC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;KAC1G,CAAC,CAAC;IAEH,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;AACxD,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAuD,CAAC","sourcesContent":["import type { Library } from \"./gir/library.js\";\nimport {\n computeJsxFingerprint,\n FINGERPRINT_FILENAME,\n type JsxFingerprintInput,\n jsxStoreFreshness,\n} from \"./fingerprint.js\";\nimport { type ModuleExport, readBuiltinElements } from \"./react/element-config.js\";\nimport { type JsxStoreOptions, writeJsxStore } from \"./store/jsx-store.js\";\nimport { generateJsxFiles } from \"./store/jsx/pipeline.js\";\n\ntype RunJsxCodegenOptions = {\n getLibrary: () => Library;\n jsx: JsxStoreOptions;\n giStoreDir: string;\n reactSubexports: string[];\n userComponents: Record<string, ModuleExport>;\n userLazyElements: string[];\n userProps: Record<string, ModuleExport>;\n giRegenerated: boolean;\n force: boolean;\n};\n\ntype RunJsxCodegenResult = {\n regenerated: boolean;\n intrinsicElementCount: number;\n};\n\n/**\n * Generates the `@gtkx/jsx` store, reading the framework's built-in element config from the freshly\n * linked `@gtkx/react` and layering the project's own element config over it. This is the react-importing\n * half of codegen: it must run only after the gi store has been written and linked.\n */\nconst runJsxCodegen = async (options: RunJsxCodegenOptions): Promise<RunJsxCodegenResult> => {\n const builtin = await readBuiltinElements(options.reactSubexports, options.giStoreDir);\n const components = { ...builtin.components, ...options.userComponents };\n const lazyElements = [...builtin.lazyElements, ...options.userLazyElements];\n const props = { ...builtin.props, ...options.userProps };\n\n const fingerprintInput: JsxFingerprintInput = {\n reactVersion: options.jsx.version,\n components,\n lazyElements,\n props,\n };\n\n if (!options.force && !options.giRegenerated) {\n const { fresh, intrinsicElementCount } = jsxStoreFreshness(options.jsx.storeDir, fingerprintInput);\n\n if (fresh) {\n return { regenerated: false, intrinsicElementCount };\n }\n }\n\n const { namespaces, metadata, intrinsicElementCount } = generateJsxFiles(options.getLibrary(), {\n reactSubexports: options.reactSubexports,\n components,\n lazyElements,\n props,\n });\n\n writeJsxStore(options.jsx, namespaces, metadata, {\n relativePath: FINGERPRINT_FILENAME,\n content: `${JSON.stringify(computeJsxFingerprint(fingerprintInput, intrinsicElementCount), null, 2)}\\n`,\n });\n\n return { regenerated: true, intrinsicElementCount };\n};\n\nexport { runJsxCodegen, type RunJsxCodegenOptions, type RunJsxCodegenResult };\n"]}
@@ -0,0 +1,30 @@
1
+ import type { CommandPlan, GlScalar } from "./plan.js";
2
+ type InArg = {
3
+ out: false;
4
+ name: string;
5
+ tsType: string;
6
+ descriptor: string;
7
+ };
8
+ type OutArg = {
9
+ out: true;
10
+ cellName: string;
11
+ seed: string;
12
+ tsType: string;
13
+ descriptor: string;
14
+ paramIndex: number;
15
+ };
16
+ type PlannedArg = InArg | OutArg;
17
+ declare const scalarAliasOrGroup: (scalar: GlScalar, group: string | undefined) => string;
18
+ declare const trackInto: (usedTypes: Set<string>) => (alias: string) => string;
19
+ declare const planArgs: (plan: CommandPlan & {
20
+ ok: true;
21
+ }, usedTypes: Set<string>) => {
22
+ args: PlannedArg[];
23
+ ins: InArg[];
24
+ outs: OutArg[];
25
+ };
26
+ declare const scalarPrefixArgs: (plan: CommandPlan & {
27
+ ok: true;
28
+ }, usedTypes: Set<string>) => InArg[] | undefined;
29
+ export { scalarAliasOrGroup, trackInto, planArgs, scalarPrefixArgs, type InArg, type OutArg };
30
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAclE,KAAK,KAAK,GAAG;IACT,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,MAAM,GAAG;IACV,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAqBjC,QAAA,MAAM,kBAAkB,GAAI,QAAQ,QAAQ,EAAE,OAAO,MAAM,GAAG,SAAS,KAAG,MACM,CAAC;AA8IjF,QAAA,MAAM,SAAS,GACV,WAAW,GAAG,CAAC,MAAM,CAAC,MAClB,OAAO,MAAM,KAAG,MAIhB,CAAC;AAEV,QAAA,MAAM,QAAQ,GACV,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAChC,WAAW,GAAG,CAAC,MAAM,CAAC,KACvB;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAsBpD,CAAC;AAwBF,QAAA,MAAM,gBAAgB,GAAI,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,WAAW,GAAG,CAAC,MAAM,CAAC,KAAG,KAAK,EAAE,GAAG,SAe9F,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC"}