@gtkx/codegen 1.0.0-rc.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/README.md +8 -9
  2. package/dist/analysis/descriptor-render.d.ts +9 -4
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +51 -61
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +7 -7
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js +7 -7
  9. package/dist/analysis/descriptor.js.map +1 -1
  10. package/dist/analysis/inheritance.d.ts +1 -2
  11. package/dist/analysis/inheritance.d.ts.map +1 -1
  12. package/dist/analysis/inheritance.js +25 -22
  13. package/dist/analysis/inheritance.js.map +1 -1
  14. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  15. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  16. package/dist/analysis/nul-terminated-bytes.js +18 -0
  17. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  18. package/dist/analysis/param-capability.d.ts +5 -0
  19. package/dist/analysis/param-capability.d.ts.map +1 -0
  20. package/dist/analysis/param-capability.js +130 -0
  21. package/dist/analysis/param-capability.js.map +1 -0
  22. package/dist/analysis/param-structure.d.ts +13 -6
  23. package/dist/analysis/param-structure.d.ts.map +1 -1
  24. package/dist/analysis/param-structure.js +44 -20
  25. package/dist/analysis/param-structure.js.map +1 -1
  26. package/dist/analysis/ts-type.d.ts +1 -1
  27. package/dist/analysis/ts-type.d.ts.map +1 -1
  28. package/dist/analysis/ts-type.js +3 -5
  29. package/dist/analysis/ts-type.js.map +1 -1
  30. package/dist/analysis/type-shape.d.ts +8 -0
  31. package/dist/analysis/type-shape.d.ts.map +1 -0
  32. package/dist/analysis/type-shape.js +12 -0
  33. package/dist/analysis/type-shape.js.map +1 -0
  34. package/dist/compile.d.ts +1 -1
  35. package/dist/compile.d.ts.map +1 -1
  36. package/dist/compile.js +2 -1
  37. package/dist/compile.js.map +1 -1
  38. package/dist/docs/api-reference.d.ts +79 -3
  39. package/dist/docs/api-reference.d.ts.map +1 -1
  40. package/dist/docs/api-reference.js +68 -13
  41. package/dist/docs/api-reference.js.map +1 -1
  42. package/dist/docs/element-page.d.ts +4 -4
  43. package/dist/docs/element-page.d.ts.map +1 -1
  44. package/dist/docs/element-page.js +32 -20
  45. package/dist/docs/element-page.js.map +1 -1
  46. package/dist/docs/handwritten-props.d.ts +9 -0
  47. package/dist/docs/handwritten-props.d.ts.map +1 -0
  48. package/dist/docs/handwritten-props.js +149 -0
  49. package/dist/docs/handwritten-props.js.map +1 -0
  50. package/dist/docs/pipeline.d.ts +4 -4
  51. package/dist/docs/pipeline.d.ts.map +1 -1
  52. package/dist/docs/pipeline.js +6 -6
  53. package/dist/docs/pipeline.js.map +1 -1
  54. package/dist/docs/render.d.ts +25 -5
  55. package/dist/docs/render.d.ts.map +1 -1
  56. package/dist/docs/render.js +90 -28
  57. package/dist/docs/render.js.map +1 -1
  58. package/dist/docs/symbol-page.d.ts +22 -0
  59. package/dist/docs/symbol-page.d.ts.map +1 -1
  60. package/dist/docs/symbol-page.js +129 -44
  61. package/dist/docs/symbol-page.js.map +1 -1
  62. package/dist/fingerprint.d.ts +3 -6
  63. package/dist/fingerprint.d.ts.map +1 -1
  64. package/dist/fingerprint.js +6 -8
  65. package/dist/fingerprint.js.map +1 -1
  66. package/dist/gi.d.ts +3 -11
  67. package/dist/gi.d.ts.map +1 -1
  68. package/dist/gi.js +0 -7
  69. package/dist/gi.js.map +1 -1
  70. package/dist/gir/ancestry.d.ts +2 -2
  71. package/dist/gir/ancestry.d.ts.map +1 -1
  72. package/dist/gir/ancestry.js +11 -1
  73. package/dist/gir/ancestry.js.map +1 -1
  74. package/dist/gir/annotations.d.ts +22 -0
  75. package/dist/gir/annotations.d.ts.map +1 -0
  76. package/dist/gir/annotations.js +15 -0
  77. package/dist/gir/annotations.js.map +1 -0
  78. package/dist/gir/callback.d.ts +1 -0
  79. package/dist/gir/callback.d.ts.map +1 -1
  80. package/dist/gir/callback.js +1 -0
  81. package/dist/gir/callback.js.map +1 -1
  82. package/dist/gir/class.d.ts +32 -1
  83. package/dist/gir/class.d.ts.map +1 -1
  84. package/dist/gir/class.js +8 -3
  85. package/dist/gir/class.js.map +1 -1
  86. package/dist/gir/enum.d.ts +21 -1
  87. package/dist/gir/enum.d.ts.map +1 -1
  88. package/dist/gir/enum.js +9 -9
  89. package/dist/gir/enum.js.map +1 -1
  90. package/dist/gir/field.d.ts +19 -4
  91. package/dist/gir/field.d.ts.map +1 -1
  92. package/dist/gir/field.js +7 -11
  93. package/dist/gir/field.js.map +1 -1
  94. package/dist/gir/function.d.ts +15 -0
  95. package/dist/gir/function.d.ts.map +1 -1
  96. package/dist/gir/function.js.map +1 -1
  97. package/dist/gir/gir-path.d.ts +7 -0
  98. package/dist/gir/gir-path.d.ts.map +1 -1
  99. package/dist/gir/gir-path.js +7 -0
  100. package/dist/gir/gir-path.js.map +1 -1
  101. package/dist/gir/libraries.d.ts +13 -2
  102. package/dist/gir/libraries.d.ts.map +1 -1
  103. package/dist/gir/libraries.js +11 -0
  104. package/dist/gir/libraries.js.map +1 -1
  105. package/dist/gir/library.d.ts +36 -0
  106. package/dist/gir/library.d.ts.map +1 -1
  107. package/dist/gir/library.js +34 -0
  108. package/dist/gir/library.js.map +1 -1
  109. package/dist/gir/namespace.d.ts +38 -0
  110. package/dist/gir/namespace.d.ts.map +1 -1
  111. package/dist/gir/namespace.js +4 -5
  112. package/dist/gir/namespace.js.map +1 -1
  113. package/dist/gir/parameter.d.ts +39 -0
  114. package/dist/gir/parameter.d.ts.map +1 -1
  115. package/dist/gir/parameter.js +7 -7
  116. package/dist/gir/parameter.js.map +1 -1
  117. package/dist/gir/parse.d.ts +3 -1
  118. package/dist/gir/parse.d.ts.map +1 -1
  119. package/dist/gir/parse.js +6 -3
  120. package/dist/gir/parse.js.map +1 -1
  121. package/dist/gir/primitives.d.ts +1 -0
  122. package/dist/gir/primitives.d.ts.map +1 -1
  123. package/dist/gir/primitives.js.map +1 -1
  124. package/dist/gir/property.d.ts +16 -0
  125. package/dist/gir/property.d.ts.map +1 -1
  126. package/dist/gir/property.js +3 -3
  127. package/dist/gir/property.js.map +1 -1
  128. package/dist/gir/record.d.ts +22 -0
  129. package/dist/gir/record.d.ts.map +1 -1
  130. package/dist/gir/record.js +3 -2
  131. package/dist/gir/record.js.map +1 -1
  132. package/dist/gir/size.d.ts +5 -4
  133. package/dist/gir/size.d.ts.map +1 -1
  134. package/dist/gir/size.js +0 -3
  135. package/dist/gir/size.js.map +1 -1
  136. package/dist/gir/type-id.d.ts +36 -1
  137. package/dist/gir/type-id.d.ts.map +1 -1
  138. package/dist/gir/type-id.js +2 -3
  139. package/dist/gir/type-id.js.map +1 -1
  140. package/dist/gir/type-ref.d.ts.map +1 -1
  141. package/dist/gir/type-ref.js +2 -1
  142. package/dist/gir/type-ref.js.map +1 -1
  143. package/dist/gir/type.d.ts +20 -0
  144. package/dist/gir/type.d.ts.map +1 -1
  145. package/dist/gir/type.js.map +1 -1
  146. package/dist/index.d.ts +18 -6
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +12 -3
  149. package/dist/index.js.map +1 -1
  150. package/dist/internal.d.ts +3 -0
  151. package/dist/internal.d.ts.map +1 -0
  152. package/dist/internal.js +3 -0
  153. package/dist/internal.js.map +1 -0
  154. package/dist/jsx.d.ts +7 -12
  155. package/dist/jsx.d.ts.map +1 -1
  156. package/dist/jsx.js +18 -19
  157. package/dist/jsx.js.map +1 -1
  158. package/dist/khronos/args.d.ts +7 -6
  159. package/dist/khronos/args.d.ts.map +1 -1
  160. package/dist/khronos/args.js +29 -7
  161. package/dist/khronos/args.js.map +1 -1
  162. package/dist/khronos/doc-context.d.ts +29 -0
  163. package/dist/khronos/doc-context.d.ts.map +1 -0
  164. package/dist/khronos/doc-context.js +29 -0
  165. package/dist/khronos/doc-context.js.map +1 -0
  166. package/dist/khronos/extensions.d.ts +13 -0
  167. package/dist/khronos/extensions.d.ts.map +1 -0
  168. package/dist/khronos/extensions.js +49 -0
  169. package/dist/khronos/extensions.js.map +1 -0
  170. package/dist/khronos/jsdoc.d.ts +17 -11
  171. package/dist/khronos/jsdoc.d.ts.map +1 -1
  172. package/dist/khronos/jsdoc.js +104 -46
  173. package/dist/khronos/jsdoc.js.map +1 -1
  174. package/dist/khronos/model.d.ts +42 -3
  175. package/dist/khronos/model.d.ts.map +1 -1
  176. package/dist/khronos/model.js +218 -63
  177. package/dist/khronos/model.js.map +1 -1
  178. package/dist/khronos/modules.d.ts +9 -6
  179. package/dist/khronos/modules.d.ts.map +1 -1
  180. package/dist/khronos/modules.js +96 -26
  181. package/dist/khronos/modules.js.map +1 -1
  182. package/dist/khronos/notes.d.ts +19 -0
  183. package/dist/khronos/notes.d.ts.map +1 -0
  184. package/dist/khronos/notes.js +35 -0
  185. package/dist/khronos/notes.js.map +1 -0
  186. package/dist/khronos/param-pair.d.ts +1 -1
  187. package/dist/khronos/param-pair.d.ts.map +1 -1
  188. package/dist/khronos/param-pair.js.map +1 -1
  189. package/dist/khronos/pipeline.d.ts +3 -1
  190. package/dist/khronos/pipeline.d.ts.map +1 -1
  191. package/dist/khronos/pipeline.js +59 -28
  192. package/dist/khronos/pipeline.js.map +1 -1
  193. package/dist/khronos/plan.d.ts +5 -5
  194. package/dist/khronos/plan.d.ts.map +1 -1
  195. package/dist/khronos/plan.js +8 -8
  196. package/dist/khronos/plan.js.map +1 -1
  197. package/dist/khronos/render.d.ts +8 -6
  198. package/dist/khronos/render.d.ts.map +1 -1
  199. package/dist/khronos/render.js +35 -26
  200. package/dist/khronos/render.js.map +1 -1
  201. package/dist/khronos/select.d.ts +21 -4
  202. package/dist/khronos/select.d.ts.map +1 -1
  203. package/dist/khronos/select.js +47 -34
  204. package/dist/khronos/select.js.map +1 -1
  205. package/dist/react/element-config.d.ts +16 -10
  206. package/dist/react/element-config.d.ts.map +1 -1
  207. package/dist/react/element-config.js +22 -15
  208. package/dist/react/element-config.js.map +1 -1
  209. package/dist/runner.d.ts +33 -21
  210. package/dist/runner.d.ts.map +1 -1
  211. package/dist/runner.js +19 -20
  212. package/dist/runner.js.map +1 -1
  213. package/dist/store/compile-store.d.ts +2 -3
  214. package/dist/store/compile-store.d.ts.map +1 -1
  215. package/dist/store/compile-store.js +2 -2
  216. package/dist/store/compile-store.js.map +1 -1
  217. package/dist/store/gi/callable-doc.d.ts +11 -0
  218. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  219. package/dist/store/gi/callable-doc.js +62 -0
  220. package/dist/store/gi/callable-doc.js.map +1 -0
  221. package/dist/store/gi/callables.d.ts +3 -1
  222. package/dist/store/gi/callables.d.ts.map +1 -1
  223. package/dist/store/gi/callables.js +16 -16
  224. package/dist/store/gi/callables.js.map +1 -1
  225. package/dist/store/gi/callback.d.ts.map +1 -1
  226. package/dist/store/gi/callback.js +2 -2
  227. package/dist/store/gi/callback.js.map +1 -1
  228. package/dist/store/gi/class.d.ts.map +1 -1
  229. package/dist/store/gi/class.js +5 -3
  230. package/dist/store/gi/class.js.map +1 -1
  231. package/dist/store/gi/closure-invocation.d.ts +4 -0
  232. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  233. package/dist/store/gi/closure-invocation.js +22 -0
  234. package/dist/store/gi/closure-invocation.js.map +1 -0
  235. package/dist/store/gi/constant.d.ts.map +1 -1
  236. package/dist/store/gi/constant.js +3 -4
  237. package/dist/store/gi/constant.js.map +1 -1
  238. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  239. package/dist/store/gi/constructor-props.js +18 -20
  240. package/dist/store/gi/constructor-props.js.map +1 -1
  241. package/dist/store/gi/doc-spec.d.ts +14 -0
  242. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  243. package/dist/store/gi/doc-spec.js +23 -0
  244. package/dist/store/gi/doc-spec.js.map +1 -0
  245. package/dist/store/gi/enum.d.ts.map +1 -1
  246. package/dist/store/gi/enum.js +29 -16
  247. package/dist/store/gi/enum.js.map +1 -1
  248. package/dist/store/gi/function.d.ts.map +1 -1
  249. package/dist/store/gi/function.js +28 -17
  250. package/dist/store/gi/function.js.map +1 -1
  251. package/dist/store/gi/interface.d.ts.map +1 -1
  252. package/dist/store/gi/interface.js +130 -16
  253. package/dist/store/gi/interface.js.map +1 -1
  254. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  255. package/dist/store/gi/item-comparators.js +3 -5
  256. package/dist/store/gi/item-comparators.js.map +1 -1
  257. package/dist/store/gi/method.d.ts +9 -1
  258. package/dist/store/gi/method.d.ts.map +1 -1
  259. package/dist/store/gi/method.js +92 -47
  260. package/dist/store/gi/method.js.map +1 -1
  261. package/dist/store/gi/param-marshal.d.ts +4 -1
  262. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  263. package/dist/store/gi/param-marshal.js +5 -1
  264. package/dist/store/gi/param-marshal.js.map +1 -1
  265. package/dist/store/gi/pipeline.d.ts.map +1 -1
  266. package/dist/store/gi/pipeline.js +3 -2
  267. package/dist/store/gi/pipeline.js.map +1 -1
  268. package/dist/store/gi/properties.d.ts.map +1 -1
  269. package/dist/store/gi/properties.js +2 -2
  270. package/dist/store/gi/properties.js.map +1 -1
  271. package/dist/store/gi/property-accessor.d.ts +4 -2
  272. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  273. package/dist/store/gi/property-accessor.js +10 -11
  274. package/dist/store/gi/property-accessor.js.map +1 -1
  275. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  276. package/dist/store/gi/record-constructor.js +3 -1
  277. package/dist/store/gi/record-constructor.js.map +1 -1
  278. package/dist/store/gi/record-field-accessor.d.ts +4 -2
  279. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  280. package/dist/store/gi/record-field-accessor.js +6 -11
  281. package/dist/store/gi/record-field-accessor.js.map +1 -1
  282. package/dist/store/gi/record-layout.d.ts.map +1 -1
  283. package/dist/store/gi/record-layout.js +1 -5
  284. package/dist/store/gi/record-layout.js.map +1 -1
  285. package/dist/store/gi/record.d.ts.map +1 -1
  286. package/dist/store/gi/record.js +3 -2
  287. package/dist/store/gi/record.js.map +1 -1
  288. package/dist/store/gi/registration.d.ts +1 -1
  289. package/dist/store/gi/registration.js +2 -2
  290. package/dist/store/gi/registration.js.map +1 -1
  291. package/dist/store/gi/return-wrap.d.ts +1 -1
  292. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  293. package/dist/store/gi/return-wrap.js +4 -4
  294. package/dist/store/gi/return-wrap.js.map +1 -1
  295. package/dist/store/gi/runtime-override.d.ts +2 -1
  296. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  297. package/dist/store/gi/runtime-override.js +8 -5
  298. package/dist/store/gi/runtime-override.js.map +1 -1
  299. package/dist/store/gi/signal.d.ts.map +1 -1
  300. package/dist/store/gi/signal.js +27 -31
  301. package/dist/store/gi/signal.js.map +1 -1
  302. package/dist/store/gi/value-marshalable.d.ts +1 -10
  303. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  304. package/dist/store/gi/value-marshalable.js +1 -10
  305. package/dist/store/gi/value-marshalable.js.map +1 -1
  306. package/dist/store/gi/vtable.d.ts +16 -1
  307. package/dist/store/gi/vtable.d.ts.map +1 -1
  308. package/dist/store/gi/vtable.js +214 -51
  309. package/dist/store/gi/vtable.js.map +1 -1
  310. package/dist/store/gi-store.d.ts +2 -3
  311. package/dist/store/gi-store.d.ts.map +1 -1
  312. package/dist/store/gi-store.js.map +1 -1
  313. package/dist/store/jsx/element-components.d.ts +1 -3
  314. package/dist/store/jsx/element-components.d.ts.map +1 -1
  315. package/dist/store/jsx/element-components.js +6 -8
  316. package/dist/store/jsx/element-components.js.map +1 -1
  317. package/dist/store/jsx/element-prop-imports.d.ts +1 -4
  318. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  319. package/dist/store/jsx/element-prop-imports.js +0 -2
  320. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  321. package/dist/store/jsx/element-prop-types.d.ts +3 -1
  322. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  323. package/dist/store/jsx/element-prop-types.js +7 -2
  324. package/dist/store/jsx/element-prop-types.js.map +1 -1
  325. package/dist/store/jsx/generated-elements.d.ts +29 -0
  326. package/dist/store/jsx/generated-elements.d.ts.map +1 -0
  327. package/dist/store/jsx/generated-elements.js +30 -0
  328. package/dist/store/jsx/generated-elements.js.map +1 -0
  329. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  330. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  331. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  332. package/dist/store/jsx/jsx.d.ts.map +1 -1
  333. package/dist/store/jsx/jsx.js +13 -12
  334. package/dist/store/jsx/jsx.js.map +1 -1
  335. package/dist/store/jsx/metadata.js +9 -9
  336. package/dist/store/jsx/metadata.js.map +1 -1
  337. package/dist/store/jsx/omitted-props.d.ts +2 -4
  338. package/dist/store/jsx/omitted-props.d.ts.map +1 -1
  339. package/dist/store/jsx/omitted-props.js +2 -4
  340. package/dist/store/jsx/omitted-props.js.map +1 -1
  341. package/dist/store/jsx/pipeline.d.ts +4 -2
  342. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  343. package/dist/store/jsx/pipeline.js +3 -2
  344. package/dist/store/jsx/pipeline.js.map +1 -1
  345. package/dist/store/jsx/props.d.ts +1 -7
  346. package/dist/store/jsx/props.d.ts.map +1 -1
  347. package/dist/store/jsx/props.js +16 -8
  348. package/dist/store/jsx/props.js.map +1 -1
  349. package/dist/store/jsx-store.d.ts +2 -3
  350. package/dist/store/jsx-store.d.ts.map +1 -1
  351. package/dist/store/jsx-store.js +3 -3
  352. package/dist/store/jsx-store.js.map +1 -1
  353. package/dist/store/resolve-store.d.ts +28 -0
  354. package/dist/store/resolve-store.d.ts.map +1 -0
  355. package/dist/store/resolve-store.js +65 -0
  356. package/dist/store/resolve-store.js.map +1 -0
  357. package/dist/store/store-fs.d.ts +5 -1
  358. package/dist/store/store-fs.d.ts.map +1 -1
  359. package/dist/store/store-fs.js +6 -4
  360. package/dist/store/store-fs.js.map +1 -1
  361. package/dist/writer/context.d.ts +2 -1
  362. package/dist/writer/context.d.ts.map +1 -1
  363. package/dist/writer/context.js +3 -0
  364. package/dist/writer/context.js.map +1 -1
  365. package/dist/writer/doc-tags.d.ts +21 -0
  366. package/dist/writer/doc-tags.d.ts.map +1 -0
  367. package/dist/writer/doc-tags.js +38 -0
  368. package/dist/writer/doc-tags.js.map +1 -0
  369. package/dist/writer/doc.d.ts +3 -1
  370. package/dist/writer/doc.d.ts.map +1 -1
  371. package/dist/writer/doc.js +19 -6
  372. package/dist/writer/doc.js.map +1 -1
  373. package/dist/writer/gtk-doc.d.ts +1 -1
  374. package/dist/writer/gtk-doc.d.ts.map +1 -1
  375. package/dist/writer/gtk-doc.js +64 -15
  376. package/dist/writer/gtk-doc.js.map +1 -1
  377. package/dist/writer/module.d.ts +8 -2
  378. package/dist/writer/module.d.ts.map +1 -1
  379. package/dist/writer/module.js +13 -1
  380. package/dist/writer/module.js.map +1 -1
  381. package/overrides/gdk/rgba.ts.ejs +26 -0
  382. package/overrides/gobject/object.ts.ejs +56 -11
  383. package/overrides/gobject/value.ts.ejs +7 -0
  384. package/overrides/graphene/structs.ts.ejs +55 -0
  385. package/package.json +7 -11
  386. package/src/analysis/descriptor-render.ts +67 -73
  387. package/src/analysis/descriptor.ts +13 -16
  388. package/src/analysis/inheritance.ts +35 -34
  389. package/src/analysis/nul-terminated-bytes.ts +31 -0
  390. package/src/analysis/param-capability.ts +172 -0
  391. package/src/analysis/param-structure.ts +90 -32
  392. package/src/analysis/ts-type.ts +4 -6
  393. package/src/analysis/type-shape.ts +24 -0
  394. package/src/compile.ts +3 -2
  395. package/src/docs/api-reference.ts +162 -28
  396. package/src/docs/element-page.ts +53 -47
  397. package/src/docs/handwritten-props.ts +230 -0
  398. package/src/docs/pipeline.ts +10 -10
  399. package/src/docs/render.ts +153 -39
  400. package/src/docs/symbol-page.ts +230 -80
  401. package/src/fingerprint.ts +8 -14
  402. package/src/gi.ts +4 -11
  403. package/src/gir/ancestry.ts +15 -1
  404. package/src/gir/annotations.ts +37 -0
  405. package/src/gir/callback.ts +2 -0
  406. package/src/gir/class.ts +42 -4
  407. package/src/gir/enum.ts +30 -10
  408. package/src/gir/field.ts +24 -13
  409. package/src/gir/function.ts +15 -0
  410. package/src/gir/gir-path.ts +7 -0
  411. package/src/gir/libraries.ts +23 -2
  412. package/src/gir/library.ts +51 -2
  413. package/src/gir/namespace.ts +41 -5
  414. package/src/gir/parameter.ts +47 -7
  415. package/src/gir/parse.ts +8 -2
  416. package/src/gir/primitives.ts +1 -0
  417. package/src/gir/property.ts +18 -3
  418. package/src/gir/record.ts +24 -2
  419. package/src/gir/size.ts +8 -6
  420. package/src/gir/type-id.ts +51 -7
  421. package/src/gir/type-ref.ts +2 -1
  422. package/src/gir/type.ts +50 -6
  423. package/src/index.ts +18 -16
  424. package/src/internal.ts +2 -0
  425. package/src/jsx.ts +26 -26
  426. package/src/khronos/args.ts +37 -14
  427. package/src/khronos/doc-context.ts +62 -0
  428. package/src/khronos/extensions.ts +85 -0
  429. package/src/khronos/jsdoc.ts +152 -56
  430. package/src/khronos/model.ts +314 -69
  431. package/src/khronos/modules.ts +134 -40
  432. package/src/khronos/notes.ts +74 -0
  433. package/src/khronos/param-pair.ts +1 -1
  434. package/src/khronos/pipeline.ts +95 -42
  435. package/src/khronos/plan.ts +12 -13
  436. package/src/khronos/render.ts +62 -50
  437. package/src/khronos/select.ts +91 -50
  438. package/src/react/element-config.ts +21 -18
  439. package/src/runner.ts +51 -40
  440. package/src/store/compile-store.ts +4 -5
  441. package/src/store/gi/callable-doc.ts +102 -0
  442. package/src/store/gi/callables.ts +23 -17
  443. package/src/store/gi/callback.ts +3 -2
  444. package/src/store/gi/class.ts +6 -3
  445. package/src/store/gi/closure-invocation.ts +26 -0
  446. package/src/store/gi/constant.ts +3 -6
  447. package/src/store/gi/constructor-props.ts +19 -23
  448. package/src/store/gi/doc-spec.ts +38 -0
  449. package/src/store/gi/enum.ts +55 -20
  450. package/src/store/gi/function.ts +44 -26
  451. package/src/store/gi/interface.ts +214 -26
  452. package/src/store/gi/item-comparators.ts +3 -5
  453. package/src/store/gi/method.ts +126 -68
  454. package/src/store/gi/param-marshal.ts +15 -1
  455. package/src/store/gi/pipeline.ts +7 -2
  456. package/src/store/gi/properties.ts +3 -2
  457. package/src/store/gi/property-accessor.ts +14 -11
  458. package/src/store/gi/record-constructor.ts +6 -1
  459. package/src/store/gi/record-field-accessor.ts +9 -13
  460. package/src/store/gi/record-layout.ts +1 -5
  461. package/src/store/gi/record.ts +8 -2
  462. package/src/store/gi/registration.ts +3 -3
  463. package/src/store/gi/return-wrap.ts +5 -5
  464. package/src/store/gi/runtime-override.ts +13 -6
  465. package/src/store/gi/signal.ts +36 -37
  466. package/src/store/gi/value-marshalable.ts +1 -10
  467. package/src/store/gi/vtable.ts +361 -60
  468. package/src/store/gi-store.ts +2 -4
  469. package/src/store/jsx/element-components.ts +8 -11
  470. package/src/store/jsx/element-prop-imports.ts +6 -5
  471. package/src/store/jsx/element-prop-types.ts +10 -2
  472. package/src/store/jsx/generated-elements.ts +60 -0
  473. package/src/store/jsx/intrinsic-elements.ts +4 -0
  474. package/src/store/jsx/jsx.ts +15 -13
  475. package/src/store/jsx/metadata.ts +10 -10
  476. package/src/store/jsx/omitted-props.ts +2 -4
  477. package/src/store/jsx/pipeline.ts +6 -4
  478. package/src/store/jsx/props.ts +22 -9
  479. package/src/store/jsx-store.ts +5 -7
  480. package/src/store/resolve-store.ts +100 -0
  481. package/src/store/store-fs.ts +12 -5
  482. package/src/writer/context.ts +5 -1
  483. package/src/writer/doc-tags.ts +70 -0
  484. package/src/writer/doc.ts +29 -6
  485. package/src/writer/gtk-doc.ts +82 -15
  486. package/src/writer/module.ts +25 -2
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/store/gi/interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirFunction } from \"../../gir/function.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { reservedSignalMemberRename, resolvePrerequisiteReference } from \"../../analysis/inheritance.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { renderBlock, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport {\n type Callables,\n dedupeCallables,\n generateBindings,\n type InstanceScope,\n instanceScope,\n renderClassInstanceMember,\n renderInstanceMethodSignature,\n renderStaticHead,\n} from \"./callables.js\";\nimport { renderSourceGtype } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport {\n type PropertyAccessorArgs,\n renderPropertyAccessor,\n renderPropertyAccessorSignature,\n} from \"./property-accessor.js\";\nimport { appendInterfaceRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport { renderVfuncMetadata } from \"./vtable.js\";\n\ntype InterfaceMemberRenderers = {\n renderMethod: (\n context: ModuleContext,\n callable: GirFunction,\n scope: InstanceScope,\n nameOverride?: string,\n ) => string | undefined;\n renderProperty: (args: PropertyAccessorArgs) => string | undefined;\n};\n\ntype MethodMemberOptions = {\n context: ModuleContext;\n className: string;\n scope: InstanceScope;\n callables: Callables;\n renderers: InterfaceMemberRenderers;\n claimedNames: Set<string>;\n};\n\ntype PropertyMemberOptions = {\n context: ModuleContext;\n iface: GirClass;\n scope: InstanceScope;\n renderers: InterfaceMemberRenderers;\n claimedNames: Set<string>;\n};\n\nconst generateInterface = (context: ModuleContext, iface: GirClass): void => {\n if (!iface.introspectable) {\n return;\n }\n\n if (iface.name.length === 0) {\n return;\n }\n\n const className = pascalCase(iface.name);\n\n const callables: Callables = {\n constructors: dedupeCallables(iface.constructors),\n functions: dedupeCallables(iface.functions),\n methods: dedupeCallables(iface.methods),\n };\n\n generateBindings(context, callables);\n const gtypeExpr = renderSourceGtype(context, iface);\n context.module.appendDeclaration(renderInterfaceType(context, iface, className, callables));\n context.module.appendDeclaration(renderInterfaceClass(context, className, callables, gtypeExpr));\n\n for (const declaration of renderSignalDeclarations(context, iface, className, true)) {\n context.module.appendDeclaration(declaration);\n }\n\n context.module.appendDeclaration(renderInterfaceMaker(context, iface, className, callables));\n\n appendInterfaceRegistration(context, {\n className,\n makerName: makerName(className),\n gtypeExpr,\n vfuncs: renderVfuncMetadata(context, iface),\n });\n};\n\nconst makerName = (className: string): string => `make${className}`;\n\nconst interfaceTypeExtends = (context: ModuleContext, iface: GirClass): string => {\n const refs = iface.prerequisites\n .map((name) => resolvePrerequisiteReference(context, name))\n .filter((entry): entry is string => entry !== undefined);\n\n if (refs.length > 0) {\n return refs.join(\", \");\n }\n\n return context.qualify(\"GObject\", \"Object\");\n};\n\nconst renderInterfaceType = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n const members = renderInterfaceTypeMembers(context, iface, callables);\n\n return `${renderJsDoc(iface.doc)}${renderBracedOrEmpty(\n `export interface ${className} extends ${interfaceTypeExtends(context, iface)}`,\n members.join(\"\\n\"),\n )}`;\n};\n\nconst collectMethodMembers = (options: MethodMemberOptions): string[] => {\n const { context, className, scope, callables, renderers, claimedNames } = options;\n const members: string[] = [];\n\n for (const callable of callables.methods) {\n const rename = reservedSignalMemberRename(className, callable);\n const block = renderers.renderMethod(context, callable, scope, rename);\n\n if (block === undefined) {\n continue;\n }\n\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n\n return members;\n};\n\nconst collectPropertyMembers = (options: PropertyMemberOptions): string[] => {\n const { context, iface, scope, renderers, claimedNames } = options;\n const members: string[] = [];\n\n for (const property of iface.properties) {\n const block = renderers.renderProperty({ context, property, claimedNames, methodByName: scope.methodByName });\n\n if (block !== undefined) {\n members.push(block);\n }\n }\n\n return members;\n};\n\nconst renderInterfaceMembers = (\n context: ModuleContext,\n iface: GirClass,\n callables: Callables,\n renderers: InterfaceMemberRenderers,\n): string[] => {\n const className = pascalCase(iface.name);\n const scope = instanceScope(className, callables);\n const claimedNames: Set<string> = new Set();\n const methodMembers = collectMethodMembers({ context, className, scope, callables, renderers, claimedNames });\n const propertyMembers = collectPropertyMembers({ context, iface, scope, renderers, claimedNames });\n\n return [...methodMembers, ...propertyMembers];\n};\n\nconst renderInterfaceTypeMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] =>\n renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderInstanceMethodSignature,\n renderProperty: renderPropertyAccessorSignature,\n });\n\nconst renderInterfaceClass = (\n context: ModuleContext,\n className: string,\n callables: Callables,\n gtypeExpr: string | undefined,\n): string => {\n const members: string[] = [];\n\n if (gtypeExpr !== undefined) {\n members.push(renderInterfaceHasInstance(context, className, gtypeExpr));\n }\n\n members.push(...renderStaticHead(context, callables, className));\n\n return renderBracedOrEmpty(`export abstract class ${className}`, members.join(\"\\n\\n\"));\n};\n\nconst renderInterfaceHasInstance = (context: ModuleContext, className: string, gtypeExpr: string): string => {\n context.addRuntimeImport(\"valueIsA\");\n\n return renderBlock(\n `static [Symbol.hasInstance](value: unknown): value is ${className}`,\n `return valueIsA(value, ${gtypeExpr});`,\n );\n};\n\nconst renderInterfaceMaker = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n context.addRuntimeTypeImport(\"Mixin\");\n const members = renderInterfaceInstanceMembers(context, iface, callables);\n const classExpression = renderBracedOrEmpty(\"class extends Base\", members.join(\"\\n\\n\"));\n\n return `export const ${makerName(className)}: Mixin = (Base) =>\\n${classExpression};`;\n};\n\nconst renderInterfaceInstanceMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] => [\n ...renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderClassInstanceMember,\n renderProperty: renderPropertyAccessor,\n }),\n ...renderSignalMembers(context, iface),\n];\n\nexport { generateInterface };\n"]}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/store/gi/interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase, sourceStringLiteral } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirProperty } from \"../../gir/property.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { reservedSignalMemberRename, resolvePrerequisiteReference } from \"../../analysis/inheritance.js\";\nimport { resolveInterfaces } from \"../../gir/ancestry.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { renderBlock, renderBraced, renderBracedOrEmpty } from \"../../writer/emit.js\";\nimport {\n type Callables,\n dedupeCallables,\n generateBindings,\n type InstanceMemberRenderer,\n type InstanceScope,\n instanceScope,\n isEmittableCallable,\n renderClassInstanceMember,\n renderInstanceMethodSignature,\n renderStaticHead,\n} from \"./callables.js\";\nimport { annotationSpec, getDoc } from \"./doc-spec.js\";\nimport { renderSourceGtype } from \"./gtype-binding.js\";\nimport { methodExportName } from \"./method.js\";\nimport {\n type PropertyAccessorArgs,\n renderPropertyAccessor,\n renderPropertyAccessorSignature,\n} from \"./property-accessor.js\";\nimport { appendInterfaceRegistration } from \"./registration.js\";\nimport { renderSignalDeclarations, renderSignalMembers } from \"./signal.js\";\nimport {\n hasCallableVfuncSlots,\n renderVfuncMembers,\n renderVfuncMetadata,\n type VfuncMemberMode,\n} from \"./vtable.js\";\n\ntype InterfaceMemberRenderers = {\n renderMethod: InstanceMemberRenderer;\n renderProperty: (args: PropertyAccessorArgs) => string | undefined;\n};\n\ntype MethodMemberOptions = {\n context: ModuleContext;\n className: string;\n scope: InstanceScope;\n callables: Callables;\n renderers: InterfaceMemberRenderers;\n claimedNames: Set<string>;\n};\n\ntype PropertyMemberOptions = {\n context: ModuleContext;\n iface: GirClass;\n scope: InstanceScope;\n renderers: InterfaceMemberRenderers;\n claimedNames: Set<string>;\n};\n\ntype InterfaceClassOptions = {\n iface: GirClass;\n className: string;\n callables: Callables;\n gtypeExpr: string | undefined;\n implRef: string;\n};\n\nconst BRAND_NOTE = [\n \"Phantom link to the type a class fills to adopt the interface, which `registerClass` reads\",\n \"through its `implements` option. It holds no value at runtime. `unknown` asks nothing of the\",\n \"class, which is what an interface with no slot to fill carries.\",\n].join(\"\\n\");\n\nconst generateInterface = (context: ModuleContext, iface: GirClass): void => {\n if (!iface.introspectable) {\n return;\n }\n\n if (iface.name.length === 0) {\n return;\n }\n\n const className = pascalCase(iface.name);\n\n const callables: Callables = {\n constructors: dedupeCallables(iface.constructors),\n functions: dedupeCallables(iface.functions),\n methods: dedupeCallables(iface.methods),\n };\n\n generateBindings(context, callables);\n const gtypeExpr = renderSourceGtype(context, iface);\n const implRef = appendInterfaceTypes(context, iface, className, callables) ?? \"unknown\";\n const classCode = renderInterfaceClass(context, { iface, className, callables, gtypeExpr, implRef });\n context.module.appendDeclaration(classCode, context.declaredType(className));\n\n for (const declaration of renderSignalDeclarations(context, iface, className, true)) {\n context.module.appendDeclaration(declaration);\n }\n\n context.module.appendDeclaration(renderInterfaceMaker(context, iface, className, callables));\n\n appendInterfaceRegistration(context, {\n className,\n makerName: makerName(className),\n gtypeExpr,\n layout: renderInterfaceLayout(context, iface, callables),\n });\n};\n\nconst makerName = (className: string): string => `make${className}`;\n\nconst renderInterfaceLayout = (\n context: ModuleContext,\n iface: GirClass,\n callables: Callables,\n): string | undefined => {\n const vfuncs = renderVfuncMetadata(context, iface);\n const properties = renderSlotBackedProperties(context, iface, callables);\n\n if (vfuncs === undefined && properties === undefined) {\n return undefined;\n }\n\n const entries: string[] = [];\n\n if (vfuncs !== undefined) {\n entries.push(`vfuncs: ${vfuncs},`);\n }\n\n if (properties !== undefined) {\n entries.push(`properties: ${properties},`);\n }\n\n return renderBraced(entries.join(\"\\n\"));\n};\n\nconst invokerMembers = (context: ModuleContext, iface: GirClass, callables: Callables): Map<string, string> => {\n const className = pascalCase(iface.name);\n\n const invokers: Set<string> = new Set(\n iface.vfuncs.map((vfunc) => vfunc.invoker).filter((invoker) => invoker !== undefined),\n );\n\n const members: Map<string, string> = new Map();\n\n for (const callable of callables.methods) {\n if (invokers.has(callable.name) && isEmittableCallable(context, callable)) {\n members.set(callable.name, reservedSignalMemberRename(className, callable) ?? methodExportName(callable));\n }\n }\n\n return members;\n};\n\nconst renderSlotAccessor = (\n key: string,\n method: string | undefined,\n members: Map<string, string>,\n): string | undefined => {\n const member = method === undefined ? undefined : members.get(method);\n\n return member === undefined ? undefined : `${key}: ${sourceStringLiteral(member)},`;\n};\n\nconst renderSlotBackedProperty = (property: GirProperty, members: Map<string, string>): string | undefined => {\n if (!property.introspectable) {\n return undefined;\n }\n\n const fields = [\n renderSlotAccessor(\"getter\", property.getter, members),\n renderSlotAccessor(\"setter\", property.setter, members),\n ].filter((field) => field !== undefined);\n\n if (fields.length === 0) {\n return undefined;\n }\n\n return `${sourceStringLiteral(property.name)}: ${renderBraced(fields.join(\"\\n\"))},`;\n};\n\nconst renderSlotBackedProperties = (\n context: ModuleContext,\n iface: GirClass,\n callables: Callables,\n): string | undefined => {\n const members = invokerMembers(context, iface, callables);\n\n const entries = iface.properties\n .map((property) => renderSlotBackedProperty(property, members))\n .filter((entry) => entry !== undefined);\n\n return entries.length === 0 ? undefined : renderBraced(entries.join(\"\\n\"));\n};\n\nconst appendInterfaceTypes = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string | undefined => {\n const typeCode = renderInterfaceType(context, iface, className, callables);\n context.module.appendDeclaration(typeCode, context.declaredType(className));\n const implType = renderInterfaceImplType(context, iface, className);\n\n if (implType === undefined) {\n return undefined;\n }\n\n const implName = implTypeName(className);\n context.module.appendDeclaration(implType, context.declaredType(className, implName));\n\n return implName;\n};\n\nconst interfaceTypeExtends = (context: ModuleContext, iface: GirClass): string => {\n const refs = iface.prerequisites\n .map((name) => resolvePrerequisiteReference(context, name))\n .filter((entry): entry is string => entry !== undefined);\n\n if (refs.length > 0) {\n return refs.join(\", \");\n }\n\n return context.qualify(\"GObject\", \"Object\");\n};\n\nconst renderInterfaceType = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n const members = renderInterfaceTypeMembers(context, iface, callables);\n\n return `${getDoc(iface)}${renderBracedOrEmpty(\n `export interface ${className} extends ${interfaceTypeExtends(context, iface)}`,\n members.join(\"\\n\"),\n )}`;\n};\n\nconst implTypeName = (className: string): string => `${className}Impl`;\n\nconst implTypeNote = (className: string): string =>\n [\n `Implementer side of \\`${className}\\`: the vtable slots a class fills to adopt the interface.`,\n \"\",\n `Declare it with \\`implements ${implTypeName(className)}\\` on a class passed to \\`registerClass\\``,\n `with \\`${className}\\` in \\`implements\\`. The interface's methods, properties, and signals come from`,\n \"GLib dispatch, so they are not part of this type.\",\n \"\",\n \"Every slot is optional: an unfilled one keeps whatever the interface installs by default, and a\",\n \"GIR update can add one. Declaring a slot pins its signature; declaring it as a class field rather\",\n \"than a method satisfies this type but never reaches the vtable.\",\n ].join(\"\\n\");\n\nconst implPrerequisiteRefs = (context: ModuleContext, iface: GirClass): string[] => {\n const prerequisites = resolveInterfaces(context.library, context.namespace.name, iface.prerequisites);\n const refs: string[] = [];\n\n for (const prerequisite of prerequisites) {\n if (!hasCallableVfuncSlots(context, prerequisite.namespaceName, prerequisite.klass)) {\n continue;\n }\n\n const name = implTypeName(pascalCase(prerequisite.klass.name));\n refs.push(context.qualify(prerequisite.namespaceName, name));\n }\n\n return refs;\n};\n\nconst implTypeExtends = (context: ModuleContext, iface: GirClass): string => {\n const refs = implPrerequisiteRefs(context, iface);\n\n return refs.length > 0 ? ` extends ${refs.join(\", \")}` : \"\";\n};\n\nconst interfaceVfuncMembers = (context: ModuleContext, iface: GirClass, mode: VfuncMemberMode): string[] =>\n renderVfuncMembers({ context, klass: iface, mode });\n\nconst renderInterfaceImplType = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n): string | undefined => {\n const members = interfaceVfuncMembers(context, iface, \"requirement\");\n\n if (members.length === 0) {\n return undefined;\n }\n\n return `${renderJsDoc(iface.doc, implTypeNote(className), annotationSpec(iface.annotations))}${renderBracedOrEmpty(\n `export interface ${implTypeName(className)}${implTypeExtends(context, iface)}`,\n members.join(\"\\n\"),\n )}`;\n};\n\nconst collectMethodMembers = (options: MethodMemberOptions): string[] => {\n const { context, className, scope, callables, renderers, claimedNames } = options;\n const members: string[] = [];\n\n for (const callable of callables.methods) {\n const rename = reservedSignalMemberRename(className, callable);\n const block = renderers.renderMethod(context, callable, scope, rename);\n\n if (block === undefined) {\n continue;\n }\n\n members.push(block);\n claimedNames.add(rename ?? methodExportName(callable));\n }\n\n return members;\n};\n\nconst collectPropertyMembers = (options: PropertyMemberOptions): string[] => {\n const { context, iface, scope, renderers, claimedNames } = options;\n const members: string[] = [];\n\n for (const property of iface.properties) {\n const block = renderers.renderProperty({ context, property, claimedNames, methodByName: scope.methodByName });\n\n if (block !== undefined) {\n members.push(block);\n }\n }\n\n return members;\n};\n\nconst renderInterfaceMembers = (\n context: ModuleContext,\n iface: GirClass,\n callables: Callables,\n renderers: InterfaceMemberRenderers,\n): string[] => {\n const className = pascalCase(iface.name);\n const scope = instanceScope(className, callables);\n const claimedNames: Set<string> = new Set();\n const methodMembers = collectMethodMembers({ context, className, scope, callables, renderers, claimedNames });\n const propertyMembers = collectPropertyMembers({ context, iface, scope, renderers, claimedNames });\n\n return [...methodMembers, ...propertyMembers];\n};\n\nconst renderInterfaceTypeMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] => [\n ...renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderInstanceMethodSignature,\n renderProperty: renderPropertyAccessorSignature,\n }),\n ...interfaceVfuncMembers(context, iface, \"signature\"),\n];\n\nconst renderInterfaceClass = (context: ModuleContext, options: InterfaceClassOptions): string => {\n const { iface, className, callables, gtypeExpr, implRef } = options;\n const members: string[] = [];\n\n if (gtypeExpr !== undefined) {\n members.push(renderInterfaceHasInstance(context, className, gtypeExpr));\n }\n\n members.push(...renderStaticHead(context, callables, className), renderInterfaceBrand(context, implRef));\n\n return `${getDoc(iface)}${renderBracedOrEmpty(\n `export abstract class ${className}`,\n members.join(\"\\n\\n\"),\n )}`;\n};\n\nconst renderInterfaceBrand = (context: ModuleContext, implRef: string): string => {\n context.addRuntimeTypeImport(\"Interface\");\n\n return `${renderJsDoc(undefined, BRAND_NOTE)}declare static __impl__: Interface<${implRef}>[\"__impl__\"];`;\n};\n\nconst renderInterfaceHasInstance = (context: ModuleContext, className: string, gtypeExpr: string): string => {\n context.addRuntimeImport(\"valueIsA\");\n\n return renderBlock(\n `static [Symbol.hasInstance](value: unknown): value is ${className}`,\n `return valueIsA(value, ${gtypeExpr});`,\n );\n};\n\nconst renderInterfaceMaker = (\n context: ModuleContext,\n iface: GirClass,\n className: string,\n callables: Callables,\n): string => {\n context.addRuntimeTypeImport(\"Mixin\");\n const members = renderInterfaceInstanceMembers(context, iface, callables);\n const classExpression = renderBracedOrEmpty(\"class extends Base\", members.join(\"\\n\\n\"));\n\n return `${getDoc(iface)}export const ${makerName(className)}: Mixin = (Base) =>\\n${classExpression};`;\n};\n\nconst renderInterfaceInstanceMembers = (context: ModuleContext, iface: GirClass, callables: Callables): string[] => [\n ...renderInterfaceMembers(context, iface, callables, {\n renderMethod: renderClassInstanceMember,\n renderProperty: renderPropertyAccessor,\n }),\n ...interfaceVfuncMembers(context, iface, \"implementation\"),\n ...renderSignalMembers(context, iface),\n];\n\nexport { generateInterface };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"item-comparators.d.ts","sourceRoot":"","sources":["../../../src/store/gi/item-comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAsF7D,QAAA,MAAM,4BAA4B,GAC9B,SAAS,aAAa,EACtB,IAAI,WAAW,EACf,WAAW,YAAY,KACxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAiBxB,CAAC;AAEF,QAAA,MAAM,oBAAoB,GACtB,SAAS,aAAa,EACtB,IAAI,WAAW,EACf,WAAW,YAAY,KACxB,MAAM,GAAG,SAmBX,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"item-comparators.d.ts","sourceRoot":"","sources":["../../../src/store/gi/item-comparators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAoF7D,QAAA,MAAM,4BAA4B,GAC9B,SAAS,aAAa,EACtB,IAAI,WAAW,EACf,WAAW,YAAY,KACxB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAiBxB,CAAC;AAEF,QAAA,MAAM,oBAAoB,GACtB,SAAS,aAAa,EACtB,IAAI,WAAW,EACf,WAAW,YAAY,KACxB,MAAM,GAAG,SAmBX,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { tObject } from "../../analysis/descriptor.js";
2
2
  import { inputParameters, parameterIdentifier } from "../../analysis/param-structure.js";
3
3
  import { renderTsType } from "../../analysis/ts-type.js";
4
- import { resolveInterface } from "../../gir/ancestry.js";
4
+ import { resolveInterfaces } from "../../gir/ancestry.js";
5
5
  import { callbackAsFunction } from "../../gir/callback.js";
6
6
  const COMPARATOR_CALLBACK_TYPES = new Set([
7
7
  "GLib.CompareFunc",
@@ -19,10 +19,8 @@ const isListModelImplementor = (context, ref) => {
19
19
  if (resolved?.kind !== "class") {
20
20
  return false;
21
21
  }
22
- return resolved.value.implements.some((interfaceName) => {
23
- const iface = resolveInterface(context.library, resolved.namespace.name, interfaceName);
24
- return iface?.namespaceName === "Gio" && iface.klass.name === "ListModel";
25
- });
22
+ const interfaces = resolveInterfaces(context.library, resolved.namespace.name, resolved.value.implements);
23
+ return interfaces.some((iface) => iface.namespaceName === "Gio" && iface.klass.name === "ListModel");
26
24
  };
27
25
  const isObjectItemComparator = (context, fn) => {
28
26
  const ownerRef = fn.instance?.type ?? fn.returnValue.type;
@@ -1 +1 @@
1
- {"version":3,"file":"item-comparators.js","sourceRoot":"","sources":["../../../src/store/gi/item-comparators.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GirFunction } from \"../../gir/function.js\";\nimport type { GirParameter } from \"../../gir/parameter.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { tObject } from \"../../analysis/descriptor.js\";\nimport { inputParameters, parameterIdentifier } from \"../../analysis/param-structure.js\";\nimport { renderTsType } from \"../../analysis/ts-type.js\";\nimport { resolveInterface } from \"../../gir/ancestry.js\";\nimport { callbackAsFunction, type GirCallback } from \"../../gir/callback.js\";\n\nconst COMPARATOR_CALLBACK_TYPES = new Set([\n \"GLib.CompareFunc\",\n \"GLib.CompareDataFunc\",\n \"GLib.EqualFunc\",\n \"GLib.EqualFuncFull\",\n]);\n\nconst OBJECT_ITEM_COMPARATOR_OWNERS = new Set([\"Gtk.CustomSorter\"]);\n\nconst qualifiedName = (context: ModuleContext, ref: TypeId): string | undefined => {\n const name = context.library.nameFor(ref);\n\n return name === undefined ? undefined : `${name.namespaceName}.${name.typeName}`;\n};\n\nconst isListModelImplementor = (context: ModuleContext, ref: TypeId): boolean => {\n const resolved = context.library.typeFor(ref);\n\n if (resolved?.kind !== \"class\") {\n return false;\n }\n\n return resolved.value.implements.some((interfaceName) => {\n const iface = resolveInterface(context.library, resolved.namespace.name, interfaceName);\n\n return iface?.namespaceName === \"Gio\" && iface.klass.name === \"ListModel\";\n });\n};\n\nconst isObjectItemComparator = (context: ModuleContext, fn: GirFunction): boolean => {\n const ownerRef = fn.instance?.type ?? fn.returnValue.type;\n\n if (ownerRef === undefined) {\n return false;\n }\n\n const owner = qualifiedName(context, ownerRef);\n\n if (owner !== undefined && OBJECT_ITEM_COMPARATOR_OWNERS.has(owner)) {\n return true;\n }\n\n return isListModelImplementor(context, ownerRef);\n};\n\nconst isItemPointer = (context: ModuleContext, ref: TypeId | undefined): boolean => {\n if (ref === undefined) {\n return false;\n }\n\n const resolved = context.library.typeFor(ref);\n\n return resolved?.kind === \"primitive\" && resolved.category === \"pointer\";\n};\n\nconst itemComparatorCallback = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): GirCallback | undefined => {\n if (parameter.type === undefined) {\n return undefined;\n }\n\n const resolved = context.library.typeFor(parameter.type);\n\n if (resolved?.kind !== \"callback\") {\n return undefined;\n }\n\n const name = qualifiedName(context, parameter.type);\n\n if (name === undefined || !COMPARATOR_CALLBACK_TYPES.has(name)) {\n return undefined;\n }\n\n return isObjectItemComparator(context, fn) ? resolved.value : undefined;\n};\n\nconst itemComparatorArgDescriptors = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): Map<number, string> | undefined => {\n const callback = itemComparatorCallback(context, fn, parameter);\n\n if (callback === undefined) {\n return undefined;\n }\n\n const overrides: Map<number, string> = new Map();\n const items = inputParameters(context.library, callbackAsFunction(callback));\n\n for (const { parameter: item, index } of items) {\n if (isItemPointer(context, item.type)) {\n overrides.set(index, tObject(\"borrowed\"));\n }\n }\n\n return overrides.size > 0 ? overrides : undefined;\n};\n\nconst itemComparatorTsType = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): string | undefined => {\n const callback = itemComparatorCallback(context, fn, parameter);\n\n if (callback === undefined) {\n return undefined;\n }\n\n const itemType = `${context.qualify(\"GObject\", \"Object\")} | null`;\n\n const args = inputParameters(context.library, callbackAsFunction(callback)).map(({ parameter: item, index }) => {\n const tsType = isItemPointer(context, item.type) ? itemType : renderTsType(context, item.type, item.nullable);\n\n return `${parameterIdentifier(item, index)}: ${tsType}`;\n });\n\n const returnType = renderTsType(context, callback.returnValue.type, callback.returnValue.nullable);\n const fnType = `(${args.join(\", \")}) => ${returnType}`;\n\n return parameter.nullable ? `(${fnType}) | null` : fnType;\n};\n\nexport { itemComparatorArgDescriptors, itemComparatorTsType };\n"]}
1
+ {"version":3,"file":"item-comparators.js","sourceRoot":"","sources":["../../../src/store/gi/item-comparators.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GirFunction } from \"../../gir/function.js\";\nimport type { GirParameter } from \"../../gir/parameter.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { ModuleContext } from \"../../writer/context.js\";\nimport { tObject } from \"../../analysis/descriptor.js\";\nimport { inputParameters, parameterIdentifier } from \"../../analysis/param-structure.js\";\nimport { renderTsType } from \"../../analysis/ts-type.js\";\nimport { resolveInterfaces } from \"../../gir/ancestry.js\";\nimport { callbackAsFunction, type GirCallback } from \"../../gir/callback.js\";\n\nconst COMPARATOR_CALLBACK_TYPES = new Set([\n \"GLib.CompareFunc\",\n \"GLib.CompareDataFunc\",\n \"GLib.EqualFunc\",\n \"GLib.EqualFuncFull\",\n]);\n\nconst OBJECT_ITEM_COMPARATOR_OWNERS = new Set([\"Gtk.CustomSorter\"]);\n\nconst qualifiedName = (context: ModuleContext, ref: TypeId): string | undefined => {\n const name = context.library.nameFor(ref);\n\n return name === undefined ? undefined : `${name.namespaceName}.${name.typeName}`;\n};\n\nconst isListModelImplementor = (context: ModuleContext, ref: TypeId): boolean => {\n const resolved = context.library.typeFor(ref);\n\n if (resolved?.kind !== \"class\") {\n return false;\n }\n\n const interfaces = resolveInterfaces(context.library, resolved.namespace.name, resolved.value.implements);\n\n return interfaces.some((iface) => iface.namespaceName === \"Gio\" && iface.klass.name === \"ListModel\");\n};\n\nconst isObjectItemComparator = (context: ModuleContext, fn: GirFunction): boolean => {\n const ownerRef = fn.instance?.type ?? fn.returnValue.type;\n\n if (ownerRef === undefined) {\n return false;\n }\n\n const owner = qualifiedName(context, ownerRef);\n\n if (owner !== undefined && OBJECT_ITEM_COMPARATOR_OWNERS.has(owner)) {\n return true;\n }\n\n return isListModelImplementor(context, ownerRef);\n};\n\nconst isItemPointer = (context: ModuleContext, ref: TypeId | undefined): boolean => {\n if (ref === undefined) {\n return false;\n }\n\n const resolved = context.library.typeFor(ref);\n\n return resolved?.kind === \"primitive\" && resolved.category === \"pointer\";\n};\n\nconst itemComparatorCallback = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): GirCallback | undefined => {\n if (parameter.type === undefined) {\n return undefined;\n }\n\n const resolved = context.library.typeFor(parameter.type);\n\n if (resolved?.kind !== \"callback\") {\n return undefined;\n }\n\n const name = qualifiedName(context, parameter.type);\n\n if (name === undefined || !COMPARATOR_CALLBACK_TYPES.has(name)) {\n return undefined;\n }\n\n return isObjectItemComparator(context, fn) ? resolved.value : undefined;\n};\n\nconst itemComparatorArgDescriptors = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): Map<number, string> | undefined => {\n const callback = itemComparatorCallback(context, fn, parameter);\n\n if (callback === undefined) {\n return undefined;\n }\n\n const overrides: Map<number, string> = new Map();\n const items = inputParameters(context.library, callbackAsFunction(callback));\n\n for (const { parameter: item, index } of items) {\n if (isItemPointer(context, item.type)) {\n overrides.set(index, tObject(\"borrowed\"));\n }\n }\n\n return overrides.size > 0 ? overrides : undefined;\n};\n\nconst itemComparatorTsType = (\n context: ModuleContext,\n fn: GirFunction,\n parameter: GirParameter,\n): string | undefined => {\n const callback = itemComparatorCallback(context, fn, parameter);\n\n if (callback === undefined) {\n return undefined;\n }\n\n const itemType = `${context.qualify(\"GObject\", \"Object\")} | null`;\n\n const args = inputParameters(context.library, callbackAsFunction(callback)).map(({ parameter: item, index }) => {\n const tsType = isItemPointer(context, item.type) ? itemType : renderTsType(context, item.type, item.nullable);\n\n return `${parameterIdentifier(item, index)}: ${tsType}`;\n });\n\n const returnType = renderTsType(context, callback.returnValue.type, callback.returnValue.nullable);\n const fnType = `(${args.join(\", \")}) => ${returnType}`;\n\n return parameter.nullable ? `(${fnType}) | null` : fnType;\n};\n\nexport { itemComparatorArgDescriptors, itemComparatorTsType };\n"]}
@@ -1,5 +1,7 @@
1
1
  import type { GirFunction } from "../../gir/function.js";
2
2
  import type { ModuleContext } from "../../writer/context.js";
3
+ import { type InputParameter } from "../../analysis/param-structure.js";
4
+ import { type GirParameter } from "../../gir/parameter.js";
3
5
  type WriteMethodBodyOptions = {
4
6
  bindingExpression: string;
5
7
  returnTypeOverride?: string | undefined;
@@ -10,6 +12,7 @@ type CallArgPlan = {
10
12
  };
11
13
  declare const methodExportName: (fn: GirFunction) => string;
12
14
  declare const renderMethodSignature: (context: ModuleContext, fn: GirFunction) => string;
15
+ declare const returnedOutParameters: (context: ModuleContext, fn: GirFunction) => InputParameter[];
13
16
  declare const renderMethodReturnType: (context: ModuleContext, fn: GirFunction) => string;
14
17
  declare const renderPromisifiedBody: (context: ModuleContext, asyncFn: GirFunction, finishExpression: string, bindingExpression: string) => string;
15
18
  declare const finishCallExpression: (asyncFn: GirFunction, finishFn: GirFunction, ownerName: string) => string;
@@ -17,8 +20,13 @@ declare const renderPromisifiedSignature: (context: ModuleContext, asyncFn: GirF
17
20
  signature: string;
18
21
  returnType: string;
19
22
  };
23
+ declare const isCallbackParameter: (context: ModuleContext, parameter: GirParameter) => boolean;
20
24
  declare const renderMethodBody: (context: ModuleContext, fn: GirFunction, options: WriteMethodBodyOptions) => string;
21
25
  declare const renderReturnDescriptor: (context: ModuleContext, fn: GirFunction) => string;
22
26
  declare const planCallArgs: (context: ModuleContext, fn: GirFunction) => CallArgPlan[];
23
- export { methodExportName, renderMethodSignature, renderMethodReturnType, renderPromisifiedBody, finishCallExpression, renderPromisifiedSignature, renderMethodBody, renderReturnDescriptor, planCallArgs, };
27
+ declare const constructibleName: (context: ModuleContext, ref: GirParameter["type"]) => {
28
+ namespaceName: string;
29
+ typeName: string;
30
+ } | undefined;
31
+ export { constructibleName, isCallbackParameter, methodExportName, renderMethodSignature, renderMethodReturnType, returnedOutParameters, renderPromisifiedBody, finishCallExpression, renderPromisifiedSignature, renderMethodBody, renderReturnDescriptor, planCallArgs, };
24
32
  //# sourceMappingURL=method.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../src/store/gi/method.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA+B7D,KAAK,sBAAsB,GAAG;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAsBF,QAAA,MAAM,gBAAgB,GAAI,IAAI,WAAW,KAAG,MAA4B,CAAC;AAQzE,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAMpE,CAAC;AA0CN,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAezE,CAAC;AAuDF,QAAA,MAAM,qBAAqB,GACvB,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,kBAAkB,MAAM,EACxB,mBAAmB,MAAM,KAC1B,MAuBF,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAI,SAAS,WAAW,EAAE,UAAU,WAAW,EAAE,WAAW,MAAM,KAAG,MAGtC,CAAC;AA2B1D,QAAA,MAAM,0BAA0B,GAC5B,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,UAAU,WAAW,KACtB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAWzC,CAAC;AAeF,QAAA,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,EAAE,SAAS,sBAAsB,KAAG,MAWpG,CAAC;AAoBF,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAQzE,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,WAAW,EAgC1E,CAAC;AA+QF,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,CAAC"}
1
+ {"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../src/store/gi/method.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,EAMH,KAAK,cAAc,EAGtB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,KAAK,YAAY,EAA0D,MAAM,wBAAwB,CAAC;AAyBnH,KAAK,sBAAsB,GAAG;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAAC;AAsBF,QAAA,MAAM,gBAAgB,GAAI,IAAI,WAAW,KAAG,MAA4B,CAAC;AAQzE,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAInE,CAAC;AA2DP,QAAA,MAAM,qBAAqB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,cAAc,EAWtF,CAAC;AAEF,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAczE,CAAC;AAuDF,QAAA,MAAM,qBAAqB,GACvB,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,kBAAkB,MAAM,EACxB,mBAAmB,MAAM,KAC1B,MAuBF,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAI,SAAS,WAAW,EAAE,UAAU,WAAW,EAAE,WAAW,MAAM,KAAG,MAGtC,CAAC;AA2B1D,QAAA,MAAM,0BAA0B,GAC5B,SAAS,aAAa,EACtB,SAAS,WAAW,EACpB,UAAU,WAAW,KACtB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CASzC,CAAC;AAKF,QAAA,MAAM,mBAAmB,GAAI,SAAS,aAAa,EAAE,WAAW,YAAY,KAAG,OAQ9E,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,EAAE,SAAS,sBAAsB,KAAG,MAWpG,CAAC;AAoBF,QAAA,MAAM,sBAAsB,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,MAQzE,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,SAAS,aAAa,EAAE,IAAI,WAAW,KAAG,WAAW,EAgC1E,CAAC;AA8FF,QAAA,MAAM,iBAAiB,GACnB,SAAS,aAAa,EACtB,KAAK,YAAY,CAAC,MAAM,CAAC,KAC1B;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAehD,CAAC;AAiLF,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,GACf,CAAC"}
@@ -4,69 +4,96 @@ import { arrayLengthSources, closureAndDestroyIndices, emittedArgIndices, folded
4
4
  import { renderTsType } from "../../analysis/ts-type.js";
5
5
  import { isCallerAllocatedOut, isInoutParameter, isOutParameter } from "../../gir/parameter.js";
6
6
  import { hasUnknownArrayLength } from "../../gir/type-id.js";
7
+ import { areClosuresInvoked } from "./closure-invocation.js";
7
8
  import { itemComparatorArgDescriptors, itemComparatorTsType } from "./item-comparators.js";
8
- import { isCollectibleCallerOut, isHandlePassedInPlace, isHandlePassing } from "./param-marshal.js";
9
+ import { isClosureType, isCollectibleCallerOut, isHandlePassedInPlace, isHandlePassing } from "./param-marshal.js";
9
10
  const methodExportName = (fn) => camelCase(fn.name);
10
11
  const arrayLengthArgument = (source, sourceIndex) => {
11
12
  const identifier = parameterIdentifier(source, sourceIndex);
12
13
  return source.nullable || source.optional ? `(${identifier}?.length ?? 0)` : `${identifier}.length`;
13
14
  };
14
- const renderMethodSignature = (context, fn) => renderInputParameters(context, fn, () => false, () => false);
15
- const parameterAnnotation = (context, fn, parameter) => itemComparatorTsType(context, fn, parameter) ?? renderTsType(context, parameter.type, parameter.nullable);
15
+ const renderMethodSignature = (context, fn) => renderInputParameters(context, fn, {
16
+ shouldSkip: () => false,
17
+ isOptionalExtra: () => false,
18
+ });
19
+ const closureAnnotation = (context, base) => {
20
+ context.addRuntimeTypeImport("ClosureCallback");
21
+ return `${base} | ClosureCallback`;
22
+ };
23
+ const requiresClosureMarshal = (context, fn, ref) => isClosureType(context, ref) && areClosuresInvoked(fn);
24
+ const requiresClosureAnnotation = (context, fn, parameter) => parameter.type !== undefined && requiresClosureMarshal(context, fn, parameter.type);
25
+ const parameterAnnotation = (context, fn, parameter) => {
26
+ const comparator = itemComparatorTsType(context, fn, parameter);
27
+ if (comparator !== undefined) {
28
+ return comparator;
29
+ }
30
+ const base = renderTsType(context, parameter.type, parameter.nullable);
31
+ return requiresClosureAnnotation(context, fn, parameter) ? closureAnnotation(context, base) : base;
32
+ };
16
33
  const isParameterOptional = (parameter, isOptionalExtra) => parameter.optional || isOptionalExtra(parameter);
17
34
  const formatParameterPart = (name, annotation, isOptional) => isOptional ? `${name}?: ${annotation}` : `${name}: ${annotation}`;
18
- const renderInputParameters = (context, fn, shouldSkip, isOptionalExtra) => {
35
+ const renderInputParameters = (context, fn, options) => {
19
36
  const parts = [];
20
- let isSawOptional = false;
37
+ let hasSeenOptional = false;
21
38
  for (const { parameter, index } of inputParameters(context.library, fn)) {
22
- if (shouldSkip(parameter)) {
39
+ if (options.shouldSkip(parameter)) {
23
40
  continue;
24
41
  }
25
42
  const name = parameterIdentifier(parameter, index);
26
- if (isParameterOptional(parameter, isOptionalExtra)) {
27
- isSawOptional = true;
43
+ if (isParameterOptional(parameter, options.isOptionalExtra)) {
44
+ hasSeenOptional = true;
28
45
  }
29
- parts.push(formatParameterPart(name, parameterAnnotation(context, fn, parameter), isSawOptional));
46
+ const annotation = parameterAnnotation(context, fn, parameter);
47
+ parts.push(formatParameterPart(name, annotation, hasSeenOptional));
30
48
  }
31
49
  return parts.join(", ");
32
50
  };
33
51
  const isReturnedOutParameter = (context, parameter) => isOutParameter(parameter) ||
34
52
  (isCallerAllocatedOut(parameter) && isCollectibleCallerOut(context, parameter)) ||
35
53
  isInoutParameter(parameter);
36
- const renderMethodReturnType = (context, fn) => {
54
+ const returnedOutParameters = (context, fn) => {
37
55
  const folded = foldedLengthIndices(context.library, fn);
38
- const outs = fn.parameters.filter((p, index) => isReturnedOutParameter(context, p) && !folded.has(index));
56
+ const result = [];
57
+ for (const [index, parameter] of fn.parameters.entries()) {
58
+ if (isReturnedOutParameter(context, parameter) && !folded.has(index)) {
59
+ result.push({ parameter, index });
60
+ }
61
+ }
62
+ return result;
63
+ };
64
+ const renderMethodReturnType = (context, fn) => {
65
+ const outs = returnedOutParameters(context, fn);
39
66
  const primary = shouldOmitPrimaryReturn(context.library, fn.returnValue)
40
67
  ? undefined
41
68
  : renderTsType(context, fn.returnValue.type, fn.returnValue.nullable);
42
69
  if (outs.length === 0) {
43
70
  return primary ?? "void";
44
71
  }
45
- const outTypes = outs.map((parameter) => renderTsType(context, parameter.type, parameter.nullable));
72
+ const outTypes = outs.map(({ parameter }) => renderTsType(context, parameter.type, parameter.nullable));
46
73
  return foldOutParamShape(primary, outTypes);
47
74
  };
48
75
  const classifyPromisifiedParameter = (promisify, parameter, index, state) => {
49
76
  if (parameter.isVarargs) {
50
- return { sawOptional: state.sawOptional, expression: undefined };
77
+ return { hasSeenOptional: state.hasSeenOptional, expression: undefined };
51
78
  }
52
79
  if (index === state.cancellableIndex) {
53
- return { sawOptional: true, expression: undefined };
80
+ return { hasSeenOptional: true, expression: undefined };
54
81
  }
55
82
  if (shouldSkipPromisifiedParameter(promisify, parameter, index)) {
56
- return { sawOptional: state.sawOptional, expression: undefined };
83
+ return { hasSeenOptional: state.hasSeenOptional, expression: undefined };
57
84
  }
58
- const isSawOptional = state.sawOptional || parameter.optional;
59
- return { sawOptional: isSawOptional, expression: promisifiedArgument(promisify, parameter, index, isSawOptional) };
85
+ const hasSeenOptional = state.hasSeenOptional || parameter.optional;
86
+ return { hasSeenOptional, expression: promisifiedArgument(promisify, parameter, index, hasSeenOptional) };
60
87
  };
61
88
  const collectPromisifiedArguments = (promisify, cancellableIndex) => {
62
89
  const expressions = [];
63
- let isSawOptional = false;
90
+ let hasSeenOptional = false;
64
91
  for (const [index, parameter] of promisify.asyncFn.parameters.entries()) {
65
92
  const step = classifyPromisifiedParameter(promisify, parameter, index, {
66
93
  cancellableIndex,
67
- sawOptional: isSawOptional,
94
+ hasSeenOptional,
68
95
  });
69
- isSawOptional = step.sawOptional;
96
+ hasSeenOptional = step.hasSeenOptional;
70
97
  if (step.expression !== undefined) {
71
98
  expressions.push(step.expression);
72
99
  }
@@ -112,11 +139,14 @@ const promisifiedArgument = (promisify, parameter, index, hasSeenOptional) => {
112
139
  if (sourceIndex !== undefined && source !== undefined) {
113
140
  return arrayLengthArgument(source, sourceIndex);
114
141
  }
115
- return parameterCallExpression(context, parameter, index, hasSeenOptional);
142
+ return parameterCallExpression(context, parameter, index, { fn: asyncFn, isForcedNullable: hasSeenOptional });
116
143
  };
117
144
  const findCancellableIndex = (context, parameters) => parameters.findIndex((parameter) => isCancellable(context, parameter));
118
145
  const renderPromisifiedSignature = (context, asyncFn, finishFn) => {
119
- const signature = renderInputParameters(context, asyncFn, (parameter) => isCallbackParameter(context, parameter), (parameter) => isCancellable(context, parameter));
146
+ const signature = renderInputParameters(context, asyncFn, {
147
+ shouldSkip: (parameter) => isCallbackParameter(context, parameter),
148
+ isOptionalExtra: (parameter) => isCancellable(context, parameter),
149
+ });
120
150
  const finishReturn = renderMethodReturnType(context, finishFn);
121
151
  return { signature, returnType: `Promise<${finishReturn}>` };
122
152
  };
@@ -142,11 +172,11 @@ const paramDescriptorLiteral = (descriptor, options) => {
142
172
  if (options.direction !== undefined) {
143
173
  parts.push(`direction: ${sourceStringLiteral(options.direction)}`);
144
174
  }
145
- if (options.callerAllocated === true) {
146
- parts.push("callerAllocated: true");
175
+ if (options.isCallerAllocated === true) {
176
+ parts.push("isCallerAllocated: true");
147
177
  }
148
- if (options.consumed === true) {
149
- parts.push("consumed: true");
178
+ if (options.isConsumed === true) {
179
+ parts.push("isConsumed: true");
150
180
  }
151
181
  return `{ ${parts.join(", ")} }`;
152
182
  };
@@ -213,9 +243,10 @@ const planInoutArgument = (context, parameter, index, planContext) => {
213
243
  ? { source: lengthSourceParam, index: lengthSourceIndex }
214
244
  : undefined;
215
245
  return planInoutParam(context, parameter, {
246
+ fn,
216
247
  index,
217
248
  argIndex: planContext.argIndex,
218
- consumed: folded.has(index),
249
+ isConsumed: folded.has(index),
219
250
  lengthSource,
220
251
  });
221
252
  };
@@ -228,9 +259,12 @@ const planLengthArgument = (context, parameter, sourceIndex, planContext) => {
228
259
  };
229
260
  };
230
261
  const planOutParam = (context, parameter, argIndex, isConsumed) => {
231
- const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership, argIndex);
262
+ const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership, {
263
+ ...argIndex,
264
+ hasOutIndirection: true,
265
+ });
232
266
  return {
233
- paramLiteral: paramDescriptorLiteral(descriptor, { direction: "out", consumed: isConsumed }),
267
+ paramLiteral: paramDescriptorLiteral(descriptor, { direction: "out", isConsumed }),
234
268
  inputExpr: undefined,
235
269
  };
236
270
  };
@@ -253,26 +287,33 @@ const planCallerOut = (context, parameter, argIndex) => {
253
287
  context.addRuntimeImport("getHandle");
254
288
  const classExpression = context.qualify(name.namespaceName, name.typeName);
255
289
  return {
256
- paramLiteral: paramDescriptorLiteral(descriptor, { direction: "out", callerAllocated: true }),
290
+ paramLiteral: paramDescriptorLiteral(descriptor, { direction: "out", isCallerAllocated: true }),
257
291
  inputExpr: `new ${classExpression}()`,
258
292
  };
259
293
  }
260
294
  return { paramLiteral: paramDescriptorLiteral(descriptor, {}), inputExpr: "undefined" };
261
295
  };
262
296
  const planInoutParam = (context, parameter, options) => {
263
- const { index, argIndex, consumed, lengthSource } = options;
297
+ const { fn, index, argIndex, isConsumed, lengthSource } = options;
264
298
  if (isHandlePassedInPlace(context, parameter)) {
265
299
  const descriptor = renderDescriptor(context, parameter.type, "none", argIndex);
266
300
  return {
267
- paramLiteral: paramDescriptorLiteral(descriptor, { direction: "inout", callerAllocated: true, consumed }),
301
+ paramLiteral: paramDescriptorLiteral(descriptor, {
302
+ direction: "inout",
303
+ isCallerAllocated: true,
304
+ isConsumed,
305
+ }),
268
306
  inputExpr: parameterIdentifier(parameter, index),
269
307
  };
270
308
  }
271
- const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership, argIndex);
309
+ const descriptor = renderDescriptor(context, parameter.type, parameter.transferOwnership, {
310
+ ...argIndex,
311
+ hasOutIndirection: true,
312
+ });
272
313
  return {
273
- paramLiteral: paramDescriptorLiteral(descriptor, { direction: "inout", consumed }),
314
+ paramLiteral: paramDescriptorLiteral(descriptor, { direction: "inout", isConsumed }),
274
315
  inputExpr: lengthSource === undefined
275
- ? parameterCallExpression(context, parameter, index)
316
+ ? parameterCallExpression(context, parameter, index, { fn })
276
317
  : arrayLengthArgument(lengthSource.source, lengthSource.index),
277
318
  };
278
319
  };
@@ -283,21 +324,23 @@ const planInParam = (context, parameter, index, planContext) => {
283
324
  renderDescriptor(context, parameter.type, parameter.transferOwnership, planContext.argIndex);
284
325
  return {
285
326
  paramLiteral: paramDescriptorLiteral(descriptor, {}),
286
- inputExpr: parameterCallExpression(context, parameter, index),
327
+ inputExpr: parameterCallExpression(context, parameter, index, { fn }),
287
328
  };
288
329
  };
330
+ const nullableHandleExpression = (name) => `${name} == null ? null : getHandle(${name})`;
289
331
  const handleArgument = (context, name, isNullable) => {
290
- if (isNullable) {
291
- context.addRuntimeImport("tryGetHandle");
292
- return `tryGetHandle(${name})`;
293
- }
294
332
  context.addRuntimeImport("getHandle");
295
- return `getHandle(${name})`;
333
+ return isNullable ? nullableHandleExpression(name) : `getHandle(${name})`;
334
+ };
335
+ const closureArgument = (context, name, isNullable) => {
336
+ const helper = isNullable ? "tryToClosure" : "toClosure";
337
+ context.addRuntimeImport(helper);
338
+ return `${helper}(${name})`;
296
339
  };
297
340
  const hashtableArgument = (context, valueRef, name) => {
298
341
  if (isHandlePassing(context, valueRef)) {
299
- context.addRuntimeImport("tryGetHandle");
300
- return `${name} ? globalThis.Array.from(${name}).map(([k, v]) => [k, tryGetHandle(v)]) : null`;
342
+ context.addRuntimeImport("getHandle");
343
+ return `${name} ? globalThis.Array.from(${name}).map(([k, v]) => [k, ${nullableHandleExpression("v")}]) : null`;
301
344
  }
302
345
  return `${name} ? globalThis.Array.from(${name}) : null`;
303
346
  };
@@ -312,26 +355,28 @@ const collectionArgument = (context, type, name, isNullable) => {
312
355
  context.addRuntimeImport("getHandle");
313
356
  return mapHandleExpression(name, isNullable);
314
357
  };
315
- // An array whose length nothing states is marshalled as the bare pointer it is, so there is nothing
316
- // to map over.
317
358
  const isMappableSequence = (context, type) => {
318
359
  if (type?.kind === "carray") {
319
360
  return !hasUnknownArrayLength(type) && isHandlePassing(context, type.element);
320
361
  }
321
362
  return type?.kind === "list" && isHandlePassing(context, type.element);
322
363
  };
323
- const parameterCallExpression = (context, parameter, index, isForcedNullable = false) => {
364
+ const parameterCallExpression = (context, parameter, index, options) => {
365
+ const { fn, isForcedNullable = false } = options;
324
366
  const name = parameterIdentifier(parameter, index);
325
367
  const ref = parameter.type;
326
368
  if (ref === undefined) {
327
369
  return name;
328
370
  }
329
371
  const isNullable = parameter.nullable || parameter.optional || isForcedNullable;
372
+ if (requiresClosureMarshal(context, fn, ref)) {
373
+ return closureArgument(context, name, isNullable);
374
+ }
330
375
  if (isHandlePassing(context, ref)) {
331
376
  return handleArgument(context, name, isNullable);
332
377
  }
333
378
  const type = context.library.typeFor(ref);
334
379
  return collectionArgument(context, type, name, isNullable) ?? name;
335
380
  };
336
- export { methodExportName, renderMethodSignature, renderMethodReturnType, renderPromisifiedBody, finishCallExpression, renderPromisifiedSignature, renderMethodBody, renderReturnDescriptor, planCallArgs, };
381
+ export { constructibleName, isCallbackParameter, methodExportName, renderMethodSignature, renderMethodReturnType, returnedOutParameters, renderPromisifiedBody, finishCallExpression, renderPromisifiedSignature, renderMethodBody, renderReturnDescriptor, planCallArgs, };
337
382
  //# sourceMappingURL=method.js.map