@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
package/dist/gir/size.js CHANGED
@@ -1,12 +1,4 @@
1
1
  import { PRIMITIVE_SIZE } from "./primitives.js";
2
- /**
3
- * Returns the `{ size, align }` pair for a primitive category.
4
- *
5
- * Pointers and pointer-sized integers (the `pointer` and 64-bit categories)
6
- * report 8/8. Smaller integers and floats report their natural width.
7
- *
8
- * @param category - The primitive category
9
- */
10
2
  export const layoutOfPrimitive = (category) => {
11
3
  const size = PRIMITIVE_SIZE[category];
12
4
  return { size, align: size === 0 ? 1 : size };
@@ -17,23 +9,6 @@ const roundUp = (value, multiple) => {
17
9
  const remainder = value % multiple;
18
10
  return remainder === 0 ? value : value + (multiple - remainder);
19
11
  };
20
- /**
21
- * Computes per-field byte offsets for a record, grouping consecutive
22
- * bitfield members of compatible storage widths into a shared storage
23
- * word.
24
- *
25
- * Mirrors the GCC/Itanium ABI rules for C bitfield packing in a
26
- * single-storage-word model: a new storage word is opened when the
27
- * underlying type's size changes, when the new field is not a bitfield,
28
- * or when adding the bits would exceed the word's bit count.
29
- *
30
- * A union (`isUnion`) overlays every member at byte offset 0; its size is the
31
- * largest member rounded up to the strongest member alignment.
32
- *
33
- * @param fields - Ordered field layouts and bit widths
34
- * @param isUnion - Whether the fields are union members (overlaid at offset 0)
35
- * @returns Parallel slot array and the total record size in bytes
36
- */
37
12
  export const computeFieldSlots = (fields, isUnion = false) => {
38
13
  if (isUnion) {
39
14
  let maxSize = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/gir/size.ts"],"names":[],"mappings":"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","sourcesContent":["import { PRIMITIVE_SIZE, type PrimitiveCategory } from \"./primitives.js\";\n\nexport type FieldLayout = {\n size: number;\n align: number;\n};\n\nexport const layoutOfPrimitive = (category: PrimitiveCategory): FieldLayout => {\n const size = PRIMITIVE_SIZE[category];\n return { size, align: size === 0 ? 1 : size };\n};\n\nconst roundUp = (value: number, multiple: number): number => {\n if (multiple <= 1) return value;\n const remainder = value % multiple;\n return remainder === 0 ? value : value + (multiple - remainder);\n};\n\nexport type FieldSlot = {\n byteOffset: number;\n bitOffset: number | undefined;\n bitWidth: number | undefined;\n};\n\nexport type FieldLayoutInput = {\n layout: FieldLayout;\n bits: number | undefined;\n};\n\nexport const computeFieldSlots = (\n fields: FieldLayoutInput[],\n isUnion = false,\n): { slots: FieldSlot[]; size: number } => {\n if (isUnion) {\n let maxSize = 0;\n let maxAlign = 1;\n const unionSlots = fields.map((field) => {\n maxSize = Math.max(maxSize, field.layout.size);\n maxAlign = Math.max(maxAlign, field.layout.align);\n return { byteOffset: 0, bitOffset: field.bits === undefined ? undefined : 0, bitWidth: field.bits };\n });\n return { slots: unionSlots, size: roundUp(maxSize, maxAlign) };\n }\n const slots: FieldSlot[] = [];\n let cursor = 0;\n let maxAlign = 1;\n let bitfieldWordOffset: number | undefined;\n let bitfieldWordSize = 0;\n let bitfieldUsedBits = 0;\n for (const field of fields) {\n const align = Math.max(1, field.layout.align);\n if (align > maxAlign) maxAlign = align;\n if (field.bits === undefined) {\n bitfieldWordOffset = undefined;\n bitfieldWordSize = 0;\n bitfieldUsedBits = 0;\n cursor = roundUp(cursor, align);\n slots.push({ byteOffset: cursor, bitOffset: undefined, bitWidth: undefined });\n cursor += field.layout.size;\n continue;\n }\n const wordSizeBits = field.layout.size * 8;\n const fits =\n bitfieldWordOffset !== undefined &&\n bitfieldWordSize === field.layout.size &&\n bitfieldUsedBits + field.bits <= wordSizeBits;\n if (!fits) {\n cursor = roundUp(cursor, align);\n bitfieldWordOffset = cursor;\n bitfieldWordSize = field.layout.size;\n bitfieldUsedBits = 0;\n cursor += field.layout.size;\n }\n slots.push({\n byteOffset: bitfieldWordOffset ?? 0,\n bitOffset: bitfieldUsedBits,\n bitWidth: field.bits,\n });\n bitfieldUsedBits += field.bits;\n }\n return { slots, size: roundUp(cursor, maxAlign) };\n};\n"]}
@@ -0,0 +1,49 @@
1
+ import type { RawNode } from "./parse.js";
2
+ import type { PrimitiveCategory } from "./primitives.js";
3
+ export type TypeId = {
4
+ nsId: number;
5
+ id: number;
6
+ };
7
+ export declare const LIST_FLAVOR_BY_NAME: {
8
+ readonly "GLib.List": "glist";
9
+ readonly "GLib.SList": "gslist";
10
+ readonly "GLib.PtrArray": "gptrarray";
11
+ readonly "GLib.Array": "garray";
12
+ readonly "GLib.ByteArray": "gbytearray";
13
+ };
14
+ export type ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];
15
+ type PrimitiveType = {
16
+ kind: "primitive";
17
+ category: PrimitiveCategory;
18
+ };
19
+ type VarargsType = {
20
+ kind: "varargs";
21
+ };
22
+ export type CArrayType = {
23
+ kind: "carray";
24
+ element: TypeId;
25
+ elementCType: string | undefined;
26
+ lengthParameterIndex: number | undefined;
27
+ fixedSize: number | undefined;
28
+ };
29
+ export type ListType = {
30
+ kind: "list";
31
+ flavor: ListFlavor;
32
+ element: TypeId;
33
+ };
34
+ export type HashTableType = {
35
+ kind: "hashtable";
36
+ key: TypeId;
37
+ value: TypeId;
38
+ };
39
+ export type StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;
40
+ export type ParseContext = {
41
+ nsId: number;
42
+ findType(name: string): TypeId;
43
+ addPrimitive(category: PrimitiveCategory): TypeId;
44
+ addVarargs(): TypeId;
45
+ addContainer(type: CArrayType | ListType | HashTableType): TypeId;
46
+ addAnonymousCallback(node: RawNode): TypeId;
47
+ };
48
+ export {};
49
+ //# sourceMappingURL=type-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-id.d.ts","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,mBAAmB;aAC5B,WAAW,EAAE,OAAO;aACpB,YAAY,EAAE,QAAQ;aACtB,eAAe,EAAE,WAAW;aAC5B,YAAY,EAAE,QAAQ;aACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAExF,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAExE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAG;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEjG,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAClD,UAAU,IAAI,MAAM,CAAC;IACrB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;IAClE,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/C,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const LIST_FLAVOR_BY_NAME = {
2
+ "GLib.List": "glist",
3
+ "GLib.SList": "gslist",
4
+ "GLib.PtrArray": "gptrarray",
5
+ "GLib.Array": "garray",
6
+ "GLib.ByteArray": "gbytearray",
7
+ };
8
+ //# sourceMappingURL=type-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-id.js","sourceRoot":"","sources":["../../src/gir/type-id.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,WAAW;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,YAAY;CACxB,CAAC","sourcesContent":["import type { RawNode } from \"./parse.js\";\nimport type { PrimitiveCategory } from \"./primitives.js\";\n\nexport type TypeId = { nsId: number; id: number };\n\nexport const LIST_FLAVOR_BY_NAME = {\n \"GLib.List\": \"glist\",\n \"GLib.SList\": \"gslist\",\n \"GLib.PtrArray\": \"gptrarray\",\n \"GLib.Array\": \"garray\",\n \"GLib.ByteArray\": \"gbytearray\",\n} as const;\n\nexport type ListFlavor = (typeof LIST_FLAVOR_BY_NAME)[keyof typeof LIST_FLAVOR_BY_NAME];\n\ntype PrimitiveType = { kind: \"primitive\"; category: PrimitiveCategory };\n\ntype VarargsType = { kind: \"varargs\" };\n\nexport type CArrayType = {\n kind: \"carray\";\n element: TypeId;\n elementCType: string | undefined;\n lengthParameterIndex: number | undefined;\n fixedSize: number | undefined;\n};\n\nexport type ListType = {\n kind: \"list\";\n flavor: ListFlavor;\n element: TypeId;\n};\n\nexport type HashTableType = {\n kind: \"hashtable\";\n key: TypeId;\n value: TypeId;\n};\n\nexport type StructuralType = PrimitiveType | VarargsType | CArrayType | ListType | HashTableType;\n\nexport type ParseContext = {\n nsId: number;\n findType(name: string): TypeId;\n addPrimitive(category: PrimitiveCategory): TypeId;\n addVarargs(): TypeId;\n addContainer(type: CArrayType | ListType | HashTableType): TypeId;\n addAnonymousCallback(node: RawNode): TypeId;\n};\n"]}
@@ -1,79 +1,5 @@
1
1
  import { type RawNode } from "./parse.js";
