@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,264 @@
1
+ import type {
2
+ GirCallableParamElement,
3
+ GirCallableReturn,
4
+ GirConstantElement,
5
+ GirDocElement,
6
+ GirFieldElement,
7
+ GirFunctionElement,
8
+ GirInfoAttrs,
9
+ GirMethodElement,
10
+ GirType,
11
+ } from "@gi.ts/parser";
12
+ import { GirDirection } from "@gi.ts/parser";
13
+ import { LazyReporter } from "@ts-for-gir/reporter";
14
+ import type { IntrospectedNamespace } from "../gir/namespace.ts";
15
+ import {
16
+ ArrayType,
17
+ BigintOrNumberType,
18
+ ClosureType,
19
+ GenerifiedTypeIdentifier,
20
+ NativeType,
21
+ NullableType,
22
+ type TypeExpression,
23
+ TypeIdentifier,
24
+ VoidType,
25
+ } from "../gir.ts";
26
+ import type { IntrospectedMetadata } from "../types/introspected.ts";
27
+ import { deprecatedVersion, introducedVersion, isDeprecated } from "./girs.ts";
28
+ import { isPrimitiveType, parseTypeExpression, resolvePrimitiveArrayType } from "./types.ts";
29
+
30
+ export const girParsingReporter = new LazyReporter("GirParsing");
31
+
32
+ /**
33
+ * Parse documentation from a GIR element
34
+ */
35
+ export function parseDoc(element: GirDocElement): string | null {
36
+ const el = element.doc?.[0]?._;
37
+
38
+ return el ? `${el}` : null;
39
+ }
40
+
41
+ /**
42
+ * Parse deprecated documentation from a GIR element
43
+ */
44
+ export function parseDeprecatedDoc(element: GirDocElement): string | null {
45
+ return element["doc-deprecated"]?.[0]?._ ?? null;
46
+ }
47
+
48
+ /**
49
+ * Parse metadata from a GIR element
50
+ */
51
+ export function parseMetadata(element: { $: GirInfoAttrs } & GirDocElement): IntrospectedMetadata | undefined {
52
+ const version = introducedVersion(element);
53
+ const deprecatedIn = deprecatedVersion(element);
54
+ const deprecated = isDeprecated(element);
55
+ const doc = parseDeprecatedDoc(element);
56
+
57
+ if (!version && !deprecated && !deprecatedIn && !doc) {
58
+ return undefined;
59
+ }
60
+
61
+ return {
62
+ ...(deprecated ? { deprecated } : {}),
63
+ ...(doc ? { deprecatedDoc: doc } : {}),
64
+ ...(deprecatedIn ? { deprecatedVersion: deprecatedIn } : {}),
65
+ ...(version ? { introducedVersion: version } : {}),
66
+ };
67
+ }
68
+
69
+ /**
70
+ * This function determines whether a given type is a "pointer type"...
71
+ * Any type where the c:type ends with *
72
+ */
73
+ function isPointerType(types: GirType[] | undefined) {
74
+ const type = types?.[0];
75
+ if (!type) return false;
76
+
77
+ const ctype = type.$["c:type"];
78
+ if (!ctype) return false;
79
+
80
+ const typeName = type.$.name;
81
+ if (!typeName) return false;
82
+
83
+ if (isPrimitiveType(typeName)) return false;
84
+
85
+ return ctype.endsWith("*");
86
+ }
87
+
88
+ /**
89
+ * Decode the type from GIR elements
90
+ */
91
+ export function getType(
92
+ ns: IntrospectedNamespace,
93
+ param?: GirConstantElement | GirCallableReturn | GirFieldElement,
94
+ ): TypeExpression {
95
+ const modName = ns.namespace;
96
+
97
+ if (!param) return VoidType;
98
+
99
+ let name = "";
100
+ let arrayDepth: number | null = null;
101
+ let length: number | null = null;
102
+ let isPointer = false;
103
+
104
+ const parameter = param as GirCallableParamElement;
105
+ if (parameter.array?.[0]) {
106
+ arrayDepth = 1;
107
+
108
+ const [array] = parameter.array;
109
+
110
+ if (array.$ && array.$.length != null) {
111
+ length = array.$.length;
112
+ }
113
+
114
+ if (array.type?.[0].$?.name) {
115
+ name = array.type[0].$.name;
116
+ } else if (array.array) {
117
+ let arr = array;
118
+ let depth = 1;
119
+
120
+ while (Array.isArray(arr.array)) {
121
+ arr = arr.array[0];
122
+ depth++;
123
+ }
124
+
125
+ const possibleName = arr.type?.[0].$.name;
126
+ if (possibleName) {
127
+ name = possibleName;
128
+ } else {
129
+ name = "unknown";
130
+ const cType = (arr.type?.[0].$ as Record<string, string>)?.["c:type"] || "unknown";
131
+ girParsingReporter
132
+ .get()
133
+ .reportTypeResolutionWarning(
134
+ cType,
135
+ ns.namespace,
136
+ `Failed to find array type in ${ns.packageName}, marking as unknown`,
137
+ `c:type=${cType}`,
138
+ );
139
+ }
140
+ arrayDepth = depth;
141
+ isPointer = isPointerType(array.type);
142
+ } else {
143
+ name = "unknown";
144
+ }
145
+ } else if (parameter.type?.[0]?.$) {
146
+ const possibleName = parameter.type[0].$.name;
147
+ if (possibleName) {
148
+ name = possibleName;
149
+ } else {
150
+ name = "unknown";
151
+ const cType = (parameter.type[0].$ as Record<string, string>)?.["c:type"] || "unknown";
152
+ girParsingReporter
153
+ .get()
154
+ .reportTypeResolutionWarning(
155
+ cType,
156
+ modName,
157
+ `Failed to find type in ${modName}, marking as unknown`,
158
+ `c:type=${cType}`,
159
+ );
160
+ }
161
+ isPointer = isPointerType(parameter.type);
162
+ } else if (parameter.varargs || (parameter.$ && parameter.$.name === "...")) {
163
+ arrayDepth = 1;
164
+ name = "any";
165
+ } else {
166
+ name = "unknown";
167
+ girParsingReporter
168
+ .get()
169
+ .reportTypeResolutionWarning(
170
+ "varargs",
171
+ modName,
172
+ `Unknown varargs type in ${modName}, marking as unknown`,
173
+ parameter.$ ? JSON.stringify(parameter.$) : undefined,
174
+ );
175
+ }
176
+
177
+ let closure = null as null | number;
178
+
179
+ if (parameter.$?.closure) {
180
+ closure = parameter.$.closure;
181
+ }
182
+
183
+ const nullable = parameter.$ && parameter.$.nullable === "1";
184
+ const allowNone = parameter.$ && parameter.$["allow-none"] === "1";
185
+
186
+ const x = name.split(" ");
187
+ if (x.length === 1) {
188
+ name = x[0];
189
+ } else {
190
+ name = x[1];
191
+ }
192
+
193
+ let variableType: TypeExpression = parseTypeExpression(ns.namespace, name);
194
+
195
+ if (variableType instanceof TypeIdentifier) {
196
+ if (variableType.is("GLib", "List") || variableType.is("GLib", "SList")) {
197
+ // TODO: $?.name was not necessary in gi.ts, but TelepathyLogger
198
+ // fails to generate now.
199
+ const listType = parameter?.type?.[0].type?.[0]?.$?.name;
200
+
201
+ if (listType) {
202
+ name = listType;
203
+ variableType = parseTypeExpression(ns.namespace, name);
204
+
205
+ arrayDepth = 1;
206
+ }
207
+ } else if (variableType.is("GLib", "HashTable")) {
208
+ const keyType = parameter?.type?.[0]?.type?.[0]?.$.name;
209
+ const valueType = parameter?.type?.[0]?.type?.[1]?.$.name;
210
+
211
+ if (keyType && valueType) {
212
+ const key = parseTypeExpression(ns.namespace, keyType);
213
+ const value = parseTypeExpression(ns.namespace, valueType);
214
+
215
+ variableType = new GenerifiedTypeIdentifier("HashTable", "GLib", [key, value]);
216
+ }
217
+ }
218
+ }
219
+
220
+ if (arrayDepth != null) {
221
+ const primitiveArrayType = resolvePrimitiveArrayType(name, arrayDepth);
222
+
223
+ if (primitiveArrayType) {
224
+ const [primitiveName, primitiveArrayDepth] = primitiveArrayType;
225
+
226
+ variableType = ArrayType.new({
227
+ type: primitiveName,
228
+ arrayDepth: primitiveArrayDepth,
229
+ length,
230
+ });
231
+ } else {
232
+ variableType = ArrayType.new({ type: variableType, arrayDepth, length });
233
+ }
234
+ } else if (closure != null) {
235
+ variableType = ClosureType.new({ type: variableType, user_data: closure });
236
+ }
237
+
238
+ if (
239
+ parameter.$ &&
240
+ (parameter.$.direction === GirDirection.Inout || parameter.$.direction === GirDirection.Out) &&
241
+ (nullable || allowNone) &&
242
+ !(variableType instanceof NativeType) &&
243
+ variableType !== BigintOrNumberType
244
+ ) {
245
+ return new NullableType(variableType);
246
+ }
247
+
248
+ if ((!parameter.$?.direction || parameter.$.direction === GirDirection.In) && nullable) {
249
+ return new NullableType(variableType);
250
+ }
251
+
252
+ variableType.isPointer = isPointer;
253
+
254
+ return variableType;
255
+ }
256
+
257
+ /**
258
+ * Check if a function/method element has a shadow attribute
259
+ */
260
+ export function hasShadow(
261
+ obj: GirFunctionElement | GirMethodElement,
262
+ ): obj is GirFunctionElement & { $: { shadows: string } } {
263
+ return obj.$.shadows != null;
264
+ }
@@ -0,0 +1,112 @@
1
+ import type { GirInfoAttrs } from "@gi.ts/parser";
2
+ import type { TsDoc } from "../types/index.ts";
3
+
4
+ /**
5
+ * Split a package name into namespace and version
6
+ */
7
+ export const splitModuleName = (packageName: string): { packageName: string; namespace: string; version: string } => {
8
+ // Workaround for Vte-4-2.91
9
+ if (packageName.startsWith("Vte-4")) {
10
+ return {
11
+ packageName,
12
+ namespace: "Vte",
13
+ version: packageName.replace("Vte-", ""),
14
+ };
15
+ }
16
+ if (!packageName.includes("-")) {
17
+ return {
18
+ packageName,
19
+ namespace: packageName,
20
+ version: "",
21
+ };
22
+ }
23
+ // There are modules that use multiple hyphens like 'GUPnP-DLNA-1.0'
24
+ const splits = packageName.split("-");
25
+ const version = splits.splice(-1, 1)[0];
26
+ const namespace = splits.join("");
27
+
28
+ return {
29
+ packageName,
30
+ namespace,
31
+ version,
32
+ };
33
+ };
34
+
35
+ /** Remove namespace prefix */
36
+ export const removeNamespace = (type: string, namespace: string) => {
37
+ if (type.startsWith(`${namespace}.`)) {
38
+ type = type.substring(namespace.length + 1);
39
+ }
40
+ return type;
41
+ };
42
+
43
+ /** Remove class module name prefix */
44
+ export const removeClassModule = removeNamespace;
45
+
46
+ /**
47
+ * Add namespace prefix
48
+ */
49
+ export const addNamespace = (type: string, namespace: string) => {
50
+ if (!type.startsWith(`${namespace}.`)) {
51
+ type = `${namespace}.${type}`;
52
+ }
53
+ return type;
54
+ };
55
+
56
+ /**
57
+ * Check if a line is a comment line
58
+ * @param line The line to check
59
+ * @returns Whether the line is a comment line or not
60
+ */
61
+ export const isCommentLine = (line: string) => {
62
+ const lineTrim = line.trim();
63
+ return lineTrim.startsWith("//") || (lineTrim.startsWith("/*") && lineTrim.endsWith("*/"));
64
+ };
65
+
66
+ /**
67
+ * Convert a GirBoolean to a boolean
68
+ * @param boolStr The GirBoolean string
69
+ * @param defaultVal The default value
70
+ * @returns The boolean value
71
+ */
72
+ export const girBool = (boolStr: string | undefined, defaultVal = false): boolean => {
73
+ if (boolStr) {
74
+ if (parseInt(boolStr, 10) === 0) return false;
75
+ return true;
76
+ }
77
+ return defaultVal;
78
+ };
79
+
80
+ export const printGirDocComment = (tsDoc: TsDoc, config: { noComments: boolean }) => {
81
+ const desc: string[] = [];
82
+ if (config.noComments) {
83
+ return desc.join("\n");
84
+ }
85
+
86
+ const text = tsDoc.text;
87
+
88
+ if (text) {
89
+ if (text) {
90
+ const lines = text.split("\n");
91
+ if (lines.length) {
92
+ for (const line of lines) {
93
+ desc.push(`${line}`);
94
+ }
95
+ }
96
+ }
97
+
98
+ for (const tag of tsDoc.tags) {
99
+ if (tag.paramName) {
100
+ desc.push(`@${tag.tagName} ${tag.paramName} ${tag.text}`);
101
+ } else {
102
+ desc.push(`@${tag.tagName} ${tag.text}`);
103
+ }
104
+ }
105
+ }
106
+ return desc.join("\n");
107
+ };
108
+
109
+ export const isIntrospectable = (e: { $?: GirInfoAttrs }) => !e?.$?.introspectable || e.$.introspectable === "1";
110
+ export const isDeprecated = (e: { $: GirInfoAttrs }) => e?.$ && e.$.deprecated === "1";
111
+ export const deprecatedVersion = (e: { $: GirInfoAttrs }) => e?.$?.["deprecated-version"];
112
+ export const introducedVersion = (e: { $: GirInfoAttrs }) => e?.$?.version;
@@ -0,0 +1,14 @@
1
+ export * from "./conflicts.ts";
2
+ export * from "./documentation.ts";
3
+ export * from "./files.ts";
4
+ export * from "./generation.ts";
5
+ export * from "./gir-parsing.ts";
6
+ export * from "./girs.ts";
7
+ export * from "./naming.ts";
8
+ export * from "./numbers.ts";
9
+ export * from "./objects.ts";
10
+ export * from "./path.ts";
11
+ export * from "./registry.ts";
12
+ export * from "./strings.ts";
13
+ export * from "./type-resolution.ts";
14
+ export * from "./types.ts";
@@ -0,0 +1,188 @@
1
+ import { RESERVED_NAMESPACE_NAMES } from "../constants.ts";
2
+ import { isFirstCharNumeric, upperCamelCase } from "./strings.ts";
3
+
4
+ // Reserved words for identifier sanitization
5
+ const reservedWords = [
6
+ "abstract",
7
+ "arguments",
8
+ "await",
9
+ "boolean",
10
+ "break",
11
+ "byte",
12
+ "case",
13
+ "catch",
14
+ "char",
15
+ "class",
16
+ "const",
17
+ "continue",
18
+ "constructor", // This isn't technically reserved, but it's problematic.
19
+ "debugger",
20
+ "default",
21
+ "delete",
22
+ "do",
23
+ "else",
24
+ "enum",
25
+ "eval",
26
+ "export",
27
+ "extends",
28
+ "false",
29
+ "final",
30
+ "finally",
31
+ "for",
32
+ "function",
33
+ "goto",
34
+ "if",
35
+ "implements",
36
+ "import",
37
+ "in",
38
+ "instanceof",
39
+ "interface",
40
+ "let",
41
+ "native",
42
+ "new",
43
+ "null",
44
+ "package",
45
+ "private",
46
+ "protected",
47
+ "public",
48
+ "return",
49
+ "short",
50
+ "static",
51
+ "super",
52
+ "switch",
53
+ "synchronized",
54
+ "this",
55
+ "throw",
56
+ "throws",
57
+ "transient",
58
+ "true",
59
+ "try",
60
+ "typeof",
61
+ "var",
62
+ "void",
63
+ "volatile",
64
+ "while",
65
+ "with",
66
+ "yield",
67
+ ];
68
+
69
+ // Map to store sanitized identifiers
70
+ export const SanitizedIdentifiers = new Map<string, string>();
71
+
72
+ /**
73
+ * Transform a package name to import name format (lowercase)
74
+ * @param packageName The package name to transform
75
+ * @returns The transformed import name
76
+ */
77
+ export function transformImportName(packageName: string): string {
78
+ return packageName.toLowerCase();
79
+ }
80
+
81
+ /**
82
+ * Transform a module namespace name to the proper format
83
+ * Handles numeric names and reserved namespace names
84
+ * @param name The namespace name to transform
85
+ * @returns The transformed namespace name
86
+ */
87
+ export function transformModuleNamespaceName(name: string): string {
88
+ // Handle numeric names - prepend 'TODO_' if name starts with a number
89
+ name = transformNumericName(name);
90
+
91
+ // Convert to upperCamelCase
92
+ name = upperCamelCase(name);
93
+
94
+ // Handle reserved namespace names
95
+ if (RESERVED_NAMESPACE_NAMES[name]) {
96
+ name = `${name}_`;
97
+ }
98
+
99
+ return name;
100
+ }
101
+
102
+ /**
103
+ * Transform names starting with numbers by prepending 'TODO_'
104
+ * In JavaScript there can be no variables, methods, class names or enum names that start with a number
105
+ * @param name The name to transform
106
+ * @returns The transformed name
107
+ */
108
+ function transformNumericName(name: string): string {
109
+ if (isFirstCharNumeric(name)) {
110
+ name = `TODO_${name}`;
111
+ }
112
+ return name;
113
+ }
114
+
115
+ /**
116
+ * Sanitize identifier name to be valid JavaScript identifier
117
+ * @param namespace The namespace for the identifier (can be null)
118
+ * @param name The name to sanitize
119
+ * @returns The sanitized identifier name
120
+ */
121
+ export function sanitizeIdentifierName(namespace: string | null, name: string): string {
122
+ // This is a unique case where the name is "empty".
123
+ if (name === "") {
124
+ return "''";
125
+ }
126
+
127
+ let sanitized_name = name.replace(/[^A-z0-9_]/gi, "_");
128
+
129
+ if (reservedWords.includes(sanitized_name)) {
130
+ sanitized_name = `__${sanitized_name}`;
131
+ }
132
+
133
+ if (sanitized_name.match(/^[^A-z_]/) != null) {
134
+ sanitized_name = `__${sanitized_name}`;
135
+ }
136
+
137
+ if (namespace && sanitized_name !== name) {
138
+ SanitizedIdentifiers.set(`${namespace}.${name}`, `${namespace}.${sanitized_name}`);
139
+ }
140
+
141
+ return sanitized_name;
142
+ }
143
+
144
+ /**
145
+ * Sanitize namespace name - fix broken namespacing in some GIRs
146
+ * @param namespace The namespace to sanitize
147
+ * @returns The sanitized namespace
148
+ */
149
+ export function sanitizeNamespace(namespace: string): string {
150
+ if (namespace === "Tracker_Vala") {
151
+ return "Tracker";
152
+ }
153
+
154
+ return namespace;
155
+ }
156
+
157
+ /**
158
+ * Sanitize member names for safe usage
159
+ * @param name The member name to sanitize
160
+ * @returns The sanitized member name
161
+ */
162
+ export function sanitizeMemberName(name: string): string {
163
+ // This is a unique case where the name is "empty".
164
+ if (name === "") {
165
+ return "''";
166
+ }
167
+
168
+ return name.replace(/[^A-z0-9_]/gi, "_");
169
+ }
170
+
171
+ /**
172
+ * Check if a name would be invalid as JavaScript identifier
173
+ * @param name The name to check
174
+ * @returns True if the name would be invalid
175
+ */
176
+ export function isInvalid(name: string): boolean {
177
+ if (reservedWords.includes(name)) {
178
+ return true;
179
+ }
180
+
181
+ const sanitized = sanitizeMemberName(name);
182
+
183
+ if (sanitized.match(/^[^A-z_]/) != null) {
184
+ return true;
185
+ }
186
+
187
+ return false;
188
+ }
@@ -3,4 +3,6 @@
3
3
  * @param str The string to check
