@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,335 @@
1
+ import { IntrospectedDirectAllocationConstructor } from "../gir/direct-allocation-constructor.ts";
2
+ import { IntrospectedError } from "../gir/error.ts";
3
+ import type { IntrospectedBaseClass, IntrospectedClass, IntrospectedInterface } from "../gir/introspected-classes.ts";
4
+ import { IntrospectedClassFunction, IntrospectedStaticClassFunction } from "../gir/introspected-classes.ts";
5
+ import { IntrospectedRecord } from "../gir/record.ts";
6
+ import { AnyType, NativeType, TypeIdentifier } from "../gir.ts";
7
+ import { resolveTypeIdentifier } from "../utils/type-resolution.ts";
8
+ import { GirVisitor } from "../visitor.ts";
9
+
10
+ // These methods are often marked introspectable="0" in GIR because the C signatures
11
+ // involve gpointer types, but GJS exposes them at runtime regardless. Their signatures are
12
+ // always trivial (no params, return self or void) so they are safe to keep.
13
+ // Only exempt on records — classes have deep inheritance hierarchies where return types
14
+ // at different levels conflict (e.g. GObject.Object.ref() vs Gtk.Widget.ref()).
15
+ const INTROSPECTABLE_EXEMPT_METHODS = new Set(["ref", "unref", "copy", "free", "destroy"]);
16
+
17
+ const filterIntrospectableClassMembers = <T extends IntrospectedBaseClass>(node: T): T => {
18
+ node.fields = node.fields.filter((field) => field.isIntrospectable);
19
+ node.props = node.props.filter((prop) => prop.isIntrospectable);
20
+ node.callbacks = node.callbacks.filter((prop) => prop.isIntrospectable);
21
+ node.constructors = node.constructors.filter((prop) => prop.isIntrospectable);
22
+
23
+ const isRecord = node instanceof IntrospectedRecord;
24
+ node.members = node.members.filter(
25
+ (member) => member.isIntrospectable || (isRecord && INTROSPECTABLE_EXEMPT_METHODS.has(member.name)),
26
+ );
27
+
28
+ return node;
29
+ };
30
+
31
+ const PROTECTED_FIELD_NAMES = ["parent_instance", "parent", "parent_class", "object_class"];
32
+
33
+ const filterProtectedFields = <T extends IntrospectedBaseClass>(node: T): T => {
34
+ const set = new Set(PROTECTED_FIELD_NAMES);
35
+
36
+ node.fields = node.fields.filter((f) => {
37
+ return !set.has(f.name);
38
+ });
39
+
40
+ return node;
41
+ };
42
+
43
+ /**
44
+ * Filters fields, properties, and members to ensure they are not named
45
+ * after reserved object keys (prototype, constructor)
46
+ */
47
+ const filterReservedProperties = <T extends IntrospectedBaseClass>(node: T): T => {
48
+ const set = new Set(["prototype", "constructor"]);
49
+
50
+ node.fields = node.fields.filter((f) => {
51
+ return !set.has(f.name);
52
+ });
53
+
54
+ node.props = node.props.filter((p) => {
55
+ return !set.has(p.name);
56
+ });
57
+
58
+ node.members = node.members.filter((m) => {
59
+ return !set.has(m.name);
60
+ });
61
+
62
+ return node;
63
+ };
64
+
65
+ const filterConflictingNamedClassMembers = <T extends IntrospectedBaseClass>(node: T): T => {
66
+ // Props shadow members
67
+ node.members = node.members.filter((m) => {
68
+ return !node.props.some((prop) => prop.name === m.name && !(m instanceof IntrospectedStaticClassFunction));
69
+ });
70
+
71
+ // Props and members shadow fields
72
+ node.fields = node.fields.filter(
73
+ (f) =>
74
+ !node.members.some((n) => n.name === f.name && !(n instanceof IntrospectedStaticClassFunction)) &&
75
+ !node.props.some((n) => n.name === f.name),
76
+ );
77
+
78
+ return node;
79
+ };
80
+
81
+ /**
82
+ * Subtypes of ParamSpec are not supported (e.g. a subtype of ParamSpecString).
83
+ *
84
+ * First, we transform the node to use ParamSpec as a parent and then flag it
85
+ * to not emit.
86
+ *
87
+ * If a generator doesn't follow the emit() standard, the parent type will at least
88
+ * be valid.
89
+ *
90
+ * @param node
91
+ * @returns
92
+ */
93
+ const fixParamSpecSubtypes = <T extends IntrospectedBaseClass>(node: T): T => {
94
+ if (node.superType?.namespace === "GObject" && node.superType.name.startsWith("ParamSpec")) {
95
+ // We don't assert this import because we don't want to force libraries
96
+ // to unnecessarily import GObject.
97
+ node.superType = new TypeIdentifier("ParamSpec", "GObject");
98
+
99
+ node.noEmit();
100
+ }
101
+
102
+ return node;
103
+ };
104
+
105
+ /**
106
+ * Checks if a class implements a GObject.Object-based interface
107
+ * If the class is missing a direct parent we inject GObject.Object
108
+ * as a stand-in considering it already indirectly inherits
109
+ * from it.
110
+ *
111
+ * @param node
112
+ */
113
+ const fixMissingParent = <T extends IntrospectedBaseClass>(node: T): T => {
114
+ const { namespace } = node;
115
+
116
+ if (node.superType == null) {
117
+ const isGObject = node.someParent((p) => p.getType().is("GObject", "Object"));
118
+
119
+ if (isGObject) {
120
+ node.superType = namespace.assertInstalledImport("GObject").assertClass("Object").getType();
121
+ }
122
+ }
123
+
124
+ return node;
125
+ };
126
+
127
+ /**
128
+ * Fields cannot be array types, error types,
129
+ * or class-like types in GJS. This strips
130
+ * fields which have these "complex" types.
131
+ *
132
+ * @param node
133
+ */
134
+ const removeComplexFields = <T extends IntrospectedBaseClass>(node: T): T => {
135
+ const { namespace } = node;
136
+
137
+ node.fields = node.fields.filter((f) => {
138
+ const type = f.type.deepUnwrap();
139
+
140
+ if (type instanceof NativeType) {
141
+ return true;
142
+ }
143
+
144
+ if (type instanceof TypeIdentifier) {
145
+ // Find the type for the identifier
146
+ const classNode = resolveTypeIdentifier(namespace, type);
147
+
148
+ // Don't allow private or disguised fields
149
+ if (classNode?.isPrivate) {
150
+ return false;
151
+ }
152
+
153
+ // Only allow fields pointing to simple structs.
154
+ if (classNode && classNode instanceof IntrospectedRecord && !classNode.isSimple()) {
155
+ return false;
156
+ }
157
+
158
+ const en = namespace.assertInstalledImport(type.namespace).getEnum(type.name);
159
+
160
+ if (!(en instanceof IntrospectedError)) {
161
+ return true;
162
+ }
163
+
164
+ return false;
165
+ }
166
+
167
+ return true;
168
+ });
169
+
170
+ return node;
171
+ };
172
+
173
+ /**
174
+ * TODO: Consider making this transformation optional.
175
+ *
176
+ * If we are referencing an unknown library, any-ify the type.
177
+ *
178
+ * @param node
179
+ */
180
+ const removeReferencesToMissingLibraries = <T extends IntrospectedBaseClass>(node: T): T => {
181
+ const { namespace } = node;
182
+
183
+ node.fields = node.fields.map((f) => {
184
+ const type = f.type.deepUnwrap();
185
+
186
+ if (type instanceof TypeIdentifier) {
187
+ // Find the type for the identifier
188
+ const nsNode = namespace.getInstalledImport(type.namespace);
189
+
190
+ // Don't allow private or disguised fields
191
+ if (!nsNode) {
192
+ return f.copy({ type: AnyType });
193
+ }
194
+ }
195
+
196
+ return f;
197
+ });
198
+
199
+ return node;
200
+ };
201
+
202
+ const removePrivateFields = <T extends IntrospectedBaseClass>(node: T): T => {
203
+ node.fields = node.fields.filter((f) => {
204
+ return !f.isPrivate && !f.name.startsWith("_");
205
+ });
206
+
207
+ return node;
208
+ };
209
+
210
+ /**
211
+ * Boxed types have a specific order of preference for
212
+ * which constructor will be used...
213
+ *
214
+ * 1. Zero Args Constructor
215
+ * 2. Direct Allocation (if the type is simple)
216
+ * 3. The new() constructor
217
+ * 4. The first constructor
218
+ *
219
+ * @param node
220
+ */
221
+ const resolveMainConstructor = (node: IntrospectedRecord): IntrospectedRecord => {
222
+ const newConstructor = node.constructors.find((c) => c.name === "new");
223
+ const zeroArgsConstructor = node.constructors.find((c) => c.parameters.length === 0);
224
+ const firstConstructor = node.constructors?.[0];
225
+
226
+ if (node.isForeign()) {
227
+ node.mainConstructor = null;
228
+
229
+ return node;
230
+ }
231
+
232
+ if (zeroArgsConstructor || node.isSimpleWithoutPointers()) {
233
+ node.mainConstructor = IntrospectedDirectAllocationConstructor.fromFields(node.fields, node);
234
+
235
+ return node;
236
+ }
237
+
238
+ const resolvedConstructor = newConstructor ?? firstConstructor;
239
+ if (resolvedConstructor) {
240
+ node.mainConstructor = resolvedConstructor.copy();
241
+ }
242
+
243
+ if (node.isSimple()) {
244
+ node.mainConstructor = IntrospectedDirectAllocationConstructor.fromFields(node.fields, node);
245
+
246
+ return node;
247
+ }
248
+
249
+ return node;
250
+ };
251
+
252
+ const mergeStaticDefinitions = (node: IntrospectedClass): IntrospectedClass => {
253
+ if (!node.staticDefinition) {
254
+ return node;
255
+ }
256
+
257
+ const { namespace } = node;
258
+ const staticDefinition = namespace.getClass(node.staticDefinition);
259
+
260
+ if (!(staticDefinition instanceof IntrospectedRecord)) {
261
+ return node;
262
+ }
263
+
264
+ const staticMethods = staticDefinition.members
265
+ .filter((m) => m instanceof IntrospectedClassFunction)
266
+ .map((m) => {
267
+ // Convert the class function to a static class function
268
+ const { name, parameters, output_parameters, isIntrospectable } = m;
269
+
270
+ return new IntrospectedStaticClassFunction({
271
+ name,
272
+ parameters,
273
+ output_parameters,
274
+ return_type: m.return(),
275
+ parent: node,
276
+ isIntrospectable,
277
+ });
278
+ });
279
+
280
+ for (const staticMethod of staticMethods) {
281
+ if (
282
+ !node.members.some(
283
+ (member) => member.name === staticMethod.name && member instanceof IntrospectedStaticClassFunction,
284
+ )
285
+ ) {
286
+ node.members.push(staticMethod);
287
+ }
288
+ }
289
+
290
+ return node;
291
+ };
292
+
293
+ function chainVisitors<T>(node: T, ...args: ((node: T) => T)[]) {
294
+ let currentNode = node;
295
+
296
+ for (const visitor of args) {
297
+ currentNode = visitor(currentNode);
298
+ }
299
+
300
+ return currentNode;
301
+ }
302
+
303
+ export class ClassVisitor extends GirVisitor {
304
+ visitClass = (node: IntrospectedClass) =>
305
+ chainVisitors(
306
+ node,
307
+ removeReferencesToMissingLibraries,
308
+ fixMissingParent,
309
+ fixParamSpecSubtypes,
310
+ removeComplexFields,
311
+ removePrivateFields,
312
+ mergeStaticDefinitions,
313
+ filterConflictingNamedClassMembers,
314
+ filterIntrospectableClassMembers,
315
+ filterProtectedFields,
316
+ filterReservedProperties,
317
+ );
318
+
319
+ visitInterface = (node: IntrospectedInterface) =>
320
+ chainVisitors(node, filterIntrospectableClassMembers, filterReservedProperties);
321
+
322
+ visitRecord = (node: IntrospectedRecord) =>
323
+ chainVisitors(
324
+ node,
325
+ fixMissingParent,
326
+ fixParamSpecSubtypes,
327
+ resolveMainConstructor,
328
+ removeComplexFields,
329
+ removePrivateFields,
330
+ filterConflictingNamedClassMembers,
331
+ filterIntrospectableClassMembers,
332
+ filterProtectedFields,
333
+ filterReservedProperties,
334
+ );
335
+ }
@@ -0,0 +1,52 @@
1
+ import type { IntrospectedEnum } from "../gir/enum.ts";
2
+ import type { IntrospectedFunction } from "../gir/function.ts";
3
+ import type { IntrospectedBaseClass, IntrospectedClassFunction } from "../gir/introspected-classes.ts";
4
+
5
+ import { NullableType, TypeIdentifier } from "../gir.ts";
6
+ import { GirVisitor } from "../visitor.ts";
7
+
8
+ export class FunctionParametersVisitor extends GirVisitor {
9
+ /**
10
+ * Marks all enum parameters of a function as nullable,
11
+ * because GJS allows null values for enum parameters and treats them as a 0 value.
12
+ * See issue [#207](https://github.com/gjsify/ts-for-gir/issues/207).
13
+ */
14
+ private makeEnumParamsNullable(node: IntrospectedFunction): IntrospectedFunction;
15
+ private makeEnumParamsNullable<T extends IntrospectedBaseClass | IntrospectedEnum>(
16
+ node: IntrospectedClassFunction<T>,
17
+ ): IntrospectedClassFunction<T>;
18
+ private makeEnumParamsNullable(
19
+ node: IntrospectedFunction | IntrospectedClassFunction,
20
+ ): IntrospectedFunction | IntrospectedClassFunction {
21
+ return node.copy({
22
+ parameters: node.parameters.map((param) => {
23
+ const type = param.type.deepUnwrap();
24
+ if (type instanceof TypeIdentifier) {
25
+ // Get the namespace where this type should be defined
26
+ const ns = node.namespace.assertInstalledImport(type.namespace);
27
+
28
+ // Check if the type is an enum
29
+ const isEnumType = !!ns.getEnum(type.name);
30
+
31
+ // If it is, make the parameter nullable
32
+ if (isEnumType) {
33
+ return param.copy({
34
+ type: new NullableType(param.type),
35
+ });
36
+ }
37
+ }
38
+ return param;
39
+ }),
40
+ });
41
+ }
42
+
43
+ visitFunction = (node: IntrospectedFunction): IntrospectedFunction => {
44
+ return this.makeEnumParamsNullable(node);
45
+ };
46
+
47
+ visitClassFunction = <T extends IntrospectedBaseClass | IntrospectedEnum>(
48
+ node: IntrospectedClassFunction<T>,
49
+ ): IntrospectedClassFunction<T> => {
50
+ return this.makeEnumParamsNullable(node);
51
+ };
52
+ }
@@ -0,0 +1,20 @@
1
+ import type { IntrospectedInterface } from "../gir/introspected-classes.ts";
2
+ import { GirVisitor } from "../visitor.ts";
3
+
4
+ export class InterfaceVisitor extends GirVisitor {
5
+ visitInterface = (node: IntrospectedInterface): IntrospectedInterface => {
6
+ // If an interface does not list a prerequisite type, we fill it with GObject.Object
7
+ if (!node.noParent && node.superType == null) {
8
+ const gobject = node.namespace.assertInstalledImport("GObject");
9
+ const GObject = gobject.assertClass("Object");
10
+
11
+ if (!GObject) {
12
+ throw new Error(`GObject.Object could not be found while generating ${node.namespace.namespace}.${node.name}`);
13
+ }
14
+
15
+ node.superType = GObject.getType();
16
+ }
17
+
18
+ return node;
19
+ };
20
+ }
package/src/visitor.ts ADDED
@@ -0,0 +1,58 @@
1
+ import type { IntrospectedAlias } from "./gir/alias.ts";
2
+ import type { IntrospectedCallback } from "./gir/callback.ts";
3
+ import type { IntrospectedConstant } from "./gir/const.ts";
4
+ import type { IntrospectedConstructor } from "./gir/constructor.ts";
5
+ import type { IntrospectedDirectAllocationConstructor } from "./gir/direct-allocation-constructor.ts";
6
+ import type { IntrospectedEnum } from "./gir/enum.ts";
7
+ import type { GirEnumMember } from "./gir/enum-member.ts";
8
+ import type { IntrospectedError } from "./gir/error.ts";
9
+ import type { IntrospectedFunction } from "./gir/function.ts";
10
+ import type {
11
+ IntrospectedBaseClass,
12
+ IntrospectedClass,
13
+ IntrospectedClassCallback,
14
+ IntrospectedClassFunction,
15
+ IntrospectedInterface,
16
+ IntrospectedStaticClassFunction,
17
+ IntrospectedVirtualClassFunction,
18
+ } from "./gir/introspected-classes.ts";
19
+ import type { IntrospectedNamespace } from "./gir/namespace.ts";
20
+ import type { IntrospectedFunctionParameter } from "./gir/parameter.ts";
21
+ import type { IntrospectedField, IntrospectedProperty } from "./gir/property.ts";
22
+ import type { IntrospectedRecord } from "./gir/record.ts";
23
+ import type { IntrospectedSignal, IntrospectedSignalType } from "./gir/signal.ts";
24
+ import type { TypeExpression } from "./gir.ts";
25
+
26
+ export abstract class GirVisitor {
27
+ visitType?: (node: TypeExpression) => TypeExpression;
28
+ visitCallback?: (node: IntrospectedCallback) => IntrospectedCallback;
29
+ visitClassCallback?: (node: IntrospectedClassCallback) => IntrospectedClassCallback;
30
+ visitAlias?: (node: IntrospectedAlias) => IntrospectedAlias;
31
+ visitConstructor?: (node: IntrospectedConstructor) => IntrospectedConstructor;
32
+ visitDirectAllocationConstructor?: (
33
+ node: IntrospectedDirectAllocationConstructor,
34
+ ) => IntrospectedDirectAllocationConstructor;
35
+ visitConstructorFunction?: (node: IntrospectedConstructor) => IntrospectedConstructor;
36
+ visitRecord?: (node: IntrospectedRecord) => IntrospectedRecord;
37
+ visitInterface?: (node: IntrospectedInterface) => IntrospectedInterface;
38
+ visitEnumMember?: (node: GirEnumMember) => GirEnumMember;
39
+ visitError?: (node: IntrospectedError) => IntrospectedError;
40
+ visitEnum?: (node: IntrospectedEnum) => IntrospectedEnum;
41
+ visitConst?: (node: IntrospectedConstant) => IntrospectedConstant;
42
+ visitClass?: (node: IntrospectedClass) => IntrospectedClass;
43
+ visitParameter?: (node: IntrospectedFunctionParameter) => IntrospectedFunctionParameter;
44
+ visitProperty?: (node: IntrospectedProperty) => IntrospectedProperty;
45
+ visitField?: (node: IntrospectedField) => IntrospectedField;
46
+ visitSignal?: (node: IntrospectedSignal, type?: IntrospectedSignalType) => IntrospectedSignal;
47
+ visitFunction?: (node: IntrospectedFunction) => IntrospectedFunction;
48
+ visitClassFunction?: <T extends IntrospectedBaseClass | IntrospectedEnum>(
49
+ node: IntrospectedClassFunction<T>,
50
+ ) => IntrospectedClassFunction<T>;
51
+ visitStaticClassFunction?: (node: IntrospectedStaticClassFunction) => IntrospectedStaticClassFunction;
52
+ visitVirtualClassFunction?: (node: IntrospectedVirtualClassFunction) => IntrospectedVirtualClassFunction;
53
+ visitNamespace?: (node: IntrospectedNamespace) => IntrospectedNamespace;
54
+ }
55
+
56
+ export function visit(namespace: IntrospectedNamespace, visitor: GirVisitor) {
57
+ namespace.accept(visitor);
58
+ }
@@ -1,25 +0,0 @@
1
- import { LibraryVersion } from './library-version.js';
2
- export declare const COMMENT_REG_EXP: RegExp;
3
- export declare const PARAM_REG_EXP: RegExp;
4
- export declare const OPT_PARAM_REG_EXP: RegExp;
5
- export declare const NEW_LINE_REG_EXP: RegExp;
6
- export declare const PACKAGE: {
7
- name: string;
8
- version: string;
9
- description: string;
10
- license: string;
11
- homepage: string;
12
- author: string;
13
- };
14
- export declare const APP_NAME = "ts-for-gir";
15
- export declare const APP_USAGE = "TypeScript type definition generator for GObject introspection GIR files";
16
- export declare const APP_SOURCE = "https://github.com/gjsify/ts-for-gir";
17
- export declare const APP_VERSION: string;
18
- export declare const PACKAGE_DESC: (packageName: string, libraryVersion?: LibraryVersion) => string;
19
- export declare const PACKAGE_KEYWORDS: (packageName: string) => string;
20
- /** The reserved variable names listed here cannot be resolved simply by quotation marks */
21
- export declare const RESERVED_QUOTE_VARIABLE_NAMES: string[];
22
- export declare const RESERVED_VARIABLE_NAMES: string[];
23
- export declare const RESERVED_CLASS_NAMES: string[];
24
- export declare const RESERVED_FUNCTION_NAMES: string[];
25
- export declare const RESERVED_NAMESPACE_NAMES: {};
package/lib/constants.js DELETED
@@ -1,93 +0,0 @@
1
- import { __dirname, readJsonFile } from './utils/index.js';
2
- import { join } from 'path';
3
- export const COMMENT_REG_EXP = /\/\*.*\*\//g;
4
- export const PARAM_REG_EXP = /[0-9a-zA-Z_]*:/g;
5
- export const OPT_PARAM_REG_EXP = /[0-9a-zA-Z_]*\?:/g;
6
- export const NEW_LINE_REG_EXP = /[\n\r]+/g;
7
- export const PACKAGE = await readJsonFile(join(__dirname, './package.json'));
8
- export const APP_NAME = 'ts-for-gir';
9
- export const APP_USAGE = 'TypeScript type definition generator for GObject introspection GIR files';
10
- export const APP_SOURCE = 'https://github.com/gjsify/ts-for-gir';
11
- export const APP_VERSION = PACKAGE.version;
12
- export const PACKAGE_DESC = (packageName, libraryVersion) => {
13
- if (libraryVersion) {
14
- return `GJS TypeScript type definitions for ${packageName}, generated from library version ${libraryVersion.toString()}`;
15
- }
16
- return `GJS TypeScript type definitions for ${packageName}`;
17
- };
18
- export const PACKAGE_KEYWORDS = (packageName) => {
19
- return `"Gir", "TypeScript", "types", "GObject-Introspection", "GJS", "${packageName}"`;
20
- };
21
- /** The reserved variable names listed here cannot be resolved simply by quotation marks */
22
- export const RESERVED_QUOTE_VARIABLE_NAMES = ['constructor'];
23
- export const RESERVED_VARIABLE_NAMES = [
24
- 'in',
25
- 'function',
26
- 'true',
27
- 'false',
28
- 'break',
29
- 'arguments',
30
- 'eval',
31
- 'default',
32
- 'new',
33
- 'extends',
34
- 'with',
35
- 'var',
36
- 'class',
37
- 'delete',
38
- 'return',
39
- 'constructor',
40
- 'this', // TODO check if this is used as we would use this in javascript, if so, this is only allowed as the first parameter
41
- ];
42
- export const RESERVED_CLASS_NAMES = [
43
- 'break',
44
- 'boolean',
45
- 'case',
46
- 'catch',
47
- 'class',
48
- 'const',
49
- 'continue',
50
- 'debugger',
51
- 'default',
52
- 'delete',
53
- 'do',
54
- 'else',
55
- 'enum',
56
- 'export',
57
- 'extends',
58
- 'false',
59
- 'finally',
60
- 'for',
61
- 'function',
62
- 'if',
63
- 'implements',
64
- 'import',
65
- 'in',
66
- 'instanceof',
67
- 'interface',
68
- 'let',
69
- 'new',
70
- 'number',
71
- 'package',
72
- 'private',
73
- 'protected',
74
- 'public',
75
- 'return',
76
- 'static',
77
- 'super',
78
- 'switch',
79
- 'string',
80
- 'this',
81
- 'throw',
82
- 'true',
83
- 'try',
84
- 'typeof',
85
- 'var',
86
- 'void',
87
- 'while',
88
- 'with',
89
- 'yield',
90
- ];
91
- export const RESERVED_FUNCTION_NAMES = ['false', 'true', 'break'];
92
- export const RESERVED_NAMESPACE_NAMES = {};
93
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAA;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAA;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,YAAY,CAOtC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAErC,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAA;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG,0EAA0E,CAAA;AACnG,MAAM,CAAC,MAAM,UAAU,GAAG,sCAAsC,CAAA;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,cAA+B,EAAE,EAAE;IACjF,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,uCAAuC,WAAW,oCAAoC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC5H,CAAC;IACD,OAAO,uCAAuC,WAAW,EAAE,CAAA;AAC/D,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAE,EAAE;IACpD,OAAO,kEAAkE,WAAW,GAAG,CAAA;AAC3F,CAAC,CAAA;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,aAAa,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACnC,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,WAAW;IACX,MAAM;IACN,SAAS;IACT,KAAK;IACL,SAAS;IACT,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,MAAM,EAAE,oHAAoH;CAC/H,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAChC,OAAO;IACP,SAAS;IACT,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,KAAK;IACL,UAAU;IACV,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,WAAW;IACX,KAAK;IACL,KAAK;IACL,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;CACV,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAA"}