@ts-for-gir/cli 3.0.0-beta.10

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 (773) hide show
  1. package/README.md +420 -0
  2. package/lib/commands/doc.d.ts +27 -0
  3. package/lib/commands/doc.js +48 -0
  4. package/lib/commands/doc.js.map +1 -0
  5. package/lib/commands/generate.d.ts +49 -0
  6. package/lib/commands/generate.js +73 -0
  7. package/lib/commands/generate.js.map +1 -0
  8. package/lib/commands/index.d.ts +3 -0
  9. package/lib/commands/index.js +4 -0
  10. package/lib/commands/index.js.map +1 -0
  11. package/lib/commands/list.d.ts +21 -0
  12. package/lib/commands/list.js +77 -0
  13. package/lib/commands/list.js.map +1 -0
  14. package/lib/config.d.ts +88 -0
  15. package/lib/config.js +471 -0
  16. package/lib/config.js.map +1 -0
  17. package/lib/conflict-resolver.d.ts +155 -0
  18. package/lib/conflict-resolver.js +1103 -0
  19. package/lib/conflict-resolver.js.map +1 -0
  20. package/lib/constants.d.ts +18 -0
  21. package/lib/constants.js +23 -0
  22. package/lib/constants.js.map +1 -0
  23. package/lib/dependency-manager.d.ts +34 -0
  24. package/lib/dependency-manager.js +78 -0
  25. package/lib/dependency-manager.js.map +1 -0
  26. package/lib/generation-handler.d.ts +12 -0
  27. package/lib/generation-handler.js +63 -0
  28. package/lib/generation-handler.js.map +1 -0
  29. package/lib/generator.d.ts +5 -0
  30. package/lib/generator.js +2 -0
  31. package/lib/generator.js.map +1 -0
  32. package/lib/gir-factory.d.ts +52 -0
  33. package/lib/gir-factory.js +376 -0
  34. package/lib/gir-factory.js.map +1 -0
  35. package/lib/gir-module.d.ts +259 -0
  36. package/lib/gir-module.js +2181 -0
  37. package/lib/gir-module.js.map +1 -0
  38. package/lib/html-doc-generator.d.ts +13 -0
  39. package/lib/html-doc-generator.js +18 -0
  40. package/lib/html-doc-generator.js.map +1 -0
  41. package/lib/index.d.ts +17 -0
  42. package/lib/index.js +18 -0
  43. package/lib/index.js.map +1 -0
  44. package/lib/injection/callbacks/gjs/Gio-2.0.d.ts +2 -0
  45. package/lib/injection/callbacks/gjs/Gio-2.0.js +36 -0
  46. package/lib/injection/callbacks/gjs/Gio-2.0.js.map +1 -0
  47. package/lib/injection/callbacks/gjs/index.d.ts +2 -0
  48. package/lib/injection/callbacks/gjs/index.js +3 -0
  49. package/lib/injection/callbacks/gjs/index.js.map +1 -0
  50. package/lib/injection/callbacks/index.d.ts +4 -0
  51. package/lib/injection/callbacks/index.js +4 -0
  52. package/lib/injection/callbacks/index.js.map +1 -0
  53. package/lib/injection/callbacks/node-gtk/index.d.ts +2 -0
  54. package/lib/injection/callbacks/node-gtk/index.js +2 -0
  55. package/lib/injection/callbacks/node-gtk/index.js.map +1 -0
  56. package/lib/injection/classes/GLib-2-0.d.ts +2 -0
  57. package/lib/injection/classes/GLib-2-0.js +35 -0
  58. package/lib/injection/classes/GLib-2-0.js.map +1 -0
  59. package/lib/injection/classes/gjs/GLib-2.0.d.ts +2 -0
  60. package/lib/injection/classes/gjs/GLib-2.0.js +205 -0
  61. package/lib/injection/classes/gjs/GLib-2.0.js.map +1 -0
  62. package/lib/injection/classes/gjs/GObject-2.0.d.ts +2 -0
  63. package/lib/injection/classes/gjs/GObject-2.0.js +634 -0
  64. package/lib/injection/classes/gjs/GObject-2.0.js.map +1 -0
  65. package/lib/injection/classes/gjs/Gio-2.0.d.ts +5 -0
  66. package/lib/injection/classes/gjs/Gio-2.0.js +218 -0
  67. package/lib/injection/classes/gjs/Gio-2.0.js.map +1 -0
  68. package/lib/injection/classes/gjs/index.d.ts +2 -0
  69. package/lib/injection/classes/gjs/index.js +5 -0
  70. package/lib/injection/classes/gjs/index.js.map +1 -0
  71. package/lib/injection/classes/index.d.ts +4 -0
  72. package/lib/injection/classes/index.js +5 -0
  73. package/lib/injection/classes/index.js.map +1 -0
  74. package/lib/injection/classes/node-gtk/GLib-2.0.d.ts +2 -0
  75. package/lib/injection/classes/node-gtk/GLib-2.0.js +19 -0
  76. package/lib/injection/classes/node-gtk/GLib-2.0.js.map +1 -0
  77. package/lib/injection/classes/node-gtk/GObject-2.0.d.ts +2 -0
  78. package/lib/injection/classes/node-gtk/GObject-2.0.js +66 -0
  79. package/lib/injection/classes/node-gtk/GObject-2.0.js.map +1 -0
  80. package/lib/injection/classes/node-gtk/Gdk-4.0.d.ts +2 -0
  81. package/lib/injection/classes/node-gtk/Gdk-4.0.js +32 -0
  82. package/lib/injection/classes/node-gtk/Gdk-4.0.js.map +1 -0
  83. package/lib/injection/classes/node-gtk/Gio-2.0.d.ts +2 -0
  84. package/lib/injection/classes/node-gtk/Gio-2.0.js +14 -0
  85. package/lib/injection/classes/node-gtk/Gio-2.0.js.map +1 -0
  86. package/lib/injection/classes/node-gtk/Graphene-1.0.d.ts +2 -0
  87. package/lib/injection/classes/node-gtk/Graphene-1.0.js +133 -0
  88. package/lib/injection/classes/node-gtk/Graphene-1.0.js.map +1 -0
  89. package/lib/injection/classes/node-gtk/Gtk-3.0.d.ts +2 -0
  90. package/lib/injection/classes/node-gtk/Gtk-3.0.js +31 -0
  91. package/lib/injection/classes/node-gtk/Gtk-3.0.js.map +1 -0
  92. package/lib/injection/classes/node-gtk/Gtk-4.0.d.ts +2 -0
  93. package/lib/injection/classes/node-gtk/Gtk-4.0.js +52 -0
  94. package/lib/injection/classes/node-gtk/Gtk-4.0.js.map +1 -0
  95. package/lib/injection/classes/node-gtk/Pango-1.0.d.ts +2 -0
  96. package/lib/injection/classes/node-gtk/Pango-1.0.js +31 -0
  97. package/lib/injection/classes/node-gtk/Pango-1.0.js.map +1 -0
  98. package/lib/injection/classes/node-gtk/index.d.ts +2 -0
  99. package/lib/injection/classes/node-gtk/index.js +19 -0
  100. package/lib/injection/classes/node-gtk/index.js.map +1 -0
  101. package/lib/injection/index.d.ts +3 -0
  102. package/lib/injection/index.js +4 -0
  103. package/lib/injection/index.js.map +1 -0
  104. package/lib/injection/injector.d.ts +17 -0
  105. package/lib/injection/injector.js +139 -0
  106. package/lib/injection/injector.js.map +1 -0
  107. package/lib/logger.d.ts +36 -0
  108. package/lib/logger.js +137 -0
  109. package/lib/logger.js.map +1 -0
  110. package/lib/messages.d.ts +31 -0
  111. package/lib/messages.js +46 -0
  112. package/lib/messages.js.map +1 -0
  113. package/lib/module-loader.d.ts +134 -0
  114. package/lib/module-loader.js +475 -0
  115. package/lib/module-loader.js.map +1 -0
  116. package/lib/start.d.ts +2 -0
  117. package/lib/start.js +15 -0
  118. package/lib/start.js.map +1 -0
  119. package/lib/symtable.d.ts +24 -0
  120. package/lib/symtable.js +63 -0
  121. package/lib/symtable.js.map +1 -0
  122. package/lib/template-processor.d.ts +74 -0
  123. package/lib/template-processor.js +165 -0
  124. package/lib/template-processor.js.map +1 -0
  125. package/lib/transformation.d.ts +156 -0
  126. package/lib/transformation.js +524 -0
  127. package/lib/transformation.js.map +1 -0
  128. package/lib/type-definition-generator.d.ts +116 -0
  129. package/lib/type-definition-generator.js +996 -0
  130. package/lib/type-definition-generator.js.map +1 -0
  131. package/lib/types/answer-version.d.ts +4 -0
  132. package/lib/types/answer-version.js +2 -0
  133. package/lib/types/answer-version.js.map +1 -0
  134. package/lib/types/build-type.d.ts +1 -0
  135. package/lib/types/build-type.js +2 -0
  136. package/lib/types/build-type.js.map +1 -0
  137. package/lib/types/class-parent.d.ts +13 -0
  138. package/lib/types/class-parent.js +2 -0
  139. package/lib/types/class-parent.js.map +1 -0
  140. package/lib/types/config-flags.d.ts +4 -0
  141. package/lib/types/config-flags.js +2 -0
  142. package/lib/types/config-flags.js.map +1 -0
  143. package/lib/types/conflict-child-element.d.ts +10 -0
  144. package/lib/types/conflict-child-element.js +2 -0
  145. package/lib/types/conflict-child-element.js.map +1 -0
  146. package/lib/types/conflict-grouped-element.d.ts +6 -0
  147. package/lib/types/conflict-grouped-element.js +2 -0
  148. package/lib/types/conflict-grouped-element.js.map +1 -0
  149. package/lib/types/conflict-grouped-elements.d.ts +4 -0
  150. package/lib/types/conflict-grouped-elements.js +2 -0
  151. package/lib/types/conflict-grouped-elements.js.map +1 -0
  152. package/lib/types/construct-name.d.ts +1 -0
  153. package/lib/types/construct-name.js +2 -0
  154. package/lib/types/construct-name.js.map +1 -0
  155. package/lib/types/dependency-map.d.ts +4 -0
  156. package/lib/types/dependency-map.js +2 -0
  157. package/lib/types/dependency-map.js.map +1 -0
  158. package/lib/types/dependency.d.ts +15 -0
  159. package/lib/types/dependency.js +2 -0
  160. package/lib/types/dependency.js.map +1 -0
  161. package/lib/types/environment.d.ts +1 -0
  162. package/lib/types/environment.js +2 -0
  163. package/lib/types/environment.js.map +1 -0
  164. package/lib/types/file-info.d.ts +14 -0
  165. package/lib/types/file-info.js +2 -0
  166. package/lib/types/file-info.js.map +1 -0
  167. package/lib/types/generate-config.d.ts +34 -0
  168. package/lib/types/generate-config.js +2 -0
  169. package/lib/types/generate-config.js.map +1 -0
  170. package/lib/types/generator-type.d.ts +4 -0
  171. package/lib/types/generator-type.js +6 -0
  172. package/lib/types/generator-type.js.map +1 -0
  173. package/lib/types/gir-alias-element.d.ts +13 -0
  174. package/lib/types/gir-alias-element.js +2 -0
  175. package/lib/types/gir-alias-element.js.map +1 -0
  176. package/lib/types/gir-annotation.d.ts +9 -0
  177. package/lib/types/gir-annotation.js +2 -0
  178. package/lib/types/gir-annotation.js.map +1 -0
  179. package/lib/types/gir-any-element.d.ts +2 -0
  180. package/lib/types/gir-any-element.js +2 -0
  181. package/lib/types/gir-any-element.js.map +1 -0
  182. package/lib/types/gir-any-type.d.ts +5 -0
  183. package/lib/types/gir-any-type.js +2 -0
  184. package/lib/types/gir-any-type.js.map +1 -0
  185. package/lib/types/gir-array-type.d.ts +20 -0
  186. package/lib/types/gir-array-type.js +3 -0
  187. package/lib/types/gir-array-type.js.map +1 -0
  188. package/lib/types/gir-bitfield-element.d.ts +17 -0
  189. package/lib/types/gir-bitfield-element.js +2 -0
  190. package/lib/types/gir-bitfield-element.js.map +1 -0
  191. package/lib/types/gir-boolean.d.ts +1 -0
  192. package/lib/types/gir-boolean.js +2 -0
  193. package/lib/types/gir-boolean.js.map +1 -0
  194. package/lib/types/gir-boxed-element.d.ts +15 -0
  195. package/lib/types/gir-boxed-element.js +2 -0
  196. package/lib/types/gir-boxed-element.js.map +1 -0
  197. package/lib/types/gir-c-include.d.ts +7 -0
  198. package/lib/types/gir-c-include.js +2 -0
  199. package/lib/types/gir-c-include.js.map +1 -0
  200. package/lib/types/gir-callable-attrs.d.ts +15 -0
  201. package/lib/types/gir-callable-attrs.js +3 -0
  202. package/lib/types/gir-callable-attrs.js.map +1 -0
  203. package/lib/types/gir-callable-param-element.d.ts +30 -0
  204. package/lib/types/gir-callable-param-element.js +2 -0
  205. package/lib/types/gir-callable-param-element.js.map +1 -0
  206. package/lib/types/gir-callable-param.d.ts +7 -0
  207. package/lib/types/gir-callable-param.js +2 -0
  208. package/lib/types/gir-callable-param.js.map +1 -0
  209. package/lib/types/gir-callable-return.d.ts +22 -0
  210. package/lib/types/gir-callable-return.js +2 -0
  211. package/lib/types/gir-callable-return.js.map +1 -0
  212. package/lib/types/gir-callback-element.d.ts +15 -0
  213. package/lib/types/gir-callback-element.js +2 -0
  214. package/lib/types/gir-callback-element.js.map +1 -0
  215. package/lib/types/gir-class-element.d.ts +48 -0
  216. package/lib/types/gir-class-element.js +2 -0
  217. package/lib/types/gir-class-element.js.map +1 -0
  218. package/lib/types/gir-constant-element.d.ts +15 -0
  219. package/lib/types/gir-constant-element.js +2 -0
  220. package/lib/types/gir-constant-element.js.map +1 -0
  221. package/lib/types/gir-constructor-element.d.ts +8 -0
  222. package/lib/types/gir-constructor-element.js +2 -0
  223. package/lib/types/gir-constructor-element.js.map +1 -0
  224. package/lib/types/gir-direction.d.ts +5 -0
  225. package/lib/types/gir-direction.js +7 -0
  226. package/lib/types/gir-direction.js.map +1 -0
  227. package/lib/types/gir-doc-element.d.ts +68 -0
  228. package/lib/types/gir-doc-element.js +2 -0
  229. package/lib/types/gir-doc-element.js.map +1 -0
  230. package/lib/types/gir-enum-element.d.ts +19 -0
  231. package/lib/types/gir-enum-element.js +2 -0
  232. package/lib/types/gir-enum-element.js.map +1 -0
  233. package/lib/types/gir-field-element.d.ts +18 -0
  234. package/lib/types/gir-field-element.js +2 -0
  235. package/lib/types/gir-field-element.js.map +1 -0
  236. package/lib/types/gir-function-element.d.ts +8 -0
  237. package/lib/types/gir-function-element.js +2 -0
  238. package/lib/types/gir-function-element.js.map +1 -0
  239. package/lib/types/gir-implements.d.ts +8 -0
  240. package/lib/types/gir-implements.js +2 -0
  241. package/lib/types/gir-implements.js.map +1 -0
  242. package/lib/types/gir-include.d.ts +9 -0
  243. package/lib/types/gir-include.js +2 -0
  244. package/lib/types/gir-include.js.map +1 -0
  245. package/lib/types/gir-info-attrs.d.ts +13 -0
  246. package/lib/types/gir-info-attrs.js +2 -0
  247. package/lib/types/gir-info-attrs.js.map +1 -0
  248. package/lib/types/gir-info-elements.d.ts +5 -0
  249. package/lib/types/gir-info-elements.js +2 -0
  250. package/lib/types/gir-info-elements.js.map +1 -0
  251. package/lib/types/gir-instance-parameter.d.ts +21 -0
  252. package/lib/types/gir-instance-parameter.js +2 -0
  253. package/lib/types/gir-instance-parameter.js.map +1 -0
  254. package/lib/types/gir-interface-element.d.ts +31 -0
  255. package/lib/types/gir-interface-element.js +2 -0
  256. package/lib/types/gir-interface-element.js.map +1 -0
  257. package/lib/types/gir-member-element.d.ts +17 -0
  258. package/lib/types/gir-member-element.js +2 -0
  259. package/lib/types/gir-member-element.js.map +1 -0
  260. package/lib/types/gir-method-element.d.ts +13 -0
  261. package/lib/types/gir-method-element.js +2 -0
  262. package/lib/types/gir-method-element.js.map +1 -0
  263. package/lib/types/gir-module-resolved-by.d.ts +10 -0
  264. package/lib/types/gir-module-resolved-by.js +2 -0
  265. package/lib/types/gir-module-resolved-by.js.map +1 -0
  266. package/lib/types/gir-modules-grouped-map.d.ts +4 -0
  267. package/lib/types/gir-modules-grouped-map.js +2 -0
  268. package/lib/types/gir-modules-grouped-map.js.map +1 -0
  269. package/lib/types/gir-modules-grouped.d.ts +12 -0
  270. package/lib/types/gir-modules-grouped.js +2 -0
  271. package/lib/types/gir-modules-grouped.js.map +1 -0
  272. package/lib/types/gir-namespace.d.ts +30 -0
  273. package/lib/types/gir-namespace.js +2 -0
  274. package/lib/types/gir-namespace.js.map +1 -0
  275. package/lib/types/gir-package.d.ts +7 -0
  276. package/lib/types/gir-package.js +2 -0
  277. package/lib/types/gir-package.js.map +1 -0
  278. package/lib/types/gir-prerequisite.d.ts +5 -0
  279. package/lib/types/gir-prerequisite.js +2 -0
  280. package/lib/types/gir-prerequisite.js.map +1 -0
  281. package/lib/types/gir-property-element.d.ts +21 -0
  282. package/lib/types/gir-property-element.js +2 -0
  283. package/lib/types/gir-property-element.js.map +1 -0
  284. package/lib/types/gir-record-element.d.ts +30 -0
  285. package/lib/types/gir-record-element.js +2 -0
  286. package/lib/types/gir-record-element.js.map +1 -0
  287. package/lib/types/gir-repository.d.ts +16 -0
  288. package/lib/types/gir-repository.js +2 -0
  289. package/lib/types/gir-repository.js.map +1 -0
  290. package/lib/types/gir-signal.d.ts +25 -0
  291. package/lib/types/gir-signal.js +2 -0
  292. package/lib/types/gir-signal.js.map +1 -0
  293. package/lib/types/gir-transfer-ownership-type.d.ts +5 -0
  294. package/lib/types/gir-transfer-ownership-type.js +7 -0
  295. package/lib/types/gir-transfer-ownership-type.js.map +1 -0
  296. package/lib/types/gir-transfer-ownership.d.ts +5 -0
  297. package/lib/types/gir-transfer-ownership.js +2 -0
  298. package/lib/types/gir-transfer-ownership.js.map +1 -0
  299. package/lib/types/gir-type.d.ts +14 -0
  300. package/lib/types/gir-type.js +2 -0
  301. package/lib/types/gir-type.js.map +1 -0
  302. package/lib/types/gir-union-element.d.ts +22 -0
  303. package/lib/types/gir-union-element.js +2 -0
  304. package/lib/types/gir-union-element.js.map +1 -0
  305. package/lib/types/gir-unparsed-number.d.ts +2 -0
  306. package/lib/types/gir-unparsed-number.js +2 -0
  307. package/lib/types/gir-unparsed-number.js.map +1 -0
  308. package/lib/types/gir-var-args.d.ts +5 -0
  309. package/lib/types/gir-var-args.js +2 -0
  310. package/lib/types/gir-var-args.js.map +1 -0
  311. package/lib/types/gir-virtual-method.d.ts +10 -0
  312. package/lib/types/gir-virtual-method.js +2 -0
  313. package/lib/types/gir-virtual-method.js.map +1 -0
  314. package/lib/types/index.d.ts +120 -0
  315. package/lib/types/index.js +121 -0
  316. package/lib/types/index.js.map +1 -0
  317. package/lib/types/inheritance-table.d.ts +3 -0
  318. package/lib/types/inheritance-table.js +2 -0
  319. package/lib/types/inheritance-table.js.map +1 -0
  320. package/lib/types/injection-callback.d.ts +16 -0
  321. package/lib/types/injection-callback.js +2 -0
  322. package/lib/types/injection-callback.js.map +1 -0
  323. package/lib/types/injection-class.d.ts +25 -0
  324. package/lib/types/injection-class.js +2 -0
  325. package/lib/types/injection-class.js.map +1 -0
  326. package/lib/types/injection-function.d.ts +7 -0
  327. package/lib/types/injection-function.js +2 -0
  328. package/lib/types/injection-function.js.map +1 -0
  329. package/lib/types/injection-generic-parameter.d.ts +2 -0
  330. package/lib/types/injection-generic-parameter.js +2 -0
  331. package/lib/types/injection-generic-parameter.js.map +1 -0
  332. package/lib/types/injection-instance-parameter.d.ts +2 -0
  333. package/lib/types/injection-instance-parameter.js +2 -0
  334. package/lib/types/injection-instance-parameter.js.map +1 -0
  335. package/lib/types/injection-parameter.d.ts +8 -0
  336. package/lib/types/injection-parameter.js +2 -0
  337. package/lib/types/injection-parameter.js.map +1 -0
  338. package/lib/types/injection-property.d.ts +4 -0
  339. package/lib/types/injection-property.js +2 -0
  340. package/lib/types/injection-property.js.map +1 -0
  341. package/lib/types/injection-type.d.ts +2 -0
  342. package/lib/types/injection-type.js +2 -0
  343. package/lib/types/injection-type.js.map +1 -0
  344. package/lib/types/injection.d.ts +5 -0
  345. package/lib/types/injection.js +2 -0
  346. package/lib/types/injection.js.map +1 -0
  347. package/lib/types/local-name-check.d.ts +4 -0
  348. package/lib/types/local-name-check.js +2 -0
  349. package/lib/types/local-name-check.js.map +1 -0
  350. package/lib/types/local-name-type.d.ts +1 -0
  351. package/lib/types/local-name-type.js +2 -0
  352. package/lib/types/local-name-type.js.map +1 -0
  353. package/lib/types/local-name.d.ts +7 -0
  354. package/lib/types/local-name.js +2 -0
  355. package/lib/types/local-name.js.map +1 -0
  356. package/lib/types/local-names.d.ts +4 -0
  357. package/lib/types/local-names.js +2 -0
  358. package/lib/types/local-names.js.map +1 -0
  359. package/lib/types/module-type.d.ts +1 -0
  360. package/lib/types/module-type.js +2 -0
  361. package/lib/types/module-type.js.map +1 -0
  362. package/lib/types/parsed-gir.d.ts +4 -0
  363. package/lib/types/parsed-gir.js +2 -0
  364. package/lib/types/parsed-gir.js.map +1 -0
  365. package/lib/types/part-of-class.d.ts +7 -0
  366. package/lib/types/part-of-class.js +2 -0
  367. package/lib/types/part-of-class.js.map +1 -0
  368. package/lib/types/part-of-module.d.ts +6 -0
  369. package/lib/types/part-of-module.js +2 -0
  370. package/lib/types/part-of-module.js.map +1 -0
  371. package/lib/types/promisify-func.d.ts +7 -0
  372. package/lib/types/promisify-func.js +2 -0
  373. package/lib/types/promisify-func.js.map +1 -0
  374. package/lib/types/resolve-type.d.ts +4 -0
  375. package/lib/types/resolve-type.js +6 -0
  376. package/lib/types/resolve-type.js.map +1 -0
  377. package/lib/types/sym-table-items.d.ts +4 -0
  378. package/lib/types/sym-table-items.js +2 -0
  379. package/lib/types/sym-table-items.js.map +1 -0
  380. package/lib/types/transformation-case.d.ts +1 -0
  381. package/lib/types/transformation-case.js +2 -0
  382. package/lib/types/transformation-case.js.map +1 -0
  383. package/lib/types/transformations.d.ts +11 -0
  384. package/lib/types/transformations.js +2 -0
  385. package/lib/types/transformations.js.map +1 -0
  386. package/lib/types/ts-alias.d.ts +10 -0
  387. package/lib/types/ts-alias.js +2 -0
  388. package/lib/types/ts-alias.js.map +1 -0
  389. package/lib/types/ts-callback-interface.d.ts +10 -0
  390. package/lib/types/ts-callback-interface.js +2 -0
  391. package/lib/types/ts-callback-interface.js.map +1 -0
  392. package/lib/types/ts-callback.d.ts +17 -0
  393. package/lib/types/ts-callback.js +2 -0
  394. package/lib/types/ts-callback.js.map +1 -0
  395. package/lib/types/ts-class.d.ts +85 -0
  396. package/lib/types/ts-class.js +2 -0
  397. package/lib/types/ts-class.js.map +1 -0
  398. package/lib/types/ts-doc-tag.d.ts +21 -0
  399. package/lib/types/ts-doc-tag.js +2 -0
  400. package/lib/types/ts-doc-tag.js.map +1 -0
  401. package/lib/types/ts-doc.d.ts +16 -0
  402. package/lib/types/ts-doc.js +2 -0
  403. package/lib/types/ts-doc.js.map +1 -0
  404. package/lib/types/ts-enum.d.ts +12 -0
  405. package/lib/types/ts-enum.js +2 -0
  406. package/lib/types/ts-enum.js.map +1 -0
  407. package/lib/types/ts-function.d.ts +55 -0
  408. package/lib/types/ts-function.js +2 -0
  409. package/lib/types/ts-function.js.map +1 -0
  410. package/lib/types/ts-generic-parameter.d.ts +8 -0
  411. package/lib/types/ts-generic-parameter.js +2 -0
  412. package/lib/types/ts-generic-parameter.js.map +1 -0
  413. package/lib/types/ts-instance-parameter.d.ts +4 -0
  414. package/lib/types/ts-instance-parameter.js +2 -0
  415. package/lib/types/ts-instance-parameter.js.map +1 -0
  416. package/lib/types/ts-member.d.ts +10 -0
  417. package/lib/types/ts-member.js +2 -0
  418. package/lib/types/ts-member.js.map +1 -0
  419. package/lib/types/ts-method.d.ts +5 -0
  420. package/lib/types/ts-method.js +2 -0
  421. package/lib/types/ts-method.js.map +1 -0
  422. package/lib/types/ts-parameter.d.ts +15 -0
  423. package/lib/types/ts-parameter.js +2 -0
  424. package/lib/types/ts-parameter.js.map +1 -0
  425. package/lib/types/ts-property.d.ts +17 -0
  426. package/lib/types/ts-property.js +2 -0
  427. package/lib/types/ts-property.js.map +1 -0
  428. package/lib/types/ts-signal.d.ts +17 -0
  429. package/lib/types/ts-signal.js +2 -0
  430. package/lib/types/ts-signal.js.map +1 -0
  431. package/lib/types/ts-type-name.d.ts +1 -0
  432. package/lib/types/ts-type-name.js +2 -0
  433. package/lib/types/ts-type-name.js.map +1 -0
  434. package/lib/types/ts-type-separator.d.ts +1 -0
  435. package/lib/types/ts-type-separator.js +2 -0
  436. package/lib/types/ts-type-separator.js.map +1 -0
  437. package/lib/types/ts-type.d.ts +26 -0
  438. package/lib/types/ts-type.js +2 -0
  439. package/lib/types/ts-type.js.map +1 -0
  440. package/lib/types/ts-var.d.ts +17 -0
  441. package/lib/types/ts-var.js +2 -0
  442. package/lib/types/ts-var.js.map +1 -0
  443. package/lib/types/type-gir-alias.d.ts +2 -0
  444. package/lib/types/type-gir-alias.js +2 -0
  445. package/lib/types/type-gir-alias.js.map +1 -0
  446. package/lib/types/type-gir-class.d.ts +2 -0
  447. package/lib/types/type-gir-class.js +2 -0
  448. package/lib/types/type-gir-class.js.map +1 -0
  449. package/lib/types/type-gir-element.d.ts +3 -0
  450. package/lib/types/type-gir-element.js +2 -0
  451. package/lib/types/type-gir-element.js.map +1 -0
  452. package/lib/types/type-gir-enumeration-member.d.ts +2 -0
  453. package/lib/types/type-gir-enumeration-member.js +2 -0
  454. package/lib/types/type-gir-enumeration-member.js.map +1 -0
  455. package/lib/types/type-gir-enumeration.d.ts +2 -0
  456. package/lib/types/type-gir-enumeration.js +2 -0
  457. package/lib/types/type-gir-enumeration.js.map +1 -0
  458. package/lib/types/type-gir-function.d.ts +1 -0
  459. package/lib/types/type-gir-function.js +2 -0
  460. package/lib/types/type-gir-function.js.map +1 -0
  461. package/lib/types/type-gir-interface.d.ts +2 -0
  462. package/lib/types/type-gir-interface.js +2 -0
  463. package/lib/types/type-gir-interface.js.map +1 -0
  464. package/lib/types/type-gir-method.d.ts +2 -0
  465. package/lib/types/type-gir-method.js +2 -0
  466. package/lib/types/type-gir-method.js.map +1 -0
  467. package/lib/types/type-gir-parameter.d.ts +1 -0
  468. package/lib/types/type-gir-parameter.js +2 -0
  469. package/lib/types/type-gir-parameter.js.map +1 -0
  470. package/lib/types/type-gir-property.d.ts +2 -0
  471. package/lib/types/type-gir-property.js +2 -0
  472. package/lib/types/type-gir-property.js.map +1 -0
  473. package/lib/types/type-gir-variable.d.ts +1 -0
  474. package/lib/types/type-gir-variable.js +2 -0
  475. package/lib/types/type-gir-variable.js.map +1 -0
  476. package/lib/types/type-ts-element.d.ts +3 -0
  477. package/lib/types/type-ts-element.js +2 -0
  478. package/lib/types/type-ts-element.js.map +1 -0
  479. package/lib/types/type-ts-enumeration-member.d.ts +2 -0
  480. package/lib/types/type-ts-enumeration-member.js +2 -0
  481. package/lib/types/type-ts-enumeration-member.js.map +1 -0
  482. package/lib/types/type-ts-function.d.ts +1 -0
  483. package/lib/types/type-ts-function.js +2 -0
  484. package/lib/types/type-ts-function.js.map +1 -0
  485. package/lib/types/type-ts-property.d.ts +1 -0
  486. package/lib/types/type-ts-property.js +2 -0
  487. package/lib/types/type-ts-property.js.map +1 -0
  488. package/lib/types/user-config-load-result.d.ts +6 -0
  489. package/lib/types/user-config-load-result.js +2 -0
  490. package/lib/types/user-config-load-result.js.map +1 -0
  491. package/lib/types/user-config.d.ts +42 -0
  492. package/lib/types/user-config.js +2 -0
  493. package/lib/types/user-config.js.map +1 -0
  494. package/lib/utils.d.ts +292 -0
  495. package/lib/utils.js +403 -0
  496. package/lib/utils.js.map +1 -0
  497. package/package.json +89 -0
  498. package/src/commands/doc.ts +65 -0
  499. package/src/commands/generate.ts +88 -0
  500. package/src/commands/index.ts +3 -0
  501. package/src/commands/list.ts +96 -0
  502. package/src/config.ts +528 -0
  503. package/src/conflict-resolver.ts +1358 -0
  504. package/src/constants.ts +29 -0
  505. package/src/dependency-manager.ts +91 -0
  506. package/src/generation-handler.ts +79 -0
  507. package/src/generator.ts +10 -0
  508. package/src/gir-factory.ts +526 -0
  509. package/src/gir-module.ts +2953 -0
  510. package/src/html-doc-generator.ts +23 -0
  511. package/src/index.ts +17 -0
  512. package/src/injection/callbacks/gjs/Gio-2.0.ts +37 -0
  513. package/src/injection/callbacks/gjs/index.ts +5 -0
  514. package/src/injection/callbacks/index.ts +6 -0
  515. package/src/injection/callbacks/node-gtk/index.ts +3 -0
  516. package/src/injection/classes/GLib-2-0.ts +36 -0
  517. package/src/injection/classes/gjs/GLib-2.0.ts +206 -0
  518. package/src/injection/classes/gjs/GObject-2.0.ts +635 -0
  519. package/src/injection/classes/gjs/Gio-2.0.ts +219 -0
  520. package/src/injection/classes/gjs/index.ts +7 -0
  521. package/src/injection/classes/index.ts +7 -0
  522. package/src/injection/classes/node-gtk/GLib-2.0.ts +20 -0
  523. package/src/injection/classes/node-gtk/GObject-2.0.ts +67 -0
  524. package/src/injection/classes/node-gtk/Gdk-4.0.ts +33 -0
  525. package/src/injection/classes/node-gtk/Gio-2.0.ts +15 -0
  526. package/src/injection/classes/node-gtk/Graphene-1.0.ts +134 -0
  527. package/src/injection/classes/node-gtk/Gtk-3.0.ts +32 -0
  528. package/src/injection/classes/node-gtk/Gtk-4.0.ts +53 -0
  529. package/src/injection/classes/node-gtk/Pango-1.0.ts +32 -0
  530. package/src/injection/classes/node-gtk/index.ts +21 -0
  531. package/src/injection/index.ts +3 -0
  532. package/src/injection/injector.ts +184 -0
  533. package/src/logger.ts +134 -0
  534. package/src/messages.ts +69 -0
  535. package/src/module-loader.ts +576 -0
  536. package/src/start.ts +16 -0
  537. package/src/symtable.ts +72 -0
  538. package/src/template-processor.ts +199 -0
  539. package/src/transformation.ts +584 -0
  540. package/src/type-definition-generator.ts +1467 -0
  541. package/src/types/answer-version.ts +4 -0
  542. package/src/types/build-type.ts +1 -0
  543. package/src/types/class-parent.ts +14 -0
  544. package/src/types/config-flags.ts +5 -0
  545. package/src/types/conflict-child-element.ts +11 -0
  546. package/src/types/conflict-grouped-element.ts +7 -0
  547. package/src/types/conflict-grouped-elements.ts +5 -0
  548. package/src/types/construct-name.ts +11 -0
  549. package/src/types/dependency-map.ts +4 -0
  550. package/src/types/dependency.ts +16 -0
  551. package/src/types/environment.ts +1 -0
  552. package/src/types/file-info.ts +14 -0
  553. package/src/types/generate-config.ts +35 -0
  554. package/src/types/generator-type.ts +4 -0
  555. package/src/types/gir-alias-element.ts +15 -0
  556. package/src/types/gir-annotation.ts +10 -0
  557. package/src/types/gir-any-element.ts +35 -0
  558. package/src/types/gir-any-type.ts +7 -0
  559. package/src/types/gir-array-type.ts +23 -0
  560. package/src/types/gir-bitfield-element.ts +20 -0
  561. package/src/types/gir-boolean.ts +1 -0
  562. package/src/types/gir-boxed-element.ts +19 -0
  563. package/src/types/gir-c-include.ts +7 -0
  564. package/src/types/gir-callable-attrs.ts +19 -0
  565. package/src/types/gir-callable-param-element.ts +45 -0
  566. package/src/types/gir-callable-param.ts +9 -0
  567. package/src/types/gir-callable-return.ts +25 -0
  568. package/src/types/gir-callback-element.ts +28 -0
  569. package/src/types/gir-class-element.ts +71 -0
  570. package/src/types/gir-constant-element.ts +17 -0
  571. package/src/types/gir-constructor-element.ts +18 -0
  572. package/src/types/gir-direction.ts +5 -0
  573. package/src/types/gir-doc-element.ts +73 -0
  574. package/src/types/gir-enum-element.ts +28 -0
  575. package/src/types/gir-field-element.ts +31 -0
  576. package/src/types/gir-function-element.ts +19 -0
  577. package/src/types/gir-implements.ts +9 -0
  578. package/src/types/gir-include.ts +9 -0
  579. package/src/types/gir-info-attrs.ts +16 -0
  580. package/src/types/gir-info-elements.ts +8 -0
  581. package/src/types/gir-instance-parameter.ts +25 -0
  582. package/src/types/gir-interface-element.ts +53 -0
  583. package/src/types/gir-member-element.ts +19 -0
  584. package/src/types/gir-method-element.ts +25 -0
  585. package/src/types/gir-module-resolved-by.ts +11 -0
  586. package/src/types/gir-modules-grouped-map.ts +5 -0
  587. package/src/types/gir-modules-grouped.ts +13 -0
  588. package/src/types/gir-namespace.ts +47 -0
  589. package/src/types/gir-package.ts +7 -0
  590. package/src/types/gir-prerequisite.ts +5 -0
  591. package/src/types/gir-property-element.ts +31 -0
  592. package/src/types/gir-record-element.ts +47 -0
  593. package/src/types/gir-repository.ts +20 -0
  594. package/src/types/gir-signal.ts +43 -0
  595. package/src/types/gir-transfer-ownership-type.ts +5 -0
  596. package/src/types/gir-transfer-ownership.ts +6 -0
  597. package/src/types/gir-type.ts +16 -0
  598. package/src/types/gir-union-element.ts +35 -0
  599. package/src/types/gir-unparsed-number.ts +2 -0
  600. package/src/types/gir-var-args.ts +6 -0
  601. package/src/types/gir-virtual-method.ts +22 -0
  602. package/src/types/index.ts +120 -0
  603. package/src/types/inheritance-table.ts +3 -0
  604. package/src/types/injection-callback.ts +20 -0
  605. package/src/types/injection-class.ts +30 -0
  606. package/src/types/injection-function.ts +31 -0
  607. package/src/types/injection-generic-parameter.ts +3 -0
  608. package/src/types/injection-instance-parameter.ts +3 -0
  609. package/src/types/injection-parameter.ts +9 -0
  610. package/src/types/injection-property.ts +7 -0
  611. package/src/types/injection-type.ts +3 -0
  612. package/src/types/injection.ts +6 -0
  613. package/src/types/local-name-check.ts +5 -0
  614. package/src/types/local-name-type.ts +1 -0
  615. package/src/types/local-name.ts +8 -0
  616. package/src/types/local-names.ts +5 -0
  617. package/src/types/module-type.ts +1 -0
  618. package/src/types/parsed-gir.ts +5 -0
  619. package/src/types/part-of-class.ts +9 -0
  620. package/src/types/part-of-module.ts +8 -0
  621. package/src/types/promisify-func.ts +9 -0
  622. package/src/types/resolve-type.ts +4 -0
  623. package/src/types/sym-table-items.ts +5 -0
  624. package/src/types/transformation-case.ts +7 -0
  625. package/src/types/transformations.ts +12 -0
  626. package/src/types/ts-alias.ts +11 -0
  627. package/src/types/ts-callback-interface.ts +11 -0
  628. package/src/types/ts-callback.ts +21 -0
  629. package/src/types/ts-class.ts +109 -0
  630. package/src/types/ts-doc-tag.ts +23 -0
  631. package/src/types/ts-doc.ts +18 -0
  632. package/src/types/ts-enum.ts +15 -0
  633. package/src/types/ts-function.ts +70 -0
  634. package/src/types/ts-generic-parameter.ts +8 -0
  635. package/src/types/ts-instance-parameter.ts +4 -0
  636. package/src/types/ts-member.ts +11 -0
  637. package/src/types/ts-method.ts +6 -0
  638. package/src/types/ts-parameter.ts +20 -0
  639. package/src/types/ts-property.ts +22 -0
  640. package/src/types/ts-signal.ts +21 -0
  641. package/src/types/ts-type-name.ts +1 -0
  642. package/src/types/ts-type-separator.ts +1 -0
  643. package/src/types/ts-type.ts +28 -0
  644. package/src/types/ts-var.ts +21 -0
  645. package/src/types/type-gir-alias.ts +2 -0
  646. package/src/types/type-gir-class.ts +2 -0
  647. package/src/types/type-gir-element.ts +25 -0
  648. package/src/types/type-gir-enumeration-member.ts +2 -0
  649. package/src/types/type-gir-enumeration.ts +2 -0
  650. package/src/types/type-gir-function.ts +8 -0
  651. package/src/types/type-gir-interface.ts +2 -0
  652. package/src/types/type-gir-method.ts +2 -0
  653. package/src/types/type-gir-parameter.ts +1 -0
  654. package/src/types/type-gir-property.ts +2 -0
  655. package/src/types/type-gir-variable.ts +1 -0
  656. package/src/types/type-ts-element.ts +13 -0
  657. package/src/types/type-ts-enumeration-member.ts +2 -0
  658. package/src/types/type-ts-function.ts +1 -0
  659. package/src/types/type-ts-property.ts +1 -0
  660. package/src/types/user-config-load-result.ts +6 -0
  661. package/src/types/user-config.ts +43 -0
  662. package/src/utils.ts +433 -0
  663. package/templates/Cogl-2.0.d.ts +0 -0
  664. package/templates/Gjs/GObject-2.0.d.ts +238 -0
  665. package/templates/Gjs/Gio-2.0.d.ts +101 -0
  666. package/templates/Gjs/Gjs.d.ts +204 -0
  667. package/templates/Gjs/Gjs.js +21 -0
  668. package/templates/Gjs/GnomeShell.d.ts +154 -0
  669. package/templates/Gjs/GnomeShell.js +10 -0
  670. package/templates/Gjs/index.d.ts +594 -0
  671. package/templates/Gjs/index.js +4 -0
  672. package/templates/Gjs/misc/dbusUtils.d.ts +15 -0
  673. package/templates/Gjs/misc/dbusUtils.js +6 -0
  674. package/templates/Gjs/misc/extensionUtils.d.ts +99 -0
  675. package/templates/Gjs/misc/extensionUtils.js +6 -0
  676. package/templates/Gjs/misc/fileUtils.d.ts +51 -0
  677. package/templates/Gjs/misc/fileUtils.js +6 -0
  678. package/templates/Gjs/misc/gnomeSession.d.ts +74 -0
  679. package/templates/Gjs/misc/gnomeSession.js +6 -0
  680. package/templates/Gjs/misc/parentalControlsManager.d.ts +42 -0
  681. package/templates/Gjs/misc/parentalControlsManager.js +6 -0
  682. package/templates/Gjs/misc/signals.d.ts +15 -0
  683. package/templates/Gjs/misc/signals.js +6 -0
  684. package/templates/Gjs/module.d.ts +6 -0
  685. package/templates/Gjs/module.js +16 -0
  686. package/templates/Gjs/tsconfig.alias.json +10 -0
  687. package/templates/Gjs/ui/accessDialog.d.ts +19 -0
  688. package/templates/Gjs/ui/accessDialog.js +6 -0
  689. package/templates/Gjs/ui/altTab.d.ts +124 -0
  690. package/templates/Gjs/ui/altTab.js +6 -0
  691. package/templates/Gjs/ui/animation.d.ts +58 -0
  692. package/templates/Gjs/ui/animation.js +6 -0
  693. package/templates/Gjs/ui/appDisplay.d.ts +204 -0
  694. package/templates/Gjs/ui/appDisplay.js +6 -0
  695. package/templates/Gjs/ui/appFavorites.d.ts +34 -0
  696. package/templates/Gjs/ui/appFavorites.js +6 -0
  697. package/templates/Gjs/ui/appMenu.d.ts +74 -0
  698. package/templates/Gjs/ui/appMenu.js +6 -0
  699. package/templates/Gjs/ui/audioDeviceSelection.d.ts +51 -0
  700. package/templates/Gjs/ui/audioDeviceSelection.js +6 -0
  701. package/templates/Gjs/ui/background.d.ts +255 -0
  702. package/templates/Gjs/ui/background.js +5 -0
  703. package/templates/Gjs/ui/backgroundMenu.d.ts +19 -0
  704. package/templates/Gjs/ui/backgroundMenu.js +5 -0
  705. package/templates/Gjs/ui/barLevel.d.ts +42 -0
  706. package/templates/Gjs/ui/barLevel.js +5 -0
  707. package/templates/Gjs/ui/boxpointer.d.ts +103 -0
  708. package/templates/Gjs/ui/boxpointer.js +5 -0
  709. package/templates/Gjs/ui/calendar.d.ts +261 -0
  710. package/templates/Gjs/ui/calendar.js +5 -0
  711. package/templates/Gjs/ui/checkBox.d.ts +22 -0
  712. package/templates/Gjs/ui/checkBox.js +5 -0
  713. package/templates/Gjs/ui/closeDialog.d.ts +40 -0
  714. package/templates/Gjs/ui/closeDialog.js +5 -0
  715. package/templates/Gjs/ui/components/__init__.d.ts +9 -0
  716. package/templates/Gjs/ui/components/__init__.js +6 -0
  717. package/templates/Gjs/ui/components/automountManager.d.ts +8 -0
  718. package/templates/Gjs/ui/components/automountManager.js +6 -0
  719. package/templates/Gjs/ui/components/autorunManager.d.ts +8 -0
  720. package/templates/Gjs/ui/components/autorunManager.js +6 -0
  721. package/templates/Gjs/ui/components/index.d.ts +6 -0
  722. package/templates/Gjs/ui/components/index.js +6 -0
  723. package/templates/Gjs/ui/components/keyring.d.ts +19 -0
  724. package/templates/Gjs/ui/components/keyring.js +6 -0
  725. package/templates/Gjs/ui/components/networkAgent.d.ts +10 -0
  726. package/templates/Gjs/ui/components/networkAgent.js +6 -0
  727. package/templates/Gjs/ui/components/polkitAgent.d.ts +19 -0
  728. package/templates/Gjs/ui/components/polkitAgent.js +6 -0
  729. package/templates/Gjs/ui/components/telepathyClient.d.ts +10 -0
  730. package/templates/Gjs/ui/components/telepathyClient.js +6 -0
  731. package/templates/Gjs/ui/dialog.d.ts +78 -0
  732. package/templates/Gjs/ui/dialog.js +6 -0
  733. package/templates/Gjs/ui/dnd.d.ts +127 -0
  734. package/templates/Gjs/ui/dnd.js +6 -0
  735. package/templates/Gjs/ui/iconGrid.d.ts +172 -0
  736. package/templates/Gjs/ui/iconGrid.js +6 -0
  737. package/templates/Gjs/ui/layout.d.ts +311 -0
  738. package/templates/Gjs/ui/layout.js +6 -0
  739. package/templates/Gjs/ui/main.d.ts +215 -0
  740. package/templates/Gjs/ui/main.js +6 -0
  741. package/templates/Gjs/ui/messageList.d.ts +113 -0
  742. package/templates/Gjs/ui/messageList.js +6 -0
  743. package/templates/Gjs/ui/messageTray.d.ts +423 -0
  744. package/templates/Gjs/ui/messageTray.js +6 -0
  745. package/templates/Gjs/ui/modalDialog.d.ts +96 -0
  746. package/templates/Gjs/ui/modalDialog.js +6 -0
  747. package/templates/Gjs/ui/mpris.d.ts +78 -0
  748. package/templates/Gjs/ui/mpris.js +6 -0
  749. package/templates/Gjs/ui/notificationDaemon.d.ts +5 -0
  750. package/templates/Gjs/ui/notificationDaemon.js +6 -0
  751. package/templates/Gjs/ui/panel.d.ts +65 -0
  752. package/templates/Gjs/ui/panel.js +6 -0
  753. package/templates/Gjs/ui/panelMenu.d.ts +51 -0
  754. package/templates/Gjs/ui/panelMenu.js +6 -0
  755. package/templates/Gjs/ui/popupMenu.d.ts +228 -0
  756. package/templates/Gjs/ui/popupMenu.js +6 -0
  757. package/templates/Gjs/ui/ripples.d.ts +44 -0
  758. package/templates/Gjs/ui/ripples.js +6 -0
  759. package/templates/Gjs/ui/search.d.ts +158 -0
  760. package/templates/Gjs/ui/search.js +6 -0
  761. package/templates/Gjs/ui/switcherPopup.d.ts +107 -0
  762. package/templates/Gjs/ui/switcherPopup.js +6 -0
  763. package/templates/Gjs/ui/userWidget.d.ts +13 -0
  764. package/templates/Gjs/ui/userWidget.js +6 -0
  765. package/templates/Granite-1.0.d.ts +7 -0
  766. package/templates/Granite-7.0.d.ts +7 -0
  767. package/templates/GstBase-0.10.d.ts +5 -0
  768. package/templates/RygelServer-2.6.d.ts +3 -0
  769. package/templates/node-gtk/GObject-2.0.d.ts +57 -0
  770. package/templates/node-gtk/index.d.ts +40 -0
  771. package/templates/node-gtk/index.js +9 -0
  772. package/templates/node-gtk/module.d.ts +6 -0
  773. package/templates/node-gtk/module.js +17 -0
