@gtkx/codegen 1.0.0-rc.4 → 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 (410) hide show
  1. package/README.md +5 -5
  2. package/dist/analysis/descriptor-render.d.ts +8 -1
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +37 -24
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +1 -1
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js.map +1 -1
  9. package/dist/analysis/inheritance.d.ts +1 -2
  10. package/dist/analysis/inheritance.d.ts.map +1 -1
  11. package/dist/analysis/inheritance.js +25 -22
  12. package/dist/analysis/inheritance.js.map +1 -1
  13. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  14. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  15. package/dist/analysis/nul-terminated-bytes.js +18 -0
  16. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  17. package/dist/analysis/param-capability.d.ts +5 -0
  18. package/dist/analysis/param-capability.d.ts.map +1 -0
  19. package/dist/analysis/param-capability.js +130 -0
  20. package/dist/analysis/param-capability.js.map +1 -0
  21. package/dist/analysis/param-structure.d.ts +11 -4
  22. package/dist/analysis/param-structure.d.ts.map +1 -1
  23. package/dist/analysis/param-structure.js +40 -14
  24. package/dist/analysis/param-structure.js.map +1 -1
  25. package/dist/analysis/type-shape.d.ts +8 -0
  26. package/dist/analysis/type-shape.d.ts.map +1 -0
  27. package/dist/analysis/type-shape.js +12 -0
  28. package/dist/analysis/type-shape.js.map +1 -0
  29. package/dist/compile.d.ts +1 -1
  30. package/dist/compile.d.ts.map +1 -1
  31. package/dist/compile.js.map +1 -1
  32. package/dist/docs/api-reference.d.ts +2 -2
  33. package/dist/docs/api-reference.d.ts.map +1 -1
  34. package/dist/docs/api-reference.js +7 -14
  35. package/dist/docs/api-reference.js.map +1 -1
  36. package/dist/docs/element-page.d.ts +4 -4
  37. package/dist/docs/element-page.d.ts.map +1 -1
  38. package/dist/docs/element-page.js +32 -20
  39. package/dist/docs/element-page.js.map +1 -1
  40. package/dist/docs/handwritten-props.d.ts +9 -0
  41. package/dist/docs/handwritten-props.d.ts.map +1 -0
  42. package/dist/docs/handwritten-props.js +149 -0
  43. package/dist/docs/handwritten-props.js.map +1 -0
  44. package/dist/docs/pipeline.js +2 -2
  45. package/dist/docs/pipeline.js.map +1 -1
  46. package/dist/docs/render.d.ts +25 -5
  47. package/dist/docs/render.d.ts.map +1 -1
  48. package/dist/docs/render.js +84 -22
  49. package/dist/docs/render.js.map +1 -1
  50. package/dist/docs/symbol-page.d.ts +17 -0
  51. package/dist/docs/symbol-page.d.ts.map +1 -1
  52. package/dist/docs/symbol-page.js +128 -43
  53. package/dist/docs/symbol-page.js.map +1 -1
  54. package/dist/fingerprint.d.ts +1 -1
  55. package/dist/fingerprint.d.ts.map +1 -1
  56. package/dist/fingerprint.js.map +1 -1
  57. package/dist/gir/ancestry.d.ts +2 -2
  58. package/dist/gir/ancestry.d.ts.map +1 -1
  59. package/dist/gir/ancestry.js +11 -1
  60. package/dist/gir/ancestry.js.map +1 -1
  61. package/dist/gir/annotations.d.ts +22 -0
  62. package/dist/gir/annotations.d.ts.map +1 -0
  63. package/dist/gir/annotations.js +15 -0
  64. package/dist/gir/annotations.js.map +1 -0
  65. package/dist/gir/callback.d.ts +1 -0
  66. package/dist/gir/callback.d.ts.map +1 -1
  67. package/dist/gir/callback.js +1 -0
  68. package/dist/gir/callback.js.map +1 -1
  69. package/dist/gir/class.d.ts +32 -1
  70. package/dist/gir/class.d.ts.map +1 -1
  71. package/dist/gir/class.js +8 -3
  72. package/dist/gir/class.js.map +1 -1
  73. package/dist/gir/enum.d.ts +21 -1
  74. package/dist/gir/enum.d.ts.map +1 -1
  75. package/dist/gir/enum.js +9 -9
  76. package/dist/gir/enum.js.map +1 -1
  77. package/dist/gir/field.d.ts +19 -3
  78. package/dist/gir/field.d.ts.map +1 -1
  79. package/dist/gir/field.js +7 -8
  80. package/dist/gir/field.js.map +1 -1
  81. package/dist/gir/function.d.ts +15 -0
  82. package/dist/gir/function.d.ts.map +1 -1
  83. package/dist/gir/function.js.map +1 -1
  84. package/dist/gir/libraries.d.ts +1 -3
  85. package/dist/gir/libraries.d.ts.map +1 -1
  86. package/dist/gir/libraries.js +0 -1
  87. package/dist/gir/libraries.js.map +1 -1
  88. package/dist/gir/library.d.ts +36 -0
  89. package/dist/gir/library.d.ts.map +1 -1
  90. package/dist/gir/library.js +34 -0
  91. package/dist/gir/library.js.map +1 -1
  92. package/dist/gir/namespace.d.ts +38 -0
  93. package/dist/gir/namespace.d.ts.map +1 -1
  94. package/dist/gir/namespace.js +4 -5
  95. package/dist/gir/namespace.js.map +1 -1
  96. package/dist/gir/parameter.d.ts +39 -0
  97. package/dist/gir/parameter.d.ts.map +1 -1
  98. package/dist/gir/parameter.js +7 -3
  99. package/dist/gir/parameter.js.map +1 -1
  100. package/dist/gir/parse.d.ts +3 -1
  101. package/dist/gir/parse.d.ts.map +1 -1
  102. package/dist/gir/parse.js +6 -3
  103. package/dist/gir/parse.js.map +1 -1
  104. package/dist/gir/primitives.d.ts +1 -0
  105. package/dist/gir/primitives.d.ts.map +1 -1
  106. package/dist/gir/primitives.js.map +1 -1
  107. package/dist/gir/property.d.ts +16 -0
  108. package/dist/gir/property.d.ts.map +1 -1
  109. package/dist/gir/property.js +3 -3
  110. package/dist/gir/property.js.map +1 -1
  111. package/dist/gir/record.d.ts +22 -0
  112. package/dist/gir/record.d.ts.map +1 -1
  113. package/dist/gir/record.js +3 -2
  114. package/dist/gir/record.js.map +1 -1
  115. package/dist/gir/size.d.ts +5 -4
  116. package/dist/gir/size.d.ts.map +1 -1
  117. package/dist/gir/size.js.map +1 -1
  118. package/dist/gir/type-id.d.ts +35 -0
  119. package/dist/gir/type-id.d.ts.map +1 -1
  120. package/dist/gir/type-id.js +1 -0
  121. package/dist/gir/type-id.js.map +1 -1
  122. package/dist/gir/type-ref.d.ts.map +1 -1
  123. package/dist/gir/type-ref.js +1 -0
  124. package/dist/gir/type-ref.js.map +1 -1
  125. package/dist/gir/type.d.ts +20 -0
  126. package/dist/gir/type.d.ts.map +1 -1
  127. package/dist/gir/type.js.map +1 -1
  128. package/dist/khronos/args.d.ts +7 -6
  129. package/dist/khronos/args.d.ts.map +1 -1
  130. package/dist/khronos/args.js +28 -6
  131. package/dist/khronos/args.js.map +1 -1
  132. package/dist/khronos/doc-context.d.ts +29 -0
  133. package/dist/khronos/doc-context.d.ts.map +1 -0
  134. package/dist/khronos/doc-context.js +29 -0
  135. package/dist/khronos/doc-context.js.map +1 -0
  136. package/dist/khronos/extensions.d.ts +13 -0
  137. package/dist/khronos/extensions.d.ts.map +1 -0
  138. package/dist/khronos/extensions.js +49 -0
  139. package/dist/khronos/extensions.js.map +1 -0
  140. package/dist/khronos/jsdoc.d.ts +17 -11
  141. package/dist/khronos/jsdoc.d.ts.map +1 -1
  142. package/dist/khronos/jsdoc.js +104 -46
  143. package/dist/khronos/jsdoc.js.map +1 -1
  144. package/dist/khronos/model.d.ts +42 -3
  145. package/dist/khronos/model.d.ts.map +1 -1
  146. package/dist/khronos/model.js +218 -63
  147. package/dist/khronos/model.js.map +1 -1
  148. package/dist/khronos/modules.d.ts +9 -6
  149. package/dist/khronos/modules.d.ts.map +1 -1
  150. package/dist/khronos/modules.js +96 -26
  151. package/dist/khronos/modules.js.map +1 -1
  152. package/dist/khronos/notes.d.ts +19 -0
  153. package/dist/khronos/notes.d.ts.map +1 -0
  154. package/dist/khronos/notes.js +35 -0
  155. package/dist/khronos/notes.js.map +1 -0
  156. package/dist/khronos/param-pair.d.ts +1 -1
  157. package/dist/khronos/param-pair.d.ts.map +1 -1
  158. package/dist/khronos/param-pair.js.map +1 -1
  159. package/dist/khronos/pipeline.d.ts +3 -1
  160. package/dist/khronos/pipeline.d.ts.map +1 -1
  161. package/dist/khronos/pipeline.js +58 -27
  162. package/dist/khronos/pipeline.js.map +1 -1
  163. package/dist/khronos/plan.d.ts +3 -3
  164. package/dist/khronos/plan.d.ts.map +1 -1
  165. package/dist/khronos/plan.js +2 -2
  166. package/dist/khronos/plan.js.map +1 -1
  167. package/dist/khronos/render.d.ts +8 -6
  168. package/dist/khronos/render.d.ts.map +1 -1
  169. package/dist/khronos/render.js +35 -26
  170. package/dist/khronos/render.js.map +1 -1
  171. package/dist/khronos/select.d.ts +21 -4
  172. package/dist/khronos/select.d.ts.map +1 -1
  173. package/dist/khronos/select.js +47 -34
  174. package/dist/khronos/select.js.map +1 -1
  175. package/dist/react/element-config.d.ts +2 -2
  176. package/dist/react/element-config.d.ts.map +1 -1
  177. package/dist/react/element-config.js.map +1 -1
  178. package/dist/runner.d.ts +1 -7
  179. package/dist/runner.d.ts.map +1 -1
  180. package/dist/runner.js.map +1 -1
  181. package/dist/store/compile-store.d.ts +1 -1
  182. package/dist/store/compile-store.d.ts.map +1 -1
  183. package/dist/store/compile-store.js.map +1 -1
  184. package/dist/store/gi/callable-doc.d.ts +11 -0
  185. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  186. package/dist/store/gi/callable-doc.js +62 -0
  187. package/dist/store/gi/callable-doc.js.map +1 -0
  188. package/dist/store/gi/callables.d.ts +3 -1
  189. package/dist/store/gi/callables.d.ts.map +1 -1
  190. package/dist/store/gi/callables.js +12 -12
  191. package/dist/store/gi/callables.js.map +1 -1
  192. package/dist/store/gi/callback.d.ts.map +1 -1
  193. package/dist/store/gi/callback.js +2 -2
  194. package/dist/store/gi/callback.js.map +1 -1
  195. package/dist/store/gi/class.d.ts.map +1 -1
  196. package/dist/store/gi/class.js +5 -3
  197. package/dist/store/gi/class.js.map +1 -1
  198. package/dist/store/gi/closure-invocation.d.ts +4 -0
  199. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  200. package/dist/store/gi/closure-invocation.js +22 -0
  201. package/dist/store/gi/closure-invocation.js.map +1 -0
  202. package/dist/store/gi/constant.d.ts.map +1 -1
  203. package/dist/store/gi/constant.js +3 -2
  204. package/dist/store/gi/constant.js.map +1 -1
  205. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  206. package/dist/store/gi/constructor-props.js +18 -20
  207. package/dist/store/gi/constructor-props.js.map +1 -1
  208. package/dist/store/gi/doc-spec.d.ts +14 -0
  209. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  210. package/dist/store/gi/doc-spec.js +23 -0
  211. package/dist/store/gi/doc-spec.js.map +1 -0
  212. package/dist/store/gi/enum.d.ts.map +1 -1
  213. package/dist/store/gi/enum.js +29 -16
  214. package/dist/store/gi/enum.js.map +1 -1
  215. package/dist/store/gi/function.d.ts.map +1 -1
  216. package/dist/store/gi/function.js +27 -12
  217. package/dist/store/gi/function.js.map +1 -1
  218. package/dist/store/gi/interface.d.ts.map +1 -1
  219. package/dist/store/gi/interface.js +130 -16
  220. package/dist/store/gi/interface.js.map +1 -1
  221. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  222. package/dist/store/gi/item-comparators.js +3 -5
  223. package/dist/store/gi/item-comparators.js.map +1 -1
  224. package/dist/store/gi/method.d.ts +9 -1
  225. package/dist/store/gi/method.d.ts.map +1 -1
  226. package/dist/store/gi/method.js +69 -26
  227. package/dist/store/gi/method.js.map +1 -1
  228. package/dist/store/gi/param-marshal.d.ts +4 -1
  229. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  230. package/dist/store/gi/param-marshal.js +5 -1
  231. package/dist/store/gi/param-marshal.js.map +1 -1
  232. package/dist/store/gi/pipeline.d.ts.map +1 -1
  233. package/dist/store/gi/pipeline.js +3 -2
  234. package/dist/store/gi/pipeline.js.map +1 -1
  235. package/dist/store/gi/properties.d.ts.map +1 -1
  236. package/dist/store/gi/properties.js +2 -2
  237. package/dist/store/gi/properties.js.map +1 -1
  238. package/dist/store/gi/property-accessor.d.ts +3 -1
  239. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  240. package/dist/store/gi/property-accessor.js +6 -5
  241. package/dist/store/gi/property-accessor.js.map +1 -1
  242. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  243. package/dist/store/gi/record-constructor.js +3 -1
  244. package/dist/store/gi/record-constructor.js.map +1 -1
  245. package/dist/store/gi/record-field-accessor.d.ts +3 -1
  246. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  247. package/dist/store/gi/record-field-accessor.js +3 -2
  248. package/dist/store/gi/record-field-accessor.js.map +1 -1
  249. package/dist/store/gi/record-layout.js +1 -1
  250. package/dist/store/gi/record-layout.js.map +1 -1
  251. package/dist/store/gi/record.d.ts.map +1 -1
  252. package/dist/store/gi/record.js +3 -2
  253. package/dist/store/gi/record.js.map +1 -1
  254. package/dist/store/gi/registration.d.ts +1 -1
  255. package/dist/store/gi/registration.js +2 -2
  256. package/dist/store/gi/registration.js.map +1 -1
  257. package/dist/store/gi/runtime-override.d.ts +2 -1
  258. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  259. package/dist/store/gi/runtime-override.js +8 -5
  260. package/dist/store/gi/runtime-override.js.map +1 -1
  261. package/dist/store/gi/signal.d.ts.map +1 -1
  262. package/dist/store/gi/signal.js +14 -15
  263. package/dist/store/gi/signal.js.map +1 -1
  264. package/dist/store/gi/value-marshalable.d.ts +1 -2
  265. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  266. package/dist/store/gi/value-marshalable.js +1 -1
  267. package/dist/store/gi/value-marshalable.js.map +1 -1
  268. package/dist/store/gi/vtable.d.ts +16 -1
  269. package/dist/store/gi/vtable.d.ts.map +1 -1
  270. package/dist/store/gi/vtable.js +214 -51
  271. package/dist/store/gi/vtable.js.map +1 -1
  272. package/dist/store/jsx/element-components.d.ts +1 -1
  273. package/dist/store/jsx/element-components.d.ts.map +1 -1
  274. package/dist/store/jsx/element-components.js +6 -4
  275. package/dist/store/jsx/element-components.js.map +1 -1
  276. package/dist/store/jsx/element-prop-imports.d.ts +1 -3
  277. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  278. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  279. package/dist/store/jsx/element-prop-types.d.ts +3 -0
  280. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  281. package/dist/store/jsx/element-prop-types.js +7 -1
  282. package/dist/store/jsx/element-prop-types.js.map +1 -1
  283. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  284. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  285. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  286. package/dist/store/jsx/jsx.d.ts.map +1 -1
  287. package/dist/store/jsx/jsx.js +7 -6
  288. package/dist/store/jsx/jsx.js.map +1 -1
  289. package/dist/store/jsx/metadata.js +2 -2
  290. package/dist/store/jsx/metadata.js.map +1 -1
  291. package/dist/store/jsx/pipeline.d.ts +1 -1
  292. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  293. package/dist/store/jsx/pipeline.js.map +1 -1
  294. package/dist/store/jsx/props.d.ts +1 -7
  295. package/dist/store/jsx/props.d.ts.map +1 -1
  296. package/dist/store/jsx/props.js +14 -6
  297. package/dist/store/jsx/props.js.map +1 -1
  298. package/dist/writer/context.d.ts +2 -1
  299. package/dist/writer/context.d.ts.map +1 -1
  300. package/dist/writer/context.js +3 -0
  301. package/dist/writer/context.js.map +1 -1
  302. package/dist/writer/doc-tags.d.ts +21 -0
  303. package/dist/writer/doc-tags.d.ts.map +1 -0
  304. package/dist/writer/doc-tags.js +38 -0
  305. package/dist/writer/doc-tags.js.map +1 -0
  306. package/dist/writer/doc.d.ts +3 -1
  307. package/dist/writer/doc.d.ts.map +1 -1
  308. package/dist/writer/doc.js +19 -6
  309. package/dist/writer/doc.js.map +1 -1
  310. package/dist/writer/gtk-doc.d.ts +1 -1
  311. package/dist/writer/gtk-doc.d.ts.map +1 -1
  312. package/dist/writer/gtk-doc.js +64 -15
  313. package/dist/writer/gtk-doc.js.map +1 -1
  314. package/dist/writer/module.d.ts +8 -2
  315. package/dist/writer/module.d.ts.map +1 -1
  316. package/dist/writer/module.js +13 -1
  317. package/dist/writer/module.js.map +1 -1
  318. package/overrides/gdk/rgba.ts.ejs +26 -0
  319. package/overrides/gobject/object.ts.ejs +48 -3
  320. package/overrides/gobject/value.ts.ejs +7 -0
  321. package/overrides/graphene/structs.ts.ejs +55 -0
  322. package/package.json +4 -4
  323. package/src/analysis/descriptor-render.ts +47 -28
  324. package/src/analysis/descriptor.ts +0 -3
  325. package/src/analysis/inheritance.ts +35 -34
  326. package/src/analysis/nul-terminated-bytes.ts +31 -0
  327. package/src/analysis/param-capability.ts +172 -0
  328. package/src/analysis/param-structure.ts +83 -23
  329. package/src/analysis/type-shape.ts +24 -0
  330. package/src/compile.ts +1 -1
  331. package/src/docs/api-reference.ts +36 -25
  332. package/src/docs/element-page.ts +53 -47
  333. package/src/docs/handwritten-props.ts +230 -0
  334. package/src/docs/pipeline.ts +2 -2
  335. package/src/docs/render.ts +146 -32
  336. package/src/docs/symbol-page.ts +224 -79
  337. package/src/fingerprint.ts +0 -1
  338. package/src/gir/ancestry.ts +15 -1
  339. package/src/gir/annotations.ts +37 -0
  340. package/src/gir/callback.ts +2 -0
  341. package/src/gir/class.ts +42 -4
  342. package/src/gir/enum.ts +30 -10
  343. package/src/gir/field.ts +24 -9
  344. package/src/gir/function.ts +15 -0
  345. package/src/gir/libraries.ts +11 -3
  346. package/src/gir/library.ts +51 -2
  347. package/src/gir/namespace.ts +41 -5
  348. package/src/gir/parameter.ts +47 -3
  349. package/src/gir/parse.ts +8 -2
  350. package/src/gir/primitives.ts +1 -0
  351. package/src/gir/property.ts +18 -3
  352. package/src/gir/record.ts +24 -2
  353. package/src/gir/size.ts +8 -3
  354. package/src/gir/type-id.ts +49 -3
  355. package/src/gir/type-ref.ts +1 -0
  356. package/src/gir/type.ts +50 -6
  357. package/src/khronos/args.ts +36 -13
  358. package/src/khronos/doc-context.ts +62 -0
  359. package/src/khronos/extensions.ts +85 -0
  360. package/src/khronos/jsdoc.ts +152 -56
  361. package/src/khronos/model.ts +314 -69
  362. package/src/khronos/modules.ts +134 -40
  363. package/src/khronos/notes.ts +74 -0
  364. package/src/khronos/param-pair.ts +1 -1
  365. package/src/khronos/pipeline.ts +94 -41
  366. package/src/khronos/plan.ts +4 -5
  367. package/src/khronos/render.ts +62 -50
  368. package/src/khronos/select.ts +91 -50
  369. package/src/react/element-config.ts +2 -2
  370. package/src/runner.ts +1 -8
  371. package/src/store/compile-store.ts +1 -1
  372. package/src/store/gi/callable-doc.ts +102 -0
  373. package/src/store/gi/callables.ts +18 -12
  374. package/src/store/gi/callback.ts +3 -2
  375. package/src/store/gi/class.ts +6 -3
  376. package/src/store/gi/closure-invocation.ts +26 -0
  377. package/src/store/gi/constant.ts +3 -4
  378. package/src/store/gi/constructor-props.ts +19 -23
  379. package/src/store/gi/doc-spec.ts +38 -0
  380. package/src/store/gi/enum.ts +55 -20
  381. package/src/store/gi/function.ts +43 -21
  382. package/src/store/gi/interface.ts +214 -26
  383. package/src/store/gi/item-comparators.ts +3 -5
  384. package/src/store/gi/method.ts +98 -42
  385. package/src/store/gi/param-marshal.ts +15 -1
  386. package/src/store/gi/pipeline.ts +7 -2
  387. package/src/store/gi/properties.ts +3 -2
  388. package/src/store/gi/property-accessor.ts +9 -4
  389. package/src/store/gi/record-constructor.ts +6 -1
  390. package/src/store/gi/record-field-accessor.ts +5 -3
  391. package/src/store/gi/record-layout.ts +1 -1
  392. package/src/store/gi/record.ts +8 -2
  393. package/src/store/gi/registration.ts +3 -3
  394. package/src/store/gi/runtime-override.ts +13 -6
  395. package/src/store/gi/signal.ts +19 -20
  396. package/src/store/gi/value-marshalable.ts +1 -1
  397. package/src/store/gi/vtable.ts +361 -60
  398. package/src/store/jsx/element-components.ts +8 -5
  399. package/src/store/jsx/element-prop-imports.ts +1 -3
  400. package/src/store/jsx/element-prop-types.ts +10 -1
  401. package/src/store/jsx/intrinsic-elements.ts +4 -0
  402. package/src/store/jsx/jsx.ts +8 -6
  403. package/src/store/jsx/metadata.ts +2 -2
  404. package/src/store/jsx/pipeline.ts +1 -1
  405. package/src/store/jsx/props.ts +20 -7
  406. package/src/writer/context.ts +5 -1
  407. package/src/writer/doc-tags.ts +70 -0
  408. package/src/writer/doc.ts +29 -6
  409. package/src/writer/gtk-doc.ts +82 -15
  410. package/src/writer/module.ts +25 -2