4
4
  * @returns Whether the string is numeric or not
5
5
  */
6
- export declare const isNumeric: (str: string) => boolean;
6
+ export const isNumeric = (str: string): boolean => {
7
+ return !Number.isNaN(Number(str) - parseFloat(str));
8
+ };
@@ -1,6 +1,7 @@
1
- /* eslint-disable @typescript-eslint/unbound-method */
2
- import lodash from 'lodash';
3
- export { inspect } from 'util';
1
+ import lodash from "lodash";
2
+
3
+ export { inspect } from "node:util";
4
+
4
5
  /**
5
6
  * Performs a deep comparison between two values to determine if they are
6
7
  * equivalent.
@@ -27,6 +28,7 @@ export { inspect } from 'util';
27
28
  * // => false
28
29
  */
29
30
  export const isEqual = lodash.isEqual;
31
+
30
32
  /**
31
33
  * Creates an array of values by running each element in collection through iteratee. The iteratee is
32
34
  * invoked with three arguments: (value, index|key, collection).
@@ -44,6 +46,7 @@ export const isEqual = lodash.isEqual;
44
46
  * @return Returns the new mapped array.
45
47
  */
46
48
  export const map = lodash.map;
49
+
47
50
  /**
48
51
  * Iterates over elements of collection, returning the first element predicate returns truthy for.
49
52
  * The predicate is invoked with three arguments: (value, index|key, collection).
@@ -54,6 +57,7 @@ export const map = lodash.map;
54
57
  * @return Returns the matched element, else undefined.
55
58
  */
