@gtkx/codegen 0.21.0 → 1.0.0-rc.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 (732) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +18 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +297 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +59 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +123 -0
  9. package/dist/analysis/descriptor.js.map +1 -0
  10. package/dist/analysis/inheritance.d.ts +38 -0
  11. package/dist/analysis/inheritance.d.ts.map +1 -0
  12. package/dist/analysis/inheritance.js +193 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +26 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +107 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +19 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +65 -0
  21. package/dist/analysis/ts-type.js.map +1 -0
  22. package/dist/compile.d.ts +18 -0
  23. package/dist/compile.d.ts.map +1 -0
  24. package/dist/compile.js +123 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +66 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +299 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +15 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +221 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +25 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +130 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +32 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +134 -0
  41. package/dist/docs/render.js.map +1 -0
  42. package/dist/docs/symbol-page.d.ts +41 -0
  43. package/dist/docs/symbol-page.d.ts.map +1 -0
  44. package/dist/docs/symbol-page.js +338 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +6 -26
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +30 -18
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gir/ancestry.d.ts +9 -0
  51. package/dist/gir/ancestry.d.ts.map +1 -0
  52. package/dist/gir/ancestry.js +29 -0
  53. package/dist/gir/ancestry.js.map +1 -0
  54. package/dist/gir/callback.d.ts +9 -10
  55. package/dist/gir/callback.d.ts.map +1 -1
  56. package/dist/gir/callback.js +17 -16
  57. package/dist/gir/callback.js.map +1 -1
  58. package/dist/gir/class.d.ts +22 -43
  59. package/dist/gir/class.d.ts.map +1 -1
  60. package/dist/gir/class.js +11 -23
  61. package/dist/gir/class.js.map +1 -1
  62. package/dist/gir/enum.d.ts +13 -31
  63. package/dist/gir/enum.d.ts.map +1 -1
  64. package/dist/gir/enum.js +7 -14
  65. package/dist/gir/enum.js.map +1 -1
  66. package/dist/gir/field.d.ts +10 -23
  67. package/dist/gir/field.d.ts.map +1 -1
  68. package/dist/gir/field.js +12 -18
  69. package/dist/gir/field.js.map +1 -1
  70. package/dist/gir/function.d.ts +11 -42
  71. package/dist/gir/function.d.ts.map +1 -1
  72. package/dist/gir/function.js +7 -20
  73. package/dist/gir/function.js.map +1 -1
  74. package/dist/gir/gir-path.d.ts +2 -0
  75. package/dist/gir/gir-path.d.ts.map +1 -0
  76. package/dist/gir/gir-path.js +41 -0
  77. package/dist/gir/gir-path.js.map +1 -0
  78. package/dist/gir/libraries.d.ts +4 -0
  79. package/dist/gir/libraries.d.ts.map +1 -0
  80. package/dist/gir/libraries.js +62 -0
  81. package/dist/gir/libraries.js.map +1 -0
  82. package/dist/gir/library.d.ts +37 -0
  83. package/dist/gir/library.d.ts.map +1 -0
  84. package/dist/gir/library.js +218 -0
  85. package/dist/gir/library.js.map +1 -0
  86. package/dist/gir/namespace.d.ts +36 -50
  87. package/dist/gir/namespace.d.ts.map +1 -1
  88. package/dist/gir/namespace.js +46 -36
  89. package/dist/gir/namespace.js.map +1 -1
  90. package/dist/gir/parameter.d.ts +25 -69
  91. package/dist/gir/parameter.d.ts.map +1 -1
  92. package/dist/gir/parameter.js +36 -57
  93. package/dist/gir/parameter.js.map +1 -1
  94. package/dist/gir/parse.d.ts +6 -70
  95. package/dist/gir/parse.d.ts.map +1 -1
  96. package/dist/gir/parse.js +32 -80
  97. package/dist/gir/parse.js.map +1 -1
  98. package/dist/gir/primitives.d.ts +3 -34
  99. package/dist/gir/primitives.d.ts.map +1 -1
  100. package/dist/gir/primitives.js +19 -35
  101. package/dist/gir/primitives.js.map +1 -1
  102. package/dist/gir/property.d.ts +16 -25
  103. package/dist/gir/property.d.ts.map +1 -1
  104. package/dist/gir/property.js +12 -9
  105. package/dist/gir/property.js.map +1 -1
  106. package/dist/gir/record.d.ts +27 -0
  107. package/dist/gir/record.d.ts.map +1 -0
  108. package/dist/gir/record.js +25 -0
  109. package/dist/gir/record.js.map +1 -0
  110. package/dist/gir/size.d.ts +10 -57
  111. package/dist/gir/size.d.ts.map +1 -1
  112. package/dist/gir/size.js +0 -25
  113. package/dist/gir/size.js.map +1 -1
  114. package/dist/gir/type-id.d.ts +49 -0
  115. package/dist/gir/type-id.d.ts.map +1 -0
  116. package/dist/gir/type-id.js +8 -0
  117. package/dist/gir/type-id.js.map +1 -0
  118. package/dist/gir/type-ref.d.ts +3 -77
  119. package/dist/gir/type-ref.d.ts.map +1 -1
  120. package/dist/gir/type-ref.js +35 -65
  121. package/dist/gir/type-ref.js.map +1 -1
  122. package/dist/gir/type.d.ts +33 -0
  123. package/dist/gir/type.d.ts.map +1 -0
  124. package/dist/gir/type.js +2 -0
  125. package/dist/gir/type.js.map +1 -0
  126. package/dist/index.d.ts +5 -11
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -11
  129. package/dist/index.js.map +1 -1
  130. package/dist/khronos/args.d.ts +30 -0
  131. package/dist/khronos/args.d.ts.map +1 -0
  132. package/dist/khronos/args.js +150 -0
  133. package/dist/khronos/args.js.map +1 -0
  134. package/dist/khronos/jsdoc.d.ts +21 -0
  135. package/dist/khronos/jsdoc.d.ts.map +1 -0
  136. package/dist/khronos/jsdoc.js +59 -0
  137. package/dist/khronos/jsdoc.js.map +1 -0
  138. package/dist/khronos/model.d.ts +37 -0
  139. package/dist/khronos/model.d.ts.map +1 -0
  140. package/dist/khronos/model.js +132 -0
  141. package/dist/khronos/model.js.map +1 -0
  142. package/dist/khronos/modules.d.ts +11 -0
  143. package/dist/khronos/modules.d.ts.map +1 -0
  144. package/dist/khronos/modules.js +58 -0
  145. package/dist/khronos/modules.js.map +1 -0
  146. package/dist/khronos/parse.d.ts +9 -0
  147. package/dist/khronos/parse.d.ts.map +1 -0
  148. package/dist/khronos/parse.js +61 -0
  149. package/dist/khronos/parse.js.map +1 -0
  150. package/dist/khronos/pipeline.d.ts +24 -0
  151. package/dist/khronos/pipeline.d.ts.map +1 -0
  152. package/dist/khronos/pipeline.js +182 -0
  153. package/dist/khronos/pipeline.js.map +1 -0
  154. package/dist/khronos/plan.d.ts +80 -0
  155. package/dist/khronos/plan.d.ts.map +1 -0
  156. package/dist/khronos/plan.js +136 -0
  157. package/dist/khronos/plan.js.map +1 -0
  158. package/dist/khronos/render.d.ts +16 -0
  159. package/dist/khronos/render.d.ts.map +1 -0
  160. package/dist/khronos/render.js +158 -0
  161. package/dist/khronos/render.js.map +1 -0
  162. package/dist/khronos/select.d.ts +15 -0
  163. package/dist/khronos/select.d.ts.map +1 -0
  164. package/dist/khronos/select.js +45 -0
  165. package/dist/khronos/select.js.map +1 -0
  166. package/dist/runner.d.ts +29 -47
  167. package/dist/runner.d.ts.map +1 -1
  168. package/dist/runner.js +78 -53
  169. package/dist/runner.js.map +1 -1
  170. package/dist/store/compile-store.d.ts +9 -0
  171. package/dist/store/compile-store.d.ts.map +1 -0
  172. package/dist/store/compile-store.js +38 -0
  173. package/dist/store/compile-store.js.map +1 -0
  174. package/dist/store/gi/async.d.ts +4 -0
  175. package/dist/store/gi/async.d.ts.map +1 -0
  176. package/dist/store/gi/async.js +41 -0
  177. package/dist/store/gi/async.js.map +1 -0
  178. package/dist/store/gi/callables.d.ts +36 -0
  179. package/dist/store/gi/callables.d.ts.map +1 -0
  180. package/dist/store/gi/callables.js +202 -0
  181. package/dist/store/gi/callables.js.map +1 -0
  182. package/dist/store/gi/callback.d.ts +4 -0
  183. package/dist/store/gi/callback.d.ts.map +1 -0
  184. package/dist/store/gi/callback.js +14 -0
  185. package/dist/store/gi/callback.js.map +1 -0
  186. package/dist/store/gi/class-struct-record.d.ts +9 -0
  187. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  188. package/dist/store/gi/class-struct-record.js +34 -0
  189. package/dist/store/gi/class-struct-record.js.map +1 -0
  190. package/dist/store/gi/class.d.ts +4 -0
  191. package/dist/store/gi/class.d.ts.map +1 -0
  192. package/dist/store/gi/class.js +169 -0
  193. package/dist/store/gi/class.js.map +1 -0
  194. package/dist/store/gi/companion.d.ts +4 -0
  195. package/dist/store/gi/companion.d.ts.map +1 -0
  196. package/dist/store/gi/companion.js +13 -0
  197. package/dist/store/gi/companion.js.map +1 -0
  198. package/dist/store/gi/constant.d.ts +5 -0
  199. package/dist/store/gi/constant.d.ts.map +1 -0
  200. package/dist/store/gi/constant.js +18 -0
  201. package/dist/store/gi/constant.js.map +1 -0
  202. package/dist/store/gi/constructor-props.d.ts +5 -0
  203. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  204. package/dist/store/gi/constructor-props.js +64 -0
  205. package/dist/store/gi/constructor-props.js.map +1 -0
  206. package/dist/store/gi/enum.d.ts +5 -0
  207. package/dist/store/gi/enum.d.ts.map +1 -0
  208. package/dist/store/gi/enum.js +38 -0
  209. package/dist/store/gi/enum.js.map +1 -0
  210. package/dist/store/gi/function.d.ts +8 -0
  211. package/dist/store/gi/function.d.ts.map +1 -0
  212. package/dist/store/gi/function.js +87 -0
  213. package/dist/store/gi/function.js.map +1 -0
  214. package/dist/store/gi/gtype-binding.d.ts +10 -0
  215. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  216. package/dist/store/gi/gtype-binding.js +20 -0
  217. package/dist/store/gi/gtype-binding.js.map +1 -0
  218. package/dist/store/gi/interface.d.ts +4 -0
  219. package/dist/store/gi/interface.d.ts.map +1 -0
  220. package/dist/store/gi/interface.js +99 -0
  221. package/dist/store/gi/interface.js.map +1 -0
  222. package/dist/store/gi/item-comparators.d.ts +6 -0
  223. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  224. package/dist/store/gi/item-comparators.js +76 -0
  225. package/dist/store/gi/item-comparators.js.map +1 -0
  226. package/dist/store/gi/method.d.ts +24 -0
  227. package/dist/store/gi/method.d.ts.map +1 -0
  228. package/dist/store/gi/method.js +279 -0
  229. package/dist/store/gi/method.js.map +1 -0
  230. package/dist/store/gi/param-marshal.d.ts +9 -0
  231. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  232. package/dist/store/gi/param-marshal.js +37 -0
  233. package/dist/store/gi/param-marshal.js.map +1 -0
  234. package/dist/store/gi/pipeline.d.ts +4 -0
  235. package/dist/store/gi/pipeline.d.ts.map +1 -0
  236. package/dist/store/gi/pipeline.js +80 -0
  237. package/dist/store/gi/pipeline.js.map +1 -0
  238. package/dist/store/gi/properties.d.ts +5 -0
  239. package/dist/store/gi/properties.d.ts.map +1 -0
  240. package/dist/store/gi/properties.js +30 -0
  241. package/dist/store/gi/properties.js.map +1 -0
  242. package/dist/store/gi/property-accessor.d.ts +26 -0
  243. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  244. package/dist/store/gi/property-accessor.js +132 -0
  245. package/dist/store/gi/property-accessor.js.map +1 -0
  246. package/dist/store/gi/record-constructor.d.ts +5 -0
  247. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  248. package/dist/store/gi/record-constructor.js +65 -0
  249. package/dist/store/gi/record-constructor.js.map +1 -0
  250. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  251. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  252. package/dist/store/gi/record-field-accessor.js +288 -0
  253. package/dist/store/gi/record-field-accessor.js.map +1 -0
  254. package/dist/store/gi/record-layout.d.ts +14 -0
  255. package/dist/store/gi/record-layout.d.ts.map +1 -0
  256. package/dist/store/gi/record-layout.js +96 -0
  257. package/dist/store/gi/record-layout.js.map +1 -0
  258. package/dist/store/gi/record.d.ts +4 -0
  259. package/dist/store/gi/record.d.ts.map +1 -0
  260. package/dist/store/gi/record.js +59 -0
  261. package/dist/store/gi/record.js.map +1 -0
  262. package/dist/store/gi/registration.d.ts +16 -0
  263. package/dist/store/gi/registration.d.ts.map +1 -0
  264. package/dist/store/gi/registration.js +20 -0
  265. package/dist/store/gi/registration.js.map +1 -0
  266. package/dist/store/gi/return-wrap.d.ts +10 -0
  267. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  268. package/dist/store/gi/return-wrap.js +46 -0
  269. package/dist/store/gi/return-wrap.js.map +1 -0
  270. package/dist/store/gi/runtime-override.d.ts +3 -0
  271. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  272. package/dist/{writers → store/gi}/runtime-override.js +0 -15
  273. package/dist/store/gi/runtime-override.js.map +1 -0
  274. package/dist/store/gi/signal.d.ts +5 -0
  275. package/dist/store/gi/signal.d.ts.map +1 -0
  276. package/dist/store/gi/signal.js +233 -0
  277. package/dist/store/gi/signal.js.map +1 -0
  278. package/dist/store/gi/vtable.d.ts +4 -0
  279. package/dist/store/gi/vtable.d.ts.map +1 -0
  280. package/dist/store/gi/vtable.js +78 -0
  281. package/dist/store/gi/vtable.js.map +1 -0
  282. package/dist/store/gi-store.d.ts +9 -0
  283. package/dist/store/gi-store.d.ts.map +1 -0
  284. package/dist/store/gi-store.js +57 -0
  285. package/dist/store/gi-store.js.map +1 -0
  286. package/dist/store/jsx-store.d.ts +5 -0
  287. package/dist/store/jsx-store.d.ts.map +1 -0
  288. package/dist/store/jsx-store.js +23 -0
  289. package/dist/store/jsx-store.js.map +1 -0
  290. package/dist/store/react/built-ins.d.ts +9 -0
  291. package/dist/store/react/built-ins.d.ts.map +1 -0
  292. package/dist/store/react/built-ins.js +226 -0
  293. package/dist/store/react/built-ins.js.map +1 -0
  294. package/dist/store/react/element-components.d.ts +15 -0
  295. package/dist/store/react/element-components.d.ts.map +1 -0
  296. package/dist/store/react/element-components.js +92 -0
  297. package/dist/store/react/element-components.js.map +1 -0
  298. package/dist/store/react/element-prop-types.d.ts +19 -0
  299. package/dist/store/react/element-prop-types.d.ts.map +1 -0
  300. package/dist/store/react/element-prop-types.js +244 -0
  301. package/dist/store/react/element-prop-types.js.map +1 -0
  302. package/dist/store/react/element-props.d.ts +4 -0
  303. package/dist/store/react/element-props.d.ts.map +1 -0
  304. package/dist/store/react/element-props.js +178 -0
  305. package/dist/store/react/element-props.js.map +1 -0
  306. package/dist/store/react/gir-index.d.ts +25 -0
  307. package/dist/store/react/gir-index.d.ts.map +1 -0
  308. package/dist/store/react/gir-index.js +55 -0
  309. package/dist/store/react/gir-index.js.map +1 -0
  310. package/dist/store/react/intrinsic-elements.d.ts +26 -0
  311. package/dist/store/react/intrinsic-elements.d.ts.map +1 -0
  312. package/dist/store/react/intrinsic-elements.js +107 -0
  313. package/dist/store/react/intrinsic-elements.js.map +1 -0
  314. package/dist/store/react/jsx.d.ts +18 -0
  315. package/dist/store/react/jsx.d.ts.map +1 -0
  316. package/dist/store/react/jsx.js +203 -0
  317. package/dist/store/react/jsx.js.map +1 -0
  318. package/dist/store/react/metadata.d.ts +4 -0
  319. package/dist/store/react/metadata.d.ts.map +1 -0
  320. package/dist/store/react/metadata.js +174 -0
  321. package/dist/store/react/metadata.js.map +1 -0
  322. package/dist/store/react/pipeline.d.ts +14 -0
  323. package/dist/store/react/pipeline.d.ts.map +1 -0
  324. package/dist/store/react/pipeline.js +60 -0
  325. package/dist/store/react/pipeline.js.map +1 -0
  326. package/dist/store/react/props.d.ts +36 -0
  327. package/dist/store/react/props.d.ts.map +1 -0
  328. package/dist/store/react/props.js +133 -0
  329. package/dist/store/react/props.js.map +1 -0
  330. package/dist/store/store-fs.d.ts +41 -0
  331. package/dist/store/store-fs.d.ts.map +1 -0
  332. package/dist/store/store-fs.js +71 -0
  333. package/dist/store/store-fs.js.map +1 -0
  334. package/dist/writer/context.d.ts +16 -0
  335. package/dist/writer/context.d.ts.map +1 -0
  336. package/dist/writer/context.js +44 -0
  337. package/dist/writer/context.js.map +1 -0
  338. package/dist/writer/doc.d.ts +2 -0
  339. package/dist/writer/doc.d.ts.map +1 -0
  340. package/dist/writer/doc.js +12 -0
  341. package/dist/writer/doc.js.map +1 -0
  342. package/dist/writer/emit.d.ts +8 -0
  343. package/dist/writer/emit.d.ts.map +1 -0
  344. package/dist/writer/emit.js +21 -0
  345. package/dist/writer/emit.js.map +1 -0
  346. package/dist/writer/gtk-doc.d.ts +2 -0
  347. package/dist/writer/gtk-doc.d.ts.map +1 -0
  348. package/dist/writer/gtk-doc.js +67 -0
  349. package/dist/writer/gtk-doc.js.map +1 -0
  350. package/dist/writer/imports.d.ts +10 -0
  351. package/dist/writer/imports.d.ts.map +1 -0
  352. package/dist/writer/imports.js +50 -0
  353. package/dist/writer/imports.js.map +1 -0
  354. package/dist/writer/module.d.ts +15 -0
  355. package/dist/writer/module.d.ts.map +1 -0
  356. package/dist/writer/module.js +46 -0
  357. package/dist/writer/module.js.map +1 -0
  358. package/overrides/cairo/context.ts.ejs +1269 -0
  359. package/overrides/cairo/font-face.ts.ejs +151 -0
  360. package/overrides/cairo/font-options.ts.ejs +199 -0
  361. package/overrides/cairo/image-surface.ts.ejs +132 -0
  362. package/overrides/cairo/index.ts.ejs +22 -0
  363. package/overrides/cairo/matrix.ts.ejs +171 -0
  364. package/overrides/cairo/pattern.ts.ejs +476 -0
  365. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  366. package/overrides/cairo/region.ts.ejs +237 -0
  367. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  368. package/overrides/cairo/surface.ts.ejs +296 -0
  369. package/overrides/gdk/index.ts.ejs +2 -0
  370. package/overrides/gdk/rgba.ts.ejs +11 -0
  371. package/overrides/gobject/index.ts.ejs +29 -0
  372. package/overrides/gobject/object.ts.ejs +51 -0
  373. package/overrides/gobject/value.ts.ejs +17 -0
  374. package/overrides/graphene/index.ts.ejs +2 -0
  375. package/overrides/graphene/structs.ts.ejs +37 -0
  376. package/overrides/gtk/constants.ts.ejs +3 -0
  377. package/overrides/gtk/index.ts.ejs +2 -0
  378. package/package.json +15 -15
  379. package/src/analysis/descriptor-render.ts +407 -0
  380. package/src/analysis/descriptor.ts +263 -0
  381. package/src/analysis/inheritance.ts +242 -0
  382. package/src/analysis/param-structure.ts +127 -0
  383. package/src/analysis/ts-type.ts +88 -0
  384. package/src/compile.ts +152 -0
  385. package/src/docs/api-reference.ts +361 -0
  386. package/src/docs/element-page.ts +290 -0
  387. package/src/docs/pipeline.ts +182 -0
  388. package/src/docs/render.ts +191 -0
  389. package/src/docs/symbol-page.ts +444 -0
  390. package/src/fingerprint.ts +40 -29
  391. package/src/gir/ancestry.ts +41 -0
  392. package/src/gir/callback.ts +25 -22
  393. package/src/gir/class.ts +31 -57
  394. package/src/gir/enum.ts +20 -38
  395. package/src/gir/field.ts +21 -36
  396. package/src/gir/function.ts +17 -56
  397. package/src/gir/gir-path.ts +49 -0
  398. package/src/gir/libraries.ts +77 -0
  399. package/src/gir/library.ts +248 -0
  400. package/src/gir/namespace.ts +85 -80
  401. package/src/gir/parameter.ts +64 -93
  402. package/src/gir/parse.ts +43 -95
  403. package/src/gir/primitives.ts +23 -45
  404. package/src/gir/property.ts +27 -29
  405. package/src/gir/record.ts +53 -0
  406. package/src/gir/size.ts +9 -56
  407. package/src/gir/type-id.ts +49 -0
  408. package/src/gir/type-ref.ts +35 -140
  409. package/src/gir/type.ts +16 -0
  410. package/src/index.ts +20 -15
  411. package/src/khronos/args.ts +202 -0
  412. package/src/khronos/jsdoc.ts +76 -0
  413. package/src/khronos/model.ts +166 -0
  414. package/src/khronos/modules.ts +75 -0
  415. package/src/khronos/parse.ts +66 -0
  416. package/src/khronos/pipeline.ts +234 -0
  417. package/src/khronos/plan.ts +191 -0
  418. package/src/khronos/registry/LICENSE +202 -0
  419. package/src/khronos/registry/gl.xml +47748 -0
  420. package/src/khronos/render.ts +193 -0
  421. package/src/khronos/select.ts +67 -0
  422. package/src/runner.ts +112 -75
  423. package/src/store/compile-store.ts +49 -0
  424. package/src/store/gi/async.ts +42 -0
  425. package/src/store/gi/callables.ts +309 -0
  426. package/src/store/gi/callback.ts +15 -0
  427. package/src/store/gi/class-struct-record.ts +40 -0
  428. package/src/store/gi/class.ts +212 -0
  429. package/src/store/gi/companion.ts +13 -0
  430. package/src/store/gi/constant.ts +24 -0
  431. package/src/store/gi/constructor-props.ts +82 -0
  432. package/src/store/gi/enum.ts +49 -0
  433. package/src/store/gi/function.ts +107 -0
  434. package/src/store/gi/gtype-binding.ts +33 -0
  435. package/src/store/gi/interface.ts +157 -0
  436. package/src/store/gi/item-comparators.ts +90 -0
  437. package/src/store/gi/method.ts +417 -0
  438. package/src/store/gi/param-marshal.ts +48 -0
  439. package/src/store/gi/pipeline.ts +85 -0
  440. package/src/store/gi/properties.ts +39 -0
  441. package/src/store/gi/property-accessor.ts +194 -0
  442. package/src/store/gi/record-constructor.ts +87 -0
  443. package/src/store/gi/record-field-accessor.ts +394 -0
  444. package/src/store/gi/record-layout.ts +134 -0
  445. package/src/store/gi/record.ts +66 -0
  446. package/src/store/gi/registration.ts +38 -0
  447. package/src/store/gi/return-wrap.ts +52 -0
  448. package/src/store/gi/runtime-override.ts +36 -0
  449. package/src/store/gi/signal.ts +310 -0
  450. package/src/store/gi/vtable.ts +99 -0
  451. package/src/store/gi-store.ts +79 -0
  452. package/src/store/jsx-store.ts +27 -0
  453. package/src/store/react/built-ins.ts +260 -0
  454. package/src/store/react/element-components.ts +138 -0
  455. package/src/store/react/element-prop-types.ts +280 -0
  456. package/src/store/react/element-props.ts +204 -0
  457. package/src/store/react/gir-index.ts +85 -0
  458. package/src/store/react/intrinsic-elements.ts +161 -0
  459. package/src/store/react/jsx.ts +294 -0
  460. package/src/store/react/metadata.ts +197 -0
  461. package/src/store/react/pipeline.ts +90 -0
  462. package/src/store/react/props.ts +197 -0
  463. package/src/store/store-fs.ts +112 -0
  464. package/src/writer/context.ts +48 -0
  465. package/src/writer/doc.ts +11 -0
  466. package/src/writer/emit.ts +26 -0
  467. package/src/writer/gtk-doc.ts +74 -0
  468. package/src/writer/imports.ts +59 -0
  469. package/src/writer/module.ts +45 -0
  470. package/LICENSE +0 -373
  471. package/dist/dsl/context.d.ts +0 -104
  472. package/dist/dsl/context.d.ts.map +0 -1
  473. package/dist/dsl/context.js +0 -140
  474. package/dist/dsl/context.js.map +0 -1
  475. package/dist/dsl/emit.d.ts +0 -28
  476. package/dist/dsl/emit.d.ts.map +0 -1
  477. package/dist/dsl/emit.js +0 -41
  478. package/dist/dsl/emit.js.map +0 -1
  479. package/dist/dsl/identifier.d.ts +0 -28
  480. package/dist/dsl/identifier.d.ts.map +0 -1
  481. package/dist/dsl/identifier.js +0 -45
  482. package/dist/dsl/identifier.js.map +0 -1
  483. package/dist/dsl/imports.d.ts +0 -58
  484. package/dist/dsl/imports.d.ts.map +0 -1
  485. package/dist/dsl/imports.js +0 -107
  486. package/dist/dsl/imports.js.map +0 -1
  487. package/dist/dsl/module.d.ts +0 -53
  488. package/dist/dsl/module.d.ts.map +0 -1
  489. package/dist/dsl/module.js +0 -76
  490. package/dist/dsl/module.js.map +0 -1
  491. package/dist/ffi/pipeline.d.ts +0 -19
  492. package/dist/ffi/pipeline.d.ts.map +0 -1
  493. package/dist/ffi/pipeline.js +0 -107
  494. package/dist/ffi/pipeline.js.map +0 -1
  495. package/dist/gi-store.d.ts +0 -34
  496. package/dist/gi-store.d.ts.map +0 -1
  497. package/dist/gi-store.js +0 -154
  498. package/dist/gi-store.js.map +0 -1
  499. package/dist/gir/boxed.d.ts +0 -66
  500. package/dist/gir/boxed.d.ts.map +0 -1
  501. package/dist/gir/boxed.js +0 -49
  502. package/dist/gir/boxed.js.map +0 -1
  503. package/dist/gir/qualified-name.d.ts +0 -37
  504. package/dist/gir/qualified-name.d.ts.map +0 -1
  505. package/dist/gir/qualified-name.js +0 -39
  506. package/dist/gir/qualified-name.js.map +0 -1
  507. package/dist/gir/qualify.d.ts +0 -32
  508. package/dist/gir/qualify.d.ts.map +0 -1
  509. package/dist/gir/qualify.js +0 -60
  510. package/dist/gir/qualify.js.map +0 -1
  511. package/dist/gir/repository.d.ts +0 -82
  512. package/dist/gir/repository.d.ts.map +0 -1
  513. package/dist/gir/repository.js +0 -122
  514. package/dist/gir/repository.js.map +0 -1
  515. package/dist/gir/signal.d.ts +0 -22
  516. package/dist/gir/signal.d.ts.map +0 -1
  517. package/dist/gir/signal.js +0 -20
  518. package/dist/gir/signal.js.map +0 -1
  519. package/dist/jsx-store.d.ts +0 -22
  520. package/dist/jsx-store.d.ts.map +0 -1
  521. package/dist/jsx-store.js +0 -40
  522. package/dist/jsx-store.js.map +0 -1
  523. package/dist/react/compounds-meta.d.ts +0 -18
  524. package/dist/react/compounds-meta.d.ts.map +0 -1
  525. package/dist/react/compounds-meta.js +0 -93
  526. package/dist/react/compounds-meta.js.map +0 -1
  527. package/dist/react/compounds.d.ts +0 -27
  528. package/dist/react/compounds.d.ts.map +0 -1
  529. package/dist/react/compounds.js +0 -164
  530. package/dist/react/compounds.js.map +0 -1
  531. package/dist/react/internal.d.ts +0 -14
  532. package/dist/react/internal.d.ts.map +0 -1
  533. package/dist/react/internal.js +0 -79
  534. package/dist/react/internal.js.map +0 -1
  535. package/dist/react/jsx.d.ts +0 -22
  536. package/dist/react/jsx.d.ts.map +0 -1
  537. package/dist/react/jsx.js +0 -134
  538. package/dist/react/jsx.js.map +0 -1
  539. package/dist/react/pipeline.d.ts +0 -13
  540. package/dist/react/pipeline.d.ts.map +0 -1
  541. package/dist/react/pipeline.js +0 -25
  542. package/dist/react/pipeline.js.map +0 -1
  543. package/dist/react/props.d.ts +0 -38
  544. package/dist/react/props.d.ts.map +0 -1
  545. package/dist/react/props.js +0 -231
  546. package/dist/react/props.js.map +0 -1
  547. package/dist/react/slot-props.d.ts +0 -10
  548. package/dist/react/slot-props.d.ts.map +0 -1
  549. package/dist/react/slot-props.js +0 -56
  550. package/dist/react/slot-props.js.map +0 -1
  551. package/dist/react/widgets.d.ts +0 -83
  552. package/dist/react/widgets.d.ts.map +0 -1
  553. package/dist/react/widgets.js +0 -152
  554. package/dist/react/widgets.js.map +0 -1
  555. package/dist/store-fs.d.ts +0 -109
  556. package/dist/store-fs.d.ts.map +0 -1
  557. package/dist/store-fs.js +0 -98
  558. package/dist/store-fs.js.map +0 -1
  559. package/dist/transpile.d.ts +0 -32
  560. package/dist/transpile.d.ts.map +0 -1
  561. package/dist/transpile.js +0 -63
  562. package/dist/transpile.js.map +0 -1
  563. package/dist/typecheck-store.d.ts +0 -41
  564. package/dist/typecheck-store.d.ts.map +0 -1
  565. package/dist/typecheck-store.js +0 -102
  566. package/dist/typecheck-store.js.map +0 -1
  567. package/dist/writers/alias.d.ts +0 -13
  568. package/dist/writers/alias.d.ts.map +0 -1
  569. package/dist/writers/alias.js +0 -17
  570. package/dist/writers/alias.js.map +0 -1
  571. package/dist/writers/async.d.ts +0 -22
  572. package/dist/writers/async.d.ts.map +0 -1
  573. package/dist/writers/async.js +0 -48
  574. package/dist/writers/async.js.map +0 -1
  575. package/dist/writers/boxed-constructor.d.ts +0 -26
  576. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  577. package/dist/writers/boxed-constructor.js +0 -85
  578. package/dist/writers/boxed-constructor.js.map +0 -1
  579. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  580. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  581. package/dist/writers/boxed-field-accessor.js +0 -260
  582. package/dist/writers/boxed-field-accessor.js.map +0 -1
  583. package/dist/writers/boxed-layout.d.ts +0 -27
  584. package/dist/writers/boxed-layout.d.ts.map +0 -1
  585. package/dist/writers/boxed-layout.js +0 -128
  586. package/dist/writers/boxed-layout.js.map +0 -1
  587. package/dist/writers/boxed.d.ts +0 -20
  588. package/dist/writers/boxed.d.ts.map +0 -1
  589. package/dist/writers/boxed.js +0 -71
  590. package/dist/writers/boxed.js.map +0 -1
  591. package/dist/writers/callables.d.ts +0 -124
  592. package/dist/writers/callables.d.ts.map +0 -1
  593. package/dist/writers/callables.js +0 -283
  594. package/dist/writers/callables.js.map +0 -1
  595. package/dist/writers/callback.d.ts +0 -16
  596. package/dist/writers/callback.d.ts.map +0 -1
  597. package/dist/writers/callback.js +0 -38
  598. package/dist/writers/callback.js.map +0 -1
  599. package/dist/writers/class-struct-record.d.ts +0 -31
  600. package/dist/writers/class-struct-record.d.ts.map +0 -1
  601. package/dist/writers/class-struct-record.js +0 -67
  602. package/dist/writers/class-struct-record.js.map +0 -1
  603. package/dist/writers/class-struct.d.ts +0 -22
  604. package/dist/writers/class-struct.d.ts.map +0 -1
  605. package/dist/writers/class-struct.js +0 -85
  606. package/dist/writers/class-struct.js.map +0 -1
  607. package/dist/writers/class.d.ts +0 -16
  608. package/dist/writers/class.d.ts.map +0 -1
  609. package/dist/writers/class.js +0 -307
  610. package/dist/writers/class.js.map +0 -1
  611. package/dist/writers/constant.d.ts +0 -15
  612. package/dist/writers/constant.d.ts.map +0 -1
  613. package/dist/writers/constant.js +0 -23
  614. package/dist/writers/constant.js.map +0 -1
  615. package/dist/writers/constants.d.ts +0 -15
  616. package/dist/writers/constants.d.ts.map +0 -1
  617. package/dist/writers/constants.js +0 -23
  618. package/dist/writers/constants.js.map +0 -1
  619. package/dist/writers/constructor-props.d.ts +0 -32
  620. package/dist/writers/constructor-props.d.ts.map +0 -1
  621. package/dist/writers/constructor-props.js +0 -110
  622. package/dist/writers/constructor-props.js.map +0 -1
  623. package/dist/writers/enum.d.ts +0 -21
  624. package/dist/writers/enum.d.ts.map +0 -1
  625. package/dist/writers/enum.js +0 -48
  626. package/dist/writers/enum.js.map +0 -1
  627. package/dist/writers/function.d.ts +0 -40
  628. package/dist/writers/function.d.ts.map +0 -1
  629. package/dist/writers/function.js +0 -127
  630. package/dist/writers/function.js.map +0 -1
  631. package/dist/writers/gtype-binding.d.ts +0 -19
  632. package/dist/writers/gtype-binding.d.ts.map +0 -1
  633. package/dist/writers/gtype-binding.js +0 -40
  634. package/dist/writers/gtype-binding.js.map +0 -1
  635. package/dist/writers/inheritance.d.ts +0 -48
  636. package/dist/writers/inheritance.d.ts.map +0 -1
  637. package/dist/writers/inheritance.js +0 -90
  638. package/dist/writers/inheritance.js.map +0 -1
  639. package/dist/writers/interface.d.ts +0 -16
  640. package/dist/writers/interface.d.ts.map +0 -1
  641. package/dist/writers/interface.js +0 -155
  642. package/dist/writers/interface.js.map +0 -1
  643. package/dist/writers/method.d.ts +0 -150
  644. package/dist/writers/method.d.ts.map +0 -1
  645. package/dist/writers/method.js +0 -510
  646. package/dist/writers/method.js.map +0 -1
  647. package/dist/writers/param-classify.d.ts +0 -93
  648. package/dist/writers/param-classify.d.ts.map +0 -1
  649. package/dist/writers/param-classify.js +0 -163
  650. package/dist/writers/param-classify.js.map +0 -1
  651. package/dist/writers/property-accessor.d.ts +0 -19
  652. package/dist/writers/property-accessor.d.ts.map +0 -1
  653. package/dist/writers/property-accessor.js +0 -117
  654. package/dist/writers/property-accessor.js.map +0 -1
  655. package/dist/writers/registration.d.ts +0 -27
  656. package/dist/writers/registration.d.ts.map +0 -1
  657. package/dist/writers/registration.js +0 -30
  658. package/dist/writers/registration.js.map +0 -1
  659. package/dist/writers/return-wrap.d.ts +0 -39
  660. package/dist/writers/return-wrap.d.ts.map +0 -1
  661. package/dist/writers/return-wrap.js +0 -152
  662. package/dist/writers/return-wrap.js.map +0 -1
  663. package/dist/writers/runtime-override.d.ts +0 -18
  664. package/dist/writers/runtime-override.d.ts.map +0 -1
  665. package/dist/writers/runtime-override.js.map +0 -1
  666. package/dist/writers/signal.d.ts +0 -21
  667. package/dist/writers/signal.d.ts.map +0 -1
  668. package/dist/writers/signal.js +0 -260
  669. package/dist/writers/signal.js.map +0 -1
  670. package/dist/writers/ts-type.d.ts +0 -50
  671. package/dist/writers/ts-type.d.ts.map +0 -1
  672. package/dist/writers/ts-type.js +0 -75
  673. package/dist/writers/ts-type.js.map +0 -1
  674. package/dist/writers/types-ts.d.ts +0 -27
  675. package/dist/writers/types-ts.d.ts.map +0 -1
  676. package/dist/writers/types-ts.js +0 -97
  677. package/dist/writers/types-ts.js.map +0 -1
  678. package/dist/writers/value.d.ts +0 -89
  679. package/dist/writers/value.d.ts.map +0 -1
  680. package/dist/writers/value.js +0 -402
  681. package/dist/writers/value.js.map +0 -1
  682. package/src/dsl/context.ts +0 -146
  683. package/src/dsl/emit.ts +0 -42
  684. package/src/dsl/identifier.ts +0 -52
  685. package/src/dsl/imports.ts +0 -109
  686. package/src/dsl/module.ts +0 -75
  687. package/src/ffi/pipeline.ts +0 -113
  688. package/src/gi-store.ts +0 -199
  689. package/src/gir/boxed.ts +0 -94
  690. package/src/gir/qualified-name.ts +0 -55
  691. package/src/gir/qualify.ts +0 -64
  692. package/src/gir/repository.ts +0 -149
  693. package/src/gir/signal.ts +0 -36
  694. package/src/jsx-store.ts +0 -53
  695. package/src/react/compounds-meta.ts +0 -99
  696. package/src/react/compounds.ts +0 -204
  697. package/src/react/internal.ts +0 -91
  698. package/src/react/jsx.ts +0 -155
  699. package/src/react/pipeline.ts +0 -29
  700. package/src/react/props.ts +0 -307
  701. package/src/react/slot-props.ts +0 -57
  702. package/src/react/widgets.ts +0 -185
  703. package/src/store-fs.ts +0 -157
  704. package/src/transpile.ts +0 -80
  705. package/src/typecheck-store.ts +0 -136
  706. package/src/writers/alias.ts +0 -19
  707. package/src/writers/async.ts +0 -44
  708. package/src/writers/boxed-constructor.ts +0 -105
  709. package/src/writers/boxed-field-accessor.ts +0 -306
  710. package/src/writers/boxed-layout.ts +0 -166
  711. package/src/writers/boxed.ts +0 -77
  712. package/src/writers/callables.ts +0 -339
  713. package/src/writers/callback.ts +0 -40
  714. package/src/writers/class-struct-record.ts +0 -75
  715. package/src/writers/class-struct.ts +0 -96
  716. package/src/writers/class.ts +0 -384
  717. package/src/writers/constant.ts +0 -29
  718. package/src/writers/constructor-props.ts +0 -130
  719. package/src/writers/enum.ts +0 -53
  720. package/src/writers/function.ts +0 -136
  721. package/src/writers/gtype-binding.ts +0 -48
  722. package/src/writers/inheritance.ts +0 -104
  723. package/src/writers/interface.ts +0 -168
  724. package/src/writers/method.ts +0 -678
  725. package/src/writers/param-classify.ts +0 -178
  726. package/src/writers/property-accessor.ts +0 -139
  727. package/src/writers/registration.ts +0 -42
  728. package/src/writers/return-wrap.ts +0 -180
  729. package/src/writers/runtime-override.ts +0 -59
  730. package/src/writers/signal.ts +0 -318
  731. package/src/writers/ts-type.ts +0 -115
  732. package/src/writers/value.ts +0 -485
