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

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 +118 -0
  4. package/src/dependency-manager.ts +445 -0
  5. package/src/formatters/default.ts +7 -0
  6. package/src/formatters/formatter.ts +3 -0
  7. package/src/formatters/index.ts +3 -0
  8. package/src/formatters/json.ts +7 -0
  9. package/src/generators/generator.ts +65 -0
  10. package/src/generators/index.ts +2 -0
  11. package/src/generics/clutter.ts +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 +296 -0
  30. package/src/gir/generics.ts +66 -0
  31. package/src/gir/gir-complex-record.ts +7 -0
  32. package/src/gir/index.ts +25 -0
  33. package/src/gir/introspected-base.ts +104 -0
  34. package/src/gir/introspected-class-member.ts +15 -0
  35. package/src/gir/introspected-classes.ts +1512 -0
  36. package/src/gir/introspected-namespace-member.ts +24 -0
  37. package/src/gir/namespace.ts +76 -0
  38. package/src/gir/parameter.ts +199 -0
  39. package/src/gir/promisify.ts +209 -0
  40. package/src/gir/property.ts +203 -0
  41. package/src/gir/record.ts +488 -0
  42. package/src/gir/registry.ts +183 -0
  43. package/src/gir/signal.ts +278 -0
  44. package/src/gir-module.ts +719 -0
  45. package/src/gir.ts +870 -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 +65 -0
  90. package/src/types/options-load.ts +6 -0
  91. package/src/types/options-transform.ts +5 -0
  92. package/src/types/output-format.ts +1 -0
  93. package/src/types/package-data-parsed.ts +28 -0
  94. package/src/types/package-data.ts +24 -0
  95. package/src/types/package-section-parsed.ts +9 -0
  96. package/src/types/parsed-gir.ts +5 -0
  97. package/src/types/parsed-package-data.ts +7 -0
  98. package/src/types/property-case.ts +1 -0
  99. package/src/types/resolve-type.ts +4 -0
  100. package/src/types/template-data.ts +8 -0
  101. package/src/types/template-options.ts +33 -0
  102. package/src/types/transformation-case.ts +9 -0
  103. package/src/types/transformations.ts +5 -0
  104. package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +14 -12
  105. package/src/types/ts-doc.ts +18 -0
  106. package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
  107. package/src/types/type-gir-class.ts +2 -0
  108. package/src/types/type-gir-element.ts +25 -0
  109. package/src/types/type-gir-enumeration-member.ts +2 -0
  110. package/{lib/types/type-gir-enumeration.d.ts → src/types/type-gir-enumeration.ts} +1 -1
  111. package/src/types/type-gir-function.ts +8 -0
  112. package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
  113. package/src/types/type-gir-method.ts +2 -0
  114. package/src/types/type-gir-parameter.ts +1 -0
  115. package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
  116. package/src/types/type-gir-variable.ts +1 -0
  117. package/src/types/type-ts-element.ts +13 -0
  118. package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
  119. package/src/types/type-ts-function.ts +1 -0
  120. package/src/types/type-ts-property.ts +1 -0
  121. package/src/types/user-config-load-result.ts +6 -0
  122. package/src/types/user-config.ts +70 -0
  123. package/src/util.ts +84 -0
  124. package/src/utils/conflicts/conflict-resolver.ts +122 -0
  125. package/src/utils/conflicts/function-conflict-detector.ts +139 -0
  126. package/src/utils/conflicts/index.ts +2 -0
  127. package/src/utils/conflicts.ts +593 -0
  128. package/src/utils/documentation.ts +471 -0
  129. package/src/utils/files.ts +71 -0
  130. package/src/utils/function-type-guards.ts +61 -0
  131. package/src/utils/generation.ts +69 -0
  132. package/src/utils/gir-parsing.ts +264 -0
  133. package/src/utils/girs.ts +112 -0
  134. package/src/utils/index.ts +14 -0
  135. package/src/utils/naming.ts +188 -0
  136. package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
  137. package/{lib/utils/objects.js → src/utils/objects.ts} +15 -8
  138. package/src/utils/path.ts +7 -0
  139. package/src/utils/registry.ts +5 -0
  140. package/src/utils/strings.ts +134 -0
  141. package/src/utils/type-resolution.ts +116 -0
  142. package/src/utils/types.ts +276 -0
  143. package/src/validators/class.ts +335 -0
  144. package/src/validators/function-parameters.ts +52 -0
  145. package/src/validators/interface.ts +20 -0
  146. package/src/visitor.ts +58 -0
  147. package/lib/constants.d.ts +0 -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,89 @@
