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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/package.json +12 -26
  2. package/src/constants.ts +154 -0
  3. package/src/dependency-manager.ts +427 -0
  4. package/src/formatters/default.ts +7 -0
  5. package/src/formatters/formatter.ts +3 -0
  6. package/src/formatters/index.ts +3 -0
  7. package/src/formatters/json.ts +7 -0
  8. package/src/generators/generator.ts +65 -0
  9. package/src/generators/index.ts +2 -0
  10. package/src/generics/clutter.ts +71 -0
  11. package/src/generics/generify.ts +74 -0
  12. package/src/generics/gio.ts +91 -0
  13. package/src/generics/glib.ts +31 -0
  14. package/src/generics/gtk.ts +99 -0
  15. package/src/generics/meta.ts +41 -0
  16. package/src/generics/st.ts +197 -0
  17. package/src/generics/visitor.ts +484 -0
  18. package/src/gir/alias.ts +73 -0
  19. package/src/gir/callback.ts +79 -0
  20. package/src/gir/const.ts +73 -0
  21. package/src/gir/constructor.ts +91 -0
  22. package/src/gir/data.ts +12 -0
  23. package/src/gir/dependency-resolver.ts +81 -0
  24. package/src/gir/direct-allocation-constructor.ts +65 -0
  25. package/src/gir/enum-member.ts +51 -0
  26. package/src/gir/enum.ts +126 -0
  27. package/src/gir/error.ts +82 -0
  28. package/src/gir/function.ts +296 -0
  29. package/src/gir/generics.ts +66 -0
  30. package/src/gir/gir-complex-record.ts +7 -0
  31. package/src/gir/index.ts +25 -0
  32. package/src/gir/introspected-base.ts +104 -0
  33. package/src/gir/introspected-class-member.ts +15 -0
  34. package/src/gir/introspected-classes.ts +1517 -0
  35. package/src/gir/introspected-namespace-member.ts +24 -0
  36. package/src/gir/namespace.ts +76 -0
  37. package/src/gir/parameter.ts +199 -0
  38. package/src/gir/promisify.ts +209 -0
  39. package/src/gir/property.ts +203 -0
  40. package/src/gir/record.ts +477 -0
  41. package/src/gir/registry.ts +184 -0
  42. package/src/gir/signal.ts +246 -0
  43. package/src/gir-module.ts +703 -0
  44. package/src/gir.ts +892 -0
  45. package/src/index.ts +16 -0
  46. package/src/injections/gee08.ts +89 -0
  47. package/src/injections/gee1.ts +35 -0
  48. package/src/injections/gio.ts +707 -0
  49. package/src/injections/glib.ts +275 -0
  50. package/src/injections/gobject.ts +901 -0
  51. package/src/injections/gtk4.ts +23 -0
  52. package/src/injections/inject.ts +43 -0
  53. package/src/injections/shell.ts +45 -0
  54. package/src/injections/tracker1.ts +42 -0
  55. package/src/library-version.ts +50 -0
  56. package/src/logger.ts +104 -0
  57. package/src/messages.ts +57 -0
  58. package/src/templates/index.ts +1 -0
  59. package/src/templates/template-engine.ts +178 -0
  60. package/src/types/answer-version.ts +4 -0
  61. package/src/types/any-introspected-type.ts +3 -0
  62. package/src/types/class-function-types.ts +49 -0
  63. package/src/types/class-member.ts +5 -0
  64. package/src/types/class-parent.ts +14 -0
  65. package/src/types/class.ts +45 -0
  66. package/src/types/config-flags.ts +5 -0
  67. package/src/types/construct-name.ts +13 -0
  68. package/src/types/dependency-map.ts +4 -0
  69. package/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
  70. package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
  71. package/src/types/format.ts +1 -0
  72. package/src/types/generator-constructor.ts +7 -0
  73. package/src/types/generics-config.ts +90 -0
  74. package/src/types/gir-any-element.ts +35 -0
  75. package/src/types/gir-module-interface.ts +22 -0
  76. package/src/types/gir-module-resolved.ts +32 -0
  77. package/src/types/gir-type-name.ts +20 -0
  78. package/src/types/index.ts +94 -0
  79. package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
  80. package/src/types/introspected.ts +18 -0
  81. package/src/types/local-name-check.ts +5 -0
  82. package/src/types/local-name-type.ts +1 -0
  83. package/src/types/local-name.ts +8 -0
  84. package/src/types/local-names.ts +5 -0
  85. package/src/types/metadata.ts +6 -0
  86. package/src/types/ns-loader.ts +7 -0
  87. package/src/types/options-base.ts +8 -0
  88. package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
  89. package/src/types/options-load.ts +6 -0
  90. package/src/types/options-transform.ts +5 -0
  91. package/src/types/output-format.ts +1 -0
  92. package/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
  93. package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
  94. package/src/types/package-section-parsed.ts +9 -0
  95. package/src/types/parsed-gir.ts +5 -0
  96. package/src/types/parsed-package-data.ts +7 -0
  97. package/src/types/property-case.ts +1 -0
  98. package/src/types/resolve-type.ts +4 -0
  99. package/src/types/template-data.ts +8 -0
  100. package/src/types/template-options.ts +33 -0
  101. package/src/types/transformation-case.ts +9 -0
  102. package/src/types/transformations.ts +5 -0
  103. package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +5 -3
  104. package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
  105. package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
  106. package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
  107. package/src/types/type-gir-element.ts +25 -0
  108. package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
  109. package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-gir-enumeration.ts} +1 -1
  110. package/src/types/type-gir-function.ts +8 -0
  111. package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
  112. package/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
  113. package/src/types/type-gir-parameter.ts +1 -0
  114. package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
  115. package/src/types/type-gir-variable.ts +1 -0
  116. package/src/types/type-ts-element.ts +13 -0
  117. package/{lib/types/type-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
  118. package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
  119. package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
  120. package/src/types/user-config-load-result.ts +6 -0
  121. package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
  122. package/src/util.ts +84 -0
  123. package/src/utils/conflicts/conflict-resolver.ts +122 -0
  124. package/src/utils/conflicts/function-conflict-detector.ts +139 -0
  125. package/src/utils/conflicts/index.ts +2 -0
  126. package/src/utils/conflicts.ts +490 -0
  127. package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
  128. package/src/utils/files.ts +71 -0
  129. package/src/utils/function-type-guards.ts +61 -0
  130. package/src/utils/generation.ts +69 -0
  131. package/src/utils/gir-parsing.ts +243 -0
  132. package/src/utils/girs.ts +113 -0
  133. package/src/utils/index.ts +14 -0
  134. package/src/utils/naming.ts +188 -0
  135. package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
  136. package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
  137. package/src/utils/path.ts +7 -0
  138. package/src/utils/registry.ts +5 -0
  139. package/src/utils/strings.ts +134 -0
  140. package/src/utils/type-resolution.ts +116 -0
  141. package/src/utils/types.ts +247 -0
  142. package/src/validators/class.ts +324 -0
  143. package/src/validators/function-parameters.ts +52 -0
  144. package/src/validators/interface.ts +20 -0
  145. package/src/visitor.ts +58 -0
  146. package/lib/constants.d.ts +0 -25
  147. package/lib/constants.js +0 -93
  148. package/lib/constants.js.map +0 -1
  149. package/lib/dependency-manager.d.ts +0 -151
  150. package/lib/dependency-manager.js +0 -340
  151. package/lib/dependency-manager.js.map +0 -1
  152. package/lib/formatters/default.d.ts +0 -4
  153. package/lib/formatters/default.js +0 -7
  154. package/lib/formatters/default.js.map +0 -1
  155. package/lib/formatters/formatter.d.ts +0 -3
  156. package/lib/formatters/formatter.js +0 -3
  157. package/lib/formatters/formatter.js.map +0 -1
  158. package/lib/formatters/json.d.ts +0 -4
  159. package/lib/formatters/json.js +0 -7
  160. package/lib/formatters/json.js.map +0 -1
  161. package/lib/generators/dts/glib.d.ts +0 -2
  162. package/lib/generators/dts/glib.js +0 -514
  163. package/lib/generators/dts/glib.js.map +0 -1
  164. package/lib/generators/dts/gobject.d.ts +0 -2
  165. package/lib/generators/dts/gobject.js +0 -117
  166. package/lib/generators/dts/gobject.js.map +0 -1
  167. package/lib/generators/dts-inline.d.ts +0 -10
  168. package/lib/generators/dts-inline.js +0 -57
  169. package/lib/generators/dts-inline.js.map +0 -1
  170. package/lib/generators/dts-modules.d.ts +0 -10
  171. package/lib/generators/dts-modules.js +0 -98
  172. package/lib/generators/dts-modules.js.map +0 -1
  173. package/lib/generators/dts.d.ts +0 -45
  174. package/lib/generators/dts.js +0 -683
  175. package/lib/generators/dts.js.map +0 -1
  176. package/lib/generators/generator.d.ts +0 -45
  177. package/lib/generators/generator.js +0 -9
  178. package/lib/generators/generator.js.map +0 -1
  179. package/lib/generators/index.d.ts +0 -5
  180. package/lib/generators/index.js +0 -6
  181. package/lib/generators/index.js.map +0 -1
  182. package/lib/generators/json.d.ts +0 -257
  183. package/lib/generators/json.js +0 -866
  184. package/lib/generators/json.js.map +0 -1
  185. package/lib/generics/clutter.d.ts +0 -41
  186. package/lib/generics/clutter.js +0 -52
  187. package/lib/generics/clutter.js.map +0 -1
  188. package/lib/generics/generify.d.ts +0 -2
  189. package/lib/generics/generify.js +0 -47
  190. package/lib/generics/generify.js.map +0 -1
  191. package/lib/generics/gio.d.ts +0 -7
  192. package/lib/generics/gio.js +0 -51
  193. package/lib/generics/gio.js.map +0 -1
  194. package/lib/generics/glib.d.ts +0 -7
  195. package/lib/generics/glib.js +0 -18
  196. package/lib/generics/glib.js.map +0 -1
  197. package/lib/generics/gtk.d.ts +0 -7
  198. package/lib/generics/gtk.js +0 -56
  199. package/lib/generics/gtk.js.map +0 -1
  200. package/lib/generics/meta.d.ts +0 -36
  201. package/lib/generics/meta.js +0 -29
  202. package/lib/generics/meta.js.map +0 -1
  203. package/lib/generics/st.d.ts +0 -31
  204. package/lib/generics/st.js +0 -98
  205. package/lib/generics/st.js.map +0 -1
  206. package/lib/generics/visitor.d.ts +0 -20
  207. package/lib/generics/visitor.js +0 -255
  208. package/lib/generics/visitor.js.map +0 -1
  209. package/lib/gir/alias.d.ts +0 -24
  210. package/lib/gir/alias.js +0 -43
  211. package/lib/gir/alias.js.map +0 -1
  212. package/lib/gir/base.d.ts +0 -62
  213. package/lib/gir/base.js +0 -83
  214. package/lib/gir/base.js.map +0 -1
  215. package/lib/gir/class.d.ts +0 -228
  216. package/lib/gir/class.js +0 -1151
  217. package/lib/gir/class.js.map +0 -1
  218. package/lib/gir/const.d.ts +0 -25
  219. package/lib/gir/const.js +0 -43
  220. package/lib/gir/const.js.map +0 -1
  221. package/lib/gir/enum.d.ts +0 -45
  222. package/lib/gir/enum.js +0 -164
  223. package/lib/gir/enum.js.map +0 -1
  224. package/lib/gir/function.d.ts +0 -200
  225. package/lib/gir/function.js +0 -683
  226. package/lib/gir/function.js.map +0 -1
  227. package/lib/gir/generics.d.ts +0 -5
  228. package/lib/gir/generics.js +0 -57
  229. package/lib/gir/generics.js.map +0 -1
  230. package/lib/gir/index.d.ts +0 -14
  231. package/lib/gir/index.js +0 -15
  232. package/lib/gir/index.js.map +0 -1
  233. package/lib/gir/namespace.d.ts +0 -21
  234. package/lib/gir/namespace.js +0 -57
  235. package/lib/gir/namespace.js.map +0 -1
  236. package/lib/gir/nodes.d.ts +0 -11
  237. package/lib/gir/nodes.js +0 -12
  238. package/lib/gir/nodes.js.map +0 -1
  239. package/lib/gir/promisify.d.ts +0 -5
  240. package/lib/gir/promisify.js +0 -158
  241. package/lib/gir/promisify.js.map +0 -1
  242. package/lib/gir/property.d.ts +0 -60
  243. package/lib/gir/property.js +0 -128
  244. package/lib/gir/property.js.map +0 -1
  245. package/lib/gir/registry.d.ts +0 -51
  246. package/lib/gir/registry.js +0 -147
  247. package/lib/gir/registry.js.map +0 -1
  248. package/lib/gir/signal.d.ts +0 -36
  249. package/lib/gir/signal.js +0 -169
  250. package/lib/gir/signal.js.map +0 -1
  251. package/lib/gir/util.d.ts +0 -49
  252. package/lib/gir/util.js +0 -561
  253. package/lib/gir/util.js.map +0 -1
  254. package/lib/gir-module.d.ts +0 -104
  255. package/lib/gir-module.js +0 -584
  256. package/lib/gir-module.js.map +0 -1
  257. package/lib/gir.d.ts +0 -254
  258. package/lib/gir.js +0 -639
  259. package/lib/gir.js.map +0 -1
  260. package/lib/index.d.ts +0 -13
  261. package/lib/index.js +0 -16
  262. package/lib/index.js.map +0 -1
  263. package/lib/injections/gee08.d.ts +0 -7
  264. package/lib/injections/gee08.js +0 -68
  265. package/lib/injections/gee08.js.map +0 -1
  266. package/lib/injections/gee1.d.ts +0 -7
  267. package/lib/injections/gee1.js +0 -28
  268. package/lib/injections/gee1.js.map +0 -1
  269. package/lib/injections/gio.d.ts +0 -7
  270. package/lib/injections/gio.js +0 -563
  271. package/lib/injections/gio.js.map +0 -1
  272. package/lib/injections/glib.d.ts +0 -7
  273. package/lib/injections/glib.js +0 -210
  274. package/lib/injections/glib.js.map +0 -1
  275. package/lib/injections/gobject.d.ts +0 -7
  276. package/lib/injections/gobject.js +0 -594
  277. package/lib/injections/gobject.js.map +0 -1
  278. package/lib/injections/gtk4.d.ts +0 -7
  279. package/lib/injections/gtk4.js +0 -19
  280. package/lib/injections/gtk4.js.map +0 -1
  281. package/lib/injections/inject.d.ts +0 -4
  282. package/lib/injections/inject.js +0 -33
  283. package/lib/injections/inject.js.map +0 -1
  284. package/lib/injections/shell.d.ts +0 -20
  285. package/lib/injections/shell.js +0 -34
  286. package/lib/injections/shell.js.map +0 -1
  287. package/lib/injections/tracker1.d.ts +0 -7
  288. package/lib/injections/tracker1.js +0 -30
  289. package/lib/injections/tracker1.js.map +0 -1
  290. package/lib/library-version.d.ts +0 -10
  291. package/lib/library-version.js +0 -45
  292. package/lib/library-version.js.map +0 -1
  293. package/lib/logger.d.ts +0 -36
  294. package/lib/logger.js +0 -134
  295. package/lib/logger.js.map +0 -1
  296. package/lib/messages.d.ts +0 -23
  297. package/lib/messages.js +0 -39
  298. package/lib/messages.js.map +0 -1
  299. package/lib/registry.d.ts +0 -8
  300. package/lib/registry.js +0 -12
  301. package/lib/registry.js.map +0 -1
  302. package/lib/transformation.d.ts +0 -169
  303. package/lib/transformation.js +0 -393
  304. package/lib/transformation.js.map +0 -1
  305. package/lib/types/answer-version.d.ts +0 -4
  306. package/lib/types/answer-version.js +0 -2
  307. package/lib/types/answer-version.js.map +0 -1
  308. package/lib/types/class-parent.d.ts +0 -13
  309. package/lib/types/class-parent.js +0 -2
  310. package/lib/types/class-parent.js.map +0 -1
  311. package/lib/types/config-flags.d.ts +0 -4
  312. package/lib/types/config-flags.js +0 -2
  313. package/lib/types/config-flags.js.map +0 -1
  314. package/lib/types/construct-name.d.ts +0 -1
  315. package/lib/types/construct-name.js +0 -2
  316. package/lib/types/construct-name.js.map +0 -1
  317. package/lib/types/dependency-map.d.ts +0 -4
  318. package/lib/types/dependency-map.js +0 -2
  319. package/lib/types/dependency-map.js.map +0 -1
  320. package/lib/types/dependency.js +0 -2
  321. package/lib/types/dependency.js.map +0 -1
  322. package/lib/types/file-info.js +0 -2
  323. package/lib/types/file-info.js.map +0 -1
  324. package/lib/types/format.d.ts +0 -1
  325. package/lib/types/format.js +0 -2
  326. package/lib/types/format.js.map +0 -1
  327. package/lib/types/gir-alias-element.d.ts +0 -4
  328. package/lib/types/gir-alias-element.js +0 -2
  329. package/lib/types/gir-alias-element.js.map +0 -1
  330. package/lib/types/gir-annotation.d.ts +0 -9
  331. package/lib/types/gir-annotation.js +0 -2
  332. package/lib/types/gir-annotation.js.map +0 -1
  333. package/lib/types/gir-any-element.d.ts +0 -2
  334. package/lib/types/gir-any-element.js +0 -2
  335. package/lib/types/gir-any-element.js.map +0 -1
  336. package/lib/types/gir-bitfield-element.d.ts +0 -6
  337. package/lib/types/gir-bitfield-element.js +0 -2
  338. package/lib/types/gir-bitfield-element.js.map +0 -1
  339. package/lib/types/gir-callable-param-element.d.ts +0 -4
  340. package/lib/types/gir-callable-param-element.js +0 -2
  341. package/lib/types/gir-callable-param-element.js.map +0 -1
  342. package/lib/types/gir-callable-params.d.ts +0 -7
  343. package/lib/types/gir-callable-params.js +0 -2
  344. package/lib/types/gir-callable-params.js.map +0 -1
  345. package/lib/types/gir-callable-return.d.ts +0 -5
  346. package/lib/types/gir-callable-return.js +0 -2
  347. package/lib/types/gir-callable-return.js.map +0 -1
  348. package/lib/types/gir-callback-element.d.ts +0 -6
  349. package/lib/types/gir-callback-element.js +0 -2
  350. package/lib/types/gir-callback-element.js.map +0 -1
  351. package/lib/types/gir-class-element.d.ts +0 -17
  352. package/lib/types/gir-class-element.js +0 -2
  353. package/lib/types/gir-class-element.js.map +0 -1
  354. package/lib/types/gir-constant-element.d.ts +0 -4
  355. package/lib/types/gir-constant-element.js +0 -2
  356. package/lib/types/gir-constant-element.js.map +0 -1
  357. package/lib/types/gir-constructor-element.d.ts +0 -6
  358. package/lib/types/gir-constructor-element.js +0 -2
  359. package/lib/types/gir-constructor-element.js.map +0 -1
  360. package/lib/types/gir-enum-element.d.ts +0 -6
  361. package/lib/types/gir-enum-element.js +0 -2
  362. package/lib/types/gir-enum-element.js.map +0 -1
  363. package/lib/types/gir-field-element.d.ts +0 -5
  364. package/lib/types/gir-field-element.js +0 -2
  365. package/lib/types/gir-field-element.js.map +0 -1
  366. package/lib/types/gir-function-element.d.ts +0 -6
  367. package/lib/types/gir-function-element.js +0 -2
  368. package/lib/types/gir-function-element.js.map +0 -1
  369. package/lib/types/gir-instance-parameter.d.ts +0 -7
  370. package/lib/types/gir-instance-parameter.js +0 -2
  371. package/lib/types/gir-instance-parameter.js.map +0 -1
  372. package/lib/types/gir-interface-element.d.ts +0 -16
  373. package/lib/types/gir-interface-element.js +0 -2
  374. package/lib/types/gir-interface-element.js.map +0 -1
  375. package/lib/types/gir-member-element.d.ts +0 -5
  376. package/lib/types/gir-member-element.js +0 -2
  377. package/lib/types/gir-member-element.js.map +0 -1
  378. package/lib/types/gir-method-element.d.ts +0 -7
  379. package/lib/types/gir-method-element.js +0 -2
  380. package/lib/types/gir-method-element.js.map +0 -1
  381. package/lib/types/gir-module-resolved-by.d.ts +0 -15
  382. package/lib/types/gir-module-resolved-by.js +0 -2
  383. package/lib/types/gir-module-resolved-by.js.map +0 -1
  384. package/lib/types/gir-modules-grouped-map.d.ts +0 -4
  385. package/lib/types/gir-modules-grouped-map.js +0 -2
  386. package/lib/types/gir-modules-grouped-map.js.map +0 -1
  387. package/lib/types/gir-modules-grouped.d.ts +0 -12
  388. package/lib/types/gir-modules-grouped.js +0 -2
  389. package/lib/types/gir-modules-grouped.js.map +0 -1
  390. package/lib/types/gir-namespace.d.ts +0 -27
  391. package/lib/types/gir-namespace.js +0 -2
  392. package/lib/types/gir-namespace.js.map +0 -1
  393. package/lib/types/gir-property-element.d.ts +0 -4
  394. package/lib/types/gir-property-element.js +0 -2
  395. package/lib/types/gir-property-element.js.map +0 -1
  396. package/lib/types/gir-record-element.d.ts +0 -10
  397. package/lib/types/gir-record-element.js +0 -2
  398. package/lib/types/gir-record-element.js.map +0 -1
  399. package/lib/types/gir-repository.d.ts +0 -5
  400. package/lib/types/gir-repository.js +0 -2
  401. package/lib/types/gir-repository.js.map +0 -1
  402. package/lib/types/gir-signal.d.ts +0 -10
  403. package/lib/types/gir-signal.js +0 -2
  404. package/lib/types/gir-signal.js.map +0 -1
  405. package/lib/types/gir-type-name.d.ts +0 -2
  406. package/lib/types/gir-type-name.js +0 -2
  407. package/lib/types/gir-type-name.js.map +0 -1
  408. package/lib/types/gir-union-element.d.ts +0 -9
  409. package/lib/types/gir-union-element.js +0 -2
  410. package/lib/types/gir-union-element.js.map +0 -1
  411. package/lib/types/gir-unparsed-number.d.ts +0 -2
  412. package/lib/types/gir-unparsed-number.js +0 -2
  413. package/lib/types/gir-unparsed-number.js.map +0 -1
  414. package/lib/types/gir-virtual-method.d.ts +0 -6
  415. package/lib/types/gir-virtual-method.js +0 -2
  416. package/lib/types/gir-virtual-method.js.map +0 -1
  417. package/lib/types/index.d.ts +0 -79
  418. package/lib/types/index.js +0 -80
  419. package/lib/types/index.js.map +0 -1
  420. package/lib/types/inheritance-table.js +0 -2
  421. package/lib/types/inheritance-table.js.map +0 -1
  422. package/lib/types/local-name-check.d.ts +0 -4
  423. package/lib/types/local-name-check.js +0 -2
  424. package/lib/types/local-name-check.js.map +0 -1
  425. package/lib/types/local-name-type.d.ts +0 -1
  426. package/lib/types/local-name-type.js +0 -2
  427. package/lib/types/local-name-type.js.map +0 -1
  428. package/lib/types/local-name.d.ts +0 -7
  429. package/lib/types/local-name.js +0 -2
  430. package/lib/types/local-name.js.map +0 -1
  431. package/lib/types/local-names.d.ts +0 -4
  432. package/lib/types/local-names.js +0 -2
  433. package/lib/types/local-names.js.map +0 -1
  434. package/lib/types/metadata.d.ts +0 -8
  435. package/lib/types/metadata.js +0 -2
  436. package/lib/types/metadata.js.map +0 -1
  437. package/lib/types/options-base.d.ts +0 -4
  438. package/lib/types/options-base.js +0 -2
  439. package/lib/types/options-base.js.map +0 -1
  440. package/lib/types/options-generation.js +0 -2
  441. package/lib/types/options-generation.js.map +0 -1
  442. package/lib/types/options-load.d.ts +0 -5
  443. package/lib/types/options-load.js +0 -2
  444. package/lib/types/options-load.js.map +0 -1
  445. package/lib/types/options-transform.d.ts +0 -4
  446. package/lib/types/options-transform.js +0 -2
  447. package/lib/types/options-transform.js.map +0 -1
  448. package/lib/types/output-format.d.ts +0 -1
  449. package/lib/types/output-format.js +0 -2
  450. package/lib/types/output-format.js.map +0 -1
  451. package/lib/types/package-data-parsed.js +0 -2
  452. package/lib/types/package-data-parsed.js.map +0 -1
  453. package/lib/types/package-data.js +0 -2
  454. package/lib/types/package-data.js.map +0 -1
  455. package/lib/types/package-section-parsed.d.ts +0 -8
  456. package/lib/types/package-section-parsed.js +0 -2
  457. package/lib/types/package-section-parsed.js.map +0 -1
  458. package/lib/types/parsed-gir.d.ts +0 -5
  459. package/lib/types/parsed-gir.js +0 -2
  460. package/lib/types/parsed-gir.js.map +0 -1
  461. package/lib/types/parsed-package-data.d.ts +0 -6
  462. package/lib/types/parsed-package-data.js +0 -2
  463. package/lib/types/parsed-package-data.js.map +0 -1
  464. package/lib/types/part-of-class.d.ts +0 -7
  465. package/lib/types/part-of-class.js +0 -2
  466. package/lib/types/part-of-class.js.map +0 -1
  467. package/lib/types/part-of-module.d.ts +0 -6
  468. package/lib/types/part-of-module.js +0 -2
  469. package/lib/types/part-of-module.js.map +0 -1
  470. package/lib/types/property-case.d.ts +0 -1
  471. package/lib/types/property-case.js +0 -2
  472. package/lib/types/property-case.js.map +0 -1
  473. package/lib/types/resolve-type.d.ts +0 -4
  474. package/lib/types/resolve-type.js +0 -6
  475. package/lib/types/resolve-type.js.map +0 -1
  476. package/lib/types/template-data.d.ts +0 -7
  477. package/lib/types/template-data.js +0 -2
  478. package/lib/types/template-data.js.map +0 -1
  479. package/lib/types/transformation-case.d.ts +0 -1
  480. package/lib/types/transformation-case.js +0 -2
  481. package/lib/types/transformation-case.js.map +0 -1
  482. package/lib/types/transformations.d.ts +0 -4
  483. package/lib/types/transformations.js +0 -2
  484. package/lib/types/transformations.js.map +0 -1
  485. package/lib/types/ts-doc-tag.js +0 -2
  486. package/lib/types/ts-doc-tag.js.map +0 -1
  487. package/lib/types/ts-doc.js +0 -2
  488. package/lib/types/ts-doc.js.map +0 -1
  489. package/lib/types/type-gir-alias.js +0 -2
  490. package/lib/types/type-gir-alias.js.map +0 -1
  491. package/lib/types/type-gir-class.js +0 -2
  492. package/lib/types/type-gir-class.js.map +0 -1
  493. package/lib/types/type-gir-element.d.ts +0 -3
  494. package/lib/types/type-gir-element.js +0 -2
  495. package/lib/types/type-gir-element.js.map +0 -1
  496. package/lib/types/type-gir-enumeration-member.js +0 -2
  497. package/lib/types/type-gir-enumeration-member.js.map +0 -1
  498. package/lib/types/type-gir-enumeration.js +0 -2
  499. package/lib/types/type-gir-enumeration.js.map +0 -1
  500. package/lib/types/type-gir-function.d.ts +0 -1
  501. package/lib/types/type-gir-function.js +0 -2
  502. package/lib/types/type-gir-function.js.map +0 -1
  503. package/lib/types/type-gir-interface.js +0 -2
  504. package/lib/types/type-gir-interface.js.map +0 -1
  505. package/lib/types/type-gir-method.js +0 -2
  506. package/lib/types/type-gir-method.js.map +0 -1
  507. package/lib/types/type-gir-parameter.d.ts +0 -1
  508. package/lib/types/type-gir-parameter.js +0 -2
  509. package/lib/types/type-gir-parameter.js.map +0 -1
  510. package/lib/types/type-gir-property.js +0 -2
  511. package/lib/types/type-gir-property.js.map +0 -1
  512. package/lib/types/type-gir-variable.d.ts +0 -1
  513. package/lib/types/type-gir-variable.js +0 -2
  514. package/lib/types/type-gir-variable.js.map +0 -1
  515. package/lib/types/type-ts-element.d.ts +0 -3
  516. package/lib/types/type-ts-element.js +0 -2
  517. package/lib/types/type-ts-element.js.map +0 -1
  518. package/lib/types/type-ts-enumeration-member.js +0 -2
  519. package/lib/types/type-ts-enumeration-member.js.map +0 -1
  520. package/lib/types/type-ts-function.js +0 -2
  521. package/lib/types/type-ts-function.js.map +0 -1
  522. package/lib/types/type-ts-property.js +0 -2
  523. package/lib/types/type-ts-property.js.map +0 -1
  524. package/lib/types/user-config-load-result.d.ts +0 -6
  525. package/lib/types/user-config-load-result.js +0 -2
  526. package/lib/types/user-config-load-result.js.map +0 -1
  527. package/lib/types/user-config.js +0 -2
  528. package/lib/types/user-config.js.map +0 -1
  529. package/lib/util.d.ts +0 -20
  530. package/lib/util.js +0 -67
  531. package/lib/util.js.map +0 -1
  532. package/lib/utils/documentation.d.ts +0 -13
  533. package/lib/utils/documentation.js.map +0 -1
  534. package/lib/utils/files.d.ts +0 -21
  535. package/lib/utils/files.js +0 -62
  536. package/lib/utils/files.js.map +0 -1
  537. package/lib/utils/girs.d.ts +0 -45
  538. package/lib/utils/girs.js +0 -101
  539. package/lib/utils/girs.js.map +0 -1
  540. package/lib/utils/index.d.ts +0 -8
  541. package/lib/utils/index.js +0 -9
  542. package/lib/utils/index.js.map +0 -1
  543. package/lib/utils/naming.d.ts +0 -13
  544. package/lib/utils/naming.js +0 -40
  545. package/lib/utils/naming.js.map +0 -1
  546. package/lib/utils/numbers.js +0 -9
  547. package/lib/utils/numbers.js.map +0 -1
  548. package/lib/utils/objects.d.ts +0 -136
  549. package/lib/utils/objects.js.map +0 -1
  550. package/lib/utils/path.d.ts +0 -1
  551. package/lib/utils/path.js +0 -7
  552. package/lib/utils/path.js.map +0 -1
  553. package/lib/utils/strings.d.ts +0 -74
  554. package/lib/utils/strings.js +0 -121
  555. package/lib/utils/strings.js.map +0 -1
  556. package/lib/validators/class.d.ts +0 -7
  557. package/lib/validators/class.js +0 -217
  558. package/lib/validators/class.js.map +0 -1
  559. package/lib/validators/function-parameters.d.ts +0 -14
  560. package/lib/validators/function-parameters.js +0 -31
  561. package/lib/validators/function-parameters.js.map +0 -1
  562. package/lib/validators/interface.d.ts +0 -5
  563. package/lib/validators/interface.js +0 -16
  564. package/lib/validators/interface.js.map +0 -1
  565. package/lib/visitor.d.ts +0 -35
  566. package/lib/visitor.js +0 -29
  567. package/lib/visitor.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import { JSField } from "../gir/property.ts";
3
+ import { FunctionType, GenericType, GenerifiedType, NativeType } from "../gir.ts";
4
+
5
+ export default {
6
+ namespace: "Gtk",
7
+ version: "4.0",
8
+ modifier(namespace: IntrospectedNamespace) {
9
+ {
10
+ const Widget = namespace.assertClass("Widget");
11
+
12
+ Widget.fields.push(
13
+ new JSField({
14
+ name: "Symbol.iterator",
15
+ parent: Widget,
16
+ computed: true,
17
+ doc: "Gtk.Widget is an iterable of its children.",
18
+ type: new FunctionType({}, new GenerifiedType(new NativeType("IterableIterator"), new GenericType("Widget"))),
19
+ }),
20
+ );
21
+ }
22
+ },
23
+ };
@@ -0,0 +1,43 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import type { NSRegistry } from "../gir/registry.ts";
3
+ import gee1 from "./gee1.ts";
4
+ import gee08 from "./gee08.ts";
5
+ import gio from "./gio.ts";
6
+ import glib from "./glib.ts";
7
+ import gobject from "./gobject.ts";
8
+ import gtk4 from "./gtk4.ts";
9
+ import { shell14, shell15 } from "./shell.ts";
10
+ import tracker1 from "./tracker1.ts";
11
+
12
+ export type NamespaceInjection = (namespace: IntrospectedNamespace, registry: NSRegistry) => void;
13
+
14
+ function injectDefinitions(registry: NSRegistry, required = true) {
15
+ return (definition: { namespace: string; version: string; modifier: NamespaceInjection }) => {
16
+ const ns = registry.namespace(definition.namespace, definition.version);
17
+
18
+ if (required && !ns) {
19
+ throw new Error(`Namespace '${definition.namespace}' not found.`);
20
+ }
21
+
22
+ if (ns) {
23
+ definition.modifier(ns, registry);
24
+ }
25
+ };
26
+ }
27
+
28
+ export function inject(registry: NSRegistry) {
29
+ const $ = injectDefinitions(registry);
30
+
31
+ $(glib);
32
+ $(gobject);
33
+ $(gio);
34
+
35
+ const $_ = injectDefinitions(registry, false);
36
+
37
+ $_(tracker1);
38
+ $_(gee08);
39
+ $_(gee1);
40
+ $_(gtk4);
41
+ $_(shell14);
42
+ $_(shell15);
43
+ }
@@ -0,0 +1,45 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import type { NSRegistry } from "../gir/registry.ts";
3
+ import { NullableType, OrType, TypeIdentifier } from "../gir.ts";
4
+
5
+ const shellTemplate = (version: string) => ({
6
+ namespace: "Shell",
7
+ version,
8
+ modifier(namespace: IntrospectedNamespace, _registry: NSRegistry) {
9
+ // Get the GLSLEffect class which contains the add_glsl_snippet method
10
+ const GLSLEffect = namespace.assertClass("GLSLEffect");
11
+
12
+ // Find the add_glsl_snippet method
13
+ const addGlslSnippet = GLSLEffect.members.find((m) => m.name === "add_glsl_snippet");
14
+
15
+ // Change
16
+ // ```ts
17
+ // add_glsl_snippet(hook: SnippetHook | null, declarations: string, code: string, is_replace: boolean): void;
18
+ // ```
19
+ // to
20
+ // ```ts
21
+ // add_glsl_snippet(hook: SnippetHook | Cogl.SnippetHook | null, declarations: string, code: string, is_replace: boolean): void;
22
+ // ```
23
+
24
+ if (addGlslSnippet) {
25
+ // Create a new parameter with updated type using copy()
26
+ const updatedParameter = addGlslSnippet.parameters[0].copy({
27
+ type: new NullableType(
28
+ new OrType(new TypeIdentifier("SnippetHook", "Shell"), new TypeIdentifier("SnippetHook", "Cogl")),
29
+ ),
30
+ });
31
+
32
+ // Replace the original parameter
33
+ addGlslSnippet.parameters[0] = updatedParameter;
34
+ }
35
+ },
36
+ });
37
+
38
+ /** Shell 14 was introduced with GNOME 45 */
39
+ export const shell14 = shellTemplate("14");
40
+
41
+ /** Shell 15 was introduced with GNOME 47 */
42
+ export const shell15 = shellTemplate("15");
43
+
44
+ /** Shell 16 was introduced with GNOME 48 */
45
+ export const shell16 = shellTemplate("16");
@@ -0,0 +1,42 @@
1
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
2
+ import { IntrospectedRecord } from "../gir/record.ts";
3
+ import { ClassStructTypeIdentifier } from "../gir.ts";
4
+
5
+ export default {
6
+ namespace: "Tracker",
7
+ version: "1.0",
8
+ modifier(namespace: IntrospectedNamespace) {
9
+ const SparqlError = namespace.getEnum("Error");
10
+
11
+ if (!SparqlError) throw new Error("Error enum not found in Tracker.");
12
+
13
+ namespace.members.delete("Error");
14
+
15
+ SparqlError.name = "SparqlError";
16
+
17
+ namespace.members.set("SparqlError", SparqlError);
18
+
19
+ // Hack around broken references in Tracker
20
+
21
+ const CursorClass = namespace.members.get("SparqlCursorClass");
22
+
23
+ if (CursorClass instanceof IntrospectedRecord) {
24
+ // @ts-expect-error This is a private property by Tracker is cursed
25
+ CursorClass._structFor = new ClassStructTypeIdentifier("SparqlCursor", "Tracker");
26
+ }
27
+
28
+ const ConnectionClass = namespace.members.get("SparqlConnectionClass");
29
+
30
+ if (ConnectionClass instanceof IntrospectedRecord) {
31
+ // @ts-expect-error This is a private property by Tracker is cursed
32
+ ConnectionClass._structFor = new ClassStructTypeIdentifier("SparqlConnection", "Tracker");
33
+ }
34
+
35
+ const BuilderClass = namespace.members.get("SparqlBuilderClass");
36
+
37
+ if (BuilderClass instanceof IntrospectedRecord) {
38
+ // @ts-expect-error This is a private property by Tracker is cursed
39
+ BuilderClass._structFor = new ClassStructTypeIdentifier("SparqlBuilder", "Tracker");
40
+ }
41
+ },
42
+ };
@@ -0,0 +1,50 @@
1
+ import type { GirConstantElement } from "./types/index.ts";
2
+
3
+ export class LibraryVersion {
4
+ major: number | undefined;
5
+ minor: number | undefined;
6
+ patch: number | undefined;
7
+
8
+ constructor(constants: GirConstantElement[] = [], version = "0.0.0") {
9
+ const [_major, _minor, _micro] = version.split(".").filter((v) => v !== "");
10
+ if (_major) {
11
+ this.major = Number(_major) || undefined;
12
+ }
13
+ if (_minor) {
14
+ this.minor = Number(_minor) || undefined;
15
+ }
16
+ if (_micro) {
17
+ this.patch = Number(_micro) || undefined;
18
+ }
19
+
20
+ for (const constant of constants) {
21
+ if (constant.$.name === "MAJOR_VERSION" || (constant.$.name === "VERSION_MAJOR" && constant.$.value)) {
22
+ this.major = Number(constant.$.value) || undefined;
23
+ }
24
+ if (constant.$.name === "MINOR_VERSION" || (constant.$.name === "VERSION_MINOR" && constant.$.value)) {
25
+ this.minor = Number(constant.$.value) || undefined;
26
+ }
27
+ if (constant.$.name === "MICRO_VERSION" || (constant.$.name === "VERSION_MICRO" && constant.$.value)) {
28
+ this.patch = Number(constant.$.value) || undefined;
29
+ }
30
+ }
31
+ }
32
+
33
+ toString() {
34
+ return `${this.major || "0"}.${this.minor || "0"}.${this.patch || "0"}`;
35
+ }
36
+
37
+ /** Compare two library versions and return -1 if this version is greater than the other, 1 if this version is less than the other, and 0 if they are equal. */
38
+ compare(other: LibraryVersion) {
39
+ if (this.major !== other.major) {
40
+ return (this.major || 0) > (other.major || 0) ? -1 : 1;
41
+ }
42
+ if (this.minor !== other.minor) {
43
+ return (this.minor || 0) > (other.minor || 0) ? -1 : 1;
44
+ }
45
+ if (this.patch !== other.patch) {
46
+ return (this.patch || 0) > (other.patch || 0) ? -1 : 1;
47
+ }
48
+ return 0;
49
+ }
50
+ }
package/src/logger.ts ADDED
@@ -0,0 +1,104 @@
1
+ /**
2
+ * A logger that displays information in different colors on the console.
3
+ * In addition, the environment or the module currently being processed is also included as prepended to the logging string
4
+ */
5
+
6
+ import { blue, gray, green, red, yellow, yellowBright } from "colorette";
7
+
8
+ export class Logger {
9
+ private readonly verbose: boolean;
10
+ private readonly moduleName: string;
11
+ constructor(verbose: boolean, moduleName: string) {
12
+ this.verbose = verbose;
13
+ this.moduleName = moduleName;
14
+ }
15
+ private static prepend(txt: string, prepend: string): string {
16
+ if (typeof txt === "string") {
17
+ txt = `${prepend}${txt}`;
18
+ }
19
+ return txt;
20
+ }
21
+ /**
22
+ * Returns something like '[node][Gda-5.0] Could not find type 'Gda.SqlExpr' for 'expr''
23
+ * @param txt
24
+ * @param logLevel
25
+ */
26
+ private prependInfo(txt: string, logLevel?: "WARN:" | "ERROR:" | "INFO:" | "DEBUG:"): string {
27
+ if (logLevel || this.moduleName.length > 0) {
28
+ txt = Logger.prepend(txt, " ");
29
+ }
30
+ if (logLevel) {
31
+ if (this.moduleName.length > 0) {
32
+ txt = Logger.prepend(txt, ` ${logLevel}`);
33
+ } else {
34
+ txt = Logger.prepend(txt, logLevel);
35
+ }
36
+ }
37
+ if (this.moduleName.length > 0) {
38
+ txt = Logger.prepend(txt, `[${this.moduleName}]`);
39
+ }
40
+
41
+ return txt;
42
+ }
43
+
44
+ public log(...args: unknown[]): void {
45
+ if (!this.verbose) {
46
+ return;
47
+ }
48
+ console.log(...args);
49
+ }
50
+ public dir(...args: unknown[]): void {
51
+ if (!this.verbose) {
52
+ return;
53
+ }
54
+ args.forEach((arg) => {
55
+ console.dir(arg);
56
+ });
57
+ return;
58
+ }
59
+ public info(txt: string, ...args: unknown[]): void {
60
+ if (!this.verbose) {
61
+ return;
62
+ }
63
+ console.info(blue(txt), ...args);
64
+ }
65
+ public warn(txt: string, ...args: unknown[]): void {
66
+ if (!this.verbose) {
67
+ return;
68
+ }
69
+ txt = this.prependInfo(txt, "WARN:");
70
+ console.warn(yellow(txt), ...args);
71
+ }
72
+ public debug(txt: string, ...args: unknown[]): void {
73
+ if (!this.verbose) {
74
+ return;
75
+ }
76
+ txt = this.prependInfo(txt, "DEBUG:");
77
+ console.debug(yellowBright(txt), ...args);
78
+ }
79
+ public error(txt: string, ...args: unknown[]): void {
80
+ txt = this.prependInfo(txt, "ERROR:");
81
+ this.danger(txt, ...args);
82
+ }
83
+ public success(txt: string, ...args: unknown[]): void {
84
+ if (!this.verbose) {
85
+ return;
86
+ }
87
+ this.log(green(txt), ...args);
88
+ }
89
+ public danger(txt: string, ...args: unknown[]): void {
90
+ console.error(red(txt), ...args);
91
+ }
92
+ public muted(txt: string, ...args: unknown[]): void {
93
+ this.log(gray(txt), ...args);
94
+ }
95
+ public white(txt: string, ...args: unknown[]): void {
96
+ this.log(txt, ...args);
97
+ }
98
+ public yellow(txt: string, ...args: unknown[]): void {
99
+ this.log(yellow(txt), ...args);
100
+ }
101
+ public gray(txt: string, ...args: unknown[]): void {
102
+ this.log(gray(txt), ...args);
103
+ }
104
+ }
@@ -0,0 +1,57 @@
1
+ export const NO_TSDATA = (namespace?: string) => {
2
+ let message = "You need to set the tsData first!";
3
+ if (namespace) message = `[${namespace}] ${message}`;
4
+ return message;
5
+ };
6
+
7
+ // Error messages
8
+
9
+ export const ERROR_NO_MODULES_FOUND = (girDirectories: string[]) => `No module found in ${girDirectories.join(", ")}!
10
+ Please make sure that you have installed the necessary gir files.
11
+ For example with "sudo apt install libgtk-4-dev" for Gtk4 on Ubuntu or "sudo dnf install gtk4-devel" on Fedora.`;
12
+ export const ERROR_CONFIG_EXTENSION_UNSUPPORTED =
13
+ "Only configs with the extension .js and .json are currently supported. Do nothing";
14
+ export const ERROR_NO_MODULE_SPECIFIED = "Need to specify modules!";
15
+
16
+ // Warn messages
17
+
18
+ export const WARN_NO_GIR_FILE_FOUND_FOR_PACKAGE = (packageName: string) =>
19
+ `No gir file found for '${packageName}', this module will be ignored`;
20
+ export const WARN_CONSTANT_ALREADY_EXPORTED = (name: string) => `The constant '${name}' has already been exported`;
21
+
22
+ export const WARN_DUPLICATE_ENUM_IDENTIFIER = (name: string, renamed: string) =>
23
+ `Enum has a duplicate identifier '${name}', renamed to '${renamed}'!`;
24
+ export const WARN_DUPLICATE_SYMBOL = (symbol: string) => `Duplicate symbol: ${symbol}`;
25
+ export const WARN_DUPLICATE_PARAMETER = (paramName: string, namespace?: string) => {
26
+ let message = `Duplicate parameter name "${paramName}" found!`;
27
+ if (namespace) message = `[${namespace}] ${message}`;
28
+ return message;
29
+ };
30
+
31
+ export const WARN_NOT_FOUND_TYPE = (logName: string) => `Could not find type for "${logName}"`;
32
+ export const WARN_NOT_FOUND_PACKAGE_NAME = (namespace: string, implementation: string) =>
33
+ `Package name for namespace ${namespace} not found! (${implementation})`;
34
+
35
+ export const WARN_RENAMED_PROPERTY = (originalName: string, newName: string) =>
36
+ `Property name renamed from '${originalName}' to '${newName}'`;
37
+ export const WARN_RENAMED_FUNCTION = (originalName: string, newName: string) =>
38
+ `Function name renamed from '${originalName}' to '${newName}'`;
39
+ export const WARN_RENAMED_CLASS = (originalName: string, newName: string) =>
40
+ `Class name renamed from '${originalName}' to '${newName}'`;
41
+ export const WARN_RENAMED_CONSTANT = (originalName: string, newName: string) =>
42
+ `Constant name renamed from '${originalName}' to '${newName}'`;
43
+ export const WARN_RENAMED_FIELD = (originalName: string, newName: string) =>
44
+ `Field name renamed from '${originalName}' to '${newName}'`;
45
+ export const WARN_RENAMED_ENUM = (originalName: string, newName: string) =>
46
+ `Enum name renamed from '${originalName}' to '${newName}'`;
47
+ export const WARN_RENAMED_PARAMETER = (originalName: string, newName: string) =>
48
+ `Parameter name renamed from '${originalName}' to '${newName}'`;
49
+
50
+ // Info messages
51
+
52
+ export const DANGER_HTML_DOC_GENERATOR_NOT_IMPLEMENTED =
53
+ "The HtmlDocGenerator is currently not implemented. Do nothing...";
54
+ export const START_MODULE = "Start to generate .d.ts files...";
55
+ export const FILE_PARSING_DONE = "Files parsed, loading types...";
56
+ export const TSDATA_PARSING_DONE = "Typescript data loaded, generating .d.ts...";
57
+ export const GENERATING_TYPES_DONE = "Done.";
@@ -0,0 +1 @@
1
+ export * from "./template-engine.ts";
@@ -0,0 +1,178 @@
1
+ import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
+ import { createRequire } from "node:module";
3
+ import { dirname, extname, join, resolve } from "node:path";
4
+ import ejs from "ejs";
5
+
6
+ import { fileExists, Logger } from "../index.ts";
7
+ import type { TemplateData } from "../types/index.ts";
8
+
9
+ const require = createRequire(import.meta.url);
10
+
11
+ /**
12
+ * Core template engine for rendering EJS templates
13
+ * This is a generic utility that can be used by different generators
14
+ */
15
+ export class TemplateEngine {
16
+ protected log: Logger;
17
+ protected readonly templateDir: string;
18
+
19
+ constructor(templateDir?: string) {
20
+ this.templateDir = templateDir ?? this.resolveTemplateDirectory();
21
+ this.log = new Logger(false, "TemplateEngine");
22
+ }
23
+
24
+ /**
25
+ * Resolves the templates directory from the @ts-for-gir/templates package
26
+ * Try require.resolve first, fallback to workspace path for development
27
+ */
28
+ private resolveTemplateDirectory(): string {
29
+ try {
30
+ return join(dirname(require.resolve("@ts-for-gir/templates/package.json")), "templates");
31
+ } catch (_error) {
32
+ // Fallback for workspace development setup
33
+ return resolve(process.cwd(), "../../templates/templates");
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Gets the append template name for a given template filename
39
+ */
40
+ protected getAppendTemplateName(templateFilename: string): string {
41
+ let appendTemplateFilename = templateFilename;
42
+
43
+ if (appendTemplateFilename.endsWith(".d.ts")) {
44
+ appendTemplateFilename = appendTemplateFilename.replace(".d.ts", ".append.d.ts");
45
+ } else if (extname(appendTemplateFilename)) {
46
+ const ext = extname(appendTemplateFilename);
47
+ appendTemplateFilename = appendTemplateFilename.replace(ext, `.append${ext}`);
48
+ } else {
49
+ appendTemplateFilename += ".append";
50
+ }
51
+ return appendTemplateFilename;
52
+ }
53
+
54
+ /**
55
+ * Checks if the template file or directory exists and returns the path if found
56
+ */
57
+ public async exists(templateFilename: string): Promise<string | null> {
58
+ const fullTemplatePath = join(this.templateDir, templateFilename);
59
+ if (await fileExists(fullTemplatePath)) {
60
+ return fullTemplatePath;
61
+ }
62
+ return null;
63
+ }
64
+
65
+ /**
66
+ * Removes TypeScript directive comments from the first line of a template
67
+ */
68
+ protected removeTypeScriptDirectives(content: string): string {
69
+ const lines = content.split("\n");
70
+ if (lines.length > 0 && (lines[0].includes("// @ts-nocheck") || lines[0].includes("// @ts-ignore"))) {
71
+ lines.shift(); // Remove the first line
72
+ return lines.join("\n");
73
+ }
74
+ return content;
75
+ }
76
+
77
+ /**
78
+ * Reads a template file from filesystem and gets the raw string back
79
+ */
80
+ protected async read(templateFilename: string): Promise<string> {
81
+ const path = await this.exists(templateFilename);
82
+ if (path) {
83
+ const content = await readFile(path, "utf8");
84
+ return this.removeTypeScriptDirectives(content);
85
+ }
86
+ throw new Error(`Template '${path || templateFilename}' not found'`);
87
+ }
88
+
89
+ /**
90
+ * Reads all template files from a directory and gets the raw strings back
91
+ */
92
+ protected async readAll(templateDirname: string, fileExtension: string): Promise<{ [path: string]: string }> {
93
+ const path = await this.exists(templateDirname);
94
+ if (path) {
95
+ const files = (await readdir(path)).filter((file) => file.endsWith(fileExtension));
96
+ if (files.length === 0) {
97
+ throw new Error(`Template directory '${templateDirname}' is empty'`);
98
+ }
99
+ const results: { [path: string]: string } = {};
100
+ for (const file of files) {
101
+ const content = await readFile(join(path, file), "utf8");
102
+ results[file] = this.removeTypeScriptDirectives(content);
103
+ }
104
+ return results;
105
+ }
106
+ throw new Error(`Template directory '${templateDirname}' not found'`);
107
+ }
108
+
109
+ /**
110
+ * Renders a template string with the given data and options
111
+ */
112
+ protected async render(
113
+ templateString: string,
114
+ data: TemplateData,
115
+ options: Partial<ejs.Options> = {},
116
+ ): Promise<string> {
117
+ try {
118
+ const renderedTpl = await ejs.render(templateString, data, {
119
+ async: true,
120
+ ...options,
121
+ });
122
+ return renderedTpl;
123
+ } catch (error) {
124
+ this.log.error(`Error on render "${templateString}":`, error);
125
+ throw error;
126
+ }
127
+ }
128
+
129
+ /**
130
+ * Loads and renders a template and gets the rendered templates back
131
+ */
132
+ public async load(
133
+ templateFilename: string,
134
+ data: TemplateData,
135
+ ejsOptions: Partial<ejs.Options> = {},
136
+ ): Promise<{ prepend: string; append: string }> {
137
+ const fileContent = await this.read(templateFilename);
138
+ const prepend = await this.render(fileContent, data, ejsOptions);
139
+ let append = "";
140
+
141
+ const appendTemplateFilename = this.getAppendTemplateName(templateFilename);
142
+ if (await this.exists(appendTemplateFilename)) {
143
+ const appendFileContent = await this.read(appendTemplateFilename);
144
+ append = await this.render(appendFileContent, data, ejsOptions);
145
+ }
146
+
147
+ return { prepend, append };
148
+ }
149
+
150
+ /**
151
+ * Loads and renders all templates in a directory and gets the rendered templates back
152
+ */
153
+ public async loadAll(
154
+ templateDirname: string,
155
+ fileExtension: string,
156
+ data: TemplateData,
157
+ ejsOptions: Partial<ejs.Options> = {},
158
+ ): Promise<{ [path: string]: string }> {
159
+ const fileContents = await this.readAll(templateDirname, fileExtension);
160
+ for (const file of Object.keys(fileContents)) {
161
+ fileContents[file] = await this.render(fileContents[file], data, ejsOptions);
162
+ }
163
+ return fileContents;
164
+ }
165
+
166
+ /**
167
+ * Writes content to the filesystem
168
+ */
169
+ public async writeFile(content: string, outputPath: string): Promise<string> {
170
+ this.log.info("Writing to", outputPath);
171
+
172
+ // write template result file
173
+ await mkdir(dirname(outputPath), { recursive: true });
174
+ await writeFile(outputPath, content, { encoding: "utf8", flag: "w" });
175
+
176
+ return Promise.resolve(outputPath);
177
+ }
178
+ }
@@ -0,0 +1,4 @@
1
+ export interface AnswerVersion {
2
+ selected: string[]
3
+ unselected: string[]
4
+ }
@@ -0,0 +1,3 @@
1
+ import type { IntrospectedBase } from "../gir/introspected-base.ts";
2
+
3
+ export type AnyIntrospectedType = IntrospectedBase<any>;
@@ -0,0 +1,49 @@
1
+ import type { TypeExpression, Generic } from "../gir.ts";
2
+ import type { IntrospectedFunctionParameter } from "../gir/parameter.ts";
3
+ import type { GirVisitor } from "../visitor.ts";
4
+
5
+ export interface ClassFunctionCopyOptions<Parent> {
6
+ parent?: Parent;
7
+ name?: string;
8
+ interfaceParent?: any; // Using any to avoid circular deps
9
+ parameters?: IntrospectedFunctionParameter[];
10
+ outputParameters?: IntrospectedFunctionParameter[];
11
+ returnType?: TypeExpression;
12
+ }
13
+
14
+ export interface ClassFunctionOptions<Parent> {
15
+ name: string;
16
+ parameters?: IntrospectedFunctionParameter[];
17
+ output_parameters?: IntrospectedFunctionParameter[];
18
+ return_type?: TypeExpression;
19
+ parent: Parent;
20
+ originalParent?: Parent | null;
21
+ doc?: string | null;
22
+ }
23
+
24
+ // Type discriminators for function types
25
+ export const FunctionTypeKind = {
26
+ CLASS_FUNCTION: 'CLASS_FUNCTION',
27
+ VIRTUAL_CLASS_FUNCTION: 'VIRTUAL_CLASS_FUNCTION',
28
+ STATIC_CLASS_FUNCTION: 'STATIC_CLASS_FUNCTION',
29
+ CONSTRUCTOR: 'CONSTRUCTOR'
30
+ } as const;
31
+
32
+ export type FunctionTypeKind = typeof FunctionTypeKind[keyof typeof FunctionTypeKind];
33
+
34
+ // Base interface for all class functions to enable type checking
35
+ export interface ClassFunctionLike {
36
+ readonly __functionTypeKind: FunctionTypeKind;
37
+ readonly parameters: IntrospectedFunctionParameter[];
38
+ readonly output_parameters: IntrospectedFunctionParameter[];
39
+ readonly generics: Generic[];
40
+ returnTypeDoc?: string | null;
41
+ interfaceParent?: any;
42
+
43
+ anyify(): any;
44
+ shouldAnyify(): boolean;
45
+ return(): TypeExpression;
46
+ getCallbackParameters(): any;
47
+ copy(options?: any): any;
48
+ accept(visitor: GirVisitor): any;
49
+ }
@@ -0,0 +1,5 @@
1
+ import type { IntrospectedClassMember } from "../gir/introspected-class-member.ts";
2
+ import type { IntrospectedClassFunction } from "../gir/introspected-classes.ts";
3
+ import type { IntrospectedProperty } from "../gir/property.ts";
4
+
5
+ export type ClassMember = IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty;
@@ -0,0 +1,14 @@
1
+ import type { GirClassElement, GirUnionElement, GirInterfaceElement, GirRecordElement, TypeGirClass } from './index.ts'
2
+
3
+ export interface ClassParent {
4
+ parentName: string
5
+ qualifiedParentName: string
6
+ /** qualified if its module != qualifiedName's module */
7
+ localParentName: string
8
+ type: 'parent' | 'prerequisite' | 'implements'
9
+ /** Parent class / interface */
10
+ cls?: GirClassElement | GirUnionElement | GirInterfaceElement | GirRecordElement
11
+ girTypeName: TypeGirClass
12
+ /** True if the parent dependency exists */
13
+ dependencyExists: boolean
14
+ }
@@ -0,0 +1,45 @@
1
+ import type {
2
+ TypeIdentifier,
3
+ } from "../gir.ts";
4
+ import type {
5
+ IntrospectedClassFunction,
6
+ } from "../gir/introspected-classes.ts";
7
+ import type { IntrospectedConstructor } from "../gir/constructor.ts";
8
+ import type { IntrospectedClassCallback } from "../gir/introspected-classes.ts";
9
+ import type { IntrospectedProperty, IntrospectedField } from "../gir/property.ts";
10
+ import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
11
+ import type { IntrospectedInterface } from "../gir/introspected-classes.ts";
12
+ import type { IntrospectedClass } from "../gir/introspected-classes.ts";
13
+ import type { IntrospectedRecord } from "../gir/record.ts";
14
+
15
+ export interface ClassDefinition {
16
+ superType: TypeIdentifier;
17
+ interfaces: TypeIdentifier[];
18
+ mainConstructor: IntrospectedConstructor;
19
+ constructors: IntrospectedConstructor[];
20
+ members: IntrospectedClassFunction[];
21
+ props: IntrospectedProperty[];
22
+ fields: IntrospectedField[];
23
+ callbacks: IntrospectedClassCallback[];
24
+ }
25
+
26
+ export interface ResolutionNode {
27
+ identifier: TypeIdentifier;
28
+ node: IntrospectedBaseClass;
29
+ }
30
+
31
+ export interface InterfaceResolution extends ResolutionNode, Iterable<InterfaceResolution | ClassResolution> {
32
+ extends(): InterfaceResolution | ClassResolution | undefined;
33
+ node: IntrospectedInterface;
34
+ }
35
+
36
+ export interface ClassResolution extends ResolutionNode, Iterable<ClassResolution> {
37
+ extends(): ClassResolution | undefined;
38
+ implements(): InterfaceResolution[];
39
+ node: IntrospectedClass;
40
+ }
41
+
42
+ export interface RecordResolution extends ResolutionNode, Iterable<RecordResolution> {
43
+ extends(): RecordResolution | undefined;
44
+ node: IntrospectedRecord;
45
+ }
@@ -0,0 +1,5 @@
1
+ import type { UserConfig } from './user-config.ts'
2
+
3
+ export interface ConfigFlags extends UserConfig {
4
+ configName: string
5
+ }