@gtkx/codegen 0.21.0

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 (340) hide show
  1. package/LICENSE +373 -0
  2. package/dist/dsl/context.d.ts +104 -0
  3. package/dist/dsl/context.d.ts.map +1 -0
  4. package/dist/dsl/context.js +140 -0
  5. package/dist/dsl/context.js.map +1 -0
  6. package/dist/dsl/emit.d.ts +28 -0
  7. package/dist/dsl/emit.d.ts.map +1 -0
  8. package/dist/dsl/emit.js +41 -0
  9. package/dist/dsl/emit.js.map +1 -0
  10. package/dist/dsl/identifier.d.ts +28 -0
  11. package/dist/dsl/identifier.d.ts.map +1 -0
  12. package/dist/dsl/identifier.js +45 -0
  13. package/dist/dsl/identifier.js.map +1 -0
  14. package/dist/dsl/imports.d.ts +58 -0
  15. package/dist/dsl/imports.d.ts.map +1 -0
  16. package/dist/dsl/imports.js +107 -0
  17. package/dist/dsl/imports.js.map +1 -0
  18. package/dist/dsl/module.d.ts +53 -0
  19. package/dist/dsl/module.d.ts.map +1 -0
  20. package/dist/dsl/module.js +76 -0
  21. package/dist/dsl/module.js.map +1 -0
  22. package/dist/ffi/pipeline.d.ts +19 -0
  23. package/dist/ffi/pipeline.d.ts.map +1 -0
  24. package/dist/ffi/pipeline.js +107 -0
  25. package/dist/ffi/pipeline.js.map +1 -0
  26. package/dist/fingerprint.d.ts +30 -0
  27. package/dist/fingerprint.d.ts.map +1 -0
  28. package/dist/fingerprint.js +33 -0
  29. package/dist/fingerprint.js.map +1 -0
  30. package/dist/gi-store.d.ts +34 -0
  31. package/dist/gi-store.d.ts.map +1 -0
  32. package/dist/gi-store.js +154 -0
  33. package/dist/gi-store.js.map +1 -0
  34. package/dist/gir/boxed.d.ts +66 -0
  35. package/dist/gir/boxed.d.ts.map +1 -0
  36. package/dist/gir/boxed.js +49 -0
  37. package/dist/gir/boxed.js.map +1 -0
  38. package/dist/gir/callback.d.ts +15 -0
  39. package/dist/gir/callback.d.ts.map +1 -0
  40. package/dist/gir/callback.js +17 -0
  41. package/dist/gir/callback.js.map +1 -0
  42. package/dist/gir/class.d.ts +49 -0
  43. package/dist/gir/class.d.ts.map +1 -0
  44. package/dist/gir/class.js +42 -0
  45. package/dist/gir/class.js.map +1 -0
  46. package/dist/gir/enum.d.ts +39 -0
  47. package/dist/gir/enum.d.ts.map +1 -0
  48. package/dist/gir/enum.js +24 -0
  49. package/dist/gir/enum.js.map +1 -0
  50. package/dist/gir/field.d.ts +27 -0
  51. package/dist/gir/field.d.ts.map +1 -0
  52. package/dist/gir/field.js +19 -0
  53. package/dist/gir/field.js.map +1 -0
  54. package/dist/gir/function.d.ts +47 -0
  55. package/dist/gir/function.d.ts.map +1 -0
  56. package/dist/gir/function.js +28 -0
  57. package/dist/gir/function.js.map +1 -0
  58. package/dist/gir/namespace.d.ts +65 -0
  59. package/dist/gir/namespace.d.ts.map +1 -0
  60. package/dist/gir/namespace.js +60 -0
  61. package/dist/gir/namespace.js.map +1 -0
  62. package/dist/gir/parameter.d.ts +82 -0
  63. package/dist/gir/parameter.d.ts.map +1 -0
  64. package/dist/gir/parameter.js +66 -0
  65. package/dist/gir/parameter.js.map +1 -0
  66. package/dist/gir/parse.d.ts +78 -0
  67. package/dist/gir/parse.d.ts.map +1 -0
  68. package/dist/gir/parse.js +155 -0
  69. package/dist/gir/parse.js.map +1 -0
  70. package/dist/gir/primitives.d.ts +36 -0
  71. package/dist/gir/primitives.d.ts.map +1 -0
  72. package/dist/gir/primitives.js +109 -0
  73. package/dist/gir/primitives.js.map +1 -0
  74. package/dist/gir/property.d.ts +29 -0
  75. package/dist/gir/property.d.ts.map +1 -0
  76. package/dist/gir/property.js +16 -0
  77. package/dist/gir/property.js.map +1 -0
  78. package/dist/gir/qualified-name.d.ts +37 -0
  79. package/dist/gir/qualified-name.d.ts.map +1 -0
  80. package/dist/gir/qualified-name.js +39 -0
  81. package/dist/gir/qualified-name.js.map +1 -0
  82. package/dist/gir/qualify.d.ts +32 -0
  83. package/dist/gir/qualify.d.ts.map +1 -0
  84. package/dist/gir/qualify.js +60 -0
  85. package/dist/gir/qualify.js.map +1 -0
  86. package/dist/gir/repository.d.ts +82 -0
  87. package/dist/gir/repository.d.ts.map +1 -0
  88. package/dist/gir/repository.js +122 -0
  89. package/dist/gir/repository.js.map +1 -0
  90. package/dist/gir/signal.d.ts +22 -0
  91. package/dist/gir/signal.d.ts.map +1 -0
  92. package/dist/gir/signal.js +20 -0
  93. package/dist/gir/signal.js.map +1 -0
  94. package/dist/gir/size.d.ts +67 -0
  95. package/dist/gir/size.d.ts.map +1 -0
  96. package/dist/gir/size.js +87 -0
  97. package/dist/gir/size.js.map +1 -0
  98. package/dist/gir/type-ref.d.ts +79 -0
  99. package/dist/gir/type-ref.d.ts.map +1 -0
  100. package/dist/gir/type-ref.js +101 -0
  101. package/dist/gir/type-ref.js.map +1 -0
  102. package/dist/index.d.ts +12 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +12 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/jsx-store.d.ts +22 -0
  107. package/dist/jsx-store.d.ts.map +1 -0
  108. package/dist/jsx-store.js +40 -0
  109. package/dist/jsx-store.js.map +1 -0
  110. package/dist/react/compounds-meta.d.ts +18 -0
  111. package/dist/react/compounds-meta.d.ts.map +1 -0
  112. package/dist/react/compounds-meta.js +93 -0
  113. package/dist/react/compounds-meta.js.map +1 -0
  114. package/dist/react/compounds.d.ts +27 -0
  115. package/dist/react/compounds.d.ts.map +1 -0
  116. package/dist/react/compounds.js +164 -0
  117. package/dist/react/compounds.js.map +1 -0
  118. package/dist/react/internal.d.ts +14 -0
  119. package/dist/react/internal.d.ts.map +1 -0
  120. package/dist/react/internal.js +79 -0
  121. package/dist/react/internal.js.map +1 -0
  122. package/dist/react/jsx.d.ts +22 -0
  123. package/dist/react/jsx.d.ts.map +1 -0
  124. package/dist/react/jsx.js +134 -0
  125. package/dist/react/jsx.js.map +1 -0
  126. package/dist/react/pipeline.d.ts +13 -0
  127. package/dist/react/pipeline.d.ts.map +1 -0
  128. package/dist/react/pipeline.js +25 -0
  129. package/dist/react/pipeline.js.map +1 -0
  130. package/dist/react/props.d.ts +38 -0
  131. package/dist/react/props.d.ts.map +1 -0
  132. package/dist/react/props.js +231 -0
  133. package/dist/react/props.js.map +1 -0
  134. package/dist/react/slot-props.d.ts +10 -0
  135. package/dist/react/slot-props.d.ts.map +1 -0
  136. package/dist/react/slot-props.js +56 -0
  137. package/dist/react/slot-props.js.map +1 -0
  138. package/dist/react/widgets.d.ts +83 -0
  139. package/dist/react/widgets.d.ts.map +1 -0
  140. package/dist/react/widgets.js +152 -0
  141. package/dist/react/widgets.js.map +1 -0
  142. package/dist/runner.d.ts +55 -0
  143. package/dist/runner.d.ts.map +1 -0
  144. package/dist/runner.js +60 -0
  145. package/dist/runner.js.map +1 -0
  146. package/dist/store-fs.d.ts +109 -0
  147. package/dist/store-fs.d.ts.map +1 -0
  148. package/dist/store-fs.js +98 -0
  149. package/dist/store-fs.js.map +1 -0
  150. package/dist/transpile.d.ts +32 -0
  151. package/dist/transpile.d.ts.map +1 -0
  152. package/dist/transpile.js +63 -0
  153. package/dist/transpile.js.map +1 -0
  154. package/dist/typecheck-store.d.ts +41 -0
  155. package/dist/typecheck-store.d.ts.map +1 -0
  156. package/dist/typecheck-store.js +102 -0
  157. package/dist/typecheck-store.js.map +1 -0
  158. package/dist/writers/alias.d.ts +13 -0
  159. package/dist/writers/alias.d.ts.map +1 -0
  160. package/dist/writers/alias.js +17 -0
  161. package/dist/writers/alias.js.map +1 -0
  162. package/dist/writers/async.d.ts +22 -0
  163. package/dist/writers/async.d.ts.map +1 -0
  164. package/dist/writers/async.js +48 -0
  165. package/dist/writers/async.js.map +1 -0
  166. package/dist/writers/boxed-constructor.d.ts +26 -0
  167. package/dist/writers/boxed-constructor.d.ts.map +1 -0
  168. package/dist/writers/boxed-constructor.js +85 -0
  169. package/dist/writers/boxed-constructor.js.map +1 -0
  170. package/dist/writers/boxed-field-accessor.d.ts +18 -0
  171. package/dist/writers/boxed-field-accessor.d.ts.map +1 -0
  172. package/dist/writers/boxed-field-accessor.js +260 -0
  173. package/dist/writers/boxed-field-accessor.js.map +1 -0
  174. package/dist/writers/boxed-layout.d.ts +27 -0
  175. package/dist/writers/boxed-layout.d.ts.map +1 -0
  176. package/dist/writers/boxed-layout.js +128 -0
  177. package/dist/writers/boxed-layout.js.map +1 -0
  178. package/dist/writers/boxed.d.ts +20 -0
  179. package/dist/writers/boxed.d.ts.map +1 -0
  180. package/dist/writers/boxed.js +71 -0
  181. package/dist/writers/boxed.js.map +1 -0
  182. package/dist/writers/callables.d.ts +124 -0
  183. package/dist/writers/callables.d.ts.map +1 -0
  184. package/dist/writers/callables.js +283 -0
  185. package/dist/writers/callables.js.map +1 -0
  186. package/dist/writers/callback.d.ts +16 -0
  187. package/dist/writers/callback.d.ts.map +1 -0
  188. package/dist/writers/callback.js +38 -0
  189. package/dist/writers/callback.js.map +1 -0
  190. package/dist/writers/class-struct-record.d.ts +31 -0
  191. package/dist/writers/class-struct-record.d.ts.map +1 -0
  192. package/dist/writers/class-struct-record.js +67 -0
  193. package/dist/writers/class-struct-record.js.map +1 -0
  194. package/dist/writers/class-struct.d.ts +22 -0
  195. package/dist/writers/class-struct.d.ts.map +1 -0
  196. package/dist/writers/class-struct.js +85 -0
  197. package/dist/writers/class-struct.js.map +1 -0
  198. package/dist/writers/class.d.ts +16 -0
  199. package/dist/writers/class.d.ts.map +1 -0
  200. package/dist/writers/class.js +307 -0
  201. package/dist/writers/class.js.map +1 -0
  202. package/dist/writers/constant.d.ts +15 -0
  203. package/dist/writers/constant.d.ts.map +1 -0
  204. package/dist/writers/constant.js +23 -0
  205. package/dist/writers/constant.js.map +1 -0
  206. package/dist/writers/constants.d.ts +15 -0
  207. package/dist/writers/constants.d.ts.map +1 -0
  208. package/dist/writers/constants.js +23 -0
  209. package/dist/writers/constants.js.map +1 -0
  210. package/dist/writers/constructor-props.d.ts +32 -0
  211. package/dist/writers/constructor-props.d.ts.map +1 -0
  212. package/dist/writers/constructor-props.js +110 -0
  213. package/dist/writers/constructor-props.js.map +1 -0
  214. package/dist/writers/enum.d.ts +21 -0
  215. package/dist/writers/enum.d.ts.map +1 -0
  216. package/dist/writers/enum.js +48 -0
  217. package/dist/writers/enum.js.map +1 -0
  218. package/dist/writers/function.d.ts +40 -0
  219. package/dist/writers/function.d.ts.map +1 -0
  220. package/dist/writers/function.js +127 -0
  221. package/dist/writers/function.js.map +1 -0
  222. package/dist/writers/gtype-binding.d.ts +19 -0
  223. package/dist/writers/gtype-binding.d.ts.map +1 -0
  224. package/dist/writers/gtype-binding.js +40 -0
  225. package/dist/writers/gtype-binding.js.map +1 -0
  226. package/dist/writers/inheritance.d.ts +48 -0
  227. package/dist/writers/inheritance.d.ts.map +1 -0
  228. package/dist/writers/inheritance.js +90 -0
  229. package/dist/writers/inheritance.js.map +1 -0
  230. package/dist/writers/interface.d.ts +16 -0
  231. package/dist/writers/interface.d.ts.map +1 -0
  232. package/dist/writers/interface.js +155 -0
  233. package/dist/writers/interface.js.map +1 -0
  234. package/dist/writers/method.d.ts +150 -0
  235. package/dist/writers/method.d.ts.map +1 -0
  236. package/dist/writers/method.js +510 -0
  237. package/dist/writers/method.js.map +1 -0
  238. package/dist/writers/param-classify.d.ts +93 -0
  239. package/dist/writers/param-classify.d.ts.map +1 -0
  240. package/dist/writers/param-classify.js +163 -0
  241. package/dist/writers/param-classify.js.map +1 -0
  242. package/dist/writers/property-accessor.d.ts +19 -0
  243. package/dist/writers/property-accessor.d.ts.map +1 -0
  244. package/dist/writers/property-accessor.js +117 -0
  245. package/dist/writers/property-accessor.js.map +1 -0
  246. package/dist/writers/registration.d.ts +27 -0
  247. package/dist/writers/registration.d.ts.map +1 -0
  248. package/dist/writers/registration.js +30 -0
  249. package/dist/writers/registration.js.map +1 -0
  250. package/dist/writers/return-wrap.d.ts +39 -0
  251. package/dist/writers/return-wrap.d.ts.map +1 -0
  252. package/dist/writers/return-wrap.js +152 -0
  253. package/dist/writers/return-wrap.js.map +1 -0
  254. package/dist/writers/runtime-override.d.ts +18 -0
  255. package/dist/writers/runtime-override.d.ts.map +1 -0
  256. package/dist/writers/runtime-override.js +44 -0
  257. package/dist/writers/runtime-override.js.map +1 -0
  258. package/dist/writers/signal.d.ts +21 -0
  259. package/dist/writers/signal.d.ts.map +1 -0
  260. package/dist/writers/signal.js +260 -0
  261. package/dist/writers/signal.js.map +1 -0
  262. package/dist/writers/ts-type.d.ts +50 -0
  263. package/dist/writers/ts-type.d.ts.map +1 -0
  264. package/dist/writers/ts-type.js +75 -0
  265. package/dist/writers/ts-type.js.map +1 -0
  266. package/dist/writers/types-ts.d.ts +27 -0
  267. package/dist/writers/types-ts.d.ts.map +1 -0
  268. package/dist/writers/types-ts.js +97 -0
  269. package/dist/writers/types-ts.js.map +1 -0
  270. package/dist/writers/value.d.ts +89 -0
  271. package/dist/writers/value.d.ts.map +1 -0
  272. package/dist/writers/value.js +402 -0
  273. package/dist/writers/value.js.map +1 -0
  274. package/package.json +55 -0
  275. package/src/dsl/context.ts +146 -0
  276. package/src/dsl/emit.ts +42 -0
  277. package/src/dsl/identifier.ts +52 -0
  278. package/src/dsl/imports.ts +109 -0
  279. package/src/dsl/module.ts +75 -0
  280. package/src/ffi/pipeline.ts +113 -0
  281. package/src/fingerprint.ts +50 -0
  282. package/src/gi-store.ts +199 -0
  283. package/src/gir/boxed.ts +94 -0
  284. package/src/gir/callback.ts +26 -0
  285. package/src/gir/class.ts +79 -0
  286. package/src/gir/enum.ts +55 -0
  287. package/src/gir/field.ts +40 -0
  288. package/src/gir/function.ts +67 -0
  289. package/src/gir/namespace.ts +118 -0
  290. package/src/gir/parameter.ts +120 -0
  291. package/src/gir/parse.ts +171 -0
  292. package/src/gir/primitives.ts +137 -0
  293. package/src/gir/property.ts +39 -0
  294. package/src/gir/qualified-name.ts +55 -0
  295. package/src/gir/qualify.ts +64 -0
  296. package/src/gir/repository.ts +149 -0
  297. package/src/gir/signal.ts +36 -0
  298. package/src/gir/size.ts +129 -0
  299. package/src/gir/type-ref.ts +180 -0
  300. package/src/index.ts +16 -0
  301. package/src/jsx-store.ts +53 -0
  302. package/src/react/compounds-meta.ts +99 -0
  303. package/src/react/compounds.ts +204 -0
  304. package/src/react/internal.ts +91 -0
  305. package/src/react/jsx.ts +155 -0
  306. package/src/react/pipeline.ts +29 -0
  307. package/src/react/props.ts +307 -0
  308. package/src/react/slot-props.ts +57 -0
  309. package/src/react/widgets.ts +185 -0
  310. package/src/runner.ts +89 -0
  311. package/src/store-fs.ts +157 -0
  312. package/src/transpile.ts +80 -0
  313. package/src/typecheck-store.ts +136 -0
  314. package/src/writers/alias.ts +19 -0
  315. package/src/writers/async.ts +44 -0
  316. package/src/writers/boxed-constructor.ts +105 -0
  317. package/src/writers/boxed-field-accessor.ts +306 -0
  318. package/src/writers/boxed-layout.ts +166 -0
  319. package/src/writers/boxed.ts +77 -0
  320. package/src/writers/callables.ts +339 -0
  321. package/src/writers/callback.ts +40 -0
  322. package/src/writers/class-struct-record.ts +75 -0
  323. package/src/writers/class-struct.ts +96 -0
  324. package/src/writers/class.ts +384 -0
  325. package/src/writers/constant.ts +29 -0
  326. package/src/writers/constructor-props.ts +130 -0
  327. package/src/writers/enum.ts +53 -0
  328. package/src/writers/function.ts +136 -0
  329. package/src/writers/gtype-binding.ts +48 -0
  330. package/src/writers/inheritance.ts +104 -0
  331. package/src/writers/interface.ts +168 -0
  332. package/src/writers/method.ts +678 -0
  333. package/src/writers/param-classify.ts +178 -0
  334. package/src/writers/property-accessor.ts +139 -0
  335. package/src/writers/registration.ts +42 -0
  336. package/src/writers/return-wrap.ts +180 -0
  337. package/src/writers/runtime-override.ts +59 -0
  338. package/src/writers/signal.ts +318 -0
  339. package/src/writers/ts-type.ts +115 -0
  340. package/src/writers/value.ts +485 -0
