@gtkx/codegen 0.21.0 → 1.0.0-rc.1

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 (732) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +18 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +297 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +59 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +123 -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 +193 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +26 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +107 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +19 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +65 -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 +123 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +66 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +299 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +15 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +221 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +25 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +130 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +32 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +134 -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 +338 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +6 -26
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +30 -18
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gir/ancestry.d.ts +9 -0
  51. package/dist/gir/ancestry.d.ts.map +1 -0
  52. package/dist/gir/ancestry.js +29 -0
  53. package/dist/gir/ancestry.js.map +1 -0
  54. package/dist/gir/callback.d.ts +9 -10
  55. package/dist/gir/callback.d.ts.map +1 -1
  56. package/dist/gir/callback.js +17 -16
  57. package/dist/gir/callback.js.map +1 -1
  58. package/dist/gir/class.d.ts +22 -43
  59. package/dist/gir/class.d.ts.map +1 -1
  60. package/dist/gir/class.js +11 -23
  61. package/dist/gir/class.js.map +1 -1
  62. package/dist/gir/enum.d.ts +13 -31
  63. package/dist/gir/enum.d.ts.map +1 -1
  64. package/dist/gir/enum.js +7 -14
  65. package/dist/gir/enum.js.map +1 -1
  66. package/dist/gir/field.d.ts +10 -23
  67. package/dist/gir/field.d.ts.map +1 -1
  68. package/dist/gir/field.js +12 -18
  69. package/dist/gir/field.js.map +1 -1
  70. package/dist/gir/function.d.ts +11 -42
  71. package/dist/gir/function.d.ts.map +1 -1
  72. package/dist/gir/function.js +7 -20
  73. package/dist/gir/function.js.map +1 -1
  74. package/dist/gir/gir-path.d.ts +2 -0
  75. package/dist/gir/gir-path.d.ts.map +1 -0
  76. package/dist/gir/gir-path.js +41 -0
  77. package/dist/gir/gir-path.js.map +1 -0
  78. package/dist/gir/libraries.d.ts +4 -0
  79. package/dist/gir/libraries.d.ts.map +1 -0
  80. package/dist/gir/libraries.js +62 -0
  81. package/dist/gir/libraries.js.map +1 -0
  82. package/dist/gir/library.d.ts +37 -0
  83. package/dist/gir/library.d.ts.map +1 -0
  84. package/dist/gir/library.js +218 -0
  85. package/dist/gir/library.js.map +1 -0
  86. package/dist/gir/namespace.d.ts +36 -50
  87. package/dist/gir/namespace.d.ts.map +1 -1
  88. package/dist/gir/namespace.js +46 -36
  89. package/dist/gir/namespace.js.map +1 -1
  90. package/dist/gir/parameter.d.ts +25 -69
  91. package/dist/gir/parameter.d.ts.map +1 -1
  92. package/dist/gir/parameter.js +36 -57
  93. package/dist/gir/parameter.js.map +1 -1
  94. package/dist/gir/parse.d.ts +6 -70
  95. package/dist/gir/parse.d.ts.map +1 -1
  96. package/dist/gir/parse.js +32 -80
  97. package/dist/gir/parse.js.map +1 -1
  98. package/dist/gir/primitives.d.ts +3 -34
  99. package/dist/gir/primitives.d.ts.map +1 -1
  100. package/dist/gir/primitives.js +19 -35
  101. package/dist/gir/primitives.js.map +1 -1
  102. package/dist/gir/property.d.ts +16 -25
  103. package/dist/gir/property.d.ts.map +1 -1
  104. package/dist/gir/property.js +12 -9
  105. package/dist/gir/property.js.map +1 -1
  106. package/dist/gir/record.d.ts +27 -0
  107. package/dist/gir/record.d.ts.map +1 -0
  108. package/dist/gir/record.js +25 -0
  109. package/dist/gir/record.js.map +1 -0
  110. package/dist/gir/size.d.ts +10 -57
  111. package/dist/gir/size.d.ts.map +1 -1
  112. package/dist/gir/size.js +0 -25
  113. package/dist/gir/size.js.map +1 -1
  114. package/dist/gir/type-id.d.ts +49 -0
  115. package/dist/gir/type-id.d.ts.map +1 -0
  116. package/dist/gir/type-id.js +8 -0
  117. package/dist/gir/type-id.js.map +1 -0
  118. package/dist/gir/type-ref.d.ts +3 -77
  119. package/dist/gir/type-ref.d.ts.map +1 -1
  120. package/dist/gir/type-ref.js +35 -65
  121. package/dist/gir/type-ref.js.map +1 -1
  122. package/dist/gir/type.d.ts +33 -0
  123. package/dist/gir/type.d.ts.map +1 -0
  124. package/dist/gir/type.js +2 -0
  125. package/dist/gir/type.js.map +1 -0
  126. package/dist/index.d.ts +5 -11
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -11
  129. package/dist/index.js.map +1 -1
  130. package/dist/khronos/args.d.ts +30 -0
  131. package/dist/khronos/args.d.ts.map +1 -0
  132. package/dist/khronos/args.js +150 -0
  133. package/dist/khronos/args.js.map +1 -0
  134. package/dist/khronos/jsdoc.d.ts +21 -0
  135. package/dist/khronos/jsdoc.d.ts.map +1 -0
  136. package/dist/khronos/jsdoc.js +59 -0
  137. package/dist/khronos/jsdoc.js.map +1 -0
  138. package/dist/khronos/model.d.ts +37 -0
  139. package/dist/khronos/model.d.ts.map +1 -0
  140. package/dist/khronos/model.js +132 -0
  141. package/dist/khronos/model.js.map +1 -0
  142. package/dist/khronos/modules.d.ts +11 -0
  143. package/dist/khronos/modules.d.ts.map +1 -0
  144. package/dist/khronos/modules.js +58 -0
  145. package/dist/khronos/modules.js.map +1 -0
  146. package/dist/khronos/parse.d.ts +9 -0
  147. package/dist/khronos/parse.d.ts.map +1 -0
  148. package/dist/khronos/parse.js +61 -0
  149. package/dist/khronos/parse.js.map +1 -0
  150. package/dist/khronos/pipeline.d.ts +24 -0
  151. package/dist/khronos/pipeline.d.ts.map +1 -0
  152. package/dist/khronos/pipeline.js +182 -0
  153. package/dist/khronos/pipeline.js.map +1 -0
  154. package/dist/khronos/plan.d.ts +80 -0
  155. package/dist/khronos/plan.d.ts.map +1 -0
  156. package/dist/khronos/plan.js +136 -0
  157. package/dist/khronos/plan.js.map +1 -0
  158. package/dist/khronos/render.d.ts +16 -0
  159. package/dist/khronos/render.d.ts.map +1 -0
  160. package/dist/khronos/render.js +158 -0
  161. package/dist/khronos/render.js.map +1 -0
  162. package/dist/khronos/select.d.ts +15 -0
  163. package/dist/khronos/select.d.ts.map +1 -0
  164. package/dist/khronos/select.js +45 -0
  165. package/dist/khronos/select.js.map +1 -0
  166. package/dist/runner.d.ts +29 -47
  167. package/dist/runner.d.ts.map +1 -1
  168. package/dist/runner.js +78 -53
  169. package/dist/runner.js.map +1 -1
  170. package/dist/store/compile-store.d.ts +9 -0
  171. package/dist/store/compile-store.d.ts.map +1 -0
  172. package/dist/store/compile-store.js +38 -0
  173. package/dist/store/compile-store.js.map +1 -0
  174. package/dist/store/gi/async.d.ts +4 -0
  175. package/dist/store/gi/async.d.ts.map +1 -0
  176. package/dist/store/gi/async.js +41 -0
  177. package/dist/store/gi/async.js.map +1 -0
  178. package/dist/store/gi/callables.d.ts +36 -0
  179. package/dist/store/gi/callables.d.ts.map +1 -0
  180. package/dist/store/gi/callables.js +202 -0
  181. package/dist/store/gi/callables.js.map +1 -0
  182. package/dist/store/gi/callback.d.ts +4 -0
  183. package/dist/store/gi/callback.d.ts.map +1 -0
  184. package/dist/store/gi/callback.js +14 -0
  185. package/dist/store/gi/callback.js.map +1 -0
  186. package/dist/store/gi/class-struct-record.d.ts +9 -0
  187. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  188. package/dist/store/gi/class-struct-record.js +34 -0
  189. package/dist/store/gi/class-struct-record.js.map +1 -0
  190. package/dist/store/gi/class.d.ts +4 -0
  191. package/dist/store/gi/class.d.ts.map +1 -0
  192. package/dist/store/gi/class.js +169 -0
  193. package/dist/store/gi/class.js.map +1 -0
  194. package/dist/store/gi/companion.d.ts +4 -0
  195. package/dist/store/gi/companion.d.ts.map +1 -0
  196. package/dist/store/gi/companion.js +13 -0
  197. package/dist/store/gi/companion.js.map +1 -0
  198. package/dist/store/gi/constant.d.ts +5 -0
  199. package/dist/store/gi/constant.d.ts.map +1 -0
  200. package/dist/store/gi/constant.js +18 -0
  201. package/dist/store/gi/constant.js.map +1 -0
  202. package/dist/store/gi/constructor-props.d.ts +5 -0
  203. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  204. package/dist/store/gi/constructor-props.js +64 -0
  205. package/dist/store/gi/constructor-props.js.map +1 -0
  206. package/dist/store/gi/enum.d.ts +5 -0
  207. package/dist/store/gi/enum.d.ts.map +1 -0
  208. package/dist/store/gi/enum.js +38 -0
  209. package/dist/store/gi/enum.js.map +1 -0
  210. package/dist/store/gi/function.d.ts +8 -0
  211. package/dist/store/gi/function.d.ts.map +1 -0
  212. package/dist/store/gi/function.js +87 -0
  213. package/dist/store/gi/function.js.map +1 -0
  214. package/dist/store/gi/gtype-binding.d.ts +10 -0
  215. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  216. package/dist/store/gi/gtype-binding.js +20 -0
  217. package/dist/store/gi/gtype-binding.js.map +1 -0
  218. package/dist/store/gi/interface.d.ts +4 -0
  219. package/dist/store/gi/interface.d.ts.map +1 -0
  220. package/dist/store/gi/interface.js +99 -0
  221. package/dist/store/gi/interface.js.map +1 -0
  222. package/dist/store/gi/item-comparators.d.ts +6 -0
  223. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  224. package/dist/store/gi/item-comparators.js +76 -0
  225. package/dist/store/gi/item-comparators.js.map +1 -0
  226. package/dist/store/gi/method.d.ts +24 -0
  227. package/dist/store/gi/method.d.ts.map +1 -0
  228. package/dist/store/gi/method.js +279 -0
  229. package/dist/store/gi/method.js.map +1 -0
  230. package/dist/store/gi/param-marshal.d.ts +9 -0
  231. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  232. package/dist/store/gi/param-marshal.js +37 -0
  233. package/dist/store/gi/param-marshal.js.map +1 -0
  234. package/dist/store/gi/pipeline.d.ts +4 -0
  235. package/dist/store/gi/pipeline.d.ts.map +1 -0
  236. package/dist/store/gi/pipeline.js +80 -0
  237. package/dist/store/gi/pipeline.js.map +1 -0
  238. package/dist/store/gi/properties.d.ts +5 -0
  239. package/dist/store/gi/properties.d.ts.map +1 -0
  240. package/dist/store/gi/properties.js +30 -0
  241. package/dist/store/gi/properties.js.map +1 -0
  242. package/dist/store/gi/property-accessor.d.ts +26 -0
  243. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  244. package/dist/store/gi/property-accessor.js +132 -0
  245. package/dist/store/gi/property-accessor.js.map +1 -0
  246. package/dist/store/gi/record-constructor.d.ts +5 -0
  247. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  248. package/dist/store/gi/record-constructor.js +65 -0
  249. package/dist/store/gi/record-constructor.js.map +1 -0
  250. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  251. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  252. package/dist/store/gi/record-field-accessor.js +288 -0
  253. package/dist/store/gi/record-field-accessor.js.map +1 -0
  254. package/dist/store/gi/record-layout.d.ts +14 -0
  255. package/dist/store/gi/record-layout.d.ts.map +1 -0
  256. package/dist/store/gi/record-layout.js +96 -0
  257. package/dist/store/gi/record-layout.js.map +1 -0
  258. package/dist/store/gi/record.d.ts +4 -0
  259. package/dist/store/gi/record.d.ts.map +1 -0
  260. package/dist/store/gi/record.js +59 -0
  261. package/dist/store/gi/record.js.map +1 -0
  262. package/dist/store/gi/registration.d.ts +16 -0
  263. package/dist/store/gi/registration.d.ts.map +1 -0
  264. package/dist/store/gi/registration.js +20 -0
  265. package/dist/store/gi/registration.js.map +1 -0
  266. package/dist/store/gi/return-wrap.d.ts +10 -0
  267. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  268. package/dist/store/gi/return-wrap.js +46 -0
  269. package/dist/store/gi/return-wrap.js.map +1 -0
  270. package/dist/store/gi/runtime-override.d.ts +3 -0
  271. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  272. package/dist/{writers → store/gi}/runtime-override.js +0 -15
  273. package/dist/store/gi/runtime-override.js.map +1 -0
  274. package/dist/store/gi/signal.d.ts +5 -0
  275. package/dist/store/gi/signal.d.ts.map +1 -0
  276. package/dist/store/gi/signal.js +233 -0
  277. package/dist/store/gi/signal.js.map +1 -0
  278. package/dist/store/gi/vtable.d.ts +4 -0
  279. package/dist/store/gi/vtable.d.ts.map +1 -0
  280. package/dist/store/gi/vtable.js +78 -0
  281. package/dist/store/gi/vtable.js.map +1 -0
  282. package/dist/store/gi-store.d.ts +9 -0
  283. package/dist/store/gi-store.d.ts.map +1 -0
  284. package/dist/store/gi-store.js +57 -0
  285. package/dist/store/gi-store.js.map +1 -0
  286. package/dist/store/jsx-store.d.ts +5 -0
  287. package/dist/store/jsx-store.d.ts.map +1 -0
  288. package/dist/store/jsx-store.js +23 -0
  289. package/dist/store/jsx-store.js.map +1 -0
  290. package/dist/store/react/built-ins.d.ts +9 -0
  291. package/dist/store/react/built-ins.d.ts.map +1 -0
  292. package/dist/store/react/built-ins.js +226 -0
  293. package/dist/store/react/built-ins.js.map +1 -0
  294. package/dist/store/react/element-components.d.ts +15 -0
  295. package/dist/store/react/element-components.d.ts.map +1 -0
  296. package/dist/store/react/element-components.js +92 -0
  297. package/dist/store/react/element-components.js.map +1 -0
  298. package/dist/store/react/element-prop-types.d.ts +19 -0
  299. package/dist/store/react/element-prop-types.d.ts.map +1 -0
  300. package/dist/store/react/element-prop-types.js +244 -0
  301. package/dist/store/react/element-prop-types.js.map +1 -0
  302. package/dist/store/react/element-props.d.ts +4 -0
  303. package/dist/store/react/element-props.d.ts.map +1 -0
  304. package/dist/store/react/element-props.js +178 -0
  305. package/dist/store/react/element-props.js.map +1 -0
  306. package/dist/store/react/gir-index.d.ts +25 -0
  307. package/dist/store/react/gir-index.d.ts.map +1 -0
  308. package/dist/store/react/gir-index.js +55 -0
  309. package/dist/store/react/gir-index.js.map +1 -0
  310. package/dist/store/react/intrinsic-elements.d.ts +26 -0
  311. package/dist/store/react/intrinsic-elements.d.ts.map +1 -0
  312. package/dist/store/react/intrinsic-elements.js +107 -0
  313. package/dist/store/react/intrinsic-elements.js.map +1 -0
  314. package/dist/store/react/jsx.d.ts +18 -0
  315. package/dist/store/react/jsx.d.ts.map +1 -0
  316. package/dist/store/react/jsx.js +203 -0
  317. package/dist/store/react/jsx.js.map +1 -0
  318. package/dist/store/react/metadata.d.ts +4 -0
  319. package/dist/store/react/metadata.d.ts.map +1 -0
  320. package/dist/store/react/metadata.js +174 -0
  321. package/dist/store/react/metadata.js.map +1 -0
  322. package/dist/store/react/pipeline.d.ts +14 -0
  323. package/dist/store/react/pipeline.d.ts.map +1 -0
  324. package/dist/store/react/pipeline.js +60 -0
  325. package/dist/store/react/pipeline.js.map +1 -0
  326. package/dist/store/react/props.d.ts +36 -0
  327. package/dist/store/react/props.d.ts.map +1 -0
  328. package/dist/store/react/props.js +133 -0
  329. package/dist/store/react/props.js.map +1 -0
  330. package/dist/store/store-fs.d.ts +41 -0
  331. package/dist/store/store-fs.d.ts.map +1 -0
  332. package/dist/store/store-fs.js +71 -0
  333. package/dist/store/store-fs.js.map +1 -0
  334. package/dist/writer/context.d.ts +16 -0
  335. package/dist/writer/context.d.ts.map +1 -0
  336. package/dist/writer/context.js +44 -0
  337. package/dist/writer/context.js.map +1 -0
  338. package/dist/writer/doc.d.ts +2 -0
  339. package/dist/writer/doc.d.ts.map +1 -0
  340. package/dist/writer/doc.js +12 -0
  341. package/dist/writer/doc.js.map +1 -0
  342. package/dist/writer/emit.d.ts +8 -0
  343. package/dist/writer/emit.d.ts.map +1 -0
  344. package/dist/writer/emit.js +21 -0
  345. package/dist/writer/emit.js.map +1 -0
  346. package/dist/writer/gtk-doc.d.ts +2 -0
  347. package/dist/writer/gtk-doc.d.ts.map +1 -0
  348. package/dist/writer/gtk-doc.js +67 -0
  349. package/dist/writer/gtk-doc.js.map +1 -0
  350. package/dist/writer/imports.d.ts +10 -0
  351. package/dist/writer/imports.d.ts.map +1 -0
  352. package/dist/writer/imports.js +50 -0
  353. package/dist/writer/imports.js.map +1 -0
  354. package/dist/writer/module.d.ts +15 -0
  355. package/dist/writer/module.d.ts.map +1 -0
  356. package/dist/writer/module.js +46 -0
  357. package/dist/writer/module.js.map +1 -0
  358. package/overrides/cairo/context.ts.ejs +1269 -0
  359. package/overrides/cairo/font-face.ts.ejs +151 -0
  360. package/overrides/cairo/font-options.ts.ejs +199 -0
  361. package/overrides/cairo/image-surface.ts.ejs +132 -0
  362. package/overrides/cairo/index.ts.ejs +22 -0
  363. package/overrides/cairo/matrix.ts.ejs +171 -0
  364. package/overrides/cairo/pattern.ts.ejs +476 -0
  365. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  366. package/overrides/cairo/region.ts.ejs +237 -0
  367. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  368. package/overrides/cairo/surface.ts.ejs +296 -0
  369. package/overrides/gdk/index.ts.ejs +2 -0
  370. package/overrides/gdk/rgba.ts.ejs +11 -0
  371. package/overrides/gobject/index.ts.ejs +29 -0
  372. package/overrides/gobject/object.ts.ejs +51 -0
  373. package/overrides/gobject/value.ts.ejs +17 -0
  374. package/overrides/graphene/index.ts.ejs +2 -0
  375. package/overrides/graphene/structs.ts.ejs +37 -0
  376. package/overrides/gtk/constants.ts.ejs +3 -0
  377. package/overrides/gtk/index.ts.ejs +2 -0
  378. package/package.json +15 -15
  379. package/src/analysis/descriptor-render.ts +407 -0
  380. package/src/analysis/descriptor.ts +263 -0
  381. package/src/analysis/inheritance.ts +242 -0
  382. package/src/analysis/param-structure.ts +127 -0
  383. package/src/analysis/ts-type.ts +88 -0
  384. package/src/compile.ts +152 -0
  385. package/src/docs/api-reference.ts +361 -0
  386. package/src/docs/element-page.ts +290 -0
  387. package/src/docs/pipeline.ts +182 -0
  388. package/src/docs/render.ts +191 -0
  389. package/src/docs/symbol-page.ts +444 -0
  390. package/src/fingerprint.ts +40 -29
  391. package/src/gir/ancestry.ts +41 -0
  392. package/src/gir/callback.ts +25 -22
  393. package/src/gir/class.ts +31 -57
  394. package/src/gir/enum.ts +20 -38
  395. package/src/gir/field.ts +21 -36
  396. package/src/gir/function.ts +17 -56
  397. package/src/gir/gir-path.ts +49 -0
  398. package/src/gir/libraries.ts +77 -0
  399. package/src/gir/library.ts +248 -0
  400. package/src/gir/namespace.ts +85 -80
  401. package/src/gir/parameter.ts +64 -93
  402. package/src/gir/parse.ts +43 -95
  403. package/src/gir/primitives.ts +23 -45
  404. package/src/gir/property.ts +27 -29
  405. package/src/gir/record.ts +53 -0
  406. package/src/gir/size.ts +9 -56
  407. package/src/gir/type-id.ts +49 -0
  408. package/src/gir/type-ref.ts +35 -140
  409. package/src/gir/type.ts +16 -0
  410. package/src/index.ts +20 -15
  411. package/src/khronos/args.ts +202 -0
  412. package/src/khronos/jsdoc.ts +76 -0
  413. package/src/khronos/model.ts +166 -0
  414. package/src/khronos/modules.ts +75 -0
  415. package/src/khronos/parse.ts +66 -0
  416. package/src/khronos/pipeline.ts +234 -0
  417. package/src/khronos/plan.ts +191 -0
  418. package/src/khronos/registry/LICENSE +202 -0
  419. package/src/khronos/registry/gl.xml +47748 -0
  420. package/src/khronos/render.ts +193 -0
  421. package/src/khronos/select.ts +67 -0
  422. package/src/runner.ts +112 -75
  423. package/src/store/compile-store.ts +49 -0
  424. package/src/store/gi/async.ts +42 -0
  425. package/src/store/gi/callables.ts +309 -0
  426. package/src/store/gi/callback.ts +15 -0
  427. package/src/store/gi/class-struct-record.ts +40 -0
  428. package/src/store/gi/class.ts +212 -0
  429. package/src/store/gi/companion.ts +13 -0
  430. package/src/store/gi/constant.ts +24 -0
  431. package/src/store/gi/constructor-props.ts +82 -0
  432. package/src/store/gi/enum.ts +49 -0
  433. package/src/store/gi/function.ts +107 -0
  434. package/src/store/gi/gtype-binding.ts +33 -0
  435. package/src/store/gi/interface.ts +157 -0
  436. package/src/store/gi/item-comparators.ts +90 -0
  437. package/src/store/gi/method.ts +417 -0
  438. package/src/store/gi/param-marshal.ts +48 -0
  439. package/src/store/gi/pipeline.ts +85 -0
  440. package/src/store/gi/properties.ts +39 -0
  441. package/src/store/gi/property-accessor.ts +194 -0
  442. package/src/store/gi/record-constructor.ts +87 -0
  443. package/src/store/gi/record-field-accessor.ts +394 -0
  444. package/src/store/gi/record-layout.ts +134 -0
  445. package/src/store/gi/record.ts +66 -0
  446. package/src/store/gi/registration.ts +38 -0
  447. package/src/store/gi/return-wrap.ts +52 -0
  448. package/src/store/gi/runtime-override.ts +36 -0
  449. package/src/store/gi/signal.ts +310 -0
  450. package/src/store/gi/vtable.ts +99 -0
  451. package/src/store/gi-store.ts +79 -0
  452. package/src/store/jsx-store.ts +27 -0
  453. package/src/store/react/built-ins.ts +260 -0
  454. package/src/store/react/element-components.ts +138 -0
  455. package/src/store/react/element-prop-types.ts +280 -0
  456. package/src/store/react/element-props.ts +204 -0
  457. package/src/store/react/gir-index.ts +85 -0
  458. package/src/store/react/intrinsic-elements.ts +161 -0
  459. package/src/store/react/jsx.ts +294 -0
  460. package/src/store/react/metadata.ts +197 -0
  461. package/src/store/react/pipeline.ts +90 -0
  462. package/src/store/react/props.ts +197 -0
  463. package/src/store/store-fs.ts +112 -0
  464. package/src/writer/context.ts +48 -0
  465. package/src/writer/doc.ts +11 -0
  466. package/src/writer/emit.ts +26 -0
  467. package/src/writer/gtk-doc.ts +74 -0
  468. package/src/writer/imports.ts +59 -0
  469. package/src/writer/module.ts +45 -0
  470. package/LICENSE +0 -373
  471. package/dist/dsl/context.d.ts +0 -104
  472. package/dist/dsl/context.d.ts.map +0 -1
  473. package/dist/dsl/context.js +0 -140
  474. package/dist/dsl/context.js.map +0 -1
  475. package/dist/dsl/emit.d.ts +0 -28
  476. package/dist/dsl/emit.d.ts.map +0 -1
  477. package/dist/dsl/emit.js +0 -41
  478. package/dist/dsl/emit.js.map +0 -1
  479. package/dist/dsl/identifier.d.ts +0 -28
  480. package/dist/dsl/identifier.d.ts.map +0 -1
  481. package/dist/dsl/identifier.js +0 -45
  482. package/dist/dsl/identifier.js.map +0 -1
  483. package/dist/dsl/imports.d.ts +0 -58
  484. package/dist/dsl/imports.d.ts.map +0 -1
  485. package/dist/dsl/imports.js +0 -107
  486. package/dist/dsl/imports.js.map +0 -1
  487. package/dist/dsl/module.d.ts +0 -53
  488. package/dist/dsl/module.d.ts.map +0 -1
  489. package/dist/dsl/module.js +0 -76
  490. package/dist/dsl/module.js.map +0 -1
  491. package/dist/ffi/pipeline.d.ts +0 -19
  492. package/dist/ffi/pipeline.d.ts.map +0 -1
  493. package/dist/ffi/pipeline.js +0 -107
  494. package/dist/ffi/pipeline.js.map +0 -1
  495. package/dist/gi-store.d.ts +0 -34
  496. package/dist/gi-store.d.ts.map +0 -1
  497. package/dist/gi-store.js +0 -154
  498. package/dist/gi-store.js.map +0 -1
  499. package/dist/gir/boxed.d.ts +0 -66
  500. package/dist/gir/boxed.d.ts.map +0 -1
  501. package/dist/gir/boxed.js +0 -49
  502. package/dist/gir/boxed.js.map +0 -1
  503. package/dist/gir/qualified-name.d.ts +0 -37
  504. package/dist/gir/qualified-name.d.ts.map +0 -1
  505. package/dist/gir/qualified-name.js +0 -39
  506. package/dist/gir/qualified-name.js.map +0 -1
  507. package/dist/gir/qualify.d.ts +0 -32
  508. package/dist/gir/qualify.d.ts.map +0 -1
  509. package/dist/gir/qualify.js +0 -60
  510. package/dist/gir/qualify.js.map +0 -1
  511. package/dist/gir/repository.d.ts +0 -82
  512. package/dist/gir/repository.d.ts.map +0 -1
  513. package/dist/gir/repository.js +0 -122
  514. package/dist/gir/repository.js.map +0 -1
  515. package/dist/gir/signal.d.ts +0 -22
  516. package/dist/gir/signal.d.ts.map +0 -1
  517. package/dist/gir/signal.js +0 -20
  518. package/dist/gir/signal.js.map +0 -1
  519. package/dist/jsx-store.d.ts +0 -22
  520. package/dist/jsx-store.d.ts.map +0 -1
  521. package/dist/jsx-store.js +0 -40
  522. package/dist/jsx-store.js.map +0 -1
  523. package/dist/react/compounds-meta.d.ts +0 -18
  524. package/dist/react/compounds-meta.d.ts.map +0 -1
  525. package/dist/react/compounds-meta.js +0 -93
  526. package/dist/react/compounds-meta.js.map +0 -1
  527. package/dist/react/compounds.d.ts +0 -27
  528. package/dist/react/compounds.d.ts.map +0 -1
  529. package/dist/react/compounds.js +0 -164
  530. package/dist/react/compounds.js.map +0 -1
  531. package/dist/react/internal.d.ts +0 -14
  532. package/dist/react/internal.d.ts.map +0 -1
  533. package/dist/react/internal.js +0 -79
  534. package/dist/react/internal.js.map +0 -1
  535. package/dist/react/jsx.d.ts +0 -22
  536. package/dist/react/jsx.d.ts.map +0 -1
  537. package/dist/react/jsx.js +0 -134
  538. package/dist/react/jsx.js.map +0 -1
  539. package/dist/react/pipeline.d.ts +0 -13
  540. package/dist/react/pipeline.d.ts.map +0 -1
  541. package/dist/react/pipeline.js +0 -25
  542. package/dist/react/pipeline.js.map +0 -1
  543. package/dist/react/props.d.ts +0 -38
  544. package/dist/react/props.d.ts.map +0 -1
  545. package/dist/react/props.js +0 -231
  546. package/dist/react/props.js.map +0 -1
  547. package/dist/react/slot-props.d.ts +0 -10
  548. package/dist/react/slot-props.d.ts.map +0 -1
  549. package/dist/react/slot-props.js +0 -56
  550. package/dist/react/slot-props.js.map +0 -1
  551. package/dist/react/widgets.d.ts +0 -83
  552. package/dist/react/widgets.d.ts.map +0 -1
  553. package/dist/react/widgets.js +0 -152
  554. package/dist/react/widgets.js.map +0 -1
  555. package/dist/store-fs.d.ts +0 -109
  556. package/dist/store-fs.d.ts.map +0 -1
  557. package/dist/store-fs.js +0 -98
  558. package/dist/store-fs.js.map +0 -1
  559. package/dist/transpile.d.ts +0 -32
  560. package/dist/transpile.d.ts.map +0 -1
  561. package/dist/transpile.js +0 -63
  562. package/dist/transpile.js.map +0 -1
  563. package/dist/typecheck-store.d.ts +0 -41
  564. package/dist/typecheck-store.d.ts.map +0 -1
  565. package/dist/typecheck-store.js +0 -102
  566. package/dist/typecheck-store.js.map +0 -1
  567. package/dist/writers/alias.d.ts +0 -13
  568. package/dist/writers/alias.d.ts.map +0 -1
  569. package/dist/writers/alias.js +0 -17
  570. package/dist/writers/alias.js.map +0 -1
  571. package/dist/writers/async.d.ts +0 -22
  572. package/dist/writers/async.d.ts.map +0 -1
  573. package/dist/writers/async.js +0 -48
  574. package/dist/writers/async.js.map +0 -1
  575. package/dist/writers/boxed-constructor.d.ts +0 -26
  576. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  577. package/dist/writers/boxed-constructor.js +0 -85
  578. package/dist/writers/boxed-constructor.js.map +0 -1
  579. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  580. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  581. package/dist/writers/boxed-field-accessor.js +0 -260
  582. package/dist/writers/boxed-field-accessor.js.map +0 -1
  583. package/dist/writers/boxed-layout.d.ts +0 -27
  584. package/dist/writers/boxed-layout.d.ts.map +0 -1
  585. package/dist/writers/boxed-layout.js +0 -128
  586. package/dist/writers/boxed-layout.js.map +0 -1
  587. package/dist/writers/boxed.d.ts +0 -20
  588. package/dist/writers/boxed.d.ts.map +0 -1
  589. package/dist/writers/boxed.js +0 -71
  590. package/dist/writers/boxed.js.map +0 -1
  591. package/dist/writers/callables.d.ts +0 -124
  592. package/dist/writers/callables.d.ts.map +0 -1
  593. package/dist/writers/callables.js +0 -283
  594. package/dist/writers/callables.js.map +0 -1
  595. package/dist/writers/callback.d.ts +0 -16
  596. package/dist/writers/callback.d.ts.map +0 -1
  597. package/dist/writers/callback.js +0 -38
  598. package/dist/writers/callback.js.map +0 -1
  599. package/dist/writers/class-struct-record.d.ts +0 -31
  600. package/dist/writers/class-struct-record.d.ts.map +0 -1
  601. package/dist/writers/class-struct-record.js +0 -67
  602. package/dist/writers/class-struct-record.js.map +0 -1
  603. package/dist/writers/class-struct.d.ts +0 -22
  604. package/dist/writers/class-struct.d.ts.map +0 -1
  605. package/dist/writers/class-struct.js +0 -85
  606. package/dist/writers/class-struct.js.map +0 -1
  607. package/dist/writers/class.d.ts +0 -16
  608. package/dist/writers/class.d.ts.map +0 -1
  609. package/dist/writers/class.js +0 -307
  610. package/dist/writers/class.js.map +0 -1
  611. package/dist/writers/constant.d.ts +0 -15
  612. package/dist/writers/constant.d.ts.map +0 -1
  613. package/dist/writers/constant.js +0 -23
  614. package/dist/writers/constant.js.map +0 -1
  615. package/dist/writers/constants.d.ts +0 -15
  616. package/dist/writers/constants.d.ts.map +0 -1
  617. package/dist/writers/constants.js +0 -23
  618. package/dist/writers/constants.js.map +0 -1
  619. package/dist/writers/constructor-props.d.ts +0 -32
  620. package/dist/writers/constructor-props.d.ts.map +0 -1
  621. package/dist/writers/constructor-props.js +0 -110
  622. package/dist/writers/constructor-props.js.map +0 -1
  623. package/dist/writers/enum.d.ts +0 -21
  624. package/dist/writers/enum.d.ts.map +0 -1
  625. package/dist/writers/enum.js +0 -48
  626. package/dist/writers/enum.js.map +0 -1
  627. package/dist/writers/function.d.ts +0 -40
  628. package/dist/writers/function.d.ts.map +0 -1
  629. package/dist/writers/function.js +0 -127
  630. package/dist/writers/function.js.map +0 -1
  631. package/dist/writers/gtype-binding.d.ts +0 -19
  632. package/dist/writers/gtype-binding.d.ts.map +0 -1
  633. package/dist/writers/gtype-binding.js +0 -40
  634. package/dist/writers/gtype-binding.js.map +0 -1
  635. package/dist/writers/inheritance.d.ts +0 -48
  636. package/dist/writers/inheritance.d.ts.map +0 -1
  637. package/dist/writers/inheritance.js +0 -90
  638. package/dist/writers/inheritance.js.map +0 -1
  639. package/dist/writers/interface.d.ts +0 -16
  640. package/dist/writers/interface.d.ts.map +0 -1
  641. package/dist/writers/interface.js +0 -155
  642. package/dist/writers/interface.js.map +0 -1
  643. package/dist/writers/method.d.ts +0 -150
  644. package/dist/writers/method.d.ts.map +0 -1
  645. package/dist/writers/method.js +0 -510
  646. package/dist/writers/method.js.map +0 -1
  647. package/dist/writers/param-classify.d.ts +0 -93
  648. package/dist/writers/param-classify.d.ts.map +0 -1
  649. package/dist/writers/param-classify.js +0 -163
  650. package/dist/writers/param-classify.js.map +0 -1
  651. package/dist/writers/property-accessor.d.ts +0 -19
  652. package/dist/writers/property-accessor.d.ts.map +0 -1
  653. package/dist/writers/property-accessor.js +0 -117
  654. package/dist/writers/property-accessor.js.map +0 -1
  655. package/dist/writers/registration.d.ts +0 -27
  656. package/dist/writers/registration.d.ts.map +0 -1
  657. package/dist/writers/registration.js +0 -30
  658. package/dist/writers/registration.js.map +0 -1
  659. package/dist/writers/return-wrap.d.ts +0 -39
  660. package/dist/writers/return-wrap.d.ts.map +0 -1
  661. package/dist/writers/return-wrap.js +0 -152
  662. package/dist/writers/return-wrap.js.map +0 -1
  663. package/dist/writers/runtime-override.d.ts +0 -18
  664. package/dist/writers/runtime-override.d.ts.map +0 -1
  665. package/dist/writers/runtime-override.js.map +0 -1
  666. package/dist/writers/signal.d.ts +0 -21
  667. package/dist/writers/signal.d.ts.map +0 -1
  668. package/dist/writers/signal.js +0 -260
  669. package/dist/writers/signal.js.map +0 -1
  670. package/dist/writers/ts-type.d.ts +0 -50
  671. package/dist/writers/ts-type.d.ts.map +0 -1
  672. package/dist/writers/ts-type.js +0 -75
  673. package/dist/writers/ts-type.js.map +0 -1
  674. package/dist/writers/types-ts.d.ts +0 -27
  675. package/dist/writers/types-ts.d.ts.map +0 -1
  676. package/dist/writers/types-ts.js +0 -97
  677. package/dist/writers/types-ts.js.map +0 -1
  678. package/dist/writers/value.d.ts +0 -89
  679. package/dist/writers/value.d.ts.map +0 -1
  680. package/dist/writers/value.js +0 -402
  681. package/dist/writers/value.js.map +0 -1
  682. package/src/dsl/context.ts +0 -146
  683. package/src/dsl/emit.ts +0 -42
  684. package/src/dsl/identifier.ts +0 -52
  685. package/src/dsl/imports.ts +0 -109
  686. package/src/dsl/module.ts +0 -75
  687. package/src/ffi/pipeline.ts +0 -113
  688. package/src/gi-store.ts +0 -199
  689. package/src/gir/boxed.ts +0 -94
  690. package/src/gir/qualified-name.ts +0 -55
  691. package/src/gir/qualify.ts +0 -64
  692. package/src/gir/repository.ts +0 -149
  693. package/src/gir/signal.ts +0 -36
  694. package/src/jsx-store.ts +0 -53
  695. package/src/react/compounds-meta.ts +0 -99
  696. package/src/react/compounds.ts +0 -204
  697. package/src/react/internal.ts +0 -91
  698. package/src/react/jsx.ts +0 -155
  699. package/src/react/pipeline.ts +0 -29
  700. package/src/react/props.ts +0 -307
  701. package/src/react/slot-props.ts +0 -57
  702. package/src/react/widgets.ts +0 -185
  703. package/src/store-fs.ts +0 -157
  704. package/src/transpile.ts +0 -80
  705. package/src/typecheck-store.ts +0 -136
  706. package/src/writers/alias.ts +0 -19
  707. package/src/writers/async.ts +0 -44
  708. package/src/writers/boxed-constructor.ts +0 -105
  709. package/src/writers/boxed-field-accessor.ts +0 -306
  710. package/src/writers/boxed-layout.ts +0 -166
  711. package/src/writers/boxed.ts +0 -77
  712. package/src/writers/callables.ts +0 -339
  713. package/src/writers/callback.ts +0 -40
  714. package/src/writers/class-struct-record.ts +0 -75
  715. package/src/writers/class-struct.ts +0 -96
  716. package/src/writers/class.ts +0 -384
  717. package/src/writers/constant.ts +0 -29
  718. package/src/writers/constructor-props.ts +0 -130
  719. package/src/writers/enum.ts +0 -53
  720. package/src/writers/function.ts +0 -136
  721. package/src/writers/gtype-binding.ts +0 -48
  722. package/src/writers/inheritance.ts +0 -104
  723. package/src/writers/interface.ts +0 -168
  724. package/src/writers/method.ts +0 -678
  725. package/src/writers/param-classify.ts +0 -178
  726. package/src/writers/property-accessor.ts +0 -139
  727. package/src/writers/registration.ts +0 -42
  728. package/src/writers/return-wrap.ts +0 -180
  729. package/src/writers/runtime-override.ts +0 -59
  730. package/src/writers/signal.ts +0 -318
  731. package/src/writers/ts-type.ts +0 -115
  732. package/src/writers/value.ts +0 -485
