@ts-for-gir/lib 4.0.0-beta.9 → 4.0.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/README.md +13 -1
  2. package/package.json +18 -31
  3. package/src/constants.ts +125 -0
  4. package/src/dependency-manager.ts +463 -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 +81 -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 +51 -0
  17. package/src/generics/st.ts +207 -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 +297 -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 +1566 -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 +214 -0
  40. package/src/gir/property.ts +218 -0
  41. package/src/gir/record.ts +488 -0
  42. package/src/gir/registry.ts +187 -0
  43. package/src/gir/signal.ts +279 -0
  44. package/src/gir-module.ts +719 -0
  45. package/src/gir.ts +879 -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 +50 -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 +88 -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 +100 -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 +598 -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 +71 -0
  132. package/src/utils/gir-defaults.ts +66 -0
  133. package/src/utils/gir-parsing.ts +264 -0
  134. package/src/utils/girs.ts +112 -0
  135. package/src/utils/index.ts +15 -0
  136. package/src/utils/naming.ts +188 -0
  137. package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
  138. package/{lib/utils/objects.js → src/utils/objects.ts} +15 -8
  139. package/src/utils/path.ts +15 -0
  140. package/src/utils/registry.ts +5 -0
  141. package/src/utils/strings.ts +134 -0
  142. package/src/utils/type-resolution.ts +116 -0
  143. package/src/utils/types.ts +285 -0
  144. package/src/validators/class.ts +347 -0
  145. package/src/validators/interface.ts +20 -0
  146. package/src/visitor.ts +58 -0
  147. package/lib/constants.d.ts +0 -25
  148. package/lib/constants.js +0 -93
  149. package/lib/constants.js.map +0 -1
  150. package/lib/dependency-manager.d.ts +0 -150
  151. package/lib/dependency-manager.js +0 -324
  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 -10
  169. package/lib/generators/dts-inline.js +0 -57
  170. package/lib/generators/dts-inline.js.map +0 -1
  171. package/lib/generators/dts-modules.d.ts +0 -10
  172. package/lib/generators/dts-modules.js +0 -98
  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 -258
  184. package/lib/generators/json.js +0 -867
  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 -106
  247. package/lib/gir-module.js +0 -572
  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 -23
  283. package/lib/messages.js +0 -39
  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 -169
  289. package/lib/transformation.js +0 -393
  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 -44
  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 -50
  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/files.d.ts +0 -21
  531. package/lib/utils/files.js +0 -62
  532. package/lib/utils/files.js.map +0 -1
  533. package/lib/utils/girs.d.ts +0 -45
  534. package/lib/utils/girs.js +0 -101
  535. package/lib/utils/girs.js.map +0 -1
  536. package/lib/utils/index.d.ts +0 -6
  537. package/lib/utils/index.js +0 -7
  538. package/lib/utils/index.js.map +0 -1
  539. package/lib/utils/numbers.js +0 -10
  540. package/lib/utils/numbers.js.map +0 -1
  541. package/lib/utils/objects.d.ts +0 -135
  542. package/lib/utils/objects.js.map +0 -1
  543. package/lib/utils/path.d.ts +0 -1
  544. package/lib/utils/path.js +0 -7
  545. package/lib/utils/path.js.map +0 -1
  546. package/lib/utils/strings.d.ts +0 -74
  547. package/lib/utils/strings.js +0 -121
  548. package/lib/utils/strings.js.map +0 -1
  549. package/lib/utils.d.ts +0 -267
  550. package/lib/utils.js +0 -417
  551. package/lib/utils.js.map +0 -1
  552. package/lib/validators/class.d.ts +0 -7
  553. package/lib/validators/class.js +0 -217
  554. package/lib/validators/class.js.map +0 -1
  555. package/lib/validators/interface.d.ts +0 -5
  556. package/lib/validators/interface.js +0 -16
  557. package/lib/validators/interface.js.map +0 -1
  558. package/lib/visitor.d.ts +0 -35
  559. package/lib/visitor.js +0 -29
  560. package/lib/visitor.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import type { PackageSectionParsed } from "./index.ts";
