@ts-for-gir/lib 3.2.9 → 4.0.0-beta.1

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 (310) 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 +382 -2095
  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 -3
  117. package/lib/index.js +7 -3
  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 +15 -11
  215. package/lib/injection/callbacks/node-gtk/index.d.ts +0 -2
  216. package/lib/injection/callbacks/node-gtk/index.js +0 -2
  217. package/lib/injection/callbacks/node-gtk/index.js.map +0 -1
  218. package/lib/injection/classes/node-gtk/gdk-4.0.d.ts +0 -2
  219. package/lib/injection/classes/node-gtk/gdk-4.0.js +0 -32
  220. package/lib/injection/classes/node-gtk/gdk-4.0.js.map +0 -1
  221. package/lib/injection/classes/node-gtk/gio-2.0.d.ts +0 -2
  222. package/lib/injection/classes/node-gtk/gio-2.0.js +0 -14
  223. package/lib/injection/classes/node-gtk/gio-2.0.js.map +0 -1
  224. package/lib/injection/classes/node-gtk/glib-2.0.d.ts +0 -2
  225. package/lib/injection/classes/node-gtk/glib-2.0.js +0 -19
  226. package/lib/injection/classes/node-gtk/glib-2.0.js.map +0 -1
  227. package/lib/injection/classes/node-gtk/gobject-2.0.d.ts +0 -2
  228. package/lib/injection/classes/node-gtk/gobject-2.0.js +0 -66
  229. package/lib/injection/classes/node-gtk/gobject-2.0.js.map +0 -1
  230. package/lib/injection/classes/node-gtk/graphene-1.0.d.ts +0 -2
  231. package/lib/injection/classes/node-gtk/graphene-1.0.js +0 -133
  232. package/lib/injection/classes/node-gtk/graphene-1.0.js.map +0 -1
  233. package/lib/injection/classes/node-gtk/gtk-3.0.d.ts +0 -2
  234. package/lib/injection/classes/node-gtk/gtk-3.0.js +0 -31
  235. package/lib/injection/classes/node-gtk/gtk-3.0.js.map +0 -1
  236. package/lib/injection/classes/node-gtk/gtk-4.0.d.ts +0 -2
  237. package/lib/injection/classes/node-gtk/gtk-4.0.js +0 -52
  238. package/lib/injection/classes/node-gtk/gtk-4.0.js.map +0 -1
  239. package/lib/injection/classes/node-gtk/index.d.ts +0 -2
  240. package/lib/injection/classes/node-gtk/index.js +0 -19
  241. package/lib/injection/classes/node-gtk/index.js.map +0 -1
  242. package/lib/injection/classes/node-gtk/pango-1.0.d.ts +0 -2
  243. package/lib/injection/classes/node-gtk/pango-1.0.js +0 -31
  244. package/lib/injection/classes/node-gtk/pango-1.0.js.map +0 -1
  245. package/lib/types/build-type.d.ts +0 -1
  246. package/lib/types/build-type.js +0 -2
  247. package/lib/types/build-type.js.map +0 -1
  248. package/lib/types/environment.d.ts +0 -1
  249. package/lib/types/environment.js +0 -2
  250. package/lib/types/environment.js.map +0 -1
  251. package/lib/types/gir-any-type.d.ts +0 -5
  252. package/lib/types/gir-any-type.js +0 -2
  253. package/lib/types/gir-any-type.js.map +0 -1
  254. package/lib/types/gir-array-type.d.ts +0 -20
  255. package/lib/types/gir-array-type.js +0 -3
  256. package/lib/types/gir-array-type.js.map +0 -1
  257. package/lib/types/gir-boolean.d.ts +0 -1
  258. package/lib/types/gir-boolean.js +0 -2
  259. package/lib/types/gir-boolean.js.map +0 -1
  260. package/lib/types/gir-boxed-element.d.ts +0 -15
  261. package/lib/types/gir-boxed-element.js +0 -2
  262. package/lib/types/gir-boxed-element.js.map +0 -1
  263. package/lib/types/gir-c-include.d.ts +0 -7
  264. package/lib/types/gir-c-include.js +0 -2
  265. package/lib/types/gir-c-include.js.map +0 -1
  266. package/lib/types/gir-callable-attrs.d.ts +0 -15
  267. package/lib/types/gir-callable-attrs.js +0 -3
  268. package/lib/types/gir-callable-attrs.js.map +0 -1
  269. package/lib/types/gir-callable-param.d.ts +0 -7
  270. package/lib/types/gir-callable-param.js +0 -2
  271. package/lib/types/gir-callable-param.js.map +0 -1
  272. package/lib/types/gir-direction.d.ts +0 -7
  273. package/lib/types/gir-direction.js +0 -9
  274. package/lib/types/gir-direction.js.map +0 -1
  275. package/lib/types/gir-doc-element.d.ts +0 -68
  276. package/lib/types/gir-doc-element.js +0 -2
  277. package/lib/types/gir-doc-element.js.map +0 -1
  278. package/lib/types/gir-implements.d.ts +0 -8
  279. package/lib/types/gir-implements.js +0 -2
  280. package/lib/types/gir-implements.js.map +0 -1
  281. package/lib/types/gir-include.d.ts +0 -9
  282. package/lib/types/gir-include.js +0 -2
  283. package/lib/types/gir-include.js.map +0 -1
  284. package/lib/types/gir-info-attrs.d.ts +0 -13
  285. package/lib/types/gir-info-attrs.js +0 -2
  286. package/lib/types/gir-info-attrs.js.map +0 -1
  287. package/lib/types/gir-info-elements.d.ts +0 -5
  288. package/lib/types/gir-info-elements.js +0 -2
  289. package/lib/types/gir-info-elements.js.map +0 -1
  290. package/lib/types/gir-package.d.ts +0 -7
  291. package/lib/types/gir-package.js +0 -2
  292. package/lib/types/gir-package.js.map +0 -1
  293. package/lib/types/gir-prerequisite.d.ts +0 -5
  294. package/lib/types/gir-prerequisite.js +0 -2
  295. package/lib/types/gir-prerequisite.js.map +0 -1
  296. package/lib/types/gir-transfer-ownership-type.d.ts +0 -5
  297. package/lib/types/gir-transfer-ownership-type.js +0 -7
  298. package/lib/types/gir-transfer-ownership-type.js.map +0 -1
  299. package/lib/types/gir-transfer-ownership.d.ts +0 -9
  300. package/lib/types/gir-transfer-ownership.js +0 -2
  301. package/lib/types/gir-transfer-ownership.js.map +0 -1
  302. package/lib/types/gir-type.d.ts +0 -14
  303. package/lib/types/gir-type.js +0 -2
  304. package/lib/types/gir-type.js.map +0 -1
  305. package/lib/types/gir-var-args.d.ts +0 -5
  306. package/lib/types/gir-var-args.js +0 -2
  307. package/lib/types/gir-var-args.js.map +0 -1
  308. package/lib/types/module-type.d.ts +0 -1
  309. package/lib/types/module-type.js +0 -2
  310. package/lib/types/module-type.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ import { AnyType, NativeType, TypeIdentifier } from "../gir.js";