@@ -1,110 +0,0 @@
1
- import { quote, toCamelCase, toIdentifier, toPascalCase } from "@gtkx/utils";
2
- import { indent } from "../dsl/emit.js";
3
- import { splitQualifiedName } from "../gir/qualified-name.js";
4
- import { collectInterfaceProperties } from "./inheritance.js";
5
- import { renderTsType } from "./ts-type.js";
6
- import { renderFfiType } from "./value.js";
7
- /**
8
- * Whether a property can be passed to a constructor: writable, construct, or
9
- * construct-only properties only. Read-only properties cannot be set through
10
- * `g_object_new_with_properties`.
11
- *
12
- * @param property - The GIR property
13
- */
14
- const isConstructable = (property) => property.writable || property.construct || property.constructOnly;
15
- /**
16
- * The constructable properties a class introduces: its own writable/construct
17
- * properties plus those it inherits from directly-implemented interfaces,
18
- * deduplicated by camelCase JS name (the class's own declaration wins).
19
- *
20
- * Ancestor class properties are intentionally excluded — each class translates
21
- * only the props it introduces and forwards the rest up the `super(...)` chain.
22
- *
23
- * @param context - The module context
24
- * @param klass - The class whose construct props to collect
25
- */
26
- const collectConstructableProps = (context, klass) => {
27
- const all = [...klass.properties, ...collectInterfaceProperties(context, klass)].filter(isConstructable);
28
- const seen = new Set();
29
- const result = [];
30
- for (const property of all) {
31
- const jsName = toIdentifier(toCamelCase(property.name));
32
- if (seen.has(jsName))
33
- continue;
34
- seen.add(jsName);
35
- result.push(property);
36
- }
37
- return result;
38
- };
39
- /**
40
- * Renders the `export interface <Class>ConstructorProps` declaration.
41
- *
42
- * Each interface lists the camelCase, optional, nullable form of every
43
- * property the class introduces and `extends` its parent's interface, so the
44
- * full inherited prop set is available when typing `new <Class>(props)`.
45
- *
46
- * @param context - The module context
47
- * @param klass - The class to render props for
48
- * @param className - The local PascalCase class name
49
- */
50
- export const renderConstructorPropsInterface = (context, klass, className) => {
51
- const parentRef = resolveParentPropsReference(context, klass);
52
- const extendsClause = parentRef === undefined ? "" : ` extends ${parentRef}`;
53
- const lines = collectConstructableProps(context, klass).map((property) => `${toIdentifier(toCamelCase(property.name))}?: ${renderTsType(context, property.type, true)};`);
54
- const body = lines.length === 0 ? "" : `\n${indent(lines.join("\n"), 1)}\n`;
55
- return `export interface ${className}ConstructorProps${extendsClause} {${body}}`;
56
- };
57
- /**
58
- * Renders the constructor for a class, or `undefined` when none is needed.
59
- *
60
- * The parentless root of a GObject hierarchy gets the canonical base
61
- * constructor that hands the assembled `GValue` record to
62
- * `constructGObjectInstance`. A class that introduces constructable props gets
63
- * a constructor that destructures and translates those props into `GValue`s,
64
- * spreads the untranslated remainder, and forwards everything to `super`. A
65
- * class that introduces no props gets no constructor and inherits its nearest
66
- * typed ancestor's, keeping the chain free of redundant hops.
67
- *
68
- * @param context - The module context
69
- * @param klass - The class being emitted
70
- * @param className - The local PascalCase class name
71
- * @param hasParent - Whether the class declares an `extends` clause
72
- */
73
- export const renderClassConstructor = (context, klass, className, hasParent) => {
74
- if (!hasParent)
75
- return renderRootConstructor(context);
76
- const props = collectConstructableProps(context, klass);
77
- if (props.length === 0)
78
- return undefined;
79
- return renderTranslatingConstructor(context, props, className);
80
- };
81
- /** The forwarding record of marshalled `GValue`s a constructor hands to `super`. */
82
- const GVALUE_RECORD = "Record<string, GValue | undefined>";
83
- const renderRootConstructor = (context) => {
84
- context.addConstructGObjectInstanceImport();
85
- context.addRuntimeImport("GValue");
86
- const body = "constructGObjectInstance(this, props);";
87
- return `constructor(props: ${GVALUE_RECORD} = {}) {\n${indent(body, 1)}\n}`;
88
- };
89
- const renderTranslatingConstructor = (context, props, className) => {
90
- context.addValueFromFfiOptionalImport();
91
- context.addRuntimeImport("GValue");
92
- const destructured = props.map((property) => toIdentifier(toCamelCase(property.name)));
93
- const pattern = `{ ${[...destructured, "...rest"].join(", ")} }`;
94
- const entries = props.map((property) => `${quote(property.name)}: valueFromFfiOptional(${renderFfiType(context, property.type, property.transferOwnership)}, ${toIdentifier(toCamelCase(property.name))}),`);
95
- const recordLiteral = `{\n${indent(entries.join("\n"), 1)}\n}`;
96
- const lines = [`const props: ${GVALUE_RECORD} = ${recordLiteral};`, "super({ ...props, ...rest });"];
97
- const body = lines.join("\n");
98
- return `constructor(${pattern}: ${className}ConstructorProps = {}) {\n${indent(body, 1)}\n}`;
99
- };
100
- const resolveParentPropsReference = (context, klass) => {
101
- if (klass.parent === undefined)
102
- return undefined;
103
- const { namespaceName, typeName } = splitQualifiedName(klass.parent, context.namespace.name);
104
- const propsName = `${toPascalCase(typeName)}ConstructorProps`;
105
- if (namespaceName === context.namespace.name)
106
- return propsName;
107
- const alias = context.addCrossNamespaceImport(namespaceName);
108
- return `${alias}.${propsName}`;
109
- };
110
- //# sourceMappingURL=constructor-props.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constructor-props.js","sourceRoot":"","sources":["../../src/writers/constructor-props.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirEnum } from "../gir/enum.js";
3
- /**
4
- * Emits the runtime declaration for an `<enumeration>` or `<bitfield>`.
5
- *
6
- * Two branches:
7
- * - `glib:error-domain` present → `export type Name = number` plus
8
- * `createErrorDomain(quark, members)` typed as `ErrorDomain<{ members }>`,
9
- * since the domain object must stay `instanceof`-matchable.
10
- * - GLib-registered enum/flags or C-only enum (no GLib registration) →
11
- * a TypeScript `enum Name { members }` declaration.
12
- *
13
- * Member names are derived from the GIR `name` attribute, uppercased with
14
- * hyphens normalized to underscores. Names that would start with a digit
15
- * (e.g. `5_6_5` → `_5_6_5`) are prefixed with an underscore.
16
- *
17
- * @param context - The module context
18
- * @param enumeration - The enum to emit
19
- */
20
- export declare const emitEnum: (context: ModuleContext, enumeration: GirEnum) => void;
21
- //# sourceMappingURL=enum.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/writers/enum.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAS,aAAa,EAAE,aAAa,OAAO,KAAG,IAkBvE,CAAC"}
@@ -1,48 +0,0 @@
1
- import { quote } from "@gtkx/utils";
2
- /**
3
- * Emits the runtime declaration for an `<enumeration>` or `<bitfield>`.
4
- *
5
- * Two branches:
6
- * - `glib:error-domain` present → `export type Name = number` plus
7
- * `createErrorDomain(quark, members)` typed as `ErrorDomain<{ members }>`,
8
- * since the domain object must stay `instanceof`-matchable.
9
- * - GLib-registered enum/flags or C-only enum (no GLib registration) →
10
- * a TypeScript `enum Name { members }` declaration.
11
- *
12
- * Member names are derived from the GIR `name` attribute, uppercased with
13
- * hyphens normalized to underscores. Names that would start with a digit
14
- * (e.g. `5_6_5` → `_5_6_5`) are prefixed with an underscore.
15
- *
16
- * @param context - The module context
17
- * @param enumeration - The enum to emit
18
- */
19
- export const emitEnum = (context, enumeration) => {
20
- if (!enumeration.introspectable)
21
- return;
22
- const name = enumeration.name;
23
- const memberKeys = enumeration.members.map((member) => memberKey(member.name));
24
- if (enumeration.errorDomain !== undefined) {
25
- const memberEntries = enumeration.members.map((member, index) => `${memberKeys[index]}: ${member.value}`);
26
- const typeFields = memberKeys.map((key) => `readonly ${key}: number`).join("; ");
27
- context.addRuntimeImport("createErrorDomain");
28
- context.addRuntimeImport("ErrorDomain");
29
- const quarkExpression = renderQuarkExpression(context, enumeration.errorDomain);
30
- context.module.appendDeclaration(`export type ${name} = number;`);
31
- context.module.appendDeclaration(`export const ${name}: ErrorDomain<{ ${typeFields} }> = createErrorDomain(${quarkExpression}, { ${memberEntries.join(", ")} });`);
32
- return;
33
- }
34
- const memberDeclarations = enumeration.members.map((member, index) => `${memberKeys[index]} = ${member.value}`);
35
- context.module.appendDeclaration(`export enum ${name} { ${memberDeclarations.join(", ")} }`);
36
- };
37
- const memberKey = (name) => {
38
- const upper = name.toUpperCase().replaceAll("-", "_");
39
- return /^[0-9]/.test(upper) ? `_${upper}` : upper;
40
- };
41
- const renderQuarkExpression = (context, errorDomain) => {
42
- if (context.namespace.name === "GLib") {
43
- return `() => quarkFromString(${quote(errorDomain)})`;
44
- }
45
- const alias = context.addCrossNamespaceImport("GLib");
46
- return `() => ${alias}.quarkFromString(${quote(errorDomain)})`;
47
- };
48
- //# sourceMappingURL=enum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/writers/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAsB,EAAE,WAAoB,EAAQ,EAAE;IAC3E,IAAI,CAAC,WAAW,CAAC,cAAc;QAAE,OAAO;IACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1G,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QAChF,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,IAAI,YAAY,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAC5B,gBAAgB,IAAI,mBAAmB,UAAU,2BAA2B,eAAe,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACnI,CAAC;QACF,OAAO;IACX,CAAC;IACD,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,IAAI,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAsB,EAAE,WAAmB,EAAU,EAAE;IAClF,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,yBAAyB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,SAAS,KAAK,oBAAoB,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;AACnE,CAAC,CAAC"}
@@ -1,40 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirFunction } from "../gir/function.js";
3
- import type { GirNamespace } from "../gir/namespace.js";
4
- /**
5
- * Renders the `t.fn(library, symbol, args, returnType)` expression for a
6
- * callable. Returns `undefined` when the callable cannot be bound (no C
7
- * identifier or missing namespace shared-library).
8
- *
9
- * @param context - The module context
10
- * @param fn - The callable
11
- */
12
- export declare const renderFnExpression: (context: ModuleContext, fn: GirFunction) => string | undefined;
13
- /**
14
- * Emits both the bound `const fooBinding = t.fn(...)` and the
15
- * `export function camelName(...)` wrapper for a namespace-level callable.
16
- *
17
- * Silently skipped when {@link renderFnExpression} cannot bind the callable
18
- * (e.g. macros, unintrospectable signatures) or when the GIR marks the
19
- * callable as `introspectable="0"`.
20
- *
21
- * @param context - The module context
22
- * @param fn - The callable
23
- */
24
- export declare const emitNamespaceFunction: (context: ModuleContext, fn: GirFunction) => void;
25
- /**
26
- * Emits a namespace's self-bootstrap statements as module-load side effects:
27
- * a call to its zero-argument `init` entry point and a `whenStopped`
28
- * registration for its zero-argument `finalize` entry point.
29
- *
30
- * GTK-style libraries expose top-level `init`/`finalize` functions (`gtk_init`,
31
- * `adw_init`, `gtk_source_finalize`, …). Calling `init()` as the module is
32
- * imported initializes the library's runtime before any of its types are
33
- * touched — without it a `Gdk` display lookup can run before `gtk_init`.
34
- * Deferring `finalize` to `whenStopped` runs it during shutdown.
35
- *
36
- * @param context - The module context
37
- * @param namespace - The namespace being generated
38
- */
39
- export declare const emitNamespaceBootstrap: (context: ModuleContext, namespace: GirNamespace) => void;
40
- //# sourceMappingURL=function.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/writers/function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAmDxD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAAM,GAAG,SAarF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,IAiB/E,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,WAAW,YAAY,KAAG,IAYxF,CAAC"}
@@ -1,127 +0,0 @@
1
- import { quote } from "@gtkx/utils";
2
- import { arrayLiteral, indent, joinArgs } from "../dsl/emit.js";
3
- import { namespaceFunctionExportName } from "../dsl/identifier.js";
4
- import { callableReferencesClassStruct } from "./class-struct-record.js";
5
- import { renderMethodBody, renderMethodReturnType, renderMethodSignature } from "./method.js";
6
- import { closureAndDestroyIndices, needsRefArg } from "./param-classify.js";
7
- import { renderFfiType, renderSelfFfiType, renderTrampolineType } from "./value.js";
8
- /**
9
- * Renders the FFI argument list for a callable, as a TypeScript array
10
- * literal suitable as the third argument to `t.fn(...)`.
11
- *
12
- * Includes the instance parameter (if any), every regular parameter, and
13
- * the implicit `GError**` ref when `throws=1`.
14
- *
15
- * @param context - The module context
16
- * @param fn - The callable
17
- */
18
- const renderArgsLiteral = (context, fn) => {
19
- const args = [];
20
- const instanceOffset = fn.instance === undefined ? 0 : 1;
21
- if (fn.instance !== undefined) {
22
- context.addRuntimeImport("t");
23
- args.push(`{ type: ${renderSelfFfiType(context, fn.instance)} }`);
24
- }
25
- const closureIndices = closureAndDestroyIndices(fn);
26
- fn.parameters.forEach((parameter, index) => {
27
- if (parameter.isVarargs)
28
- return;
29
- if (closureIndices.has(index))
30
- return;
31
- const optional = parameter.direction === "in" && (parameter.nullable || parameter.optional);
32
- args.push(argLiteral(context, parameter, optional, instanceOffset));
33
- });
34
- if (fn.throws) {
35
- context.addRuntimeImport("t");
36
- args.push(`{ type: t.ref(t.boxed("GError", "full", "libgobject-2.0.so.0", "g_error_get_type")) }`);
37
- }
38
- return arrayLiteral(args);
39
- };
40
- const argLiteral = (context, parameter, optional, instanceOffset) => {
41
- const trampoline = renderTrampolineType(context, parameter.type, parameter);
42
- const inner = trampoline ?? renderFfiType(context, parameter.type, parameter.transferOwnership, instanceOffset);
43
- const refWrapped = needsRefArg(context, parameter);
44
- const expression = refWrapped ? `t.ref(${inner})` : inner;
45
- return optional && !refWrapped ? `{ type: ${expression}, optional: true }` : `{ type: ${expression} }`;
46
- };
47
- /**
48
- * Renders the `t.fn(library, symbol, args, returnType)` expression for a
49
- * callable. Returns `undefined` when the callable cannot be bound (no C
50
- * identifier or missing namespace shared-library).
51
- *
52
- * @param context - The module context
53
- * @param fn - The callable
54
- */
55
- export const renderFnExpression = (context, fn) => {
56
- if (fn.cIdentifier === undefined)
57
- return undefined;
58
- const library = context.namespace.sharedLibrary;
59
- if (library === undefined)
60
- return undefined;
61
- context.addRuntimeImport("t");
62
- const args = renderArgsLiteral(context, fn);
63
- const returnType = renderFfiType(context, fn.returnValue.type, fn.returnValue.transferOwnership, fn.instance === undefined ? 0 : 1);
64
- return `t.fn(${joinArgs([quote(library), quote(fn.cIdentifier), args, returnType])})`;
65
- };
66
- /**
67
- * Emits both the bound `const fooBinding = t.fn(...)` and the
68
- * `export function camelName(...)` wrapper for a namespace-level callable.
69
- *
70
- * Silently skipped when {@link renderFnExpression} cannot bind the callable
71
- * (e.g. macros, unintrospectable signatures) or when the GIR marks the
72
- * callable as `introspectable="0"`.
73
- *
74
- * @param context - The module context
75
- * @param fn - The callable
76
- */
77
- export const emitNamespaceFunction = (context, fn) => {
78
- if (!fn.introspectable)
79
- return;
80
- if (fn.shadowedBy !== undefined)
81
- return;
82
- if (callableReferencesClassStruct(context, fn))
83
- return;
84
- const expression = renderFnExpression(context, fn);
85
- if (expression === undefined)
86
- return;
87
- const bindingName = fn.cIdentifier;
88
- if (bindingName === undefined)
89
- return;
90
- context.module.appendBinding(`const ${bindingName} = ${expression};`, bindingName);
91
- const exportName = namespaceFunctionExportName(bindingName, fn.name, context.namespace.cSymbolPrefixes);
92
- const signature = renderMethodSignature(context, fn);
93
- const returnType = renderMethodReturnType(context, fn);
94
- const body = renderMethodBody(context, fn, { bindingExpression: bindingName, isStatic: true });
95
- context.module.appendDeclaration(`export function ${exportName}(${signature}): ${returnType} {\n${indent(body, 1)}\n}`);
96
- };
97
- /**
98
- * Emits a namespace's self-bootstrap statements as module-load side effects:
99
- * a call to its zero-argument `init` entry point and a `whenStopped`
100
- * registration for its zero-argument `finalize` entry point.
101
- *
102
- * GTK-style libraries expose top-level `init`/`finalize` functions (`gtk_init`,
103
- * `adw_init`, `gtk_source_finalize`, …). Calling `init()` as the module is
104
- * imported initializes the library's runtime before any of its types are
105
- * touched — without it a `Gdk` display lookup can run before `gtk_init`.
106
- * Deferring `finalize` to `whenStopped` runs it during shutdown.
107
- *
108
- * @param context - The module context
109
- * @param namespace - The namespace being generated
110
- */
111
- export const emitNamespaceBootstrap = (context, namespace) => {
112
- for (const fn of namespace.functions) {
113
- if (fn.parameters.length > 0)
114
- continue;
115
- if (!fn.introspectable || fn.shadowedBy !== undefined || fn.cIdentifier === undefined)
116
- continue;
117
- const exportName = namespaceFunctionExportName(fn.cIdentifier, fn.name, context.namespace.cSymbolPrefixes);
118
- if (fn.name === "init") {
119
- context.module.appendRegistration(`${exportName}();`);
120
- }
121
- else if (fn.name === "finalize") {
122
- context.module.imports.addNamed("@gtkx/ffi", "whenStopped");
123
- context.module.appendRegistration(`whenStopped().then(${exportName});`);
124
- }
125
- }
126
- };
127
- //# sourceMappingURL=function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/writers/function.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- /**
3
- * Renders the JS expression that resolves a class's `GType`, appending any
4
- * required `t.fn` bindings to the module.
5
- *
6
- * For regular get-type symbols (`g_object_get_type`, `g_array_get_type`, …)
7
- * the helper appends a `t.fn(...)` binding for the symbol and returns the bare
8
- * function reference (`g_object_get_type`), which the runtime invokes once. For
9
- * the GIR sentinel `"intern"` — used on `GVariant` and a few other types whose
10
- * `GType` is registered intrinsically — it appends a binding for
11
- * `g_type_from_name` and returns a `() => g_type_from_name("…")` thunk. Returns
12
- * `undefined` when neither path is available.
13
- *
14
- * @param context - The module context
15
- * @param getType - The C symbol name or the GIR sentinel `"intern"`
16
- * @param glibTypeName - The GLib type name (for `"intern"` get-types)
17
- */
18
- export declare const renderGetTypeReference: (context: ModuleContext, getType: string, glibTypeName: string | undefined) => string | undefined;
19
- //# sourceMappingURL=gtype-binding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtype-binding.d.ts","sourceRoot":"","sources":["../../src/writers/gtype-binding.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,GAC/B,SAAS,aAAa,EACtB,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,SAAS,KACjC,MAAM,GAAG,SAQX,CAAC"}
@@ -1,40 +0,0 @@
1
- import { quote } from "@gtkx/utils";
2
- const TYPE_FROM_NAME_BINDING = "g_type_from_name";
3
- const TYPE_FROM_NAME_LIB = "libgobject-2.0.so.0";
4
- /**
5
- * Renders the JS expression that resolves a class's `GType`, appending any
6
- * required `t.fn` bindings to the module.
7
- *
8
- * For regular get-type symbols (`g_object_get_type`, `g_array_get_type`, …)
9
- * the helper appends a `t.fn(...)` binding for the symbol and returns the bare
10
- * function reference (`g_object_get_type`), which the runtime invokes once. For
11
- * the GIR sentinel `"intern"` — used on `GVariant` and a few other types whose
12
- * `GType` is registered intrinsically — it appends a binding for
13
- * `g_type_from_name` and returns a `() => g_type_from_name("…")` thunk. Returns
14
- * `undefined` when neither path is available.
15
- *
16
- * @param context - The module context
17
- * @param getType - The C symbol name or the GIR sentinel `"intern"`
18
- * @param glibTypeName - The GLib type name (for `"intern"` get-types)
19
- */
20
- export const renderGetTypeReference = (context, getType, glibTypeName) => {
21
- if (getType === "intern" || getType === "") {
22
- if (glibTypeName === undefined)
23
- return undefined;
24
- appendGTypeFromNameBinding(context);
25
- return `() => ${TYPE_FROM_NAME_BINDING}(${quote(glibTypeName)})`;
26
- }
27
- appendGetTypeBinding(context, getType);
28
- return getType;
29
- };
30
- const appendGetTypeBinding = (context, getType) => {
31
- const lib = context.namespace.sharedLibrary ?? "";
32
- const expression = `t.fn(${quote(lib)}, ${quote(getType)}, [], t.uint64)`;
33
- context.module.appendBinding(`const ${getType} = ${expression};`, getType);
34
- };
35
- const appendGTypeFromNameBinding = (context) => {
36
- const expression = `t.fn(${quote(TYPE_FROM_NAME_LIB)}, ${quote(TYPE_FROM_NAME_BINDING)}, ` +
37
- `[{ type: t.string("borrowed") }], t.uint64)`;
38
- context.module.appendBinding(`const ${TYPE_FROM_NAME_BINDING} = ${expression};`, TYPE_FROM_NAME_BINDING);
39
- };
40
- //# sourceMappingURL=gtype-binding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gtype-binding.js","sourceRoot":"","sources":["../../src/writers/gtype-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAClD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAsB,EACtB,OAAe,EACf,YAAgC,EACd,EAAE;IACpB,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACzC,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACjD,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,SAAS,sBAAsB,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;IACrE,CAAC;IACD,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAQ,EAAE;IAC3E,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,OAAO,MAAM,UAAU,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,OAAsB,EAAQ,EAAE;IAChE,MAAM,UAAU,GACZ,QAAQ,KAAK,CAAC,kBAAkB,CAAC,KAAK,KAAK,CAAC,sBAAsB,CAAC,IAAI;QACvE,6CAA6C,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,sBAAsB,MAAM,UAAU,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAC7G,CAAC,CAAC"}
@@ -1,48 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirClass } from "../gir/class.js";
3
- import type { GirProperty } from "../gir/property.js";
4
- import { type ResolvedQualifiedClass } from "../gir/qualified-name.js";
5
- /**
6
- * A directly-implemented interface resolved to its declaration and the
7
- * namespace that declares it.
8
- */
9
- export type ResolvedInterface = {
10
- readonly klass: GirClass;
11
- readonly namespaceName: string;
12
- };
13
- /**
14
- * Resolves an `<implements>` entry to its `<interface>` declaration.
15
- *
16
- * Returns `undefined` when the name resolves to a non-interface entity or
17
- * cannot be resolved at all.
18
- *
19
- * @param context - The module context
20
- * @param name - The (possibly cross-namespace) interface name
21
- */
22
- export declare const resolveImplementedInterface: (context: ModuleContext, name: string, defaultNamespace?: string) => ResolvedInterface | undefined;
23
- /**
24
- * Invokes `visit` for each ancestor class of `klass`, nearest first.
25
- *
26
- * Walks the same-namespace and cross-namespace parent chain, stopping at the
27
- * first unresolved parent or a cycle. Each ancestor is reported together with
28
- * the namespace it was resolved through so callers can qualify its references.
29
- *
30
- * @param context - The module context
31
- * @param klass - The class whose ancestors to visit
32
- * @param visit - Callback invoked once per resolved ancestor
33
- */
34
- export declare const forEachAncestor: (context: ModuleContext, klass: GirClass, visit: (ancestor: ResolvedQualifiedClass) => void) => void;
35
- /**
36
- * Collects the properties contributed by a class's directly-implemented
37
- * interfaces that are not already declared on the class itself or inherited
38
- * from an ancestor (or an ancestor-implemented interface).
39
- *
40
- * Each returned property carries its references re-rooted to the interface's
41
- * namespace so the class writer can emit its accessor and constructor prop
42
- * as if the property had been authored on the class.
43
- *
44
- * @param context - The module context
45
- * @param klass - The implementing class
46
- */
47
- export declare const collectInterfaceProperties: (context: ModuleContext, klass: GirClass) => readonly GirProperty[];
48
- //# sourceMappingURL=inheritance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inheritance.d.ts","sourceRoot":"","sources":["../../src/writers/inheritance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,sBAAsB,EAA6C,MAAM,0BAA0B,CAAC;AAGlH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACpC,SAAS,aAAa,EACtB,MAAM,MAAM,EACZ,mBAAkB,MAA+B,KAClD,iBAAiB,GAAG,SAKtB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GACxB,SAAS,aAAa,EACtB,OAAO,QAAQ,EACf,OAAO,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,KAClD,IAeF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,SAAS,WAAW,EAuBxG,CAAC"}
@@ -1,90 +0,0 @@
1
- import { toCamelCase, toIdentifier } from "@gtkx/utils";
2
- import { resolveQualifiedClass, splitQualifiedName } from "../gir/qualified-name.js";
3
- import { qualifyTypeRef } from "../gir/qualify.js";
4
- /**
5
- * Resolves an `<implements>` entry to its `<interface>` declaration.
6
- *
7
- * Returns `undefined` when the name resolves to a non-interface entity or
8
- * cannot be resolved at all.
9
- *
10
- * @param context - The module context
11
- * @param name - The (possibly cross-namespace) interface name
12
- */
13
- export const resolveImplementedInterface = (context, name, defaultNamespace = context.namespace.name) => {
14
- const { namespaceName, typeName } = splitQualifiedName(name, defaultNamespace);
15
- const resolved = context.repository.resolveNamed(namespaceName, typeName);
16
- if (resolved === undefined || resolved.kind !== "interface")
17
- return undefined;
18
- return { klass: resolved.value, namespaceName: resolved.namespace.name };
19
- };
20
- /**
21
- * Invokes `visit` for each ancestor class of `klass`, nearest first.
22
- *
23
- * Walks the same-namespace and cross-namespace parent chain, stopping at the
24
- * first unresolved parent or a cycle. Each ancestor is reported together with
25
- * the namespace it was resolved through so callers can qualify its references.
26
- *
27
- * @param context - The module context
28
- * @param klass - The class whose ancestors to visit
29
- * @param visit - Callback invoked once per resolved ancestor
30
- */
31
- export const forEachAncestor = (context, klass, visit) => {
32
- const visited = new Set();
33
- let current = klass.parent === undefined ? undefined : { name: klass.parent, defaultNamespace: context.namespace.name };
34
- while (current !== undefined) {
35
- const resolved = resolveQualifiedClass(context.repository, current.name, current.defaultNamespace);
36
- if (resolved === undefined)
37
- break;
38
- const key = `${resolved.namespaceName}.${resolved.klass.name}`;
39
- if (visited.has(key))
40
- break;
41
- visited.add(key);
42
- visit(resolved);
43
- current = resolved.klass.parent
44
- ? { name: resolved.klass.parent, defaultNamespace: resolved.namespaceName }
45
- : undefined;
46
- }
47
- };
48
- /**
49
- * Collects the properties contributed by a class's directly-implemented
50
- * interfaces that are not already declared on the class itself or inherited
51
- * from an ancestor (or an ancestor-implemented interface).
52
- *
53
- * Each returned property carries its references re-rooted to the interface's
54
- * namespace so the class writer can emit its accessor and constructor prop
55
- * as if the property had been authored on the class.
56
- *
57
- * @param context - The module context
58
- * @param klass - The implementing class
59
- */
60
- export const collectInterfaceProperties = (context, klass) => {
61
- const seen = new Set();
62
- for (const property of klass.properties)
63
- seen.add(toIdentifier(toCamelCase(property.name)));
64
- forEachAncestor(context, klass, (ancestor) => {
65
- for (const property of ancestor.klass.properties)
66
- seen.add(toIdentifier(toCamelCase(property.name)));
67
- for (const implementName of ancestor.klass.implements) {
68
- const iface = resolveImplementedInterface(context, implementName, ancestor.namespaceName);
69
- if (iface === undefined)
70
- continue;
71
- for (const property of iface.klass.properties)
72
- seen.add(toIdentifier(toCamelCase(property.name)));
73
- }
74
- });
75
- const result = [];
76
- for (const implementName of klass.implements) {
77
- const iface = resolveImplementedInterface(context, implementName);
78
- if (iface === undefined)
79
- continue;
80
- for (const property of iface.klass.properties) {
81
- const name = toIdentifier(toCamelCase(property.name));
82
- if (seen.has(name))
83
- continue;
84
- seen.add(name);
85
- result.push({ ...property, type: qualifyTypeRef(property.type, iface.namespaceName) });
86
- }
87
- }
88
- return result;
89
- };
90
- //# sourceMappingURL=inheritance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inheritance.js","sourceRoot":"","sources":["../../src/writers/inheritance.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { ModuleContext } from "../dsl/context.js";
2
- import type { GirClass } from "../gir/class.js";
3
- /**
4
- * Emits a class declaration for a `<interface>` element.
5
- *
6
- * Interfaces have no GIR parent — they extend the GObject base
7
- * (`GObject.Object`) in the generated output because every implementor is
8
- * itself a GObject. Methods, static functions, and constructors are
9
- * surfaced on the interface class just like a regular class so JS callers
10
- * can dispatch them directly on interface-typed values.
11
- *
12
- * @param context - The module context
13
- * @param iface - The interface to emit
14
- */
15
- export declare const emitInterface: (context: ModuleContext, iface: GirClass) => void;
16
- //# sourceMappingURL=interface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/writers/interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAqBhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,IAwBvE,CAAC"}