2
+
3
+ export interface PackageData {
4
+ /** Namespace of this package, e.g. Gtk */
5
+ namespace: string;
6
+ /** Version of this package, e.g. 4.0 */
7
+ version: string;
8
+ /** Description of this package */
9
+ description: string;
10
+ /** Gir package name with version string */
11
+ gir?: string;
12
+ /** URL to the homepage of this package */
13
+ home?: string;
14
+ /** URL to a gallery of widgets of this package */
15
+ gallery?: string;
16
+ /** URL to the source code of this package */
17
+ cDocs?: string;
18
+ /** True if this package is deprecated */
19
+ deprecated?: boolean;
20
+ /** Name of the Maintainer of this package */
21
+ maintainers?: string;
22
+ /** The section of this package */
23
+ section?: PackageSectionParsed;
24
+ }
@@ -0,0 +1,9 @@
1
+ import type { PackageDataParsed } from "./index.ts";
2
+
3
+ export interface PackageSectionParsed {
4
+ $: {
5
+ name: string;
6
+ };
7
+ package?: PackageDataParsed[];
8
+ section?: PackageSectionParsed[];
9
+ }
@@ -0,0 +1,5 @@
1
+ import type { GirRepository, GirXML } from "@gi.ts/parser";
2
+
3
+ export interface ParsedGir extends GirXML {
4
+ repository: GirRepository[];
5
+ }
@@ -0,0 +1,7 @@
1
+ import type { PackageSectionParsed } from "./index.ts";
2
+
3
+ export interface ParsedPackageData {
4
+ packages: {
5
+ section: PackageSectionParsed[];
6
+ };
7
+ }
@@ -0,0 +1 @@
1
+ export type PropertyCase = "both" | "camel" | "underscore";
@@ -0,0 +1,4 @@
1
+ export enum ResolveType {
2
+ DEPENDENCE,
3
+ BY_HAND,
4
+ }
@@ -0,0 +1,8 @@
1
+ import type { Data } from "ejs";
2
+ import type { GirModule } from "../gir-module.ts";
3
+ import type { OptionsGeneration } from "./options-generation.ts";
4
+
5
+ export interface TemplateData extends Data, Partial<OptionsGeneration> {
6
+ girModule?: GirModule;
7
+ importName?: string;
8
+ }
@@ -0,0 +1,33 @@
1
+ import type ejs from "ejs";
2
+
3
+ /**
4
+ * Configuration options for template rendering
5
+ */
6
+ export interface TemplateRenderOptions {
7
+ /** EJS rendering options */
8
+ ejsOptions?: Partial<ejs.Options>;
9
+ /** Whether to include append templates */
10
+ includeAppend?: boolean;
11
+ /** Custom template directory override */
12
+ templateDir?: string;
13
+ }
14
+
15
+ /**
16
+ * Result of template loading operation
17
+ */
18
+ export interface TemplateLoadResult {
19
+ /** Main template content */
20
+ prepend: string;
21
+ /** Append template content (if exists) */
22
+ append: string;
23
+ }
24
+
25
+ /**
26
+ * Template file processing result
27
+ */
28
+ export interface TemplateFileResult {
29
+ /** The rendered template content */
30
+ content: string;
31
+ /** The output file path */
32
+ outputPath: string;
33
+ }
@@ -0,0 +1,9 @@
1
+ export type TransformationCase =
2
+ | "original"
3
+ | "lowerCamelCase"
4
+ | "upperCamelCase"
5
+ | "upperCase"
6
+ | "lowerCase"
7
+ | "underscores"
8
+ | "snakeCase"
9
+ | "slugCase";
@@ -0,0 +1,5 @@
1
+ import type { TransformationCase } from "./transformation-case.ts";
2
+
3
+ export interface Transformations {
4
+ [type: string]: TransformationCase;
5
+ }
@@ -6,16 +6,18 @@
6
6
  * Inspirited from https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/comments/tag.ts
7
7
  */