@@ -0,0 +1,16 @@
1
+ import type { ModuleContext } from "../dsl/context.js";
2
+ import type { GirClass } from "../gir/class.js";
3
+ /**
4
+ * Emits a class declaration for a `<interface>` element.
5
+ *
6
+ * Interfaces have no GIR parent — they extend the GObject base
7
+ * (`GObject.Object`) in the generated output because every implementor is
8
+ * itself a GObject. Methods, static functions, and constructors are
9
+ * surfaced on the interface class just like a regular class so JS callers
10
+ * can dispatch them directly on interface-typed values.
11
+ *
12
+ * @param context - The module context
13
+ * @param iface - The interface to emit
14
+ */
15
+ export declare const emitInterface: (context: ModuleContext, iface: GirClass) => void;
16
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/writers/interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAqBhD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,aAAa,EAAE,OAAO,QAAQ,KAAG,IAwBvE,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { toPascalCase } from "@gtkx/utils";
2
+ import { indent } from "../dsl/emit.js";
3
+ import { splitQualifiedName } from "../gir/qualified-name.js";
4
+ import { qualifyFunction } from "../gir/qualify.js";
5
+ import { appendMethodBinding, dedupeCallables, emitBindings, indexMethodsByName, renderInstanceMethod, renderPlainTypeMembers, } from "./callables.js";
6
+ import { renderVfuncMetadata } from "./class-struct.js";
7
+ import { renderGetTypeReference } from "./gtype-binding.js";
8
+ import { resolveImplementedInterface } from "./inheritance.js";
9
+ import { methodExportName } from "./method.js";
10
+ import { renderPropertyAccessor } from "./property-accessor.js";
11
+ import { appendNativeClassRegistration } from "./registration.js";
12
+ import { renderSignalMembers } from "./signal.js";
13
+ /**
14
+ * Emits a class declaration for a `<interface>` element.
15
+ *
16
+ * Interfaces have no GIR parent — they extend the GObject base
17
+ * (`GObject.Object`) in the generated output because every implementor is
18
+ * itself a GObject. Methods, static functions, and constructors are
19
+ * surfaced on the interface class just like a regular class so JS callers
20
+ * can dispatch them directly on interface-typed values.
21
+ *
22
+ * @param context - The module context
23
+ * @param iface - The interface to emit
24
+ */
25
+ export const emitInterface = (context, iface) => {
26
+ if (!iface.introspectable)
27
+ return;
28
+ if (iface.name.length === 0)
29
+ return;
30
+ const className = toPascalCase(iface.name);
31
+ const callables = {
32
+ constructors: dedupeCallables(iface.constructors),
33
+ functions: dedupeCallables(iface.functions),
34
+ methods: dedupeCallables(iface.methods),
35
+ };
36
+ emitBindings(context, callables);
37
+ const parent = resolveInterfaceParent(context);
38
+ const members = renderInterfaceMembers(context, iface, callables);
39
+ const body = members.map((member) => indent(member, 1)).join("\n\n");
40
+ context.module.appendDeclaration(`export class ${className} extends ${parent} {\n${body}\n}`);
41
+ const prerequisiteRefs = iface.prerequisites
42
+ .map((name) => resolvePrerequisiteReference(context, name))
43
+ .filter((entry) => entry !== undefined);
44
+ if (prerequisiteRefs.length > 0) {
45
+ context.module.appendDeclaration(`export interface ${className} extends ${prerequisiteRefs.join(", ")} {}`);
46
+ }
47
+ appendInterfaceRegistrations(context, iface, className);
48
+ };
49
+ const renderInterfaceMembers = (context, iface, callables) => {
50
+ const className = toPascalCase(iface.name);
51
+ const { members, claimedNames } = renderPlainTypeMembers({
52
+ context,
53
+ className,
54
+ callables,
55
+ hasGType: true,
56
+ wrap: "interface",
57
+ });
58
+ appendPrerequisiteMethods(context, iface, members, claimedNames);
59
+ const methodByName = indexMethodsByName(callables.methods);
60
+ for (const property of iface.properties) {
61
+ const block = renderPropertyAccessor(context, property, claimedNames, methodByName);
62
+ if (block !== undefined)
63
+ members.push(block);
64
+ }
65
+ members.push(...renderSignalMembers(context, iface));
66
+ return members;
67
+ };
68
+ /**
69
+ * Copies the methods of an interface's transitive prerequisite interfaces onto
70
+ * the interface wrapper class.
71
+ *
72
+ * A `Gtk.SelectionModel` value is also a `Gio.ListModel`, but the JS wrapper
73
+ * only exposes `getNItems`/`getItem` if those prerequisite methods are emitted
74
+ * on the wrapper. Each prerequisite interface's methods are re-rooted to its
75
+ * namespace, bound, and emitted as direct members; names already provided by
76
+ * the interface itself are skipped.
77
+ *
78
+ * @param context - The module context
79
+ * @param iface - The interface being emitted
80
+ * @param members - The accumulating member list
81
+ * @param claimedNames - Names already emitted on the interface body
82
+ */
83
+ const appendPrerequisiteMethods = (context, iface, members, claimedNames) => {
84
+ for (const method of collectPrerequisiteMethods(context, iface)) {
85
+ const name = methodExportName(method);
86
+ if (name === "constructor" || claimedNames.has(name))
87
+ continue;
88
+ const block = renderInstanceMethod(context, method);
89
+ if (block === undefined)
90
+ continue;
91
+ appendMethodBinding(context, method);
92
+ members.push(block);
93
+ claimedNames.add(name);
94
+ }
95
+ };
96
+ const collectPrerequisiteMethods = (context, iface) => {
97
+ const result = [];
98
+ const visited = new Set();
99
+ const seen = new Set();
100
+ for (const method of iface.methods) {
101
+ if (method.introspectable)
102
+ seen.add(methodExportName(method));
103
+ }
104
+ const visit = (klass, namespaceName) => {
105
+ for (const prerequisiteName of klass.prerequisites) {
106
+ const prerequisite = resolveImplementedInterface(context, prerequisiteName, namespaceName);
107
+ if (prerequisite === undefined)
108
+ continue;
109
+ const key = `${prerequisite.namespaceName}.${prerequisite.klass.name}`;
110
+ if (visited.has(key))
111
+ continue;
112
+ visited.add(key);
113
+ for (const method of dedupeCallables(prerequisite.klass.methods)) {
114
+ const name = methodExportName(method);
115
+ if (seen.has(name))
116
+ continue;
117
+ seen.add(name);
118
+ result.push(qualifyFunction(method, prerequisite.namespaceName));
119
+ }
120
+ visit(prerequisite.klass, prerequisite.namespaceName);
121
+ }
122
+ };
123
+ visit(iface, context.namespace.name);
124
+ return result;
125
+ };
126
+ const appendInterfaceRegistrations = (context, iface, className) => {
127
+ const getTypeRef = iface.glibGetType === undefined
128
+ ? undefined
129
+ : renderGetTypeReference(context, iface.glibGetType, iface.glibTypeName);
130
+ appendNativeClassRegistration(context, {
131
+ className,
132
+ role: "interface",
133
+ getTypeRef,
134
+ vfuncs: renderVfuncMetadata(context, iface),
135
+ });
136
+ };
137
+ const resolveInterfaceParent = (context) => {
138
+ if (context.namespace.name === "GObject")
139
+ return "Object";
140
+ const alias = context.addCrossNamespaceImport("GObject");
141
+ return `${alias}.Object`;
142
+ };
143
+ const resolvePrerequisiteReference = (context, name) => {
144
+ const { namespaceName, typeName } = splitQualifiedName(name, context.namespace.name);
145
+ const resolved = context.repository.resolveNamed(namespaceName, typeName);
146
+ if (resolved === undefined)
147
+ return undefined;
148
+ if (resolved.kind !== "interface" && resolved.kind !== "class")
149
+ return undefined;
150
+ if (namespaceName === context.namespace.name)
151
+ return toPascalCase(typeName);
152
+ const alias = context.addCrossNamespaceImport(namespaceName);
153
+ return `${alias}.${toPascalCase(typeName)}`;
154
+ };
155
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/writers/interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import type { ModuleContext } from "../dsl/context.js";
2
+ import type { GirFunction } from "../gir/function.js";
3
+ import { type GirParameter } from "../gir/parameter.js";
4
+ import type { GirTypeRef } from "../gir/type-ref.js";
5
+ /**
6
+ * Returns the camelCased JS export name for a callable's method or static.
7
+ *
8
+ * @param fn - The callable
9
+ */
10
+ export declare const methodExportName: (fn: GirFunction) => string;
11
+ /**
12
+ * Renders the TypeScript parameter list for a callable.
13
+ *
14
+ * Drops out-only parameters, `<varargs>` slots, and array-length
15
+ * parameters whose value is computed from a sibling array's `.length`.
16
+ * Names follow `toCamelCase` of the GIR name, falling back to
17
+ * `arg<index>` for unnamed positions.
18
+ *
19
+ * @param context - The module context
20
+ * @param fn - The callable
21
+ */
22
+ export declare const renderMethodSignature: (context: ModuleContext, fn: GirFunction) => string;
23
+ /**
24
+ * Renders the TypeScript return-type annotation for a callable.
25
+ *
26
+ * Multi-out callables tuple the primary return with each out-parameter
27
+ * (`[primary, ...outs]`); when the primary return is void the tuple
28
+ * starts at the first out-parameter.
29
+ *
30
+ * @param context - The module context
31
+ * @param fn - The callable
32
+ */
33
+ export declare const renderMethodReturnType: (context: ModuleContext, fn: GirFunction) => string;
34
+ /**
35
+ * Optional override for the wrapper produced for the primary return value.
36
+ *
37
+ * Constructors use this to force the result to be wrapped as the owning
38
+ * class even when the GIR `<return-value>` is typed as a parent class.
39
+ */
40
+ type ReturnOverride = {
41
+ /**
42
+ * Resolve the wrapper from the value's runtime GLib type, so a
43
+ * constructor that hands back a subclass instance (e.g.
44
+ * `ShortcutTrigger.parseString` returning a `KeyvalTrigger`) keeps
45
+ * its concrete class and identity registration.
46
+ */
47
+ readonly via: "gobject";
48
+ } | {
49
+ /** Local interface identifier to fall back to when no registered class conforms. */
50
+ readonly className: string;
51
+ /**
52
+ * Resolve the wrapper from the runtime type, walking to the closest
53
+ * registered ancestor that still implements the interface and falling
54
+ * back to the interface class itself — the path interface-typed values
55
+ * take so a private implementation type still exposes the interface.
56
+ */
57
+ readonly via: "interface";
58
+ } | {
59
+ /** Local class identifier to pass as the second argument of `getNativeObject`. */
60
+ readonly className: string;
61
+ /**
62
+ * Wrap as the exact value-type class. Boxed records carry no runtime
63
+ * GObject type instance, so the class must be supplied explicitly.
64
+ */
65
+ readonly via: "boxed";
66
+ };
67
+ /**
68
+ * Renders the JS body of a promisified `*_async` method that delegates to
69
+ * the runtime's `promisify` helper.
70
+ *
71
+ * The method's leading FFI args (everything before the `GCancellable*`
72
+ * slot) and the cancellable parameter are extracted from the GIR `*_async`
73
+ * signature; the trailing `GAsyncReadyCallback` slot is filled by
74
+ * `promisify`. The `*_finish` companion is bound from the same class via
75
+ * `this[finishName].bind(this)`.
76
+ *
77
+ * @param context - The module context
78
+ * @param asyncFn - The `*_async` callable
79
+ * @param finishMember - The camelCase JS name of the companion `*_finish` method
80
+ * @param bindingExpression - Expression that evaluates to the bound async `t.fn` callable
81
+ */
82
+ export declare const renderPromisifiedBody: (context: ModuleContext, asyncFn: GirFunction, finishMember: string, bindingExpression: string) => string;
83
+ /**
84
+ * Renders the TypeScript signature for a promisified `*_async` method.
85
+ *
86
+ * The signature drops the trailing `GAsyncReadyCallback` and `gpointer
87
+ * user_data` slots, marks the cancellable optional, and returns a
88
+ * `Promise` wrapping the finish method's return type.
89
+ *
90
+ * @param context - The module context
91
+ * @param asyncFn - The `*_async` callable
92
+ * @param finishFn - The companion `*_finish` callable
93
+ */
94
+ export declare const renderPromisifiedSignature: (context: ModuleContext, asyncFn: GirFunction, finishFn: GirFunction) => {
95
+ readonly signature: string;
96
+ readonly returnType: string;
97
+ };
98
+ export type WriteMethodBodyOptions = {
99
+ /** Bound `t.fn` callable expression to invoke. */
100
+ readonly bindingExpression: string;
101
+ /** True for static methods, constructors, or namespace functions. */
102
+ readonly isStatic: boolean;
103
+ /** Optional override for the primary return wrapping class. */
104
+ readonly returnAs?: ReturnOverride;
105
+ };
106
+ export declare const renderMethodBody: (context: ModuleContext, fn: GirFunction, options: WriteMethodBodyOptions) => string;
107
+ /**
108
+ * The marshalling plan for a callback or signal trampoline's incoming
109
+ * arguments: the rendered comma-separated handler call arguments and the
110
+ * trampoline-arg indices of any out-parameter cells.
111
+ */
112
+ export type TrampolineArgPlan = {
113
+ readonly callArgs: string;
114
+ readonly outArgIndices: number[];
115
+ };
116
+ /**
117
+ * Plans how a callback or signal trampoline forwards its raw arguments to the
118
+ * user handler.
119
+ *
120
+ * In-parameters are wrapped via {@link wrapReturnValue} and joined into the
121
+ * handler call; out-parameters are dropped from the call and their trampoline
122
+ * cell indices collected for write-back. `argOffset` shifts every `args[...]`
123
+ * access: callbacks read from index `0`, while signal trampolines reserve
124
+ * index `0` for the emitting instance and so pass `1`.
125
+ *
126
+ * @param context - The module context
127
+ * @param parameters - The callback or signal parameters, varargs excluded
128
+ * @param namespaceName - The namespace the parameter type references resolve against
129
+ * @param argOffset - Added to each parameter's positional index
130
+ */
131
+ export declare const planTrampolineArgs: (context: ModuleContext, parameters: readonly GirParameter[], namespaceName: string, argOffset: number) => TrampolineArgPlan;
132
+ /**
133
+ * Renders the body of a native→JS callback wrapper that returns out-parameters
134
+ * as a tuple.
135
+ *
136
+ * The wrapped user function returns `[primary, ...outs]` (or the scalar out
137
+ * alone for a void return with a single out, or an out-only tuple otherwise).
138
+ * This emits `const _result = …;`, writes each out value into its `{ value }`
139
+ * cell's `value` slot (`args[i].value = …`), and returns the primary — keeping the
140
+ * tuple convention entirely in generated code so the native layer only flushes
141
+ * cells through their out-pointers. Shared by signal and callback writers.
142
+ *
143
+ * @param context - The module context
144
+ * @param callExpression - The expression that invokes the user function
145
+ * @param outArgIndices - Argument indices of the out-parameter cells
146
+ * @param returnRef - The primary return type, or `undefined` for void
147
+ */
148
+ export declare const renderTupleWriteback: (context: ModuleContext, callExpression: string, outArgIndices: readonly number[], returnRef: GirTypeRef | undefined) => string;
149
+ export {};
150
+ //# sourceMappingURL=method.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../src/writers/method.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAA0D,MAAM,qBAAqB,CAAC;AAEhH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,oBAAoB,CAAC;AAcrF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,IAAI,WAAW,KAAG,MAA8B,CAAC;AAElF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAM3E,CAAC;AAsBN;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAmBhF,CAAC;AAQF;;;;;GAKG;AACH,KAAK,cAAc,GACb;IACI;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;CAC3B,GACD;IACI,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC7B,GACD;IACI,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACzB,CAAC;AAER;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,GAC9B,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,cAAc,MAAM,EACpB,mBAAmB,MAAM,KAC1B,MA+BF,CAAC;AAYF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B,GACnC,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,UAAU,WAAW,KACtB;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAS3D,CAAC;AA4CF,MAAM,MAAM,sBAAsB,GAAG;IACjC,kDAAkD;IAClD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,EAAE,SAAS,sBAAsB,KAAG,MAoB3G,CAAC;AAgPF;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAC3B,SAAS,aAAa,EACtB,YAAY,SAAS,YAAY,EAAE,EACnC,eAAe,MAAM,EACrB,WAAW,MAAM,KAClB,iBAsBF,CAAC;AAiBF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,GAC7B,SAAS,aAAa,EACtB,gBAAgB,MAAM,EACtB,eAAe,SAAS,MAAM,EAAE,EAChC,WAAW,UAAU,GAAG,SAAS,KAClC,MAqBF,CAAC"}