@@ -1,31 +1,57 @@
1
1
  import { pascalCase, sortStringsBy } from "@gtkx/utils";
2
+ import type { GirAnnotations } from "../gir/annotations.js";
2
3
  import type { GirClass } from "../gir/class.js";
3
4
  import type { GirFunction } from "../gir/function.js";
4
5
  import type { Library } from "../gir/library.js";
5
6
  import type { GirNamespace } from "../gir/namespace.js";
6
7
  import type { GirCallable } from "../gir/parameter.js";
8
+ import type { GirProperty } from "../gir/property.js";
7
9
  import type { TypeId } from "../gir/type-id.js";
10
+ import type { JsDocDeprecation, JsDocParam, JsDocSpec } from "../writer/doc-tags.js";
8
11
  import { collectInheritedMethods, conflictRename } from "../analysis/inheritance.js";
9
12
  import { renderHandlerParameters, renderHandlerResultType } from "../analysis/param-structure.js";
10
13
  import { recordTypeTarget, renderBaseType, type TsTypeTarget } from "../analysis/ts-type.js";
11
- import { dedupeCallables, instanceScope, renderInstanceMethodSignature } from "../store/gi/callables.js";
14
+ import {
15
+ dedupeCallables,
16
+ instanceMemberSpec,
17
+ instanceScope,
18
+ renderInstanceMethodSignature,
19
+ } from "../store/gi/callables.js";
20
+ import { annotationSpec, handlerSpec, selfHandlerSpec } from "../store/gi/doc-spec.js";
12
21
  import { methodExportName } from "../store/gi/method.js";