2
- import { type PrimitiveCategory } from "./primitives.js";
3
- /**
4
- * Lazily-resolved reference to a GIR type as it appears in a `<type>` or
5
- * `<array>` slot.
6
- *
7
- * The reference captures everything the writers need at emission time
8
- * without forcing entity resolution to happen at parse time (which would
9
- * impose a topological-sort order on namespace loading). Resolution into a
10
- * concrete `GirClass` / `GirBoxed` / `GirEnum` / … is performed on demand
11
- * by the writers via `GirRepository.resolveNamed`.
12
- */
13
- export type GirTypeRef = PrimitiveTypeRef | NamedTypeRef | ArrayTypeRef | ListTypeRef | HashTableTypeRef | InlineCallbackTypeRef | VarargsTypeRef;
14
- /** A GIR scalar primitive: `gint`, `gboolean`, `utf8`, `gpointer`, etc. */
15
- export type PrimitiveTypeRef = {
16
- readonly kind: "primitive";
17
- readonly category: PrimitiveCategory;
18
- readonly cType: string | undefined;
19
- };
20
- /**
21
- * A named type that resolves to a class, interface, boxed, enum, alias, or
22
- * fundamental in some namespace.
23
- *
24
- * `namespaceName` is the namespace prefix from the GIR (`"GLib"`, `"Gtk"`,
25
- * …) or `undefined` for an unqualified reference. The unqualified form
26
- * implies "look in the namespace the reference appears in".
27
- */
28
- export type NamedTypeRef = {
29
- readonly kind: "named";
30
- readonly namespaceName: string | undefined;
31
- readonly typeName: string;
32
- readonly cType: string | undefined;
33
- };
34
- /** A C array (`<array>`) with optional length, fixed-size, or zero-terminated metadata. */
35
- export type ArrayTypeRef = {
36
- readonly kind: "array";
37
- readonly element: GirTypeRef;
38
- readonly cType: string | undefined;
39
- readonly lengthParameterIndex: number | undefined;
40
- readonly fixedSize: number | undefined;
41
- readonly zeroTerminated: boolean;
42
- };
43
- /** A GLib `GList` / `GSList` / `GPtrArray` / `GArray` / `GByteArray`. */
44
- export type ListTypeRef = {
45
- readonly kind: "list";
46
- readonly flavor: "glist" | "gslist" | "gptrarray" | "garray" | "gbytearray";
47
- readonly element: GirTypeRef;
48
- readonly cType: string | undefined;
49
- };
50
- /** A GLib `GHashTable` with key and value element types. */
51
- export type HashTableTypeRef = {
52
- readonly kind: "hashtable";
53
- readonly key: GirTypeRef;
54
- readonly value: GirTypeRef;
55
- readonly cType: string | undefined;
56
- };
57
- /** An inline `<callback>` (used for vtable slots and callback parameters). */
58
- type InlineCallbackTypeRef = {
59
- readonly kind: "callback";
60
- readonly callback: RawNode;
61
- };
62
- /** A `<varargs/>` parameter placeholder; not marshalable. */
63
- type VarargsTypeRef = {
64
- readonly kind: "varargs";
65
- };
66
- /**
67
- * Builds a {@link GirTypeRef} from a parent XML node whose first `<type>`,
68
- * `<array>`, or `<varargs>` child describes the slot.
69
- *
70
- * Pass the parent (`<parameter>`, `<return-value>`, `<field>`, `<property>`,
71
- * `<constant>`, `<alias>`). The helper extracts the right child and routes
72
- * to {@link typeRefFromTypeNode}.
73
- *
74
- * @param parent - The element whose typed slot we are inspecting
75
- * @returns The reference, or `undefined` if no type slot exists
76
- */
77
- export declare const typeRefFromSlot: (parent: RawNode | undefined) => GirTypeRef | undefined;
78
- export {};
2
+ import { type ParseContext, type TypeId } from "./type-id.js";
3
+ export declare const typeRefFromNode: (parent: RawNode | undefined, context: ParseContext) => TypeId | undefined;
4
+ export declare const splitOptionalNamespace: (name: string) => [string | undefined, string];
79
5
  //# sourceMappingURL=type-ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,iBAAiB,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAChB,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,qBAAqB,GACrB,cAAc,CAAC;AAErB,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC5E,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,8EAA8E;AAC9E,KAAK,qBAAqB,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,6DAA6D;AAC7D,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAUnD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,GAAG,SAAS,KAAG,UAAU,GAAG,SAU1E,CAAC"}