@@ -1,65 +1,51 @@
1
- import { type GirBoxed } from "./boxed.js";
2
1
  import { type GirCallback } from "./callback.js";
3
2
  import { type GirClass } from "./class.js";
4
3
  import { type GirEnum } from "./enum.js";
5
4
  import { type GirFunction } from "./function.js";
6
5
  import { type RawNode } from "./parse.js";
7
- import { type GirTypeRef } from "./type-ref.js";
8
- /** A `<constant>` declaration at namespace level. */
6
+ import { type GirRecord } from "./record.js";
7
+ import type { ParseContext, TypeId } from "./type-id.js";
9
8
  export type GirConstant = {
10
- readonly name: string;
11
- readonly cType: string | undefined;
12
- readonly cIdentifier: string | undefined;
13
- /** Constant value as the raw string from GIR. */
14
- readonly value: string;
15
- readonly type: GirTypeRef | undefined;
9
+ name: string;
10
+ doc: string | undefined;
11
+ value: string;
12
+ type: TypeId | undefined;
16
13
  };
17
- /** A `<alias>` declaration at namespace level. */
18
14
  export type GirAlias = {
19
- readonly name: string;
20
- readonly target: GirTypeRef | undefined;
15
+ name: string;
16
+ doc: string | undefined;
17
+ cType: string | undefined;
18
+ target: TypeId | undefined;
19
+ targetCType: string | undefined;
21
20
  };
