@ts-for-gir/lib 4.0.0-beta.4 → 4.0.0-beta.41

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 (541) hide show
  1. package/README.md +13 -1
  2. package/package.json +18 -31
  3. package/src/constants.ts +152 -0
  4. package/src/dependency-manager.ts +445 -0
  5. package/src/formatters/default.ts +7 -0
  6. package/src/formatters/formatter.ts +3 -0
  7. package/src/formatters/index.ts +3 -0
  8. package/src/formatters/json.ts +7 -0
  9. package/src/generators/generator.ts +65 -0
  10. package/src/generators/index.ts +2 -0
  11. package/src/generics/clutter.ts +80 -0
  12. package/src/generics/generify.ts +101 -0
  13. package/src/generics/gio.ts +91 -0
  14. package/src/generics/glib.ts +31 -0
  15. package/src/generics/gtk.ts +99 -0
  16. package/src/generics/meta.ts +50 -0
  17. package/src/generics/st.ts +206 -0
  18. package/src/generics/visitor.ts +484 -0
  19. package/src/gir/alias.ts +73 -0
  20. package/src/gir/callback.ts +79 -0
  21. package/src/gir/const.ts +73 -0
  22. package/src/gir/constructor.ts +91 -0
  23. package/src/gir/data.ts +12 -0
  24. package/src/gir/dependency-resolver.ts +81 -0
  25. package/src/gir/direct-allocation-constructor.ts +65 -0
  26. package/src/gir/enum-member.ts +51 -0
  27. package/src/gir/enum.ts +129 -0
  28. package/src/gir/error.ts +89 -0
  29. package/src/gir/function.ts +296 -0
  30. package/src/gir/generics.ts +66 -0
  31. package/src/gir/gir-complex-record.ts +7 -0
  32. package/src/gir/index.ts +25 -0
  33. package/src/gir/introspected-base.ts +104 -0
  34. package/src/gir/introspected-class-member.ts +15 -0
  35. package/src/gir/introspected-classes.ts +1484 -0
  36. package/src/gir/introspected-namespace-member.ts +24 -0
  37. package/src/gir/namespace.ts +76 -0
  38. package/src/gir/parameter.ts +199 -0
  39. package/src/gir/promisify.ts +209 -0
  40. package/src/gir/property.ts +203 -0
  41. package/src/gir/record.ts +488 -0
  42. package/src/gir/registry.ts +183 -0
  43. package/src/gir/signal.ts +278 -0
  44. package/src/gir-module.ts +719 -0
  45. package/src/gir.ts +869 -0
  46. package/src/index.ts +16 -0
  47. package/src/injections/gee08.ts +89 -0
  48. package/src/injections/gee1.ts +35 -0
  49. package/src/injections/gio.ts +720 -0
  50. package/src/injections/glib.ts +280 -0
  51. package/src/injections/gobject.ts +906 -0
  52. package/src/injections/gtk4.ts +23 -0
  53. package/src/injections/inject.ts +49 -0
  54. package/src/injections/shell.ts +49 -0
  55. package/src/injections/tracker1.ts +42 -0
  56. package/src/library-version.ts +50 -0
  57. package/src/logger.ts +104 -0
  58. package/src/messages.ts +57 -0
  59. package/src/templates/index.ts +1 -0
  60. package/src/templates/template-engine.ts +178 -0
  61. package/src/types/answer-version.ts +4 -0
  62. package/src/types/any-introspected-type.ts +5 -0
  63. package/src/types/class-function-types.ts +57 -0
  64. package/src/types/class-member.ts +5 -0
  65. package/src/types/class-parent.ts +14 -0
  66. package/src/types/class.ts +43 -0
  67. package/src/types/config-flags.ts +5 -0
  68. package/src/types/construct-name.ts +13 -0
  69. package/src/types/dependency-map.ts +4 -0
  70. package/src/types/dependency.ts +49 -0
  71. package/src/types/file-info.ts +14 -0
  72. package/src/types/format.ts +1 -0
  73. package/src/types/generator-constructor.ts +7 -0
  74. package/src/types/generics-config.ts +90 -0
  75. package/src/types/gir-any-element.ts +35 -0
  76. package/src/types/gir-module-interface.ts +22 -0
  77. package/src/types/gir-module-resolved.ts +32 -0
  78. package/src/types/gir-type-name.ts +20 -0
  79. package/src/types/index.ts +92 -0
  80. package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
  81. package/src/types/introspected.ts +18 -0
  82. package/src/types/local-name-check.ts +5 -0
  83. package/src/types/local-name-type.ts +1 -0
  84. package/src/types/local-name.ts +8 -0
  85. package/src/types/local-names.ts +5 -0
  86. package/src/types/metadata.ts +6 -0
  87. package/src/types/ns-loader.ts +6 -0
  88. package/src/types/options-base.ts +8 -0
  89. package/src/types/options-generation.ts +65 -0
  90. package/src/types/options-load.ts +6 -0
  91. package/src/types/options-transform.ts +5 -0
  92. package/src/types/output-format.ts +1 -0
  93. package/src/types/package-data-parsed.ts +28 -0
  94. package/src/types/package-data.ts +24 -0
  95. package/src/types/package-section-parsed.ts +9 -0
  96. package/src/types/parsed-gir.ts +5 -0
  97. package/src/types/parsed-package-data.ts +7 -0
  98. package/src/types/property-case.ts +1 -0
  99. package/src/types/resolve-type.ts +4 -0
  100. package/src/types/template-data.ts +8 -0
  101. package/src/types/template-options.ts +33 -0
  102. package/src/types/transformation-case.ts +9 -0
  103. package/src/types/transformations.ts +5 -0
  104. package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +14 -12
  105. package/src/types/ts-doc.ts +18 -0
  106. package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
  107. package/src/types/type-gir-class.ts +2 -0
  108. package/src/types/type-gir-element.ts +25 -0
  109. package/src/types/type-gir-enumeration-member.ts +2 -0
  110. package/{lib/types/type-gir-enumeration.d.ts → src/types/type-gir-enumeration.ts} +1 -1
  111. package/src/types/type-gir-function.ts +8 -0
  112. package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
  113. package/src/types/type-gir-method.ts +2 -0
  114. package/src/types/type-gir-parameter.ts +1 -0
  115. package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
  116. package/src/types/type-gir-variable.ts +1 -0
  117. package/src/types/type-ts-element.ts +13 -0
  118. package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
  119. package/src/types/type-ts-function.ts +1 -0
  120. package/src/types/type-ts-property.ts +1 -0
  121. package/src/types/user-config-load-result.ts +6 -0
  122. package/src/types/user-config.ts +70 -0
  123. package/src/util.ts +84 -0
  124. package/src/utils/conflicts/conflict-resolver.ts +122 -0
  125. package/src/utils/conflicts/function-conflict-detector.ts +139 -0
  126. package/src/utils/conflicts/index.ts +2 -0
  127. package/src/utils/conflicts.ts +593 -0
  128. package/src/utils/documentation.ts +471 -0
  129. package/src/utils/files.ts +71 -0
  130. package/src/utils/function-type-guards.ts +61 -0
  131. package/src/utils/generation.ts +69 -0
  132. package/src/utils/gir-parsing.ts +262 -0
  133. package/src/utils/girs.ts +113 -0
  134. package/src/utils/index.ts +14 -0
  135. package/src/utils/naming.ts +188 -0
  136. package/src/utils/numbers.ts +8 -0
  137. package/src/utils/objects.ts +129 -0
  138. package/src/utils/path.ts +7 -0
  139. package/src/utils/registry.ts +5 -0
  140. package/src/utils/strings.ts +134 -0
  141. package/src/utils/type-resolution.ts +116 -0
  142. package/src/utils/types.ts +249 -0
  143. package/src/validators/class.ts +324 -0
  144. package/src/validators/function-parameters.ts +52 -0
  145. package/src/validators/interface.ts +20 -0
  146. package/src/visitor.ts +58 -0
  147. package/lib/constants.d.ts +0 -26
  148. package/lib/constants.js +0 -28
  149. package/lib/constants.js.map +0 -1
  150. package/lib/dependency-manager.d.ts +0 -183
  151. package/lib/dependency-manager.js +0 -401
  152. package/lib/dependency-manager.js.map +0 -1
  153. package/lib/formatters/default.d.ts +0 -4
  154. package/lib/formatters/default.js +0 -7
  155. package/lib/formatters/default.js.map +0 -1
  156. package/lib/formatters/formatter.d.ts +0 -3
  157. package/lib/formatters/formatter.js +0 -3
  158. package/lib/formatters/formatter.js.map +0 -1
  159. package/lib/formatters/json.d.ts +0 -4
  160. package/lib/formatters/json.js +0 -7
  161. package/lib/formatters/json.js.map +0 -1
  162. package/lib/generators/dts/glib.d.ts +0 -2
  163. package/lib/generators/dts/glib.js +0 -514
  164. package/lib/generators/dts/glib.js.map +0 -1
  165. package/lib/generators/dts/gobject.d.ts +0 -2
  166. package/lib/generators/dts/gobject.js +0 -117
  167. package/lib/generators/dts/gobject.js.map +0 -1
  168. package/lib/generators/dts-inline.d.ts +0 -8
  169. package/lib/generators/dts-inline.js +0 -59
  170. package/lib/generators/dts-inline.js.map +0 -1
  171. package/lib/generators/dts-modules.d.ts +0 -8
  172. package/lib/generators/dts-modules.js +0 -100
  173. package/lib/generators/dts-modules.js.map +0 -1
  174. package/lib/generators/dts.d.ts +0 -45
  175. package/lib/generators/dts.js +0 -682
  176. package/lib/generators/dts.js.map +0 -1
  177. package/lib/generators/generator.d.ts +0 -45
  178. package/lib/generators/generator.js +0 -9
  179. package/lib/generators/generator.js.map +0 -1
  180. package/lib/generators/index.d.ts +0 -5
  181. package/lib/generators/index.js +0 -6
  182. package/lib/generators/index.js.map +0 -1
  183. package/lib/generators/json.d.ts +0 -256
  184. package/lib/generators/json.js +0 -869
  185. package/lib/generators/json.js.map +0 -1
  186. package/lib/generics/clutter.d.ts +0 -26
  187. package/lib/generics/clutter.js +0 -49
  188. package/lib/generics/clutter.js.map +0 -1
  189. package/lib/generics/generify.d.ts +0 -2
  190. package/lib/generics/generify.js +0 -39
  191. package/lib/generics/generify.js.map +0 -1
  192. package/lib/generics/gio.d.ts +0 -7
  193. package/lib/generics/gio.js +0 -51
  194. package/lib/generics/gio.js.map +0 -1
  195. package/lib/generics/glib.d.ts +0 -7
  196. package/lib/generics/glib.js +0 -18
  197. package/lib/generics/glib.js.map +0 -1
  198. package/lib/generics/meta.d.ts +0 -21
  199. package/lib/generics/meta.js +0 -26
  200. package/lib/generics/meta.js.map +0 -1
  201. package/lib/generics/st.d.ts +0 -16
  202. package/lib/generics/st.js +0 -92
  203. package/lib/generics/st.js.map +0 -1
  204. package/lib/generics/visitor.d.ts +0 -20
  205. package/lib/generics/visitor.js +0 -255
  206. package/lib/generics/visitor.js.map +0 -1
  207. package/lib/gir/alias.d.ts +0 -24
  208. package/lib/gir/alias.js +0 -43
  209. package/lib/gir/alias.js.map +0 -1
  210. package/lib/gir/base.d.ts +0 -62
  211. package/lib/gir/base.js +0 -95
  212. package/lib/gir/base.js.map +0 -1
  213. package/lib/gir/class.d.ts +0 -189
  214. package/lib/gir/class.js +0 -1131
  215. package/lib/gir/class.js.map +0 -1
  216. package/lib/gir/const.d.ts +0 -25
  217. package/lib/gir/const.js +0 -43
  218. package/lib/gir/const.js.map +0 -1
  219. package/lib/gir/enum.d.ts +0 -45
  220. package/lib/gir/enum.js +0 -164
  221. package/lib/gir/enum.js.map +0 -1
  222. package/lib/gir/function.d.ts +0 -199
  223. package/lib/gir/function.js +0 -683
  224. package/lib/gir/function.js.map +0 -1
  225. package/lib/gir/generics.d.ts +0 -5
  226. package/lib/gir/generics.js +0 -57
  227. package/lib/gir/generics.js.map +0 -1
  228. package/lib/gir/namespace.d.ts +0 -21
  229. package/lib/gir/namespace.js +0 -57
  230. package/lib/gir/namespace.js.map +0 -1
  231. package/lib/gir/nodes.d.ts +0 -11
  232. package/lib/gir/nodes.js +0 -12
  233. package/lib/gir/nodes.js.map +0 -1
  234. package/lib/gir/property.d.ts +0 -60
  235. package/lib/gir/property.js +0 -128
  236. package/lib/gir/property.js.map +0 -1
  237. package/lib/gir/registry.d.ts +0 -51
  238. package/lib/gir/registry.js +0 -144
  239. package/lib/gir/registry.js.map +0 -1
  240. package/lib/gir/signal.d.ts +0 -33
  241. package/lib/gir/signal.js +0 -165
  242. package/lib/gir/signal.js.map +0 -1
  243. package/lib/gir/util.d.ts +0 -49
  244. package/lib/gir/util.js +0 -559
  245. package/lib/gir/util.js.map +0 -1
  246. package/lib/gir-module.d.ts +0 -112
  247. package/lib/gir-module.js +0 -570
  248. package/lib/gir-module.js.map +0 -1
  249. package/lib/gir.d.ts +0 -253
  250. package/lib/gir.js +0 -642
  251. package/lib/gir.js.map +0 -1
  252. package/lib/index.d.ts +0 -14
  253. package/lib/index.js +0 -17
  254. package/lib/index.js.map +0 -1
  255. package/lib/injections/gee08.d.ts +0 -7
  256. package/lib/injections/gee08.js +0 -68
  257. package/lib/injections/gee08.js.map +0 -1
  258. package/lib/injections/gee1.d.ts +0 -7
  259. package/lib/injections/gee1.js +0 -28
  260. package/lib/injections/gee1.js.map +0 -1
  261. package/lib/injections/gio.d.ts +0 -7
  262. package/lib/injections/gio.js +0 -431
  263. package/lib/injections/gio.js.map +0 -1
  264. package/lib/injections/glib.d.ts +0 -7
  265. package/lib/injections/glib.js +0 -204
  266. package/lib/injections/glib.js.map +0 -1
  267. package/lib/injections/gobject.d.ts +0 -7
  268. package/lib/injections/gobject.js +0 -479
  269. package/lib/injections/gobject.js.map +0 -1
  270. package/lib/injections/inject.d.ts +0 -4
  271. package/lib/injections/inject.js +0 -28
  272. package/lib/injections/inject.js.map +0 -1
  273. package/lib/injections/tracker1.d.ts +0 -7
  274. package/lib/injections/tracker1.js +0 -30
  275. package/lib/injections/tracker1.js.map +0 -1
  276. package/lib/library-version.d.ts +0 -10
  277. package/lib/library-version.js +0 -45
  278. package/lib/library-version.js.map +0 -1
  279. package/lib/logger.d.ts +0 -36
  280. package/lib/logger.js +0 -134
  281. package/lib/logger.js.map +0 -1
  282. package/lib/messages.d.ts +0 -26
  283. package/lib/messages.js +0 -42
  284. package/lib/messages.js.map +0 -1
  285. package/lib/registry.d.ts +0 -8
  286. package/lib/registry.js +0 -12
  287. package/lib/registry.js.map +0 -1
  288. package/lib/transformation.d.ts +0 -181
  289. package/lib/transformation.js +0 -480
  290. package/lib/transformation.js.map +0 -1
  291. package/lib/types/answer-version.d.ts +0 -4
  292. package/lib/types/answer-version.js +0 -2
  293. package/lib/types/answer-version.js.map +0 -1
  294. package/lib/types/class-parent.d.ts +0 -13
  295. package/lib/types/class-parent.js +0 -2
  296. package/lib/types/class-parent.js.map +0 -1
  297. package/lib/types/config-flags.d.ts +0 -4
  298. package/lib/types/config-flags.js +0 -2
  299. package/lib/types/config-flags.js.map +0 -1
  300. package/lib/types/construct-name.d.ts +0 -1
  301. package/lib/types/construct-name.js +0 -2
  302. package/lib/types/construct-name.js.map +0 -1
  303. package/lib/types/dependency-map.d.ts +0 -4
  304. package/lib/types/dependency-map.js +0 -2
  305. package/lib/types/dependency-map.js.map +0 -1
  306. package/lib/types/dependency.d.ts +0 -42
  307. package/lib/types/dependency.js +0 -2
  308. package/lib/types/dependency.js.map +0 -1
  309. package/lib/types/file-info.d.ts +0 -14
  310. package/lib/types/file-info.js +0 -2
  311. package/lib/types/file-info.js.map +0 -1
  312. package/lib/types/format.d.ts +0 -1
  313. package/lib/types/format.js +0 -2
  314. package/lib/types/format.js.map +0 -1
  315. package/lib/types/gir-alias-element.d.ts +0 -4
  316. package/lib/types/gir-alias-element.js +0 -2
  317. package/lib/types/gir-alias-element.js.map +0 -1
  318. package/lib/types/gir-annotation.d.ts +0 -9
  319. package/lib/types/gir-annotation.js +0 -2
  320. package/lib/types/gir-annotation.js.map +0 -1
  321. package/lib/types/gir-any-element.d.ts +0 -2
  322. package/lib/types/gir-any-element.js +0 -2
  323. package/lib/types/gir-any-element.js.map +0 -1
  324. package/lib/types/gir-bitfield-element.d.ts +0 -6
  325. package/lib/types/gir-bitfield-element.js +0 -2
  326. package/lib/types/gir-bitfield-element.js.map +0 -1
  327. package/lib/types/gir-callable-param-element.d.ts +0 -4
  328. package/lib/types/gir-callable-param-element.js +0 -2
  329. package/lib/types/gir-callable-param-element.js.map +0 -1
  330. package/lib/types/gir-callable-params.d.ts +0 -7
  331. package/lib/types/gir-callable-params.js +0 -2
  332. package/lib/types/gir-callable-params.js.map +0 -1
  333. package/lib/types/gir-callable-return.d.ts +0 -5
  334. package/lib/types/gir-callable-return.js +0 -2
  335. package/lib/types/gir-callable-return.js.map +0 -1
  336. package/lib/types/gir-callback-element.d.ts +0 -6
  337. package/lib/types/gir-callback-element.js +0 -2
  338. package/lib/types/gir-callback-element.js.map +0 -1
  339. package/lib/types/gir-class-element.d.ts +0 -17
  340. package/lib/types/gir-class-element.js +0 -2
  341. package/lib/types/gir-class-element.js.map +0 -1
  342. package/lib/types/gir-constant-element.d.ts +0 -4
  343. package/lib/types/gir-constant-element.js +0 -2
  344. package/lib/types/gir-constant-element.js.map +0 -1
  345. package/lib/types/gir-constructor-element.d.ts +0 -6
  346. package/lib/types/gir-constructor-element.js +0 -2
  347. package/lib/types/gir-constructor-element.js.map +0 -1
  348. package/lib/types/gir-enum-element.d.ts +0 -6
  349. package/lib/types/gir-enum-element.js +0 -2
  350. package/lib/types/gir-enum-element.js.map +0 -1
  351. package/lib/types/gir-field-element.d.ts +0 -5
  352. package/lib/types/gir-field-element.js +0 -2
  353. package/lib/types/gir-field-element.js.map +0 -1
  354. package/lib/types/gir-function-element.d.ts +0 -6
  355. package/lib/types/gir-function-element.js +0 -2
  356. package/lib/types/gir-function-element.js.map +0 -1
  357. package/lib/types/gir-instance-parameter.d.ts +0 -8
  358. package/lib/types/gir-instance-parameter.js +0 -2
  359. package/lib/types/gir-instance-parameter.js.map +0 -1
  360. package/lib/types/gir-interface-element.d.ts +0 -16
  361. package/lib/types/gir-interface-element.js +0 -2
  362. package/lib/types/gir-interface-element.js.map +0 -1
  363. package/lib/types/gir-member-element.d.ts +0 -5
  364. package/lib/types/gir-member-element.js +0 -2
  365. package/lib/types/gir-member-element.js.map +0 -1
  366. package/lib/types/gir-method-element.d.ts +0 -7
  367. package/lib/types/gir-method-element.js +0 -2
  368. package/lib/types/gir-method-element.js.map +0 -1
  369. package/lib/types/gir-module-resolved-by.d.ts +0 -15
  370. package/lib/types/gir-module-resolved-by.js +0 -2
  371. package/lib/types/gir-module-resolved-by.js.map +0 -1
  372. package/lib/types/gir-modules-grouped-map.d.ts +0 -4
  373. package/lib/types/gir-modules-grouped-map.js +0 -2
  374. package/lib/types/gir-modules-grouped-map.js.map +0 -1
  375. package/lib/types/gir-modules-grouped.d.ts +0 -12
  376. package/lib/types/gir-modules-grouped.js +0 -2
  377. package/lib/types/gir-modules-grouped.js.map +0 -1
  378. package/lib/types/gir-namespace.d.ts +0 -27
  379. package/lib/types/gir-namespace.js +0 -2
  380. package/lib/types/gir-namespace.js.map +0 -1
  381. package/lib/types/gir-property-element.d.ts +0 -4
  382. package/lib/types/gir-property-element.js +0 -2
  383. package/lib/types/gir-property-element.js.map +0 -1
  384. package/lib/types/gir-record-element.d.ts +0 -10
  385. package/lib/types/gir-record-element.js +0 -2
  386. package/lib/types/gir-record-element.js.map +0 -1
  387. package/lib/types/gir-repository.d.ts +0 -5
  388. package/lib/types/gir-repository.js +0 -2
  389. package/lib/types/gir-repository.js.map +0 -1
  390. package/lib/types/gir-signal.d.ts +0 -10
  391. package/lib/types/gir-signal.js +0 -2
  392. package/lib/types/gir-signal.js.map +0 -1
  393. package/lib/types/gir-type-name.d.ts +0 -2
  394. package/lib/types/gir-type-name.js +0 -2
  395. package/lib/types/gir-type-name.js.map +0 -1
  396. package/lib/types/gir-union-element.d.ts +0 -9
  397. package/lib/types/gir-union-element.js +0 -2
  398. package/lib/types/gir-union-element.js.map +0 -1
  399. package/lib/types/gir-unparsed-number.d.ts +0 -2
  400. package/lib/types/gir-unparsed-number.js +0 -2
  401. package/lib/types/gir-unparsed-number.js.map +0 -1
  402. package/lib/types/gir-virtual-method.d.ts +0 -6
  403. package/lib/types/gir-virtual-method.js +0 -2
  404. package/lib/types/gir-virtual-method.js.map +0 -1
  405. package/lib/types/index.d.ts +0 -79
  406. package/lib/types/index.js +0 -80
  407. package/lib/types/index.js.map +0 -1
  408. package/lib/types/inheritance-table.js +0 -2
  409. package/lib/types/inheritance-table.js.map +0 -1
  410. package/lib/types/local-name-check.d.ts +0 -4
  411. package/lib/types/local-name-check.js +0 -2
  412. package/lib/types/local-name-check.js.map +0 -1
  413. package/lib/types/local-name-type.d.ts +0 -1
  414. package/lib/types/local-name-type.js +0 -2
  415. package/lib/types/local-name-type.js.map +0 -1
  416. package/lib/types/local-name.d.ts +0 -7
  417. package/lib/types/local-name.js +0 -2
  418. package/lib/types/local-name.js.map +0 -1
  419. package/lib/types/local-names.d.ts +0 -4
  420. package/lib/types/local-names.js +0 -2
  421. package/lib/types/local-names.js.map +0 -1
  422. package/lib/types/metadata.d.ts +0 -8
  423. package/lib/types/metadata.js +0 -2
  424. package/lib/types/metadata.js.map +0 -1
  425. package/lib/types/options-base.d.ts +0 -4
  426. package/lib/types/options-base.js +0 -2
  427. package/lib/types/options-base.js.map +0 -1
  428. package/lib/types/options-generation.d.ts +0 -33
  429. package/lib/types/options-generation.js +0 -2
  430. package/lib/types/options-generation.js.map +0 -1
  431. package/lib/types/options-load.d.ts +0 -5
  432. package/lib/types/options-load.js +0 -2
  433. package/lib/types/options-load.js.map +0 -1
  434. package/lib/types/options-transform.d.ts +0 -4
  435. package/lib/types/options-transform.js +0 -2
  436. package/lib/types/options-transform.js.map +0 -1
  437. package/lib/types/output-format.d.ts +0 -1
  438. package/lib/types/output-format.js +0 -2
  439. package/lib/types/output-format.js.map +0 -1
  440. package/lib/types/package-data-parsed.d.ts +0 -28
  441. package/lib/types/package-data-parsed.js +0 -2
  442. package/lib/types/package-data-parsed.js.map +0 -1
  443. package/lib/types/package-data.d.ts +0 -23
  444. package/lib/types/package-data.js +0 -2
  445. package/lib/types/package-data.js.map +0 -1
  446. package/lib/types/package-section-parsed.d.ts +0 -8
  447. package/lib/types/package-section-parsed.js +0 -2
  448. package/lib/types/package-section-parsed.js.map +0 -1
  449. package/lib/types/parsed-gir.d.ts +0 -5
  450. package/lib/types/parsed-gir.js +0 -2
  451. package/lib/types/parsed-gir.js.map +0 -1
  452. package/lib/types/parsed-package-data.d.ts +0 -6
  453. package/lib/types/parsed-package-data.js +0 -2
  454. package/lib/types/parsed-package-data.js.map +0 -1
  455. package/lib/types/part-of-class.d.ts +0 -7
  456. package/lib/types/part-of-class.js +0 -2
  457. package/lib/types/part-of-class.js.map +0 -1
  458. package/lib/types/part-of-module.d.ts +0 -6
  459. package/lib/types/part-of-module.js +0 -2
  460. package/lib/types/part-of-module.js.map +0 -1
  461. package/lib/types/property-case.d.ts +0 -1
  462. package/lib/types/property-case.js +0 -2
  463. package/lib/types/property-case.js.map +0 -1
  464. package/lib/types/resolve-type.d.ts +0 -4
  465. package/lib/types/resolve-type.js +0 -6
  466. package/lib/types/resolve-type.js.map +0 -1
  467. package/lib/types/template-data.d.ts +0 -7
  468. package/lib/types/template-data.js +0 -2
  469. package/lib/types/template-data.js.map +0 -1
  470. package/lib/types/transformation-case.d.ts +0 -1
  471. package/lib/types/transformation-case.js +0 -2
  472. package/lib/types/transformation-case.js.map +0 -1
  473. package/lib/types/transformations.d.ts +0 -4
  474. package/lib/types/transformations.js +0 -2
  475. package/lib/types/transformations.js.map +0 -1
  476. package/lib/types/ts-doc-tag.js +0 -2
  477. package/lib/types/ts-doc-tag.js.map +0 -1
  478. package/lib/types/ts-doc.d.ts +0 -16
  479. package/lib/types/ts-doc.js +0 -2
  480. package/lib/types/ts-doc.js.map +0 -1
  481. package/lib/types/type-gir-alias.js +0 -2
  482. package/lib/types/type-gir-alias.js.map +0 -1
  483. package/lib/types/type-gir-class.d.ts +0 -2
  484. package/lib/types/type-gir-class.js +0 -2
  485. package/lib/types/type-gir-class.js.map +0 -1
  486. package/lib/types/type-gir-element.d.ts +0 -3
  487. package/lib/types/type-gir-element.js +0 -2
  488. package/lib/types/type-gir-element.js.map +0 -1
  489. package/lib/types/type-gir-enumeration-member.d.ts +0 -2
  490. package/lib/types/type-gir-enumeration-member.js +0 -2
  491. package/lib/types/type-gir-enumeration-member.js.map +0 -1
  492. package/lib/types/type-gir-enumeration.js +0 -2
  493. package/lib/types/type-gir-enumeration.js.map +0 -1
  494. package/lib/types/type-gir-function.d.ts +0 -1
  495. package/lib/types/type-gir-function.js +0 -2
  496. package/lib/types/type-gir-function.js.map +0 -1
  497. package/lib/types/type-gir-interface.js +0 -2
  498. package/lib/types/type-gir-interface.js.map +0 -1
  499. package/lib/types/type-gir-method.d.ts +0 -2
  500. package/lib/types/type-gir-method.js +0 -2
  501. package/lib/types/type-gir-method.js.map +0 -1
  502. package/lib/types/type-gir-parameter.d.ts +0 -1
  503. package/lib/types/type-gir-parameter.js +0 -2
  504. package/lib/types/type-gir-parameter.js.map +0 -1
  505. package/lib/types/type-gir-property.js +0 -2
  506. package/lib/types/type-gir-property.js.map +0 -1
  507. package/lib/types/type-gir-variable.d.ts +0 -1
  508. package/lib/types/type-gir-variable.js +0 -2
  509. package/lib/types/type-gir-variable.js.map +0 -1
  510. package/lib/types/type-ts-element.d.ts +0 -3
  511. package/lib/types/type-ts-element.js +0 -2
  512. package/lib/types/type-ts-element.js.map +0 -1
  513. package/lib/types/type-ts-enumeration-member.js +0 -2
  514. package/lib/types/type-ts-enumeration-member.js.map +0 -1
  515. package/lib/types/type-ts-function.d.ts +0 -1
  516. package/lib/types/type-ts-function.js +0 -2
  517. package/lib/types/type-ts-function.js.map +0 -1
  518. package/lib/types/type-ts-property.d.ts +0 -1
  519. package/lib/types/type-ts-property.js +0 -2
  520. package/lib/types/type-ts-property.js.map +0 -1
  521. package/lib/types/user-config-load-result.d.ts +0 -6
  522. package/lib/types/user-config-load-result.js +0 -2
  523. package/lib/types/user-config-load-result.js.map +0 -1
  524. package/lib/types/user-config.d.ts +0 -35
  525. package/lib/types/user-config.js +0 -2
  526. package/lib/types/user-config.js.map +0 -1
  527. package/lib/util.d.ts +0 -20
  528. package/lib/util.js +0 -67
  529. package/lib/util.js.map +0 -1
  530. package/lib/utils.d.ts +0 -268
  531. package/lib/utils.js +0 -417
  532. package/lib/utils.js.map +0 -1
  533. package/lib/validators/class.d.ts +0 -7
  534. package/lib/validators/class.js +0 -217
  535. package/lib/validators/class.js.map +0 -1
  536. package/lib/validators/interface.d.ts +0 -5
  537. package/lib/validators/interface.js +0 -16
  538. package/lib/validators/interface.js.map +0 -1
  539. package/lib/visitor.d.ts +0 -35
  540. package/lib/visitor.js +0 -29
  541. package/lib/visitor.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ export abstract class Formatter {
2
+ abstract format(source: string): Promise<string>;
3
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./default.ts";
2
+ export * from "./formatter.ts";
3
+ export * from "./json.ts";
@@ -0,0 +1,7 @@
1
+ import { Formatter } from "./formatter.ts";
2
+
3
+ export class JSONFormatter extends Formatter {
4
+ format(source: string): Promise<string> {
5
+ return Promise.resolve(JSON.stringify(JSON.parse(source), null, 4));
6
+ }
7
+ }
@@ -0,0 +1,65 @@
1
+ import type { IntrospectedAlias } from "../gir/alias.ts";
2
+ import type { IntrospectedCallback } from "../gir/callback.ts";
3
+ import type { IntrospectedConstant } from "../gir/const.ts";
4
+ import type { IntrospectedConstructor } from "../gir/constructor.ts";
5
+ import type { IntrospectedDirectAllocationConstructor } from "../gir/direct-allocation-constructor.ts";
6
+ import type { IntrospectedEnum } from "../gir/enum.ts";
7
+ import type { GirEnumMember } from "../gir/enum-member.ts";
8
+ import type { IntrospectedError } from "../gir/error.ts";
9
+ import type { IntrospectedFunction } from "../gir/function.ts";
10
+ import type {
11
+ IntrospectedClass,
12
+ IntrospectedClassCallback,
13
+ IntrospectedClassFunction,
14
+ IntrospectedInterface,
15
+ IntrospectedStaticClassFunction,
16
+ IntrospectedVirtualClassFunction,
17
+ } from "../gir/introspected-classes.ts";
18
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
19
+ import type { IntrospectedFunctionParameter } from "../gir/parameter.ts";
20
+ import type { IntrospectedField, IntrospectedProperty } from "../gir/property.ts";
21
+ import type { IntrospectedRecord } from "../gir/record.ts";
22
+ import type { IntrospectedSignal, IntrospectedSignalType } from "../gir/signal.ts";
23
+ import type { TypeExpression } from "../gir.ts";
24
+ import type { OptionsGeneration } from "../types/options-generation.ts";
25
+
26
+ // TODO: Move to types/
27
+ export interface GenericDescriptor {
28
+ type: TypeExpression;
29
+ name: string;
30
+ }
31
+
32
+ export abstract class FormatGenerator<T = string> {
33
+ protected namespace: IntrospectedNamespace;
34
+ protected options: OptionsGeneration;
35
+
36
+ constructor(namespace: IntrospectedNamespace, options: OptionsGeneration) {
37
+ this.namespace = namespace;
38
+ this.options = options;
39
+ }
40
+
41
+ abstract generateNamespace(node: IntrospectedNamespace): Promise<T | null>;
42
+ abstract stringifyNamespace(node: IntrospectedNamespace): Promise<string | null>;
43
+
44
+ abstract generateCallback(node: IntrospectedCallback): T;
45
+ abstract generateClassCallback(node: IntrospectedClassCallback): T;
46
+ abstract generateAlias(node: IntrospectedAlias): T;
47
+ abstract generateConstructor(node: IntrospectedConstructor): T;
48
+ abstract generateDirectAllocationConstructor(node: IntrospectedDirectAllocationConstructor): T;
49
+ abstract generateConstructorFunction(node: IntrospectedConstructor): T;
50
+ abstract generateRecord(node: IntrospectedRecord): T;
51
+ abstract generateInterface(node: IntrospectedInterface): T;
52
+ abstract generateEnumMember(node: GirEnumMember): T;
53
+ abstract generateError(node: IntrospectedError): T;
54
+ abstract generateEnum(node: IntrospectedEnum): T;
55
+ abstract generateConst(node: IntrospectedConstant): T;
56
+ abstract generateClass(node: IntrospectedClass): T;
57
+ abstract generateParameter(node: IntrospectedFunctionParameter): T;
58
+ abstract generateProperty(node: IntrospectedProperty, construct?: boolean): T;
59
+ abstract generateField(node: IntrospectedField): T;
60
+ abstract generateSignal(node: IntrospectedSignal, type?: IntrospectedSignalType): T;
61
+ abstract generateFunction(node: IntrospectedFunction): T;
62
+ abstract generateClassFunction(node: IntrospectedClassFunction): T;
63
+ abstract generateStaticClassFunction(node: IntrospectedStaticClassFunction): T;
64
+ abstract generateVirtualClassFunction(node: IntrospectedVirtualClassFunction): T;
65
+ }
@@ -0,0 +1,2 @@
1
+ // Common generator interfaces and utilities
2
+ export * from "./generator.ts";
@@ -0,0 +1,80 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import { GenericType } from "../gir.ts";
3
+ import type { ClutterTemplateConfig } from "../types/generics-config.ts";
4
+
5
+ function createClutterTemplate(version: string): ClutterTemplateConfig {
6
+ return {
7
+ namespace: "Clutter",
8
+ version,
9
+ modifier: (namespace: IntrospectedNamespace, inferGenerics: boolean) => {
10
+ if (!inferGenerics) {
11
+ return;
12
+ }
13
+
14
+ applyClutterGenerics(namespace);
15
+ },
16
+ };
17
+ }
18
+
19
+ function applyClutterGenerics(namespace: IntrospectedNamespace): void {
20
+ const Actor = namespace.assertClass("Actor");
21
+ const Content = namespace.assertClass("Content");
22
+ const LayoutManager = namespace.assertClass("LayoutManager");
23
+
24
+ // Add generics to Actor
25
+ Actor.addGeneric({
26
+ default: LayoutManager.getType(),
27
+ constraint: LayoutManager.getType(),
28
+ });
29
+
30
+ Actor.addGeneric({
31
+ default: Content.getType(),
32
+ constraint: Content.getType(),
33
+ });
34
+
35
+ // Update layout_manager properties
36
+ updatePropertyType(Actor, ["layout_manager", "layoutManager"], new GenericType("A", Content.getType()));
37
+
38
+ // Update content properties
39
+ updatePropertyType(Actor, ["content"], new GenericType("B", Content.getType()));
40
+
41
+ // Configure Clone class
42
+ const Clone = namespace.assertClass("Clone");
43
+ Clone.addGeneric({
44
+ default: Actor.getType(),
45
+ constraint: Actor.getType(),
46
+ });
47
+
48
+ updatePropertyType(Clone, ["source"], new GenericType("A", Content.getType()));
49
+ }
50
+
51
+ function updatePropertyType(
52
+ cls: ReturnType<IntrospectedNamespace["assertClass"]>,
53
+ propertyNames: string[],
54
+ newType: GenericType,
55
+ ): void {
56
+ cls.props
57
+ .filter((p) => propertyNames.includes(p.name))
58
+ .forEach((prop) => {
59
+ // TODO: Automatically infer such changes.
60
+ prop.type = newType;
61
+ });
62
+ }
63
+
64
+ // Version exports
65
+ export const clutter10 = createClutterTemplate("10");
66
+ export const clutter11 = createClutterTemplate("11");
67
+ export const clutter12 = createClutterTemplate("12");
68
+ export const clutter13 = createClutterTemplate("13");
69
+ /** Clutter-14 was introduced with GNOME 45 */
70
+ export const clutter14 = createClutterTemplate("14");
71
+ /** Clutter-15 was introduced with GNOME 47 */
72
+ export const clutter15 = createClutterTemplate("15");
73
+ /** Clutter-16 was introduced with GNOME 48 */
74
+ export const clutter16 = createClutterTemplate("16");
75
+ /** Clutter-17 was introduced with GNOME 49 */
76
+ export const clutter17 = createClutterTemplate("17");
77
+ // Possibly future versions, adjust if necessary
78
+ export const clutter18 = createClutterTemplate("18");
79
+ export const clutter19 = createClutterTemplate("19");
80
+ export const clutter20 = createClutterTemplate("20");
@@ -0,0 +1,101 @@
1
+ import type { NSRegistry } from "../gir/registry.ts";
2
+ import type { NamespaceDefinition } from "../types/generics-config.ts";
3
+ import {
4
+ clutter10,
5
+ clutter11,
6
+ clutter12,
7
+ clutter13,
8
+ clutter14,
9
+ clutter15,
10
+ clutter16,
11
+ clutter17,
12
+ clutter18,
13
+ clutter19,
14
+ clutter20,
15
+ } from "./clutter.ts";
16
+ import gio from "./gio.ts";
17
+ import glib from "./glib.ts";
18
+ import gtk from "./gtk.ts";
19
+ import { meta10, meta11, meta12, meta13, meta14, meta15, meta16, meta17, meta18, meta19, meta20 } from "./meta.ts";
20
+ import { st1, st12, st13, st14, st15, st16, st17, st18, st19, st20 } from "./st.ts";
21
+ import { GenericVisitor } from "./visitor.ts";
22
+
23
+ // Core namespace definitions that are required
24
+ const CORE_DEFINITIONS: NamespaceDefinition[] = [gio, glib];
25
+
26
+ // Optional namespace definitions
27
+ const OPTIONAL_DEFINITIONS: NamespaceDefinition[] = [
28
+ gtk,
29
+ clutter10,
30
+ clutter11,
31
+ clutter12,
32
+ clutter13,
33
+ clutter14,
34
+ clutter15,
35
+ clutter16,
36
+ clutter17,
37
+ clutter18,
38
+ clutter19,
39
+ clutter20,
40
+ st1,
41
+ st12,
42
+ st13,
43
+ st14,
44
+ st15,
45
+ st16,
46
+ st17,
47
+ st18,
48
+ st19,
49
+ st20,
50
+ meta10,
51
+ meta11,
52
+ meta12,
53
+ meta13,
54
+ meta14,
55
+ meta15,
56
+ meta16,
57
+ meta17,
58
+ meta18,
59
+ meta19,
60
+ meta20,
61
+ ];
62
+
63
+ function createDefinitionProcessor(registry: NSRegistry, inferGenerics: boolean, required: boolean = true) {
64
+ return (definition: NamespaceDefinition) => {
65
+ const { namespace: namespaceName, version, modifier } = definition;
66
+ const namespace = registry.namespace(namespaceName, version);
67
+
68
+ if (namespace) {
69
+ modifier(namespace, inferGenerics);
70
+ return;
71
+ }
72
+
73
+ if (required) {
74
+ throw new Error(`Could not generify ${namespaceName} ${version}`);
75
+ }
76
+ };
77
+ }
78
+
79
+ function applyDefinitions(
80
+ definitions: NamespaceDefinition[],
81
+ processor: (definition: NamespaceDefinition) => void,
82
+ ): void {
83
+ for (const definition of definitions) {
84
+ processor(definition);
85
+ }
86
+ }
87
+
88
+ export function generify(registry: NSRegistry, inferGenerics: boolean): void {
89
+ const processCoreDefinition = createDefinitionProcessor(registry, inferGenerics, true);
90
+ const processOptionalDefinition = createDefinitionProcessor(registry, inferGenerics, false);
91
+
92
+ // Apply core definitions (required)
93
+ applyDefinitions(CORE_DEFINITIONS, processCoreDefinition);
94
+
95
+ // Apply optional definitions
96
+ applyDefinitions(OPTIONAL_DEFINITIONS, processOptionalDefinition);
97
+
98
+ // Register visitor for runtime transformations
99
+ const visitor = new GenericVisitor(inferGenerics);
100
+ registry.registerTransformation(visitor);
101
+ }
@@ -0,0 +1,91 @@
1
+ import type { IntrospectedBaseClass, IntrospectedClassFunction } from "../gir/introspected-classes.ts";
2
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
3
+ import { AnyType, Generic, GenericType, GenerifiedTypeIdentifier, StringType, TypeIdentifier } from "../gir.ts";
4
+ import type { GioConfig } from "../types/generics-config.ts";
5
+
6
+ function createGioConfig(): GioConfig {
7
+ return {
8
+ namespace: "Gio",
9
+ version: "2.0",
10
+ modifier: (namespace: IntrospectedNamespace) => {
11
+ applyGioGenerics(namespace);
12
+ },
13
+ };
14
+ }
15
+
16
+ function applyGioGenerics(namespace: IntrospectedNamespace): void {
17
+ const GObject = namespace.assertInstalledImport("GObject").assertClass("Object");
18
+
19
+ setupAsyncInitable(namespace, GObject);
20
+ setupListModel(namespace, GObject);
21
+ setupListStore(namespace, GObject);
22
+ setupSettingsValueMethods(namespace);
23
+ }
24
+
25
+ function setupAsyncInitable(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
26
+ const AsyncInitable = namespace.getClass("AsyncInitable");
27
+ if (!AsyncInitable) {
28
+ throw new Error("Gio.AsyncInitable not found.");
29
+ }
30
+
31
+ AsyncInitable.addGeneric({
32
+ constraint: GObject.getType(),
33
+ default: GObject.getType(),
34
+ propagate: false,
35
+ });
36
+ }
37
+
38
+ function setupListModel(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
39
+ const ListModel = namespace.getClass("ListModel");
40
+ if (!ListModel) {
41
+ throw new Error("Gio.ListModel not found.");
42
+ }
43
+
44
+ ListModel.addGeneric({
45
+ default: GObject.getType(),
46
+ constraint: GObject.getType(),
47
+ });
48
+ }
49
+
50
+ function setupListStore(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
51
+ const ListModel = namespace.getClass("ListModel");
52
+ const ListStore = namespace.getClass("ListStore");
53
+
54
+ if (!ListStore) {
55
+ throw new Error("Gio.ListStore not found.");
56
+ }
57
+
58
+ ListStore.addGeneric({
59
+ deriveFrom: ListModel?.getType(),
60
+ default: GObject.getType(),
61
+ constraint: GObject.getType(),
62
+ });
63
+ }
64
+
65
+ function setupSettingsValueMethods(namespace: IntrospectedNamespace): void {
66
+ const Settings = namespace.assertClass("Settings");
67
+ const methodNames = ["get_value", "get_default_value", "get_user_value"];
68
+
69
+ Settings.members = Settings.members.map((member) => {
70
+ if (!methodNames.includes(member.name)) {
71
+ return member;
72
+ }
73
+
74
+ return updateSettingsMethod(member);
75
+ });
76
+ }
77
+
78
+ function updateSettingsMethod(method: IntrospectedClassFunction): IntrospectedClassFunction {
79
+ method.generics.push(new Generic(new GenericType("T"), AnyType, undefined, StringType));
80
+
81
+ const returnType = method.return().deepUnwrap();
82
+ if (returnType instanceof TypeIdentifier && returnType.is("GLib", "Variant")) {
83
+ return method.copy({
84
+ returnType: method.return().rewrap(new GenerifiedTypeIdentifier("Variant", "GLib", [new GenericType("T")])),
85
+ });
86
+ }
87
+
88
+ return method;
89
+ }
90
+
91
+ export default createGioConfig();
@@ -0,0 +1,31 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import { AnyType, StringType } from "../gir.ts";
3
+ import type { GlibConfig } from "../types/generics-config.ts";
4
+
5
+ function createGlibConfig(): GlibConfig {
6
+ return {
7
+ namespace: "GLib",
8
+ version: "2.0",
9
+ modifier: (namespace: IntrospectedNamespace) => {
10
+ applyGlibGenerics(namespace);
11
+ },
12
+ };
13
+ }
14
+
15
+ function applyGlibGenerics(namespace: IntrospectedNamespace): void {
16
+ const HashTable = namespace.getClass("HashTable");
17
+
18
+ if (!HashTable) {
19
+ throw new Error("GLib.HashTable not found.");
20
+ }
21
+
22
+ HashTable.addGeneric({
23
+ default: StringType,
24
+ });
25
+
26
+ HashTable.addGeneric({
27
+ default: AnyType,
28
+ });
29
+ }
30
+
31
+ export default createGlibConfig();
@@ -0,0 +1,99 @@
1
+ import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
2
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
3
+ import { Generic, GenericType, GenerifiedTypeIdentifier } from "../gir.ts";
4
+ import type { GtkConfig } from "../types/generics-config.ts";
5
+
6
+ function createGtkConfig(): GtkConfig {
7
+ return {
8
+ namespace: "Gtk",
9
+ version: "4.0",
10
+ modifier: (namespace: IntrospectedNamespace) => {
11
+ applyGtkGenerics(namespace);
12
+ },
13
+ };
14
+ }
15
+
16
+ function applyGtkGenerics(namespace: IntrospectedNamespace): void {
17
+ const classes = getGtkClasses(namespace);
18
+ const GObject = namespace.assertInstalledImport("GObject").assertClass("Object");
19
+
20
+ setupStringListGenerics(classes, GObject);
21
+ updateBindModelMethods(classes, GObject);
22
+ }
23
+
24
+ function getGtkClasses(namespace: IntrospectedNamespace) {
25
+ const requiredClasses = {
26
+ FlowBox: namespace.getClass("FlowBox"),
27
+ ListBox: namespace.getClass("ListBox"),
28
+ StringList: namespace.getClass("StringList"),
29
+ StringObject: namespace.getClass("StringObject"),
30
+ };
31
+
32
+ // Validate required classes exist
33
+ for (const [name, cls] of Object.entries(requiredClasses)) {
34
+ if (!cls) {
35
+ throw new Error(`Gtk.${name} not found.`);
36
+ }
37
+ }
38
+
39
+ return requiredClasses as Record<
40
+ keyof typeof requiredClasses,
41
+ NonNullable<(typeof requiredClasses)[keyof typeof requiredClasses]>
42
+ >;
43
+ }
44
+
45
+ function setupStringListGenerics(classes: ReturnType<typeof getGtkClasses>, GObject: IntrospectedBaseClass): void {
46
+ const { StringList, StringObject } = classes;
47
+
48
+ StringList.addGeneric({
49
+ default: StringObject.getType(),
50
+ constraint: GObject.getType(),
51
+ });
52
+ }
53
+
54
+ function updateBindModelMethods(classes: ReturnType<typeof getGtkClasses>, GObject: IntrospectedBaseClass): void {
55
+ const { FlowBox, ListBox } = classes;
56
+
57
+ const bindModelConfigs = [
58
+ { cls: FlowBox, widgetFuncName: "FlowBoxCreateWidgetFunc" },
59
+ { cls: ListBox, widgetFuncName: "ListBoxCreateWidgetFunc" },
60
+ ];
61
+
62
+ for (const config of bindModelConfigs) {
63
+ updateBindModelMethod(config.cls, config.widgetFuncName, GObject);
64
+ }
65
+ }
66
+
67
+ function updateBindModelMethod(
68
+ cls: IntrospectedBaseClass,
69
+ widgetFuncName: string,
70
+ GObject: IntrospectedBaseClass,
71
+ ): void {
72
+ cls.members = cls.members.map((member) => {
73
+ if (member.name !== "bind_model") {
74
+ return member;
75
+ }
76
+
77
+ member.generics.push(new Generic(new GenericType("A"), GObject.getType(), undefined, GObject.getType()));
78
+
79
+ return member.copy({
80
+ parameters: member.parameters.map((param) => {
81
+ if (param.name === "model") {
82
+ return param.copy({
83
+ type: new GenerifiedTypeIdentifier("ListModel", "Gio", [new GenericType("A")]),
84
+ });
85
+ }
86
+
87
+ if (param.name === "create_widget_func") {
88
+ return param.copy({
89
+ type: new GenerifiedTypeIdentifier(widgetFuncName, "Gtk", [new GenericType("A")]),
90
+ });
91
+ }
92
+
93
+ return param;
94
+ }),
95
+ });
96
+ });
97
+ }
98
+
99
+ export default createGtkConfig();
@@ -0,0 +1,50 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import { GenerifiedTypeIdentifier } from "../gir.ts";
3
+ import type { MetaTemplateConfig } from "../types/generics-config.ts";
4
+
5
+ function createMetaTemplate(version: string): MetaTemplateConfig {
6
+ return {
7
+ namespace: "Meta",
8
+ version,
9
+ modifier: (namespace: IntrospectedNamespace, inferGenerics: boolean) => {
10
+ if (!inferGenerics) {
11
+ return;
12
+ }
13
+
14
+ applyMetaGenerics(namespace);
15
+ },
16
+ };
17
+ }
18
+
19
+ function applyMetaGenerics(namespace: IntrospectedNamespace): void {
20
+ // Connect BackgroundActor to BackgroundContent
21
+ const LayoutManager = namespace.assertInstalledImport("Clutter").assertClass("LayoutManager");
22
+ const BackgroundContent = namespace.assertClass("BackgroundContent");
23
+ const BackgroundActor = namespace.assertClass("BackgroundActor");
24
+
25
+ const parent = BackgroundActor.superType;
26
+ if (parent) {
27
+ BackgroundActor.superType = new GenerifiedTypeIdentifier(parent.name, parent.namespace, [
28
+ LayoutManager.getType(),
29
+ BackgroundContent.getType(),
30
+ ]);
31
+ }
32
+ }
33
+
34
+ // Version exports
35
+ export const meta10 = createMetaTemplate("10");
36
+ export const meta11 = createMetaTemplate("11");
37
+ export const meta12 = createMetaTemplate("12");
38
+ export const meta13 = createMetaTemplate("13");
39
+ /** Meta-14 was introduced with GNOME 45 */
40
+ export const meta14 = createMetaTemplate("14");
41
+ /** Meta-15 was introduced with GNOME 47 */
42
+ export const meta15 = createMetaTemplate("15");
43
+ /** Meta-16 was introduced with GNOME 48 */
44
+ export const meta16 = createMetaTemplate("16");
45
+ /** Meta-17 was introduced with GNOME 49 */
46
+ export const meta17 = createMetaTemplate("17");
47
+ // Possibly future versions, adjust if necessary
48
+ export const meta18 = createMetaTemplate("18");
49
+ export const meta19 = createMetaTemplate("19");
50
+ export const meta20 = createMetaTemplate("20");