1
+ {"version":3,"file":"type-ref.d.ts","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAyD,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AASrH,eAAO,MAAM,eAAe,WAAY,OAAO,GAAG,SAAS,WAAW,YAAY,KAAG,MAAM,GAAG,SAU7F,CAAC;AAiDF,eAAO,MAAM,sBAAsB,SAAU,MAAM,KAAG,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAIhF,CAAC"}
@@ -1,98 +1,68 @@
1
- import { attr, attrBool, childOf, childrenOf } from "./parse.js";
1
+ import { attr, childOf, childrenOf, intAttr, nameAttr } from "./parse.js";
2
2
  import { primitiveCategory } from "./primitives.js";
3
- const LIST_KIND_BY_NAME = new Map([
4
- ["GLib.List", "glist"],
5
- ["GLib.SList", "gslist"],
6
- ["GLib.PtrArray", "gptrarray"],
7
- ["GLib.Array", "garray"],
8
- ["GLib.ByteArray", "gbytearray"],
9
- ]);
10
- /**
11
- * Builds a {@link GirTypeRef} from a parent XML node whose first `<type>`,
12
- * `<array>`, or `<varargs>` child describes the slot.
13
- *
14
- * Pass the parent (`<parameter>`, `<return-value>`, `<field>`, `<property>`,
15
- * `<constant>`, `<alias>`). The helper extracts the right child and routes
16
- * to {@link typeRefFromTypeNode}.
17
- *
18
- * @param parent - The element whose typed slot we are inspecting
19
- * @returns The reference, or `undefined` if no type slot exists
20
- */
21
- export const typeRefFromSlot = (parent) => {
3
+ import { LIST_FLAVOR_BY_NAME } from "./type-id.js";
4
+ const LIST_FLAVOR_BY_NAME_LOOKUP = new Map(Object.entries(LIST_FLAVOR_BY_NAME));
5
+ const elementRefOf = (node, context) => {
6
+ const elementNode = childOf(node, "type");
7
+ return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);
8
+ };
9
+ export const typeRefFromNode = (parent, context) => {
22
10
  if (parent === undefined)
23
11
  return undefined;
24
12
  if (childOf(parent, "varargs") !== undefined)
25
- return { kind: "varargs" };
13
+ return context.addVarargs();
26
14
  const arrayNode = childOf(parent, "array");
27
15
  if (arrayNode !== undefined)
28
- return arrayTypeRefFromNode(arrayNode);
16
+ return arrayTypeRefFromNode(arrayNode, context);
29
17
  const typeNode = childOf(parent, "type");
30
18
  if (typeNode !== undefined)
31
- return typeRefFromTypeNode(typeNode);
19
+ return typeRefFromTypeNode(typeNode, context);
32
20
  const callback = childOf(parent, "callback");
33
21
  if (callback !== undefined)
34
- return { kind: "callback", callback };
22
+ return context.addAnonymousCallback(callback);
35
23
  return undefined;
36
24
  };