22
- /**
23
- * A single namespace loaded from one `.gir` file.
24
- *
25
- * The class lives in `namespace.ts` (mutable holder) because populating it
26
- * involves walking the raw XML tree once, materialising each construct.
27
- * After construction the public surface is read-only by convention.
28
- */
29
21
  export type GirNamespace = {
30
- /** Namespace name (e.g. `"Gtk"`). */
31
- readonly name: string;
32
- /** Namespace version (e.g. `"4.0"`). */
33
- readonly version: string;
34
- /** `Name-Version` identifier (e.g. `"Gtk-4.0"`). */
35
- readonly identifier: string;
36
- /** Comma-separated `shared-library` value (passed verbatim to `t.fn(...)`). */
37
- readonly sharedLibrary: string | undefined;
38
- /** GIR `c:identifier-prefixes` (used to strip type prefixes). */
39
- readonly cIdentifierPrefixes: readonly string[];
40
- /** GIR `c:symbol-prefixes` (used to strip function prefixes). */
41
- readonly cSymbolPrefixes: readonly string[];
42
- /** Other namespaces referenced via `<include>`. */
43
- readonly includes: readonly NamespaceInclude[];
44
- readonly classes: readonly GirClass[];
45
- readonly interfaces: readonly GirClass[];
46
- readonly boxeds: readonly GirBoxed[];
47
- readonly enums: readonly GirEnum[];
48
- readonly callbacks: readonly GirCallback[];
49
- readonly functions: readonly GirFunction[];
50
- readonly constants: readonly GirConstant[];
51
- readonly aliases: readonly GirAlias[];
22
+ id: number;
23
+ name: string;
24
+ sharedLibrary: string | undefined;
25
+ cSymbolPrefixes: string[];
26
+ classes: GirClass[];
27
+ interfaces: GirClass[];
28
+ records: GirRecord[];
29
+ enums: GirEnum[];
30
+ callbacks: GirCallback[];
31
+ functions: GirFunction[];
32
+ constants: GirConstant[];
33
+ aliases: GirAlias[];
52
34
  };
