@ts-for-gir/lib 3.3.0 → 4.0.0-beta.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 (313) hide show
  1. package/README.md +0 -1
  2. package/lib/conflict-resolver.d.ts +2 -39
  3. package/lib/conflict-resolver.js +4 -228
  4. package/lib/conflict-resolver.js.map +1 -1
  5. package/lib/constants.d.ts +3 -7
  6. package/lib/constants.js +6 -16
  7. package/lib/constants.js.map +1 -1
  8. package/lib/dependency-manager.d.ts +3 -5
  9. package/lib/dependency-manager.js +10 -17
  10. package/lib/dependency-manager.js.map +1 -1
  11. package/lib/formatters/default.d.ts +4 -0
  12. package/lib/formatters/default.js +7 -0
  13. package/lib/formatters/default.js.map +1 -0
  14. package/lib/formatters/formatter.d.ts +3 -0
  15. package/lib/formatters/formatter.js +3 -0
  16. package/lib/formatters/formatter.js.map +1 -0
  17. package/lib/formatters/json.d.ts +4 -0
  18. package/lib/formatters/json.js +7 -0
  19. package/lib/formatters/json.js.map +1 -0
  20. package/lib/generators/dts/gio.d.ts +2 -0
  21. package/lib/generators/dts/gio.js +9 -0
  22. package/lib/generators/dts/gio.js.map +1 -0
  23. package/lib/generators/dts/glib.d.ts +2 -0
  24. package/lib/generators/dts/glib.js +514 -0
  25. package/lib/generators/dts/glib.js.map +1 -0
  26. package/lib/generators/dts/gobject.d.ts +2 -0
  27. package/lib/generators/dts/gobject.js +117 -0
  28. package/lib/generators/dts/gobject.js.map +1 -0
  29. package/lib/generators/dts-inline.d.ts +8 -0
  30. package/lib/generators/dts-inline.js +59 -0
  31. package/lib/generators/dts-inline.js.map +1 -0
  32. package/lib/generators/dts-modules.d.ts +8 -0
  33. package/lib/generators/dts-modules.js +100 -0
  34. package/lib/generators/dts-modules.js.map +1 -0
  35. package/lib/generators/dts.d.ts +45 -0
  36. package/lib/generators/dts.js +682 -0
  37. package/lib/generators/dts.js.map +1 -0
  38. package/lib/generators/generator.d.ts +45 -0
  39. package/lib/generators/generator.js +9 -0
  40. package/lib/generators/generator.js.map +1 -0
  41. package/lib/generators/index.d.ts +5 -0
  42. package/lib/generators/index.js +6 -0
  43. package/lib/generators/index.js.map +1 -0
  44. package/lib/generators/json.d.ts +256 -0
  45. package/lib/generators/json.js +869 -0
  46. package/lib/generators/json.js.map +1 -0
  47. package/lib/generics/clutter.d.ts +26 -0
  48. package/lib/generics/clutter.js +49 -0
  49. package/lib/generics/clutter.js.map +1 -0
  50. package/lib/generics/generify.d.ts +2 -0
  51. package/lib/generics/generify.js +39 -0
  52. package/lib/generics/generify.js.map +1 -0
  53. package/lib/generics/gio.d.ts +7 -0
  54. package/lib/generics/gio.js +51 -0
  55. package/lib/generics/gio.js.map +1 -0
  56. package/lib/generics/glib.d.ts +7 -0
  57. package/lib/generics/glib.js +18 -0
  58. package/lib/generics/glib.js.map +1 -0
  59. package/lib/generics/meta.d.ts +21 -0
  60. package/lib/generics/meta.js +26 -0
  61. package/lib/generics/meta.js.map +1 -0
  62. package/lib/generics/st.d.ts +16 -0
  63. package/lib/generics/st.js +92 -0
  64. package/lib/generics/st.js.map +1 -0
  65. package/lib/generics/visitor.d.ts +20 -0
  66. package/lib/generics/visitor.js +259 -0
  67. package/lib/generics/visitor.js.map +1 -0
  68. package/lib/gir/alias.d.ts +24 -0
  69. package/lib/gir/alias.js +43 -0
  70. package/lib/gir/alias.js.map +1 -0
  71. package/lib/gir/base.d.ts +62 -0
  72. package/lib/gir/base.js +95 -0
  73. package/lib/gir/base.js.map +1 -0
  74. package/lib/gir/class.d.ts +189 -0
  75. package/lib/gir/class.js +1132 -0
  76. package/lib/gir/class.js.map +1 -0
  77. package/lib/gir/const.d.ts +25 -0
  78. package/lib/gir/const.js +43 -0
  79. package/lib/gir/const.js.map +1 -0
  80. package/lib/gir/enum.d.ts +45 -0
  81. package/lib/gir/enum.js +164 -0
  82. package/lib/gir/enum.js.map +1 -0
  83. package/lib/gir/function.d.ts +199 -0
  84. package/lib/gir/function.js +683 -0
  85. package/lib/gir/function.js.map +1 -0
  86. package/lib/gir/generics.d.ts +5 -0
  87. package/lib/gir/generics.js +57 -0
  88. package/lib/gir/generics.js.map +1 -0
  89. package/lib/gir/namespace.d.ts +21 -0
  90. package/lib/gir/namespace.js +57 -0
  91. package/lib/gir/namespace.js.map +1 -0
  92. package/lib/gir/nodes.d.ts +11 -0
  93. package/lib/gir/nodes.js +12 -0
  94. package/lib/gir/nodes.js.map +1 -0
  95. package/lib/gir/property.d.ts +60 -0
  96. package/lib/gir/property.js +128 -0
  97. package/lib/gir/property.js.map +1 -0
  98. package/lib/gir/registry.d.ts +51 -0
  99. package/lib/gir/registry.js +144 -0
  100. package/lib/gir/registry.js.map +1 -0
  101. package/lib/gir/signal.d.ts +33 -0
  102. package/lib/gir/signal.js +165 -0
  103. package/lib/gir/signal.js.map +1 -0
  104. package/lib/gir/util.d.ts +49 -0
  105. package/lib/gir/util.js +556 -0
  106. package/lib/gir/util.js.map +1 -0
  107. package/lib/gir-factory.d.ts +2 -2
  108. package/lib/gir-factory.js +8 -44
  109. package/lib/gir-factory.js.map +1 -1
  110. package/lib/gir-module.d.ts +61 -221
  111. package/lib/gir-module.js +387 -2106
  112. package/lib/gir-module.js.map +1 -1
  113. package/lib/gir.d.ts +251 -0
  114. package/lib/gir.js +638 -0
  115. package/lib/gir.js.map +1 -0
  116. package/lib/index.d.ts +5 -4
  117. package/lib/index.js +7 -4
  118. package/lib/index.js.map +1 -1
  119. package/lib/injection/callbacks/index.d.ts +0 -1
  120. package/lib/injection/callbacks/index.js +0 -1
  121. package/lib/injection/callbacks/index.js.map +1 -1
  122. package/lib/injection/classes/index.d.ts +0 -1
  123. package/lib/injection/classes/index.js +0 -1
  124. package/lib/injection/classes/index.js.map +1 -1
  125. package/lib/injection/injector.d.ts +2 -3
  126. package/lib/injection/injector.js +6 -8
  127. package/lib/injection/injector.js.map +1 -1
  128. package/lib/injections/gee08.d.ts +7 -0
  129. package/lib/injections/gee08.js +68 -0
  130. package/lib/injections/gee08.js.map +1 -0
  131. package/lib/injections/gee1.d.ts +7 -0
  132. package/lib/injections/gee1.js +28 -0
  133. package/lib/injections/gee1.js.map +1 -0
  134. package/lib/injections/gio.d.ts +7 -0
  135. package/lib/injections/gio.js +431 -0
  136. package/lib/injections/gio.js.map +1 -0
  137. package/lib/injections/glib.d.ts +7 -0
  138. package/lib/injections/glib.js +204 -0
  139. package/lib/injections/glib.js.map +1 -0
  140. package/lib/injections/gobject.d.ts +7 -0
  141. package/lib/injections/gobject.js +479 -0
  142. package/lib/injections/gobject.js.map +1 -0
  143. package/lib/injections/inject.d.ts +4 -0
  144. package/lib/injections/inject.js +28 -0
  145. package/lib/injections/inject.js.map +1 -0
  146. package/lib/injections/tracker1.d.ts +7 -0
  147. package/lib/injections/tracker1.js +30 -0
  148. package/lib/injections/tracker1.js.map +1 -0
  149. package/lib/library-version.js.map +1 -1
  150. package/lib/logger.d.ts +1 -3
  151. package/lib/logger.js +3 -8
  152. package/lib/logger.js.map +1 -1
  153. package/lib/messages.d.ts +1 -4
  154. package/lib/messages.js +1 -3
  155. package/lib/messages.js.map +1 -1
  156. package/lib/registry.d.ts +9 -0
  157. package/lib/registry.js +13 -0
  158. package/lib/registry.js.map +1 -0
  159. package/lib/symtable.js +1 -1
  160. package/lib/symtable.js.map +1 -1
  161. package/lib/transformation.d.ts +4 -5
  162. package/lib/transformation.js +31 -127
  163. package/lib/transformation.js.map +1 -1
  164. package/lib/types/generate-config.d.ts +4 -11
  165. package/lib/types/gir-alias-element.d.ts +3 -12
  166. package/lib/types/gir-bitfield-element.d.ts +3 -14
  167. package/lib/types/gir-callable-param-element.d.ts +3 -31
  168. package/lib/types/gir-callable-params.d.ts +7 -0
  169. package/lib/types/gir-callable-params.js +2 -0
  170. package/lib/types/gir-callable-params.js.map +1 -0
  171. package/lib/types/gir-callable-return.d.ts +3 -20
  172. package/lib/types/gir-callback-element.d.ts +3 -12
  173. package/lib/types/gir-class-element.d.ts +3 -34
  174. package/lib/types/gir-constant-element.d.ts +3 -14
  175. package/lib/types/gir-constructor-element.d.ts +3 -5
  176. package/lib/types/gir-enum-element.d.ts +3 -16
  177. package/lib/types/gir-field-element.d.ts +3 -16
  178. package/lib/types/gir-function-element.d.ts +3 -5
  179. package/lib/types/gir-instance-parameter.d.ts +2 -17
  180. package/lib/types/gir-interface-element.d.ts +4 -19
  181. package/lib/types/gir-member-element.d.ts +4 -16
  182. package/lib/types/gir-method-element.d.ts +4 -10
  183. package/lib/types/gir-namespace.d.ts +14 -17
  184. package/lib/types/gir-property-element.d.ts +3 -22
  185. package/lib/types/gir-record-element.d.ts +3 -23
  186. package/lib/types/gir-repository.d.ts +3 -14
  187. package/lib/types/gir-signal.d.ts +3 -18
  188. package/lib/types/gir-union-element.d.ts +3 -16
  189. package/lib/types/gir-virtual-method.d.ts +3 -7
  190. package/lib/types/index.d.ts +3 -54
  191. package/lib/types/index.js +3 -54
  192. package/lib/types/index.js.map +1 -1
  193. package/lib/types/parsed-gir.d.ts +3 -2
  194. package/lib/types/transformations.d.ts +1 -8
  195. package/lib/types/user-config.d.ts +0 -11
  196. package/lib/types.d.ts +23 -0
  197. package/lib/types.js +2 -0
  198. package/lib/types.js.map +1 -0
  199. package/lib/util.d.ts +20 -0
  200. package/lib/util.js +67 -0
  201. package/lib/util.js.map +1 -0
  202. package/lib/utils.d.ts +2 -30
  203. package/lib/utils.js +0 -56
  204. package/lib/utils.js.map +1 -1
  205. package/lib/validators/class.d.ts +7 -0
  206. package/lib/validators/class.js +217 -0
  207. package/lib/validators/class.js.map +1 -0
  208. package/lib/validators/interface.d.ts +5 -0
  209. package/lib/validators/interface.js +16 -0
  210. package/lib/validators/interface.js.map +1 -0
  211. package/lib/visitor.d.ts +35 -0
  212. package/lib/visitor.js +29 -0
  213. package/lib/visitor.js.map +1 -0
  214. package/package.json +14 -10
  215. package/lib/gir-parser.d.ts +0 -2
  216. package/lib/gir-parser.js +0 -69
  217. package/lib/gir-parser.js.map +0 -1
  218. package/lib/injection/callbacks/node-gtk/index.d.ts +0 -2
  219. package/lib/injection/callbacks/node-gtk/index.js +0 -2
  220. package/lib/injection/callbacks/node-gtk/index.js.map +0 -1
  221. package/lib/injection/classes/node-gtk/gdk-4.0.d.ts +0 -2
  222. package/lib/injection/classes/node-gtk/gdk-4.0.js +0 -32
  223. package/lib/injection/classes/node-gtk/gdk-4.0.js.map +0 -1
  224. package/lib/injection/classes/node-gtk/gio-2.0.d.ts +0 -2
  225. package/lib/injection/classes/node-gtk/gio-2.0.js +0 -14
  226. package/lib/injection/classes/node-gtk/gio-2.0.js.map +0 -1
  227. package/lib/injection/classes/node-gtk/glib-2.0.d.ts +0 -2
  228. package/lib/injection/classes/node-gtk/glib-2.0.js +0 -19
  229. package/lib/injection/classes/node-gtk/glib-2.0.js.map +0 -1
  230. package/lib/injection/classes/node-gtk/gobject-2.0.d.ts +0 -2
  231. package/lib/injection/classes/node-gtk/gobject-2.0.js +0 -66
  232. package/lib/injection/classes/node-gtk/gobject-2.0.js.map +0 -1
  233. package/lib/injection/classes/node-gtk/graphene-1.0.d.ts +0 -2
  234. package/lib/injection/classes/node-gtk/graphene-1.0.js +0 -133
  235. package/lib/injection/classes/node-gtk/graphene-1.0.js.map +0 -1
  236. package/lib/injection/classes/node-gtk/gtk-3.0.d.ts +0 -2
  237. package/lib/injection/classes/node-gtk/gtk-3.0.js +0 -31
  238. package/lib/injection/classes/node-gtk/gtk-3.0.js.map +0 -1
  239. package/lib/injection/classes/node-gtk/gtk-4.0.d.ts +0 -2
  240. package/lib/injection/classes/node-gtk/gtk-4.0.js +0 -52
  241. package/lib/injection/classes/node-gtk/gtk-4.0.js.map +0 -1
  242. package/lib/injection/classes/node-gtk/index.d.ts +0 -2
  243. package/lib/injection/classes/node-gtk/index.js +0 -19
  244. package/lib/injection/classes/node-gtk/index.js.map +0 -1
  245. package/lib/injection/classes/node-gtk/pango-1.0.d.ts +0 -2
  246. package/lib/injection/classes/node-gtk/pango-1.0.js +0 -31
  247. package/lib/injection/classes/node-gtk/pango-1.0.js.map +0 -1
  248. package/lib/types/build-type.d.ts +0 -1
  249. package/lib/types/build-type.js +0 -2
  250. package/lib/types/build-type.js.map +0 -1
  251. package/lib/types/environment.d.ts +0 -1
  252. package/lib/types/environment.js +0 -2
  253. package/lib/types/environment.js.map +0 -1
  254. package/lib/types/gir-any-type.d.ts +0 -5
  255. package/lib/types/gir-any-type.js +0 -2
  256. package/lib/types/gir-any-type.js.map +0 -1
  257. package/lib/types/gir-array-type.d.ts +0 -20
  258. package/lib/types/gir-array-type.js +0 -3
  259. package/lib/types/gir-array-type.js.map +0 -1
  260. package/lib/types/gir-boolean.d.ts +0 -1
  261. package/lib/types/gir-boolean.js +0 -2
  262. package/lib/types/gir-boolean.js.map +0 -1
  263. package/lib/types/gir-boxed-element.d.ts +0 -15
  264. package/lib/types/gir-boxed-element.js +0 -2
  265. package/lib/types/gir-boxed-element.js.map +0 -1
  266. package/lib/types/gir-c-include.d.ts +0 -7
  267. package/lib/types/gir-c-include.js +0 -2
  268. package/lib/types/gir-c-include.js.map +0 -1
  269. package/lib/types/gir-callable-attrs.d.ts +0 -15
  270. package/lib/types/gir-callable-attrs.js +0 -3
  271. package/lib/types/gir-callable-attrs.js.map +0 -1
  272. package/lib/types/gir-callable-param.d.ts +0 -7
  273. package/lib/types/gir-callable-param.js +0 -2
  274. package/lib/types/gir-callable-param.js.map +0 -1
  275. package/lib/types/gir-direction.d.ts +0 -7
  276. package/lib/types/gir-direction.js +0 -9
  277. package/lib/types/gir-direction.js.map +0 -1
  278. package/lib/types/gir-doc-element.d.ts +0 -68
  279. package/lib/types/gir-doc-element.js +0 -2
  280. package/lib/types/gir-doc-element.js.map +0 -1
  281. package/lib/types/gir-implements.d.ts +0 -8
  282. package/lib/types/gir-implements.js +0 -2
  283. package/lib/types/gir-implements.js.map +0 -1
  284. package/lib/types/gir-include.d.ts +0 -9
  285. package/lib/types/gir-include.js +0 -2
  286. package/lib/types/gir-include.js.map +0 -1
  287. package/lib/types/gir-info-attrs.d.ts +0 -13
  288. package/lib/types/gir-info-attrs.js +0 -2
  289. package/lib/types/gir-info-attrs.js.map +0 -1
  290. package/lib/types/gir-info-elements.d.ts +0 -5
  291. package/lib/types/gir-info-elements.js +0 -2
  292. package/lib/types/gir-info-elements.js.map +0 -1
  293. package/lib/types/gir-package.d.ts +0 -7
  294. package/lib/types/gir-package.js +0 -2
  295. package/lib/types/gir-package.js.map +0 -1
  296. package/lib/types/gir-prerequisite.d.ts +0 -5
  297. package/lib/types/gir-prerequisite.js +0 -2
  298. package/lib/types/gir-prerequisite.js.map +0 -1
  299. package/lib/types/gir-transfer-ownership-type.d.ts +0 -5
  300. package/lib/types/gir-transfer-ownership-type.js +0 -7
  301. package/lib/types/gir-transfer-ownership-type.js.map +0 -1
  302. package/lib/types/gir-transfer-ownership.d.ts +0 -9
  303. package/lib/types/gir-transfer-ownership.js +0 -2
  304. package/lib/types/gir-transfer-ownership.js.map +0 -1
  305. package/lib/types/gir-type.d.ts +0 -14
  306. package/lib/types/gir-type.js +0 -2
  307. package/lib/types/gir-type.js.map +0 -1
  308. package/lib/types/gir-var-args.d.ts +0 -5
  309. package/lib/types/gir-var-args.js +0 -2
  310. package/lib/types/gir-var-args.js.map +0 -1
  311. package/lib/types/module-type.d.ts +0 -1
  312. package/lib/types/module-type.js +0 -2
  313. package/lib/types/module-type.js.map +0 -1