37
- /**
38
- * Builds a {@link GirTypeRef} from a `<type>` element.
39
- *
40
- * Splits a `Namespace.TypeName` form into namespace + type, recognises GLib
41
- * container types (`GLib.List`, `GLib.HashTable`, …) by name and routes
42
- * them to the dedicated branches, otherwise produces a primitive or named
43
- * reference for later resolution.
44
- *
45
- * @param typeNode - A `<type>` element
46
- */
47
- const typeRefFromTypeNode = (typeNode) => {
48
- const name = attr(typeNode, "name") ?? "";
49
- const cType = attr(typeNode, "c:type");
50
- const listFlavor = LIST_KIND_BY_NAME.get(name);
25
+ const typeRefFromTypeNode = (typeNode, context) => {
26
+ const name = nameAttr(typeNode);
27
+ const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);
51
28
  if (listFlavor !== undefined) {
52
- const elementNode = childOf(typeNode, "type");
53
- const element = elementNode === undefined ? pointerFallback() : typeRefFromTypeNode(elementNode);
54
- return { kind: "list", flavor: listFlavor, element, cType };
29
+ return context.addContainer({ kind: "list", flavor: listFlavor, element: elementRefOf(typeNode, context) });
55
30
  }
56
31
  if (name === "GLib.HashTable") {
57
32
  const elementTypes = childrenOf(typeNode, "type");
58
33
  const keyNode = elementTypes[0];
59
34
  const valueNode = elementTypes[1];
60
- return {
35
+ return context.addContainer({
61
36
  kind: "hashtable",
62
- key: keyNode === undefined ? pointerFallback() : typeRefFromTypeNode(keyNode),
63
- value: valueNode === undefined ? pointerFallback() : typeRefFromTypeNode(valueNode),
64
- cType,
65
- };
37
+ key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),
38
+ value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),
39
+ });
66
40
  }
