@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,36 @@
1
+ /**
2
+ * Mapping from GIR primitive type names to the FFI marshaling categories
3
+ * the writers emit.
4
+ *
5
+ * The categories mirror the `t.*` helpers exposed by `@gtkx/ffi`'s runtime
6
+ * (see `packages/ffi/src/helpers.ts`). Categories that are not directly
7
+ * marshaled (e.g. `void`, `string`, `unichar`) are still listed so callers
8
+ * can branch on them without falling through to a default.
9
+ */
10
+ export type PrimitiveCategory = "void" | "boolean" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "float32" | "float64" | "string" | "unichar" | "pointer";
11
+ /**
12
+ * Width in bytes of each primitive category on the x86-64 ABI (Linux LP64).
13
+ *
14
+ * The widths are also used as the natural alignment requirement of each
15
+ * category — every native integer/float aligns to its own size.
16
+ */
17
+ export declare const PRIMITIVE_SIZE: Readonly<Record<PrimitiveCategory, number>>;
18
+ /**
19
+ * Returns the FFI category for a GIR primitive name (`"gint"`, `"utf8"`,
20
+ * `"gsize"`, …) or `undefined` when the name is not a primitive.
21
+ *
22
+ * Aliases that GIR uses inconsistently (`gint` / `int` / `gint32`, …) all
23
+ * map to the same canonical category.
24
+ *
25
+ * @param name - The GIR type name as it appears in `<type name="…">`
26
+ */
27
+ export declare const primitiveCategory: (name: string) => PrimitiveCategory | undefined;
28
+ /**
29
+ * TypeScript surface type for each primitive category.
30
+ *
31
+ * Codegen surfaces both raw C primitives and string-marshalled categories
32
+ * (`string`, `unichar`) through this map so writers in the FFI and React
33
+ * pipelines agree on the same annotation per category.
34
+ */
35
+ export declare const PRIMITIVE_TS_TYPE: Readonly<Record<PrimitiveCategory, string>>;
36
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACvB,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAgBrE,CAAC;AAsDH;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,iBAAiB,GAAG,SAAwC,CAAC;AAE9G;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAgBxE,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Width in bytes of each primitive category on the x86-64 ABI (Linux LP64).
3
+ *
4
+ * The widths are also used as the natural alignment requirement of each
5
+ * category — every native integer/float aligns to its own size.
6
+ */
7
+ export const PRIMITIVE_SIZE = Object.freeze({
8
+ void: 0,
9
+ boolean: 4,
10
+ int8: 1,
11
+ uint8: 1,
12
+ int16: 2,
13
+ uint16: 2,
14
+ int32: 4,
15
+ uint32: 4,
16
+ int64: 8,
17
+ uint64: 8,
18
+ float32: 4,
19
+ float64: 8,
20
+ string: 8,
21
+ unichar: 4,
22
+ pointer: 8,
23
+ });
24
+ const PRIMITIVE_BY_NAME = new Map([
25
+ ["none", "void"],
26
+ ["void", "void"],
27
+ ["gboolean", "boolean"],
28
+ ["gchar", "int8"],
29
+ ["gint8", "int8"],
30
+ ["guchar", "uint8"],
31
+ ["guint8", "uint8"],
32
+ ["gshort", "int16"],
33
+ ["gint16", "int16"],
34
+ ["gushort", "uint16"],
35
+ ["guint16", "uint16"],
36
+ ["gint", "int32"],
37
+ ["gint32", "int32"],
38
+ ["int", "int32"],
39
+ ["int8", "int8"],
40
+ ["uint8", "uint8"],
41
+ ["int16", "int16"],
42
+ ["uint16", "uint16"],
43
+ ["int32", "int32"],
44
+ ["uint32", "uint32"],
45
+ ["int64", "int64"],
46
+ ["uint64", "uint64"],
47
+ ["guint", "uint32"],
48
+ ["guint32", "uint32"],
49
+ ["glong", "int64"],
50
+ ["gint64", "int64"],
51
+ ["long", "int64"],
52
+ ["gssize", "int64"],
53
+ ["gintptr", "int64"],
54
+ ["gulong", "uint64"],
55
+ ["guint64", "uint64"],
56
+ ["gsize", "uint64"],
57
+ ["guintptr", "uint64"],
58
+ ["GType", "uint64"],
59
+ ["time_t", "int64"],
60
+ ["pid_t", "int32"],
61
+ ["uid_t", "uint32"],
62
+ ["gid_t", "uint32"],
63
+ ["gfloat", "float32"],
64
+ ["float", "float32"],
65
+ ["gdouble", "float64"],
66
+ ["double", "float64"],
67
+ ["long double", "float64"],
68
+ ["utf8", "string"],
69
+ ["filename", "string"],
70
+ ["gchararray", "string"],
71
+ ["gunichar", "unichar"],
72
+ ["gpointer", "pointer"],
73
+ ["gconstpointer", "pointer"],
74
+ ]);
75
+ /**
76
+ * Returns the FFI category for a GIR primitive name (`"gint"`, `"utf8"`,
77
+ * `"gsize"`, …) or `undefined` when the name is not a primitive.
78
+ *
79
+ * Aliases that GIR uses inconsistently (`gint` / `int` / `gint32`, …) all
80
+ * map to the same canonical category.
81
+ *
82
+ * @param name - The GIR type name as it appears in `<type name="…">`
83
+ */
84
+ export const primitiveCategory = (name) => PRIMITIVE_BY_NAME.get(name);
85
+ /**
86
+ * TypeScript surface type for each primitive category.
87
+ *
88
+ * Codegen surfaces both raw C primitives and string-marshalled categories
89
+ * (`string`, `unichar`) through this map so writers in the FFI and React
90
+ * pipelines agree on the same annotation per category.
91
+ */
92
+ export const PRIMITIVE_TS_TYPE = Object.freeze({
93
+ void: "void",
94
+ boolean: "boolean",
95
+ int8: "number",
96
+ uint8: "number",
97
+ int16: "number",
98
+ uint16: "number",
99
+ int32: "number",
100
+ uint32: "number",
101
+ int64: "number",
102
+ uint64: "number",
103
+ float32: "number",
104
+ float64: "number",
105
+ string: "string",
106
+ unichar: "string",
107
+ pointer: "number",
108
+ });
109
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/gir/primitives.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ParameterTransfer } from "./parameter.js";
2
+ import { type RawNode } from "./parse.js";
3
+ import { type GirTypeRef } from "./type-ref.js";
4
+ /**
5
+ * A `<property>` of a class or interface.
6
+ *
7
+ * GIR property names are kebab-case; the writers convert them to camelCase
8
+ * for the JS surface and pass the original GIR name through to
9
+ * `registerConstructionMeta` for `g_object_newv` parameter building.
10
+ */
11
+ export type GirProperty = {
12
+ /** GIR property name, kebab-case (e.g. `"css-name"`). */
13
+ readonly name: string;
14
+ /** Property value type. */
15
+ readonly type: GirTypeRef | undefined;
16
+ readonly writable: boolean;
17
+ readonly construct: boolean;
18
+ readonly constructOnly: boolean;
19
+ readonly transferOwnership: ParameterTransfer;
20
+ /** Optional method name that backs the property's getter (`getter="get_foo"`). */
21
+ readonly getter: string | undefined;
22
+ /** Optional method name that backs the property's setter (`setter="set_foo"`). */
23
+ readonly setter: string | undefined;
24
+ };
25
+ /**
26
+ * Builds a {@link GirProperty} from a `<property>` element.
27
+ */
28
+ export declare const propertyFromNode: (node: RawNode) => GirProperty;
29
+ //# sourceMappingURL=property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.d.ts","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,eAAe,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,OAAO,KAAG,WAS/C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { attr, attrBool } from "./parse.js";
2
+ import { typeRefFromSlot } from "./type-ref.js";
3
+ /**
4
+ * Builds a {@link GirProperty} from a `<property>` element.
5
+ */
6
+ export const propertyFromNode = (node) => ({
7
+ name: attr(node, "name") ?? "",
8
+ type: typeRefFromSlot(node),
9
+ writable: attrBool(node, "writable"),
10
+ construct: attrBool(node, "construct"),
11
+ constructOnly: attrBool(node, "construct-only"),
12
+ transferOwnership: (attr(node, "transfer-ownership") ?? "none"),
13
+ getter: attr(node, "getter"),
14
+ setter: attr(node, "setter"),
15
+ });
16
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../src/gir/property.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAmB,eAAe,EAAE,MAAM,eAAe,CAAC;AAwBjE;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC;IAC7D,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;IAC9B,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IACpC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACtC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/C,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAsB;IACpF,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;CAC/B,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { GirClass } from "./class.js";
2
+ import type { GirRepository } from "./repository.js";
3
+ /**
4
+ * Splits a possibly cross-namespace GIR identifier (e.g. `"Gtk.Widget"`) into
5
+ * its namespace and local name.
6
+ *
7
+ * Identifiers without a dot are resolved against `defaultNamespace`. This
8
+ * mirrors the GIR convention where same-namespace references omit the
9
+ * namespace prefix.
10
+ *
11
+ * @param qualified - The GIR identifier as it appears in `<type>` / `parent`
12
+ * @param defaultNamespace - The namespace to assume when no prefix is present
13
+ */
14
+ export declare const splitQualifiedName: (qualified: string, defaultNamespace: string) => {
15
+ readonly namespaceName: string;
16
+ readonly typeName: string;
17
+ };
18
+ /**
19
+ * A class or interface together with the namespace it was resolved through.
20
+ */
21
+ export type ResolvedQualifiedClass = {
22
+ readonly klass: GirClass;
23
+ readonly namespaceName: string;
24
+ };
25
+ /**
26
+ * Resolves a possibly cross-namespace identifier to its `class` or `interface`
27
+ * entry plus the namespace that declares it.
28
+ *
29
+ * Returns `undefined` when the identifier resolves to a different kind of GIR
30
+ * entity (boxed, enum, …) or cannot be resolved at all.
31
+ *
32
+ * @param repository - The repository to query
33
+ * @param qualified - The GIR identifier (e.g. `"Gtk.Widget"`)
34
+ * @param defaultNamespace - Namespace to assume for unqualified identifiers
35
+ */
36
+ export declare const resolveQualifiedClass: (repository: GirRepository, qualified: string, defaultNamespace: string) => ResolvedQualifiedClass | undefined;
37
+ //# sourceMappingURL=qualified-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-name.d.ts","sourceRoot":"","sources":["../../src/gir/qualified-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC3B,WAAW,MAAM,EACjB,kBAAkB,MAAM,KACzB;IAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAM7D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAC9B,YAAY,aAAa,EACzB,WAAW,MAAM,EACjB,kBAAkB,MAAM,KACzB,sBAAsB,GAAG,SAM3B,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Splits a possibly cross-namespace GIR identifier (e.g. `"Gtk.Widget"`) into
3
+ * its namespace and local name.
4
+ *
5
+ * Identifiers without a dot are resolved against `defaultNamespace`. This
6
+ * mirrors the GIR convention where same-namespace references omit the
7
+ * namespace prefix.
8
+ *
9
+ * @param qualified - The GIR identifier as it appears in `<type>` / `parent`
10
+ * @param defaultNamespace - The namespace to assume when no prefix is present
11
+ */
12
+ export const splitQualifiedName = (qualified, defaultNamespace) => {
13
+ const dot = qualified.indexOf(".");
14
+ if (dot === -1) {
15
+ return { namespaceName: defaultNamespace, typeName: qualified };
16
+ }
17
+ return { namespaceName: qualified.slice(0, dot), typeName: qualified.slice(dot + 1) };
18
+ };
19
+ /**
20
+ * Resolves a possibly cross-namespace identifier to its `class` or `interface`
21
+ * entry plus the namespace that declares it.
22
+ *
23
+ * Returns `undefined` when the identifier resolves to a different kind of GIR
24
+ * entity (boxed, enum, …) or cannot be resolved at all.
25
+ *
26
+ * @param repository - The repository to query
27
+ * @param qualified - The GIR identifier (e.g. `"Gtk.Widget"`)
28
+ * @param defaultNamespace - Namespace to assume for unqualified identifiers
29
+ */
30
+ export const resolveQualifiedClass = (repository, qualified, defaultNamespace) => {
31
+ const { namespaceName, typeName } = splitQualifiedName(qualified, defaultNamespace);
32
+ const resolved = repository.resolveNamed(namespaceName, typeName);
33
+ if (resolved === undefined)
34
+ return undefined;
35
+ if (resolved.kind !== "class" && resolved.kind !== "interface")
36
+ return undefined;
37
+ return { klass: resolved.value, namespaceName: resolved.namespace.name };
38
+ };
39
+ //# sourceMappingURL=qualified-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-name.js","sourceRoot":"","sources":["../../src/gir/qualified-name.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,SAAiB,EACjB,gBAAwB,EACqC,EAAE;IAC/D,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC,CAAC;AAUF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,UAAyB,EACzB,SAAiB,EACjB,gBAAwB,EACU,EAAE;IACpC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACjF,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC7E,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { GirFunction } from "./function.js";
2
+ import type { GirTypeRef } from "./type-ref.js";
3
+ /**
4
+ * Stamps a default namespace onto an unqualified `named` reference and
5
+ * recurses into composite (`array`, `list`, `hashtable`) references.
6
+ *
7
+ * GIR omits the namespace when a reference points to a sibling in the same
8
+ * file. When writers walk a class hierarchy across namespaces, the parent's
9
+ * references must be qualified with the parent's namespace before they can be
10
+ * resolved against the repository.
11
+ *
12
+ * Returns `undefined` for an `undefined` input so callers can pass through
13
+ * void return types unchanged.
14
+ *
15
+ * @param ref - The reference to qualify, or `undefined`
16
+ * @param defaultNamespace - The namespace to stamp on unqualified refs
17
+ */
18
+ export declare const qualifyTypeRef: (ref: GirTypeRef | undefined, defaultNamespace: string) => GirTypeRef | undefined;
19
+ /**
20
+ * Re-roots every type reference of a callable to `defaultNamespace`.
21
+ *
22
+ * Interface methods are flattened onto each implementing class, but their
23
+ * GIR type references are unqualified relative to the interface's own
24
+ * namespace. Stamping the interface namespace onto the instance parameter,
25
+ * each regular parameter, and the return value lets the class writer resolve
26
+ * and import those references as if the method had been authored on the class.
27
+ *
28
+ * @param fn - The callable whose references to qualify
29
+ * @param defaultNamespace - The namespace the callable's references belong to
30
+ */
31
+ export declare const qualifyFunction: (fn: GirFunction, defaultNamespace: string) => GirFunction;
32
+ //# sourceMappingURL=qualify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualify.d.ts","sourceRoot":"","sources":["../../src/gir/qualify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,UAAU,GAAG,SAAS,EAAE,kBAAkB,MAAM,KAAG,UAAU,GAAG,SAoBnG,CAAC;AAOF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAAI,IAAI,WAAW,EAAE,kBAAkB,MAAM,KAAG,WAK1E,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Stamps a default namespace onto an unqualified `named` reference and
3
+ * recurses into composite (`array`, `list`, `hashtable`) references.
4
+ *
5
+ * GIR omits the namespace when a reference points to a sibling in the same
6
+ * file. When writers walk a class hierarchy across namespaces, the parent's
7
+ * references must be qualified with the parent's namespace before they can be
8
+ * resolved against the repository.
9
+ *
10
+ * Returns `undefined` for an `undefined` input so callers can pass through
11
+ * void return types unchanged.
12
+ *
13
+ * @param ref - The reference to qualify, or `undefined`
14
+ * @param defaultNamespace - The namespace to stamp on unqualified refs
15
+ */
16
+ export const qualifyTypeRef = (ref, defaultNamespace) => {
17
+ if (ref === undefined)
18
+ return undefined;
19
+ switch (ref.kind) {
20
+ case "named":
21
+ return { ...ref, namespaceName: ref.namespaceName ?? defaultNamespace };
22
+ case "array":
23
+ return { ...ref, element: qualifyTypeRef(ref.element, defaultNamespace) ?? ref.element };
24
+ case "list":
25
+ return { ...ref, element: qualifyTypeRef(ref.element, defaultNamespace) ?? ref.element };
26
+ case "hashtable":
27
+ return {
28
+ ...ref,
29
+ key: qualifyTypeRef(ref.key, defaultNamespace) ?? ref.key,
30
+ value: qualifyTypeRef(ref.value, defaultNamespace) ?? ref.value,
31
+ };
32
+ case "primitive":
33
+ case "callback":
34
+ case "varargs":
35
+ return ref;
36
+ }
37
+ };
38
+ const qualifyParameter = (parameter, defaultNamespace) => ({
39
+ ...parameter,
40
+ type: qualifyTypeRef(parameter.type, defaultNamespace),
41
+ });
42
+ /**
43
+ * Re-roots every type reference of a callable to `defaultNamespace`.
44
+ *
45
+ * Interface methods are flattened onto each implementing class, but their
46
+ * GIR type references are unqualified relative to the interface's own
47
+ * namespace. Stamping the interface namespace onto the instance parameter,
48
+ * each regular parameter, and the return value lets the class writer resolve
49
+ * and import those references as if the method had been authored on the class.
50
+ *
51
+ * @param fn - The callable whose references to qualify
52
+ * @param defaultNamespace - The namespace the callable's references belong to
53
+ */
54
+ export const qualifyFunction = (fn, defaultNamespace) => ({
55
+ ...fn,
56
+ instance: fn.instance === undefined ? undefined : qualifyParameter(fn.instance, defaultNamespace),
57
+ parameters: fn.parameters.map((parameter) => qualifyParameter(parameter, defaultNamespace)),
58
+ returnValue: { ...fn.returnValue, type: qualifyTypeRef(fn.returnValue.type, defaultNamespace) },
59
+ });
60
+ //# sourceMappingURL=qualify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualify.js","sourceRoot":"","sources":["../../src/gir/qualify.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAA2B,EAAE,gBAAwB,EAA0B,EAAE;IAC5G,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,OAAO;YACR,OAAO,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,gBAAgB,EAAE,CAAC;QAC5E,KAAK,OAAO;YACR,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7F,KAAK,MAAM;YACP,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7F,KAAK,WAAW;YACZ,OAAO;gBACH,GAAG,GAAG;gBACN,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,GAAG;gBACzD,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,KAAK;aAClE,CAAC;QACN,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS;YACV,OAAO,GAAG,CAAC;IACnB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,SAAuB,EAAE,gBAAwB,EAAgB,EAAE,CAAC,CAAC;IAC3F,GAAG,SAAS;IACZ,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACzD,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAe,EAAE,gBAAwB,EAAe,EAAE,CAAC,CAAC;IACxF,GAAG,EAAE;IACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACjG,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC3F,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;CAClG,CAAC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import type { GirBoxed } from "./boxed.js";
2
+ import type { GirCallback } from "./callback.js";
3
+ import type { GirClass } from "./class.js";
4
+ import type { GirEnum } from "./enum.js";
5
+ import { type GirNamespace } from "./namespace.js";
6
+ import type { GirTypeRef } from "./type-ref.js";
7
+ /**
8
+ * Resolved entity that a {@link GirRepository.resolveNamed} call returns.
9
+ *
10
+ * Wraps the matching entity along with the namespace it lives in, so
11
+ * writers can pull the namespace identifier or shared library name without
12
+ * a second lookup.
13
+ */
14
+ export type ResolvedNamed = {
15
+ readonly kind: "class";
16
+ readonly namespace: GirNamespace;
17
+ readonly value: GirClass;
18
+ } | {
19
+ readonly kind: "interface";
20
+ readonly namespace: GirNamespace;
21
+ readonly value: GirClass;
22
+ } | {
23
+ readonly kind: "boxed";
24
+ readonly namespace: GirNamespace;
25
+ readonly value: GirBoxed;
26
+ } | {
27
+ readonly kind: "enum";
28
+ readonly namespace: GirNamespace;
29
+ readonly value: GirEnum;
30
+ } | {
31
+ readonly kind: "callback";
32
+ readonly namespace: GirNamespace;
33
+ readonly value: GirCallback;
34
+ } | {
35
+ readonly kind: "alias";
36
+ readonly namespace: GirNamespace;
37
+ readonly target: string | undefined;
38
+ readonly targetRef: GirTypeRef | undefined;
39
+ };
40
+ /**
41
+ * In-memory database of every loaded GIR namespace, indexed by name.
42
+ *
43
+ * Construct via {@link loadGirRepository}; the public API after that is the
44
+ * `namespaces` map and {@link resolveNamed} for cross-namespace lookups.
45
+ */
46
+ export declare class GirRepository {
47
+ /** Namespaces keyed by their unqualified name (e.g. `"Gtk"`, `"GLib"`). */
48
+ readonly namespaces: ReadonlyMap<string, GirNamespace>;
49
+ /** Absolute paths of every `.gir` file loaded, for staleness fingerprinting. */
50
+ readonly girFiles: readonly string[];
51
+ private readonly entityIndex;
52
+ /**
53
+ * Constructs a repository from the supplied namespace map.
54
+ *
55
+ * Callers should prefer {@link loadGirRepository} which discovers and
56
+ * parses files for you.
57
+ *
58
+ * @param namespaces - Namespaces keyed by unqualified name
59
+ * @param girFiles - Absolute paths of the `.gir` files the namespaces came from
60
+ */
61
+ constructor(namespaces: ReadonlyMap<string, GirNamespace>, girFiles?: readonly string[]);
62
+ /**
63
+ * Looks up a type by `(namespace, name)`. Aliases are followed one step
64
+ * to their target. Returns `undefined` when neither the namespace nor a
65
+ * matching entity exists.
66
+ *
67
+ * @param namespaceName - Namespace to look in (e.g. `"GLib"`)
68
+ * @param typeName - Local type name within the namespace (e.g. `"Variant"`)
69
+ */
70
+ resolveNamed(namespaceName: string, typeName: string): ResolvedNamed | undefined;
71
+ }
72
+ /**
73
+ * Discovers and parses every GIR file needed to satisfy `libraries` and
74
+ * their transitive `<include>` dependencies.
75
+ *
76
+ * @param libraries - Resolved `Name-Version` namespace identifiers
77
+ * @param girPath - Ordered list of directories to search for `.gir` files
78
+ * @returns A populated {@link GirRepository}
79
+ * @throws If any required GIR file cannot be located on `girPath`
80
+ */
81
+ export declare const loadGirRepository: (libraries: readonly string[], girPath: readonly string[]) => GirRepository;
82
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/gir/repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC1F;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC5F;IACI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;CAC9C,CAAC;AAER;;;;;GAKG;AACH,qBAAa,aAAa;IACtB,2EAA2E;IAC3E,SAAgB,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9D,gFAAgF;IAChF,SAAgB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD;;;;;;;;OAQG;gBACS,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO;IAS3F;;;;;;;OAOG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CAMnF;AA+BD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,SAAS,MAAM,EAAE,EAAE,SAAS,SAAS,MAAM,EAAE,KAAG,aAuB5F,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { namespaceFromRepository } from "./namespace.js";
4
+ import { parseGirFile } from "./parse.js";
5
+ /**
6
+ * In-memory database of every loaded GIR namespace, indexed by name.
7
+ *
8
+ * Construct via {@link loadGirRepository}; the public API after that is the
9
+ * `namespaces` map and {@link resolveNamed} for cross-namespace lookups.
10
+ */
11
+ export class GirRepository {
12
+ /** Namespaces keyed by their unqualified name (e.g. `"Gtk"`, `"GLib"`). */
13
+ namespaces;
14
+ /** Absolute paths of every `.gir` file loaded, for staleness fingerprinting. */
15
+ girFiles;
16
+ entityIndex;
17
+ /**
18
+ * Constructs a repository from the supplied namespace map.
19
+ *
20
+ * Callers should prefer {@link loadGirRepository} which discovers and
21
+ * parses files for you.
22
+ *
23
+ * @param namespaces - Namespaces keyed by unqualified name
24
+ * @param girFiles - Absolute paths of the `.gir` files the namespaces came from
25
+ */
26
+ constructor(namespaces, girFiles = []) {
27
+ this.namespaces = namespaces;
28
+ this.girFiles = girFiles;
29
+ this.entityIndex = new Map();
30
+ for (const namespace of namespaces.values()) {
31
+ indexNamespace(this.entityIndex, namespace);
32
+ }
33
+ }
34
+ /**
35
+ * Looks up a type by `(namespace, name)`. Aliases are followed one step
36
+ * to their target. Returns `undefined` when neither the namespace nor a
37
+ * matching entity exists.
38
+ *
39
+ * @param namespaceName - Namespace to look in (e.g. `"GLib"`)
40
+ * @param typeName - Local type name within the namespace (e.g. `"Variant"`)
41
+ */
42
+ resolveNamed(namespaceName, typeName) {
43
+ const key = entityKey(namespaceName, typeName);
44
+ const direct = this.entityIndex.get(key);
45
+ if (direct !== undefined)
46
+ return direct;
47
+ return undefined;
48
+ }
49
+ }
50
+ const entityKey = (namespaceName, typeName) => `${namespaceName}.${typeName}`;
51
+ const indexNamespace = (index, namespace) => {
52
+ for (const value of namespace.classes) {
53
+ index.set(entityKey(namespace.name, value.name), { kind: "class", namespace, value });
54
+ }
55
+ for (const value of namespace.interfaces) {
56
+ index.set(entityKey(namespace.name, value.name), { kind: "interface", namespace, value });
57
+ }
58
+ for (const value of namespace.boxeds) {
59
+ index.set(entityKey(namespace.name, value.name), { kind: "boxed", namespace, value });
60
+ }
61
+ for (const value of namespace.enums) {
62
+ index.set(entityKey(namespace.name, value.name), { kind: "enum", namespace, value });
63
+ }
64
+ for (const value of namespace.callbacks) {
65
+ index.set(entityKey(namespace.name, value.name), { kind: "callback", namespace, value });
66
+ }
67
+ for (const alias of namespace.aliases) {
68
+ const target = alias.target?.kind === "named" ? alias.target.typeName : undefined;
69
+ index.set(entityKey(namespace.name, alias.name), {
70
+ kind: "alias",
71
+ namespace,
72
+ target,
73
+ targetRef: alias.target,
74
+ });
75
+ }
76
+ };
77
+ /**
78
+ * Discovers and parses every GIR file needed to satisfy `libraries` and
79
+ * their transitive `<include>` dependencies.
80
+ *
81
+ * @param libraries - Resolved `Name-Version` namespace identifiers
82
+ * @param girPath - Ordered list of directories to search for `.gir` files
83
+ * @returns A populated {@link GirRepository}
84
+ * @throws If any required GIR file cannot be located on `girPath`
85
+ */
86
+ export const loadGirRepository = (libraries, girPath) => {
87
+ const namespaces = new Map();
88
+ const girFiles = [];
89
+ const queue = [...libraries];
90
+ while (queue.length > 0) {
91
+ const identifier = queue.shift();
92
+ if (identifier === undefined)
93
+ continue;
94
+ const namespaceName = identifier.split("-")[0] ?? identifier;
95
+ if (namespaces.has(namespaceName))
96
+ continue;
97
+ const path = locateGirFile(identifier, girPath);
98
+ girFiles.push(path);
99
+ const root = parseGirFile(path);
100
+ const repository = root.repository;
101
+ if (typeof repository !== "object" || repository === null) {
102
+ throw new Error(`GIR file at ${path} has no <repository> root`);
103
+ }
104
+ const namespace = namespaceFromRepository(repository);
105
+ namespaces.set(namespace.name, namespace);
106
+ for (const include of namespace.includes) {
107
+ queue.push(`${include.name}-${include.version}`);
108
+ }
109
+ }
110
+ return new GirRepository(namespaces, girFiles);
111
+ };
112
+ const locateGirFile = (identifier, girPath) => {
113
+ const filename = `${identifier}.gir`;
114
+ for (const directory of girPath) {
115
+ const candidate = join(directory, filename);
116
+ if (existsSync(candidate))
117
+ return candidate;
118
+ }
119
+ const tried = girPath.map((directory) => join(directory, filename)).join(", ");
120
+ throw new Error(`GIR file ${filename} not found on girPath. Tried: ${tried}`);
121
+ };
122
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/gir/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type GirParameter, type GirReturnValue } from "./parameter.js";
2
+ import { type RawNode } from "./parse.js";
3
+ /** Emission stage (`<glib:signal when="…">`). */
4
+ type SignalWhen = "first" | "last" | "cleanup";
5
+ /** A GObject `<glib:signal>` declaration. */
6
+ export type GirSignal = {
7
+ /** GIR signal name, kebab-case (e.g. `"activate-link"`). */
8
+ readonly name: string;
9
+ readonly parameters: readonly GirParameter[];
10
+ readonly returnValue: GirReturnValue;
11
+ readonly when: SignalWhen;
12
+ readonly detailed: boolean;
13
+ readonly action: boolean;
14
+ readonly noRecurse: boolean;
15
+ readonly noHooks: boolean;
16
+ };
17
+ /**
18
+ * Builds a {@link GirSignal} from a `<glib:signal>` element.
19
+ */
20
+ export declare const signalFromNode: (node: RawNode) => GirSignal;
21
+ export {};
22
+ //# sourceMappingURL=signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/gir/signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAA0C,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE/E,iDAAiD;AACjD,KAAK,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/C,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,KAAG,SAa9C,CAAC"}