8
8
  export interface TsDocTag {
9
- /**
10
- * The name of this tag.
11
- */
12
- tagName: string;
13
- /**
14
- * The name of the related parameter when this is a ```@param``` tag.
15
- */
16
- paramName: string;
17
- /**
18
- * The actual body text of this tag.
19
- */
20
- text: string;
9
+ /**
10
+ * The name of this tag.
11
+ */
12
+ tagName: string;
13
+
14
+ /**
15
+ * The name of the related parameter when this is a ```@param``` tag.
16
+ */
17
+ paramName: string;
18
+
19
+ /**
20
+ * The actual body text of this tag.
21
+ */
22
+ text: string;
21
23
  }
@@ -0,0 +1,18 @@
1
+ import type { TsDocTag } from "./ts-doc-tag.ts";
2
+
3
+ /**
4
+ * A model that represents a comment.
5
+ *
6
+ * Inspirited from https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/comments/comment.ts
7
+ */
8
+ export interface TsDoc {
9
+ /**
10
+ * The full body text of the comment..
11
+ */
12
+ text: string;
13
+
14
+ /**
15
+ * All associated tags.
16
+ */
17
+ tags: TsDocTag[];
18
+ }
@@ -1,2 +1,2 @@
1
1
  /** All gir elements which can be a typescript `type` */
2
- export type TypeGirAlias = 'alias';
2
+ export type TypeGirAlias = "alias";
@@ -0,0 +1,2 @@
1
+ /** All gir elements which can be a typescript class */
2
+ export type TypeGirClass = "class" | "record" | "interface" | "union";
@@ -0,0 +1,25 @@
1
+ import type {
2
+ TypeGirAlias,
3
+ TypeGirClass,
4
+ TypeGirEnumeration,
5
+ TypeGirEnumerationMember,
6
+ TypeGirFunction,
7
+ TypeGirInterface,
8
+ TypeGirMethod,
9
+ TypeGirParameter,
10
+ TypeGirProperty,
11
+ TypeGirVariable,
12
+ } from "./index.ts";
13
+
14
+ /** Any gir element type */
15
+ export type TypeGirElement =
16
+ | TypeGirClass
17
+ | TypeGirMethod
18
+ | TypeGirVariable
19
+ | TypeGirAlias
20
+ | TypeGirEnumeration
21
+ | TypeGirEnumerationMember
22
+ | TypeGirInterface
23
+ | TypeGirParameter
24
+ | TypeGirProperty
25
+ | TypeGirFunction;
@@ -0,0 +1,2 @@
1
+ /** All gir elements which can be a typescript enumeration */
2
+ export type TypeGirEnumerationMember = "enum-member" | "bitfield-member";
@@ -1,2 +1,2 @@
1
1
  /** All gir elements which can be a typescript enumeration */
2
- export type TypeGirEnumeration = 'enum' | 'bitfield';
2
+ export type TypeGirEnumeration = "enum" | "bitfield";
@@ -0,0 +1,8 @@
1
+ export type TypeGirFunction =
2
+ | "constructor"
3
+ | "function"
4
+ | "method"
5
+ | "static-function"
6
+ | "signal"
7
+ | "virtual"
8
+ | "callback";
@@ -1,2 +1,2 @@
1
1
  /** All gir elements which can be a typescript interface */
2
- export type TypeGirInterface = 'callback';
2
+ export type TypeGirInterface = "callback";
@@ -0,0 +1,2 @@
1
+ /** All gir elements which can be a typescript method (or static function) of a class */
2
+ export type TypeGirMethod = "virtual" | "signal" | "method" | "constructor" | "function" | "static";
@@ -0,0 +1 @@
1
+ export type TypeGirParameter = "callable-param";
@@ -1,2 +1,2 @@
1
1
  /** All gir elements which can be a typescript field / property */
2
- export type TypeGirProperty = 'property' | 'field' | 'constant';
2
+ export type TypeGirProperty = "property" | "field" | "constant";
@@ -0,0 +1 @@
1
+ export type TypeGirVariable = "constant";
@@ -0,0 +1,13 @@
1
+ import type { TypeTsFunction, TypeTsProperty } from "./index.ts";
2
+
3
+ /** Any typescript element type */
4
+ export type TypeTsElement =
5
+ | "class"
6
+ | "interface"
7
+ | "enum"
8
+ | "enum-member"
9
+ | "constant"
10
+ | "event-methods"
11
+ | "type"
12
+ | TypeTsFunction
13
+ | TypeTsProperty;
@@ -1,2 +1,2 @@
1
1
  /** All gir elements which can be a typescript enumeration */