67
41
  const primitive = primitiveCategory(name);
68
42
  if (primitive !== undefined) {
69
- return { kind: "primitive", category: primitive, cType };
43
+ return context.addPrimitive(primitive);
70
44
  }
71
- const [namespaceName, typeName] = splitOptionalNamespace(name);
72
- return { kind: "named", namespaceName, typeName, cType };
45
+ return context.findType(name);
73
46
  };
74
- const arrayTypeRefFromNode = (arrayNode) => {
75
- const elementNode = childOf(arrayNode, "type");
76
- const element = elementNode === undefined ? pointerFallback() : typeRefFromTypeNode(elementNode);
77
- const cType = attr(arrayNode, "c:type");
47
+ const arrayTypeRefFromNode = (arrayNode, context) => {
48
+ const element = elementRefOf(arrayNode, context);
78
49
  const arrayName = attr(arrayNode, "name");
79
- const listFlavor = arrayName === undefined ? undefined : LIST_KIND_BY_NAME.get(arrayName);
50
+ const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);
80
51
  if (listFlavor !== undefined) {
81
- return { kind: "list", flavor: listFlavor, element, cType };
52
+ return context.addContainer({ kind: "list", flavor: listFlavor, element });
82
53
  }
83
- const lengthAttr = attr(arrayNode, "length");
84
- const fixedSizeAttr = attr(arrayNode, "fixed-size");
85
- return {
86
- kind: "array",
54
+ const elementNode = childOf(arrayNode, "type");
55
+ const carray = {
56
+ kind: "carray",
87
57
  element,
88
- cType,
89
- lengthParameterIndex: lengthAttr === undefined ? undefined : Number.parseInt(lengthAttr, 10),
90
- fixedSize: fixedSizeAttr === undefined ? undefined : Number.parseInt(fixedSizeAttr, 10),
91
- zeroTerminated: attrBool(arrayNode, "zero-terminated", false),
58
+ elementCType: elementNode === undefined ? undefined : attr(elementNode, "c:type"),
59
+ lengthParameterIndex: intAttr(arrayNode, "length"),
60
+ fixedSize: intAttr(arrayNode, "fixed-size"),
92
61
  };
62
+ return context.addContainer(carray);
93
63
  };
94
- const pointerFallback = () => ({ kind: "primitive", category: "pointer", cType: undefined });
95
- const splitOptionalNamespace = (name) => {
64
+ const pointerFallback = (context) => context.addPrimitive("pointer");
65
+ export const splitOptionalNamespace = (name) => {
96
66
  const dot = name.indexOf(".");
97
67
  if (dot === -1)
98
68
  return [undefined, name];
@@ -1 +1 @@
1
- {"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-ref.js","sourceRoot":"","sources":["../../src/gir/type-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAmB,mBAAmB,EAAmD,MAAM,cAAc,CAAC;AAErH,MAAM,0BAA0B,GAA4B,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEzG,MAAM,YAAY,GAAG,CAAC,IAAa,EAAE,OAAqB,EAAU,EAAE;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC5G,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAA2B,EAAE,OAAqB,EAAsB,EAAE;IACtG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAAiB,EAAE,OAAqB,EAAU,EAAE;IAC7E,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEhC,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAChH,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC,YAAY,CAAC;YACxB,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;YAC7F,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;SACtG,CAAC,CAAC;IACP,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,SAAkB,EAAE,OAAqB,EAAU,EAAE;IAC/E,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnG,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,YAAY,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;QACjF,oBAAoB,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;QAClD,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC;KAC9C,CAAC;IACF,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAU,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAgC,EAAE;IACjF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC","sourcesContent":["import { attr, childOf, childrenOf, intAttr, nameAttr, type RawNode } from \"./parse.js\";\nimport { primitiveCategory } from \"./primitives.js\";\nimport { type CArrayType, LIST_FLAVOR_BY_NAME, type ListFlavor, type ParseContext, type TypeId } from \"./type-id.js\";\n\nconst LIST_FLAVOR_BY_NAME_LOOKUP: Map<string, ListFlavor> = new Map(Object.entries(LIST_FLAVOR_BY_NAME));\n\nconst elementRefOf = (node: RawNode, context: ParseContext): TypeId => {\n const elementNode = childOf(node, \"type\");\n return elementNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(elementNode, context);\n};\n\nexport const typeRefFromNode = (parent: RawNode | undefined, context: ParseContext): TypeId | undefined => {\n if (parent === undefined) return undefined;\n if (childOf(parent, \"varargs\") !== undefined) return context.addVarargs();\n const arrayNode = childOf(parent, \"array\");\n if (arrayNode !== undefined) return arrayTypeRefFromNode(arrayNode, context);\n const typeNode = childOf(parent, \"type\");\n if (typeNode !== undefined) return typeRefFromTypeNode(typeNode, context);\n const callback = childOf(parent, \"callback\");\n if (callback !== undefined) return context.addAnonymousCallback(callback);\n return undefined;\n};\n\nconst typeRefFromTypeNode = (typeNode: RawNode, context: ParseContext): TypeId => {\n const name = nameAttr(typeNode);\n\n const listFlavor = LIST_FLAVOR_BY_NAME_LOOKUP.get(name);\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element: elementRefOf(typeNode, context) });\n }\n\n if (name === \"GLib.HashTable\") {\n const elementTypes = childrenOf(typeNode, \"type\");\n const keyNode = elementTypes[0];\n const valueNode = elementTypes[1];\n return context.addContainer({\n kind: \"hashtable\",\n key: keyNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(keyNode, context),\n value: valueNode === undefined ? pointerFallback(context) : typeRefFromTypeNode(valueNode, context),\n });\n }\n\n const primitive = primitiveCategory(name);\n if (primitive !== undefined) {\n return context.addPrimitive(primitive);\n }\n\n return context.findType(name);\n};\n\nconst arrayTypeRefFromNode = (arrayNode: RawNode, context: ParseContext): TypeId => {\n const element = elementRefOf(arrayNode, context);\n const arrayName = attr(arrayNode, \"name\");\n const listFlavor = arrayName === undefined ? undefined : LIST_FLAVOR_BY_NAME_LOOKUP.get(arrayName);\n if (listFlavor !== undefined) {\n return context.addContainer({ kind: \"list\", flavor: listFlavor, element });\n }\n const elementNode = childOf(arrayNode, \"type\");\n const carray: CArrayType = {\n kind: \"carray\",\n element,\n elementCType: elementNode === undefined ? undefined : attr(elementNode, \"c:type\"),\n lengthParameterIndex: intAttr(arrayNode, \"length\"),\n fixedSize: intAttr(arrayNode, \"fixed-size\"),\n };\n return context.addContainer(carray);\n};\n\nconst pointerFallback = (context: ParseContext): TypeId => context.addPrimitive(\"pointer\");\n\nexport const splitOptionalNamespace = (name: string): [string | undefined, string] => {\n const dot = name.indexOf(\".\");\n if (dot === -1) return [undefined, name];\n return [name.slice(0, dot), name.slice(dot + 1)];\n};\n"]}
@@ -0,0 +1,33 @@
1
+ import type { GirCallback } from "./callback.js";
2
+ import type { GirClass } from "./class.js";
3
+ import type { GirEnum } from "./enum.js";
4
+ import type { GirAlias, GirNamespace } from "./namespace.js";
5
+ import type { GirRecord } from "./record.js";
6
+ import type { StructuralType } from "./type-id.js";
7
+ export type EntityType = {
8
+ kind: "class";
9
+ namespace: GirNamespace;
10
+ value: GirClass;
11
+ } | {
12
+ kind: "interface";
13
+ namespace: GirNamespace;
14
+ value: GirClass;
15
+ } | {
16
+ kind: "record";
17
+ namespace: GirNamespace;
18
+ value: GirRecord;
19
+ } | {
20
+ kind: "enum";
21
+ namespace: GirNamespace;
22
+ value: GirEnum;
23
+ } | {
24
+ kind: "callback";
25
+ namespace: GirNamespace;
26
+ value: GirCallback;
27
+ } | {
28
+ kind: "alias";
29
+ namespace: GirNamespace;
30
+ value: GirAlias;
31
+ };
32
+ export type GirType = StructuralType | EntityType;
33
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"AAAA,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,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,MAAM,UAAU,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/gir/type.ts"],"names":[],"mappings":"","sourcesContent":["import type { GirCallback } from \"./callback.js\";\nimport type { GirClass } from \"./class.js\";\nimport type { GirEnum } from \"./enum.js\";\nimport type { GirAlias, GirNamespace } from \"./namespace.js\";\nimport type { GirRecord } from \"./record.js\";\nimport type { StructuralType } from \"./type-id.js\";\n\nexport type EntityType =\n | { kind: \"class\"; namespace: GirNamespace; value: GirClass }\n | { kind: \"interface\"; namespace: GirNamespace; value: GirClass }\n | { kind: \"record\"; namespace: GirNamespace; value: GirRecord }\n | { kind: \"enum\"; namespace: GirNamespace; value: GirEnum }\n | { kind: \"callback\"; namespace: GirNamespace; value: GirCallback }\n | { kind: \"alias\"; namespace: GirNamespace; value: GirAlias };\n\nexport type GirType = StructuralType | EntityType;\n"]}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,6 @@
1
- /**
2
- * Public API of `@gtkx/codegen`.
3
- *
4
- * The package exposes a single entry point — {@link CodegenRunner} that
5
- * orchestrates the GIR-driven code generation for the FFI and React
6
- * surfaces. Internal modules (`gir/`, `dsl/`, `writers/`, `ffi/`,
7
- * `react/`) are not part of the supported surface and may change in any
8
- * release.
9
- */
10
- export { CODEGEN_VERSION, type CodegenFingerprint, computeFingerprint, FINGERPRINT_FILENAME, } from "./fingerprint.js";
11
- export { CodegenRunner } from "./runner.js";
1
+ export { API_SYMBOL_KINDS, type ApiLookupResult, type ApiNamespaceSummary, type ApiReference, type ApiReferenceOptions, type ApiSearchOptions, type ApiSymbol, type ApiSymbolKind, loadApiReference, } from "./docs/api-reference.js";
2
+ export { type DocsElementLink, type DocsNamespace, type DocsOptions, type DocsResult, writeDocs, } from "./docs/pipeline.js";
3
+ export { resolveGirPath } from "./gir/gir-path.js";
4
+ export { discoverGirNamespaces, resolveLibraries } from "./gir/libraries.js";
5
+ export { runCodegen } from "./runner.js";
12
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACH,eAAe,EACf,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,SAAS,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,6 @@
1
- /**
2
- * Public API of `@gtkx/codegen`.
3
- *
4
- * The package exposes a single entry point — {@link CodegenRunner} that
5
- * orchestrates the GIR-driven code generation for the FFI and React
6
- * surfaces. Internal modules (`gir/`, `dsl/`, `writers/`, `ffi/`,
7
- * `react/`) are not part of the supported surface and may change in any
8
- * release.
9
- */
10
- export { CODEGEN_VERSION, computeFingerprint, FINGERPRINT_FILENAME, } from "./fingerprint.js";
11
- export { CodegenRunner } from "./runner.js";
1
+ export { API_SYMBOL_KINDS, loadApiReference, } from "./docs/api-reference.js";
2
+ export { writeDocs, } from "./docs/pipeline.js";
3
+ export { resolveGirPath } from "./gir/gir-path.js";
4
+ export { discoverGirNamespaces, resolveLibraries } from "./gir/libraries.js";
5
+ export { runCodegen } from "./runner.js";
12
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACH,eAAe,EAEf,kBAAkB,EAClB,oBAAoB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAQhB,gBAAgB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAKH,SAAS,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export {\n API_SYMBOL_KINDS,\n type ApiLookupResult,\n type ApiNamespaceSummary,\n type ApiReference,\n type ApiReferenceOptions,\n type ApiSearchOptions,\n type ApiSymbol,\n type ApiSymbolKind,\n loadApiReference,\n} from \"./docs/api-reference.js\";\nexport {\n type DocsElementLink,\n type DocsNamespace,\n type DocsOptions,\n type DocsResult,\n writeDocs,\n} from \"./docs/pipeline.js\";\nexport { resolveGirPath } from \"./gir/gir-path.js\";\nexport { discoverGirNamespaces, resolveLibraries } from \"./gir/libraries.js\";\nexport { runCodegen } from \"./runner.js\";\n"]}
@@ -0,0 +1,30 @@
1
+ import type { CommandPlan, GlScalar } from "./plan.js";
2
+ export declare const scalarAliasOrGroup: (scalar: GlScalar, group: string | undefined) => string;
3
+ export type InArg = {
4
+ out: false;
5
+ name: string;
6
+ tsType: string;
7
+ descriptor: string;
8
+ };
9
+ export type OutArg = {
10
+ out: true;
11
+ cellName: string;
12
+ seed: string;
13
+ tsType: string;
14
+ descriptor: string;
15
+ paramIndex: number;
16
+ };
17
+ type PlannedArg = InArg | OutArg;
18
+ export declare const trackInto: (usedTypes: Set<string>) => (alias: string) => string;
19
+ export declare const planArgs: (plan: CommandPlan & {
20
+ ok: true;
21
+ }, usedTypes: Set<string>) => {
22
+ args: PlannedArg[];
23
+ ins: InArg[];
24
+ outs: OutArg[];
25
+ };
26
+ export declare const scalarPrefixArgs: (plan: CommandPlan & {
27
+ ok: true;
28
+ }, usedTypes: Set<string>) => InArg[] | undefined;
29
+ export {};
30
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/khronos/args.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,MAAM,WAAW,CAAC;AAElE,eAAO,MAAM,kBAAkB,WAAY,QAAQ,SAAS,MAAM,GAAG,SAAS,KAAG,MACD,CAAC;AAajF,MAAM,MAAM,KAAK,GAAG;IAChB,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACjB,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;AAsGjC,eAAO,MAAM,SAAS,cACN,GAAG,CAAC,MAAM,CAAC,aACf,MAAM,KAAG,MAGhB,CAAC;AAEN,eAAO,MAAM,QAAQ,SACX,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,aACrB,GAAG,CAAC,MAAM,CAAC,KACvB;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAyBpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,aAAa,GAAG,CAAC,MAAM,CAAC,KAAG,KAAK,EAAE,GAAG,SAiBrG,CAAC"}