2
+ import { IntrospectedRecord } from "../gir/class.js";
3
+ import { IntrospectedError } from "../gir/enum.js";
4
+ import { IntrospectedClassFunction, IntrospectedDirectAllocationConstructor, IntrospectedStaticClassFunction } from "../gir/function.js";
5
+ import { resolveTypeIdentifier } from "../gir/util.js";
6
+ import { GirVisitor } from "../visitor.js";
7
+ const filterIntrospectableClassMembers = (node) => {
8
+ node.fields = node.fields.filter(field => field.isIntrospectable);
9
+ node.props = node.props.filter(prop => prop.isIntrospectable);
10
+ node.callbacks = node.callbacks.filter(prop => prop.isIntrospectable);
11
+ node.constructors = node.constructors.filter(prop => prop.isIntrospectable);
12
+ node.members = node.members.filter(prop => prop.isIntrospectable);
13
+ return node;
14
+ };
15
+ const PROTECTED_FIELD_NAMES = ["parent_instance", "parent", "parent_class", "object_class"];
16
+ const filterProtectedFields = (node) => {
17
+ const set = new Set(PROTECTED_FIELD_NAMES);
18
+ node.fields = node.fields.filter(f => {
19
+ return !set.has(f.name);
20
+ });
21
+ return node;
22
+ };
23
+ /**
24
+ * Filters fields, properties, and members to ensure they are not named
25
+ * after reserved object keys (prototype, constructor)
26
+ */
27
+ const filterReservedProperties = (node) => {
28
+ const set = new Set(["prototype", "constructor"]);
29
+ node.fields = node.fields.filter(f => {
30
+ return !set.has(f.name);
31
+ });
32
+ node.props = node.props.filter(p => {
33
+ return !set.has(p.name);
34
+ });
35
+ node.members = node.members.filter(m => {
36
+ return !set.has(m.name);
37
+ });
38
+ return node;
39
+ };
40
+ const filterConflictingNamedClassMembers = (node) => {
41
+ // Props shadow members
42
+ node.members = node.members.filter(m => {
43
+ return !node.props.some(prop => prop.name === m.name && !(m instanceof IntrospectedStaticClassFunction));
44
+ });
45
+ // Props and members shadow fields
46
+ node.fields = node.fields.filter(f => !node.members.some(n => n.name === f.name && !(n instanceof IntrospectedStaticClassFunction)) &&
47
+ !node.props.some(n => n.name === f.name));
48
+ return node;
49
+ };
50
+ /**
51
+ * Subtypes of ParamSpec are not supported (e.g. a subtype of ParamSpecString).
52
+ *
53
+ * First, we transform the node to use ParamSpec as a parent and then flag it
54
+ * to not emit.
55
+ *
56
+ * If a generator doesn't follow the emit() standard, the parent type will at least
57
+ * be valid.
58
+ *
59
+ * @param node
60
+ * @returns
61
+ */
62
+ const fixParamSpecSubtypes = (node) => {
63
+ if (node.superType?.namespace === "GObject" && node.superType.name.startsWith("ParamSpec")) {
64
+ // We don't assert this import because we don't want to force libraries
65
+ // to unnecessarily import GObject.
66
+ node.superType = new TypeIdentifier("ParamSpec", "GObject");
67
+ node.noEmit();
68
+ }
69
+ return node;
70
+ };
71
+ /**
72
+ * Checks if a class implements a GObject.Object-based interface
73
+ * If the class is missing a direct parent we inject GObject.Object
74
+ * as a stand-in considering it already indirectly inherits
75
+ * from it.
76
+ *
77
+ * @param node
78
+ */
79
+ const fixMissingParent = (node) => {
80
+ const { namespace } = node;
81
+ if (node.superType == null) {
82
+ const isGObject = node.someParent(p => p.getType().is("GObject", "Object"));
83
+ if (isGObject) {
84
+ node.superType = namespace.assertInstalledImport("GObject").assertClass("Object").getType();
85
+ }
86
+ }
87
+ return node;
88
+ };
89
+ /**
90
+ * Fields cannot be array types, error types,
91
+ * or class-like types in GJS. This strips
92
+ * fields which have these "complex" types.
93
+ *
94
+ * @param node
95
+ */
96
+ const removeComplexFields = (node) => {
97
+ const { namespace } = node;
98
+ node.fields = node.fields.filter(f => {
99
+ const type = f.type.deepUnwrap();
100
+ if (type instanceof NativeType) {
101
+ return true;
102
+ }
103
+ if (type instanceof TypeIdentifier) {
104
+ // Find the type for the identifier
105
+ const classNode = resolveTypeIdentifier(namespace, type);
106
+ // Don't allow private or disguised fields
107
+ if (classNode && classNode.isPrivate) {
108
+ return false;
109
+ }
110
+ // Only allow fields pointing to simple structs.
111
+ if (classNode && classNode instanceof IntrospectedRecord && !classNode.isSimple()) {
112
+ return false;
113
+ }
114
+ const en = namespace.assertInstalledImport(type.namespace).getEnum(type.name);
115
+ if (!(en instanceof IntrospectedError)) {
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+ return true;
121
+ });
122
+ return node;
123
+ };
124
+ /**
125
+ * TODO: Consider making this transformation optional.
126
+ *
127
+ * If we are referencing an unknown library, any-ify the type.
128
+ *
129
+ * @param node
130
+ */
131
+ const removeReferencesToMissingLibraries = (node) => {
132
+ const { namespace } = node;
133
+ node.fields = node.fields.map(f => {
134
+ const type = f.type.deepUnwrap();
135
+ if (type instanceof TypeIdentifier) {
136
+ // Find the type for the identifier
137
+ const nsNode = namespace.getInstalledImport(type.namespace);
138
+ // Don't allow private or disguised fields
139
+ if (!nsNode) {
140
+ return f.copy({ type: AnyType });
141
+ }
142
+ }
143
+ return f;
144
+ });
145
+ return node;
146
+ };
147
+ const removePrivateFields = (node) => {
148
+ node.fields = node.fields.filter(f => {
149
+ return !f.isPrivate && !f.name.startsWith("_");
150
+ });
151
+ return node;
152
+ };
153
+ /**
154
+ * Boxed types have a specific order of preference for
155
+ * which constructor will be used...
156
+ *
157
+ * 1. Zero Args Constructor
158
+ * 2. Direct Allocation (if the type is simple)
159
+ * 3. The new() constructor
160
+ * 4. The first constructor
161
+ *
162
+ * @param node
163
+ */
164
+ const resolveMainConstructor = (node) => {
165
+ const newConstructor = node.constructors.find(c => c.name === "new");
166
+ const zeroArgsConstructor = node.constructors.find(c => c.parameters.length === 0);
167
+ const firstConstructor = node.constructors?.[0];
168
+ if (node.isForeign()) {
169
+ node.mainConstructor = null;
170
+ return node;
171
+ }
172
+ if (zeroArgsConstructor || node.isSimpleWithoutPointers()) {
173
+ node.mainConstructor = IntrospectedDirectAllocationConstructor.fromFields(node.fields, node);
174
+ return node;
175
+ }
176
+ const resolvedConstructor = newConstructor ?? firstConstructor;
177
+ if (resolvedConstructor) {
178
+ node.mainConstructor = resolvedConstructor.copy();
179
+ }
180
+ if (node.isSimple()) {
181
+ node.mainConstructor = IntrospectedDirectAllocationConstructor.fromFields(node.fields, node);
182
+ return node;
183
+ }
184
+ return node;
185
+ };
186
+ const mergeStaticDefinitions = (node) => {
187
+ if (!node.staticDefinition) {
188
+ return node;
189
+ }
190
+ const { namespace } = node;
191
+ const staticDefinition = namespace.getClass(node.staticDefinition);
192
+ if (!(staticDefinition instanceof IntrospectedRecord)) {
193
+ return node;
194
+ }
195
+ const staticMethods = staticDefinition.members
196
+ .filter(m => m instanceof IntrospectedClassFunction)
197
+ .map(m => m.asStaticClassFunction(node));
198
+ for (const staticMethod of staticMethods) {
199
+ if (!node.members.some(member => member.name === staticMethod.name && member instanceof IntrospectedStaticClassFunction)) {
200
+ node.members.push(staticMethod);
201
+ }
202
+ }
203
+ return node;
204
+ };
205
+ function chainVisitors(node, ...args) {
206
+ let currentNode = node;
207
+ for (const visitor of args) {
208
+ currentNode = visitor(currentNode);
209
+ }
210
+ return currentNode;
211
+ }
212
+ export class ClassVisitor extends GirVisitor {
213
+ visitClass = (node) => chainVisitors(node, removeReferencesToMissingLibraries, fixMissingParent, fixParamSpecSubtypes, removeComplexFields, removePrivateFields, mergeStaticDefinitions, filterConflictingNamedClassMembers, filterIntrospectableClassMembers, filterProtectedFields, filterReservedProperties);
214
+ visitInterface = (node) => chainVisitors(node, filterIntrospectableClassMembers, filterReservedProperties);
215
+ visitRecord = (node) => chainVisitors(node, fixMissingParent, fixParamSpecSubtypes, resolveMainConstructor, removeComplexFields, removePrivateFields, filterConflictingNamedClassMembers, filterIntrospectableClassMembers, filterProtectedFields, filterReservedProperties);
216
+ }
217
+ //# sourceMappingURL=class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/validators/class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { IntrospectedInterface } from "../gir/class.js";
2
+ import { GirVisitor } from "../visitor.js";
3
+ export declare class InterfaceVisitor extends GirVisitor {
4
+ visitInterface: (node: IntrospectedInterface) => IntrospectedInterface;
5
+ }
@@ -0,0 +1,16 @@
1
+ import { GirVisitor } from "../visitor.js";
2
+ export class InterfaceVisitor extends GirVisitor {
3
+ visitInterface = (node) => {
4
+ // If an interface does not list a prerequisite type, we fill it with GObject.Object
5
+ if (!node.noParent && node.superType == null) {
6
+ const gobject = node.namespace.assertInstalledImport("GObject");
7
+ const GObject = gobject.assertClass("Object");
8
+ if (!GObject) {
9
+ throw new Error(`GObject.Object could not be found while generating ${node.namespace.name}.${node.name}`);
10
+ }
11
+ node.superType = GObject.getType();
12
+ }
13
+ return node;
14
+ };
15
+ }
16
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/validators/interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC5C,cAAc,GAAG,CAAC,IAA2B,EAAyB,EAAE;QACpE,oFAAoF;QACpF,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACX,sDAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAC3F,CAAC;YACN,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;CACL"}
@@ -0,0 +1,35 @@
1
+ import { TypeExpression } from './gir.js';
2
+ import { IntrospectedAlias } from './gir/alias.js';
3
+ import { IntrospectedRecord, IntrospectedInterface, IntrospectedClass, IntrospectedBaseClass } from './gir/class.js';
4
+ import { IntrospectedConstant } from './gir/const.js';
5
+ import { GirEnumMember, IntrospectedError, IntrospectedEnum } from './gir/enum.js';
6
+ import { IntrospectedCallback, IntrospectedConstructor, IntrospectedFunctionParameter, IntrospectedFunction, IntrospectedClassFunction, IntrospectedStaticClassFunction, IntrospectedVirtualClassFunction, IntrospectedDirectAllocationConstructor, IntrospectedClassCallback } from './gir/function.js';
7
+ import { IntrospectedNamespace } from './gir/namespace.js';
8
+ import { IntrospectedProperty, IntrospectedField } from './gir/property.js';
9
+ import { IntrospectedSignal, IntrospectedSignalType } from './gir/signal.js';
10
+ export declare abstract class GirVisitor {
11
+ visitType?: (node: TypeExpression) => TypeExpression;
12
+ visitCallback?: (node: IntrospectedCallback) => IntrospectedCallback;
13
+ visitClassCallback?: (node: IntrospectedClassCallback) => IntrospectedClassCallback;
14
+ visitAlias?: (node: IntrospectedAlias) => IntrospectedAlias;
15
+ visitConstructor?: (node: IntrospectedConstructor) => IntrospectedConstructor;
16
+ visitDirectAllocationConstructor?: (node: IntrospectedDirectAllocationConstructor) => IntrospectedDirectAllocationConstructor;
17
+ visitConstructorFunction?: (node: IntrospectedConstructor) => IntrospectedConstructor;
18
+ visitRecord?: (node: IntrospectedRecord) => IntrospectedRecord;
19
+ visitInterface?: (node: IntrospectedInterface) => IntrospectedInterface;
20
+ visitEnumMember?: (node: GirEnumMember) => GirEnumMember;
21
+ visitError?: (node: IntrospectedError) => IntrospectedError;
22
+ visitEnum?: (node: IntrospectedEnum) => IntrospectedEnum;
23
+ visitConst?: (node: IntrospectedConstant) => IntrospectedConstant;
24
+ visitClass?: (node: IntrospectedClass) => IntrospectedClass;
25
+ visitParameter?: (node: IntrospectedFunctionParameter) => IntrospectedFunctionParameter;
26
+ visitProperty?: (node: IntrospectedProperty) => IntrospectedProperty;
27
+ visitField?: (node: IntrospectedField) => IntrospectedField;
28
+ visitSignal?: (node: IntrospectedSignal, type?: IntrospectedSignalType) => IntrospectedSignal;
29
+ visitFunction?: (node: IntrospectedFunction) => IntrospectedFunction;
30
+ visitClassFunction?: <T extends IntrospectedBaseClass | IntrospectedEnum>(node: IntrospectedClassFunction<T>) => IntrospectedClassFunction<T>;
31
+ visitStaticClassFunction?: (node: IntrospectedStaticClassFunction) => IntrospectedStaticClassFunction;
32
+ visitVirtualClassFunction?: (node: IntrospectedVirtualClassFunction) => IntrospectedVirtualClassFunction;
33
+ visitNamespace?: (node: IntrospectedNamespace) => IntrospectedNamespace;
34
+ }
35
+ export declare function visit(namespace: IntrospectedNamespace, visitor: GirVisitor): void;
package/lib/visitor.js ADDED
@@ -0,0 +1,29 @@
1
+ export class GirVisitor {
2
+ visitType;
3
+ visitCallback;
4
+ visitClassCallback;
5
+ visitAlias;
6
+ visitConstructor;
7
+ visitDirectAllocationConstructor;
8
+ visitConstructorFunction;
9
+ visitRecord;
10
+ visitInterface;
11
+ visitEnumMember;
12
+ visitError;
13
+ visitEnum;
14
+ visitConst;
15
+ visitClass;
16
+ visitParameter;
17
+ visitProperty;
18
+ visitField;
19
+ visitSignal;
20
+ visitFunction;
21
+ visitClassFunction;
22
+ visitStaticClassFunction;
23
+ visitVirtualClassFunction;
24
+ visitNamespace;
25
+ }
26
+ export function visit(namespace, visitor) {
27
+ namespace.accept(visitor);
28
+ }
29
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAgB,UAAU;IAC5B,SAAS,CAA2C;IACpD,aAAa,CAAuD;IACpE,kBAAkB,CAAiE;IACnF,UAAU,CAAiD;IAC3D,gBAAgB,CAA6D;IAC7E,gCAAgC,CAEY;IAC5C,wBAAwB,CAA6D;IACrF,WAAW,CAAmD;IAC9D,cAAc,CAAyD;IACvE,eAAe,CAAyC;IACxD,UAAU,CAAiD;IAC3D,SAAS,CAA+C;IACxD,UAAU,CAAuD;IACjE,UAAU,CAAiD;IAC3D,cAAc,CAAyE;IACvF,aAAa,CAAuD;IACpE,UAAU,CAAiD;IAC3D,WAAW,CAAkF;IAC7F,aAAa,CAAuD;IACpE,kBAAkB,CAEe;IACjC,wBAAwB,CAA6E;IACrG,yBAAyB,CAA+E;IACxG,cAAc,CAAyD;CAC1E;AAED,MAAM,UAAU,KAAK,CAAC,SAAgC,EAAE,OAAmB;IACvE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "name": "@ts-for-gir/lib",
3
- "version": "3.2.9",
4
- "description": "Typescript .d.ts generator from GIR for gjs and node-gtk",
3
+ "version": "4.0.0-beta.1",
4
+ "description": "Typescript .d.ts generator from GIR for gjs",
5
5
  "module": "lib/index.js",
6
6
  "main": "lib/index.js",
7
7
  "type": "module",
8
8
  "engines": {
9
9
  "node": ">=18"
10
10
  },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./lib/index.d.ts",
14
+ "import": "./lib/index.js"
15
+ }
16
+ },
11
17
  "scripts": {
12
18
  "build": "yarn lint && yarn build:ts",
13
19
  "build:ts": "tsc",
@@ -34,7 +40,6 @@
34
40
  "gjs",
35
41
  "typescript",
36
42
  "generate",
37
- "node-gtk",
38
43
  "gir",
39
44
  "gobject-introspection",
40
45
  "gnome",
@@ -47,22 +52,21 @@
47
52
  "devDependencies": {
48
53
  "@types/ejs": "^3.1.5",
49
54
  "@types/eslint": "8.56.5",
50
- "@types/lodash": "^4.14.202",
51
- "@types/node": "^20.11.24",
52
- "@types/xml2js": "^0.4.14",
53
- "@typescript-eslint/eslint-plugin": "^7.1.0",
54
- "@typescript-eslint/parser": "^7.1.0",
55
+ "@types/lodash": "^4.17.0",
56
+ "@types/node": "^20.11.27",
57
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
58
+ "@typescript-eslint/parser": "^7.2.0",
55
59
  "eslint": "^8.57.0",
56
60
  "eslint-config-prettier": "^9.1.0",
57
61
  "eslint-plugin-prettier": "^5.1.3",
58
62
  "prettier": "^3.2.5",
59
63
  "rimraf": "^5.0.5",
60
- "typescript": "5.2.2"
64
+ "typescript": "^5.4.2"
61
65
  },
62
66
  "dependencies": {
67
+ "@gi.ts/parser": "^2.0.0",
63
68
  "colorette": "^2.0.20",
64
69
  "ejs": "^3.1.9",
65
- "lodash": "^4.17.21",
66
- "xml2js": "0.6.2"
70
+ "lodash": "^4.17.21"
67
71
  }
68
72
  }
