@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
@@ -1,112 +0,0 @@
1
- import { Transformation } from './transformation.js';
2
- import { Logger } from './logger.js';
3
- import { DependencyManager } from './dependency-manager.js';
4
- import { LibraryVersion } from './library-version.js';
5
- import type { Dependency, GirConstantElement, TsDocTag, GirInfoAttrs, OptionsGeneration } from './types/index.js';
6
- import { GirNSMember } from './gir.js';
7
- import { IntrospectedAlias } from './gir/alias.js';
8
- import { IntrospectedNamespaceMember } from './gir/base.js';
9
- import { IntrospectedBaseClass } from './gir/class.js';
10
- import { IntrospectedEnum } from './gir/enum.js';
11
- import { IntrospectedFunction, IntrospectedFunctionParameter, IntrospectedClassFunction } from './gir/function.js';
12
- import { NSRegistry } from './gir/registry.js';
13
- import { GirVisitor } from './visitor.js';
14
- export declare class GirModule {
15
- readonly dependency: Dependency;
16
- /**
17
- * E.g. 'Gtk'
18
- */
19
- get namespace(): string;
20
- /**
21
- * E.g. '4.0'
22
- */
23
- get version(): string;
24
- /**
25
- * E.g. 'Gtk-4.0'
26
- */
27
- get packageName(): string;
28
- /**
29
- * E.g. 'Gtk40'
30
- * Is used in the generated index.d.ts, for example: `import * as Gtk40 from "./Gtk-4.0.js";`
31
- */
32
- get importNamespace(): string;
33
- get importName(): string;
34
- get importPath(): string;
35
- prefixes: string[];
36
- /**
37
- * The version of the library as an object.
38
- * E.g. `{ major: 4, minor: 0, patch: 0 }` or as string `4.0.0`'
39
- */
40
- get libraryVersion(): LibraryVersion;
41
- protected _dependencies: Dependency[] | null;
42
- protected _transitiveDependencies: Dependency[] | null;
43
- get dependencies(): Dependency[];
44
- get transitiveDependencies(): Dependency[];
45
- get allDependencies(): Dependency[];
46
- transformation: Transformation;
47
- dependencyManager: DependencyManager;
48
- log: Logger;
49
- extends?: string;
50
- /**
51
- * To prevent constants from being exported twice, the names already exported are saved here for comparison.
52
- * Please note: Such a case is only known for Zeitgeist-2.0 with the constant "ATTACHMENT"
53
- */
54
- constNames: {
55
- [varName: string]: GirConstantElement;
56
- };
57
- readonly c_prefixes: string[];
58
- private _members?;
59
- private _enum_constants?;
60
- private _resolve_names;
61
- __dts__references?: string[];
62
- package_version: readonly [string, string] | readonly [string, string, string];
63
- parent: NSRegistry;
64
- config: OptionsGeneration;
65
- constructor(dependency: Dependency, prefixes: string[], config: OptionsGeneration);
66
- initDependencies(): Promise<void>;
67
- initTransitiveDependencies(transitiveDependencies: Dependency[]): Promise<void>;
68
- get ns(): this;
69
- private checkTransitiveDependencies;
70
- getTsDocReturnTags(girElement?: IntrospectedFunction | IntrospectedClassFunction): TsDocTag[];
71
- getTsDocInParamTags(inParams?: IntrospectedFunctionParameter[]): TsDocTag[];
72
- registerResolveName(resolveName: string, namespace: string, name: string): void;
73
- get members(): Map<string, GirNSMember | GirNSMember[]>;
74
- get enum_constants(): Map<string, readonly [string, string]>;
75
- accept(visitor: GirVisitor): this;
76
- getImportsForCPrefix(c_prefix: string): GirModule[];
77
- hasImport(name: string): boolean;
78
- private _getImport;
79
- getInstalledImport(_namespace: string): GirModule | null;
80
- assertInstalledImport(_namespace: string): GirModule;
81
- getMembers(name: string): IntrospectedNamespaceMember[];
82
- getMemberWithoutOverrides(name: string): GirNSMember | null | undefined;
83
- assertClass(name: string): IntrospectedBaseClass;
84
- getClass(name: string): IntrospectedBaseClass | null;
85
- getEnum(name: string): IntrospectedEnum | null;
86
- getAlias(name: string): IntrospectedAlias | null;
87
- hasSymbol(name: string): boolean;
88
- resolveSymbolFromTypeName(name: string): string | null;
89
- findClassCallback(name: string): [string | null, string];
90
- /**
91
- * This is an internal method to add TypeScript <reference>
92
- * comments when overrides use parts of the TypeScript standard
93
- * libraries that are newer than default.
94
- */
95
- ___dts___addReference(reference: string): void;
96
- static load(dependency: Dependency, config: OptionsGeneration, registry: NSRegistry): Promise<GirModule>;
97
- /** Start to parse all the data from the XML we need for the typescript generation */
98
- parse(): void;
99
- }
100
- export declare const isIntrospectable: (e: {
101
- $?: GirInfoAttrs;
102
- }) => boolean;
103
- export declare const isDeprecated: (e: {
104
- $: GirInfoAttrs;
105
- }) => boolean;
106
- export declare const deprecatedVersion: (e: {
107
- $: GirInfoAttrs;
108
- }) => string | undefined;
109
- export declare const introducedVersion: (e: {
110
- $: GirInfoAttrs;
111
- }) => string | undefined;
112
- export declare function promisifyNamespaceFunctions(namespace: GirModule): void;
package/lib/gir-module.js DELETED
@@ -1,570 +0,0 @@
1
- // TODO move this class into a web-worker? https://www.npmjs.com/package/web-worker
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
- import { Transformation } from './transformation.js';
4
- import { Logger } from './logger.js';
5
- import { DependencyManager } from './dependency-manager.js';
6
- import { find } from './utils.js';
7
- import { ClosureType, TypeIdentifier, PromiseType, VoidType, BooleanType, TupleType, BinaryType, NullableType, ObjectType, } from './gir.js';
8
- import { IntrospectedAlias } from './gir/alias.js';
9
- import { IntrospectedBase } from './gir/base.js';
10
- import { IntrospectedBaseClass, IntrospectedClass, IntrospectedRecord, IntrospectedInterface } from './gir/class.js';
11
- import { IntrospectedConstant } from './gir/const.js';
12
- import { IntrospectedEnum, IntrospectedError } from './gir/enum.js';
13
- import { IntrospectedFunction, IntrospectedCallback, } from './gir/function.js';
14
- import { isPrimitiveType } from './gir/util.js';
15
- export class GirModule {
16
- dependency;
17
- /**
18
- * E.g. 'Gtk'
19
- */
20
- get namespace() {
21
- return this.dependency.namespace;
22
- }
23
- /**
24
- * E.g. '4.0'
25
- */
26
- get version() {
27
- return this.dependency.version;
28
- }
29
- /**
30
- * E.g. 'Gtk-4.0'
31
- */
32
- get packageName() {
33
- return this.dependency.packageName;
34
- }
35
- /**
36
- * E.g. 'Gtk40'
37
- * Is used in the generated index.d.ts, for example: `import * as Gtk40 from "./Gtk-4.0.js";`
38
- */
39
- get importNamespace() {
40
- return this.dependency.importNamespace;
41
- }
42
- get importName() {
43
- return this.dependency.importName;
44
- }
45
- get importPath() {
46
- return this.dependency.importPath;
47
- }
48
- prefixes = [];
49
- /**
50
- * The version of the library as an object.
51
- * E.g. `{ major: 4, minor: 0, patch: 0 }` or as string `4.0.0`'
52
- */
53
- get libraryVersion() {
54
- // GObject and Gio are following the version of GLib
55
- if (this.namespace === 'GObject' || this.namespace === 'Gio') {
56
- const dep = this.allDependencies.find((girModule) => girModule.namespace === 'GLib');
57
- if (dep) {
58
- return dep.libraryVersion;
59
- }
60
- }
61
- return this.dependency.libraryVersion;
62
- }
63
- _dependencies = null;
64
- _transitiveDependencies = null;
65
- get dependencies() {
66
- if (!this._dependencies) {
67
- throw new Error('dependencies is not initialized, run initDependencies() first');
68
- }
69
- return this._dependencies;
70
- }
71
- get transitiveDependencies() {
72
- if (!this._transitiveDependencies) {
73
- throw new Error('transitiveDependencies is not initialized, run initTransitiveDependencies() first');
74
- }
75
- return this._transitiveDependencies;
76
- }
77
- get allDependencies() {
78
- if (!this.dependencies) {
79
- throw new Error('dependencies is not initialized, run init() first');
80
- }
81
- return [...new Set([...this.dependencies, ...this.transitiveDependencies])];
82
- }
83
- transformation;
84
- dependencyManager;
85
- log;
86
- extends;
87
- /**
88
- * To prevent constants from being exported twice, the names already exported are saved here for comparison.
89
- * Please note: Such a case is only known for Zeitgeist-2.0 with the constant "ATTACHMENT"
90
- */
91
- constNames = {};
92
- c_prefixes;
93
- _members;
94
- _enum_constants;
95
- _resolve_names = new Map();
96
- __dts__references;
97
- package_version;
98
- parent;
99
- config;
100
- constructor(dependency, prefixes, config) {
101
- this.dependency = dependency;
102
- this.c_prefixes = [...prefixes];
103
- this.package_version = ['0', '0'];
104
- this.config = config;
105
- // TODO: Make this a singleton
106
- this.dependencyManager = DependencyManager.getInstance(this.config);
107
- }
108
- async initDependencies() {
109
- this._dependencies = await this.dependencyManager.fromGirIncludes(this.dependency.girXML?.repository[0]?.include || []);
110
- }
111
- async initTransitiveDependencies(transitiveDependencies) {
112
- this._transitiveDependencies = await this.checkTransitiveDependencies(transitiveDependencies);
113
- }
114
- get ns() {
115
- return this;
116
- }
117
- async checkTransitiveDependencies(transitiveDependencies) {
118
- // Always pull in GObject-2.0, as we may need it for e.g. GObject-2.0.type
119
- if (this.packageName !== 'GObject-2.0') {
120
- if (!find(transitiveDependencies, (x) => x.packageName === 'GObject-2.0')) {
121
- transitiveDependencies.push(await this.dependencyManager.get('GObject', '2.0'));
122
- }
123
- }
124
- // Add missing dependencies
125
- if (this.packageName === 'UnityExtras-7.0') {
126
- if (!find(transitiveDependencies, (x) => x.packageName === 'Unity-7.0')) {
127
- transitiveDependencies.push(await this.dependencyManager.get('Unity', '7.0'));
128
- }
129
- }
130
- if (this.packageName === 'UnityExtras-6.0') {
131
- if (!find(transitiveDependencies, (x) => x.packageName === 'Unity-6.0')) {
132
- transitiveDependencies.push(await this.dependencyManager.get('Unity', '6.0'));
133
- }
134
- }
135
- if (this.packageName === 'GTop-2.0') {
136
- if (!find(transitiveDependencies, (x) => x.packageName === 'GLib-2.0')) {
137
- transitiveDependencies.push(await this.dependencyManager.get('GLib', '2.0'));
138
- }
139
- }
140
- return transitiveDependencies;
141
- }
142
- getTsDocReturnTags(girElement) {
143
- const girReturnValue = girElement?.returnTypeDoc;
144
- if (!girReturnValue) {
145
- return [];
146
- }
147
- const returnTag = {
148
- tagName: 'returns',
149
- paramName: '',
150
- text: this.transformation.transformGirDocTagText(girReturnValue),
151
- };
152
- return [returnTag];
153
- }
154
- getTsDocInParamTags(inParams) {
155
- const tags = [];
156
- if (!inParams?.length) {
157
- return tags;
158
- }
159
- for (const inParam of inParams) {
160
- if (inParam.name) {
161
- tags.push({
162
- paramName: inParam.name,
163
- tagName: 'param',
164
- text: typeof inParam.doc === 'string' ? this.transformation.transformGirDocTagText(inParam.doc) : '',
165
- });
166
- }
167
- }
168
- return tags;
169
- }
170
- registerResolveName(resolveName, namespace, name) {
171
- this._resolve_names.set(resolveName, new TypeIdentifier(name, namespace));
172
- }
173
- get members() {
174
- if (!this._members) {
175
- this._members = new Map();
176
- }
177
- return this._members;
178
- }
179
- get enum_constants() {
180
- if (!this._enum_constants) {
181
- this._enum_constants = new Map();
182
- }
183
- return this._enum_constants;
184
- }
185
- accept(visitor) {
186
- for (const key of [...this.members.keys()]) {
187
- const member = this.members.get(key);
188
- if (!member)
189
- continue;
190
- if (Array.isArray(member)) {
191
- this.members.set(key, member.map((m) => {
192
- return m.accept(visitor);
193
- }));
194
- }
195
- else {
196
- this.members.set(key, member.accept(visitor));
197
- }
198
- }
199
- return this;
200
- }
201
- getImportsForCPrefix(c_prefix) {
202
- return this.parent.namespacesForPrefix(c_prefix);
203
- }
204
- // TODO: Move this into the generator
205
- hasImport(name) {
206
- return this.dependencies.some((dep) => dep.importName === name);
207
- }
208
- _getImport(namespace) {
209
- if (namespace === this.namespace) {
210
- return this;
211
- }
212
- const dep = this.dependencies?.find((dep) => dep.namespace === namespace) ??
213
- this.transitiveDependencies.find((dep) => dep.namespace === namespace);
214
- // Handle finding imports via their other prefixes
215
- if (!dep) {
216
- this.log.info(`Failed to find namespace ${namespace} in dependencies, resolving via c:prefixes`);
217
- // TODO: It might make more sense to move this conversion _before_
218
- // the _getImport call.
219
- const resolvedNamespaces = this.dependencyManager.namespacesForPrefix(namespace);
220
- if (resolvedNamespaces.length > 0) {
221
- this.log.info(`Found namespaces for prefix ${namespace}: ${resolvedNamespaces.map((r) => `${r.namespace} (${r.version})`).join(', ')}`);
222
- }
223
- for (const resolvedNamespace of resolvedNamespaces) {
224
- if (resolvedNamespace.namespace === this.namespace && resolvedNamespace.version === this.version) {
225
- return this;
226
- }
227
- const dep = this.dependencies?.find((dep) => dep.namespace === resolvedNamespace.namespace && dep.version === resolvedNamespace.version) ??
228
- this.transitiveDependencies.find((dep) => dep.namespace === resolvedNamespace.namespace && dep.version === resolvedNamespace.version);
229
- if (dep) {
230
- return this.parent.namespace(resolvedNamespace.namespace, dep.version);
231
- }
232
- }
233
- }
234
- let version = dep?.version;
235
- if (!version) {
236
- version = this.parent.assertDefaultVersionOf(namespace);
237
- }
238
- return this.parent.namespace(namespace, version);
239
- }
240
- getInstalledImport(_namespace) {
241
- if (_namespace === this.namespace) {
242
- return this;
243
- }
244
- const dep = this.dependencies?.find((dep) => dep.namespace === _namespace) ??
245
- this.transitiveDependencies.find((dep) => dep.namespace === _namespace);
246
- let version = dep?.version;
247
- if (!version) {
248
- version = this.parent.defaultVersionOf(_namespace) ?? undefined;
249
- }
250
- if (!version) {
251
- return null;
252
- }
253
- const namespace = this.parent.namespace(_namespace, version);
254
- return namespace;
255
- }
256
- assertInstalledImport(_namespace) {
257
- const namespace = this._getImport(_namespace);
258
- if (!namespace) {
259
- throw new Error(`Failed to import ${_namespace} in ${this.namespace}, not installed or accessible.`);
260
- }
261
- return namespace;
262
- }
263
- getMembers(name) {
264
- const members = this.members.get(name);
265
- if (Array.isArray(members)) {
266
- return [...members];
267
- }
268
- return members ? [members] : [];
269
- }
270
- getMemberWithoutOverrides(name) {
271
- if (this.members.has(name)) {
272
- const member = this.members.get(name);
273
- if (!Array.isArray(member)) {
274
- return member;
275
- }
276
- return null;
277
- }
278
- const resolvedName = this._resolve_names.get(name);
279
- if (resolvedName) {
280
- const member = this.members.get(resolvedName.name);
281
- if (!Array.isArray(member)) {
282
- return member;
283
- }
284
- }
285
- return null;
286
- }
287
- assertClass(name) {
288
- const clazz = this.getClass(name);
289
- if (!clazz) {
290
- throw new Error(`Class ${name} does not exist in namespace ${this.namespace}.`);
291
- }
292
- return clazz;
293
- }
294
- getClass(name) {
295
- const member = this.getMemberWithoutOverrides(name);
296
- if (member instanceof IntrospectedBaseClass) {
297
- return member;
298
- }
299
- return null;
300
- }
301
- getEnum(name) {
302
- const member = this.getMemberWithoutOverrides(name);
303
- if (member instanceof IntrospectedEnum) {
304
- return member;
305
- }
306
- return null;
307
- }
308
- getAlias(name) {
309
- const member = this.getMemberWithoutOverrides(name);
310
- if (member instanceof IntrospectedAlias) {
311
- return member;
312
- }
313
- return null;
314
- }
315
- hasSymbol(name) {
316
- return this.members.has(name);
317
- }
318
- resolveSymbolFromTypeName(name) {
319
- const resolvedName = this._resolve_names.get(name);
320
- if (!resolvedName) {
321
- return null;
322
- }
323
- const member = this.members.get(resolvedName.name);
324
- if (member instanceof IntrospectedBase) {
325
- return member.name;
326
- }
327
- return null;
328
- }
329
- findClassCallback(name) {
330
- const clazzes = Array.from(this.members.values()).filter((m) => m instanceof IntrospectedBaseClass);
331
- const res = clazzes
332
- .map((m) => [m, m.callbacks.find((c) => c.name === name || c.resolve_names.includes(name))])
333
- .find((r) => r[1] != null);
334
- if (res) {
335
- return [res[0].name, res[1].name];
336
- }
337
- else {
338
- return [null, name];
339
- }
340
- }
341
- /**
342
- * This is an internal method to add TypeScript <reference>
343
- * comments when overrides use parts of the TypeScript standard
344
- * libraries that are newer than default.
345
- */
346
- ___dts___addReference(reference) {
347
- this.__dts__references ??= [];
348
- this.__dts__references.push(reference);
349
- }
350
- static async load(dependency, config, registry) {
351
- const girXML = dependency.girXML;
352
- const ns = girXML?.repository[0]?.namespace?.[0];
353
- if (!girXML) {
354
- throw new Error(`Failed to load gir xml of ${dependency.packageName}`);
355
- }
356
- if (!ns) {
357
- throw new Error(`Missing namespace in ${girXML.repository[0].package[0].$.name}`);
358
- }
359
- const modName = ns.$['name'];
360
- const version = ns.$['version'];
361
- if (!modName) {
362
- throw new Error('Invalid GIR file: no namespace name specified.');
363
- }
364
- if (!version) {
365
- throw new Error('Invalid GIR file: no version name specified.');
366
- }
367
- const c_prefix = ns.$?.['c:identifier-prefixes']?.split(',') ?? [];
368
- const building = new GirModule(dependency, c_prefix, config);
369
- await building.initDependencies();
370
- building.parent = registry;
371
- // Set the namespace object here to prevent re-parsing the namespace if
372
- // another namespace imports it.
373
- registry.register(building);
374
- const prefixes = girXML.repository[0]?.$?.['c:identifier-prefixes']?.split(',');
375
- const unknownPrefixes = prefixes?.filter((pre) => pre !== modName);
376
- if (unknownPrefixes && unknownPrefixes.length > 0) {
377
- Logger.log(`Found additional prefixes for ${modName}: ${unknownPrefixes.join(', ')}`);
378
- building.prefixes.push(...unknownPrefixes);
379
- }
380
- building.transformation = Transformation.getSingleton(config);
381
- building.log = new Logger(config.verbose, `GirModule(${building.packageName})`);
382
- return building;
383
- }
384
- /** Start to parse all the data from the XML we need for the typescript generation */
385
- parse() {
386
- this.log.debug(`Parsing ${this.dependency.packageName}...`);
387
- const girXML = this.dependency.girXML;
388
- const ns = girXML?.repository[0]?.namespace?.[0];
389
- const options = {
390
- loadDocs: !this.config.noComments,
391
- propertyCase: 'both',
392
- verbose: this.config.verbose,
393
- };
394
- if (!girXML) {
395
- throw new Error(`Failed to load gir xml of ${this.dependency.packageName}`);
396
- }
397
- if (!ns) {
398
- throw new Error(`Missing namespace in ${girXML.repository[0].package[0].$.name}`);
399
- }
400
- const importConflicts = (el) => {
401
- return !this.hasImport(el.name);
402
- };
403
- if (ns.enumeration) {
404
- // Get the requested enums
405
- ns.enumeration
406
- ?.map((enumeration) => {
407
- if (enumeration.$['glib:error-domain']) {
408
- return IntrospectedError.fromXML(enumeration, this, options);
409
- }
410
- else {
411
- return IntrospectedEnum.fromXML(enumeration, this, options);
412
- }
413
- })
414
- .forEach((c) => this.members.set(c.name, c));
415
- }
416
- // Constants
417
- if (ns.constant) {
418
- ns.constant
419
- ?.filter(isIntrospectable)
420
- .map((constant) => IntrospectedConstant.fromXML(constant, this, options))
421
- .filter(importConflicts)
422
- .forEach((c) => this.members.set(c.name, c));
423
- }
424
- // Get the requested functions
425
- if (ns.function) {
426
- ns.function
427
- ?.filter(isIntrospectable)
428
- .map((func) => IntrospectedFunction.fromXML(func, this, options))
429
- .filter(importConflicts)
430
- .forEach((c) => this.members.set(c.name, c));
431
- }
432
- if (ns.callback) {
433
- ns.callback
434
- ?.filter(isIntrospectable)
435
- .map((callback) => IntrospectedCallback.fromXML(callback, this, options))
436
- .filter(importConflicts)
437
- .forEach((c) => this.members.set(c.name, c));
438
- }
439
- if (ns['glib:boxed']) {
440
- ns['glib:boxed']
441
- ?.filter(isIntrospectable)
442
- .map((boxed) => new IntrospectedAlias({
443
- name: boxed.$['glib:name'],
444
- namespace: this,
445
- type: new NullableType(ObjectType),
446
- }))
447
- .forEach((c) => this.members.set(c.name, c));
448
- }
449
- // Bitfield is a type of enum
450
- if (ns.bitfield) {
451
- ns.bitfield
452
- ?.filter(isIntrospectable)
453
- .map((field) => IntrospectedEnum.fromXML(field, this, options, true))
454
- .forEach((c) => this.members.set(c.name, c));
455
- }
456
- // The `enum_constants` map maps the C identifiers (GTK_BUTTON_TYPE_Y)
457
- // to the name of the enum (Button) to resolve references (Gtk.Button.Y)
458
- Array.from(this.members.values())
459
- .filter((m) => m instanceof IntrospectedEnum)
460
- .forEach((m) => {
461
- m.members.forEach((member) => {
462
- this.enum_constants.set(member.c_identifier, [m.name, member.name]);
463
- });
464
- });
465
- // Get the requested classes
466
- if (ns.class) {
467
- ns.class
468
- ?.filter(isIntrospectable)
469
- .map((klass) => IntrospectedClass.fromXML(klass, this, options))
470
- .filter(importConflicts)
471
- .forEach((c) => this.members.set(c.name, c));
472
- }
473
- if (ns.record) {
474
- ns.record
475
- ?.filter(isIntrospectable)
476
- .map((record) => IntrospectedRecord.fromXML(record, this, options))
477
- .filter(importConflicts)
478
- .forEach((c) => this.members.set(c.name, c));
479
- }
480
- if (ns.union) {
481
- ns.union
482
- ?.filter(isIntrospectable)
483
- .map((union) => IntrospectedRecord.fromXML(union, this, options))
484
- .filter(importConflicts)
485
- .forEach((c) => this.members.set(c.name, c));
486
- }
487
- if (ns.interface) {
488
- ns.interface
489
- ?.map((inter) => IntrospectedInterface.fromXML(inter, this, options))
490
- .filter(importConflicts)
491
- .forEach((c) => this.members.set(c.name, c));
492
- }
493
- if (ns.alias) {
494
- ns.alias
495
- ?.filter(isIntrospectable)
496
- // Avoid attempting to alias non-introspectable symbols.
497
- .map((b) => {
498
- b.type = b.type
499
- ?.filter((t) => !!(t && t.$.name))
500
- .map((t) => {
501
- if (t.$.name &&
502
- !this.hasSymbol(t.$.name) &&
503
- !isPrimitiveType(t.$.name) &&
504
- !t.$.name.includes('.')) {
505
- return { $: { name: 'unknown', 'c:type': 'unknown' } };
506
- }
507
- return t;
508
- });
509
- return b;
510
- })
511
- .map((alias) => IntrospectedAlias.fromXML(alias, this, options))
512
- .filter((alias) => alias != null)
513
- .forEach((c) => this.members.set(c.name, c));
514
- }
515
- }
516
- }
517
- export const isIntrospectable = (e) => !e || !e.$ || !e.$.introspectable || e.$.introspectable === '1';
518
- export const isDeprecated = (e) => e && e.$ && e.$.deprecated === '1';
519
- export const deprecatedVersion = (e) => e?.$?.['deprecated-version'];
520
- export const introducedVersion = (e) => e?.$?.version;
521
- export function promisifyNamespaceFunctions(namespace) {
522
- return namespace.members.forEach((node) => {
523
- if (!(node instanceof IntrospectedFunction))
524
- return;
525
- if (node.parameters.length < 1)
526
- return;
527
- const last_param = node.parameters[node.parameters.length - 1];
528
- if (!last_param)
529
- return;
530
- const last_param_unwrapped = last_param.type.unwrap();
531
- if (!(last_param_unwrapped instanceof ClosureType))
532
- return;
533
- const internal = last_param_unwrapped.type;
534
- if (internal instanceof TypeIdentifier && internal.is('Gio', 'AsyncReadyCallback')) {
535
- const async_res = [
536
- ...Array.from(namespace.members.values()).filter((m) => m instanceof IntrospectedFunction),
537
- ].find((m) => m.name === `${node.name.replace(/_async$/, '')}_finish` || m.name === `${node.name}_finish`);
538
- if (async_res) {
539
- const async_parameters = node.parameters.slice(0, -1).map((p) => p.copy());
540
- const sync_parameters = node.parameters.map((p) => p.copy({ isOptional: false }));
541
- const output_parameters = async_res.output_parameters;
542
- let async_return = new PromiseType(async_res.return());
543
- if (output_parameters.length > 0) {
544
- const raw_return = async_res.return();
545
- if (raw_return.equals(VoidType) || raw_return.equals(BooleanType)) {
546
- const [output_type, ...output_types] = output_parameters.map((op) => op.type);
547
- async_return = new PromiseType(new TupleType(output_type, ...output_types));
548
- }
549
- else {
550
- const [...output_types] = output_parameters.map((op) => op.type);
551
- async_return = new PromiseType(new TupleType(raw_return, ...output_types));
552
- }
553
- }
554
- namespace.members.set(node.name, [
555
- node.copy({
556
- parameters: async_parameters,
557
- return_type: async_return,
558
- }),
559
- node.copy({
560
- parameters: sync_parameters,
561
- }),
562
- node.copy({
563
- return_type: new BinaryType(async_return, node.return()),
564
- }),
565
- ]);
566
- }
567
- }
568
- });
569
- }
570
- //# sourceMappingURL=gir-module.js.map