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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/package.json +12 -26
  2. package/src/constants.ts +154 -0
  3. package/src/dependency-manager.ts +427 -0
  4. package/src/formatters/default.ts +7 -0
  5. package/src/formatters/formatter.ts +3 -0
  6. package/src/formatters/index.ts +3 -0
  7. package/src/formatters/json.ts +7 -0
  8. package/src/generators/generator.ts +65 -0
  9. package/src/generators/index.ts +2 -0
  10. package/src/generics/clutter.ts +71 -0
  11. package/src/generics/generify.ts +74 -0
  12. package/src/generics/gio.ts +91 -0
  13. package/src/generics/glib.ts +31 -0
  14. package/src/generics/gtk.ts +99 -0
  15. package/src/generics/meta.ts +41 -0
  16. package/src/generics/st.ts +197 -0
  17. package/src/generics/visitor.ts +484 -0
  18. package/src/gir/alias.ts +73 -0
  19. package/src/gir/callback.ts +79 -0
  20. package/src/gir/const.ts +73 -0
  21. package/src/gir/constructor.ts +91 -0
  22. package/src/gir/data.ts +12 -0
  23. package/src/gir/dependency-resolver.ts +81 -0
  24. package/src/gir/direct-allocation-constructor.ts +65 -0
  25. package/src/gir/enum-member.ts +51 -0
  26. package/src/gir/enum.ts +126 -0
  27. package/src/gir/error.ts +82 -0
  28. package/src/gir/function.ts +296 -0
  29. package/src/gir/generics.ts +66 -0
  30. package/src/gir/gir-complex-record.ts +7 -0
  31. package/src/gir/index.ts +25 -0
  32. package/src/gir/introspected-base.ts +104 -0
  33. package/src/gir/introspected-class-member.ts +15 -0
  34. package/src/gir/introspected-classes.ts +1517 -0
  35. package/src/gir/introspected-namespace-member.ts +24 -0
  36. package/src/gir/namespace.ts +76 -0
  37. package/src/gir/parameter.ts +199 -0
  38. package/src/gir/promisify.ts +209 -0
  39. package/src/gir/property.ts +203 -0
  40. package/src/gir/record.ts +477 -0
  41. package/src/gir/registry.ts +184 -0
  42. package/src/gir/signal.ts +246 -0
  43. package/src/gir-module.ts +703 -0
  44. package/src/gir.ts +892 -0
  45. package/src/index.ts +16 -0
  46. package/src/injections/gee08.ts +89 -0
  47. package/src/injections/gee1.ts +35 -0
  48. package/src/injections/gio.ts +707 -0
  49. package/src/injections/glib.ts +275 -0
  50. package/src/injections/gobject.ts +901 -0
  51. package/src/injections/gtk4.ts +23 -0
  52. package/src/injections/inject.ts +43 -0
  53. package/src/injections/shell.ts +45 -0
  54. package/src/injections/tracker1.ts +42 -0
  55. package/src/library-version.ts +50 -0
  56. package/src/logger.ts +104 -0
  57. package/src/messages.ts +57 -0
  58. package/src/templates/index.ts +1 -0
  59. package/src/templates/template-engine.ts +178 -0
  60. package/src/types/answer-version.ts +4 -0
  61. package/src/types/any-introspected-type.ts +3 -0
  62. package/src/types/class-function-types.ts +49 -0
  63. package/src/types/class-member.ts +5 -0
  64. package/src/types/class-parent.ts +14 -0
  65. package/src/types/class.ts +45 -0
  66. package/src/types/config-flags.ts +5 -0
  67. package/src/types/construct-name.ts +13 -0
  68. package/src/types/dependency-map.ts +4 -0
  69. package/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
  70. package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
  71. package/src/types/format.ts +1 -0
  72. package/src/types/generator-constructor.ts +7 -0
  73. package/src/types/generics-config.ts +90 -0
  74. package/src/types/gir-any-element.ts +35 -0
  75. package/src/types/gir-module-interface.ts +22 -0
  76. package/src/types/gir-module-resolved.ts +32 -0
  77. package/src/types/gir-type-name.ts +20 -0
  78. package/src/types/index.ts +94 -0
  79. package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
  80. package/src/types/introspected.ts +18 -0
  81. package/src/types/local-name-check.ts +5 -0
  82. package/src/types/local-name-type.ts +1 -0
  83. package/src/types/local-name.ts +8 -0
  84. package/src/types/local-names.ts +5 -0
  85. package/src/types/metadata.ts +6 -0
  86. package/src/types/ns-loader.ts +7 -0
  87. package/src/types/options-base.ts +8 -0
  88. package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
  89. package/src/types/options-load.ts +6 -0
  90. package/src/types/options-transform.ts +5 -0
  91. package/src/types/output-format.ts +1 -0
  92. package/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
  93. package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
  94. package/src/types/package-section-parsed.ts +9 -0
  95. package/src/types/parsed-gir.ts +5 -0
  96. package/src/types/parsed-package-data.ts +7 -0
  97. package/src/types/property-case.ts +1 -0
  98. package/src/types/resolve-type.ts +4 -0
  99. package/src/types/template-data.ts +8 -0
  100. package/src/types/template-options.ts +33 -0
  101. package/src/types/transformation-case.ts +9 -0
  102. package/src/types/transformations.ts +5 -0
  103. package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +5 -3
  104. package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
  105. package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
  106. package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
  107. package/src/types/type-gir-element.ts +25 -0
  108. package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
  109. package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-gir-enumeration.ts} +1 -1
  110. package/src/types/type-gir-function.ts +8 -0
  111. package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
  112. package/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
  113. package/src/types/type-gir-parameter.ts +1 -0
  114. package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
  115. package/src/types/type-gir-variable.ts +1 -0
  116. package/src/types/type-ts-element.ts +13 -0
  117. package/{lib/types/type-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
  118. package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
  119. package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
  120. package/src/types/user-config-load-result.ts +6 -0
  121. package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
  122. package/src/util.ts +84 -0
  123. package/src/utils/conflicts/conflict-resolver.ts +122 -0
  124. package/src/utils/conflicts/function-conflict-detector.ts +139 -0
  125. package/src/utils/conflicts/index.ts +2 -0
  126. package/src/utils/conflicts.ts +490 -0
  127. package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
  128. package/src/utils/files.ts +71 -0
  129. package/src/utils/function-type-guards.ts +61 -0
  130. package/src/utils/generation.ts +69 -0
  131. package/src/utils/gir-parsing.ts +243 -0
  132. package/src/utils/girs.ts +113 -0
  133. package/src/utils/index.ts +14 -0
  134. package/src/utils/naming.ts +188 -0
  135. package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
  136. package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
  137. package/src/utils/path.ts +7 -0
  138. package/src/utils/registry.ts +5 -0
  139. package/src/utils/strings.ts +134 -0
  140. package/src/utils/type-resolution.ts +116 -0
  141. package/src/utils/types.ts +247 -0
  142. package/src/validators/class.ts +324 -0
  143. package/src/validators/function-parameters.ts +52 -0
  144. package/src/validators/interface.ts +20 -0
  145. package/src/visitor.ts +58 -0
  146. package/lib/constants.d.ts +0 -25
  147. package/lib/constants.js +0 -93
  148. package/lib/constants.js.map +0 -1
  149. package/lib/dependency-manager.d.ts +0 -151
  150. package/lib/dependency-manager.js +0 -340
  151. package/lib/dependency-manager.js.map +0 -1
  152. package/lib/formatters/default.d.ts +0 -4
  153. package/lib/formatters/default.js +0 -7
  154. package/lib/formatters/default.js.map +0 -1
  155. package/lib/formatters/formatter.d.ts +0 -3
  156. package/lib/formatters/formatter.js +0 -3
  157. package/lib/formatters/formatter.js.map +0 -1
  158. package/lib/formatters/json.d.ts +0 -4
  159. package/lib/formatters/json.js +0 -7
  160. package/lib/formatters/json.js.map +0 -1
  161. package/lib/generators/dts/glib.d.ts +0 -2
  162. package/lib/generators/dts/glib.js +0 -514
  163. package/lib/generators/dts/glib.js.map +0 -1
  164. package/lib/generators/dts/gobject.d.ts +0 -2
  165. package/lib/generators/dts/gobject.js +0 -117
  166. package/lib/generators/dts/gobject.js.map +0 -1
  167. package/lib/generators/dts-inline.d.ts +0 -10
  168. package/lib/generators/dts-inline.js +0 -57
  169. package/lib/generators/dts-inline.js.map +0 -1
  170. package/lib/generators/dts-modules.d.ts +0 -10
  171. package/lib/generators/dts-modules.js +0 -98
  172. package/lib/generators/dts-modules.js.map +0 -1
  173. package/lib/generators/dts.d.ts +0 -45
  174. package/lib/generators/dts.js +0 -683
  175. package/lib/generators/dts.js.map +0 -1
  176. package/lib/generators/generator.d.ts +0 -45
  177. package/lib/generators/generator.js +0 -9
  178. package/lib/generators/generator.js.map +0 -1
  179. package/lib/generators/index.d.ts +0 -5
  180. package/lib/generators/index.js +0 -6
  181. package/lib/generators/index.js.map +0 -1
  182. package/lib/generators/json.d.ts +0 -257
  183. package/lib/generators/json.js +0 -866
  184. package/lib/generators/json.js.map +0 -1
  185. package/lib/generics/clutter.d.ts +0 -41
  186. package/lib/generics/clutter.js +0 -52
  187. package/lib/generics/clutter.js.map +0 -1
  188. package/lib/generics/generify.d.ts +0 -2
  189. package/lib/generics/generify.js +0 -47
  190. package/lib/generics/generify.js.map +0 -1
  191. package/lib/generics/gio.d.ts +0 -7
  192. package/lib/generics/gio.js +0 -51
  193. package/lib/generics/gio.js.map +0 -1
  194. package/lib/generics/glib.d.ts +0 -7
  195. package/lib/generics/glib.js +0 -18
  196. package/lib/generics/glib.js.map +0 -1
  197. package/lib/generics/gtk.d.ts +0 -7
  198. package/lib/generics/gtk.js +0 -56
  199. package/lib/generics/gtk.js.map +0 -1
  200. package/lib/generics/meta.d.ts +0 -36
  201. package/lib/generics/meta.js +0 -29
  202. package/lib/generics/meta.js.map +0 -1
  203. package/lib/generics/st.d.ts +0 -31
  204. package/lib/generics/st.js +0 -98
  205. package/lib/generics/st.js.map +0 -1
  206. package/lib/generics/visitor.d.ts +0 -20
  207. package/lib/generics/visitor.js +0 -255
  208. package/lib/generics/visitor.js.map +0 -1
  209. package/lib/gir/alias.d.ts +0 -24
  210. package/lib/gir/alias.js +0 -43
  211. package/lib/gir/alias.js.map +0 -1
  212. package/lib/gir/base.d.ts +0 -62
  213. package/lib/gir/base.js +0 -83
  214. package/lib/gir/base.js.map +0 -1
  215. package/lib/gir/class.d.ts +0 -228
  216. package/lib/gir/class.js +0 -1151
  217. package/lib/gir/class.js.map +0 -1
  218. package/lib/gir/const.d.ts +0 -25
  219. package/lib/gir/const.js +0 -43
  220. package/lib/gir/const.js.map +0 -1
  221. package/lib/gir/enum.d.ts +0 -45
  222. package/lib/gir/enum.js +0 -164
  223. package/lib/gir/enum.js.map +0 -1
  224. package/lib/gir/function.d.ts +0 -200
  225. package/lib/gir/function.js +0 -683
  226. package/lib/gir/function.js.map +0 -1
  227. package/lib/gir/generics.d.ts +0 -5
  228. package/lib/gir/generics.js +0 -57
  229. package/lib/gir/generics.js.map +0 -1
  230. package/lib/gir/index.d.ts +0 -14
  231. package/lib/gir/index.js +0 -15
  232. package/lib/gir/index.js.map +0 -1
  233. package/lib/gir/namespace.d.ts +0 -21
  234. package/lib/gir/namespace.js +0 -57
  235. package/lib/gir/namespace.js.map +0 -1
  236. package/lib/gir/nodes.d.ts +0 -11
  237. package/lib/gir/nodes.js +0 -12
  238. package/lib/gir/nodes.js.map +0 -1
  239. package/lib/gir/promisify.d.ts +0 -5
  240. package/lib/gir/promisify.js +0 -158
  241. package/lib/gir/promisify.js.map +0 -1
  242. package/lib/gir/property.d.ts +0 -60
  243. package/lib/gir/property.js +0 -128
  244. package/lib/gir/property.js.map +0 -1
  245. package/lib/gir/registry.d.ts +0 -51
  246. package/lib/gir/registry.js +0 -147
  247. package/lib/gir/registry.js.map +0 -1
  248. package/lib/gir/signal.d.ts +0 -36
  249. package/lib/gir/signal.js +0 -169
  250. package/lib/gir/signal.js.map +0 -1
  251. package/lib/gir/util.d.ts +0 -49
  252. package/lib/gir/util.js +0 -561
  253. package/lib/gir/util.js.map +0 -1
  254. package/lib/gir-module.d.ts +0 -104
  255. package/lib/gir-module.js +0 -584
  256. package/lib/gir-module.js.map +0 -1
  257. package/lib/gir.d.ts +0 -254
  258. package/lib/gir.js +0 -639
  259. package/lib/gir.js.map +0 -1
  260. package/lib/index.d.ts +0 -13
  261. package/lib/index.js +0 -16
  262. package/lib/index.js.map +0 -1
  263. package/lib/injections/gee08.d.ts +0 -7
  264. package/lib/injections/gee08.js +0 -68
  265. package/lib/injections/gee08.js.map +0 -1
  266. package/lib/injections/gee1.d.ts +0 -7
  267. package/lib/injections/gee1.js +0 -28
  268. package/lib/injections/gee1.js.map +0 -1
  269. package/lib/injections/gio.d.ts +0 -7
  270. package/lib/injections/gio.js +0 -563
  271. package/lib/injections/gio.js.map +0 -1
  272. package/lib/injections/glib.d.ts +0 -7
  273. package/lib/injections/glib.js +0 -210
  274. package/lib/injections/glib.js.map +0 -1
  275. package/lib/injections/gobject.d.ts +0 -7
  276. package/lib/injections/gobject.js +0 -594
  277. package/lib/injections/gobject.js.map +0 -1
  278. package/lib/injections/gtk4.d.ts +0 -7
  279. package/lib/injections/gtk4.js +0 -19
  280. package/lib/injections/gtk4.js.map +0 -1
  281. package/lib/injections/inject.d.ts +0 -4
  282. package/lib/injections/inject.js +0 -33
  283. package/lib/injections/inject.js.map +0 -1
  284. package/lib/injections/shell.d.ts +0 -20
  285. package/lib/injections/shell.js +0 -34
  286. package/lib/injections/shell.js.map +0 -1
  287. package/lib/injections/tracker1.d.ts +0 -7
  288. package/lib/injections/tracker1.js +0 -30
  289. package/lib/injections/tracker1.js.map +0 -1
  290. package/lib/library-version.d.ts +0 -10
  291. package/lib/library-version.js +0 -45
  292. package/lib/library-version.js.map +0 -1
  293. package/lib/logger.d.ts +0 -36
  294. package/lib/logger.js +0 -134
  295. package/lib/logger.js.map +0 -1
  296. package/lib/messages.d.ts +0 -23
  297. package/lib/messages.js +0 -39
  298. package/lib/messages.js.map +0 -1
  299. package/lib/registry.d.ts +0 -8
  300. package/lib/registry.js +0 -12
  301. package/lib/registry.js.map +0 -1
  302. package/lib/transformation.d.ts +0 -169
  303. package/lib/transformation.js +0 -393
  304. package/lib/transformation.js.map +0 -1
  305. package/lib/types/answer-version.d.ts +0 -4
  306. package/lib/types/answer-version.js +0 -2
  307. package/lib/types/answer-version.js.map +0 -1
  308. package/lib/types/class-parent.d.ts +0 -13
  309. package/lib/types/class-parent.js +0 -2
  310. package/lib/types/class-parent.js.map +0 -1
  311. package/lib/types/config-flags.d.ts +0 -4
  312. package/lib/types/config-flags.js +0 -2
  313. package/lib/types/config-flags.js.map +0 -1
  314. package/lib/types/construct-name.d.ts +0 -1
  315. package/lib/types/construct-name.js +0 -2
  316. package/lib/types/construct-name.js.map +0 -1
  317. package/lib/types/dependency-map.d.ts +0 -4
  318. package/lib/types/dependency-map.js +0 -2
  319. package/lib/types/dependency-map.js.map +0 -1
  320. package/lib/types/dependency.js +0 -2
  321. package/lib/types/dependency.js.map +0 -1
  322. package/lib/types/file-info.js +0 -2
  323. package/lib/types/file-info.js.map +0 -1
  324. package/lib/types/format.d.ts +0 -1
  325. package/lib/types/format.js +0 -2
  326. package/lib/types/format.js.map +0 -1
  327. package/lib/types/gir-alias-element.d.ts +0 -4
  328. package/lib/types/gir-alias-element.js +0 -2
  329. package/lib/types/gir-alias-element.js.map +0 -1
  330. package/lib/types/gir-annotation.d.ts +0 -9
  331. package/lib/types/gir-annotation.js +0 -2
  332. package/lib/types/gir-annotation.js.map +0 -1
  333. package/lib/types/gir-any-element.d.ts +0 -2
  334. package/lib/types/gir-any-element.js +0 -2
  335. package/lib/types/gir-any-element.js.map +0 -1
  336. package/lib/types/gir-bitfield-element.d.ts +0 -6
  337. package/lib/types/gir-bitfield-element.js +0 -2
  338. package/lib/types/gir-bitfield-element.js.map +0 -1
  339. package/lib/types/gir-callable-param-element.d.ts +0 -4
  340. package/lib/types/gir-callable-param-element.js +0 -2
  341. package/lib/types/gir-callable-param-element.js.map +0 -1
  342. package/lib/types/gir-callable-params.d.ts +0 -7
  343. package/lib/types/gir-callable-params.js +0 -2
  344. package/lib/types/gir-callable-params.js.map +0 -1
  345. package/lib/types/gir-callable-return.d.ts +0 -5
  346. package/lib/types/gir-callable-return.js +0 -2
  347. package/lib/types/gir-callable-return.js.map +0 -1
  348. package/lib/types/gir-callback-element.d.ts +0 -6
  349. package/lib/types/gir-callback-element.js +0 -2
  350. package/lib/types/gir-callback-element.js.map +0 -1
  351. package/lib/types/gir-class-element.d.ts +0 -17
  352. package/lib/types/gir-class-element.js +0 -2
  353. package/lib/types/gir-class-element.js.map +0 -1
  354. package/lib/types/gir-constant-element.d.ts +0 -4
  355. package/lib/types/gir-constant-element.js +0 -2
  356. package/lib/types/gir-constant-element.js.map +0 -1
  357. package/lib/types/gir-constructor-element.d.ts +0 -6
  358. package/lib/types/gir-constructor-element.js +0 -2
  359. package/lib/types/gir-constructor-element.js.map +0 -1
  360. package/lib/types/gir-enum-element.d.ts +0 -6
  361. package/lib/types/gir-enum-element.js +0 -2
  362. package/lib/types/gir-enum-element.js.map +0 -1
  363. package/lib/types/gir-field-element.d.ts +0 -5
  364. package/lib/types/gir-field-element.js +0 -2
  365. package/lib/types/gir-field-element.js.map +0 -1
  366. package/lib/types/gir-function-element.d.ts +0 -6
  367. package/lib/types/gir-function-element.js +0 -2
  368. package/lib/types/gir-function-element.js.map +0 -1
  369. package/lib/types/gir-instance-parameter.d.ts +0 -7
  370. package/lib/types/gir-instance-parameter.js +0 -2
  371. package/lib/types/gir-instance-parameter.js.map +0 -1
  372. package/lib/types/gir-interface-element.d.ts +0 -16
  373. package/lib/types/gir-interface-element.js +0 -2
  374. package/lib/types/gir-interface-element.js.map +0 -1
  375. package/lib/types/gir-member-element.d.ts +0 -5
  376. package/lib/types/gir-member-element.js +0 -2
  377. package/lib/types/gir-member-element.js.map +0 -1
  378. package/lib/types/gir-method-element.d.ts +0 -7
  379. package/lib/types/gir-method-element.js +0 -2
  380. package/lib/types/gir-method-element.js.map +0 -1
  381. package/lib/types/gir-module-resolved-by.d.ts +0 -15
  382. package/lib/types/gir-module-resolved-by.js +0 -2
  383. package/lib/types/gir-module-resolved-by.js.map +0 -1
  384. package/lib/types/gir-modules-grouped-map.d.ts +0 -4
  385. package/lib/types/gir-modules-grouped-map.js +0 -2
  386. package/lib/types/gir-modules-grouped-map.js.map +0 -1
  387. package/lib/types/gir-modules-grouped.d.ts +0 -12
  388. package/lib/types/gir-modules-grouped.js +0 -2
  389. package/lib/types/gir-modules-grouped.js.map +0 -1
  390. package/lib/types/gir-namespace.d.ts +0 -27
  391. package/lib/types/gir-namespace.js +0 -2
  392. package/lib/types/gir-namespace.js.map +0 -1
  393. package/lib/types/gir-property-element.d.ts +0 -4
  394. package/lib/types/gir-property-element.js +0 -2
  395. package/lib/types/gir-property-element.js.map +0 -1
  396. package/lib/types/gir-record-element.d.ts +0 -10
  397. package/lib/types/gir-record-element.js +0 -2
  398. package/lib/types/gir-record-element.js.map +0 -1
  399. package/lib/types/gir-repository.d.ts +0 -5
  400. package/lib/types/gir-repository.js +0 -2
  401. package/lib/types/gir-repository.js.map +0 -1
  402. package/lib/types/gir-signal.d.ts +0 -10
  403. package/lib/types/gir-signal.js +0 -2
  404. package/lib/types/gir-signal.js.map +0 -1
  405. package/lib/types/gir-type-name.d.ts +0 -2
  406. package/lib/types/gir-type-name.js +0 -2
  407. package/lib/types/gir-type-name.js.map +0 -1
  408. package/lib/types/gir-union-element.d.ts +0 -9
  409. package/lib/types/gir-union-element.js +0 -2
  410. package/lib/types/gir-union-element.js.map +0 -1
  411. package/lib/types/gir-unparsed-number.d.ts +0 -2
  412. package/lib/types/gir-unparsed-number.js +0 -2
  413. package/lib/types/gir-unparsed-number.js.map +0 -1
  414. package/lib/types/gir-virtual-method.d.ts +0 -6
  415. package/lib/types/gir-virtual-method.js +0 -2
  416. package/lib/types/gir-virtual-method.js.map +0 -1
  417. package/lib/types/index.d.ts +0 -79
  418. package/lib/types/index.js +0 -80
  419. package/lib/types/index.js.map +0 -1
  420. package/lib/types/inheritance-table.js +0 -2
  421. package/lib/types/inheritance-table.js.map +0 -1
  422. package/lib/types/local-name-check.d.ts +0 -4
  423. package/lib/types/local-name-check.js +0 -2
  424. package/lib/types/local-name-check.js.map +0 -1
  425. package/lib/types/local-name-type.d.ts +0 -1
  426. package/lib/types/local-name-type.js +0 -2
  427. package/lib/types/local-name-type.js.map +0 -1
  428. package/lib/types/local-name.d.ts +0 -7
  429. package/lib/types/local-name.js +0 -2
  430. package/lib/types/local-name.js.map +0 -1
  431. package/lib/types/local-names.d.ts +0 -4
  432. package/lib/types/local-names.js +0 -2
  433. package/lib/types/local-names.js.map +0 -1
  434. package/lib/types/metadata.d.ts +0 -8
  435. package/lib/types/metadata.js +0 -2
  436. package/lib/types/metadata.js.map +0 -1
  437. package/lib/types/options-base.d.ts +0 -4
  438. package/lib/types/options-base.js +0 -2
  439. package/lib/types/options-base.js.map +0 -1
  440. package/lib/types/options-generation.js +0 -2
  441. package/lib/types/options-generation.js.map +0 -1
  442. package/lib/types/options-load.d.ts +0 -5
  443. package/lib/types/options-load.js +0 -2
  444. package/lib/types/options-load.js.map +0 -1
  445. package/lib/types/options-transform.d.ts +0 -4
  446. package/lib/types/options-transform.js +0 -2
  447. package/lib/types/options-transform.js.map +0 -1
  448. package/lib/types/output-format.d.ts +0 -1
  449. package/lib/types/output-format.js +0 -2
  450. package/lib/types/output-format.js.map +0 -1
  451. package/lib/types/package-data-parsed.js +0 -2
  452. package/lib/types/package-data-parsed.js.map +0 -1
  453. package/lib/types/package-data.js +0 -2
  454. package/lib/types/package-data.js.map +0 -1
  455. package/lib/types/package-section-parsed.d.ts +0 -8
  456. package/lib/types/package-section-parsed.js +0 -2
  457. package/lib/types/package-section-parsed.js.map +0 -1
  458. package/lib/types/parsed-gir.d.ts +0 -5
  459. package/lib/types/parsed-gir.js +0 -2
  460. package/lib/types/parsed-gir.js.map +0 -1
  461. package/lib/types/parsed-package-data.d.ts +0 -6
  462. package/lib/types/parsed-package-data.js +0 -2
  463. package/lib/types/parsed-package-data.js.map +0 -1
  464. package/lib/types/part-of-class.d.ts +0 -7
  465. package/lib/types/part-of-class.js +0 -2
  466. package/lib/types/part-of-class.js.map +0 -1
  467. package/lib/types/part-of-module.d.ts +0 -6
  468. package/lib/types/part-of-module.js +0 -2
  469. package/lib/types/part-of-module.js.map +0 -1
  470. package/lib/types/property-case.d.ts +0 -1
  471. package/lib/types/property-case.js +0 -2
  472. package/lib/types/property-case.js.map +0 -1
  473. package/lib/types/resolve-type.d.ts +0 -4
  474. package/lib/types/resolve-type.js +0 -6
  475. package/lib/types/resolve-type.js.map +0 -1
  476. package/lib/types/template-data.d.ts +0 -7
  477. package/lib/types/template-data.js +0 -2
  478. package/lib/types/template-data.js.map +0 -1
  479. package/lib/types/transformation-case.d.ts +0 -1
  480. package/lib/types/transformation-case.js +0 -2
  481. package/lib/types/transformation-case.js.map +0 -1
  482. package/lib/types/transformations.d.ts +0 -4
  483. package/lib/types/transformations.js +0 -2
  484. package/lib/types/transformations.js.map +0 -1
  485. package/lib/types/ts-doc-tag.js +0 -2
  486. package/lib/types/ts-doc-tag.js.map +0 -1
  487. package/lib/types/ts-doc.js +0 -2
  488. package/lib/types/ts-doc.js.map +0 -1
  489. package/lib/types/type-gir-alias.js +0 -2
  490. package/lib/types/type-gir-alias.js.map +0 -1
  491. package/lib/types/type-gir-class.js +0 -2
  492. package/lib/types/type-gir-class.js.map +0 -1
  493. package/lib/types/type-gir-element.d.ts +0 -3
  494. package/lib/types/type-gir-element.js +0 -2
  495. package/lib/types/type-gir-element.js.map +0 -1
  496. package/lib/types/type-gir-enumeration-member.js +0 -2
  497. package/lib/types/type-gir-enumeration-member.js.map +0 -1
  498. package/lib/types/type-gir-enumeration.js +0 -2
  499. package/lib/types/type-gir-enumeration.js.map +0 -1
  500. package/lib/types/type-gir-function.d.ts +0 -1
  501. package/lib/types/type-gir-function.js +0 -2
  502. package/lib/types/type-gir-function.js.map +0 -1
  503. package/lib/types/type-gir-interface.js +0 -2
  504. package/lib/types/type-gir-interface.js.map +0 -1
  505. package/lib/types/type-gir-method.js +0 -2
  506. package/lib/types/type-gir-method.js.map +0 -1
  507. package/lib/types/type-gir-parameter.d.ts +0 -1
  508. package/lib/types/type-gir-parameter.js +0 -2
  509. package/lib/types/type-gir-parameter.js.map +0 -1
  510. package/lib/types/type-gir-property.js +0 -2
  511. package/lib/types/type-gir-property.js.map +0 -1
  512. package/lib/types/type-gir-variable.d.ts +0 -1
  513. package/lib/types/type-gir-variable.js +0 -2
  514. package/lib/types/type-gir-variable.js.map +0 -1
  515. package/lib/types/type-ts-element.d.ts +0 -3
  516. package/lib/types/type-ts-element.js +0 -2
  517. package/lib/types/type-ts-element.js.map +0 -1
  518. package/lib/types/type-ts-enumeration-member.js +0 -2
  519. package/lib/types/type-ts-enumeration-member.js.map +0 -1
  520. package/lib/types/type-ts-function.js +0 -2
  521. package/lib/types/type-ts-function.js.map +0 -1
  522. package/lib/types/type-ts-property.js +0 -2
  523. package/lib/types/type-ts-property.js.map +0 -1
  524. package/lib/types/user-config-load-result.d.ts +0 -6
  525. package/lib/types/user-config-load-result.js +0 -2
  526. package/lib/types/user-config-load-result.js.map +0 -1
  527. package/lib/types/user-config.js +0 -2
  528. package/lib/types/user-config.js.map +0 -1
  529. package/lib/util.d.ts +0 -20
  530. package/lib/util.js +0 -67
  531. package/lib/util.js.map +0 -1
  532. package/lib/utils/documentation.d.ts +0 -13
  533. package/lib/utils/documentation.js.map +0 -1
  534. package/lib/utils/files.d.ts +0 -21
  535. package/lib/utils/files.js +0 -62
  536. package/lib/utils/files.js.map +0 -1
  537. package/lib/utils/girs.d.ts +0 -45
  538. package/lib/utils/girs.js +0 -101
  539. package/lib/utils/girs.js.map +0 -1
  540. package/lib/utils/index.d.ts +0 -8
  541. package/lib/utils/index.js +0 -9
  542. package/lib/utils/index.js.map +0 -1
  543. package/lib/utils/naming.d.ts +0 -13
  544. package/lib/utils/naming.js +0 -40
  545. package/lib/utils/naming.js.map +0 -1
  546. package/lib/utils/numbers.js +0 -9
  547. package/lib/utils/numbers.js.map +0 -1
  548. package/lib/utils/objects.d.ts +0 -136
  549. package/lib/utils/objects.js.map +0 -1
  550. package/lib/utils/path.d.ts +0 -1
  551. package/lib/utils/path.js +0 -7
  552. package/lib/utils/path.js.map +0 -1
  553. package/lib/utils/strings.d.ts +0 -74
  554. package/lib/utils/strings.js +0 -121
  555. package/lib/utils/strings.js.map +0 -1
  556. package/lib/validators/class.d.ts +0 -7
  557. package/lib/validators/class.js +0 -217
  558. package/lib/validators/class.js.map +0 -1
  559. package/lib/validators/function-parameters.d.ts +0 -14
  560. package/lib/validators/function-parameters.js +0 -31
  561. package/lib/validators/function-parameters.js.map +0 -1
  562. package/lib/validators/interface.d.ts +0 -5
  563. package/lib/validators/interface.js +0 -16
  564. package/lib/validators/interface.js.map +0 -1
  565. package/lib/visitor.d.ts +0 -35
  566. package/lib/visitor.js +0 -29
  567. package/lib/visitor.js.map +0 -1
package/package.json CHANGED
@@ -1,27 +1,18 @@
1
1
  {
2
2
  "name": "@ts-for-gir/lib",
3
- "version": "4.0.0-beta.25",
3
+ "version": "4.0.0-beta.26",
4
4
  "description": "Typescript .d.ts generator from GIR for gjs",
5
- "module": "lib/index.js",
6
- "main": "lib/index.js",
5
+ "main": "src/index.ts",
6
+ "module": "src/index.ts",
7
7
  "type": "module",
8
8
  "engines": {
9
9
  "node": ">=18"
10
10
  },
11
11
  "exports": {
12
- ".": {
13
- "types": "./lib/index.d.ts",
14
- "import": "./lib/index.js"
15
- }
12
+ ".": "./src/index.ts"
16
13
  },
17
14
  "scripts": {
18
- "build": "yarn lint && yarn build:ts",
19
- "build:ts": "tsc",
20
- "clear": "yarn clear:build",
21
- "clear:build": "rimraf ./lib",
22
- "watch": "yarn build:ts --watch",
23
- "lint": "eslint . --fix",
24
- "update-package-descriptions": "wget https://raw.githubusercontent.com/vala-lang/valadoc-org/master/documentation/packages.xml"
15
+ "check": "tsc --noEmit"
25
16
  },
26
17
  "repository": {
27
18
  "type": "git",
@@ -29,7 +20,7 @@
29
20
  },
30
21
  "author": "Pascal Garber <pascal@artandcode.studio>",
31
22
  "files": [
32
- "lib"
23
+ "src"
33
24
  ],
34
25
  "license": "Apache-2.0",
35
26
  "bugs": {
@@ -51,20 +42,15 @@
51
42
  ],
52
43
  "devDependencies": {
53
44
  "@types/ejs": "^3.1.5",
54
- "@types/eslint": "9.6.1",
55
- "@types/lodash": "^4.17.17",
56
- "@types/node": "^24.0.1",
57
- "@typescript-eslint/eslint-plugin": "^8.34.0",
58
- "@typescript-eslint/parser": "^8.34.0",
59
- "eslint": "^9.29.0",
60
- "eslint-config-prettier": "^10.1.5",
61
- "eslint-plugin-prettier": "^5.4.1",
62
- "prettier": "^3.5.3",
45
+ "@types/lodash": "^4.17.20",
46
+ "@types/node": "^24.2.1",
63
47
  "rimraf": "^6.0.1",
64
- "typescript": "^5.8.3"
48
+ "typescript": "^5.9.2"
65
49
  },
66
50
  "dependencies": {
67
- "@gi.ts/parser": "^4.0.0-beta.25",
51
+ "@gi.ts/parser": "^4.0.0-beta.26",
52
+ "@ts-for-gir/reporter": "^4.0.0-beta.26",
53
+ "@ts-for-gir/templates": "^4.0.0-beta.26",
68
54
  "colorette": "^2.0.20",
69
55
  "ejs": "^3.1.10",
70
56
  "glob": "^11.0.3",
@@ -0,0 +1,154 @@
1
+ import { createRequire } from "node:module";
2
+ import { dirname, join } from "node:path";
3
+ import type { LibraryVersion } from "./library-version.ts";
4
+
5
+ const require = createRequire(import.meta.url);
6
+
7
+ export const COMMENT_REG_EXP = /\/\*.*\*\//g;
8
+ export const PARAM_REG_EXP = /[0-9a-zA-Z_]*:/g;
9
+ export const OPT_PARAM_REG_EXP = /[0-9a-zA-Z_]*\?:/g;
10
+ export const NEW_LINE_REG_EXP = /[\n\r]+/g;
11
+
12
+ /**
13
+ * Package information interface for workspace root package.json
14
+ */
15
+ interface WorkspacePackage {
16
+ name: string;
17
+ version: string;
18
+ description: string;
19
+ license: string;
20
+ homepage: string;
21
+ author: string;
22
+ }
23
+
24
+ /**
25
+ * Resolves the workspace root package.json path
26
+ * Uses require.resolve to find the correct path regardless of execution context
27
+ */
28
+ function resolveWorkspacePackageJson(): string {
29
+ try {
30
+ // Try to resolve from the workspace root by going up from this package
31
+ // @ts-for-gir/lib -> ts-for-gir root
32
+ return require.resolve("../../../package.json");
33
+ } catch {
34
+ // Fallback: try to resolve from current package's package.json location
35
+ try {
36
+ const currentPackageJson = require.resolve("@ts-for-gir/lib/package.json");
37
+ return join(dirname(dirname(currentPackageJson)), "package.json");
38
+ } catch {
39
+ throw new Error("Unable to resolve workspace package.json path");
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Reads and parses the workspace package.json file synchronously
46
+ * Contains version and metadata shared across all workspace packages
47
+ */
48
+ function readWorkspacePackageSync(): WorkspacePackage {
49
+ try {
50
+ const packagePath = resolveWorkspacePackageJson();
51
+ // Use dynamic import to avoid top-level await in constants
52
+ const { readFileSync } = require("node:fs");
53
+ const content = readFileSync(packagePath, "utf-8");
54
+ return JSON.parse(content) as WorkspacePackage;
55
+ } catch (error) {
56
+ const message = error instanceof Error ? error.message : "Unknown error";
57
+ throw new Error(`Failed to read workspace package.json: ${message}`);
58
+ }
59
+ }
60
+
61
+ // Read package information once at module load
62
+ export const PACKAGE = readWorkspacePackageSync();
63
+
64
+ export const APP_NAME = "ts-for-gir";
65
+ export const APP_USAGE = "TypeScript type definition generator for GObject introspection GIR files";
66
+ export const APP_SOURCE = "https://github.com/gjsify/ts-for-gir";
67
+ export const APP_VERSION = PACKAGE.version;
68
+
69
+ export const PACKAGE_DESC = (packageName: string, libraryVersion?: LibraryVersion) => {
70
+ if (libraryVersion) {
71
+ return `GJS TypeScript type definitions for ${packageName}, generated from library version ${libraryVersion.toString()}`;
72
+ }
73
+ return `GJS TypeScript type definitions for ${packageName}`;
74
+ };
75
+ export const PACKAGE_KEYWORDS = (packageName: string) => {
76
+ return `"Gir", "TypeScript", "types", "GObject-Introspection", "GJS", "${packageName}"`;
77
+ };
78
+
79
+ /** The reserved variable names listed here cannot be resolved simply by quotation marks */
80
+ export const RESERVED_QUOTE_VARIABLE_NAMES = ["constructor"];
81
+
82
+ export const RESERVED_VARIABLE_NAMES = [
83
+ "in",
84
+ "function",
85
+ "true",
86
+ "false",
87
+ "break",
88
+ "arguments",
89
+ "eval",
90
+ "default",
91
+ "new",
92
+ "extends",
93
+ "with",
94
+ "var",
95
+ "class",
96
+ "delete",
97
+ "return",
98
+ "constructor",
99
+ "this", // TODO check if this is used as we would use this in javascript, if so, this is only allowed as the first parameter
100
+ ];
101
+
102
+ export const RESERVED_CLASS_NAMES = [
103
+ "break",
104
+ "boolean",
105
+ "case",
106
+ "catch",
107
+ "class",
108
+ "const",
109
+ "continue",
110
+ "debugger",
111
+ "default",
112
+ "delete",
113
+ "do",
114
+ "else",
115
+ "enum",
116
+ "export",
117
+ "extends",
118
+ "false",
119
+ "finally",
120
+ "for",
121
+ "function",
122
+ "if",
123
+ "implements",
124
+ "import",
125
+ "in",
126
+ "instanceof",
127
+ "interface",
128
+ "let",
129
+ "new",
130
+ "number",
131
+ "package",
132
+ "private",
133
+ "protected",
134
+ "public",
135
+ "return",
136
+ "static",
137
+ "super",
138
+ "switch",
139
+ "string",
140
+ "this",
141
+ "throw",
142
+ "true",
143
+ "try",
144
+ "typeof",
145
+ "var",
146
+ "void",
147
+ "while",
148
+ "with",
149
+ "yield",
150
+ ];
151
+
152
+ export const RESERVED_FUNCTION_NAMES = ["false", "true", "break"];
153
+
154
+ export const RESERVED_NAMESPACE_NAMES = {};
@@ -0,0 +1,427 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { type GirInclude, type GirNamespace, type GirRepository, type GirXML, parser } from "@gi.ts/parser";
3
+ import type { GirModule } from "./gir-module.ts";
4
+ import { LibraryVersion } from "./library-version.ts";
5
+ import { Logger } from "./logger.ts";
6
+ import type { Dependency, FileInfo, OptionsGeneration } from "./types/index.ts";
7
+ import { findFilesInDirs } from "./utils/files.ts";
8
+ import { splitModuleName } from "./utils/girs.ts";
9
+ import { sanitizeNamespace, transformImportName, transformModuleNamespaceName } from "./utils/naming.ts";
10
+ import { pascalCase } from "./utils/strings.ts";
11
+
12
+ export class DependencyManager {
13
+ protected log: Logger;
14
+ protected readonly config: OptionsGeneration;
15
+ protected _cache: { [packageName: string]: Dependency } = {};
16
+
17
+ static instances: { [key: string]: DependencyManager } = {};
18
+
19
+ protected constructor(config: OptionsGeneration) {
20
+ this.config = config;
21
+ this.log = new Logger(config.verbose, "DependencyManager");
22
+ }
23
+
24
+ /**
25
+ * Get the DependencyManager singleton instance
26
+ */
27
+ static getInstance(config?: OptionsGeneration): DependencyManager {
28
+ const configKey = config ? JSON.stringify(config) : Object.keys(DependencyManager.instances)[0];
29
+
30
+ if (DependencyManager.instances[configKey]) {
31
+ return DependencyManager.instances[configKey];
32
+ }
33
+
34
+ if (!config) {
35
+ throw new Error("config parameter is required to initialize DependencyManager");
36
+ }
37
+
38
+ const instance = new DependencyManager(config);
39
+ DependencyManager.instances[configKey] = instance;
40
+ return instance;
41
+ }
42
+
43
+ protected parsePackageName(namespaceOrPackageName: string, version?: string) {
44
+ let packageName: string;
45
+ let namespace: string;
46
+ if (version) {
47
+ namespace = namespaceOrPackageName;
48
+ packageName = `${namespace}-${version}`;
49
+ } else {
50
+ packageName = namespaceOrPackageName;
51
+ const { namespace: _namespace, version: _version } = splitModuleName(packageName);
52
+ namespace = _namespace;
53
+ version = _version;
54
+ }
55
+ return { packageName, namespace, version };
56
+ }
57
+
58
+ protected parseArgs(namespaceOrPackageNameOrRepo: string | GirRepository, version?: string, noOverride?: boolean) {
59
+ let packageName: string;
60
+ let namespace: string;
61
+ let repo: GirRepository | null = null;
62
+
63
+ if (typeof namespaceOrPackageNameOrRepo === "string") {
64
+ // Special case for Gjs
65
+ if (!noOverride && namespaceOrPackageNameOrRepo === "Gjs") {
66
+ return { ...this.getGjs(), repo: null };
67
+ }
68
+
69
+ const args = this.parsePackageName(namespaceOrPackageNameOrRepo, version);
70
+ version = args.version;
71
+ packageName = args.packageName;
72
+ namespace = args.namespace;
73
+ } else {
74
+ repo = namespaceOrPackageNameOrRepo;
75
+ const ns = repo.namespace?.[0];
76
+ if (!ns) {
77
+ throw new Error("Invalid GirRepository");
78
+ }
79
+ version = ns.$.version;
80
+ namespace = ns.$.name;
81
+ packageName = `${namespace}-${version}`;
82
+ }
83
+
84
+ return { packageName, namespace, version, repo };
85
+ }
86
+
87
+ /**
88
+ * Get all dependencies in the cache
89
+ * @returns All dependencies in the cache
90
+ */
91
+ all(): Dependency[] {
92
+ return Object.values(this._cache);
93
+ }
94
+
95
+ getAllPackageNames(): string[] {
96
+ return Object.keys(this._cache);
97
+ }
98
+
99
+ /**
100
+ * Get the core dependencies
101
+ * @returns
102
+ */
103
+ async core(): Promise<Dependency[]> {
104
+ return [
105
+ await this.get("GObject", "2.0"),
106
+ await this.get("GLib", "2.0"),
107
+ await this.get("Gio", "2.0"),
108
+ await this.get("cairo", "1.0"),
109
+ ];
110
+ }
111
+
112
+ createImportProperties(namespace: string, packageName: string, version: string) {
113
+ const importPath = this.createImportPath(packageName, namespace, version);
114
+ const importDef = this.createImportDef(namespace, importPath);
115
+ const packageJsonImport = this.createPackageJsonImport(importPath);
116
+ return {
117
+ importPath,
118
+ importDef,
119
+ packageJsonImport,
120
+ };
121
+ }
122
+
123
+ createImportPath(packageName: string, namespace: string, version: string): string {
124
+ if (!this.config.package) {
125
+ return `gi://${namespace}?version=${version}`;
126
+ }
127
+ const importName = transformImportName(packageName);
128
+ const importPath = `${this.config.npmScope}/${importName}`;
129
+ return importPath;
130
+ }
131
+
132
+ createImportDef(namespace: string, importPath: string): string {
133
+ return this.config.noNamespace
134
+ ? `import type * as ${namespace} from '${importPath}'`
135
+ : `import type ${namespace} from '${importPath}';`;
136
+ }
137
+
138
+ createPackageJsonImport(importPath: string): string {
139
+ const depVersion = this.config.workspace ? "workspace:^" : "*";
140
+ return `"${importPath}": "${depVersion}"`;
141
+ }
142
+
143
+ protected async parseGir(path: string) {
144
+ const girXML = parser.parseGir(await readFile(path, "utf8"));
145
+ const repo = girXML.repository[0];
146
+ const ns = repo?.namespace?.[0];
147
+ const version = ns?.$.version;
148
+ return { girXML, repo, ns, version };
149
+ }
150
+
151
+ protected async parseGirAndReturnLatestVersion(filesInfo: FileInfo[]) {
152
+ const libraryVersions: { libraryVersion: LibraryVersion; girXML: GirXML; fileInfo: FileInfo }[] = [];
153
+
154
+ if (filesInfo.length > 1) {
155
+ this.log.warn(`Multiple paths found for ${filesInfo[0].filename}`);
156
+ }
157
+
158
+ for (const fileInfo of filesInfo) {
159
+ if (!fileInfo.exists || !fileInfo.path) {
160
+ continue;
161
+ }
162
+ const { girXML, ns, version } = await this.parseGir(fileInfo.path);
163
+ if (!version || !ns) {
164
+ continue;
165
+ }
166
+
167
+ const libraryVersion = new LibraryVersion(ns?.constant, version);
168
+
169
+ if (filesInfo.length > 1) {
170
+ this.log.muted(` - ${fileInfo.path} (${libraryVersion.toString()})`);
171
+ }
172
+
173
+ libraryVersions.push({
174
+ libraryVersion,
175
+ girXML,
176
+ fileInfo,
177
+ });
178
+ }
179
+ // Compare all library versions and return the latest version
180
+ const latestLibraryVersion = libraryVersions.sort((a, b) => a.libraryVersion.compare(b.libraryVersion))[0];
181
+
182
+ if (!latestLibraryVersion) {
183
+ this.log.warn("No latest library version found", {
184
+ libraryVersions,
185
+ filesInfo,
186
+ });
187
+ return {
188
+ libraryVersion: new LibraryVersion(),
189
+ girXML: null,
190
+ fileInfo: filesInfo[0],
191
+ };
192
+ }
193
+
194
+ if (filesInfo.length > 1) {
195
+ this.log.muted(
196
+ `Use latest version ${latestLibraryVersion.libraryVersion.toString()} from ${latestLibraryVersion.fileInfo.path}`,
197
+ );
198
+ }
199
+
200
+ return latestLibraryVersion;
201
+ }
202
+
203
+ /**
204
+ * Get the dependency object by packageName
205
+ * @param packageName The package name (with version affix) of the dependency
206
+ * @returns The dependency object
207
+ */
208
+ async get(packageName: string): Promise<Dependency>;
209
+ /**
210
+ * Get the dependency object by namespace and version
211
+ * @param namespace The namespace of the dependency
212
+ * @param version The version of the dependency
213
+ * @returns The dependency object
214
+ */
215
+ async get(namespace: string, version: string, noOverride?: boolean): Promise<Dependency>;
216
+ /**
217
+ * Get the dependency object by {@link GirRepository}
218
+ * @param namespace The namespace of the dependency
219
+ * @param version The version of the dependency
220
+ * @returns The dependency object
221
+ */
222
+ async get(repo: GirRepository, version?: string, noOverride?: boolean): Promise<Dependency>;
223
+ async get(
224
+ namespaceOrPackageNameOrRepo: string | GirRepository,
225
+ _version?: string,
226
+ noOverride?: boolean,
227
+ ): Promise<Dependency> {
228
+ const parsedArgs = this.parseArgs(namespaceOrPackageNameOrRepo, _version, noOverride);
229
+ const { packageName, repo } = parsedArgs;
230
+ let { namespace, version } = parsedArgs;
231
+ namespace = sanitizeNamespace(namespace);
232
+
233
+ if (this._cache[packageName]) {
234
+ const dep = this._cache[packageName];
235
+ return dep;
236
+ }
237
+ const filename = `${packageName}.gir`;
238
+ const filesInfo = await findFilesInDirs(this.config.girDirectories, filename);
239
+
240
+ const { libraryVersion, girXML, fileInfo } = await this.parseGirAndReturnLatestVersion(filesInfo);
241
+
242
+ const ns = (girXML?.repository[0]?.namespace?.[0] || repo?.namespace?.[0] || null) as GirNamespace | null;
243
+
244
+ // Use the version from the gir file if it exists
245
+ if (ns?.$.version) {
246
+ version = ns?.$.version;
247
+ }
248
+ if (ns?.$.name) {
249
+ namespace = ns?.$.name;
250
+ }
251
+
252
+ const dependency: Dependency = {
253
+ ...fileInfo,
254
+ namespace,
255
+ packageName,
256
+ importName: transformImportName(packageName),
257
+ importNamespace: transformModuleNamespaceName(packageName),
258
+ version,
259
+ libraryVersion,
260
+ girXML,
261
+ ...this.createImportProperties(namespace, packageName, version),
262
+ };
263
+
264
+ // Special case for Cairo
265
+ // This is a special case for Cairo because Cairo in GJS is provided as a built-in module that doesn't
266
+ // follow the standard GI repository pattern.
267
+ // So we need to special case it and redirect to the 'cairo' package.
268
+ // This changes the typescript import definition to use the internal 'cairo' package instead of the 'cairo-1.0' Gir package.
269
+ if (!noOverride && namespace === "cairo" && version === "1.0") {
270
+ dependency.importDef = this.createImportDef("cairo", "cairo");
271
+ }
272
+
273
+ this._cache[packageName] = dependency;
274
+
275
+ return dependency;
276
+ }
277
+
278
+ /**
279
+ * Get all dependencies with the given namespace
280
+ * @param namespace The namespace of the dependency
281
+ * @returns All dependencies with the given namespace
282
+ */
283
+ list(namespace: string): Dependency[] {
284
+ const packageNames = this.all();
285
+ const candidates = packageNames.filter((dep) => {
286
+ return dep.namespace === namespace && dep.exists;
287
+ });
288
+ return candidates;
289
+ }
290
+
291
+ /**
292
+ * Get girModule for dependency
293
+ * @param girModules
294
+ * @param packageName
295
+ */
296
+ getModule(girModules: GirModule[], dep: Dependency): GirModule | undefined {
297
+ return girModules.find(
298
+ (m) => m.packageName === dep.packageName && m.namespace === dep.namespace && m.version === dep.version,
299
+ );
300
+ }
301
+
302
+ /**
303
+ * Add all dependencies from an array of gir modules
304
+ * @param girModules
305
+ */
306
+ async addAll(girModules: GirModule[]): Promise<Dependency[]> {
307
+ for (const girModule of girModules) {
308
+ await this.get(girModule.namespace, girModule.version || "0.0");
309
+ }
310
+ return this.all();
311
+ }
312
+
313
+ /**
314
+ * Transforms a gir include object array to a dependency object array
315
+ * @param girIncludes - Array of gir includes
316
+ * @returns Array of dependencies
317
+ */
318
+ async fromGirIncludes(girIncludes: GirInclude[]): Promise<Dependency[]> {
319
+ const dependencies: Dependency[] = [];
320
+ for (const i of girIncludes) {
321
+ dependencies.unshift(await this.get(i.$.name, i.$.version || "0.0"));
322
+ }
323
+ return dependencies;
324
+ }
325
+
326
+ /**
327
+ * Check if multiple dependencies with the given namespace exist in the cache
328
+ * @param namespace The namespace of the dependency
329
+ * @returns
330
+ */
331
+ hasConflict(namespace: string): boolean {
332
+ const packageNames = this.getAllPackageNames();
333
+ const candidates = packageNames.filter((packageName) => {
334
+ return packageName.startsWith(`${namespace}-`) && this._cache[packageName].namespace === namespace;
335
+ });
336
+
337
+ return candidates.length > 1;
338
+ }
339
+
340
+ /**
341
+ * get the latest version of the dependency with the given namespace
342
+ * @param namespace The namespace of the dependency
343
+ * @returns The latest version of the dependency
344
+ */
345
+ getLatestVersion(namespace: string): Dependency | undefined {
346
+ const candidates = this.list(namespace);
347
+ const latestVersion = candidates
348
+ .sort((a, b) => {
349
+ return a.version.localeCompare(b.version);
350
+ })
351
+ .pop();
352
+ return latestVersion;
353
+ }
354
+
355
+ /**
356
+ * Check if the given version is the latest version of the dependency
357
+ * @param namespace The namespace of the dependency
358
+ * @param version The version of the dependency
359
+ * @returns
360
+ */
361
+ isLatestVersion(namespace: string, version: string): boolean {
362
+ const latestVersion = this.getLatestVersion(namespace);
363
+ return latestVersion?.version === version;
364
+ }
365
+
366
+ /**
367
+ * Find a dependency by it's namespace from the cache, if multiple versions are found, the latest version is returned
368
+ * @param namespace The namespace of the dependency
369
+ * @returns The dependency object or null if not found
370
+ */
371
+ find(namespace: string): Dependency | null {
372
+ // Special case for Gjs
373
+ if (namespace === "Gjs") {
374
+ return this.getGjs();
375
+ }
376
+
377
+ const packageNames = this.getAllPackageNames();
378
+ const candidates = packageNames.filter((packageName) => {
379
+ return packageName.startsWith(`${namespace}-`) && this._cache[packageName].namespace === namespace;
380
+ });
381
+
382
+ if (candidates.length > 1) {
383
+ this.log.warn(`Found multiple versions of ${namespace}: ${candidates.join(", ")}`);
384
+ }
385
+
386
+ const latestVersion = candidates.sort().pop();
387
+
388
+ if (latestVersion && this._cache[latestVersion]) {
389
+ const dep = this._cache[latestVersion];
390
+ return dep;
391
+ }
392
+
393
+ return null;
394
+ }
395
+
396
+ protected getPseudoPackage(
397
+ packageName: string,
398
+ namespace: string = pascalCase(packageName),
399
+ version = "2.0",
400
+ ): Dependency {
401
+ if (this._cache[`${packageName}_pseudo`]) {
402
+ return this._cache[`${packageName}_pseudo`];
403
+ }
404
+
405
+ const dep: Dependency = {
406
+ namespace,
407
+ exists: true,
408
+ filename: "",
409
+ path: "",
410
+ packageName: packageName,
411
+ importName: transformImportName(packageName),
412
+ importNamespace: transformModuleNamespaceName(packageName),
413
+ version,
414
+ libraryVersion: new LibraryVersion(),
415
+ girXML: null,
416
+ ...this.createImportProperties(packageName, packageName, version),
417
+ };
418
+
419
+ this._cache[`${packageName}_pseudo`] = dep;
420
+
421
+ return dep;
422
+ }
423
+
424
+ getGjs(): Dependency {
425
+ return this.getPseudoPackage("Gjs");
426
+ }
427
+ }
@@ -0,0 +1,7 @@
1
+ import { Formatter } from "./formatter.ts";
2
+
3
+ export class DefaultFormatter extends Formatter {
4
+ format(source: string): Promise<string> {
5
+ return Promise.resolve(source);
6
+ }
7
+ }
@@ -0,0 +1,3 @@
1
+ export abstract class Formatter {
2
+ abstract format(source: string): Promise<string>;
3
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./default.ts";
2
+ export * from "./formatter.ts";
3
+ export * from "./json.ts";
@@ -0,0 +1,7 @@
1
+ import { Formatter } from "./formatter.ts";
2
+
3
+ export class JSONFormatter extends Formatter {
4
+ format(source: string): Promise<string> {
5
+ return Promise.resolve(JSON.stringify(JSON.parse(source), null, 4));
6
+ }
7
+ }