@@ -0,0 +1,556 @@
1
+ import { deprecatedVersion, introducedVersion, isDeprecated } from "./namespace.js";
2
+ import { GirDirection } from "@gi.ts/parser";
3
+ import { TypeIdentifier, ThisType, ArrayType, ClosureType, GTypeType, BinaryType, ObjectType, NullableType, StringType, NumberType, BooleanType, Uint8ArrayType, AnyType, UnknownType, NeverType, VoidType, GenerifiedTypeIdentifier, GenericType, NativeType } from "../gir.js";
4
+ import { TwoKeyMap } from "../util.js";
5
+ const reservedWords = [
6
+ // For now, at least, the typescript compiler doesn't throw on numerical types like int, float, etc.
7
+ "abstract",
8
+ "arguments",
9
+ "await",
10
+ "boolean",
11
+ "break",
12
+ "byte",
13
+ "case",
14
+ "catch",
15
+ "char",
16
+ "class",
17
+ "const",
18
+ "continue",
19
+ "constructor", // This isn't technically reserved, but it's problematic.
20
+ "debugger",
21
+ "default",
22
+ "delete",
23
+ "do",
24
+ // "double",
25
+ "else",
26
+ "enum",
27
+ "eval",
28
+ "export",
29
+ "extends",
30
+ "false",
31
+ "final",
32
+ "finally",
33
+ // "float",
34
+ "for",
35
+ "function",
36
+ "goto",
37
+ "if",
38
+ "implements",
39
+ "import",
40
+ "in",
41
+ "instanceof",
42
+ // "int",
43
+ "interface",
44
+ "let",
45
+ // "long",
46
+ "native",
47
+ "new",
48
+ "null",
49
+ "package",
50
+ "private",
51
+ "protected",
52
+ "public",
53
+ "return",
54
+ "short",
55
+ "static",
56
+ "super",
57
+ "switch",
58
+ "synchronized",
59
+ "this",
60
+ "throw",
61
+ "throws",
62
+ "transient",
63
+ "true",
64
+ "try",
65
+ "typeof",
66
+ "var",
67
+ "void",
68
+ "volatile",
69
+ "while",
70
+ "with",
71
+ "yield"
72
+ ];
73
+ export function getAliasType(modName, _ns, parameter) {
74
+ let name = parameter.type?.[0].$["name"] || "unknown";
75
+ const nameParts = name.split(" ");
76
+ if (nameParts.length === 1) {
77
+ name = nameParts[0];
78
+ }
79
+ else {
80
+ name = nameParts[1];
81
+ }
82
+ return parseTypeExpression(modName, name);
83
+ }
84
+ /**
85
+ * This function determines whether a given type is a "pointer type"...
86
+ *
87
+ * Any type where the c:type ends with *
88
+ */
89
+ function isPointerType(types) {
90
+ const type = types?.[0];
91
+ if (!type)
92
+ return false;
93
+ const ctype = type.$["c:type"];
94
+ if (!ctype)
95
+ return false;
96
+ const typeName = type.$.name;
97
+ if (!typeName)
98
+ return false;
99
+ if (isPrimitiveType(typeName))
100
+ return false;
101
+ return ctype.endsWith("*");
102
+ }
103
+ /* Decode the type */
104
+ export function getType(ns, param) {
105
+ const modName = ns.name;
106
+ if (!param)
107
+ return VoidType;
108
+ let name = "";
109
+ let arrayDepth = null;
110
+ let length = null;
111
+ let isPointer = false;
112
+ const parameter = param;
113
+ if (parameter.array && parameter.array[0]) {
114
+ arrayDepth = 1;
115
+ const [array] = parameter.array;
116
+ if (array.$ && array.$.length != null) {
117
+ length = Number.parseInt(array.$.length, 10);
118
+ if (Number.isNaN(length)) {
119
+ throw new Error(`Error parsing array length: ${array.$.length}`);
120
+ }
121
+ }
122
+ if (array.type && array.type[0].$ && array.type[0].$["name"]) {
123
+ name = array.type[0].$["name"];
124
+ }
125
+ else if (array.array) {
126
+ let arr = array;
127
+ let depth = 1;
128
+ while (Array.isArray(arr.array)) {
129
+ arr = arr.array[0];
130
+ depth++;
131
+ }
132
+ const possibleName = arr.type?.[0].$["name"];
133
+ if (possibleName) {
134
+ name = possibleName;
135
+ }
136
+ else {
137
+ name = "unknown";
138
+ console.log(`Failed to find array type in ${modName}: `, JSON.stringify(parameter.$, null, 4), "\nMarking as unknown!");
139
+ }
140
+ arrayDepth = depth;
141
+ isPointer = isPointerType(array.type);
142
+ }
143
+ else {
144
+ name = "unknown";
145
+ }
146
+ }
147
+ else if (parameter.type && parameter.type[0] && parameter.type[0].$) {
148
+ const possibleName = parameter.type[0].$["name"];
149
+ if (possibleName) {
150
+ name = possibleName;
151
+ }
152
+ else {
153
+ name = "unknown";
154
+ console.log(`Failed to find type in ${modName}: `, JSON.stringify(parameter.type[0].$, null, 4), "\nMarking as unknown!");
155
+ }
156
+ isPointer = isPointerType(parameter.type);
157
+ }
158
+ else if (parameter.varargs || (parameter.$ && parameter.$.name === "...")) {
159
+ arrayDepth = 1;
160
+ name = "any";
161
+ }
162
+ else {
163
+ name = "unknown";
164
+ console.log(`Unknown varargs type in ${modName}: `, JSON.stringify(parameter.$, null, 4), "\nMarking as unknown!");
165
+ }
166
+ let closure = null;
167
+ if (parameter.$ && parameter.$.closure) {
168
+ closure = Number.parseInt(parameter.$.closure, 10);
169
+ if (Number.isNaN(closure)) {
170
+ throw new Error(`Error parsing closure data position: ${parameter.$.closure}`);
171
+ }
172
+ }
173
+ const nullable = parameter.$ && parameter.$["nullable"] === "1";
174
+ const allowNone = parameter.$ && parameter.$["allow-none"] === "1";
175
+ const x = name.split(" ");
176
+ if (x.length === 1) {
177
+ name = x[0];
178
+ }
179
+ else {
180
+ name = x[1];
181
+ }
182
+ const baseType = parseTypeString(name);
183
+ if (!baseType) {
184
+ throw new Error(`Un-parsable type: ${name}`);
185
+ }
186
+ let variableType = parseTypeExpression(modName, name);
187
+ if (variableType instanceof TypeIdentifier) {
188
+ if (variableType.is("GLib", "List") || variableType.is("GLib", "SList")) {
189
+ // TODO: $?.name was not necessary in gi.ts, but TelepathyLogger
190
+ // fails to generate now.
191
+ const listType = parameter?.type?.[0].type?.[0]?.$?.name;
192
+ if (listType) {
193
+ name = listType;
194
+ variableType = parseTypeExpression(modName, name);
195
+ arrayDepth = 1;
196
+ }
197
+ }
198
+ else if (variableType.is("GLib", "HashTable")) {
199
+ const keyType = parameter?.type?.[0]?.type?.[0]?.$.name;
200
+ const valueType = parameter?.type?.[0]?.type?.[1]?.$.name;
201
+ if (keyType && valueType) {
202
+ const key = parseTypeExpression(modName, keyType);
203
+ const value = parseTypeExpression(modName, valueType);
204
+ variableType = new GenerifiedTypeIdentifier("HashTable", "GLib", [key, value]);
205
+ }
206
+ }
207
+ }
208
+ if (arrayDepth != null) {
209
+ const primitiveArrayType = resolvePrimitiveArrayType(name, arrayDepth);
210
+ if (primitiveArrayType) {
211
+ const [primitiveName, primitiveArrayDepth] = primitiveArrayType;
212
+ variableType = ArrayType.new({
213
+ type: primitiveName,
214
+ arrayDepth: primitiveArrayDepth,
215
+ length
216
+ });
217
+ }
218
+ else {
219
+ variableType = ArrayType.new({ type: variableType, arrayDepth, length });
220
+ }
221
+ }
222
+ else if (closure != null) {
223
+ variableType = ClosureType.new({ type: variableType, user_data: closure });
224
+ }
225
+ if (parameter.$ &&
226
+ (parameter.$.direction === GirDirection.Inout || parameter.$.direction === GirDirection.Out) &&
227
+ (nullable || allowNone) &&
228
+ !(variableType instanceof NativeType)) {
229
+ return new NullableType(variableType);
230
+ }
231
+ if ((!parameter.$?.direction || parameter.$.direction === GirDirection.In) && nullable) {
232
+ return new NullableType(variableType);
233
+ }
234
+ variableType.isPointer = isPointer;
235
+ return variableType;
236
+ }
237
+ export const SanitizedIdentifiers = new Map();
238
+ export function sanitizeIdentifierName(namespace, name) {
239
+ // This is a unique case where the name is "empty".
240
+ if (name === "") {
241
+ return "''";
242
+ }
243
+ let sanitized_name = name.replace(/[^A-z0-9_]/gi, "_");
244
+ if (reservedWords.includes(sanitized_name)) {
245
+ sanitized_name = `__${sanitized_name}`;
246
+ }
247
+ if (sanitized_name.match(/^[^A-z_]/) != null) {
248
+ sanitized_name = `__${sanitized_name}`;
249
+ }
250
+ if (namespace && sanitized_name !== name) {
251
+ SanitizedIdentifiers.set(`${namespace}.${name}`, `${namespace}.${sanitized_name}`);
252
+ }
253
+ return sanitized_name;
254
+ }
255
+ // TODO: Until we support resolving via c:type, fix GIRs with
256
+ // broken namespacing...
257
+ export function sanitizeNamespace(namespace) {
258
+ if (namespace === "Tracker_Vala") {
259
+ return "Tracker";
260
+ }
261
+ return namespace;
262
+ }
263
+ export function sanitizeMemberName(name) {
264
+ // This is a unique case where the name is "empty".
265
+ if (name === "") {
266
+ return "''";
267
+ }
268
+ return name.replace(/[^A-z0-9_]/gi, "_");
269
+ }
270
+ export function isInvalid(name) {
271
+ if (reservedWords.includes(name)) {
272
+ return true;
273
+ }
274
+ const sanitized = sanitizeMemberName(name);
275
+ if (sanitized.match(/^[^A-z_]/) != null) {
276
+ return true;
277
+ }
278
+ return false;
279
+ }
280
+ export function parseDoc(element) {
281
+ const el = element.doc?.[0]?._;
282
+ return el ? `${el}` : null;
283
+ }
284
+ export function parseDeprecatedDoc(element) {
285
+ return element["doc-deprecated"]?.[0]?._ ?? null;
286
+ }
287
+ export function parseMetadata(element) {
288
+ const version = introducedVersion(element);
289
+ const deprecatedIn = deprecatedVersion(element);
290
+ const deprecated = isDeprecated(element);
291
+ const doc = parseDeprecatedDoc(element);
292
+ if (!version && !deprecated && !deprecatedIn && !doc) {
293
+ return undefined;
294
+ }
295
+ return {
296
+ ...(deprecated ? { deprecated } : {}),
297
+ ...(doc ? { deprecatedDoc: doc } : {}),
298
+ ...(deprecatedIn ? { deprecatedVersion: deprecatedIn } : {}),
299
+ ...(version ? { introducedVersion: version } : {})
300
+ };
301
+ }
302
+ export function parseTypeString(type) {
303
+ if (type.includes(".")) {
304
+ const parts = type.split(".");
305
+ if (parts.length > 2) {
306
+ throw new Error(`Invalid type string ${type} passed.`);
307
+ }
308
+ const [namespace, name] = parts;
309
+ return { name, namespace };
310
+ }
311
+ else {
312
+ return { name: type, namespace: null };
313
+ }
314
+ }
315
+ export function parseTypeIdentifier(modName, type) {
316
+ const baseType = parseTypeString(type);
317
+ if (baseType.namespace) {
318
+ return new TypeIdentifier(baseType.name, baseType.namespace);
319
+ }
320
+ else {
321
+ return new TypeIdentifier(baseType.name, modName);
322
+ }
323
+ }
324
+ export function parseTypeExpression(modName, type) {
325
+ const baseType = parseTypeString(type);
326
+ if (baseType.namespace) {
327
+ return new TypeIdentifier(baseType.name, baseType.namespace).sanitize();
328
+ }
329
+ else {
330
+ const primitiveType = resolvePrimitiveType(baseType.name);
331
+ if (primitiveType !== null) {
332
+ return primitiveType;
333
+ }
334
+ else {
335
+ return new TypeIdentifier(baseType.name, modName).sanitize();
336
+ }
337
+ }
338
+ }
339
+ export function resolvePrimitiveArrayType(name, arrayDepth) {
340
+ if (arrayDepth > 0) {
341
+ switch (name) {
342
+ case "gint8":
343
+ case "guint8":
344
+ return [Uint8ArrayType, arrayDepth - 1];
345
+ }
346
+ }
347
+ const resolvedName = resolvePrimitiveType(name);
348
+ if (resolvedName) {
349
+ return [resolvedName, arrayDepth];
350
+ }
351
+ else {
352
+ return null;
353
+ }
354
+ }
355
+ export function isPrimitiveType(name) {
356
+ return resolvePrimitiveType(name) !== null;
357
+ }
358
+ export function resolvePrimitiveType(name) {
359
+ switch (name) {
360
+ case "":
361
+ console.error("Resolving '' to any on " + name);
362
+ return AnyType;
363
+ case "filename":
364
+ return StringType;
365
+ // Pass this through
366
+ case "GType":
367
+ return GTypeType;
368
+ case "utf8":
369
+ return StringType;
370
+ case "void": // Support TS "void"
371
+ case "none":
372
+ return VoidType;
373
+ // TODO Some libraries are bad and don't use g-prefixed numerical types
374
+ case "uint":
375
+ case "int":
376
+ case "uint8":
377
+ case "int8":
378
+ case "uint16":
379
+ case "int16":
380
+ case "uint32":
381
+ case "int32":
382
+ case "int64":
383
+ case "uint64":
384
+ case "double":
385
+ case "long":
386
+ case "float":
387
+ // Most libraries will use these though:
388
+ case "gshort":
389
+ case "guint32":
390
+ case "guint16":
391
+ case "gint16":
392
+ case "gunichar":
393
+ case "gint8":
394
+ case "gint32":
395
+ case "gushort":
396
+ case "gfloat":
397
+ case "gchar":
398
+ case "guint":
399
+ case "glong":
400
+ case "gulong":
401
+ case "gint":
402
+ case "guint8":
403
+ case "guint64":
404
+ case "gint64":
405
+ case "gdouble":
406
+ case "gssize":
407
+ case "gsize":
408
+ return NumberType;
409
+ case "gboolean":
410
+ return BooleanType;
411
+ case "gpointer": // This is typically used in callbacks to pass data, so we'll allow anything.
412
+ return AnyType;
413
+ case "object":
414
+ return ObjectType;
415
+ case "va_list":
416
+ return AnyType;
417
+ case "guintptr": // You can't use pointers in GJS! (at least that I'm aware of)
418
+ return NeverType;
419
+ case "never": // Support TS "never"
420
+ return NeverType;
421
+ case "unknown": // Support TS "unknown"
422
+ return UnknownType;
423
+ case "any": // Support TS "any"
424
+ return AnyType;
425
+ case "this": // Support TS "this"
426
+ return ThisType;
427
+ case "number": // Support TS "number"
428
+ return NumberType;
429
+ case "string": // Support TS "string"
430
+ return StringType;
431
+ case "boolean": // Support TS "boolean"
432
+ return BooleanType;
433
+ case "object": // Support TS "object"
434
+ return ObjectType;
435
+ }
436
+ return null;
437
+ }
438
+ export function resolveDirectedType(type, direction) {
439
+ if (type instanceof ArrayType) {
440
+ if ((direction === GirDirection.In || direction === GirDirection.Inout) &&
441
+ type.type.equals(Uint8ArrayType) &&
442
+ type.arrayDepth === 0) {
443
+ return new BinaryType(type, StringType);
444
+ }
445
+ else {
446
+ // Rewrap arrays if they have directional types
447
+ return type.rewrap(resolveDirectedType(type.type, direction) ?? type.type);
448
+ }
449
+ }
450
+ else if (type instanceof TypeIdentifier) {
451
+ if ((direction === GirDirection.In || direction === GirDirection.Inout) && type.is("GLib", "Bytes")) {
452
+ return new BinaryType(type, Uint8ArrayType);
453
+ }
454
+ else if (type.is("GObject", "Value")) {
455
+ if (direction === GirDirection.In || direction === GirDirection.Inout) {
456
+ return new BinaryType(type, AnyType);
457
+ }
458
+ else {
459
+ // GJS converts GObject.Value out parameters to their unboxed type, which we don't know,
460
+ // so type as `unknown`
461
+ return UnknownType;
462
+ }
463
+ }
464
+ else if (type.is("GLib", "HashTable")) {
465
+ if (direction === GirDirection.In) {
466
+ return new BinaryType(new NativeType("{ [key: string]: any }"), type);
467
+ }
468
+ else {
469
+ return type;
470
+ }
471
+ }
472
+ }
473
+ return null;
474
+ }
475
+ /**
476
+ * Resolves a class identifier.
477
+ *
478
+ * If the identifier is a class type it is returned,
479
+ * otherwise `null`.
480
+ *
481
+ * @param namespace
482
+ * @param type
483
+ */
484
+ export function resolveTypeIdentifier(namespace, type) {
485
+ const ns = type.namespace;
486
+ const name = type.name;
487
+ const resolved_ns = namespace.assertInstalledImport(ns);
488
+ const pclass = resolved_ns.getClass(name);
489
+ if (pclass) {
490
+ return pclass;
491
+ }
492
+ else {
493
+ return null;
494
+ }
495
+ }
496
+ /**
497
+ *
498
+ * @param a
499
+ * @param b
500
+ */
501
+ function isTypeConflict(a, b) {
502
+ return !a.equals(b) || !b.equals(a);
503
+ }
504
+ /**
505
+ * Checks if a given type expression in the context of a given this type
506
+ * is a subtype (compatible with) of another type expression in the context
507
+ * of a parent type.
508
+ *
509
+ * @param namespace
510
+ * @param thisType
511
+ * @param parentThisType
512
+ * @param potentialSubtype
513
+ * @param parentType
514
+ */
515
+ export function isSubtypeOf(namespace, thisType, parentThisType, potentialSubtype, parentType) {
516
+ if (!isTypeConflict(potentialSubtype, parentType)) {
517
+ return true;
518
+ }
519
+ const unwrappedSubtype = potentialSubtype.unwrap();
520
+ let unwrappedParent = parentType.unwrap();
521
+ if ((potentialSubtype.equals(ThisType) && unwrappedParent.equals(thisType)) ||
522
+ (parentType.equals(ThisType) && unwrappedSubtype.equals(parentThisType))) {
523
+ return true;
524
+ }
525
+ if (unwrappedParent instanceof GenericType && unwrappedParent.identifier !== "T") {
526
+ // Technically there could be a conflicting generic, but most generic types should specify a replacement for type checking.
527
+ // "T" denotes a local function generic in the current implementation, those can't be ignored.
528
+ if (!unwrappedParent.replacedType) {
529
+ return true;
530
+ }
531
+ // Use the generic replaced type as a stand-in.
532
+ unwrappedParent = unwrappedParent.replacedType;
533
+ }
534
+ if (!(unwrappedSubtype instanceof TypeIdentifier) || !(unwrappedParent instanceof TypeIdentifier)) {
535
+ return false;
536
+ }
537
+ const resolutions = namespace.parent.subtypes.get(unwrappedSubtype.name, unwrappedSubtype.namespace) ??
538
+ new TwoKeyMap();
539
+ const resolution = resolutions.get(unwrappedParent.name, unwrappedParent.namespace);
540
+ if (typeof resolution === "boolean") {
541
+ return resolution;
542
+ }
543
+ const resolved = resolveTypeIdentifier(namespace, unwrappedSubtype);
544
+ if (!resolved) {
545
+ return false;
546
+ }
547
+ const parentResolution = resolved.resolveParents();
548
+ // This checks that the two types have the same form, regardless of identifier (e.g. A | null and B | null)
549
+ const isStructurallySubtype = potentialSubtype.rewrap(AnyType).equals(parentType.rewrap(AnyType));
550
+ const isSubtype = isStructurallySubtype &&
551
+ parentResolution.node.someParent((t) => t.getType().equals(unwrappedParent));
552
+ resolutions.set(unwrappedParent.name, unwrappedParent.namespace, isSubtype);
553
+ namespace.parent.subtypes.set(unwrappedSubtype.name, unwrappedSubtype.namespace, resolutions);
554
+ return isSubtype;
555
+ }
556
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/gir/util.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GirFunctionElement, GirDocElement, GirVirtualMethodElement, GirCallableParamElement, GirConstructorElement, GirMethodElement, GirInstanceParameter, GirPropertyElement, GirAnnotation, TsFunction, TsParameter, TsGenericParameter, TsProperty, TsType, TsDoc, InjectionFunction, InjectionInstanceParameter, InjectionGenericParameter, InjectionType, InjectionParameter, InjectionProperty, Environment, TypeGirProperty, TypeGirFunction, TypeGirEnumerationMember, TypeTsEnumerationMember, TypeTsFunction, TypeTsProperty, TsClass } from './types/index.js';
1
+ import type { GirFunctionElement, GirDocElement, GirVirtualMethodElement, GirCallableParamElement, GirConstructorElement, GirMethodElement, GirInstanceParameter, GirPropertyElement, GirAnnotation, TsFunction, TsParameter, TsGenericParameter, TsProperty, TsType, TsDoc, InjectionFunction, InjectionInstanceParameter, InjectionGenericParameter, InjectionType, InjectionParameter, InjectionProperty, TypeGirProperty, TypeGirFunction, TypeGirEnumerationMember, TypeTsEnumerationMember, TypeTsFunction, TypeTsProperty, TsClass } from './types/index.js';
2
2
  /**
3
3
  * Creates new gir and ts objects
4
4
  */