53
- /** A `<include>` entry pointing at another namespace identifier. */
35
+ export declare const namespaceDirectory: (namespace: Pick<GirNamespace, "name">) => string;
54
36
  type NamespaceInclude = {
55
- readonly name: string;
56
- readonly version: string;
37
+ name: string;
38
+ version: string;
57
39
  };
58
- /**
59
- * Builds a {@link GirNamespace} from a parsed `<repository>` root.
60
- *
61
- * @param repositoryNode - The raw `<repository>` element returned by `parseGirFile`
62
- */
63
- export declare const namespaceFromRepository: (repositoryNode: RawNode) => GirNamespace;
40
+ export type NamespaceHeader = {
41
+ name: string;
42
+ sharedLibrary: string | undefined;
43
+ cSymbolPrefixes: string[];
44
+ includes: NamespaceInclude[];
45
+ namespaceNode: RawNode;
46
+ };
47
+ export declare const parseNamespaceHeader: (repositoryNode: RawNode) => NamespaceHeader;
48
+ export declare const createNamespaceShell: (header: NamespaceHeader, id: number) => GirNamespace;
49
+ export declare const populateNamespaceBody: (shell: GirNamespace, namespaceNode: RawNode, context: ParseContext) => void;
64
50
  export {};
65
51
  //# sourceMappingURL=namespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/gir/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,eAAe,CAAC;AAEjE,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,iEAAiE;IACjE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,iEAAiE;IACjE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;CACzC,CAAC;AAEF,oEAAoE;AACpE,KAAK,gBAAgB,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,gBAAgB,OAAO,KAAG,YAqCjE,CAAC"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/gir/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAA8C,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAAe,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAG,MAAsC,CAAC;AAElH,KAAK,gBAAgB,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,mBAAoB,OAAO,KAAG,eAgB9D,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAY,eAAe,MAAM,MAAM,KAAG,YAazE,CAAC;AAEH,eAAO,MAAM,qBAAqB,UAAW,YAAY,iBAAiB,OAAO,WAAW,YAAY,KAAG,IAoB1G,CAAC"}