1
+ import type { FormatGenerator } from "../generators/generator.ts";
2
+ import type { GirBitfieldElement, GirEnumElement } from "../index.ts";
3
+ import type { OptionsLoad } from "../types/index.ts";
4
+
5
+ import { parseDoc, parseMetadata } from "../utils/gir-parsing.ts";
6
+ import { sanitizeMemberName } from "../utils/naming.ts";
7
+ import { IntrospectedEnum } from "./enum.ts";
8
+ import { GirEnumMember } from "./enum-member.ts";
9
+ import { IntrospectedStaticClassFunction } from "./introspected-classes.ts";
10
+ import type { IntrospectedNamespace } from "./namespace.ts";
11
+ import type { IntrospectedRecord } from "./record.ts";
12
+
13
+ // TODO: Move to utils
14
+ function isEnumElement(e: unknown): e is GirEnumElement {
15
+ return typeof e === "object" && e != null && "function" in e;
16
+ }
17
+
18
+ export class IntrospectedError extends IntrospectedEnum {
19
+ functions: Map<string, IntrospectedStaticClassFunction> = new Map();
20
+
21
+ asString<T extends FormatGenerator<unknown>>(generator: T): ReturnType<T["generateError"]> {
22
+ return generator.generateError(this) as ReturnType<T["generateError"]>;
23
+ }
24
+
25
+ copy({ members }: { parent?: undefined; members?: Map<string, GirEnumMember> } = {}): IntrospectedEnum {
26
+ const { namespace, name, flags } = this;
27
+
28
+ const en = new IntrospectedError(name, namespace);
29
+
30
+ for (const [key, member] of (members ?? this.members).entries()) {
31
+ en.members.set(key, member.copy());
32
+ }
33
+
34
+ for (const [key, func] of this.functions.entries()) {
35
+ en.functions.set(key, func.copy({ parent: en }));
36
+ }
37
+
38
+ en.flags = flags;
39
+
40
+ return en._copyBaseProperties(this);
41
+ }
42
+
43
+ asClass(): IntrospectedRecord {
44
+ const clazz = super.asClass();
45
+ clazz.overrideGType(this.namespace.namespace === "GLib" ? "Error" : "GLib.Error");
46
+ return clazz;
47
+ }
48
+
49
+ static fromXML(
50
+ element: GirEnumElement | GirBitfieldElement,
51
+ ns: IntrospectedNamespace,
52
+ options: OptionsLoad,
53
+ ): IntrospectedEnum {
54
+ const err = new IntrospectedError(sanitizeMemberName(element.$.name), ns);
55
+
56
+ if (element.$["glib:type-name"]) {
57
+ err.resolve_names.push(element.$["glib:type-name"]);
58
+
59
+ ns.registerResolveName(element.$["glib:type-name"], ns.namespace, err.name);
60
+ }
61
+
62
+ if (element.$["c:type"]) {
63
+ err.resolve_names.push(element.$["c:type"]);
64
+
65
+ ns.registerResolveName(element.$["c:type"], ns.namespace, err.name);
66
+ }
67
+
68
+ if (options.loadDocs) {
69
+ err.doc = parseDoc(element);
70
+ err.metadata = parseMetadata(element);
71
+ }
72
+
73
+ if (element.member) {
74
+ element.member.forEach((m) => {
75
+ const member = GirEnumMember.fromXML(m, err, options);
76
+ err.members.set(member.name, member);
77
+ });
78
+ }
79
+
80
+ if (isEnumElement(element) && element.function) {
81
+ element.function.forEach((f) => {
82
+ const func = IntrospectedStaticClassFunction.fromXML(f, err, options);
83
+ err.functions.set(func.name, func);
84
+ });
85
+ }
86
+
87
+ return err;
88
+ }
89
+ }
@@ -0,0 +1,296 @@
1
+ import { GirDirection } from "@gi.ts/parser";
2
+ import type { FormatGenerator } from "../generators/generator.ts";
3
+ import {
4
+ ArrayType,
5
+ ClosureType,
6
+ type Generic,
7
+ NullableType,
8
+ type TypeExpression,
9
+ TypeIdentifier,
10
+ UnknownType,
11
+ VoidType,
12
+ } from "../gir.ts";
13
+
14
+ import type { GirFunctionElement, GirMethodElement, GirModule } from "../index.ts";
15
+ import type { IntrospectedOptions, OptionsLoad } from "../types/index.ts";
16
+ import { getType, hasShadow, parseDoc, parseMetadata } from "../utils/gir-parsing.ts";
17
+ import { isIntrospectable } from "../utils/girs.ts";
18
+ import { sanitizeIdentifierName } from "../utils/naming.ts";
19
+ import type { GirVisitor } from "../visitor.ts";
20
+ import { IntrospectedNamespaceMember } from "./introspected-namespace-member.ts";
21
+ import type { IntrospectedNamespace } from "./namespace.ts";
22
+
23
+ import { IntrospectedFunctionParameter } from "./parameter.ts";
24
+
25
+ export class IntrospectedFunction extends IntrospectedNamespaceMember {
26
+ readonly parameters: IntrospectedFunctionParameter[];
27
+ readonly output_parameters: IntrospectedFunctionParameter[];
28
+ readonly return_type: TypeExpression;
29
+ readonly raw_name: string;
30
+
31
+ generics: Generic[] = [];
32
+ returnTypeDoc: string | null;
33
+
34
+ constructor({
35
+ name,
36
+ raw_name,
37
+ return_type = UnknownType,
38
+ parameters = [],
39
+ output_parameters = [],
40
+ namespace,
41
+ ...args
42
+ }: IntrospectedOptions<{
43
+ name: string;
44
+ raw_name: string;
45
+ return_type?: TypeExpression;
46
+ parameters?: IntrospectedFunctionParameter[];
47
+ output_parameters?: IntrospectedFunctionParameter[];
48
+ namespace: GirModule;
49
+ }>) {
50
+ super(name, namespace, { ...args });
51
+
52
+ this.raw_name = raw_name;
53
+ this.parameters = parameters.map((p) => p.copy({ parent: this }));
54
+ this.output_parameters = output_parameters.map((p) => p.copy({ parent: this }));
55
+ this.return_type = return_type;
56
+ this.returnTypeDoc = null;
57
+ }
58
+
59
+ copy(
60
+ {
61
+ parent = this.parent,
62
+ outputParameters,
63
+ parameters,
64
+ return_type,
65
+ }: {
66
+ parent?: GirModule;
67
+ parameters?: IntrospectedFunctionParameter[];
68
+ outputParameters?: IntrospectedFunctionParameter[];
69
+ return_type?: TypeExpression;
70
+ } = { parent: this.parent },
71
+ ): IntrospectedFunction {
72
+ const fn = new IntrospectedFunction({
73
+ namespace: parent ?? this.namespace,
74
+ raw_name: this.raw_name,
75
+ name: this.name,
76
+ return_type: return_type ?? this.return_type,
77
+ output_parameters: outputParameters ?? this.output_parameters,
78
+ parameters: parameters ?? this.parameters,
79
+ });
80
+
81
+ fn.returnTypeDoc = this.returnTypeDoc;
82
+ fn.generics = [...this.generics];
83
+
84
+ return fn._copyBaseProperties(this);
85
+ }
86
+
87
+ accept(visitor: GirVisitor): IntrospectedFunction {
88
+ const node = this.copy({
89
+ parent: this.parent,
90
+ parameters: this.parameters.map((p) => {
91
+ return p.accept(visitor);
92
+ }),
93
+ outputParameters: this.output_parameters.map((p) => {
94
+ return p.accept(visitor);
95
+ }),
96
+ return_type: visitor.visitType?.(this.return_type),
97
+ });
98
+
99
+ return visitor.visitFunction?.(node) ?? node;
100
+ }
101
+
102
+ static fromXML(
103
+ element: GirFunctionElement | GirMethodElement,
104
+ ns: IntrospectedNamespace,
105
+ options: OptionsLoad,
106
+ ): IntrospectedFunction {
107
+ let raw_name = element.$.name;
108
+ let name = sanitizeIdentifierName(null, raw_name);
109
+
110
+ if (hasShadow(element)) {
111
+ raw_name = element.$.shadows;
112
+ name = sanitizeIdentifierName(null, element.$.shadows);
113
+ }
114
+
115
+ const return_type = IntrospectedFunction.parseReturnType(element, ns);
116
+ const { input_parameters, output_parameters, returnTypeDoc } = IntrospectedFunction.parseParameters(
117
+ element,
118
+ ns,
119
+ return_type,
120
+ options,
121
+ );
122
+
123
+ const fn = new IntrospectedFunction({
124
+ name,
125
+ raw_name,
126
+ namespace: ns,
127
+ parameters: input_parameters,
128
+ output_parameters,
129
+ return_type,
130
+ isIntrospectable: isIntrospectable(element),
131
+ });
132
+
133
+ fn.returnTypeDoc = returnTypeDoc;
134
+
135
+ if (options.loadDocs) {
136
+ fn.doc = parseDoc(element);
137
+ fn.metadata = parseMetadata(element);
138
+ }
139
+
140
+ return fn;
141
+ }
142
+
143
+ private static parseReturnType(
144
+ element: GirFunctionElement | GirMethodElement,
145
+ ns: IntrospectedNamespace,
146
+ ): TypeExpression {
147
+ if ("return-value" in element && element["return-value"] && element["return-value"].length > 0) {
148
+ const value = element["return-value"][0];
149
+ return getType(ns, value);
150
+ }
151
+ return VoidType;
152
+ }
153
+
154
+ private static parseParameters(
155
+ element: GirFunctionElement | GirMethodElement,
156
+ ns: IntrospectedNamespace,
157
+ return_type: TypeExpression,
158
+ options: OptionsLoad,
159
+ ): {
160
+ input_parameters: IntrospectedFunctionParameter[];
161
+ output_parameters: IntrospectedFunctionParameter[];
162
+ returnTypeDoc: string | null;
163
+ } {
164
+ let returnTypeDoc: string | null = null;
165
+
166
+ if ("return-value" in element && element["return-value"] && element["return-value"].length > 0) {
167
+ const value = element["return-value"][0];
168
+ returnTypeDoc = parseDoc(value);
169
+ }
170
+
171
+ if (!element.parameters) {
172
+ return { input_parameters: [], output_parameters: [], returnTypeDoc };
173
+ }
174
+
175
+ const param = element.parameters[0].parameter;
176
+ if (!param) {
177
+ return { input_parameters: [], output_parameters: [], returnTypeDoc };
178
+ }
179
+
180
+ // Create a temporary function for parameter processing
181
+ const tempFn = new IntrospectedFunction({
182
+ name: "temp",
183
+ raw_name: "temp",
184
+ namespace: ns,
185
+ isIntrospectable: isIntrospectable(element),
186
+ });
187
+
188
+ const inputs = param.filter((p): p is typeof p & { $: { name: string } } => !!p.$.name);
189
+ let parameters = inputs.map((i) => IntrospectedFunctionParameter.fromXML(i, tempFn, options));
190
+
191
+ const unwrapped = return_type.unwrap();
192
+ const length_params = unwrapped instanceof ArrayType && unwrapped.length != null ? [unwrapped.length] : [];
193
+ const user_data_params: number[] = [];
194
+
195
+ parameters = IntrospectedFunction.processParameterTypes(parameters, length_params, user_data_params);
196
+ parameters = IntrospectedFunction.filterParameters(parameters, length_params, user_data_params);
197
+ parameters = IntrospectedFunction.processOptionalParameters(parameters);
198
+
199
+ const input_parameters = parameters.filter(
200
+ (param) => param.direction === GirDirection.In || param.direction === GirDirection.Inout,
201
+ );
202
+ const output_parameters = parameters
203
+ .filter(
204
+ (param) => param.direction && (param.direction === GirDirection.Out || param.direction === GirDirection.Inout),
205
+ )
206
+ .map((parameter) => parameter.copy({ isOptional: false }));
207
+
208
+ return { input_parameters, output_parameters, returnTypeDoc };
209
+ }
210
+
211
+ private static processParameterTypes(
212
+ parameters: IntrospectedFunctionParameter[],
213
+ length_params: number[],
214
+ user_data_params: number[],
215
+ ): IntrospectedFunctionParameter[] {
216
+ return parameters.map((p) => {
217
+ const unwrapped_type = p.type.unwrap();
218
+
219
+ if (unwrapped_type instanceof ArrayType && unwrapped_type.length != null) {
220
+ length_params.push(unwrapped_type.length);
221
+ }
222
+
223
+ if (unwrapped_type instanceof ClosureType && unwrapped_type.user_data != null) {
224
+ user_data_params.push(unwrapped_type.user_data);
225
+ }
226
+
227
+ return p;
228
+ });
229
+ }
230
+
231
+ private static filterParameters(
232
+ parameters: IntrospectedFunctionParameter[],
233
+ length_params: number[],
234
+ user_data_params: number[],
235
+ ): IntrospectedFunctionParameter[] {
236
+ return parameters
237
+ .filter((_, i) => !length_params.includes(i) && !user_data_params.includes(i))
238
+ .filter((v) => !(v.type instanceof TypeIdentifier && v.type.is("GLib", "DestroyNotify")));
239
+ }
240
+
241
+ private static processOptionalParameters(
242
+ parameters: IntrospectedFunctionParameter[],
243
+ ): IntrospectedFunctionParameter[] {
244
+ return parameters
245
+ .reverse()
246
+ .reduce(
247
+ ({ allowOptions, params }, p) => {
248
+ const { type, isOptional } = p;
249
+
250
+ if (allowOptions) {
251
+ if (type instanceof NullableType) {
252
+ params.push(p.copy({ isOptional: true }));
253
+ } else if (!isOptional) {
254
+ params.push(p);
255
+ return { allowOptions: false, params };
256
+ } else {
257
+ params.push(p);
258
+ }
259
+ } else {
260
+ if (isOptional) {
261
+ params.push(p.copy({ type: new NullableType(type), isOptional: false }));
262
+ } else {
263
+ params.push(p);
264
+ }
265
+ }
266
+
267
+ return { allowOptions, params };
268
+ },
269
+ {
270
+ allowOptions: true,
271
+ params: [] as IntrospectedFunctionParameter[],
272
+ },
273
+ )
274
+ .params.reverse()
275
+ .filter((p): p is IntrospectedFunctionParameter => p != null);
276
+ }
277
+
278
+ return() {
279
+ return this.return_type;
280
+ }
281
+
282
+ getCallbackParameters() {
283
+ return {
284
+ name: this.name,
285
+ raw_name: this.raw_name,
286
+ namespace: this.namespace,
287
+ output_parameters: this.output_parameters,
288
+ parameters: this.parameters,
289
+ return_type: this.return_type,
290
+ };
291
+ }
292
+
293
+ asString<T extends FormatGenerator<unknown>>(generator: T): ReturnType<T["generateFunction"]> {
294
+ return generator.generateFunction(this) as ReturnType<T["generateFunction"]>;
295
+ }
296
+ }
@@ -0,0 +1,66 @@
1
+ const GenericNames = [
2
+ "A",
3
+ "B",
4
+ "C",
5
+ "D",
6
+ "E",
7
+ "F",
8
+ "G",
9
+ "H",
10
+ "I",
11
+ "J",
12
+ "K",
13
+ "L",
14
+ "M",
15
+ "N",
16
+ "O",
17
+ "P",
18
+ "Q",
19
+ "R",
20
+ "S",
21
+ "U",
22
+ "V",
23
+ "W",
24
+ "X",
25
+ "Y",
26
+ "Z",
27
+ ];
28
+
29
+ export function* getGenericNames(start: string = "A") {
30
+ let names = GenericNames.map((s) => `${s}`);
31
+ const startIteration = Number.parseInt(start.slice(1) || "0", 10);
32
+
33
+ let i = startIteration;
34
+
35
+ names = names.map((s) => (i === 0 ? s : `${s}${i}`));
36
+
37
+ const StartLetter = start[0];
38
+ const position = GenericNames.indexOf(StartLetter);
39
+
40
+ while (true) {
41
+ for (const name of names) {
42
+ if (i === startIteration && GenericNames.indexOf(name) >= position) {
43
+ yield name;
44
+ }
45
+ }
46
+
47
+ names = names.map((s) => `${s}${i}`);
48
+
49
+ i++;
50
+ }
51
+
52
+ // This will always be a string return.
53
+ return "ThisShouldNeverHappen";
54
+ }
55
+
56
+ export function createGenericNameGenerator(): () => string {
57
+ const genericNames = getGenericNames();
58
+
59
+ return () => genericNames.next().value;
60
+ }
61
+
62
+ export function createGenericNameGeneratorAt(start: string): () => string {
63
+ const genericNames = getGenericNames(start);
64
+
65
+ return () => genericNames.next().value;
66
+ }
@@ -0,0 +1,7 @@
1
+ import { IntrospectedRecord } from "./record.ts";
2
+
3
+ export class GirComplexRecord extends IntrospectedRecord {
4
+ isSimple() {
5
+ return false;
6
+ }
7
+ }
@@ -0,0 +1,25 @@
1
+ export * from "./alias.ts";
2
+ export * from "./callback.ts";
3
+
4
+ export * from "./const.ts";
5
+ export * from "./constructor.ts";
6
+ export * from "./data.ts";
7
+ export * from "./direct-allocation-constructor.ts";
8
+ export * from "./enum.ts";
9
+ export * from "./enum-member.ts";
10
+ export * from "./error.ts";
11
+ export * from "./function.ts";
12
+ export * from "./generics.ts";
13
+ export * from "./gir-complex-record.ts";
14
+ export * from "./introspected-base.ts";
15
+ export * from "./introspected-class-member.ts";
16
+ export * from "./introspected-classes.ts";
17
+ export * from "./introspected-namespace-member.ts";
18
+ export * from "./namespace.ts";
19
+
20
+ export * from "./parameter.ts";
21
+ export * from "./promisify.ts";
22
+ export * from "./property.ts";
23
+ export * from "./record.ts";
24
+ export * from "./registry.ts";
25
+ export * from "./signal.ts";
@@ -0,0 +1,104 @@
1
+ import type { FormatGenerator } from "../generators/index.ts";
2
+ import type {
3
+ AnyIntrospectedType,
4
+ GirMemberElement,
5
+ IntrospectedBaseOptions,
6
+ IntrospectedMetadata,
7
+ OptionsLoad,
8
+ } from "../types/index.ts";
9
+ import type { GirVisitor } from "../visitor.ts";
10
+ import type { IntrospectedNamespace } from "./namespace.ts";
11
+
12
+ export abstract class IntrospectedBase<Parent extends IntrospectedNamespace | AnyIntrospectedType | null> {
13
+ name: string;
14
+ doc?: string | null;
15
+ metadata?: IntrospectedMetadata;
16
+ deprecated?: boolean;
17
+ resolve_names: string[] = [];
18
+ private _emit = true;
19
+ private _commentWarning?: string;
20
+ private _isPrivate: boolean;
21
+ private _isIntrospectable: boolean;
22
+ private _parent: Parent;
23
+
24
+ constructor(name: string, parent: Parent, options: IntrospectedBaseOptions = {}) {
25
+ this.name = name;
26
+ this._parent = parent;
27
+ this._isPrivate = options.isPrivate ?? false;
28
+ this._isIntrospectable = options.isIntrospectable ?? true;
29
+ this.doc = options.doc ?? null;
30
+ }
31
+
32
+ get parent(): Parent {
33
+ return this._parent;
34
+ }
35
+
36
+ /**
37
+ * Set a warning to be emitted with this node. Often used to note type
38
+ * conflicts or potential differences from GJS code.
39
+ *
40
+ * @param warning
41
+ */
42
+ setWarning(warning: string) {
43
+ this._commentWarning = warning;
44
+ }
45
+
46
+ getWarning(): string | undefined {
47
+ return this._commentWarning;
48
+ }
49
+
50
+ abstract get namespace(): IntrospectedNamespace;
51
+
52
+ get isIntrospectable() {
53
+ return this._isIntrospectable;
54
+ }
55
+
56
+ get isPrivate() {
57
+ return this._isPrivate;
58
+ }
59
+
60
+ setPrivate(priv: boolean) {
61
+ this._isPrivate = priv;
62
+ }
63
+
64
+ noEmit() {
65
+ this._emit = false;
66
+ }
67
+
68
+ get emit() {
69
+ return this._emit;
70
+ }
71
+
72
+ protected _copyBaseProperties(from: this): this {
73
+ this.doc = from.doc;
74
+ this.metadata = from.metadata;
75
+ this.deprecated = from.deprecated;
76
+ this.resolve_names = from.resolve_names;
77
+
78
+ // Whether this node should be emitted.
79
+ this._emit = from._emit;
80
+ this._isPrivate = from._isPrivate;
81
+ this._isIntrospectable = from.isIntrospectable;
82
+
83
+ return this;
84
+ }
85
+
86
+ abstract copy(options?: { parent?: Parent }): IntrospectedBase<Parent>;
87
+
88
+ abstract accept(visitor: GirVisitor): IntrospectedBase<Parent>;
89
+
90
+ static fromXML(
91
+ _element: GirMemberElement,
92
+
93
+ _parent: IntrospectedNamespace | AnyIntrospectedType,
94
+
95
+ _options: OptionsLoad,
96
+ ): AnyIntrospectedType | null {
97
+ throw new Error("GirBase cannot be instantiated");
98
+ }
99
+
100
+ abstract asString<T extends FormatGenerator<unknown>>(
101
+ generator: T,
102
+ ): (T extends FormatGenerator<infer R> ? R : never) | null;
103
+ abstract asString<T extends FormatGenerator<unknown>>(generator: T): unknown;
104
+ }
@@ -0,0 +1,15 @@
1
+ import { IntrospectedBase } from "./introspected-base.ts";
2
+
3
+ import type { IntrospectedBaseClass } from "./introspected-classes.ts";
4
+
5
+ export abstract class IntrospectedClassMember<
6
+ Parent extends IntrospectedBaseClass | null = IntrospectedBaseClass | null,
7
+ > extends IntrospectedBase<Parent> {
8
+ get namespace() {
9
+ if (!this.parent) {
10
+ throw new Error(`Failed to get namespace for ${this.name}`);
11
+ }
12
+
13
+ return this.parent.namespace;
14
+ }
15
+ }