package/src/utils.ts ADDED
@@ -0,0 +1,433 @@
1
+ /* eslint-disable @typescript-eslint/unbound-method */
2
+ import lodash from 'lodash'
3
+ import Path from 'path'
4
+ import fs from 'fs'
5
+ import { getTsconfig, TsConfigJsonResolved } from 'get-tsconfig'
6
+ import { fileURLToPath } from 'url'
7
+ import { Environment, GirInfoAttrs, TsType, FileInfo } from './types/index.js'
8
+ import { inspect } from 'util'
9
+ import { Logger } from './logger.js'
10
+
11
+ import { COMMENT_REG_EXP, PARAM_REG_EXP, OPT_PARAM_REG_EXP } from './constants.js'
12
+
13
+ export { inspect }
14
+
15
+ /**
16
+ * Performs a deep comparison between two values to determine if they are
17
+ * equivalent.
18
+ *
19
+ * **Note:** This method supports comparing arrays, array buffers, booleans,
20
+ * date objects, error objects, maps, numbers, `Object` objects, regexes,
21
+ * sets, strings, symbols, and typed arrays. `Object` objects are compared
22
+ * by their own, not inherited, enumerable properties. Functions and DOM
23
+ * nodes are **not** supported.
24
+ *
25
+ * @category Lang
26
+ * @param value The value to compare.
27
+ * @param other The other value to compare.
28
+ * @returns Returns `true` if the values are equivalent, else `false`.
29
+ * @example
30
+ *
31
+ * var object = { 'user': 'fred' };
32
+ * var other = { 'user': 'fred' };
33
+ *
34
+ * _.isEqual(object, other);
35
+ * // => true
36
+ *
37
+ * object === other;
38
+ * // => false
39
+ */
40
+ export const isEqual = lodash.isEqual
41
+
42
+ /**
43
+ * Creates an array of values by running each element in collection through iteratee. The iteratee is
44
+ * invoked with three arguments: (value, index|key, collection).
45
+ *
46
+ * Many lodash methods are guarded to work as iteratees for methods like _.every, _.filter, _.map, _.mapValues,
47
+ * _.reject, and _.some.
48
+ *
49
+ * The guarded methods are:
50
+ * ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max,
51
+ * min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range,
52
+ * sample, some, sum, uniq, and words
53
+ *
54
+ * @param collection The collection to iterate over.
55
+ * @param iteratee The function invoked per iteration.
56
+ * @return Returns the new mapped array.
57
+ */
58
+ export const map = lodash.map
59
+
60
+ /**
61
+ * Iterates over elements of collection, returning the first element predicate returns truthy for.
62
+ * The predicate is invoked with three arguments: (value, index|key, collection).
63
+ *
64
+ * @param collection The collection to search.
65
+ * @param predicate The function invoked per iteration.
66
+ * @param fromIndex The index to search from.
67
+ * @return Returns the matched element, else undefined.
68
+ */
69
+ export const find = lodash.find
70
+
71
+ /**
72
+ * Recursively merges own and inherited enumerable properties of source
73
+ * objects into the destination object, skipping source properties that resolve
74
+ * to `undefined`. Array and plain object properties are merged recursively.
75
+ * Other objects and value types are overridden by assignment. Source objects
76
+ * are applied from left to right. Subsequent sources overwrite property
77
+ * assignments of previous sources.
78
+ *
79
+ * **Note:** This method mutates `object`.
80
+ *
81
+ * @category Object
82
+ * @param object The destination object.
83
+ * @param [sources] The source objects.
84
+ * @returns Returns `object`.
85
+ * @example
86
+ *
87
+ * var users = {
88
+ * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
89
+ * };
90
+ *
91
+ * var ages = {
92
+ * 'data': [{ 'age': 36 }, { 'age': 40 }]
93
+ * };
94
+ *
95
+ * _.merge(users, ages);
96
+ * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
97
+ */
98
+ export const merge = lodash.merge
99
+
100
+ /**
101
+ * Creates a shallow clone of value.
102
+ *
103
+ * Note: This method is loosely based on the structured clone algorithm and supports cloning arrays,
104
+ * array buffers, booleans, date objects, maps, numbers, Object objects, regex's, sets, strings, symbols,
105
+ * and typed arrays. The own enumerable properties of arguments objects are cloned as plain objects. An empty
106
+ * object is returned for not cloneable values such as error objects, functions, DOM nodes, and WeakMaps.
107
+ *
108
+ * @param value The value to clone.
109
+ * @return Returns the cloned value.
110
+ */
111
+ export const clone = lodash.clone
112
+
113
+ /**
114
+ * This method is like clone except that it recursively clones value.
115
+ *
116
+ * @param value The value to recursively clone.
117
+ * @return Returns the deep cloned value.
118
+ */
119
+ export const cloneDeep = lodash.cloneDeep
120
+
121
+ /**
122
+ * Split a package name into namespace and version
123
+ */
124
+ export const splitModuleName = (packageName: string): { packageName: string; namespace: string; version: string } => {
125
+ // There are modules that use multiple hyphens like 'GUPnP-DLNA-1.0'
126
+ const splits = packageName.split('-')
127
+ const version = splits.splice(-1, 1)[0]
128
+ const namespace = splits.join('')
129
+ return {
130
+ packageName,
131
+ namespace,
132
+ version,
133
+ }
134
+ }
135
+
136
+ /** Remove namespace prefix */
137
+ export const removeNamespace = (type: string, namespace: string) => {
138
+ if (type.startsWith(namespace + '.')) {
139
+ type = type.substring(namespace.length + 1)
140
+ }
141
+ return type
142
+ }
143
+
144
+ /** Remove class module name prefix */
145
+ export const removeClassModule = removeNamespace
146
+
147
+ /**
148
+ * Add namespace prefix
149
+ */
150
+ export const addNamespace = (type: string, namespace: string) => {
151
+ if (!type.startsWith(namespace + '.')) {
152
+ type = namespace + '.' + type
153
+ }
154
+ return type
155
+ }
156
+
157
+ /**
158
+ * Checking whether some variable is iterable
159
+ * @see https://stackoverflow.com/a/32538867
160
+ * @param obj Variable to check for iterable
161
+ * @returns Whether the variable is iterable or not
162
+ */
163
+ export const isIterable = (obj: unknown[]): boolean => {
164
+ return obj != null && typeof obj[Symbol.iterator] === 'function'
165
+ }
166
+
167
+ /**
168
+ * Checking whether a string is numeric
169
+ * @param str The string to check
170
+ * @returns Whether the string is numeric or not
171
+ */
172
+ export const isNumeric = (str: string): boolean => {
173
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
174
+ return !isNaN((str as any) - parseFloat(str))
175
+ }
176
+
177
+ /**
178
+ * Get the first character of a string
179
+ * @param str The string to get the first character from
180
+ * @returns The first character
181
+ */
182
+ export const getFirstChar = (str: string): string => {
183
+ return str.charAt(0)
184
+ }
185
+
186
+ /**
187
+ * Get the last character of a string
188
+ * @param str The string to get the last character from
189
+ * @returns The last character
190
+ */
191
+ export const getLastChar = (str: string): string => {
192
+ return str.charAt(str.length - 1)
193
+ }
194
+
195
+ /**
196
+ * Check if the first character of a string is numeric
197
+ * @param str The string to check
198
+ * @returns Whether the first character is numeric or not
199
+ */
200
+ export const isFirstCharNumeric = (str: string): boolean => {
201
+ return isNumeric(getFirstChar(str))
202
+ }
203
+
204
+ /**
205
+ * Convert a string to camelCase
206
+ * @param str The string to convert
207
+ * @returns The converted string
208
+ */
209
+ export const camelCase = (str: string): string => {
210
+ return str
211
+ .replace(/\s(.)|(\s|-|_|\.)(.)/g, (a) => {
212
+ return a.toUpperCase()
213
+ })
214
+ .replace(/(\s|-|_|\.)/g, '')
215
+ }
216
+
217
+ /**
218
+ * Convert a string to lowerCamelCase
219
+ * @param str The string to convert
220
+ * @returns The converted string
221
+ */
222
+ export const lowerCamelCase = (str: string): string => {
223
+ str = camelCase(str)
224
+ str = getFirstChar(str).toLowerCase() + str.slice(1)
225
+ return str
226
+ }
227
+
228
+ /**
229
+ * Convert a string to UpperCamelCase
230
+ * @param str The string to convert
231
+ * @returns The converted string
232
+ */
233
+ export const upperCamelCase = (str: string): string => {
234
+ str = camelCase(str)
235
+ str = getFirstChar(str).toUpperCase() + str.slice(1)
236
+ return str
237
+ }
238
+
239
+ /**
240
+ * Find a file in a list of directories
241
+ * @param dirs The directories to search in
242
+ * @param filename The filename to search for
243
+ * @returns The file info
244
+ */
245
+ export const findFileInDirs = (dirs: string[], filename: string): FileInfo => {
246
+ const FileInfo: FileInfo = {
247
+ path: null,
248
+ filename,
249
+ exists: false,
250
+ }
251
+ for (const dir of dirs) {
252
+ const filePath = Path.join(dir, filename)
253
+ FileInfo.exists = fs.existsSync(filePath)
254
+ if (FileInfo.exists) {
255
+ FileInfo.path = filePath
256
+ return FileInfo
257
+ }
258
+ }
259
+
260
+ return FileInfo
261
+ }
262
+
263
+ /**
264
+ * Union (a ∪ b): create a set that contains the elements of both set a and set b.
265
+ * See https://2ality.com/2015/01/es6-set-operations.html#union
266
+ * @param target
267
+ * @param source
268
+ */
269
+ export const union = <T>(target: Set<T> | T[], source: Set<T> | T[]): Set<T> => {
270
+ return (target = new Set<T>([...target, ...source]))
271
+ }
272
+
273
+ export const stripParamNames = (func: string, ignoreTail = false): string => {
274
+ const g = func
275
+ func = func.replace(COMMENT_REG_EXP, '')
276
+ const lb = func.split('(', 2)
277
+ if (lb.length < 2) Logger.error(`Bad function definition ${g}`)
278
+ const rb = lb[1].split(')')
279
+ const tail = ignoreTail ? '' : rb[rb.length - 1]
280
+ let params = rb.slice(0, rb.length - 1).join(')')
281
+ params = params.replace(PARAM_REG_EXP, ':')
282
+ params = params.replace(OPT_PARAM_REG_EXP, '?:')
283
+ return `${lb[0]}(${params})${tail}`
284
+ }
285
+
286
+ /**
287
+ * Check if a line is a comment line
288
+ * @param line The line to check
289
+ * @returns Whether the line is a comment line or not
290
+ */
291
+ export const isCommentLine = (line: string) => {
292
+ const lineTrim = line.trim()
293
+ return lineTrim.startsWith('//') || (lineTrim.startsWith('/*') && lineTrim.endsWith('*/'))
294
+ }
295
+
296
+ /**
297
+ * Add indents to a string
298
+ * @param indents The number of indents
299
+ * @param spaceForIndent The number of spaces for each indent
300
+ * @returns The indented string
301
+ */
302
+ export const generateIndent = (indents = 1, spaceForIndent = 4): string => {
303
+ return ' '.repeat(indents * spaceForIndent)
304
+ }
305
+
306
+ // Get __filename on ESM
307
+ export const __filename = fileURLToPath(import.meta.url)
308
+ // Get __dirname on ESM
309
+ export const __dirname = Path.dirname(__filename)
310
+
311
+ /**
312
+ * Get the output or input directory of the environment
313
+ * @param environment The environment to get the directory for
314
+ * @param baseDir The base directory
315
+ * @returns The path to the directory
316
+ */
317
+ export const getEnvironmentDir = (environment: Environment, baseDir: string): string => {
318
+ if (!baseDir.endsWith(environment))
319
+ if (environment === 'gjs' && !baseDir.endsWith('/Gjs')) {
320
+ return Path.join(baseDir, 'Gjs')
321
+ }
322
+ if (environment === 'node' && !baseDir.endsWith('/node-gtk')) {
323
+ return Path.join(baseDir, 'node-gtk')
324
+ }
325
+ return baseDir
326
+ }
327
+
328
+ /**
329
+ * Get the destination path for the environment
330
+ * @param environment The environment to get the destination path for
331
+ * @param outputDir The output directory
332
+ * @param parts The path parts
333
+ * @returns The destination path
334
+ */
335
+ export const getDestPath = (environment: Environment, outputDir: string, ...parts: string[]) => {
336
+ const outputEnvDir = getEnvironmentDir(environment, outputDir)
337
+ const destPath = Path.join(outputEnvDir, ...parts)
338
+ return destPath
339
+ }
340
+
341
+ /**
342
+ * Convert a GirBoolean to a boolean
343
+ * @param boolStr The GirBoolean string
344
+ * @param defaultVal The default value
345
+ * @returns The boolean value
346
+ */
347
+ export const girBool = (boolStr: string | undefined, defaultVal = false): boolean => {
348
+ if (boolStr) {
349
+ if (parseInt(boolStr) === 0) return false
350
+ return true
351
+ }
352
+ return defaultVal
353
+ }
354
+
355
+ /**
356
+ * Returns `true` if the definitions in `d1` and `d2` have equivalent signatures
357
+ * @param d1
358
+ * @param d2
359
+ */
360
+ export const signaturesMatch = (d1: string, d2: string) => {
361
+ if (isCommentLine(d1) || isCommentLine(d2)) return false
362
+ return stripParamNames(d1) == stripParamNames(d2)
363
+ }
364
+
365
+ /**
366
+ * GirElements contains an attribute `introspectable`, which is a GirBoolean.
367
+ * If this is attribute is falsy the element is not introspectable,
368
+ * this means doesn't exist in the bindings, due in general to missing information in the annotations in the original C code
369
+ */
370
+ export const girElementIsIntrospectable = (girElement?: { $: GirInfoAttrs & { name: string } }, name?: string) => {
371
+ if (!girElement) {
372
+ return false
373
+ }
374
+ name = name || girElement?.$?.name
375
+ if (!name) {
376
+ return false
377
+ }
378
+ // Handle introspectable only if the attribute is also present...
379
+ if (girElement.$.hasOwnProperty('introspectable') && girElement.$.introspectable !== undefined) {
380
+ return girBool(girElement.$.introspectable, true)
381
+ }
382
+ // ...otherwise we assume that it is introspectable
383
+ return true
384
+ }
385
+
386
+ /**
387
+ * Check if a type is optional
388
+ * @param types The types to check
389
+ * @returns Whether the type is optional or not
390
+ */
391
+ export const typeIsOptional = (types: TsType[]) => {
392
+ for (const type of types) {
393
+ if (type.optional) return true
394
+ }
395
+ return false
396
+ }
397
+
398
+ /**
399
+ * Get a typescript or javascript config by path
400
+ * @param path The path to search for a tsconfig.json or jsconfig.json file
401
+ * @returns The config or null if not found
402
+ */
403
+ export const getTsJsConfigByPath = (path: string) => {
404
+ try {
405
+ const config = getTsconfig(path)?.config
406
+ if (config) return config
407
+ } catch {
408
+ // ignored
409
+ }
410
+ return null
411
+ }
412
+
413
+ /**
414
+ * Given an directory path search for a tsconfig.json or jsconfig.json file in it or any of its parent directories, then read the file and parse it as json.
415
+ *
416
+ * @param path - The directory path to search for a tsconfig.json or jsconfig.json file
417
+ */
418
+ export function readTsJsConfig(path: string) {
419
+ let config: null | false | TsConfigJsonResolved = null
420
+ let lastPath = ''
421
+ let currentPath = Path.resolve(path)
422
+ while (!config && currentPath !== lastPath) {
423
+ const tsConfigPath = Path.join(currentPath, 'tsconfig.json')
424
+ const jsConfigPath = Path.join(currentPath, 'jsconfig.json')
425
+ config =
426
+ (fs.existsSync(tsConfigPath) && getTsJsConfigByPath(tsConfigPath)) ||
427
+ (fs.existsSync(jsConfigPath) && getTsJsConfigByPath(jsConfigPath))
428
+ lastPath = currentPath
429
+ currentPath = Path.dirname(currentPath)
430
+ }
431
+
432
+ return config || null
433
+ }
File without changes
@@ -0,0 +1,238 @@
1
+ // A few things here are inspired by gi.ts
2
+ // See https://gitlab.gnome.org/ewlsh/gi.ts/-/blob/master/packages/lib/src/generators/dts/gobject.ts
3
+ // Copyright Evan Welsh
4
+
5
+ export type GType<T = unknown> = {
6
+ __type__(arg: never): T
7
+ name: string
8
+ };
9
+
10
+ // Extra interfaces used to help define GObject classes in js; these
11
+ // aren't part of gi.
12
+ export interface SignalDefinition {
13
+ flags?: SignalFlags
14
+ accumulator: number
15
+ return_type?: GType
16
+ param_types?: GType[]
17
+ }
18
+
19
+ export interface MetaInfo<Props, Interfaces, Sigs> {
20
+ GTypeName?: string
21
+ GTypeFlags?: TypeFlags
22
+ Properties?: Props
23
+ Signals?: Sigs
24
+ Implements?: Interfaces
25
+ CssName?: string
26
+ Template?: Uint8Array | GLib.Bytes
27
+ Children?: string[]
28
+ InternalChildren?: string[]
29
+ }
30
+
31
+ /** Interface of GObject Interface should be implemented by all GObject interfaces */
32
+ export class Interface<T = unknown> {
33
+ static _classInit: (cls: any) => any;
34
+ __name__: string;
35
+ _construct: (params: any, ...otherArgs: any[]) => any;
36
+ _init: (params: any) => void;
37
+ $gtype?: GType<T>;
38
+ }
39
+
40
+ /**
41
+ * Use this to signify a function that must be overridden in an
42
+ * implementation of the interface.
43
+ */
44
+ export class NotImplementedError extends Error {
45
+ get name(): 'NotImplementedError'
46
+ }
47
+
48
+ // Expose GObject static properties for ES6 classes
49
+
50
+ export const GTypeName: unique symbol;
51
+ export const requires: unique symbol;
52
+ export const interfaces: unique symbol;
53
+ export const properties: unique symbol;
54
+ export const signals: unique symbol;
55
+
56
+ export let gtypeNameBasedOnJSPath: boolean;
57
+
58
+ export let TYPE_BOOLEAN: GType<boolean>;
59
+ export let Boolean: BooleanConstructor;
60
+
61
+ export let TYPE_ENUM: GType<number>;
62
+ export let TYPE_FLAGS: GType<number>;
63
+
64
+ export let TYPE_DOUBLE: GType<number>;
65
+ export let Double: NumberConstructor;
66
+
67
+ export let TYPE_STRING: GType<string>;
68
+ export let String: StringConstructor;
69
+
70
+ export let TYPE_NONE: GType<undefined>;
71
+ export let TYPE_POINTER: GType<undefined>;
72
+ export let TYPE_BOXED: GType<unknown>;
73
+ export let TYPE_PARAM: GType<unknown>;
74
+ export let TYPE_INTERFACE: GType<unknown>;
75
+ export let TYPE_OBJECT: GType<object>;
76
+ export let TYPE_VARIANT: GType<GLib.Variant>;
77
+ export let TYPE_INT: GType<number>;
78
+ export let TYPE_UINT: GType<number>;
79
+ export let TYPE_INT64: GType<number>;
80
+ export let TYPE_UINT64: GType<number>;
81
+
82
+ // fake enum for signal accumulators, keep in sync with gi/object.c
83
+ export enum AccumulatorType {
84
+ NONE=0,
85
+ FIRST_WINS=1,
86
+ TRUE_HANDLED=2,
87
+ }
88
+
89
+ // A simple workaround if you have a class with .connect, .disconnect or .emit
90
+ // methods (such as Gio.Socket.connect or NMClient.Device.disconnect)
91
+ // The original g_signal_* functions are not introspectable anyway, because
92
+ // we need our own handling of signal argument marshalling
93
+ export function signal_connect(object: Object, name: string, handler: (...args: any[]) => any): number
94
+ export function signal_connect_after(object: Object, name: string, handler: (...args: any[]) => any): number
95
+ export function signal_emit_by_name(object: Object, ...nameAndArgs: any[]): void
96
+
97
+ /**
98
+ * Finds the first signal handler that matches certain selection criteria.
99
+ * The criteria are passed as properties of a match object.
100
+ * The match object has to be non-empty for successful matches.
101
+ * If no handler was found, a falsy value is returned.
102
+ *
103
+ * @param instance the instance owning the signal handler to be found.
104
+ * @param match a properties object indicating whether to match by signal ID, detail, or callback function.
105
+ * @param match.signalId signal the handler has to be connected to.
106
+ * @param match.detail signal detail the handler has to be connected to.
107
+ * @param match.func the callback function the handler will invoke.
108
+ * @returns A valid non-0 signal handler ID for a successful match.
109
+ */
110
+ export function signal_handler_find(instance: Object, match: {signalId: string, detail: string, func: (...args: any[]) => any}): number | bigint | object | null
111
+
112
+ /**
113
+ * Blocks all handlers on an instance that match certain selection criteria.
114
+ * The criteria are passed as properties of a match object.
115
+ * The match object has to have at least `func` for successful matches.
116
+ * If no handlers were found, 0 is returned, the number of blocked handlers
117
+ * otherwise.
118
+ *
119
+ * @param instance the instance owning the signal handler to be found.
120
+ * @param match a properties object indicating whether to match by signal ID, detail, or callback function.
121
+ * @param match.signalId signal the handler has to be connected to.
122
+ * @param match.detail signal detail the handler has to be connected to.
123
+ * @param match.func the callback function the handler will invoke.
124
+ * @returns The number of handlers that matched.
125
+ */
126
+ export function signal_handlers_block_matched(instance: Object, match: {signalId: string, detail: string, func: (...args: any[]) => any}): number
127
+
128
+ /**
129
+ * Disconnects all handlers on an instance that match certain selection
130
+ * criteria.
131
+ * The criteria are passed as properties of a match object.
132
+ * The match object has to have at least `func` for successful matches.
133
+ * If no handlers were found, 0 is returned, the number of disconnected
134
+ * handlers otherwise.
135
+ *
136
+ * @param instance the instance owning the signal handler
137
+ * to be found.
138
+ * @param match a properties object indicating whether to match by signal ID, detail, or callback function.
139
+ * @param match.signalId signal the handler has to be connected to.
140
+ * @param match.detail signal detail the handler has to be connected to.
141
+ * @param match.func the callback function the handler will invoke.
142
+ * @returns The number of handlers that matched.
143
+ */
144
+ export function signal_handlers_unblock_matched(instance: Object, match: {signalId: string, detail: string, func: (...args: any[]) => any}): number
145
+
146
+ /**
147
+ * Disconnects all handlers on an instance that match certain selection
148
+ * criteria.
149
+ * The criteria are passed as properties of a match object.
150
+ * The match object has to have at least `func` for successful matches.
151
+ * If no handlers were found, 0 is returned, the number of disconnected
152
+ * handlers otherwise.
153
+ *
154
+ * @param instance the instance owning the signal handler
155
+ * to be found.
156
+ * @param match a properties object indicating whether to match by signal ID, detail, or callback function.
157
+ * @param match.signalId signal the handler has to be connected to.
158
+ * @param match.detail signal detail the handler has to be connected to.
159
+ * @param match.func the callback function the handler will invoke.
160
+ * @returns The number of handlers that matched.
161
+ */
162
+ export function signal_handlers_disconnect_matched(instance: Object, match: {signalId: string, detail: string, func: (...args: any[]) => any}): number
163
+
164
+ // Also match the macros used in C APIs, even though they're not introspected
165
+
166
+ /**
167
+ * Blocks all handlers on an instance that match `func`.
168
+ *
169
+ * @param instance the instance to block handlers from.
170
+ * @param func the callback function the handler will invoke.
171
+ * @returns The number of handlers that matched.
172
+ */
173
+ export function signal_handlers_block_by_func(instance: Object, func: (...args: any[]) => any): number;
174
+
175
+ /**
176
+ * Unblocks all handlers on an instance that match `func`.
177
+ *
178
+ * @function
179
+ * @param instance the instance to unblock handlers from.
180
+ * @param func the callback function the handler will invoke.
181
+ * @returns The number of handlers that matched.
182
+ */
183
+ export function signal_handlers_unblock_by_func(instance: Object, func: (...args: any[]) => any): number;
184
+
185
+ /**
186
+ * Disconnects all handlers on an instance that match `func`.
187
+ *
188
+ * @param instance the instance to remove handlers from.
189
+ * @param func the callback function the handler will invoke.
190
+ * @returns The number of handlers that matched.
191
+ */
192
+ export function signal_handlers_disconnect_by_func(instance: Object, func: (...args: any[]) => any): number;
193
+ export function signal_handlers_disconnect_by_data(): void;
194
+
195
+ export type Property<K extends ParamSpec> = K extends ParamSpecBoolean
196
+ ? boolean
197
+ : K extends ParamSpecDouble | ParamSpecInt | ParamSpecUInt | ParamSpecFloat | ParamSpecLong
198
+ ? number
199
+ : K extends ParamSpecInt64 | ParamSpecUInt64 | ParamSpecULong
200
+ ? number
201
+ : K extends ParamSpecFlags
202
+ ? number
203
+ : K extends ParamSpecString | ParamSpecUnichar
204
+ ? string
205
+ : K extends ParamSpecValueArray
206
+ ? any[]
207
+ : K extends ParamSpecObject // TODO?: <infer T>
208
+ ? ParamSpecObject // T
209
+ : K extends ParamSpecEnum // TODO?: <infer T><infer E>
210
+ ? ParamSpecEnum // E
211
+ : K extends ParamSpecBoxed // TODO?: <infer T><infer B>
212
+ ? ParamSpecBoxed //B
213
+ : K extends ParamSpecVariant
214
+ ? GLib.Variant
215
+ : any;
216
+
217
+ // TODO: What about the generated class Closure
218
+ export type TClosure<R = any, P = any> = (...args: P[]) => R;
219
+
220
+ // This should be replaces by a class of GObject.Object as soon as once we have implemented inheritance
221
+ export class AnyClass {}
222
+
223
+ export function registerClass<
224
+ T extends AnyClass,
225
+ Props extends { [key: string]: ParamSpec },
226
+ Interfaces extends { $gtype: GType }[],
227
+ Sigs extends {
228
+ [key: string]: {
229
+ param_types?: readonly GType[];
230
+ [key: string]: any;
231
+ };
232
+ }
233
+ >(
234
+ options: MetaInfo<Props, Interfaces, Sigs>,
235
+ cls: T
236
+ ): T;
237
+
238
+ export function registerClass<T extends AnyClass>(cls: T): T