@@ -1,2 +0,0 @@
1
- import type { InjectionCallback } from '../../../types/index.js';
2
- export declare const callbacksNode: InjectionCallback[];
@@ -1,2 +0,0 @@
1
- export const callbacksNode = [];
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/injection/callbacks/node-gtk/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAwB,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { InjectionClass } from '../../../types/index.js';
2
- export declare const classesGdk40Node: InjectionClass[];
@@ -1,32 +0,0 @@
1
- export const classesGdk40Node = [
2
- // See https://github.com/romgrk/node-gtk/blob/master/lib/overrides/Gdk-4.0.js
3
- {
4
- versions: ['4.0'],
5
- qualifiedName: 'Gdk.RGBA',
6
- constructors: [
7
- {
8
- girTypeName: 'constructor',
9
- isStatic: true,
10
- name: 'create',
11
- returnTypes: [{ type: 'Gdk.RGBA' }],
12
- inParams: [
13
- {
14
- name: 'value',
15
- type: [{ type: 'string' }],
16
- },
17
- ],
18
- doc: {
19
- text: 'Creates a new color from the given string. Passes value to `GdkRGBA.parse()`',
20
- tags: [
21
- {
22
- paramName: '',
23
- tagName: 'param',
24
- text: 'value',
25
- },
26
- ],
27
- },
28
- },
29
- ],
30
- },
31
- ];
32
- //# sourceMappingURL=gdk-4.0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gdk-4.0.js","sourceRoot":"","sources":["../../../../src/injection/classes/node-gtk/gdk-4.0.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAC9C,8EAA8E;IAC9E;QACI,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,aAAa,EAAE,UAAU;QACzB,YAAY,EAAE;YACV;gBACI,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACnC,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC7B;iBACJ;gBACD,GAAG,EAAE;oBACD,IAAI,EAAE,8EAA8E;oBACpF,IAAI,EAAE;wBACF;4BACI,SAAS,EAAE,EAAE;4BACb,OAAO,EAAE,OAAO;4BAChB,IAAI,EAAE,OAAO;yBAChB;qBACJ;iBACJ;aACJ;SACJ;KACJ;CACJ,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { InjectionClass } from '../../../types/index.js';
2
- export declare const classesGio20Node: InjectionClass[];
@@ -1,14 +0,0 @@
1
- export const classesGio20Node = [
2
- {
3
- versions: ['2.0'],
4
- qualifiedName: 'Gio.ListStore',
5
- generics: [
6
- {
7
- name: 'A',
8
- extends: 'GObject.Object',
9
- value: 'GObject.Object',
10
- },
11
- ],
12
- },
13
- ];
14
- //# sourceMappingURL=gio-2.0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gio-2.0.js","sourceRoot":"","sources":["../../../../src/injection/classes/node-gtk/gio-2.0.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAC9C;QACI,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE;YACN;gBACI,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE,gBAAgB;aAC1B;SACJ;KACJ;CACJ,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { InjectionClass } from '../../../types/index.js';
2
- export declare const classesGLib20Node: InjectionClass[];
@@ -1,19 +0,0 @@
1
- export const classesGLib20Node = [
2
- {
3
- versions: ['2.0'],
4
- qualifiedName: 'GLib.MainLoop',
5
- methods: [
6
- {
7
- girTypeName: 'method',
8
- name: 'run',
9
- returnTypes: [{ type: 'void' }],
10
- },
11
- {
12
- girTypeName: 'method',
13
- name: 'quit',
14
- returnTypes: [{ type: 'void' }],
15
- },
16
- ],
17
- },
18
- ];
19
- //# sourceMappingURL=glib-2.0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glib-2.0.js","sourceRoot":"","sources":["../../../../src/injection/classes/node-gtk/glib-2.0.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IAC/C;QACI,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,aAAa,EAAE,eAAe;QAC9B,OAAO,EAAE;YACL;gBACI,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAClC;YACD;gBACI,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAClC;SACJ;KACJ;CACJ,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { InjectionClass } from '../../../types/index.js';
2
- export declare const classesGObject20Node: InjectionClass[];
@@ -1,66 +0,0 @@
1
- export const classesGObject20Node = [
2
- {
3
- versions: ['2.0'],
4
- qualifiedName: 'GObject.Object',
5
- methods: [
6
- {
7
- girTypeName: 'method',
8
- name: 'setProperty',
9
- isVirtual: true,
10
- generics: [
11
- {
12
- name: 'T',
13
- value: 'any',
14
- },
15
- ],
16
- returnTypes: [{ type: 'void' }],
17
- inParams: [
18
- {
19
- name: 'propertyName',
20
- type: [{ type: 'string' }],
21
- },
22
- {
23
- name: 'value',
24
- type: [{ type: 'T' }],
25
- },
26
- ],
27
- },
28
- {
29
- girTypeName: 'method',
30
- name: 'getProperty',
31
- isVirtual: true,
32
- generics: [
33
- {
34
- name: 'T',
35
- value: 'unknown',
36
- },
37
- ],
38
- returnTypes: [{ type: 'T' }],
39
- inParams: [
40
- {
41
- name: 'propertyName',
42
- type: [{ type: 'string' }],
43
- },
44
- ],
45
- },
46
- ],
47
- },
48
- {
49
- versions: ['2.0'],
50
- qualifiedName: 'GObject.Value',
51
- methods: [
52
- {
53
- girTypeName: 'method',
54
- name: 'getBoxed',
55
- generics: [
56
- {
57
- name: 'T',
58
- value: 'unknown',
59
- },
60
- ],
61
- returnTypes: [{ type: 'T' }],
62
- },
63
- ],
64
- },
65
- ];
66
- //# sourceMappingURL=gobject-2.0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gobject-2.0.js","sourceRoot":"","sources":["../../../../src/injection/classes/node-gtk/gobject-2.0.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IAClD;QACI,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,aAAa,EAAE,gBAAgB;QAC/B,OAAO,EAAE;YACL;gBACI,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,KAAK;qBACf;iBACJ;gBACD,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC/B,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC7B;oBACD;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;qBACxB;iBACJ;aACJ;YACD;gBACI,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,SAAS;qBACnB;iBACJ;gBACD,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;gBAC5B,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC7B;iBACJ;aACJ;SACJ;KACJ;IACD;QACI,QAAQ,EAAE,CAAC,KAAK,CAAC;QACjB,aAAa,EAAE,eAAe;QAC9B,OAAO,EAAE;YACL;gBACI,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACN;wBACI,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,SAAS;qBACnB;iBACJ;gBACD,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;aAC/B;SACJ;KACJ;CACJ,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { InjectionClass } from '../../../types/index.js';
2
- export declare const classesGraphene10Node: InjectionClass[];