@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,7 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+
4
+ // Get __filename on ESM
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ // Get __dirname on ESM, resolve to the root directory of this package
7
+ export const __dirname = resolve(dirname(__filename), "../.."); // TODO: Bundled this must be '..' but unbundled it must be '../..'
@@ -0,0 +1,5 @@
1
+ import { SanitizedIdentifiers } from "./naming.ts";
2
+
3
+ export function getSanitizedIdentifiers(): ReadonlyMap<string, string> {
4
+ return SanitizedIdentifiers;
5
+ }
@@ -0,0 +1,134 @@
1
+ import { isNumeric } from "./numbers.ts";
2
+
3
+ /**
4
+ * Removes line breaks and consecutive white spaces from a given string
5
+ * @param str
6
+ * @returns
7
+ */
8
+ export const cleanString = (str: string) => {
9
+ str = str.replace(/\r?\n|\r/g, " ");
10
+ str = str.replace(/\s+/g, " ");
11
+ return str.trim();
12
+ };
13
+
14
+ /**
15
+ * Get the first character of a string
16
+ * @param str The string to get the first character from
17
+ * @returns The first character
18
+ */
19
+ export const getFirstChar = (str: string): string => {
20
+ return str.charAt(0);
21
+ };
22
+
23
+ /**
24
+ * Get the last character of a string
25
+ * @param str The string to get the last character from
26
+ * @returns The last character
27
+ */
28
+ export const getLastChar = (str: string): string => {
29
+ return str.charAt(str.length - 1);
30
+ };
31
+
32
+ /**
33
+ * Check if the first character of a string is numeric
34
+ * @param str The string to check
35
+ * @returns Whether the first character is numeric or not
36
+ */
37
+ export const isFirstCharNumeric = (str: string): boolean => {
38
+ return isNumeric(getFirstChar(str));
39
+ };
40
+
41
+ /**
42
+ * Convert a string to camelCase, keeps the first alphabet character as it is.
43
+ * @param str The string to convert
44
+ * @returns The converted string
45
+ */
46
+ export const camelCase = (str: string): string => {
47
+ return str
48
+ .replace(/\s(.)|(\s|-|_|\.)(.)/g, (a) => {
49
+ return a.toUpperCase();
50
+ })
51
+ .replace(/(\s|-|_|\.)/g, "");
52
+ };
53
+
54
+ /**
55
+ * Convert a string to `lowerCamelCase`
56
+ * @param str The string to convert
57
+ * @returns The converted string
58
+ */
59
+ export const lowerCamelCase = (str: string): string => {
60
+ str = camelCase(str);
61
+ str = getFirstChar(str).toLowerCase() + str.slice(1);
62
+ return str;
63
+ };
64
+
65
+ /**
66
+ * Convert a string to `PascalCase`
67
+ * @param str The string to convert
68
+ * @returns The converted string
69
+ */
70
+ export const pascalCase = (str: string): string => {
71
+ str = camelCase(str);
72
+ str = getFirstChar(str).toUpperCase() + str.slice(1);
73
+ return str;
74
+ };
75
+
76
+ /** Alias for {@link pascalCase} */
77
+ export const upperCamelCase = pascalCase;
78
+
79
+ /**
80
+ * Convert a string to `snake_case`
81
+ * @param str The string to convert
82
+ * @returns The converted string
83
+ */
84
+ export const snakeCase = (str: string): string => {
85
+ return str
86
+ .replace(/([a-z])([A-Z])/g, "$1-$2") // replace camelCase with hyphen-case
87
+ .replace(/[^a-zA-Z0-9-]+/g, "_") // replace non-alphanumeric characters with underscore
88
+ .replace(/^_+|_+$/g, "") // remove any leading or trailing underscores
89
+ .toLowerCase();
90
+ };
91
+
92
+ /**
93
+ * Convert a string to `kebab-case`
94
+ * @param str The string to convert
95
+ * @returns The converted string
96
+ */
97
+ export const kebabCase = (str: string): string => {
98
+ return str
99
+ .replace(/([a-z])([A-Z])/g, "$1-$2") // replace camelCase with hyphen-case
100
+ .replace(/[^a-zA-Z0-9-]+/g, "-") // replace non-alphanumeric characters with hyphen
101
+ .replace(/^-+|-+$/g, "") // remove any leading or trailing hyphens
102
+ .toLowerCase();
103
+ };
104
+
105
+ /** Alias for {@link kebabCase} */
106
+ export const slugCase = kebabCase;
107
+
108
+ export const underscores = (str: string): string => {
109
+ return str.replace(/-|_/g, "_");
110
+ };
111
+
112
+ /**
113
+ * Add indents to a string
114
+ * @param indents The number of indents
115
+ * @param spaceForIndent The number of spaces for each indent
116
+ * @returns The indented string
117
+ */
118
+ export const generateIndent = (indents = 1, spaceForIndent = 4): string => {
119
+ return " ".repeat(indents * spaceForIndent);
120
+ };
121
+
122
+ /**
123
+ * Merge a large array of strings by using a smaller chunk size
124
+ * @param target The target array to merge into
125
+ * @param source The source array to merge from
126
+ * @param chunkSize The size of the chunks to merge
127
+ * @returns The merged array
128
+ */
129
+ export const mergeLargeStringArray = (target: string[], source: string[], chunkSize: number = 1000): string[] => {
130
+ for (let i = 0; i < source.length; i += chunkSize) {
131
+ target.push(...source.slice(i, i + chunkSize));
132
+ }
133
+ return target;
134
+ };
@@ -0,0 +1,116 @@
1
+ import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
2
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
3
+ import { AnyType, GenericType, ThisType, type TypeExpression, TypeIdentifier } from "../gir.ts";
4
+ import { TwoKeyMap } from "../util.ts";
5
+
6
+ /**
7
+ * Resolves a class identifier.
8
+ *
9
+ * If the identifier is a class type it is returned,
10
+ * otherwise `null`.
11
+ *
12
+ * @param namespace
13
+ * @param type
14
+ */
15
+ export function resolveTypeIdentifier(
16
+ namespace: IntrospectedNamespace,
17
+ type: TypeIdentifier,
18
+ ): IntrospectedBaseClass | null {
19
+ const ns = type.namespace;
20
+ const name = type.name;
21
+
22
+ const resolved_ns = namespace.assertInstalledImport(ns);
23
+
24
+ const pclass = resolved_ns.getClass(name);
25
+ if (pclass) {
26
+ return pclass;
27
+ } else {
28
+ return null;
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Checks if two type expressions are in conflict (not equal)
34
+ * @param a
35
+ * @param b
36
+ */
37
+ function isTypeConflict(a: TypeExpression, b: TypeExpression) {
38
+ return !a.equals(b) || !b.equals(a);
39
+ }
40
+
41
+ /**
42
+ * Checks if a given type expression in the context of a given this type
43
+ * is a subtype (compatible with) of another type expression in the context
44
+ * of a parent type.
45
+ *
46
+ * @param namespace
47
+ * @param thisType
48
+ * @param parentThisType
49
+ * @param potentialSubtype
50
+ * @param parentType
51
+ */
52
+ export function isSubtypeOf(
53
+ namespace: IntrospectedNamespace,
54
+ thisType: TypeIdentifier,
55
+ parentThisType: TypeIdentifier,
56
+ potentialSubtype: TypeExpression,
57
+ parentType: TypeExpression,
58
+ ) {
59
+ if (!isTypeConflict(potentialSubtype, parentType)) {
60
+ return true;
61
+ }
62
+
63
+ const unwrappedSubtype = potentialSubtype.unwrap();
64
+ let unwrappedParent = parentType.unwrap();
65
+
66
+ if (
67
+ (potentialSubtype.equals(ThisType) && unwrappedParent.equals(thisType)) ||
68
+ (parentType.equals(ThisType) && unwrappedSubtype.equals(parentThisType))
69
+ ) {
70
+ return true;
71
+ }
72
+
73
+ if (unwrappedParent instanceof GenericType && unwrappedParent.identifier !== "T") {
74
+ // Technically there could be a conflicting generic, but most generic types should specify a replacement for type checking.
75
+ // "T" denotes a local function generic in the current implementation, those can't be ignored.
76
+ if (!unwrappedParent.replacedType) {
77
+ return true;
78
+ }
79
+
80
+ // Use the generic replaced type as a stand-in.
81
+ unwrappedParent = unwrappedParent.replacedType;
82
+ }
83
+
84
+ if (!(unwrappedSubtype instanceof TypeIdentifier) || !(unwrappedParent instanceof TypeIdentifier)) {
85
+ return false;
86
+ }
87
+
88
+ const resolutions =
89
+ namespace.parent.subtypes.get(unwrappedSubtype.name, unwrappedSubtype.namespace) ??
90
+ new TwoKeyMap<string, string, boolean>();
91
+ const resolution = resolutions.get(unwrappedParent.name, unwrappedParent.namespace);
92
+
93
+ if (typeof resolution === "boolean") {
94
+ return resolution;
95
+ }
96
+
97
+ const resolved = resolveTypeIdentifier(namespace, unwrappedSubtype);
98
+
99
+ if (!resolved) {
100
+ return false;
101
+ }
102
+ const parentResolution = resolved.resolveParents();
103
+
104
+ // This checks that the two types have the same form, regardless of identifier (e.g. A | null and B | null)
105
+ const isStructurallySubtype = potentialSubtype.rewrap(AnyType).equals(parentType.rewrap(AnyType));
106
+
107
+ const isSubtype =
108
+ isStructurallySubtype &&
109
+ parentResolution.node.someParent((t: IntrospectedBaseClass) => t.getType().equals(unwrappedParent));
110
+
111
+ resolutions.set(unwrappedParent.name, unwrappedParent.namespace, isSubtype);
112
+
113
+ namespace.parent.subtypes.set(unwrappedSubtype.name, unwrappedSubtype.namespace, resolutions);
114
+
115
+ return isSubtype;
116
+ }
@@ -0,0 +1,249 @@
1
+ import type { GirAliasElement } from "@gi.ts/parser";
2
+ import { GirDirection } from "@gi.ts/parser";
3
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
4
+ import {
5
+ AnyType,
6
+ ArrayType,
7
+ BinaryType,
8
+ BooleanType,
9
+ NativeType,
10
+ NeverType,
11
+ NumberType,
12
+ ObjectType,
13
+ StringType,
14
+ ThisType,
15
+ type TypeExpression,
16
+ TypeIdentifier,
17
+ Uint8ArrayType,
18
+ UnknownType,
19
+ VoidType,
20
+ } from "../gir.ts";
21
+ import { girParsingReporter } from "./gir-parsing.ts";
22
+
23
+ /**
24
+ * Get the type expression for an alias element
25
+ */
26
+ export function getAliasType(
27
+ namespace: string,
28
+ _ns: IntrospectedNamespace,
29
+ parameter: GirAliasElement,
30
+ ): TypeExpression {
31
+ let name = parameter.type?.[0].$.name || "unknown";
32
+
33
+ const nameParts = name.split(" ");
34
+
35
+ if (nameParts.length === 1) {
36
+ name = nameParts[0];
37
+ } else {
38
+ name = nameParts[1];
39
+ }
40
+
41
+ return parseTypeExpression(namespace, name);
42
+ }
43
+
44
+ /**
45
+ * Parse a type string into namespace and name components
46
+ */
47
+ export function parseTypeString(type: string): { namespace: string | null; name: string } {
48
+ if (type.includes(".")) {
49
+ const parts = type.split(".");
50
+
51
+ if (parts.length > 2) {
52
+ throw new Error(`Invalid type string ${type} passed.`);
53
+ }
54
+
55
+ const [namespace, name] = parts;
56
+
57
+ return { name, namespace };
58
+ } else {
59
+ return { name: type, namespace: null };
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Parse a type identifier from namespace and type string
65
+ */
66
+ export function parseTypeIdentifier(namespace: string, type: string): TypeIdentifier {
67
+ const baseType = parseTypeString(type);
68
+
69
+ if (baseType.namespace) {
70
+ return new TypeIdentifier(baseType.name, baseType.namespace);
71
+ } else {
72
+ return new TypeIdentifier(baseType.name, namespace);
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Parse a type expression from namespace and type string
78
+ */
79
+ export function parseTypeExpression(namespace: string, type: string): TypeExpression {
80
+ const baseType = parseTypeString(type);
81
+ if (baseType.namespace) {
82
+ if (baseType.namespace === namespace) {
83
+ return new TypeIdentifier(baseType.name, namespace);
84
+ }
85
+ return new TypeIdentifier(baseType.name, baseType.namespace).sanitize();
86
+ } else {
87
+ const primitiveType = resolvePrimitiveType(baseType.name);
88
+
89
+ if (primitiveType !== null) {
90
+ return primitiveType;
91
+ } else {
92
+ return new TypeIdentifier(baseType.name, namespace);
93
+ }
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Resolve primitive array types with their correct depth
99
+ */
100
+ export function resolvePrimitiveArrayType(name: string, arrayDepth: number): [TypeExpression, number] | null {
101
+ if (arrayDepth > 0) {
102
+ switch (name) {
103
+ case "gint8":
104
+ case "guint8":
105
+ return [Uint8ArrayType, arrayDepth - 1];
106
+ case "gunichar":
107
+ return [StringType, arrayDepth - 1];
108
+ }
109
+ }
110
+
111
+ const resolvedName = resolvePrimitiveType(name);
112
+
113
+ if (resolvedName) {
114
+ return [resolvedName, arrayDepth];
115
+ } else {
116
+ return null;
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Check if a type name is a primitive type
122
+ */
123
+ export function isPrimitiveType(name: string): boolean {
124
+ return resolvePrimitiveType(name) !== null;
125
+ }
126
+
127
+ /**
128
+ * Resolve primitive type names to TypeExpression instances
129
+ */
130
+ export function resolvePrimitiveType(name: string): TypeExpression | null {
131
+ switch (name) {
132
+ case "":
133
+ girParsingReporter.get().reportTypeResolutionWarning("", "unknown", "Resolving empty type name to 'any'");
134
+ return AnyType;
135
+ case "filename":
136
+ return StringType;
137
+ // Pass this through
138
+ case "GType":
139
+ return new TypeIdentifier("GType", "GObject");
140
+ case "utf8":
141
+ return StringType;
142
+ case "void": // Support TS "void"
143
+ case "none":
144
+ return VoidType;
145
+ // TODO Some libraries are bad and don't use g-prefixed numerical types
146
+ case "uint":
147
+ case "int":
148
+ case "uint8":
149
+ case "int8":
150
+ case "uint16":
151
+ case "int16":
152
+ case "uint32":
153
+ case "int32":
154
+ case "int64":
155
+ case "uint64":
156
+ case "double":
157
+ case "long":
158
+ case "float":
159
+ // Most libraries will use these though:
160
+ case "gshort":
161
+ case "guint32":
162
+ case "guint16":
163
+ case "gint16":
164
+ case "gint8":
165
+ case "gint32":
166
+ case "gushort":
167
+ case "gfloat":
168
+ case "gchar":
169
+ case "guint":
170
+ case "glong":
171
+ case "gulong":
172
+ case "gint":
173
+ case "guint8":
174
+ case "guint64":
175
+ case "gint64":
176
+ case "gdouble":
177
+ case "gssize":
178
+ case "gsize":
179
+ case "time_t": // C standard library time type (seconds since Unix epoch)
180
+ case "ulong": // C standard library unsigned long type
181
+ return NumberType;
182
+ case "gboolean":
183
+ return BooleanType;
184
+ case "gpointer": // This is typically used in callbacks to pass data, so we'll allow anything.
185
+ return AnyType;
186
+ case "object": // Support TS "object"
187
+ return ObjectType;
188
+ case "va_list":
189
+ return AnyType;
190
+ case "guintptr": // You can't use pointers in GJS! (at least that I'm aware of)
191
+ return NeverType;
192
+ case "never": // Support TS "never"
193
+ return NeverType;
194
+ case "unknown": // Support TS "unknown"
195
+ return UnknownType;
196
+ case "any": // Support TS "any"
197
+ return AnyType;
198
+ case "this": // Support TS "this"
199
+ return ThisType;
200
+ case "number": // Support TS "number"
201
+ return NumberType;
202
+ case "gunichar":
203
+ case "string": // Support TS "string"
204
+ return StringType;
205
+ case "boolean": // Support TS "boolean"
206
+ return BooleanType;
207
+ }
208
+
209
+ return null;
210
+ }
211
+
212
+ /**
213
+ * Resolve directional types based on GIR direction
214
+ */
215
+ export function resolveDirectedType(type: TypeExpression, direction: GirDirection): TypeExpression | null {
216
+ if (type instanceof ArrayType) {
217
+ if (
218
+ (direction === GirDirection.In || direction === GirDirection.Inout) &&
219
+ type.type.equals(Uint8ArrayType) &&
220
+ type.arrayDepth === 0
221
+ ) {
222
+ return new BinaryType(type, StringType);
223
+ } else {
224
+ // Rewrap arrays if they have directional types
225
+ return type.rewrap(resolveDirectedType(type.type, direction) ?? type.type);
226
+ }
227
+ } else if (type instanceof TypeIdentifier) {
228
+ if ((direction === GirDirection.In || direction === GirDirection.Inout) && type.is("GLib", "Bytes")) {
229
+ return new BinaryType(type, Uint8ArrayType);
230
+ } else if (type.is("GObject", "Value")) {
231
+ if (direction === GirDirection.In || direction === GirDirection.Inout) {
232
+ return new BinaryType(type, AnyType);
233
+ } else {
234
+ // GJS converts GObject.Value out parameters to their unboxed type, which we don't know,
235
+ // so type as `unknown`
236
+ return UnknownType;
237
+ }
238
+ } else if (type.is("GLib", "HashTable")) {
239
+ if (direction === GirDirection.In) {
240
+ // Intentional `any` — GLib.HashTable maps to a JS dict with dynamic values in generated output
241
+ return new BinaryType(new NativeType("{ [key: string]: any }"), type);
242
+ } else {
243
+ return type;
244
+ }
245
+ }
246
+ }
247
+
248
+ return null;
249
+ }