56
59
  export const find = lodash.find;
60
+
57
61
  /**
58
62
  * Recursively merges own and inherited enumerable properties of source
59
63
  * objects into the destination object, skipping source properties that resolve
@@ -82,6 +86,7 @@ export const find = lodash.find;
82
86
  * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
83
87
  */
84
88
  export const merge = lodash.merge;
89
+
85
90
  /**
86
91
  * Creates a shallow clone of value.
87
92
  *
@@ -94,6 +99,7 @@ export const merge = lodash.merge;
94
99
  * @return Returns the cloned value.
95
100
  */
96
101
  export const clone = lodash.clone;
102
+
97
103
  /**
98
104
  * This method is like clone except that it recursively clones value.
99
105
  *
@@ -101,22 +107,23 @@ export const clone = lodash.clone;
101
107
  * @return Returns the deep cloned value.
102
108
  */
103
109
  export const cloneDeep = lodash.cloneDeep;
110
+
104
111
  /**
105
112
  * Checking whether some variable is iterable
106
113
  * @see https://stackoverflow.com/a/32538867
107
114
  * @param obj Variable to check for iterable
108
115
  * @returns Whether the variable is iterable or not
109
116
  */
110
- export const isIterable = (obj) => {
111
- return obj != null && typeof obj[Symbol.iterator] === 'function';
117
+ export const isIterable = (obj: unknown[]): boolean => {
118
+ return obj != null && typeof obj[Symbol.iterator] === "function";
112
119
  };
120
+
113
121
  /**
114
122
  * Union (a ∪ b): create a set that contains the elements of both set a and set b.
115
123
  * See https://2ality.com/2015/01/es6-set-operations.html#union
116
124
  * @param target
117
125
  * @param source
118
126
  */
119
- export const union = (target, source) => {
120
- return (target = new Set([...target, ...source]));
127
+ export const union = <T>(target: Set<T> | T[], source: Set<T> | T[]): Set<T> => {
128
+ return new Set<T>([...target, ...source]);
121
129
  };
122
- //# sourceMappingURL=objects.js.map
@@ -0,0 +1,7 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+
4
+ // Get __filename on ESM
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ // Get __dirname on ESM, resolve to the root directory of this package
7
+ export const __dirname = resolve(dirname(__filename), "../.."); // TODO: Bundled this must be '..' but unbundled it must be '../..'
@@ -0,0 +1,5 @@
1
+ import { SanitizedIdentifiers } from "./naming.ts";
2
+
3
+ export function getSanitizedIdentifiers(): ReadonlyMap<string, string> {
4
+ return SanitizedIdentifiers;
5
+ }