@@ -1,57 +1,67 @@
1
- import { boxedFromNode, boxedKind } from "./boxed.js";
2
1
  import { callbackFromNode } from "./callback.js";
3
2
  import { classFromNode } from "./class.js";
4
3
  import { enumFromNode } from "./enum.js";
5
4
  import { functionFromNode } from "./function.js";
6
- import { attr, childrenOf } from "./parse.js";
7
- import { typeRefFromSlot } from "./type-ref.js";
8
- /**
9
- * Builds a {@link GirNamespace} from a parsed `<repository>` root.
10
- *
11
- * @param repositoryNode - The raw `<repository>` element returned by `parseGirFile`
12
- */
13
- export const namespaceFromRepository = (repositoryNode) => {
5
+ import { attr, childOf, childrenOf, docOf, nameAttr } from "./parse.js";
6
+ import { isVtableRecord, recordFromNode } from "./record.js";
7
+ import { typeRefFromNode } from "./type-ref.js";
8
+ export const namespaceDirectory = (namespace) => namespace.name.toLowerCase();
9
+ export const parseNamespaceHeader = (repositoryNode) => {
14
10
  const includes = childrenOf(repositoryNode, "include").map((include) => ({
15
- name: attr(include, "name") ?? "",
11
+ name: nameAttr(include),
16
12
  version: attr(include, "version") ?? "",
17
13
  }));
18
14
  const namespaceNode = childrenOf(repositoryNode, "namespace")[0];
19
15
  if (namespaceNode === undefined) {
20
16
  throw new Error("GIR repository has no <namespace> child");
21
17
  }
22
- const name = attr(namespaceNode, "name") ?? "";
23
- const version = attr(namespaceNode, "version") ?? "";
24
18
  return {
25
- name,
26
- version,
27
- identifier: `${name}-${version}`,
19
+ name: nameAttr(namespaceNode),
28
20
  sharedLibrary: attr(namespaceNode, "shared-library"),
29
- cIdentifierPrefixes: splitPrefixes(attr(namespaceNode, "c:identifier-prefixes")),
30
21
  cSymbolPrefixes: splitPrefixes(attr(namespaceNode, "c:symbol-prefixes")),
31
22
  includes,
32
- classes: childrenOf(namespaceNode, "class").map((klass) => classFromNode(klass, false)),
33
- interfaces: childrenOf(namespaceNode, "interface").map((iface) => classFromNode(iface, true)),
34
- boxeds: collectBoxeds(namespaceNode),
35
- enums: collectEnums(namespaceNode),
36
- callbacks: childrenOf(namespaceNode, "callback").map(callbackFromNode),
37
- functions: childrenOf(namespaceNode, "function").map((fn) => functionFromNode(fn, "function")),
38
- constants: childrenOf(namespaceNode, "constant").map((constant) => ({
39
- name: attr(constant, "name") ?? "",
40
- cType: attr(constant, "c:type"),
41
- cIdentifier: attr(constant, "c:identifier"),
42
- value: attr(constant, "value") ?? "",
43
- type: typeRefFromSlot(constant),
44
- })),
45
- aliases: childrenOf(namespaceNode, "alias").map((alias) => ({
46
- name: attr(alias, "name") ?? "",
47
- target: typeRefFromSlot(alias),
48
- })),
23
+ namespaceNode,
49
24
  };
50
25
  };
26
+ export const createNamespaceShell = (header, id) => ({
27
+ id,
28
+ name: header.name,
29
+ sharedLibrary: header.sharedLibrary,
30
+ cSymbolPrefixes: header.cSymbolPrefixes,
31
+ classes: [],
32
+ interfaces: [],
33
+ records: [],
34
+ enums: [],
35
+ callbacks: [],
36
+ functions: [],
37
+ constants: [],
38
+ aliases: [],
39
+ });
40
+ export const populateNamespaceBody = (shell, namespaceNode, context) => {
41
+ shell.classes = childrenOf(namespaceNode, "class").map((klass) => classFromNode(klass, false, context));
42
+ shell.interfaces = childrenOf(namespaceNode, "interface").map((iface) => classFromNode(iface, true, context));
43
+ shell.records = collectRecords(namespaceNode, context);
44
+ shell.enums = collectEnums(namespaceNode);
45
+ shell.callbacks = childrenOf(namespaceNode, "callback").map((callback) => callbackFromNode(callback, context));
46
+ shell.functions = childrenOf(namespaceNode, "function").map((fn) => functionFromNode(fn, context));
47
+ shell.constants = childrenOf(namespaceNode, "constant").map((constant) => ({
48
+ name: nameAttr(constant),
49
+ doc: docOf(constant),
50
+ value: attr(constant, "value") ?? "",
51
+ type: typeRefFromNode(constant, context),
52
+ }));
53
+ shell.aliases = childrenOf(namespaceNode, "alias").map((alias) => ({
54
+ name: nameAttr(alias),
55
+ doc: docOf(alias),
56
+ cType: attr(alias, "c:type"),
57
+ target: typeRefFromNode(alias, context),
58
+ targetCType: attr(childOf(alias, "type"), "c:type"),
59
+ }));
60
+ };
51
61
  const splitPrefixes = (raw) => (raw ?? "").split(",").filter((prefix) => prefix.length > 0);
52
- const collectBoxeds = (namespaceNode) => [
53
- ...childrenOf(namespaceNode, "record").map((record) => boxedFromNode(record, boxedKind(record), false)),
54
- ...childrenOf(namespaceNode, "union").map((union) => boxedFromNode(union, boxedKind(union), true)),
62
+ const collectRecords = (namespaceNode, context) => [
63
+ ...childrenOf(namespaceNode, "record").map((record) => recordFromNode(record, isVtableRecord(record), false, context)),
64
+ ...childrenOf(namespaceNode, "union").map((union) => recordFromNode(union, isVtableRecord(union), true, context)),
55
65
  ];
56
66
  const collectEnums = (namespaceNode) => [
57
67
  ...childrenOf(namespaceNode, "enumeration").map((enumeration) => enumFromNode(enumeration, "enumeration")),
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/gir/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAmB,eAAe,EAAE,MAAM,eAAe,CAAC;AAwDjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,cAAuB,EAAgB,EAAE;IAC7E,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,GAAG,CAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAC,CAAC;IACJ,MAAM,aAAa,GAAG,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO;QACH,IAAI;QACJ,OAAO;QACP,UAAU,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE;QAChC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACpD,mBAAmB,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QAChF,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACxE,QAAQ;QACR,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvF,UAAU,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7F,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC;QACpC,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC;QAClC,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACtE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC9F,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;YAClC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC/B,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;YACpC,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;YAC/B,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;KACN,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAuB,EAAqB,EAAE,CACjE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,aAAa,GAAG,CAAC,aAAsB,EAAuB,EAAE,CAAC;IACnE,GAAG,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IACvG,GAAG,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;CACrG,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,aAAsB,EAAE,EAAE,CAAC;IAC7C,GAAG,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1G,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CACjG,CAAC"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/gir/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAgB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AACtF,OAAO,EAAkB,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAgChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAqC,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAelH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAuB,EAAmB,EAAE;IAC7E,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,GAAG,CAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAC,CAAC;IACJ,MAAM,aAAa,GAAG,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACpD,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QACxE,QAAQ;QACR,aAAa;KAChB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAuB,EAAE,EAAU,EAAgB,EAAE,CAAC,CAAC;IACxF,EAAE;IACF,IAAI,EAAE,MAAM,CAAC,IAAI;IACjB,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,eAAe,EAAE,MAAM,CAAC,eAAe;IACvC,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAmB,EAAE,aAAsB,EAAE,OAAqB,EAAQ,EAAE;IAC9G,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACxG,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9G,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1C,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/G,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACnG,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACxB,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC;QACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;QACpC,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC3C,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;QACrB,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC5B,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;QACvC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;KACtD,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAuB,EAAY,EAAE,CACxD,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEjE,MAAM,cAAc,GAAG,CAAC,aAAsB,EAAE,OAAqB,EAAe,EAAE,CAAC;IACnF,GAAG,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAClD,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CACjE;IACD,GAAG,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;CACpH,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,aAAsB,EAAa,EAAE,CAAC;IACxD,GAAG,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1G,GAAG,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;CACjG,CAAC","sourcesContent":["import { callbackFromNode, type GirCallback } from \"./callback.js\";\nimport { classFromNode, type GirClass } from \"./class.js\";\nimport { enumFromNode, type GirEnum } from \"./enum.js\";\nimport { functionFromNode, type GirFunction } from \"./function.js\";\nimport { attr, childOf, childrenOf, docOf, nameAttr, type RawNode } from \"./parse.js\";\nimport { type GirRecord, isVtableRecord, recordFromNode } from \"./record.js\";\nimport type { ParseContext, TypeId } from \"./type-id.js\";\nimport { typeRefFromNode } from \"./type-ref.js\";\n\nexport type GirConstant = {\n name: string;\n doc: string | undefined;\n value: string;\n type: TypeId | undefined;\n};\n\nexport type GirAlias = {\n name: string;\n doc: string | undefined;\n cType: string | undefined;\n target: TypeId | undefined;\n targetCType: string | undefined;\n};\n\nexport type GirNamespace = {\n id: number;\n name: string;\n sharedLibrary: string | undefined;\n cSymbolPrefixes: string[];\n classes: GirClass[];\n interfaces: GirClass[];\n records: GirRecord[];\n enums: GirEnum[];\n callbacks: GirCallback[];\n functions: GirFunction[];\n constants: GirConstant[];\n aliases: GirAlias[];\n};\n\nexport const namespaceDirectory = (namespace: Pick<GirNamespace, \"name\">): string => namespace.name.toLowerCase();\n\ntype NamespaceInclude = {\n name: string;\n version: string;\n};\n\nexport type NamespaceHeader = {\n name: string;\n sharedLibrary: string | undefined;\n cSymbolPrefixes: string[];\n includes: NamespaceInclude[];\n namespaceNode: RawNode;\n};\n\nexport const parseNamespaceHeader = (repositoryNode: RawNode): NamespaceHeader => {\n const includes = childrenOf(repositoryNode, \"include\").map<NamespaceInclude>((include) => ({\n name: nameAttr(include),\n version: attr(include, \"version\") ?? \"\",\n }));\n const namespaceNode = childrenOf(repositoryNode, \"namespace\")[0];\n if (namespaceNode === undefined) {\n throw new Error(\"GIR repository has no <namespace> child\");\n }\n return {\n name: nameAttr(namespaceNode),\n sharedLibrary: attr(namespaceNode, \"shared-library\"),\n cSymbolPrefixes: splitPrefixes(attr(namespaceNode, \"c:symbol-prefixes\")),\n includes,\n namespaceNode,\n };\n};\n\nexport const createNamespaceShell = (header: NamespaceHeader, id: number): GirNamespace => ({\n id,\n name: header.name,\n sharedLibrary: header.sharedLibrary,\n cSymbolPrefixes: header.cSymbolPrefixes,\n classes: [],\n interfaces: [],\n records: [],\n enums: [],\n callbacks: [],\n functions: [],\n constants: [],\n aliases: [],\n});\n\nexport const populateNamespaceBody = (shell: GirNamespace, namespaceNode: RawNode, context: ParseContext): void => {\n shell.classes = childrenOf(namespaceNode, \"class\").map((klass) => classFromNode(klass, false, context));\n shell.interfaces = childrenOf(namespaceNode, \"interface\").map((iface) => classFromNode(iface, true, context));\n shell.records = collectRecords(namespaceNode, context);\n shell.enums = collectEnums(namespaceNode);\n shell.callbacks = childrenOf(namespaceNode, \"callback\").map((callback) => callbackFromNode(callback, context));\n shell.functions = childrenOf(namespaceNode, \"function\").map((fn) => functionFromNode(fn, context));\n shell.constants = childrenOf(namespaceNode, \"constant\").map((constant) => ({\n name: nameAttr(constant),\n doc: docOf(constant),\n value: attr(constant, \"value\") ?? \"\",\n type: typeRefFromNode(constant, context),\n }));\n shell.aliases = childrenOf(namespaceNode, \"alias\").map((alias) => ({\n name: nameAttr(alias),\n doc: docOf(alias),\n cType: attr(alias, \"c:type\"),\n target: typeRefFromNode(alias, context),\n targetCType: attr(childOf(alias, \"type\"), \"c:type\"),\n }));\n};\n\nconst splitPrefixes = (raw: string | undefined): string[] =>\n (raw ?? \"\").split(\",\").filter((prefix) => prefix.length > 0);\n\nconst collectRecords = (namespaceNode: RawNode, context: ParseContext): GirRecord[] => [\n ...childrenOf(namespaceNode, \"record\").map((record) =>\n recordFromNode(record, isVtableRecord(record), false, context),\n ),\n ...childrenOf(namespaceNode, \"union\").map((union) => recordFromNode(union, isVtableRecord(union), true, context)),\n];\n\nconst collectEnums = (namespaceNode: RawNode): GirEnum[] => [\n ...childrenOf(namespaceNode, \"enumeration\").map((enumeration) => enumFromNode(enumeration, \"enumeration\")),\n ...childrenOf(namespaceNode, \"bitfield\").map((bitfield) => enumFromNode(bitfield, \"bitfield\")),\n];\n"]}
@@ -1,82 +1,38 @@
1
1
  import { type RawNode } from "./parse.js";
2
- import { type GirTypeRef } from "./type-ref.js";
3
- /** Direction of a `<parameter>` (`in`, `out`, `inout`). */
2
+ import type { ParseContext, TypeId } from "./type-id.js";
4
3
  type ParameterDirection = "in" | "out" | "inout";
5
- /**
6
- * Lifetime conveyed by `transfer-ownership`. Mirrors the GIR vocabulary one
7
- * for one; the marshal layer translates to the runtime's `Ownership` set.
8
- */
9
4
  export type ParameterTransfer = "none" | "full" | "container";
10
- /** Lifetime of a callback parameter (`scope=…`). */
11
5
  type CallbackScope = "call" | "notified" | "async" | "forever";
12
- /**
13
- * A `<parameter>` or `<instance-parameter>` of a callable.
14
- *
15
- * Only the bits the FFI writers actually look at are retained; the original
16
- * raw node is dropped so the domain model is self-describing.
17
- */
6
+ export declare const transferOwnership: (node: RawNode) => ParameterTransfer;
18
7
  export type GirParameter = {
19
- /** Parameter name as authored in GIR (often snake_case). */
20
- readonly name: string;
21
- /** Typed slot of the parameter, or `undefined` for `<varargs/>`. */
22
- readonly type: GirTypeRef | undefined;
23
- readonly direction: ParameterDirection;
24
- readonly transferOwnership: ParameterTransfer;
25
- readonly nullable: boolean;
26
- readonly optional: boolean;
27
- /** `caller-allocates="1"` used in out parameters that fill a caller buffer. */
28
- readonly callerAllocates: boolean;
29
- /** Lifetime of a callback parameter (defined only when the parameter is a callback). */
30
- readonly scope: CallbackScope | undefined;
31
- /** Index of the paired `gpointer user_data` parameter in the C signature. */
32
- readonly closureIndex: number | undefined;
33
- /** Index of the paired `GDestroyNotify` parameter in the C signature. */
34
- readonly destroyIndex: number | undefined;
35
- /** `true` for `<instance-parameter>` (the implicit `self` of a method). */
36
- readonly isInstance: boolean;
37
- /** `<varargs/>` parameter; not marshalable. */
38
- readonly isVarargs: boolean;
8
+ name: string;
9
+ type: TypeId | undefined;
10
+ direction: ParameterDirection;
11
+ transferOwnership: ParameterTransfer;
12
+ nullable: boolean;
13
+ optional: boolean;
14
+ callerAllocates: boolean;
15
+ scope: CallbackScope | undefined;
16
+ closureIndex: number | undefined;
17
+ destroyIndex: number | undefined;
18
+ isVarargs: boolean;
39
19
  };
40
- /**
41
- * Builds a {@link GirParameter} from a `<parameter>` or `<instance-parameter>`.
42
- *
43
- * @param node - The XML element
44
- * @param isInstance - Whether the source element was `<instance-parameter>`
45
- */
46
- export declare const parameterFromNode: (node: RawNode, isInstance: boolean) => GirParameter;
47
- /**
48
- * Whether a parameter is a pure out-parameter: `direction="out"` and not
49
- * caller-allocated, so it marshals through a `{ value }` cell the callee writes into.
50
- *
51
- * @param parameter - The parameter to test
52
- */
20
+ export declare const parameterFromNode: (node: RawNode, context: ParseContext) => GirParameter;
53
21
  export declare const isOutParameter: (parameter: GirParameter) => boolean;
54
- /**
55
- * Whether a parameter is a caller-allocated out-parameter: `direction="out"`
56
- * with `caller-allocates="1"`, passed as a pre-built handle the callee fills
57
- * in place rather than through a `{ value }` cell.
58
- *
59
- * @param parameter - The parameter to test
60
- */
61
22
  export declare const isCallerAllocatedOut: (parameter: GirParameter) => boolean;
62
- /**
63
- * Whether a parameter is an inout parameter (`direction="inout"`).
64
- *
65
- * @param parameter - The parameter to test
66
- */
67
23
  export declare const isInoutParameter: (parameter: GirParameter) => boolean;
68
- /** A `<return-value>` plus its inferred type and transfer settings. */
69
24
  export type GirReturnValue = {
70
- readonly type: GirTypeRef | undefined;
71
- readonly transferOwnership: ParameterTransfer;
72
- readonly nullable: boolean;
25
+ type: TypeId | undefined;
26
+ transferOwnership: ParameterTransfer;
27
+ nullable: boolean;
28
+ skip: boolean;
73
29
  };
74
- /**
75
- * Builds a {@link GirReturnValue} from a `<return-value>` element, or returns a
76
- * void return when the element is missing.
77
- *
78
- * @param node - The `<return-value>` element, or `undefined`
79
- */
80
- export declare const returnValueFromNode: (node: RawNode | undefined) => GirReturnValue;
30
+ export type GirSignal = {
31
+ name: string;
32
+ doc: string | undefined;
33
+ parameters: GirParameter[];
34
+ returnValue: GirReturnValue;
35
+ };
36
+ export declare const parseCallable: (node: RawNode, context: ParseContext) => GirSignal;
81
37
  export {};
82
38
  //# sourceMappingURL=parameter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,eAAe,CAAC;AAEjE,2DAA2D;AAC3D,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9D,oDAAoD;AACpD,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,OAAO,EAAE,YAAY,OAAO,KAAG,YAmBtE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,WAAW,YAAY,KAAG,OACM,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,YAAY,KAAG,OACD,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,YAAY,KAAG,OAA0C,CAAC;AAEtG,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,GAAG,SAAS,KAAG,cAS/D,CAAC"}
1
+ {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgF,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGzD,KAAK,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9D,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAM/D,eAAO,MAAM,iBAAiB,SAAU,OAAO,KAAG,iBAC0C,CAAC;AAI7F,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,OAAO,WAAW,YAAY,KAAG,YAYvE,CAAC;AAEH,eAAO,MAAM,cAAc,cAAe,YAAY,KAAG,OACM,CAAC;AAEhE,eAAO,MAAM,oBAAoB,cAAe,YAAY,KAAG,OACD,CAAC;AAE/D,eAAO,MAAM,gBAAgB,cAAe,YAAY,KAAG,OAA0C,CAAC;AAEtG,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,OAAO,WAAW,YAAY,KAAG,SASpE,CAAC"}
@@ -1,66 +1,45 @@
1
- import { attr, attrBool, childOf } from "./parse.js";
2
- import { typeRefFromSlot } from "./type-ref.js";
3
- /**
4
- * Builds a {@link GirParameter} from a `<parameter>` or `<instance-parameter>`.
5
- *
6
- * @param node - The XML element
7
- * @param isInstance - Whether the source element was `<instance-parameter>`
8
- */
9
- export const parameterFromNode = (node, isInstance) => {
10
- const direction = (attr(node, "direction") ?? "in");
11
- const transferOwnership = (attr(node, "transfer-ownership") ?? "none");
12
- const closure = attr(node, "closure");
13
- const destroy = attr(node, "destroy");
14
- return {
15
- name: attr(node, "name") ?? "",
16
- type: typeRefFromSlot(node),
17
- direction,
18
- transferOwnership,
19
- nullable: attrBool(node, "nullable") || attrBool(node, "allow-none"),
20
- optional: attrBool(node, "optional"),
21
- callerAllocates: attrBool(node, "caller-allocates"),
22
- scope: attr(node, "scope"),
23
- closureIndex: closure === undefined ? undefined : Number.parseInt(closure, 10),
24
- destroyIndex: destroy === undefined ? undefined : Number.parseInt(destroy, 10),
25
- isInstance,
26
- isVarargs: childOf(node, "varargs") !== undefined,
27
- };
28
- };
29
- /**
30
- * Whether a parameter is a pure out-parameter: `direction="out"` and not
31
- * caller-allocated, so it marshals through a `{ value }` cell the callee writes into.
32
- *
33
- * @param parameter - The parameter to test
34
- */
1
+ import { attr, attrBool, childOf, childrenOf, docOf, intAttr, nameAttr, parseEnumAttr } from "./parse.js";
2
+ import { typeRefFromNode } from "./type-ref.js";
3
+ const DIRECTIONS = new Set(["in", "out", "inout"]);
4
+ const TRANSFERS = new Set(["none", "full", "container"]);
5
+ const SCOPES = new Set(["call", "notified", "async", "forever"]);
6
+ export const transferOwnership = (node) => parseEnumAttr(attr(node, "transfer-ownership"), TRANSFERS, "none", "transfer-ownership");
7
+ const nullableAttr = (node) => attrBool(node, "nullable") || attrBool(node, "allow-none");
8
+ export const parameterFromNode = (node, context) => ({
9
+ name: nameAttr(node),
10
+ type: typeRefFromNode(node, context),
11
+ direction: parseEnumAttr(attr(node, "direction"), DIRECTIONS, "in", "direction"),
12
+ transferOwnership: transferOwnership(node),
13
+ nullable: nullableAttr(node),
14
+ optional: attrBool(node, "optional"),
15
+ callerAllocates: attrBool(node, "caller-allocates"),
16
+ scope: parseEnumAttr(attr(node, "scope"), SCOPES, undefined, "scope"),
17
+ closureIndex: intAttr(node, "closure"),
18
+ destroyIndex: intAttr(node, "destroy"),
19
+ isVarargs: childOf(node, "varargs") !== undefined,
20
+ });
35
21
  export const isOutParameter = (parameter) => parameter.direction === "out" && !parameter.callerAllocates;
36
- /**
37
- * Whether a parameter is a caller-allocated out-parameter: `direction="out"`
38
- * with `caller-allocates="1"`, passed as a pre-built handle the callee fills
39
- * in place rather than through a `{ value }` cell.
40
- *
41
- * @param parameter - The parameter to test
42
- */
43
22
  export const isCallerAllocatedOut = (parameter) => parameter.direction === "out" && parameter.callerAllocates;
44
- /**
45
- * Whether a parameter is an inout parameter (`direction="inout"`).
46
- *
47
- * @param parameter - The parameter to test
48
- */
49
23
  export const isInoutParameter = (parameter) => parameter.direction === "inout";
50
- /**
51
- * Builds a {@link GirReturnValue} from a `<return-value>` element, or returns a
52
- * void return when the element is missing.
53
- *
54
- * @param node - The `<return-value>` element, or `undefined`
55
- */
56
- export const returnValueFromNode = (node) => {
24
+ const returnValueFromNode = (node, context) => {
57
25
  if (node === undefined) {
58
- return { type: undefined, transferOwnership: "none", nullable: false };
26
+ return { type: undefined, transferOwnership: "none", nullable: false, skip: false };
59
27
  }
60
28
  return {
61
- type: typeRefFromSlot(node),
62
- transferOwnership: (attr(node, "transfer-ownership") ?? "none"),
63
- nullable: attrBool(node, "nullable") || attrBool(node, "allow-none"),
29
+ type: typeRefFromNode(node, context),
30
+ transferOwnership: transferOwnership(node),
31
+ nullable: nullableAttr(node),
32
+ skip: attrBool(node, "skip"),
33
+ };
34
+ };
35
+ export const parseCallable = (node, context) => {
36
+ const parametersNode = childOf(node, "parameters");
37
+ const parameterNodes = childrenOf(parametersNode, "parameter");
38
+ return {
39
+ name: nameAttr(node),
40
+ doc: docOf(node),
41
+ parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, context)),
42
+ returnValue: returnValueFromNode(childOf(node, "return-value"), context),
64
43
  };
65
44
  };
66
45
  //# sourceMappingURL=parameter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAgB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAmB,eAAe,EAAE,MAAM,eAAe,CAAC;AA2CjE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAE,UAAmB,EAAgB,EAAE;IAClF,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,CAAuB,CAAC;IAC1E,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAsB,CAAC;IAC5F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;QAC9B,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;QAC3B,SAAS;QACT,iBAAiB;QACjB,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;QACpE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QACpC,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;QACnD,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAA8B;QACvD,YAAY,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9E,YAAY,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9E,UAAU;QACV,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,SAAS;KACpD,CAAC;AACN,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAuB,EAAW,EAAE,CAC/D,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAuB,EAAW,EAAE,CACrE,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,CAAC,eAAe,CAAC;AAE/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAuB,EAAW,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC;AAStG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAyB,EAAkB,EAAE;IAC7E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO;QACH,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC;QAC3B,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAsB;QACpF,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;KACvE,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"parameter.js","sourceRoot":"","sources":["../../src/gir/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAC;AAExH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQhD,MAAM,UAAU,GAA4B,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,MAAM,SAAS,GAA2B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjF,MAAM,MAAM,GAAuB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAqB,EAAE,CAClE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE7F,MAAM,YAAY,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAgB5G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAgB,EAAE,CAAC,CAAC;IACtF,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;IACpC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC;IAChF,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;IAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IACpC,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;IACrE,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IACtC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,SAAS;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAuB,EAAW,EAAE,CAC/D,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAuB,EAAW,EAAE,CACrE,SAAS,CAAC,SAAS,KAAK,KAAK,IAAI,SAAS,CAAC,eAAe,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAuB,EAAW,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC;AAStG,MAAM,mBAAmB,GAAG,CAAC,IAAyB,EAAE,OAAqB,EAAkB,EAAE;IAC7F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxF,CAAC;IACD,OAAO;QACH,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC;QACpC,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC;QAC1C,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KAC/B,CAAC;AACN,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAa,EAAE;IAC7E,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC/D,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACpB,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;QAChB,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpF,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC;KAC3E,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { attr, attrBool, childOf, childrenOf, docOf, intAttr, nameAttr, parseEnumAttr, type RawNode } from \"./parse.js\";\nimport type { ParseContext, TypeId } from \"./type-id.js\";\nimport { typeRefFromNode } from \"./type-ref.js\";\n\ntype ParameterDirection = \"in\" | \"out\" | \"inout\";\n\nexport type ParameterTransfer = \"none\" | \"full\" | \"container\";\n\ntype CallbackScope = \"call\" | \"notified\" | \"async\" | \"forever\";\n\nconst DIRECTIONS: Set<ParameterDirection> = new Set([\"in\", \"out\", \"inout\"]);\nconst TRANSFERS: Set<ParameterTransfer> = new Set([\"none\", \"full\", \"container\"]);\nconst SCOPES: Set<CallbackScope> = new Set([\"call\", \"notified\", \"async\", \"forever\"]);\n\nexport const transferOwnership = (node: RawNode): ParameterTransfer =>\n parseEnumAttr(attr(node, \"transfer-ownership\"), TRANSFERS, \"none\", \"transfer-ownership\");\n\nconst nullableAttr = (node: RawNode): boolean => attrBool(node, \"nullable\") || attrBool(node, \"allow-none\");\n\nexport type GirParameter = {\n name: string;\n type: TypeId | undefined;\n direction: ParameterDirection;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n optional: boolean;\n callerAllocates: boolean;\n scope: CallbackScope | undefined;\n closureIndex: number | undefined;\n destroyIndex: number | undefined;\n isVarargs: boolean;\n};\n\nexport const parameterFromNode = (node: RawNode, context: ParseContext): GirParameter => ({\n name: nameAttr(node),\n type: typeRefFromNode(node, context),\n direction: parseEnumAttr(attr(node, \"direction\"), DIRECTIONS, \"in\", \"direction\"),\n transferOwnership: transferOwnership(node),\n nullable: nullableAttr(node),\n optional: attrBool(node, \"optional\"),\n callerAllocates: attrBool(node, \"caller-allocates\"),\n scope: parseEnumAttr(attr(node, \"scope\"), SCOPES, undefined, \"scope\"),\n closureIndex: intAttr(node, \"closure\"),\n destroyIndex: intAttr(node, \"destroy\"),\n isVarargs: childOf(node, \"varargs\") !== undefined,\n});\n\nexport const isOutParameter = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && !parameter.callerAllocates;\n\nexport const isCallerAllocatedOut = (parameter: GirParameter): boolean =>\n parameter.direction === \"out\" && parameter.callerAllocates;\n\nexport const isInoutParameter = (parameter: GirParameter): boolean => parameter.direction === \"inout\";\n\nexport type GirReturnValue = {\n type: TypeId | undefined;\n transferOwnership: ParameterTransfer;\n nullable: boolean;\n skip: boolean;\n};\n\nconst returnValueFromNode = (node: RawNode | undefined, context: ParseContext): GirReturnValue => {\n if (node === undefined) {\n return { type: undefined, transferOwnership: \"none\", nullable: false, skip: false };\n }\n return {\n type: typeRefFromNode(node, context),\n transferOwnership: transferOwnership(node),\n nullable: nullableAttr(node),\n skip: attrBool(node, \"skip\"),\n };\n};\n\nexport type GirSignal = {\n name: string;\n doc: string | undefined;\n parameters: GirParameter[];\n returnValue: GirReturnValue;\n};\n\nexport const parseCallable = (node: RawNode, context: ParseContext): GirSignal => {\n const parametersNode = childOf(node, \"parameters\");\n const parameterNodes = childrenOf(parametersNode, \"parameter\");\n return {\n name: nameAttr(node),\n doc: docOf(node),\n parameters: parameterNodes.map((parameter) => parameterFromNode(parameter, context)),\n returnValue: returnValueFromNode(childOf(node, \"return-value\"), context),\n };\n};\n"]}
@@ -1,78 +1,14 @@
1
- /**
2
- * Raw GIR XML element after parsing.
3
- *
4
- * Attributes are exposed under `@_<name>` keys (the default
5
- * `fast-xml-parser` convention). Child elements appear under their tag name.
6
- * Multi-occurrence tags (every container in {@link MULTI_TAGS}) are always
7
- * arrays so callers do not need to disambiguate "single child" from "many
8
- * children" at every access. Single-occurrence tags appear as bare objects.
9
- */
10
1
  export type RawNode = {
11
- readonly [attributeOrChild: string]: unknown;
2
+ [attributeOrChild: string]: unknown;
12
3
  };
13
- /**
14
- * The tag name codegen reads GIR constructors under.
15
- *
16
- * GIR spells constructors `<constructor>`, but `fast-xml-parser` rejects the
17
- * literal names `constructor`, `prototype`, and `__proto__` to guard against
18
- * prototype pollution, with no opt-out. {@link parseGirFile} rewrites the tag
19
- * to this token via `transformTagName` before that guard runs, so every
20
- * downstream lookup of a constructor child must use this constant rather than
21
- * the raw GIR name.
22
- */
23
4
  export declare const GIR_CONSTRUCTOR_TAG = "gir-constructor";
24
- /**
25
- * Parses a GIR XML file from disk and returns its raw tree.
26
- *
27
- * The returned object always has a single `repository` property containing
28
- * the root `<repository>` element. Callers should not interpret the tree
29
- * directly — pass it to {@link GirRepository.load} (in `./repository.ts`),
30
- * which builds the typed domain model on top of it.
31
- *
32
- * @param path - Absolute path to a `.gir` file
33
- * @returns The raw repository node
34
- */
35
5
  export declare const parseGirFile: (path: string) => RawNode;
36
- /**
37
- * Reads an attribute from a raw GIR node as a string, returning `undefined`
38
- * when the attribute is absent.
39
- *
40
- * The `@_` prefix is added by `fast-xml-parser`; this helper hides that
41
- * convention from the call sites.
42
- *
43
- * @param node - The raw element
44
- * @param name - The attribute name (without the `@_` prefix)
45
- */
46
6
  export declare const attr: (node: RawNode | undefined, name: string) => string | undefined;
47
- /**
48
- * Reads an attribute as a boolean using GIR's `"1"` / `"0"` convention.
49
- *
50
- * Attributes that are missing return the supplied default (defaulting to
51
- * `false`). Any non-`"1"` value is treated as `false`.
52
- *
53
- * @param node - The raw element
54
- * @param name - The attribute name (without the `@_` prefix)
55
- * @param fallback - Value returned when the attribute is missing
56
- */
57
7
  export declare const attrBool: (node: RawNode | undefined, name: string, fallback?: boolean) => boolean;
58
- /**
59
- * Returns the children of a raw node under a given tag name as an array.
60
- *
61
- * The parser configuration forces multi-occurrence tags to arrays already;
62
- * this helper covers the residual case where a tag was registered as
63
- * single-occurrence at the schema level but a particular file emits zero
64
- * elements (returning `[]`) or where the caller wants a uniform array view.
65
- *
66
- * @param node - The parent element
67
- * @param tag - The child tag name (with namespace prefix if any)
68
- */
69
- export declare const childrenOf: (node: RawNode | undefined, tag: string) => readonly RawNode[];
70
- /**
71
- * Returns the single child of a raw node under a given tag, or `undefined`
72
- * if absent. If multiple are present the first is returned.
73
- *
74
- * @param node - The parent element
75
- * @param tag - The child tag name (with namespace prefix if any)
76
- */
8
+ export declare const nameAttr: (node: RawNode) => string;
9
+ export declare const intAttr: (node: RawNode, name: string) => number | undefined;
10
+ export declare const parseEnumAttr: <T extends string, F extends T | undefined>(raw: string | undefined, members: Set<T>, fallback: F, label: string) => T | F;
11
+ export declare const childrenOf: (node: RawNode | undefined, tag: string) => RawNode[];
77
12
  export declare const childOf: (node: RawNode | undefined, tag: string) => RawNode | undefined;
13
+ export declare const docOf: (node: RawNode | undefined) => string | undefined;
78
14
  //# sourceMappingURL=parse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG;IAClB,QAAQ,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD,CAAC;AAuCF;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAyBrD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAG3C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAIvE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,MAAM,EAAE,kBAAgB,KAAG,OAIpF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,MAAM,KAAG,SAAS,OAAO,EAMnF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,MAAM,KAAG,OAAO,GAAG,SAQ1E,CAAC"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/gir/parse.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG;IAClB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC,CAAC;AAyBF,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAkBrD,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,OAG3C,CAAC;AAEF,eAAO,MAAM,IAAI,SAAU,OAAO,GAAG,SAAS,QAAQ,MAAM,KAAG,MAAM,GAAG,SAIvE,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,OAAO,GAAG,SAAS,QAAQ,MAAM,yBAAqB,OAIpF,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAU,OAAO,KAAG,MAAkC,CAAC;AAE5E,eAAO,MAAM,OAAO,SAAU,OAAO,QAAQ,MAAM,KAAG,MAAM,GAAG,SAG9D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,SAAS,OAC9D,MAAM,GAAG,SAAS,WACd,GAAG,CAAC,CAAC,CAAC,YACL,CAAC,SACJ,MAAM,KACd,CAAC,GAAG,CAMN,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,OAAO,GAAG,SAAS,OAAO,MAAM,KAAG,OAAO,EAM1E,CAAC;AAEF,eAAO,MAAM,OAAO,SAAU,OAAO,GAAG,SAAS,OAAO,MAAM,KAAG,OAAO,GAAG,SAQ1E,CAAC;AAOF,eAAO,MAAM,KAAK,SAAU,OAAO,GAAG,SAAS,KAAG,MAAM,GAAG,SAU1D,CAAC"}