13
22
  import { ModuleContext } from "../writer/context.js";
23
+ import { stripDocMedia } from "../writer/doc-tags.js";
14
24
  import { gtkDocToMarkdown } from "../writer/gtk-doc.js";
15
25
 
16
26
  type SignatureEntry = {
17
27
  name: string;
18
28
  signature: string;
19
29
  doc: string;
30
+ tags?: JsDocSpec | undefined;
20
31
  };
21
32
 
22
33
  type OriginSignatureEntry = SignatureEntry & { origin: string | undefined };
23
34
 
35
+ type MetaDocEntry = {
36
+ name: string;
37
+ meta: string;
38
+ doc: string;
39
+ tags?: JsDocSpec | undefined;
40
+ };
41
+
42
+ type PropertyMetaOptions = {
43
+ type: string;
44
+ property: GirProperty;
45
+ accessNotes: string[];
46
+ origin: string | undefined;
47
+ };
48
+
24
49
  const DOCS_DEFAULT_VALUES: Record<string, string> = { TRUE: "true", FALSE: "false", NULL: "null" };
25
50
  const FENCE_LINE = /^\s*(```|~~~)/;
26
51
  const HEADING_LINE = /^#{1,5}\s/;
27
52
  const LEADING_NAMESPACES = ["Gtk", "Adw"];
28
53
  const DOCS_SIGNATURE_NAMESPACE = "$docs";
54
+ const WHITESPACE_RUN = /\s+/g;
29
55
 
30
56
  const docsTarget = (library: Library): TsTypeTarget =>
31
57
  recordTypeTarget(
@@ -63,12 +89,6 @@ const renderDocsSignalHandlerType = (library: Library, signal: GirCallable): str
63
89
 
64
90
  const docsDefaultValue = (value: string): string => DOCS_DEFAULT_VALUES[value] ?? value;
65
91
 
66
- const stripDocMedia = (markdown: string): string =>
67
- markdown
68
- .replaceAll(/<picture[\s\S]*?<\/picture>/g, "")
69
- .replaceAll(/<video[\s\S]*?(?:<\/video>|\/>)/g, "")
70
- .replaceAll(/<img[^>]*>/g, "");
71
-
72
92
  const demoteLine = (line: string, isInFence: boolean): { text: string; isInFence: boolean } => {
73
93
  if (FENCE_LINE.test(line)) {
74
94
  return { text: line, isInFence: !isInFence };
@@ -102,12 +122,15 @@ const stripMarkdown = (markdown: string): string =>
102
122
  .replaceAll(/```[\s\S]*?```/g, " ")
103
123
  .replaceAll(/`([^`]*)`/g, "$1")
104
124
  .replaceAll(/\[([^[\]]*)\]\([^)]*\)/g, "$1")
105
- .replaceAll(/[*_#>]/g, "")
106
- .replaceAll(/\s+/g, " ")
125
+ .replaceAll(/[*#>]/g, "")
126
+ .replaceAll(WHITESPACE_RUN, " ")
107
127
  .trim();
108
128
 
129
+ const inlineMarkdown = (doc: string | undefined): string => docMarkdown(doc).replaceAll(WHITESPACE_RUN, " ").trim();
130
+ const plainText = (doc: string | undefined): string => stripMarkdown(docMarkdown(doc));
131
+
109
132
  const firstSentence = (doc: string | undefined): string => {
110
- const text = stripMarkdown(docMarkdown(doc));
133
+ const text = plainText(doc);
111
134
 
112
135
  if (text.length === 0) {
113
136
  return "";
@@ -138,16 +161,102 @@ const implementsLine = (names: string[]): string[] => {
138
161
  const joinSections = (sections: string[]): string =>
139
162
  `${sections.filter((section) => section.length > 0).join("\n\n")}\n`;
140
163
 
141
- const metaBlock = (name: string, meta: string, doc: string): string => {
142
- const lines = [`### \`${name}\``, "", meta];
164
+ const paramNotes = (params: JsDocParam[] | undefined): string[] => {
165
+ const entries = (params ?? [])
166
+ .map((param) => ({ name: param.name, text: inlineMarkdown(param.doc) }))
167
+ .filter((entry) => entry.text.length > 0);
168
+
169
+ if (entries.length === 0) {
170
+ return [];
171
+ }
172
+
173
+ const bullets = entries.map((entry) => `- \`${entry.name}\`: ${entry.text}`);
174
+
175
+ return [["**Parameters**", "", ...bullets].join("\n")];
176
+ };
177
+
178
+ const labelledNote = (label: string, text: string): string[] => (text.length === 0 ? [] : [`${label} ${text}`]);
179
+
180
+ const deprecationNote = (deprecation: JsDocDeprecation | undefined): string[] => {
181
+ if (deprecation === undefined) {
182
+ return [];
183
+ }
184
+
185
+ const since = deprecation.since;
186
+ const heading = since === undefined ? "**Deprecated.**" : `**Deprecated since ${since}.**`;
187
+ const text = inlineMarkdown(deprecation.doc);
188
+ const body = text.length === 0 ? heading : `${heading} ${text}`;
189
+
190
+ return [`> ${body}`];
191
+ };
192
+
193
+ const sinceNote = (since: string | undefined): string[] =>
194
+ since === undefined || since.length === 0 ? [] : [`_Available since ${since}._`];
195
+
196
+ const tagNotes = (spec: JsDocSpec | undefined): string[] => {
197
+ if (spec === undefined) {
198
+ return [];
199
+ }
200
+
201
+ return [
202
+ ...paramNotes(spec.params),
203
+ ...labelledNote("**Returns**", docMarkdown(spec.returns)),
204
+ ...labelledNote("**Throws**", inlineMarkdown(spec.throws)),
205
+ ...deprecationNote(spec.deprecated),
206
+ ...sinceNote(spec.since),
207
+ ];
208
+ };
209
+
210
+ const deprecationMeta = (annotations: GirAnnotations): string[] => {
211
+ if (!annotations.isDeprecated) {
212
+ return [];
213
+ }
214
+
215
+ const since = annotations.deprecatedSince;
216
+
217
+ return [since === undefined ? "deprecated" : `deprecated since ${since}`];
218
+ };
219
+
220
+ const annotationNotes = (annotations: GirAnnotations): string[] => tagNotes(annotationSpec(annotations));
143
221
 
144
- if (doc.length > 0) {
145
- lines.push("", doc);
222
+ const signalTags = (signal: GirCallable, isSelfIncluded: boolean): JsDocSpec =>
223
+ isSelfIncluded ? selfHandlerSpec(signal) : handlerSpec(signal, signal.parameters);
224
+
225
+ const metaBlock = (entry: MetaDocEntry): string => {
226
+ const lines = [`### \`${entry.name}\``, "", entry.meta];
227
+
228
+ for (const note of [entry.doc, ...tagNotes(entry.tags)]) {
229
+ if (note.length > 0) {
230
+ lines.push("", note);
231
+ }
146
232
  }
147
233
 
148
234
  return lines.join("\n");
149
235
  };
150
236
 
237
+ const sortedMetaBlocks = (entries: MetaDocEntry[]): string[] =>
238
+ sortStringsBy(entries, (item) => item.name).map((item) => metaBlock(item));
239
+
240
+ const propertyMetaLine = ({ type, property, accessNotes, origin }: PropertyMetaOptions): string => {
241
+ const meta = [`\`${type}\``];
242
+
243
+ if (property.defaultValue !== undefined) {
244
+ meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
245
+ }
246
+
247
+ if (property.constructOnly) {
248
+ meta.push("construct-only");
249
+ }
250
+
251
+ meta.push(...accessNotes, ...deprecationMeta(property.annotations));
252
+
253
+ if (origin !== undefined) {
254
+ meta.push(`from \`${origin}\``);
255
+ }
256
+
257
+ return meta.join(" · ");
258
+ };
259
+
151
260
  const signatureBlock = (name: string, signature: string, notes: string[]): string => {
152
261
  const lines = [`### \`${name}\``, "", `\`\`\`ts\n${signature}\n\`\`\``];
153
262
 
@@ -160,6 +269,9 @@ const signatureBlock = (name: string, signature: string, notes: string[]): strin
160
269
  return lines.join("\n");
161
270
  };
162
271
 
272
+ const signatureEntryBlock = (entry: SignatureEntry, leadingNotes: string[] = []): string =>
273
+ signatureBlock(entry.name, entry.signature, [...leadingNotes, entry.doc, ...tagNotes(entry.tags)]);
274
+
163
275
  const namespaceOrder = (name: string): string => {
164
276
  const index = LEADING_NAMESPACES.indexOf(name);
165
277
 
@@ -171,10 +283,7 @@ const docsSignatureContext = (namespace: GirNamespace, library: Library): Module
171
283
 
172
284
  const originSignatureBlocks = (entries: OriginSignatureEntry[]): string[] =>
173
285
  sortStringsBy(entries, (item) => item.name).map((item) =>
174
- signatureBlock(item.name, item.signature, [
175
- item.origin === undefined ? "" : `From \`${item.origin}\`.`,
176
- item.doc,
177
- ]),
286
+ signatureEntryBlock(item, item.origin === undefined ? [] : [`From \`${item.origin}\`.`]),
178
287
  );
179
288
 
180
289
  const classMethodEntries = (library: Library, namespace: GirNamespace, klass: GirClass): SignatureEntry[] => {
@@ -189,9 +298,7 @@ const classMethodEntries = (library: Library, namespace: GirNamespace, klass: Gi
189
298
  };
190
299
 
191
300
  const methodsSectionBlocks = (entries: SignatureEntry[], intro: string): string[] =>
192
- entries.length === 0
193
- ? []
194
- : ["## Methods", intro, ...entries.map((item) => signatureBlock(item.name, item.signature, [item.doc]))];
301
+ entries.length === 0 ? [] : ["## Methods", intro, ...entries.map((item) => signatureEntryBlock(item))];
195
302
 
196
303
  const instanceMethodEntries = (
197
304
  signatureContext: ModuleContext,
@@ -210,13 +317,7 @@ const instanceMethodEntries = (
210
317
 
211
318
  for (const method of deduped) {
212
319
  const nameOverride = rename(method);
213
-
214
- const rendered = renderInstanceMethodSignature(
215
- signatureContext,
216
- { ...method, doc: undefined },
217
- scope,
218
- nameOverride,
219
- );
320
+ const rendered = renderInstanceMethodSignature(signatureContext, method, scope, nameOverride);
220
321
 
221
322
  if (rendered === undefined) {
222
323
  continue;
@@ -224,32 +325,45 @@ const instanceMethodEntries = (
224
325
 
225
326
  entries.push({
226
327
  name: nameOverride ?? methodExportName(method),
227
- signature: rendered.trim().replace(/;$/, ""),
328
+ signature: signatureText(rendered),
228
329
  doc: docMarkdown(method.doc),
330
+ tags: instanceMemberSpec(signatureContext, method, scope),
229
331
  });
230
332
  }
231
333
 
232
334
  return sortStringsBy(entries, (entry) => entry.name);
233
335
  };
234
336
 
337
+ const signatureText = (rendered: string): string => {
338
+ const start = rendered.startsWith("/**") ? rendered.indexOf("*/") + 2 : 0;
339
+
340
+ return rendered.slice(start).trim().replace(/;$/, "");
341
+ };
342
+
235
343
  export {
236
344
  renderDocsType,
237
345
  renderDocsSignalSignature,
238
346
  renderDocsSignalHandlerType,
239
- docsDefaultValue,
347
+ annotationNotes,
348
+ deprecationMeta,
240
349
  docMarkdown,
241
350
  firstSentence,
242
351
  elementSlug,
243
352
  implementsLine,
244
353
  joinSections,
245
- metaBlock,
354
+ plainText,
355
+ propertyMetaLine,
356
+ signalTags,
246
357
  signatureBlock,
358
+ signatureEntryBlock,
359
+ sortedMetaBlocks,
247
360
  namespaceOrder,
248
361
  docsSignatureContext,
249
362
  originSignatureBlocks,
250
363
  classMethodEntries,
251
364
  methodsSectionBlocks,
252
- instanceMethodEntries,
365
+ tagNotes,
366
+ type MetaDocEntry,
253
367
  type SignatureEntry,
254
368
  type OriginSignatureEntry,
255
369
  };