2
- export type TypeTsEnumerationMember = 'enum-member';
2
+ export type TypeTsEnumerationMember = "enum-member";
@@ -0,0 +1 @@
1
+ export type TypeTsFunction = "static-function" | "constructor" | "function" | "method" | "event-methods" | "interface";
@@ -0,0 +1 @@
1
+ export type TypeTsProperty = "static-property" | "property" | "constructor-property";
@@ -0,0 +1,6 @@
1
+ import type { UserConfig } from "./user-config.ts";
2
+ export interface UserConfigLoadResult {
3
+ config: Partial<UserConfig>;
4
+ filepath: string;
5
+ isEmpty?: boolean | undefined;
6
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Types for config file
3
+ */
4
+ export interface UserConfig {
5
+ /** root / working directory of your project */
6
+ root: string;
7
+ /** directory to output to */
8
+ outdir: string | null;
9
+ /** GIR directories */
10
+ girDirectories: string[];
11
+ /** Switch on/off the verbose mode */
12
+ verbose: boolean;
13
+ /** Do not ask for package versions if multiple versions are found */
14
+ ignoreVersionConflicts: boolean;
15
+ /** print the output to console and create no files */
16
+ print: boolean;
17
+ /** GIR modules to load, e.g. 'Gio-2.0'. Accepts multiple modules */
18
+ modules: string[];
19
+ /** modules that should be ignored */
20
+ ignore?: string[];
21
+ /** Do not export all symbols for each module as a namespace */
22
+ noNamespace: boolean;
23
+ /** Do not generate documentation comments */
24
+ noComments: boolean;
25
+ /** Generate promisified functions for async/finish calls */
26
+ promisify: boolean;
27
+ /** Scope of the generated NPM packages */
28
+ npmScope: string;
29
+ /** Uses the workspace protocol for the generated packages which can be used with package managers like Yarn and PNPM */
30
+ workspace: boolean;
31
+ /**
32
+ * Format used for dependency version specifiers in generated package.json files.
33
+ * - `workspace`: emit `workspace:^` (yarn/pnpm; npm only when the ref matches a registered workspace)
34
+ * - `caret`: emit `^<version>` (all managers, falls back to registry for dangling refs)
35
+ * - `any`: emit `*` (all managers, most permissive)
36
+ * - `exact`: emit `<version>` (all managers, no range)
37
+ *
38
+ * If unset, defaults to `workspace` when `workspace: true`, else `caret`.
39
+ */
40
+ depVersionFormat?: "workspace" | "caret" | "any" | "exact";
41
+ /**
42
+ * Only use the version prefix for the ambient module exports.
43
+ * This is useful if, for whatever reason, you want to use different library versions of the same library in your project.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * declare module 'gi://Gtk?version=4.0' {...}
48
+ * declare module 'gi://Gtk?version=3.0' {...}
49
+ * ```
50
+ */
51
+ onlyVersionPrefix: boolean;
52
+ /** Do not prettify the generated types */
53
+ noPrettyPrint: boolean;
54
+ /** Disable GLib.Variant class with string parsing */
55
+ noAdvancedVariants: boolean;
56
+ /**
57
+ * Generate the typescript types with package.json support
58
+ */
59
+ package: boolean;
60
+ /**
61
+ * Enable generation problem reporter and create a detailed report file
62
+ */
63
+ reporter: boolean;
64
+ /**
65
+ * Output file path for the reporter
66
+ */
67
+ reporterOutput: string;
68
+ /** Generate a single unified documentation for all modules instead of separate per-module docs */
69
+ combined?: boolean;
70
+ /** URL template for source links in generated documentation. Supports {path}, {line}, {gitRevision} placeholders */
71
+ sourceLinkTemplate?: string;
72
+ /** Theme for HTML documentation generation (default: "gi-docgen") */
73
+ theme?: string;
74
+ /** Path to a README file to use as the documentation index page (default: "none") */
75
+ readme?: string;
76
+ /** Use TypeDoc merge mode to generate HTML from pre-generated JSON files */
77
+ merge?: boolean;
78
+ /** Directory containing pre-generated TypeDoc JSON files for merge mode (from 'ts-for-gir json') */
79
+ jsonDir?: string;
80
+ /**
81
+ * External-deps mode: emit `import` statements that reference dependency types from
82
+ * already-installed npm packages (e.g. `@girs/glib-2.0`) instead of regenerating them.
83
+ * Designed for project-local GIRs (Vala bridges etc.) where the surrounding `@girs/*`
84
+ * ecosystem is already in node_modules.
85
+ */
86
+ externalDeps: boolean;
87
+ /**
88
+ * Allow `externalDeps` generation to proceed when some transitive dep GIRs are missing.
89
+ * Default is strict: missing deps cause an error to prevent silent type-quality drift
90
+ * between environments with and without system GIR -devel packages installed.
91
+ */
92
+ allowMissingDeps: boolean;
93
+ /**
94
+ * Override the default `<npmScope>/<importName>` mapping for individual namespaces when
95
+ * resolving external dependency imports in `externalDeps` mode.
96
+ *
97
+ * Example: `{ Soup: '@girs/soup-3.0', GLib: '@girs/glib-2.0' }`
98
+ */
99
+ externalPackages?: Record<string, string>;
100
+ }
package/src/util.ts ADDED
@@ -0,0 +1,84 @@
1
+ /**
2
+ * A simple two-key map.
3
+ */
4
+ export class TwoKeyMap<K1, K2, V> {
5
+ private baseMap = new Map<K1, Map<K2, V>>();
6
+
7
+ forEach(op: (v: V) => void) {
8
+ this.baseMap.forEach((map) => {
9
+ map.forEach((v) => {
10
+ op(v);
11
+ });
12
+ });
13
+ }
14
+
15
+ has(key1: K1, key2: K2): boolean {
16
+ const obj = this.baseMap.get(key1);
17
+
18
+ if (!obj) {
19
+ return false;
20
+ }
21
+
22
+ return obj.has(key2);
23
+ }
24
+
25
+ getIfOnly(key1: K1): readonly [K2, V] | undefined {
26
+ const obj = this.baseMap.get(key1);
27
+
28
+ if (!obj) {
29
+ return undefined;
30
+ }
31
+
32
+ if (obj.size === 1) {
33
+ const [k2] = obj.keys();
34
+ const v = obj.get(k2);
35
+
36
+ if (!v) {
37
+ return undefined;
38
+ }
39
+
40
+ return [k2, v] as const;
41
+ }
42
+
43
+ return undefined;
44
+ }
45
+
46
+ get(key1: K1, key2: K2): V | undefined {
47
+ const obj = this.baseMap.get(key1);
48
+
49
+ if (!obj) {
50
+ return undefined;
51
+ }
52
+
53
+ return obj.get(key2);
54
+ }
55
+
56
+ set(key1: K1, key2: K2, value: V): void {
57
+ let obj = this.baseMap.get(key1);
58
+
59
+ if (!obj) {
60
+ obj = new Map<K2, V>();
61
+
62
+ this.baseMap.set(key1, obj);
63
+ }
64
+
65
+ obj.set(key2, value);
66
+ }
67
+ }
68
+
69
+ /**
70
+ * If the predicate returns a value other than undefined,
71
+ * that value is returned. It combines the .find() and
72
+ * .map() APIs for convenience.
73
+ *
74
+ * @param arr
75
+ * @param predicate
76
+ */
77
+ export function findMap<T, K>(arr: T[], predicate: (p: T) => K | undefined): K | undefined {
78
+ for (const a of arr) {
79
+ const val = predicate(a);
80
+ if (val !== undefined) return val;
81
+ }
82
+
83
+ return undefined;
84
+ }
@@ -0,0 +1,122 @@
1
+ import type { IntrospectedClassMember } from "../../gir/introspected-class-member.ts";
2
+ import type { IntrospectedBaseClass, IntrospectedClassFunction } from "../../gir/introspected-classes.ts";
3
+ import type { IntrospectedNamespace } from "../../gir/namespace.ts";
4
+ import { IntrospectedProperty } from "../../gir/property.ts";
5
+ import type { TypeIdentifier } from "../../gir.ts";
6
+ import { ConflictType, TypeConflict } from "../../gir.ts";
7
+
8
+ /**
9
+ * Detects what type of conflict a class member has, if any
10
+ */
11
+ export function detectConflictType<
12
+ T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
13
+ >(
14
+ namespace: IntrospectedNamespace,
15
+ clazz: IntrospectedBaseClass,
16
+ element: T,
17
+ thisType: TypeIdentifier,
18
+ ): ConflictType | undefined {
19
+ // Check field conflicts
20
+ const fieldConflict = checkFieldConflicts(clazz, element);
21
+ if (fieldConflict) {
22
+ return fieldConflict;
23
+ }
24
+
25
+ // Check property conflicts
26
+ const propertyConflict = checkPropertyConflicts(namespace, clazz, element, thisType);
27
+ if (propertyConflict) {
28
+ return propertyConflict;
29
+ }
30
+
31
+ // Check function name conflicts
32
+ return checkFunctionNameConflicts(namespace, clazz, element, thisType);
33
+ }
34
+
35
+ /**
36
+ * Creates a conflict element wrapper for the given element
37
+ */
38
+ export function createConflictElement<
39
+ T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
40
+ >(element: T, conflictType: ConflictType): T | null {
41
+ if (element instanceof IntrospectedProperty) {
42
+ const conflictProperty = element.copy();
43
+ conflictProperty.type = new TypeConflict(conflictProperty.type, conflictType);
44
+ return conflictProperty as T;
45
+ }
46
+
47
+ // For other types, we might need to implement specific conflict handling
48
+ // For now, return the original element
49
+ return element;
50
+ }
51
+
52
+ function checkFieldConflicts<T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty>(
53
+ clazz: IntrospectedBaseClass,
54
+ element: T,
55
+ ): ConflictType | undefined {
56
+ if (!element.name) {
57
+ return undefined;
58
+ }
59
+
60
+ const hasFieldConflict = clazz.fields.some((field) => field.name === element.name);
61
+
62
+ if (hasFieldConflict) {
63
+ if (element instanceof IntrospectedProperty) {
64
+ return ConflictType.PROPERTY_NAME_CONFLICT;
65
+ }
66
+ return ConflictType.FIELD_NAME_CONFLICT;
67
+ }
68
+
69
+ return undefined;
70
+ }
71
+
72
+ function checkPropertyConflicts<T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty>(
73
+ _namespace: IntrospectedNamespace,
74
+ clazz: IntrospectedBaseClass,
75
+ element: T,
76
+ _thisType: TypeIdentifier,
77
+ ): ConflictType | undefined {
78
+ if (!element.name) {
79
+ return undefined;
80
+ }
81
+
82
+ const hasPropertyConflict = clazz.props.some((property) => property.name === element.name && property !== element);
83
+
84
+ if (hasPropertyConflict) {
85
+ // Check if this is an accessor property conflict
86
+ if (isAccessorProperty(element)) {
87
+ return ConflictType.ACCESSOR_PROPERTY_CONFLICT;
88
+ }
89
+ return ConflictType.PROPERTY_ACCESSOR_CONFLICT;
90
+ }
91
+
92
+ return undefined;
93
+ }
94
+
95
+ function checkFunctionNameConflicts<
96
+ T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
97
+ >(
98
+ _namespace: IntrospectedNamespace,
99
+ clazz: IntrospectedBaseClass,
100
+ element: T,
101
+ _thisType: TypeIdentifier,
102
+ ): ConflictType | undefined {
103
+ if (!element.name) {
104
+ return undefined;
105
+ }
106
+
107
+ const hasFunctionConflict = clazz.members.some((member) => member.name === element.name && member !== element);
108
+
109
+ if (hasFunctionConflict) {
110
+ return ConflictType.FUNCTION_NAME_CONFLICT;
111
+ }
112
+
113
+ return undefined;
114
+ }
115
+
116
+ function isAccessorProperty(
117
+ element: IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
118
+ ): boolean {
119
+ // Check if the element is an accessor property
120
+ // This is a simplified check - in practice, you might need more sophisticated logic
121
+ return element instanceof IntrospectedProperty && element.readable && element.writable;
122
+ }