@ts-for-gir/lib 4.0.0-beta.25 → 4.0.0-beta.26

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 (567) hide show
  1. package/package.json +12 -26
  2. package/src/constants.ts +154 -0
  3. package/src/dependency-manager.ts +427 -0
  4. package/src/formatters/default.ts +7 -0
  5. package/src/formatters/formatter.ts +3 -0
  6. package/src/formatters/index.ts +3 -0
  7. package/src/formatters/json.ts +7 -0
  8. package/src/generators/generator.ts +65 -0
  9. package/src/generators/index.ts +2 -0
  10. package/src/generics/clutter.ts +71 -0
  11. package/src/generics/generify.ts +74 -0
  12. package/src/generics/gio.ts +91 -0
  13. package/src/generics/glib.ts +31 -0
  14. package/src/generics/gtk.ts +99 -0
  15. package/src/generics/meta.ts +41 -0
  16. package/src/generics/st.ts +197 -0
  17. package/src/generics/visitor.ts +484 -0
  18. package/src/gir/alias.ts +73 -0
  19. package/src/gir/callback.ts +79 -0
  20. package/src/gir/const.ts +73 -0
  21. package/src/gir/constructor.ts +91 -0
  22. package/src/gir/data.ts +12 -0
  23. package/src/gir/dependency-resolver.ts +81 -0
  24. package/src/gir/direct-allocation-constructor.ts +65 -0
  25. package/src/gir/enum-member.ts +51 -0
  26. package/src/gir/enum.ts +126 -0
  27. package/src/gir/error.ts +82 -0
  28. package/src/gir/function.ts +296 -0
  29. package/src/gir/generics.ts +66 -0
  30. package/src/gir/gir-complex-record.ts +7 -0
  31. package/src/gir/index.ts +25 -0
  32. package/src/gir/introspected-base.ts +104 -0
  33. package/src/gir/introspected-class-member.ts +15 -0
  34. package/src/gir/introspected-classes.ts +1517 -0
  35. package/src/gir/introspected-namespace-member.ts +24 -0
  36. package/src/gir/namespace.ts +76 -0
  37. package/src/gir/parameter.ts +199 -0
  38. package/src/gir/promisify.ts +209 -0
  39. package/src/gir/property.ts +203 -0
  40. package/src/gir/record.ts +477 -0
  41. package/src/gir/registry.ts +184 -0
  42. package/src/gir/signal.ts +246 -0
  43. package/src/gir-module.ts +703 -0
  44. package/src/gir.ts +892 -0
  45. package/src/index.ts +16 -0
  46. package/src/injections/gee08.ts +89 -0
  47. package/src/injections/gee1.ts +35 -0
  48. package/src/injections/gio.ts +707 -0
  49. package/src/injections/glib.ts +275 -0
  50. package/src/injections/gobject.ts +901 -0
  51. package/src/injections/gtk4.ts +23 -0
  52. package/src/injections/inject.ts +43 -0
  53. package/src/injections/shell.ts +45 -0
  54. package/src/injections/tracker1.ts +42 -0
  55. package/src/library-version.ts +50 -0
  56. package/src/logger.ts +104 -0
  57. package/src/messages.ts +57 -0
  58. package/src/templates/index.ts +1 -0
  59. package/src/templates/template-engine.ts +178 -0
  60. package/src/types/answer-version.ts +4 -0
  61. package/src/types/any-introspected-type.ts +3 -0
  62. package/src/types/class-function-types.ts +49 -0
  63. package/src/types/class-member.ts +5 -0
  64. package/src/types/class-parent.ts +14 -0
  65. package/src/types/class.ts +45 -0
  66. package/src/types/config-flags.ts +5 -0
  67. package/src/types/construct-name.ts +13 -0
  68. package/src/types/dependency-map.ts +4 -0
  69. package/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
  70. package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
  71. package/src/types/format.ts +1 -0
  72. package/src/types/generator-constructor.ts +7 -0
  73. package/src/types/generics-config.ts +90 -0
  74. package/src/types/gir-any-element.ts +35 -0
  75. package/src/types/gir-module-interface.ts +22 -0
  76. package/src/types/gir-module-resolved.ts +32 -0
  77. package/src/types/gir-type-name.ts +20 -0
  78. package/src/types/index.ts +94 -0
  79. package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
  80. package/src/types/introspected.ts +18 -0
  81. package/src/types/local-name-check.ts +5 -0
  82. package/src/types/local-name-type.ts +1 -0
  83. package/src/types/local-name.ts +8 -0
  84. package/src/types/local-names.ts +5 -0
  85. package/src/types/metadata.ts +6 -0
  86. package/src/types/ns-loader.ts +7 -0
  87. package/src/types/options-base.ts +8 -0
  88. package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
  89. package/src/types/options-load.ts +6 -0
  90. package/src/types/options-transform.ts +5 -0
  91. package/src/types/output-format.ts +1 -0
  92. package/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
  93. package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
  94. package/src/types/package-section-parsed.ts +9 -0
  95. package/src/types/parsed-gir.ts +5 -0
  96. package/src/types/parsed-package-data.ts +7 -0
  97. package/src/types/property-case.ts +1 -0
  98. package/src/types/resolve-type.ts +4 -0
  99. package/src/types/template-data.ts +8 -0
  100. package/src/types/template-options.ts +33 -0
  101. package/src/types/transformation-case.ts +9 -0
  102. package/src/types/transformations.ts +5 -0
  103. package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +5 -3
  104. package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
  105. package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
  106. package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
  107. package/src/types/type-gir-element.ts +25 -0
  108. package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
  109. package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-gir-enumeration.ts} +1 -1
  110. package/src/types/type-gir-function.ts +8 -0
  111. package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
  112. package/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
  113. package/src/types/type-gir-parameter.ts +1 -0
  114. package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
  115. package/src/types/type-gir-variable.ts +1 -0
  116. package/src/types/type-ts-element.ts +13 -0
  117. package/{lib/types/type-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
  118. package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
  119. package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
  120. package/src/types/user-config-load-result.ts +6 -0
  121. package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
  122. package/src/util.ts +84 -0
  123. package/src/utils/conflicts/conflict-resolver.ts +122 -0
  124. package/src/utils/conflicts/function-conflict-detector.ts +139 -0
  125. package/src/utils/conflicts/index.ts +2 -0
  126. package/src/utils/conflicts.ts +490 -0
  127. package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
  128. package/src/utils/files.ts +71 -0
  129. package/src/utils/function-type-guards.ts +61 -0
  130. package/src/utils/generation.ts +69 -0
  131. package/src/utils/gir-parsing.ts +243 -0
  132. package/src/utils/girs.ts +113 -0
  133. package/src/utils/index.ts +14 -0
  134. package/src/utils/naming.ts +188 -0
  135. package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
  136. package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
  137. package/src/utils/path.ts +7 -0
  138. package/src/utils/registry.ts +5 -0
  139. package/src/utils/strings.ts +134 -0
  140. package/src/utils/type-resolution.ts +116 -0
  141. package/src/utils/types.ts +247 -0
  142. package/src/validators/class.ts +324 -0
  143. package/src/validators/function-parameters.ts +52 -0
  144. package/src/validators/interface.ts +20 -0
  145. package/src/visitor.ts +58 -0
  146. package/lib/constants.d.ts +0 -25
  147. package/lib/constants.js +0 -93
  148. package/lib/constants.js.map +0 -1
  149. package/lib/dependency-manager.d.ts +0 -151
  150. package/lib/dependency-manager.js +0 -340
  151. package/lib/dependency-manager.js.map +0 -1
  152. package/lib/formatters/default.d.ts +0 -4
  153. package/lib/formatters/default.js +0 -7
  154. package/lib/formatters/default.js.map +0 -1
  155. package/lib/formatters/formatter.d.ts +0 -3
  156. package/lib/formatters/formatter.js +0 -3
  157. package/lib/formatters/formatter.js.map +0 -1
  158. package/lib/formatters/json.d.ts +0 -4
  159. package/lib/formatters/json.js +0 -7
  160. package/lib/formatters/json.js.map +0 -1
  161. package/lib/generators/dts/glib.d.ts +0 -2
  162. package/lib/generators/dts/glib.js +0 -514
  163. package/lib/generators/dts/glib.js.map +0 -1
  164. package/lib/generators/dts/gobject.d.ts +0 -2
  165. package/lib/generators/dts/gobject.js +0 -117
  166. package/lib/generators/dts/gobject.js.map +0 -1
  167. package/lib/generators/dts-inline.d.ts +0 -10
  168. package/lib/generators/dts-inline.js +0 -57
  169. package/lib/generators/dts-inline.js.map +0 -1
  170. package/lib/generators/dts-modules.d.ts +0 -10
  171. package/lib/generators/dts-modules.js +0 -98
  172. package/lib/generators/dts-modules.js.map +0 -1
  173. package/lib/generators/dts.d.ts +0 -45
  174. package/lib/generators/dts.js +0 -683
  175. package/lib/generators/dts.js.map +0 -1
  176. package/lib/generators/generator.d.ts +0 -45
  177. package/lib/generators/generator.js +0 -9
  178. package/lib/generators/generator.js.map +0 -1
  179. package/lib/generators/index.d.ts +0 -5
  180. package/lib/generators/index.js +0 -6
  181. package/lib/generators/index.js.map +0 -1
  182. package/lib/generators/json.d.ts +0 -257
  183. package/lib/generators/json.js +0 -866
  184. package/lib/generators/json.js.map +0 -1
  185. package/lib/generics/clutter.d.ts +0 -41
  186. package/lib/generics/clutter.js +0 -52
  187. package/lib/generics/clutter.js.map +0 -1
  188. package/lib/generics/generify.d.ts +0 -2
  189. package/lib/generics/generify.js +0 -47
  190. package/lib/generics/generify.js.map +0 -1
  191. package/lib/generics/gio.d.ts +0 -7
  192. package/lib/generics/gio.js +0 -51
  193. package/lib/generics/gio.js.map +0 -1
  194. package/lib/generics/glib.d.ts +0 -7
  195. package/lib/generics/glib.js +0 -18
  196. package/lib/generics/glib.js.map +0 -1
  197. package/lib/generics/gtk.d.ts +0 -7
  198. package/lib/generics/gtk.js +0 -56
  199. package/lib/generics/gtk.js.map +0 -1
  200. package/lib/generics/meta.d.ts +0 -36
  201. package/lib/generics/meta.js +0 -29
  202. package/lib/generics/meta.js.map +0 -1
  203. package/lib/generics/st.d.ts +0 -31
  204. package/lib/generics/st.js +0 -98
  205. package/lib/generics/st.js.map +0 -1
  206. package/lib/generics/visitor.d.ts +0 -20
  207. package/lib/generics/visitor.js +0 -255
  208. package/lib/generics/visitor.js.map +0 -1
  209. package/lib/gir/alias.d.ts +0 -24
  210. package/lib/gir/alias.js +0 -43
  211. package/lib/gir/alias.js.map +0 -1
  212. package/lib/gir/base.d.ts +0 -62
  213. package/lib/gir/base.js +0 -83
  214. package/lib/gir/base.js.map +0 -1
  215. package/lib/gir/class.d.ts +0 -228
  216. package/lib/gir/class.js +0 -1151
  217. package/lib/gir/class.js.map +0 -1
  218. package/lib/gir/const.d.ts +0 -25
  219. package/lib/gir/const.js +0 -43
  220. package/lib/gir/const.js.map +0 -1
  221. package/lib/gir/enum.d.ts +0 -45
  222. package/lib/gir/enum.js +0 -164
  223. package/lib/gir/enum.js.map +0 -1
  224. package/lib/gir/function.d.ts +0 -200
  225. package/lib/gir/function.js +0 -683
  226. package/lib/gir/function.js.map +0 -1
  227. package/lib/gir/generics.d.ts +0 -5
  228. package/lib/gir/generics.js +0 -57
  229. package/lib/gir/generics.js.map +0 -1
  230. package/lib/gir/index.d.ts +0 -14
  231. package/lib/gir/index.js +0 -15
  232. package/lib/gir/index.js.map +0 -1
  233. package/lib/gir/namespace.d.ts +0 -21
  234. package/lib/gir/namespace.js +0 -57
  235. package/lib/gir/namespace.js.map +0 -1
  236. package/lib/gir/nodes.d.ts +0 -11
  237. package/lib/gir/nodes.js +0 -12
  238. package/lib/gir/nodes.js.map +0 -1
  239. package/lib/gir/promisify.d.ts +0 -5
  240. package/lib/gir/promisify.js +0 -158
  241. package/lib/gir/promisify.js.map +0 -1
  242. package/lib/gir/property.d.ts +0 -60
  243. package/lib/gir/property.js +0 -128
  244. package/lib/gir/property.js.map +0 -1
  245. package/lib/gir/registry.d.ts +0 -51
  246. package/lib/gir/registry.js +0 -147
  247. package/lib/gir/registry.js.map +0 -1
  248. package/lib/gir/signal.d.ts +0 -36
  249. package/lib/gir/signal.js +0 -169
  250. package/lib/gir/signal.js.map +0 -1
  251. package/lib/gir/util.d.ts +0 -49
  252. package/lib/gir/util.js +0 -561
  253. package/lib/gir/util.js.map +0 -1
  254. package/lib/gir-module.d.ts +0 -104
  255. package/lib/gir-module.js +0 -584
  256. package/lib/gir-module.js.map +0 -1
  257. package/lib/gir.d.ts +0 -254
  258. package/lib/gir.js +0 -639
  259. package/lib/gir.js.map +0 -1
  260. package/lib/index.d.ts +0 -13
  261. package/lib/index.js +0 -16
  262. package/lib/index.js.map +0 -1
  263. package/lib/injections/gee08.d.ts +0 -7
  264. package/lib/injections/gee08.js +0 -68
  265. package/lib/injections/gee08.js.map +0 -1
  266. package/lib/injections/gee1.d.ts +0 -7
  267. package/lib/injections/gee1.js +0 -28
  268. package/lib/injections/gee1.js.map +0 -1
  269. package/lib/injections/gio.d.ts +0 -7
  270. package/lib/injections/gio.js +0 -563
  271. package/lib/injections/gio.js.map +0 -1
  272. package/lib/injections/glib.d.ts +0 -7
  273. package/lib/injections/glib.js +0 -210
  274. package/lib/injections/glib.js.map +0 -1
  275. package/lib/injections/gobject.d.ts +0 -7
  276. package/lib/injections/gobject.js +0 -594
  277. package/lib/injections/gobject.js.map +0 -1
  278. package/lib/injections/gtk4.d.ts +0 -7
  279. package/lib/injections/gtk4.js +0 -19
  280. package/lib/injections/gtk4.js.map +0 -1
  281. package/lib/injections/inject.d.ts +0 -4
  282. package/lib/injections/inject.js +0 -33
  283. package/lib/injections/inject.js.map +0 -1
  284. package/lib/injections/shell.d.ts +0 -20
  285. package/lib/injections/shell.js +0 -34
  286. package/lib/injections/shell.js.map +0 -1
  287. package/lib/injections/tracker1.d.ts +0 -7
  288. package/lib/injections/tracker1.js +0 -30
  289. package/lib/injections/tracker1.js.map +0 -1
  290. package/lib/library-version.d.ts +0 -10
  291. package/lib/library-version.js +0 -45
  292. package/lib/library-version.js.map +0 -1
  293. package/lib/logger.d.ts +0 -36
  294. package/lib/logger.js +0 -134
  295. package/lib/logger.js.map +0 -1
  296. package/lib/messages.d.ts +0 -23
  297. package/lib/messages.js +0 -39
  298. package/lib/messages.js.map +0 -1
  299. package/lib/registry.d.ts +0 -8
  300. package/lib/registry.js +0 -12
  301. package/lib/registry.js.map +0 -1
  302. package/lib/transformation.d.ts +0 -169
  303. package/lib/transformation.js +0 -393
  304. package/lib/transformation.js.map +0 -1
  305. package/lib/types/answer-version.d.ts +0 -4
  306. package/lib/types/answer-version.js +0 -2
  307. package/lib/types/answer-version.js.map +0 -1
  308. package/lib/types/class-parent.d.ts +0 -13
  309. package/lib/types/class-parent.js +0 -2
  310. package/lib/types/class-parent.js.map +0 -1
  311. package/lib/types/config-flags.d.ts +0 -4
  312. package/lib/types/config-flags.js +0 -2
  313. package/lib/types/config-flags.js.map +0 -1
  314. package/lib/types/construct-name.d.ts +0 -1
  315. package/lib/types/construct-name.js +0 -2
  316. package/lib/types/construct-name.js.map +0 -1
  317. package/lib/types/dependency-map.d.ts +0 -4
  318. package/lib/types/dependency-map.js +0 -2
  319. package/lib/types/dependency-map.js.map +0 -1
  320. package/lib/types/dependency.js +0 -2
  321. package/lib/types/dependency.js.map +0 -1
  322. package/lib/types/file-info.js +0 -2
  323. package/lib/types/file-info.js.map +0 -1
  324. package/lib/types/format.d.ts +0 -1
  325. package/lib/types/format.js +0 -2
  326. package/lib/types/format.js.map +0 -1
  327. package/lib/types/gir-alias-element.d.ts +0 -4
  328. package/lib/types/gir-alias-element.js +0 -2
  329. package/lib/types/gir-alias-element.js.map +0 -1
  330. package/lib/types/gir-annotation.d.ts +0 -9
  331. package/lib/types/gir-annotation.js +0 -2
  332. package/lib/types/gir-annotation.js.map +0 -1
  333. package/lib/types/gir-any-element.d.ts +0 -2
  334. package/lib/types/gir-any-element.js +0 -2
  335. package/lib/types/gir-any-element.js.map +0 -1
  336. package/lib/types/gir-bitfield-element.d.ts +0 -6
  337. package/lib/types/gir-bitfield-element.js +0 -2
  338. package/lib/types/gir-bitfield-element.js.map +0 -1
  339. package/lib/types/gir-callable-param-element.d.ts +0 -4
  340. package/lib/types/gir-callable-param-element.js +0 -2
  341. package/lib/types/gir-callable-param-element.js.map +0 -1
  342. package/lib/types/gir-callable-params.d.ts +0 -7
  343. package/lib/types/gir-callable-params.js +0 -2
  344. package/lib/types/gir-callable-params.js.map +0 -1
  345. package/lib/types/gir-callable-return.d.ts +0 -5
  346. package/lib/types/gir-callable-return.js +0 -2
  347. package/lib/types/gir-callable-return.js.map +0 -1
  348. package/lib/types/gir-callback-element.d.ts +0 -6
  349. package/lib/types/gir-callback-element.js +0 -2
  350. package/lib/types/gir-callback-element.js.map +0 -1
  351. package/lib/types/gir-class-element.d.ts +0 -17
  352. package/lib/types/gir-class-element.js +0 -2
  353. package/lib/types/gir-class-element.js.map +0 -1
  354. package/lib/types/gir-constant-element.d.ts +0 -4
  355. package/lib/types/gir-constant-element.js +0 -2
  356. package/lib/types/gir-constant-element.js.map +0 -1
  357. package/lib/types/gir-constructor-element.d.ts +0 -6
  358. package/lib/types/gir-constructor-element.js +0 -2
  359. package/lib/types/gir-constructor-element.js.map +0 -1
  360. package/lib/types/gir-enum-element.d.ts +0 -6
  361. package/lib/types/gir-enum-element.js +0 -2
  362. package/lib/types/gir-enum-element.js.map +0 -1
  363. package/lib/types/gir-field-element.d.ts +0 -5
  364. package/lib/types/gir-field-element.js +0 -2
  365. package/lib/types/gir-field-element.js.map +0 -1
  366. package/lib/types/gir-function-element.d.ts +0 -6
  367. package/lib/types/gir-function-element.js +0 -2
  368. package/lib/types/gir-function-element.js.map +0 -1
  369. package/lib/types/gir-instance-parameter.d.ts +0 -7
  370. package/lib/types/gir-instance-parameter.js +0 -2
  371. package/lib/types/gir-instance-parameter.js.map +0 -1
  372. package/lib/types/gir-interface-element.d.ts +0 -16
  373. package/lib/types/gir-interface-element.js +0 -2
  374. package/lib/types/gir-interface-element.js.map +0 -1
  375. package/lib/types/gir-member-element.d.ts +0 -5
  376. package/lib/types/gir-member-element.js +0 -2
  377. package/lib/types/gir-member-element.js.map +0 -1
  378. package/lib/types/gir-method-element.d.ts +0 -7
  379. package/lib/types/gir-method-element.js +0 -2
  380. package/lib/types/gir-method-element.js.map +0 -1
  381. package/lib/types/gir-module-resolved-by.d.ts +0 -15
  382. package/lib/types/gir-module-resolved-by.js +0 -2
  383. package/lib/types/gir-module-resolved-by.js.map +0 -1
  384. package/lib/types/gir-modules-grouped-map.d.ts +0 -4
  385. package/lib/types/gir-modules-grouped-map.js +0 -2
  386. package/lib/types/gir-modules-grouped-map.js.map +0 -1
  387. package/lib/types/gir-modules-grouped.d.ts +0 -12
  388. package/lib/types/gir-modules-grouped.js +0 -2
  389. package/lib/types/gir-modules-grouped.js.map +0 -1
  390. package/lib/types/gir-namespace.d.ts +0 -27
  391. package/lib/types/gir-namespace.js +0 -2
  392. package/lib/types/gir-namespace.js.map +0 -1
  393. package/lib/types/gir-property-element.d.ts +0 -4
  394. package/lib/types/gir-property-element.js +0 -2
  395. package/lib/types/gir-property-element.js.map +0 -1
  396. package/lib/types/gir-record-element.d.ts +0 -10
  397. package/lib/types/gir-record-element.js +0 -2
  398. package/lib/types/gir-record-element.js.map +0 -1
  399. package/lib/types/gir-repository.d.ts +0 -5
  400. package/lib/types/gir-repository.js +0 -2
  401. package/lib/types/gir-repository.js.map +0 -1
  402. package/lib/types/gir-signal.d.ts +0 -10
  403. package/lib/types/gir-signal.js +0 -2
  404. package/lib/types/gir-signal.js.map +0 -1
  405. package/lib/types/gir-type-name.d.ts +0 -2
  406. package/lib/types/gir-type-name.js +0 -2
  407. package/lib/types/gir-type-name.js.map +0 -1
  408. package/lib/types/gir-union-element.d.ts +0 -9
  409. package/lib/types/gir-union-element.js +0 -2
  410. package/lib/types/gir-union-element.js.map +0 -1
  411. package/lib/types/gir-unparsed-number.d.ts +0 -2
  412. package/lib/types/gir-unparsed-number.js +0 -2
  413. package/lib/types/gir-unparsed-number.js.map +0 -1
  414. package/lib/types/gir-virtual-method.d.ts +0 -6
  415. package/lib/types/gir-virtual-method.js +0 -2
  416. package/lib/types/gir-virtual-method.js.map +0 -1
  417. package/lib/types/index.d.ts +0 -79
  418. package/lib/types/index.js +0 -80
  419. package/lib/types/index.js.map +0 -1
  420. package/lib/types/inheritance-table.js +0 -2
  421. package/lib/types/inheritance-table.js.map +0 -1
  422. package/lib/types/local-name-check.d.ts +0 -4
  423. package/lib/types/local-name-check.js +0 -2
  424. package/lib/types/local-name-check.js.map +0 -1
  425. package/lib/types/local-name-type.d.ts +0 -1
  426. package/lib/types/local-name-type.js +0 -2
  427. package/lib/types/local-name-type.js.map +0 -1
  428. package/lib/types/local-name.d.ts +0 -7
  429. package/lib/types/local-name.js +0 -2
  430. package/lib/types/local-name.js.map +0 -1
  431. package/lib/types/local-names.d.ts +0 -4
  432. package/lib/types/local-names.js +0 -2
  433. package/lib/types/local-names.js.map +0 -1
  434. package/lib/types/metadata.d.ts +0 -8
  435. package/lib/types/metadata.js +0 -2
  436. package/lib/types/metadata.js.map +0 -1
  437. package/lib/types/options-base.d.ts +0 -4
  438. package/lib/types/options-base.js +0 -2
  439. package/lib/types/options-base.js.map +0 -1
  440. package/lib/types/options-generation.js +0 -2
  441. package/lib/types/options-generation.js.map +0 -1
  442. package/lib/types/options-load.d.ts +0 -5
  443. package/lib/types/options-load.js +0 -2
  444. package/lib/types/options-load.js.map +0 -1
  445. package/lib/types/options-transform.d.ts +0 -4
  446. package/lib/types/options-transform.js +0 -2
  447. package/lib/types/options-transform.js.map +0 -1
  448. package/lib/types/output-format.d.ts +0 -1
  449. package/lib/types/output-format.js +0 -2
  450. package/lib/types/output-format.js.map +0 -1
  451. package/lib/types/package-data-parsed.js +0 -2
  452. package/lib/types/package-data-parsed.js.map +0 -1
  453. package/lib/types/package-data.js +0 -2
  454. package/lib/types/package-data.js.map +0 -1
  455. package/lib/types/package-section-parsed.d.ts +0 -8
  456. package/lib/types/package-section-parsed.js +0 -2
  457. package/lib/types/package-section-parsed.js.map +0 -1
  458. package/lib/types/parsed-gir.d.ts +0 -5
  459. package/lib/types/parsed-gir.js +0 -2
  460. package/lib/types/parsed-gir.js.map +0 -1
  461. package/lib/types/parsed-package-data.d.ts +0 -6
  462. package/lib/types/parsed-package-data.js +0 -2
  463. package/lib/types/parsed-package-data.js.map +0 -1
  464. package/lib/types/part-of-class.d.ts +0 -7
  465. package/lib/types/part-of-class.js +0 -2
  466. package/lib/types/part-of-class.js.map +0 -1
  467. package/lib/types/part-of-module.d.ts +0 -6
  468. package/lib/types/part-of-module.js +0 -2
  469. package/lib/types/part-of-module.js.map +0 -1
  470. package/lib/types/property-case.d.ts +0 -1
  471. package/lib/types/property-case.js +0 -2
  472. package/lib/types/property-case.js.map +0 -1
  473. package/lib/types/resolve-type.d.ts +0 -4
  474. package/lib/types/resolve-type.js +0 -6
  475. package/lib/types/resolve-type.js.map +0 -1
  476. package/lib/types/template-data.d.ts +0 -7
  477. package/lib/types/template-data.js +0 -2
  478. package/lib/types/template-data.js.map +0 -1
  479. package/lib/types/transformation-case.d.ts +0 -1
  480. package/lib/types/transformation-case.js +0 -2
  481. package/lib/types/transformation-case.js.map +0 -1
  482. package/lib/types/transformations.d.ts +0 -4
  483. package/lib/types/transformations.js +0 -2
  484. package/lib/types/transformations.js.map +0 -1
  485. package/lib/types/ts-doc-tag.js +0 -2
  486. package/lib/types/ts-doc-tag.js.map +0 -1
  487. package/lib/types/ts-doc.js +0 -2
  488. package/lib/types/ts-doc.js.map +0 -1
  489. package/lib/types/type-gir-alias.js +0 -2
  490. package/lib/types/type-gir-alias.js.map +0 -1
  491. package/lib/types/type-gir-class.js +0 -2
  492. package/lib/types/type-gir-class.js.map +0 -1
  493. package/lib/types/type-gir-element.d.ts +0 -3
  494. package/lib/types/type-gir-element.js +0 -2
  495. package/lib/types/type-gir-element.js.map +0 -1
  496. package/lib/types/type-gir-enumeration-member.js +0 -2
  497. package/lib/types/type-gir-enumeration-member.js.map +0 -1
  498. package/lib/types/type-gir-enumeration.js +0 -2
  499. package/lib/types/type-gir-enumeration.js.map +0 -1
  500. package/lib/types/type-gir-function.d.ts +0 -1
  501. package/lib/types/type-gir-function.js +0 -2
  502. package/lib/types/type-gir-function.js.map +0 -1
  503. package/lib/types/type-gir-interface.js +0 -2
  504. package/lib/types/type-gir-interface.js.map +0 -1
  505. package/lib/types/type-gir-method.js +0 -2
  506. package/lib/types/type-gir-method.js.map +0 -1
  507. package/lib/types/type-gir-parameter.d.ts +0 -1
  508. package/lib/types/type-gir-parameter.js +0 -2
  509. package/lib/types/type-gir-parameter.js.map +0 -1
  510. package/lib/types/type-gir-property.js +0 -2
  511. package/lib/types/type-gir-property.js.map +0 -1
  512. package/lib/types/type-gir-variable.d.ts +0 -1
  513. package/lib/types/type-gir-variable.js +0 -2
  514. package/lib/types/type-gir-variable.js.map +0 -1
  515. package/lib/types/type-ts-element.d.ts +0 -3
  516. package/lib/types/type-ts-element.js +0 -2
  517. package/lib/types/type-ts-element.js.map +0 -1
  518. package/lib/types/type-ts-enumeration-member.js +0 -2
  519. package/lib/types/type-ts-enumeration-member.js.map +0 -1
  520. package/lib/types/type-ts-function.js +0 -2
  521. package/lib/types/type-ts-function.js.map +0 -1
  522. package/lib/types/type-ts-property.js +0 -2
  523. package/lib/types/type-ts-property.js.map +0 -1
  524. package/lib/types/user-config-load-result.d.ts +0 -6
  525. package/lib/types/user-config-load-result.js +0 -2
  526. package/lib/types/user-config-load-result.js.map +0 -1
  527. package/lib/types/user-config.js +0 -2
  528. package/lib/types/user-config.js.map +0 -1
  529. package/lib/util.d.ts +0 -20
  530. package/lib/util.js +0 -67
  531. package/lib/util.js.map +0 -1
  532. package/lib/utils/documentation.d.ts +0 -13
  533. package/lib/utils/documentation.js.map +0 -1
  534. package/lib/utils/files.d.ts +0 -21
  535. package/lib/utils/files.js +0 -62
  536. package/lib/utils/files.js.map +0 -1
  537. package/lib/utils/girs.d.ts +0 -45
  538. package/lib/utils/girs.js +0 -101
  539. package/lib/utils/girs.js.map +0 -1
  540. package/lib/utils/index.d.ts +0 -8
  541. package/lib/utils/index.js +0 -9
  542. package/lib/utils/index.js.map +0 -1
  543. package/lib/utils/naming.d.ts +0 -13
  544. package/lib/utils/naming.js +0 -40
  545. package/lib/utils/naming.js.map +0 -1
  546. package/lib/utils/numbers.js +0 -9
  547. package/lib/utils/numbers.js.map +0 -1
  548. package/lib/utils/objects.d.ts +0 -136
  549. package/lib/utils/objects.js.map +0 -1
  550. package/lib/utils/path.d.ts +0 -1
  551. package/lib/utils/path.js +0 -7
  552. package/lib/utils/path.js.map +0 -1
  553. package/lib/utils/strings.d.ts +0 -74
  554. package/lib/utils/strings.js +0 -121
  555. package/lib/utils/strings.js.map +0 -1
  556. package/lib/validators/class.d.ts +0 -7
  557. package/lib/validators/class.js +0 -217
  558. package/lib/validators/class.js.map +0 -1
  559. package/lib/validators/function-parameters.d.ts +0 -14
  560. package/lib/validators/function-parameters.js +0 -31
  561. package/lib/validators/function-parameters.js.map +0 -1
  562. package/lib/validators/interface.d.ts +0 -5
  563. package/lib/validators/interface.js +0 -16
  564. package/lib/validators/interface.js.map +0 -1
  565. package/lib/visitor.d.ts +0 -35
  566. package/lib/visitor.js +0 -29
  567. package/lib/visitor.js.map +0 -1
@@ -0,0 +1,901 @@
1
+ import { GirDirection } from "@gi.ts/parser";
2
+ import { IntrospectedAlias } from "../gir/alias.ts";
3
+ import { IntrospectedFunction } from "../gir/function.ts";
4
+ import {
5
+ IntrospectedClassFunction,
6
+ IntrospectedInterface,
7
+ IntrospectedStaticClassFunction,
8
+ } from "../gir/introspected-classes.ts";
9
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
10
+ import { IntrospectedFunctionParameter } from "../gir/parameter.ts";
11
+ import { IntrospectedField } from "../gir/property.ts";
12
+ import {
13
+ AnyFunctionType,
14
+ AnyType,
15
+ BinaryType,
16
+ BooleanType,
17
+ Generic,
18
+ GenericType,
19
+ GenerifiedTypeIdentifier,
20
+ NativeType,
21
+ NullableType,
22
+ NumberType,
23
+ ObjectType,
24
+ OrType,
25
+ StringType,
26
+ TupleType,
27
+ type TypeExpression,
28
+ TypeIdentifier,
29
+ UnknownType,
30
+ VoidType,
31
+ } from "../gir.ts";
32
+
33
+ function typeParam(name: string, type: TypeExpression, options: Record<string, unknown> = {}) {
34
+ return new IntrospectedFunctionParameter({
35
+ name,
36
+ direction: GirDirection.In,
37
+ type: type,
38
+ ...options,
39
+ });
40
+ }
41
+
42
+ function stringParam(name: string, options: Record<string, unknown> = {}) {
43
+ return typeParam(name, StringType, options);
44
+ }
45
+
46
+ /**
47
+ * Creates an optional parameter with a nullable type.
48
+ * Used for optional parameters like default values in ParamSpec methods.
49
+ *
50
+ * @param name The parameter name
51
+ * @param type The parameter type
52
+ * @param options Additional options including documentation
53
+ * @returns An IntrospectedFunctionParameter with optional nullable type
54
+ */
55
+ function optionalParam(name: string, type: TypeExpression, options: Record<string, unknown> = {}) {
56
+ return typeParam(name, type, {
57
+ isOptional: true,
58
+ doc: "An optional parameter",
59
+ ...options,
60
+ });
61
+ }
62
+
63
+ export default {
64
+ namespace: "GObject",
65
+ version: "2.0",
66
+ modifier(namespace: IntrospectedNamespace) {
67
+ {
68
+ const SignalMatch = new IntrospectedInterface({
69
+ name: "SignalMatch",
70
+ namespace,
71
+ fields: [
72
+ new IntrospectedField({
73
+ name: "signalId",
74
+ type: StringType,
75
+ isStatic: false,
76
+ writable: true,
77
+ }),
78
+ new IntrospectedField({
79
+ name: "detail",
80
+ type: StringType,
81
+ isStatic: false,
82
+ writable: true,
83
+ }),
84
+ new IntrospectedField({
85
+ name: "func",
86
+ type: AnyFunctionType,
87
+ isStatic: false,
88
+ writable: true,
89
+ }),
90
+ ],
91
+ });
92
+
93
+ // TODO: Devise a better way to represent pure TypeScript types.
94
+ SignalMatch.noParent = true;
95
+
96
+ namespace.members.set("SignalMatch", SignalMatch);
97
+
98
+ const GType = new IntrospectedAlias({
99
+ name: "GType",
100
+ namespace,
101
+ type: new NativeType("any"),
102
+ });
103
+
104
+ namespace.members.set("GType", GType);
105
+
106
+ // We don't want to emit TypeScript-specific GType
107
+ // hacks, but we still need the alias so the type
108
+ // can resolve.
109
+ GType.noEmit();
110
+
111
+ const ParamSpec = namespace.assertClass("ParamSpec");
112
+ ParamSpec.doc = `A GObject parameter specification that defines property characteristics.
113
+ See https://gjs.guide/guides/gobject/basics.html#properties for more details.`;
114
+ const ParamFlags = namespace.getEnum("ParamFlags");
115
+
116
+ /**
117
+ * Generates ParamSpec function definitions with proper typing matching the GJS JavaScript API.
118
+ * In GJS, nick and blurb are required parameters (but can be null), and flags is always required.
119
+ * This matches the actual implementation in gjs/modules/core/overrides/GObject.js
120
+ *
121
+ * @param name The name of the ParamSpec type (e.g., "string", "int", "boolean")
122
+ * @param returnType The return type of the ParamSpec
123
+ * @param minMax Whether the ParamSpec has min/max values
124
+ * @param type Optional type parameter name
125
+ * @param defaultValue Whether the ParamSpec has a default value
126
+ * @param defaultValueType The type of the default value
127
+ * @param addGeneric Whether to add generic type parameters
128
+ * @returns An IntrospectedStaticClassFunction for the ParamSpec
129
+ * @see https://gjs.guide/guides/gjs/style-guide.html#properties
130
+ */
131
+ function generateParamSpec(
132
+ name: string,
133
+ returnType: TypeExpression = ParamSpec.getType(),
134
+ minMax = false,
135
+ type: string | null = null,
136
+ defaultValue = false,
137
+ defaultValueType: TypeExpression = AnyType,
138
+ addGeneric = false,
139
+ doc: string,
140
+ ) {
141
+ const params = [
142
+ stringParam("name", {
143
+ doc: "The name of the property",
144
+ }),
145
+ typeParam("nick", new NullableType(StringType), {
146
+ doc: "A human readable name for the property (can be null)",
147
+ }),
148
+ typeParam("blurb", new NullableType(StringType), {
149
+ doc: "A longer description of the property (can be null)",
150
+ }),
151
+ typeParam("flags", new BinaryType(ParamFlags?.getType() ?? AnyType, NumberType), {
152
+ doc: "The flags for this property (e.g. READABLE, WRITABLE)",
153
+ }),
154
+ ];
155
+
156
+ if (minMax) {
157
+ params.push(
158
+ typeParam("minimum", NumberType, {
159
+ doc: "The minimum value for this property",
160
+ }),
161
+ typeParam("maximum", NumberType, {
162
+ doc: "The maximum value for this property",
163
+ }),
164
+ );
165
+ }
166
+
167
+ if (type) {
168
+ if (!addGeneric) {
169
+ params.push(
170
+ typeParam(`${type}Type`, AnyType, {
171
+ doc: "The GType for this property",
172
+ }),
173
+ );
174
+ } else {
175
+ params.push(
176
+ typeParam(`${type}Type`, new NativeType("GType<T> | { $gtype: GType<T> }"), {
177
+ doc: "The GType for this property",
178
+ }),
179
+ );
180
+ }
181
+ }
182
+
183
+ if (defaultValue) {
184
+ params.push(
185
+ optionalParam("defaultValue", defaultValueType, {
186
+ doc: "The default value for this property (optional)",
187
+ }),
188
+ );
189
+ }
190
+
191
+ const fn = new IntrospectedStaticClassFunction({
192
+ name,
193
+ parameters: params,
194
+ parent: ParamSpec,
195
+ return_type: returnType,
196
+ });
197
+
198
+ if (addGeneric) {
199
+ fn.generics.push(new Generic(new GenericType("T")));
200
+ }
201
+
202
+ fn.doc = doc;
203
+
204
+ return fn;
205
+ }
206
+
207
+ // Get rid of the ParamSpec subtypes.
208
+ namespace.assertClass("ParamSpecBoolean").noEmit();
209
+ namespace.assertClass("ParamSpecBoxed").noEmit();
210
+ namespace.assertClass("ParamSpecChar").noEmit();
211
+ namespace.assertClass("ParamSpecDouble").noEmit();
212
+ namespace.assertClass("ParamSpecEnum").noEmit();
213
+ namespace.assertClass("ParamSpecFlags").noEmit();
214
+ namespace.assertClass("ParamSpecFloat").noEmit();
215
+ namespace.assertClass("ParamSpecInt").noEmit();
216
+ namespace.assertClass("ParamSpecInt64").noEmit();
217
+ namespace.assertClass("ParamSpecLong").noEmit();
218
+ namespace.assertClass("ParamSpecObject").noEmit();
219
+ namespace.assertClass("ParamSpecParam").noEmit();
220
+ namespace.assertClass("ParamSpecString").noEmit();
221
+ namespace.assertClass("ParamSpecUChar").noEmit();
222
+ namespace.assertClass("ParamSpecUnichar").noEmit();
223
+ namespace.assertClass("ParamSpecValueArray").noEmit();
224
+ namespace.assertClass("ParamSpecVariant").noEmit();
225
+ namespace.assertClass("ParamSpecUInt").noEmit();
226
+ namespace.assertClass("ParamSpecUInt64").noEmit();
227
+ namespace.assertClass("ParamSpecULong").noEmit();
228
+ namespace.assertClass("ParamSpecGType").noEmit();
229
+ namespace.assertClass("ParamSpecOverride").noEmit();
230
+ namespace.assertClass("ParamSpecPointer").noEmit();
231
+
232
+ // The primary "type"
233
+ ParamSpec.addGeneric({
234
+ default: UnknownType,
235
+ });
236
+
237
+ const object = new IntrospectedStaticClassFunction({
238
+ name: "object",
239
+ parameters: [
240
+ stringParam("name", {
241
+ doc: "The name of the property",
242
+ }),
243
+ typeParam("nick", new NullableType(StringType), {
244
+ doc: "A human readable name for the property (can be null)",
245
+ }),
246
+ typeParam("blurb", new NullableType(StringType), {
247
+ doc: "A longer description of the property (can be null)",
248
+ }),
249
+ typeParam("flags", new BinaryType(ParamFlags?.getType() ?? AnyType, NumberType), {
250
+ doc: "The flags for this property (e.g. READABLE, WRITABLE)",
251
+ }),
252
+ optionalParam("objectType", new NativeType("GType<T> | { $gtype: GType<T> }"), {
253
+ doc: "The GType of the object (optional)",
254
+ }),
255
+ ],
256
+ parent: ParamSpec,
257
+ return_type: new NativeType("ParamSpec<T>"),
258
+ });
259
+
260
+ object.generics.push(new Generic(new GenericType("T")));
261
+ object.doc = "Creates a new GParamSpecObject instance specifying a property holding object references.";
262
+
263
+ // static jsobject(name: string, nick: string, blurb: string, flags: ParamFlags): ParamSpecBoxed
264
+ const jsobject = new IntrospectedStaticClassFunction({
265
+ name: "jsobject",
266
+ parameters: [
267
+ stringParam("name", {
268
+ doc: "The name of the property",
269
+ }),
270
+ typeParam("nick", new NullableType(StringType), {
271
+ doc: "A human readable name for the property (can be null)",
272
+ }),
273
+ typeParam("blurb", new NullableType(StringType), {
274
+ doc: "A longer description of the property (can be null)",
275
+ }),
276
+ typeParam("flags", new BinaryType(ParamFlags?.getType() ?? AnyType, NumberType), {
277
+ doc: "The flags for this property (e.g. READABLE, WRITABLE)",
278
+ }),
279
+ ],
280
+ parent: ParamSpec,
281
+ return_type: new NativeType("ParamSpec<T>"),
282
+ });
283
+
284
+ jsobject.generics.push(new Generic(new GenericType("T")));
285
+ jsobject.doc = "Creates a new ParamSpec instance for JavaScript object properties.";
286
+
287
+ const override = new IntrospectedClassFunction({
288
+ parent: ParamSpec,
289
+ name: "override",
290
+ return_type: VoidType,
291
+ parameters: [
292
+ new IntrospectedFunctionParameter({
293
+ direction: GirDirection.In,
294
+ name: "name",
295
+ type: StringType,
296
+ doc: "The name of the property to override",
297
+ }),
298
+ new IntrospectedFunctionParameter({
299
+ direction: GirDirection.In,
300
+ name: "oclass",
301
+ type: new OrType(
302
+ namespace.assertClass("Object").getType(),
303
+ new NativeType("Function"),
304
+ new TypeIdentifier("GType", "GObject"),
305
+ ),
306
+ doc: "The object class or type that contains the property to override",
307
+ }),
308
+ ],
309
+ doc: "Registers a property override for a property introduced in a parent class or inherited interface.",
310
+ });
311
+
312
+ function ParamSpecWithGenerics(type: TypeExpression) {
313
+ return new GenerifiedTypeIdentifier("ParamSpec", "GObject", [type]);
314
+ }
315
+
316
+ // Custom string ParamSpec function with optional defaultValue parameter
317
+ const stringParamSpec = new IntrospectedStaticClassFunction({
318
+ name: "string",
319
+ parameters: [
320
+ stringParam("name", {
321
+ doc: "The name of the property",
322
+ }),
323
+ typeParam("nick", new NullableType(StringType), {
324
+ doc: "A human readable name for the property (can be null)",
325
+ }),
326
+ typeParam("blurb", new NullableType(StringType), {
327
+ doc: "A longer description of the property (can be null)",
328
+ }),
329
+ typeParam("flags", new BinaryType(ParamFlags?.getType() ?? AnyType, NumberType), {
330
+ doc: "The flags for this property (e.g. READABLE, WRITABLE)",
331
+ }),
332
+ optionalParam("defaultValue", new NullableType(StringType), {
333
+ doc: "The default value for this property (optional, defaults to null if not provided)",
334
+ }),
335
+ ],
336
+ parent: ParamSpec,
337
+ return_type: ParamSpecWithGenerics(StringType),
338
+ });
339
+
340
+ stringParamSpec.doc = "Creates a new GParamSpecString instance specifying a G_TYPE_STRING property.";
341
+
342
+ ParamSpec.members.push(
343
+ generateParamSpec(
344
+ "char",
345
+ ParamSpecWithGenerics(NumberType),
346
+ true,
347
+ null,
348
+ true,
349
+ NumberType,
350
+ false,
351
+ "Creates a new GParamSpecChar instance specifying a G_TYPE_CHAR property.",
352
+ ),
353
+ generateParamSpec(
354
+ "uchar",
355
+ ParamSpecWithGenerics(NumberType),
356
+ true,
357
+ null,
358
+ true,
359
+ NumberType,
360
+ false,
361
+ "Creates a new GParamSpecUChar instance specifying a G_TYPE_UCHAR property.",
362
+ ),
363
+ generateParamSpec(
364
+ "int",
365
+ ParamSpecWithGenerics(NumberType),
366
+ true,
367
+ null,
368
+ true,
369
+ NumberType,
370
+ false,
371
+ "Creates a new GParamSpecInt instance specifying a G_TYPE_INT property.",
372
+ ),
373
+ generateParamSpec(
374
+ "uint",
375
+ ParamSpecWithGenerics(NumberType),
376
+ true,
377
+ null,
378
+ true,
379
+ NumberType,
380
+ false,
381
+ "Creates a new GParamSpecUInt instance specifying a G_TYPE_UINT property.",
382
+ ),
383
+ generateParamSpec(
384
+ "long",
385
+ ParamSpecWithGenerics(NumberType),
386
+ true,
387
+ null,
388
+ true,
389
+ NumberType,
390
+ false,
391
+ "Creates a new GParamSpecLong instance specifying a G_TYPE_LONG property.",
392
+ ),
393
+ generateParamSpec(
394
+ "ulong",
395
+ ParamSpecWithGenerics(NumberType),
396
+ true,
397
+ null,
398
+ true,
399
+ NumberType,
400
+ false,
401
+ "Creates a new GParamSpecULong instance specifying a G_TYPE_ULONG property.",
402
+ ),
403
+ generateParamSpec(
404
+ "int64",
405
+ ParamSpecWithGenerics(NumberType),
406
+ true,
407
+ null,
408
+ true,
409
+ NumberType,
410
+ false,
411
+ "Creates a new GParamSpecInt64 instance specifying a G_TYPE_INT64 property.",
412
+ ),
413
+ generateParamSpec(
414
+ "uint64",
415
+ ParamSpecWithGenerics(NumberType),
416
+ true,
417
+ null,
418
+ true,
419
+ NumberType,
420
+ false,
421
+ "Creates a new GParamSpecUInt64 instance specifying a G_TYPE_UINT64 property.",
422
+ ),
423
+ generateParamSpec(
424
+ "float",
425
+ ParamSpecWithGenerics(NumberType),
426
+ true,
427
+ null,
428
+ true,
429
+ NumberType,
430
+ false,
431
+ "Creates a new GParamSpecFloat instance specifying a G_TYPE_FLOAT property.",
432
+ ),
433
+ generateParamSpec(
434
+ "boolean",
435
+ ParamSpecWithGenerics(BooleanType),
436
+ false,
437
+ null,
438
+ true,
439
+ BooleanType,
440
+ false,
441
+ "Creates a new GParamSpecBoolean instance specifying a G_TYPE_BOOLEAN property. In many cases, it may be more appropriate to use an enum with g_param_spec_enum(), both to improve code clarity by using explicitly named values, and to allow for more values to be added in future without breaking API.",
442
+ ),
443
+ generateParamSpec(
444
+ "flags",
445
+ ParamSpecWithGenerics(NumberType),
446
+ false,
447
+ "flags",
448
+ true,
449
+ undefined,
450
+ false,
451
+ "Creates a new GParamSpecFlags instance specifying a G_TYPE_FLAGS property.",
452
+ ),
453
+ generateParamSpec(
454
+ "enum",
455
+ ParamSpecWithGenerics(new NativeType("T")),
456
+ false,
457
+ "enum",
458
+ true,
459
+ undefined,
460
+ true,
461
+ "Creates a new GParamSpecEnum instance specifying a G_TYPE_ENUM property.",
462
+ ),
463
+ generateParamSpec(
464
+ "double",
465
+ ParamSpecWithGenerics(NumberType),
466
+ true,
467
+ null,
468
+ true,
469
+ NumberType,
470
+ false,
471
+ "Creates a new GParamSpecDouble instance specifying a G_TYPE_DOUBLE property.",
472
+ ),
473
+ stringParamSpec,
474
+ generateParamSpec(
475
+ "boxed",
476
+ ParamSpecWithGenerics(new NativeType("T")),
477
+ false,
478
+ "boxed",
479
+ false,
480
+ undefined,
481
+ true,
482
+ "Creates a new GParamSpecBoxed instance specifying a G_TYPE_BOXED derived property.",
483
+ ),
484
+ object,
485
+ generateParamSpec(
486
+ "param",
487
+ ParamSpec.getType(),
488
+ false,
489
+ "param",
490
+ false,
491
+ undefined,
492
+ false,
493
+ "Creates a new GParamSpecParam instance specifying a G_TYPE_PARAM property.",
494
+ ),
495
+ jsobject,
496
+ override,
497
+ );
498
+ }
499
+ namespace.members.delete("Closure");
500
+
501
+ namespace.members.set(
502
+ "Closure",
503
+ new IntrospectedAlias({
504
+ name: "Closure",
505
+ namespace,
506
+ type: NativeType.of("(...args: P[]) => R"),
507
+ generics: [
508
+ {
509
+ name: "R",
510
+ type: AnyType,
511
+ },
512
+ {
513
+ name: "P",
514
+ type: AnyType,
515
+ },
516
+ ],
517
+ }),
518
+ );
519
+
520
+ {
521
+ const GObject = namespace.assertClass("Object");
522
+ const Value = namespace.assertClass("Value");
523
+
524
+ const get_property = GObject.members.findIndex((m) => m.name === "get_property");
525
+ const set_property = GObject.members.findIndex((m) => m.name === "set_property");
526
+
527
+ GObject.members[get_property] = new IntrospectedClassFunction({
528
+ name: "get_property",
529
+ parent: GObject,
530
+ parameters: [
531
+ new IntrospectedFunctionParameter({
532
+ name: "property_name",
533
+ type: StringType,
534
+ direction: GirDirection.In,
535
+ doc: "The name of the property to get",
536
+ }),
537
+ new IntrospectedFunctionParameter({
538
+ name: "value",
539
+ type: Value.getType(),
540
+ direction: GirDirection.In,
541
+ doc: "Return location for the property value. Can be an empty GObject.Value initialized by G_VALUE_INIT (auto-initialized with expected type since GLib 2.60), a GObject.Value initialized with the expected property type, or a GObject.Value initialized with a transformable type",
542
+ }),
543
+ ],
544
+ return_type: AnyType,
545
+ doc: `Gets a property of an object.
546
+
547
+ The value can be:
548
+ - an empty GObject.Value initialized by G_VALUE_INIT, which will be automatically initialized with the expected type of the property (since GLib 2.60)
549
+ - a GObject.Value initialized with the expected type of the property
550
+ - a GObject.Value initialized with a type to which the expected type of the property can be transformed
551
+
552
+ In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling GObject.Value.unset.
553
+
554
+ Note that GObject.Object.get_property is really intended for language bindings, GObject.Object.get is much more convenient for C programming.`,
555
+ });
556
+
557
+ GObject.members[set_property] = new IntrospectedClassFunction({
558
+ name: "set_property",
559
+ parent: GObject,
560
+ parameters: [
561
+ new IntrospectedFunctionParameter({
562
+ name: "property_name",
563
+ type: StringType,
564
+ direction: GirDirection.In,
565
+ doc: "The name of the property to set",
566
+ }),
567
+ new IntrospectedFunctionParameter({
568
+ name: "value",
569
+ type: Value.getType(),
570
+ direction: GirDirection.In,
571
+ doc: "The value to set the property to",
572
+ }),
573
+ ],
574
+ return_type: VoidType,
575
+ doc: "Sets a property on an object.",
576
+ });
577
+
578
+ // Fix for bind_property_full - make Closure parameters nullable, see https://github.com/gjsify/ts-for-gir/issues/255
579
+ // The bind_property_with_closures method in GObject-2.0.gir shadows bind_property_full,
580
+ // but the Closure parameters are missing nullable="1" attributes even though the
581
+ // documentation states they can be null. This is a bug in the upstream GIR file.
582
+
583
+ // Find all bind_property_full methods
584
+ const allBindPropertyFull = GObject.members.filter(
585
+ (m) => m.name === "bind_property_full" && m instanceof IntrospectedClassFunction,
586
+ ) as IntrospectedClassFunction[];
587
+
588
+ // Find the one with Closure parameters (the shadowed version)
589
+ const bindPropertyFullWithClosures = allBindPropertyFull.find((method) => {
590
+ const hasClosureParams = method.parameters.some((param) => {
591
+ if (param.name === "transform_to" || param.name === "transform_from") {
592
+ const type = param.type.deepUnwrap();
593
+ const isClosureType = type instanceof TypeIdentifier && type.name === "Closure";
594
+ return isClosureType;
595
+ }
596
+ return false;
597
+ });
598
+ return hasClosureParams;
599
+ });
600
+
601
+ if (bindPropertyFullWithClosures) {
602
+ // Create corrected parameters with nullable Closure types
603
+ const correctedParameters = bindPropertyFullWithClosures.parameters.map((param) => {
604
+ if (param.name === "transform_to" || param.name === "transform_from") {
605
+ const type = param.type.deepUnwrap();
606
+ if (type instanceof TypeIdentifier && type.name === "Closure") {
607
+ // Make the Closure parameter nullable
608
+ return param.copy({
609
+ type: new NullableType(param.type),
610
+ });
611
+ }
612
+ }
613
+ return param;
614
+ });
615
+
616
+ // Find the index and replace
617
+ const bindPropertyFullIndex = GObject.members.findIndex((m) => m === bindPropertyFullWithClosures);
618
+ GObject.members[bindPropertyFullIndex] = bindPropertyFullWithClosures.copy({
619
+ parameters: correctedParameters,
620
+ });
621
+ }
622
+
623
+ GObject.members.push(
624
+ new IntrospectedStaticClassFunction({
625
+ name: "_classInit",
626
+ parent: GObject,
627
+ parameters: [
628
+ new IntrospectedFunctionParameter({
629
+ name: "klass",
630
+ type: AnyType,
631
+ direction: GirDirection.In,
632
+ }),
633
+ ],
634
+ return_type: AnyType,
635
+ }),
636
+ new IntrospectedClassFunction({
637
+ name: "disconnect",
638
+ parent: GObject,
639
+ parameters: [
640
+ new IntrospectedFunctionParameter({
641
+ name: "id",
642
+ type: NumberType,
643
+ direction: GirDirection.In,
644
+ doc: "Handler ID of the handler to be disconnected",
645
+ }),
646
+ ],
647
+ return_type: VoidType,
648
+ doc: "Disconnects a handler from an instance so it will not be called during any future or currently ongoing emissions of the signal it has been connected to.",
649
+ }),
650
+ new IntrospectedClassFunction({
651
+ name: "set",
652
+ parent: GObject,
653
+ parameters: [
654
+ new IntrospectedFunctionParameter({
655
+ name: "properties",
656
+ type: new NativeType("{ [key: string]: any }"),
657
+ direction: GirDirection.In,
658
+ doc: "Object containing the properties to set",
659
+ }),
660
+ ],
661
+ return_type: VoidType,
662
+ doc: "Sets multiple properties of an object at once. The properties argument should be a dictionary mapping property names to values.",
663
+ }),
664
+ new IntrospectedClassFunction({
665
+ name: "block_signal_handler",
666
+ parent: GObject,
667
+ parameters: [
668
+ new IntrospectedFunctionParameter({
669
+ name: "id",
670
+ type: NumberType,
671
+ direction: GirDirection.In,
672
+ doc: "Handler ID of the handler to be blocked",
673
+ }),
674
+ ],
675
+ return_type: VoidType,
676
+ doc: "Blocks a handler of an instance so it will not be called during any signal emissions",
677
+ }),
678
+ new IntrospectedClassFunction({
679
+ name: "unblock_signal_handler",
680
+ parent: GObject,
681
+ parameters: [
682
+ new IntrospectedFunctionParameter({
683
+ name: "id",
684
+ type: NumberType,
685
+ direction: GirDirection.In,
686
+ doc: "Handler ID of the handler to be unblocked",
687
+ }),
688
+ ],
689
+ return_type: VoidType,
690
+ doc: "Unblocks a handler so it will be called again during any signal emissions",
691
+ }),
692
+ new IntrospectedClassFunction({
693
+ name: "stop_emission_by_name",
694
+ parent: GObject,
695
+ parameters: [
696
+ new IntrospectedFunctionParameter({
697
+ name: "detailedName",
698
+ type: StringType,
699
+ direction: GirDirection.In,
700
+ doc: "Name of the signal to stop emission of",
701
+ }),
702
+ ],
703
+ return_type: VoidType,
704
+ doc: "Stops a signal's emission by the given signal name. This will prevent the default handler and any subsequent signal handlers from being invoked.",
705
+ }),
706
+ );
707
+
708
+ function replaceFunction(name: string, ...functions: IntrospectedFunction[]) {
709
+ namespace.members.delete(name);
710
+
711
+ namespace.members.set(name, functions);
712
+ }
713
+
714
+ // export function signal_handlers_block_by_func(instance: Object, func: Function);
715
+
716
+ replaceFunction(
717
+ "signal_handlers_block_by_func",
718
+ new IntrospectedFunction({
719
+ name: "signal_handlers_block_by_func",
720
+ namespace,
721
+ raw_name: "signal_handlers_block_by_func",
722
+ parameters: [
723
+ new IntrospectedFunctionParameter({
724
+ name: "instance",
725
+ type: GObject.getType(),
726
+ direction: GirDirection.In,
727
+ }),
728
+ new IntrospectedFunctionParameter({
729
+ name: "func",
730
+ type: AnyFunctionType,
731
+ direction: GirDirection.In,
732
+ }),
733
+ ],
734
+ return_type: VoidType,
735
+ }),
736
+ );
737
+
738
+ // export function signal_handlers_unblock_by_func (instance: Object, func: Function);
739
+
740
+ replaceFunction(
741
+ "signal_handlers_unblock_by_func",
742
+ new IntrospectedFunction({
743
+ name: "signal_handlers_unblock_by_func",
744
+ namespace,
745
+ raw_name: "signal_handlers_unblock_by_func",
746
+ parameters: [
747
+ new IntrospectedFunctionParameter({
748
+ name: "instance",
749
+ type: GObject.getType(),
750
+ direction: GirDirection.In,
751
+ }),
752
+ new IntrospectedFunctionParameter({
753
+ name: "func",
754
+ type: AnyFunctionType,
755
+ direction: GirDirection.In,
756
+ }),
757
+ ],
758
+ return_type: VoidType,
759
+ }),
760
+ );
761
+
762
+ // export function signal_handlers_disconnect_by_func(instance: Object, func: Function);
763
+
764
+ replaceFunction(
765
+ "signal_handlers_disconnect_by_func",
766
+ new IntrospectedFunction({
767
+ name: "signal_handlers_disconnect_by_func",
768
+ namespace,
769
+ raw_name: "signal_handlers_disconnect_by_func",
770
+ parameters: [
771
+ new IntrospectedFunctionParameter({
772
+ name: "instance",
773
+ type: GObject.getType(),
774
+ direction: GirDirection.In,
775
+ }),
776
+ new IntrospectedFunctionParameter({
777
+ name: "func",
778
+ type: AnyFunctionType,
779
+ direction: GirDirection.In,
780
+ }),
781
+ ],
782
+ return_type: VoidType,
783
+ }),
784
+ );
785
+
786
+ // signal_handler_find
787
+
788
+ const args = new IntrospectedFunctionParameter({
789
+ name: "args",
790
+ direction: GirDirection.In,
791
+ isVarArgs: true,
792
+ type: new BinaryType(
793
+ new TupleType(GObject.getType(), NativeType.of("SignalMatch")),
794
+ new TupleType(
795
+ GObject.getType(),
796
+ new TypeIdentifier("SignalMatchType", "GObject"),
797
+ NumberType,
798
+ new TypeIdentifier("Quark", "GLib"),
799
+ new NullableType(new TypeIdentifier("Closure", "GObject")),
800
+ new NullableType(ObjectType),
801
+ new NullableType(ObjectType),
802
+ ),
803
+ ),
804
+ });
805
+
806
+ const modifiedArgs = [
807
+ new IntrospectedFunctionParameter({
808
+ name: "instance",
809
+ direction: GirDirection.In,
810
+
811
+ type: GObject.getType(),
812
+ }),
813
+ new IntrospectedFunctionParameter({
814
+ name: "match",
815
+ direction: GirDirection.In,
816
+ type: NativeType.of("SignalMatch"),
817
+ }),
818
+ ];
819
+
820
+ const originalArgs = [
821
+ new IntrospectedFunctionParameter({
822
+ name: "instance",
823
+ direction: GirDirection.In,
824
+
825
+ type: GObject.getType(),
826
+ }),
827
+ new IntrospectedFunctionParameter({
828
+ name: "match",
829
+ direction: GirDirection.In,
830
+ type: new TypeIdentifier("SignalMatchType", "GObject"),
831
+ }),
832
+ new IntrospectedFunctionParameter({
833
+ name: "signal_id",
834
+ direction: GirDirection.In,
835
+ type: NumberType,
836
+ }),
837
+ new IntrospectedFunctionParameter({
838
+ name: "detail",
839
+ type: new TypeIdentifier("Quark", "GLib"),
840
+ direction: GirDirection.In,
841
+ }),
842
+ new IntrospectedFunctionParameter({
843
+ name: "closure",
844
+ type: new NullableType(new TypeIdentifier("Closure", "GObject")),
845
+ direction: GirDirection.In,
846
+ }),
847
+ new IntrospectedFunctionParameter({
848
+ name: "func",
849
+ type: new NullableType(ObjectType),
850
+ direction: GirDirection.In,
851
+ }),
852
+ new IntrospectedFunctionParameter({
853
+ name: "object",
854
+ type: new NullableType(ObjectType),
855
+ direction: GirDirection.In,
856
+ }),
857
+ ];
858
+
859
+ function originalFunc(name: string) {
860
+ return new IntrospectedFunction({
861
+ name,
862
+ namespace,
863
+ raw_name: name,
864
+ return_type: NumberType,
865
+ parameters: originalArgs.map((a) => a.copy()),
866
+ });
867
+ }
868
+
869
+ function func(name: string) {
870
+ replaceFunction(
871
+ name,
872
+ // [name](...args: [Object, SignalMatch] | [Object, SignalMatchType, number, GLib.Quark, Closure | null, object | null, object | null]): number;
873
+ new IntrospectedFunction({
874
+ name,
875
+ namespace,
876
+ raw_name: name,
877
+ return_type: NumberType,
878
+ parameters: [args],
879
+ }),
880
+ // export function [name](instance: Object, match: SignalMatch): number;
881
+ new IntrospectedFunction({
882
+ name,
883
+ namespace,
884
+ raw_name: name,
885
+ return_type: NumberType,
886
+ parameters: modifiedArgs.map((a) => a.copy()),
887
+ }),
888
+ // export function [name](instance: Object, mask: SignalMatchType, signal_id: number, detail: GLib.Quark, closure: Closure | null, func: object | null, data: object | null): number
889
+ originalFunc(name),
890
+ // export function [`_real_${name}`](instance: Object, mask: SignalMatchType, signal_id: number, detail: GLib.Quark, closure: Closure | null, func: object | null, data: object | null): number
891
+ originalFunc(`_real_${name}`),
892
+ );
893
+ }
894
+
895
+ func("signal_handler_find");
896
+ func("signal_handler_block_matched");
897
+ func("signal_handler_block_disconnect_matched");
898
+ func("signal_handler_block_unblock_matched");
899
+ }
900
+ },
901
+ };