@@ -44,7 +44,7 @@ export declare class GirFactory {
44
44
  * @param withDisconnect If `true` this also generates a `disconnect` method
45
45
  * @returns
46
46
  */
47
- newTsSignalMethods(signalName: string | undefined, callbackType: string | undefined, emitInParams: InjectionParameter[], parentClass: TsClass, environment: Environment, withDisconnect?: boolean): TsFunction[];
47
+ newTsSignalMethods(signalName: string | undefined, callbackType: string | undefined, emitInParams: InjectionParameter[], parentClass: TsClass, withDisconnect?: boolean): TsFunction[];
48
48
  newGirAttr(name?: string): (GirConstructorElement & GirFunctionElement & GirMethodElement & GirVirtualMethodElement)['$'];
49
49
  newGirAnnotation(data?: Partial<GirAnnotation['$']>): GirAnnotation;
50
50
  newGirDocElement(text?: string, filename?: string, line?: string, column?: string): GirDocElement;
@@ -234,7 +234,7 @@ export class GirFactory {
234
234
  * @param withDisconnect If `true` this also generates a `disconnect` method
235
235
  * @returns
236
236
  */
237
- newTsSignalMethods(signalName, callbackType, emitInParams, parentClass, environment, withDisconnect = false) {
237
+ newTsSignalMethods(signalName, callbackType, emitInParams, parentClass, withDisconnect = false) {
238
238
  const tsMethods = [];
239
239
  const girTypeName = 'signal';
240
240
  const sigNameInParam = {
@@ -277,49 +277,13 @@ export class GirFactory {
277
277
  girTypeName,
278
278
  }, parentClass);
279
279
  tsMethods.push(connectTsFn);
280
- if (environment === 'gjs') {
281
- const connectAfterTsFn = this.newTsFunction({
282
- name: 'connect_after',
283
- inParams: [sigNameInParam, callbackInParam],
284
- returnTypes: [numberReturnType],
285
- girTypeName,
286
- }, parentClass);
287
- tsMethods.push(connectAfterTsFn);
288
- }
289
- else if (environment === 'node') {
290
- const afterInParam = {
291
- name: 'after',
292
- type: [
293
- this.newTsType({
294
- type: 'boolean',
295
- optional: true,
296
- }),
297
- ],
298
- doc: this.newTsDoc(),
299
- };
300
- const nodeEventEmitterReturnType = this.newTsType({
301
- type: 'NodeJS.EventEmitter',
302
- });
303
- const onTsFn = this.newTsFunction({
304
- name: 'on',
305
- inParams: [sigNameInParam, callbackInParam, afterInParam],
306
- returnTypes: [nodeEventEmitterReturnType],
307
- girTypeName,
308
- }, parentClass);
309
- const onceTsFn = this.newTsFunction({
310
- name: 'once',
311
- inParams: [sigNameInParam, callbackInParam, afterInParam],
312
- returnTypes: [nodeEventEmitterReturnType],
313
- girTypeName,
314
- }, parentClass);
315
- const offTsFn = this.newTsFunction({
316
- name: 'off',
317
- inParams: [sigNameInParam, callbackInParam],
318
- returnTypes: [nodeEventEmitterReturnType],
319
- girTypeName,
320
- }, parentClass);
321
- tsMethods.push(onTsFn, onceTsFn, offTsFn);
322
- }
280
+ const connectAfterTsFn = this.newTsFunction({
281
+ name: 'connect_after',
282
+ inParams: [sigNameInParam, callbackInParam],
283
+ returnTypes: [numberReturnType],
284
+ girTypeName,
285
+ }, parentClass);
286
+ tsMethods.push(connectAfterTsFn);
323
287
  const emitTsFn = this.newTsFunction({
324
288
  name: 'emit',
325
289
  inParams: [sigNameInParam, ...emitInParams],