@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
@@ -0,0 +1,8 @@
1
+ import type { Library } from "../gir/library.js";
2
+ import type { PrimitiveCategory } from "../gir/primitives.js";
3
+ import type { CArrayType, TypeId } from "../gir/type-id.js";
4
+ declare const carrayFor: (library: Library, ref: TypeId | undefined) => CArrayType | undefined;
5
+ declare const primitiveCategoryFor: (library: Library, ref: TypeId | undefined) => PrimitiveCategory | undefined;
6
+ declare const isUnboundedArray: (type: CArrayType) => boolean;
7
+ export { carrayFor, isUnboundedArray, primitiveCategoryFor };
8
+ //# sourceMappingURL=type-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-shape.d.ts","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM5D,QAAA,MAAM,SAAS,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,UAAU,GAAG,SAI3E,CAAC;AAEF,QAAA,MAAM,oBAAoB,GAAI,SAAS,OAAO,EAAE,KAAK,MAAM,GAAG,SAAS,KAAG,iBAAiB,GAAG,SAI7F,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,MAAM,UAAU,KAAG,OACuD,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ const resolvedTypeFor = (library, ref) => ref === undefined ? undefined : library.typeFor(ref);
2
+ const carrayFor = (library, ref) => {
3
+ const type = resolvedTypeFor(library, ref);
4
+ return type?.kind === "carray" ? type : undefined;
5
+ };
6
+ const primitiveCategoryFor = (library, ref) => {
7
+ const type = resolvedTypeFor(library, ref);
8
+ return type?.kind === "primitive" ? type.category : undefined;
9
+ };
10
+ const isUnboundedArray = (type) => type.isZeroTerminated && type.lengthParameterIndex === undefined && type.fixedSize === undefined;
11
+ export { carrayFor, isUnboundedArray, primitiveCategoryFor };
12
+ //# sourceMappingURL=type-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-shape.js","sourceRoot":"","sources":["../../src/analysis/type-shape.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAuB,EAAE,CACvF,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzD,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAA0B,EAAE;IACpF,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,GAAuB,EAAiC,EAAE;IACtG,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAgB,EAAW,EAAE,CACnD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import type { Library } from \"../gir/library.js\";\nimport type { PrimitiveCategory } from \"../gir/primitives.js\";\nimport type { CArrayType, TypeId } from \"../gir/type-id.js\";\nimport type { GirType } from \"../gir/type.js\";\n\nconst resolvedTypeFor = (library: Library, ref: TypeId | undefined): GirType | undefined =>\n ref === undefined ? undefined : library.typeFor(ref);\n\nconst carrayFor = (library: Library, ref: TypeId | undefined): CArrayType | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"carray\" ? type : undefined;\n};\n\nconst primitiveCategoryFor = (library: Library, ref: TypeId | undefined): PrimitiveCategory | undefined => {\n const type = resolvedTypeFor(library, ref);\n\n return type?.kind === \"primitive\" ? type.category : undefined;\n};\n\nconst isUnboundedArray = (type: CArrayType): boolean =>\n type.isZeroTerminated && type.lengthParameterIndex === undefined && type.fixedSize === undefined;\n\nexport { carrayFor, isUnboundedArray, primitiveCategoryFor };\n"]}
package/dist/compile.d.ts CHANGED
@@ -14,5 +14,5 @@ declare const checkModules: (params: {
14
14
  resolveFrom: string;
15
15
  label: string;
16
16
  }) => void;
17
- export { compileProject, checkModules, type SourceModule, type CompileProjectParams };
17
+ export { compileProject, checkModules, type SourceModule };
18
18
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AA+HF,QAAA,MAAM,cAAc,GAAI,QAAQ,oBAAoB,KAAG,IAYtD,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,IAqB/F,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAKA,KAAK,YAAY,GAAG;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AA+HF,QAAA,MAAM,cAAc,GAAI,QAAQ,oBAAoB,KAAG,IAYtD,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ;IAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,IAqB/F,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\n\ntype SourceModule = {\n fileName: string;\n source: string;\n};\n\ntype CompileProjectParams = {\n projectDir: string;\n fileNames: string[];\n compilerOptions: Record<string, unknown>;\n label: string;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticLine = (diagnostic: ts.Diagnostic, projectDir: string): string | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const filePath = relative(projectDir, file.fileName);\n\n if (!isProjectFile(filePath)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return `${filePath}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`;\n};\n\nconst projectDiagnosticLines = (diagnostics: ts.Diagnostic[], projectDir: string): string[] => {\n const lines: string[] = [];\n\n for (const diagnostic of diagnostics) {\n const line = projectDiagnosticLine(diagnostic, projectDir);\n\n if (line !== undefined) {\n lines.push(line);\n }\n }\n\n return lines;\n};\n\nconst diagnosticError = (label: string, projectDir: string, diagnostics: ts.Diagnostic[]): Error => {\n const lines = projectDiagnosticLines(diagnostics, projectDir);\n\n if (lines.length > 0) {\n return new Error(`Type checking ${label} found ${String(lines.length)} error(s):\\n${lines.join(\"\\n\")}`);\n }\n\n return new Error(`Type checking ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.fileNames.map((name) => `./${name}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params.label, params.projectDir, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n mkdirSync(checkRoot, { recursive: true });\n const projectDir = mkdtempSync(join(checkRoot, \".gtkx-check-\"));\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n fileNames: params.modules.map((module) => module.fileName),\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } finally {\n rmSync(projectDir, { recursive: true, force: true });\n }\n};\n\nexport { compileProject, checkModules, type SourceModule, type CompileProjectParams };\n"]}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\n\ntype SourceModule = {\n fileName: string;\n source: string;\n};\n\ntype CompileProjectParams = {\n projectDir: string;\n fileNames: string[];\n compilerOptions: Record<string, unknown>;\n label: string;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticLine = (diagnostic: ts.Diagnostic, projectDir: string): string | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const filePath = relative(projectDir, file.fileName);\n\n if (!isProjectFile(filePath)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return `${filePath}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`;\n};\n\nconst projectDiagnosticLines = (diagnostics: ts.Diagnostic[], projectDir: string): string[] => {\n const lines: string[] = [];\n\n for (const diagnostic of diagnostics) {\n const line = projectDiagnosticLine(diagnostic, projectDir);\n\n if (line !== undefined) {\n lines.push(line);\n }\n }\n\n return lines;\n};\n\nconst diagnosticError = (label: string, projectDir: string, diagnostics: ts.Diagnostic[]): Error => {\n const lines = projectDiagnosticLines(diagnostics, projectDir);\n\n if (lines.length > 0) {\n return new Error(`Type checking ${label} found ${String(lines.length)} error(s):\\n${lines.join(\"\\n\")}`);\n }\n\n return new Error(`Type checking ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.fileNames.map((name) => `./${name}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params.label, params.projectDir, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n mkdirSync(checkRoot, { recursive: true });\n const projectDir = mkdtempSync(join(checkRoot, \".gtkx-check-\"));\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n fileNames: params.modules.map((module) => module.fileName),\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } finally {\n rmSync(projectDir, { recursive: true, force: true });\n }\n};\n\nexport { compileProject, checkModules, type SourceModule };\n"]}
@@ -1,6 +1,5 @@
1
1
  import { type ElementProps } from "../store/jsx/element-prop-imports.js";
2
2
  import { type OmittedProps } from "../store/jsx/omitted-props.js";
3
- import { type GiSymbolEntry } from "./symbol-page.js";
4
3
  /** What to index and the element config the rendered pages reflect. */
5
4
  type ApiReferenceOptions = {
6
5
  /** GIR library identifiers to load, such as `"Gtk-4.0"`; their dependencies are pulled in too. */
@@ -20,7 +19,7 @@ type ApiSymbolQuery = {
20
19
  kinds?: ApiSymbolKind[];
21
20
  };
22
21
  /** What an indexed symbol is: one of the GIR symbol kinds, or a JSX element. */
23
- type ApiSymbolKind = GiSymbolEntry["kind"] | "element";
22
+ type ApiSymbolKind = "alias" | "callback" | "class" | "constant" | "element" | "enum" | "function" | "interface" | "record";
24
23
  /** An indexed symbol, without its reference page. */
25
24
  type ApiSymbol = {
26
25
  /** GIR namespace declaring the symbol, such as `"Gtk"`. */
@@ -94,6 +93,7 @@ declare class ApiReference {
94
93
  private elementsByClass;
95
94
  private props;
96
95
  private omittedProps;
96
+ /** Indexes every symbol and JSX element in the GIR data the options point at. */
97
97
  constructor(options: ApiReferenceOptions);
98
98
  private applyElementConfig;
99
99
  private add;
@@ -1 +1 @@
1
- {"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { namespaceFunctionExportName } from "../store/gi/function.js";
6
6
  import { setElementProps } from "../store/jsx/element-prop-imports.js";
7
7
  import { collectIntrinsicElementClasses } from "../store/jsx/intrinsic-elements.js";
8
8
  import { setOmittedProps } from "../store/jsx/omitted-props.js";
9
- import { createElementPageContext, renderElementPage } from "./element-page.js";
9
+ import { renderElementPage } from "./element-page.js";
10
10
  import { docsSignatureContext, firstSentence, namespaceOrder } from "./render.js";
11
11
  import { renderSymbolPage } from "./symbol-page.js";
12
12
  /** Every kind the reference indexes, in the order a namespace overview groups its symbols. */
@@ -39,6 +39,7 @@ const compareNames = (a, b) => {
39
39
  }
40
40
  return a > b ? 1 : 0;
41
41
  };
42
+ const symbolKindSet = (kinds) => kinds === undefined ? undefined : new Set(kinds);
42
43
  const isQueriedEntry = (entry, namespaceFilter, kinds) => {
43
44
  if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {
44
45
  return false;
@@ -143,17 +144,8 @@ const narrowToExactMatches = (candidates, trimmed, isQualified) => {
143
144
  const exact = candidates.filter((entry) => (isQualified ? `${entry.namespace.name}.${entry.name}` : entry.name) === trimmed);
144
145
  return exact.length > 0 ? exact : candidates;
145
146
  };
146
- const isSearchFilterMatch = (entry, namespaceFilter, kinds) => {
147
- if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {
148
- return false;
149
- }
150
- if (kinds !== undefined && !kinds.includes(entry.kind)) {
151
- return false;
152
- }
153
- return true;
154
- };
155
147
  const getScoredEntry = (entry, query, namespaceFilter, kinds) => {
156
- if (!isSearchFilterMatch(entry, namespaceFilter, kinds)) {
148
+ if (!isQueriedEntry(entry, namespaceFilter, kinds)) {
157
149
  return undefined;
158
150
  }
159
151
  const score = searchScore(entry, query);
@@ -193,12 +185,13 @@ class ApiReference {
193
185
  elementsByClass = new Map();
194
186
  props;
195
187
  omittedProps;
188
+ /** Indexes every symbol and JSX element in the GIR data the options point at. */
196
189
  constructor(options) {
197
190
  this.libraries = options.libraries;
198
191
  this.props = options.props ?? {};
199
192
  this.omittedProps = options.omittedProps ?? {};
200
193
  this.library = Library.load(options.libraries, options.girPath);
201
- this.elementContext = createElementPageContext(this.library, () => undefined);
194
+ this.elementContext = { library: this.library, linkFor: () => undefined };
202
195
  this.buildIndex();
203
196
  }
204
197
  applyElementConfig() {
@@ -332,7 +325,7 @@ class ApiReference {
332
325
  /** Every indexed symbol the query keeps, ordered by namespace (Gtk, then Adw, then alphabetically) and name. */
333
326
  symbols(query = {}) {
334
327
  const namespaceFilter = query.namespace?.toLowerCase();
335
- const kinds = query.kinds === undefined ? undefined : new Set(query.kinds);
328
+ const kinds = symbolKindSet(query.kinds);
336
329
  return this.entries
337
330
  .filter((entry) => isQueriedEntry(entry, namespaceFilter, kinds))
338
331
  .map((entry) => this.toApiSymbol(entry))
@@ -349,7 +342,7 @@ class ApiReference {
349
342
  }
350
343
  const limit = Math.max(1, Math.floor(options.limit ?? DEFAULT_SEARCH_LIMIT));
351
344
  const namespaceFilter = options.namespace?.toLowerCase();
352
- const scored = this.scoreEntries(query, namespaceFilter, options.kinds);
345
+ const scored = this.scoreEntries(query, namespaceFilter, symbolKindSet(options.kinds));
353
346
  scored.sort(compareScoredEntries);
354
347
  return scored.slice(0, limit).map((item) => this.toApiSymbol(item.entry));
355
348
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-reference.js","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport { Library } from \"../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { dedupeCallables, isEmittableCallable } from \"../store/gi/callables.js\";\nimport { namespaceFunctionExportName } from \"../store/gi/function.js\";\nimport { type ElementProps, setElementProps } from \"../store/jsx/element-prop-imports.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"../store/jsx/intrinsic-elements.js\";\nimport { type OmittedProps, setOmittedProps } from \"../store/jsx/omitted-props.js\";\nimport { createElementPageContext, type ElementPageContext, renderElementPage } from \"./element-page.js\";\nimport { docsSignatureContext, firstSentence, namespaceOrder } from \"./render.js\";\nimport { type GiSymbolEntry, renderSymbolPage, type SymbolPageOptions } from \"./symbol-page.js\";\n\n/** What to index and the element config the rendered pages reflect. */\ntype ApiReferenceOptions = {\n /** GIR library identifiers to load, such as `\"Gtk-4.0\"`; their dependencies are pulled in too. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Base props interfaces per element, as read by `readBuiltinElements`; without it pages miss them. */\n props?: ElementProps;\n /** GObject properties the project omits from generated props; without it pages show props that do not exist. */\n omittedProps?: OmittedProps;\n};\n\n/** Narrows an `ApiReference.symbols` enumeration. */\ntype ApiSymbolQuery = {\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n};\n\n/** What an indexed symbol is: one of the GIR symbol kinds, or a JSX element. */\ntype ApiSymbolKind = GiSymbolEntry[\"kind\"] | \"element\";\n\n/** An indexed symbol, without its reference page. */\ntype ApiSymbol = {\n /** GIR namespace declaring the symbol, such as `\"Gtk\"`. */\n namespace: string;\n /** Name within the namespace, which for an element is its GLib type name. */\n name: string;\n /** Kind the reference groups and filters the symbol by, `\"element\"` for a JSX tag. */\n kind: ApiSymbolKind;\n /** First sentence of the symbol's GIR documentation, elided past 220 characters and empty when it has none. */\n summary: string;\n};\n\n/** How much of one namespace the reference indexes. */\ntype ApiNamespaceSummary = {\n /** GIR namespace name, such as `\"Gtk\"`. */\n name: string;\n /** The `@gtkx/gi` subpath the namespace's symbols are imported from. */\n importPath: string;\n /** How many symbols other than JSX elements the namespace contributes. */\n symbols: number;\n /** How many JSX elements the namespace contributes. */\n elements: number;\n};\n\n/** What an `ApiReference.lookup` found: a rendered page, several candidates for the name, or nothing. */\ntype ApiLookupResult =\n | {\n /** Discriminant selecting the variant. */\n outcome: \"page\";\n /** Index entry for the symbol the query resolved to. */\n symbol: ApiSymbol;\n /** The symbol's complete reference page, rendered as Markdown. */\n markdown: string;\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"ambiguous\";\n /** Every symbol the name answers to, to be narrowed by namespace or kind. */\n candidates: ApiSymbol[];\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"notFound\";\n };\n\n/** A fuzzy search over indexed symbol names. */\ntype ApiSearchOptions = {\n /** Text matched case-insensitively against each symbol's name and its qualified `Namespace.Name` form. */\n query: string;\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n /** Maximum number of results, 20 by default. */\n limit?: number;\n};\n\ntype ElementEntry = {\n kind: \"element\";\n namespace: GirNamespace;\n name: string;\n doc: string | undefined;\n element: GlibNamedClass;\n};\n\ntype SymbolEntry = GiSymbolEntry | ElementEntry;\ntype ScoredEntry = { score: number; entry: SymbolEntry };\n\n/** Every kind the reference indexes, in the order a namespace overview groups its symbols. */\nconst API_SYMBOL_KINDS: ApiSymbolKind[] = [\n \"element\",\n \"class\",\n \"interface\",\n \"record\",\n \"enum\",\n \"callback\",\n \"alias\",\n \"function\",\n \"constant\",\n];\n\nconst KIND_SECTION_TITLES: Record<ApiSymbolKind, string> = {\n element: \"JSX elements\",\n class: \"Classes\",\n interface: \"Interfaces\",\n record: \"Records\",\n enum: \"Enums\",\n callback: \"Callbacks\",\n alias: \"Aliases\",\n function: \"Functions\",\n constant: \"Constants\",\n};\n\nconst DEFAULT_SEARCH_LIMIT = 20;\n\nconst compareNames = (a: string, b: string): number => {\n if (a < b) {\n return -1;\n }\n\n return a > b ? 1 : 0;\n};\n\nconst isQueriedEntry = (\n entry: SymbolEntry,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): boolean => {\n if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {\n return false;\n }\n\n return kinds === undefined || kinds.has(entry.kind);\n};\n\nconst compareApiSymbols = (a: ApiSymbol, b: ApiSymbol): number => {\n const byNamespace = namespaceOrder(a.namespace).localeCompare(namespaceOrder(b.namespace));\n\n return byNamespace === 0 ? a.name.localeCompare(b.name) : byNamespace;\n};\n\n/**\n * Loads the GIR data for the given libraries and indexes every symbol and JSX element in it. The result is\n * a read-only view: it generates no store and needs none, so a tool can explore the bindings a project would\n * get without running codegen.\n *\n * @param options Which libraries to index, where to find them, and the project's element config.\n * @returns The indexed reference.\n */\nconst loadApiReference = (options: ApiReferenceOptions): ApiReference => new ApiReference(options);\n\nconst functionEntry = (\n namespace: GirNamespace,\n docsContext: ReturnType<typeof docsSignatureContext>,\n fn: GirFunction,\n): GiSymbolEntry | undefined => {\n if (!isEmittableCallable(docsContext, fn)) {\n return undefined;\n }\n\n const cIdentifier = fn.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = namespaceFunctionExportName(cIdentifier, fn.name, namespace.cSymbolPrefixes);\n\n return { kind: \"function\", namespace, name, doc: fn.doc, fn };\n};\n\nconst classEntry = (namespace: GirNamespace, klass: GirClass): GiSymbolEntry | undefined => {\n if (!klass.introspectable || klass.name.length === 0) {\n return undefined;\n }\n\n const kind = klass.isInterface ? \"interface\" : \"class\";\n\n return { kind, namespace, name: pascalCase(klass.name), doc: klass.doc, klass };\n};\n\nconst classEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const klass of [...namespace.classes, ...namespace.interfaces]) {\n const entry = classEntry(namespace, klass);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst recordEntry = (namespace: GirNamespace, record: GirRecord): GiSymbolEntry | undefined => {\n if (!record.introspectable || record.isVtable || record.name.length === 0) {\n return undefined;\n }\n\n return { kind: \"record\", namespace, name: record.name, doc: record.doc, record };\n};\n\nconst recordEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const record of namespace.records) {\n const entry = recordEntry(namespace, record);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst valueEntries = (namespace: GirNamespace): GiSymbolEntry[] => [\n ...namespace.enums\n .filter((enumeration) => enumeration.introspectable)\n .map<GiSymbolEntry>((enumeration) => ({\n kind: \"enum\",\n namespace,\n name: enumeration.name,\n doc: enumeration.doc,\n enumeration,\n })),\n ...namespace.callbacks\n .filter((callback) => callback.introspectable)\n .map<GiSymbolEntry>((callback) => ({\n kind: \"callback\",\n namespace,\n name: callback.name,\n doc: callback.doc,\n callback,\n })),\n ...namespace.aliases.map<GiSymbolEntry>((alias) => ({\n kind: \"alias\",\n namespace,\n name: alias.name,\n doc: alias.doc,\n alias,\n })),\n ...namespace.constants.map<GiSymbolEntry>((constant) => ({\n kind: \"constant\",\n namespace,\n name: constant.name,\n doc: constant.doc,\n constant,\n })),\n];\n\nconst narrowToExactMatches = (candidates: SymbolEntry[], trimmed: string, isQualified: boolean): SymbolEntry[] => {\n if (candidates.length <= 1) {\n return candidates;\n }\n\n const exact = candidates.filter(\n (entry) => (isQualified ? `${entry.namespace.name}.${entry.name}` : entry.name) === trimmed,\n );\n\n return exact.length > 0 ? exact : candidates;\n};\n\nconst isSearchFilterMatch = (\n entry: SymbolEntry,\n namespaceFilter: string | undefined,\n kinds: ApiSymbolKind[] | undefined,\n): boolean => {\n if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {\n return false;\n }\n\n if (kinds !== undefined && !kinds.includes(entry.kind)) {\n return false;\n }\n\n return true;\n};\n\nconst getScoredEntry = (\n entry: SymbolEntry,\n query: string,\n namespaceFilter: string | undefined,\n kinds: ApiSymbolKind[] | undefined,\n): ScoredEntry | undefined => {\n if (!isSearchFilterMatch(entry, namespaceFilter, kinds)) {\n return undefined;\n }\n\n const score = searchScore(entry, query);\n\n if (score === 0) {\n return undefined;\n }\n\n return { score, entry };\n};\n\nconst compareScoredEntries = (a: ScoredEntry, b: ScoredEntry): number =>\n b.score - a.score ||\n a.entry.name.length - b.entry.name.length ||\n compareNames(a.entry.name, b.entry.name) ||\n compareNames(namespaceOrder(a.entry.namespace.name), namespaceOrder(b.entry.namespace.name)) ||\n compareNames(a.entry.kind, b.entry.kind);\n\nconst searchScore = (entry: SymbolEntry, query: string): number => {\n const name = entry.name.toLowerCase();\n const qualified = `${entry.namespace.name.toLowerCase()}.${name}`;\n\n if (name === query || qualified === query) {\n return 3;\n }\n\n if (name.startsWith(query)) {\n return 2;\n }\n\n if (name.includes(query) || qualified.includes(query)) {\n return 1;\n }\n\n return 0;\n};\n\n/** An index over the GIR data a project's bindings are generated from, queryable and renderable as Markdown. */\nclass ApiReference {\n private library: Library;\n private libraries: string[];\n private elementContext: ElementPageContext;\n private entries: SymbolEntry[] = [];\n private byQualified: Map<string, SymbolEntry[]> = new Map();\n private byName: Map<string, SymbolEntry[]> = new Map();\n private byNamespace: Map<string, SymbolEntry[]> = new Map();\n private elementsByClass: Map<string, string> = new Map();\n\n private props: ElementProps;\n private omittedProps: OmittedProps;\n\n constructor(options: ApiReferenceOptions) {\n this.libraries = options.libraries;\n this.props = options.props ?? {};\n this.omittedProps = options.omittedProps ?? {};\n this.library = Library.load(options.libraries, options.girPath);\n this.elementContext = createElementPageContext(this.library, (): string | undefined => undefined);\n this.buildIndex();\n }\n\n private applyElementConfig(): void {\n setElementProps(this.props);\n setOmittedProps(this.omittedProps);\n }\n\n private add(entry: SymbolEntry): void {\n this.entries.push(entry);\n\n const push = (map: Map<string, SymbolEntry[]>, key: string): void => {\n const list = map.get(key) ?? [];\n list.push(entry);\n map.set(key, list);\n };\n\n push(this.byQualified, `${entry.namespace.name}.${entry.name}`.toLowerCase());\n push(this.byName, entry.name.toLowerCase());\n push(this.byNamespace, entry.namespace.name);\n }\n\n private buildIndex(): void {\n for (const namespace of this.library.namespaces.values()) {\n this.indexNamespace(namespace);\n }\n\n for (const element of collectIntrinsicElementClasses(this.library)) {\n this.add({\n kind: \"element\",\n namespace: element.namespace,\n name: element.glibName,\n doc: element.klass.doc,\n element,\n });\n\n this.elementsByClass.set(`${element.namespace.name}.${element.klass.name}`, element.glibName);\n }\n }\n\n private indexNamespace(namespace: GirNamespace): void {\n const entries = [\n ...classEntries(namespace),\n ...recordEntries(namespace),\n ...valueEntries(namespace),\n ];\n\n for (const entry of entries) {\n this.add(entry);\n }\n\n this.indexFunctions(namespace);\n }\n\n private indexFunctions(namespace: GirNamespace): void {\n if (namespace.sharedLibrary === undefined) {\n return;\n }\n\n const docsContext = docsSignatureContext(namespace, this.library);\n\n for (const fn of dedupeCallables(namespace.functions)) {\n const entry = functionEntry(namespace, docsContext, fn);\n\n if (entry !== undefined) {\n this.add(entry);\n }\n }\n }\n\n private toApiSymbol(entry: SymbolEntry): ApiSymbol {\n return {\n namespace: entry.namespace.name,\n name: entry.name,\n kind: entry.kind,\n summary: firstSentence(entry.doc),\n };\n }\n\n private symbolPageOptions(): SymbolPageOptions {\n return {\n library: this.library,\n elementNameFor: (namespaceName, className) => this.elementsByClass.get(`${namespaceName}.${className}`),\n };\n }\n\n private renderPage(entry: SymbolEntry): string {\n if (entry.kind === \"element\") {\n this.applyElementConfig();\n\n return renderElementPage(entry.element, this.elementContext);\n }\n\n return renderSymbolPage(entry, this.symbolPageOptions());\n }\n\n private findNamespace(name: string): GirNamespace | undefined {\n const lower = name.toLowerCase();\n\n for (const namespace of this.library.namespaces.values()) {\n if (namespace.name.toLowerCase() === lower) {\n return namespace;\n }\n }\n\n return undefined;\n }\n\n private lookupCandidates(trimmed: string, kind: ApiSymbolKind | undefined): SymbolEntry[] {\n const isQualified = trimmed.includes(\".\");\n const map = isQualified ? this.byQualified : this.byName;\n let candidates = map.get(trimmed.toLowerCase()) ?? [];\n\n if (kind !== undefined) {\n candidates = candidates.filter((entry) => entry.kind === kind);\n }\n\n return narrowToExactMatches(candidates, trimmed, isQualified);\n }\n\n private scoreEntries(\n query: string,\n namespaceFilter: string | undefined,\n kinds: ApiSymbolKind[] | undefined,\n ): ScoredEntry[] {\n const scored: ScoredEntry[] = [];\n\n for (const entry of this.entries) {\n const item = getScoredEntry(entry, query, namespaceFilter, kinds);\n\n if (item !== undefined) {\n scored.push(item);\n }\n }\n\n return scored;\n }\n\n /** Paths of the `.gir` files the index was built from, including the ones pulled in as dependencies. */\n get girFiles(): string[] {\n return this.library.girFiles;\n }\n\n /**\n * Resolves a name to a single symbol and renders its reference page. The name may be bare (`Button`) or\n * qualified (`Gtk.Button`), and is matched case-insensitively; a name several symbols answer to is\n * reported as ambiguous rather than picked between.\n *\n * @param kind Restricts the match to one kind, which is how a class and its JSX element are told apart.\n */\n lookup(query: string, kind?: ApiSymbolKind): ApiLookupResult {\n const trimmed = query.trim();\n\n if (trimmed.length === 0) {\n return { outcome: \"notFound\" };\n }\n\n const candidates = this.lookupCandidates(trimmed, kind);\n const entry = candidates[0];\n\n if (entry === undefined) {\n return { outcome: \"notFound\" };\n }\n\n if (candidates.length > 1) {\n return { outcome: \"ambiguous\", candidates: candidates.map((candidate) => this.toApiSymbol(candidate)) };\n }\n\n return { outcome: \"page\", symbol: this.toApiSymbol(entry), markdown: this.renderPage(entry) };\n }\n\n /** Every indexed symbol the query keeps, ordered by namespace (Gtk, then Adw, then alphabetically) and name. */\n symbols(query: ApiSymbolQuery = {}): ApiSymbol[] {\n const namespaceFilter = query.namespace?.toLowerCase();\n const kinds = query.kinds === undefined ? undefined : new Set(query.kinds);\n\n return this.entries\n .filter((entry) => isQueriedEntry(entry, namespaceFilter, kinds))\n .map((entry) => this.toApiSymbol(entry))\n .toSorted(compareApiSymbols);\n }\n\n /**\n * Symbols whose name matches the query, best first: an exact name beats a prefix, which beats a\n * substring, and shorter names win ties. An empty query matches nothing.\n */\n search(options: ApiSearchOptions): ApiSymbol[] {\n const query = options.query.trim().toLowerCase();\n\n if (query.length === 0) {\n return [];\n }\n\n const limit = Math.max(1, Math.floor(options.limit ?? DEFAULT_SEARCH_LIMIT));\n const namespaceFilter = options.namespace?.toLowerCase();\n const scored = this.scoreEntries(query, namespaceFilter, options.kinds);\n scored.sort(compareScoredEntries);\n\n return scored.slice(0, limit).map((item) => this.toApiSymbol(item.entry));\n }\n\n /** A summary of every indexed namespace, ordered Gtk, Adw, then alphabetically. */\n namespaces(): ApiNamespaceSummary[] {\n const summaries = [...this.byNamespace].map(([name, entries]) => ({\n name,\n importPath: `@gtkx/gi/${namespaceDirectory({ name })}`,\n symbols: entries.filter((entry) => entry.kind !== \"element\").length,\n elements: entries.filter((entry) => entry.kind === \"element\").length,\n }));\n\n return sortStringsBy(summaries, (summary) => namespaceOrder(summary.name));\n }\n\n /**\n * Sorted names of everything a namespace contributes, JSX elements included. The namespace is matched\n * case-insensitively, and an unindexed one yields an empty array.\n */\n symbolNames(namespaceName: string): string[] {\n const namespace = this.findNamespace(namespaceName);\n\n if (namespace === undefined) {\n return [];\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n\n return sortStrings(entries.map((entry) => entry.name));\n }\n\n /** Renders the reference's Markdown landing page: every namespace, its import path, and its totals. */\n overview(): string {\n const rows = this.namespaces().map(\n (summary) =>\n `| ${summary.name} | \\`${summary.importPath}\\` | ${String(summary.symbols)} | ` +\n `${String(summary.elements)} |`,\n );\n\n const librariesList = this.libraries.map((library) => `\\`${library}\\``).join(\", \");\n\n return [\n \"# API Reference\",\n \"\",\n `Generated bindings for ${librariesList} and the namespaces they pull in. Classes, interfaces, ` +\n \"records, enums, callbacks, aliases, functions, and constants are imported from \" +\n \"`@gtkx/gi/<namespace>`; JSX elements are imported from `@gtkx/jsx/<namespace>`.\",\n \"\",\n \"Every symbol has a reference page addressed by its qualified name (for example `Gtk.Button`, \" +\n \"`Gtk.Orientation`, `GLib.idleAdd`) and every JSX element by its element name \" +\n \"(for example `GtkButton`).\",\n \"\",\n \"| Namespace | Import | Symbols | JSX elements |\",\n \"| --- | --- | --- | --- |\",\n ...rows,\n \"\",\n ].join(\"\\n\");\n }\n\n /**\n * Renders one namespace's Markdown page: its import line and its symbol names grouped by kind. The\n * namespace is matched case-insensitively, and an unindexed one yields undefined.\n */\n namespaceOverview(name: string): string | undefined {\n const namespace = this.findNamespace(name);\n\n if (namespace === undefined) {\n return undefined;\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n const directory = namespaceDirectory(namespace);\n\n const lines = [\n `# ${namespace.name}`,\n \"\",\n `\\`\\`\\`ts\\nimport * as ${namespace.name} from \"@gtkx/gi/${directory}\";\\n\\`\\`\\``,\n ];\n\n for (const kind of API_SYMBOL_KINDS) {\n const names = entries.filter((entry) => entry.kind === kind).map((entry) => entry.name);\n\n if (names.length === 0) {\n continue;\n }\n\n lines.push(\n \"\",\n `## ${KIND_SECTION_TITLES[kind]} (${String(names.length)})`,\n \"\",\n sortStrings(names)\n .map((symbolName) => `\\`${symbolName}\\``)\n .join(\", \"),\n );\n }\n\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n }\n}\n\nexport type { ApiReference };\nexport {\n API_SYMBOL_KINDS,\n loadApiReference,\n type ApiReferenceOptions,\n type ApiSymbolKind,\n type ApiSymbol,\n type ApiNamespaceSummary,\n type ApiLookupResult,\n type ApiSearchOptions,\n type ApiSymbolQuery,\n};\n"]}
1
+ {"version":3,"file":"api-reference.js","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport { Library } from \"../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { dedupeCallables, isEmittableCallable } from \"../store/gi/callables.js\";\nimport { namespaceFunctionExportName } from \"../store/gi/function.js\";\nimport { type ElementProps, setElementProps } from \"../store/jsx/element-prop-imports.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"../store/jsx/intrinsic-elements.js\";\nimport { type OmittedProps, setOmittedProps } from \"../store/jsx/omitted-props.js\";\nimport { type ElementPageContext, renderElementPage } from \"./element-page.js\";\nimport { docsSignatureContext, firstSentence, namespaceOrder } from \"./render.js\";\nimport { type GiSymbolEntry, renderSymbolPage, type SymbolPageOptions } from \"./symbol-page.js\";\n\n/** What to index and the element config the rendered pages reflect. */\ntype ApiReferenceOptions = {\n /** GIR library identifiers to load, such as `\"Gtk-4.0\"`; their dependencies are pulled in too. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Base props interfaces per element, as read by `readBuiltinElements`; without it pages miss them. */\n props?: ElementProps;\n /** GObject properties the project omits from generated props; without it pages show props that do not exist. */\n omittedProps?: OmittedProps;\n};\n\n/** Narrows an `ApiReference.symbols` enumeration. */\ntype ApiSymbolQuery = {\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n};\n\n/** What an indexed symbol is: one of the GIR symbol kinds, or a JSX element. */\ntype ApiSymbolKind =\n \"alias\" |\n \"callback\" |\n \"class\" |\n \"constant\" |\n \"element\" |\n \"enum\" |\n \"function\" |\n \"interface\" |\n \"record\";\n\n/** An indexed symbol, without its reference page. */\ntype ApiSymbol = {\n /** GIR namespace declaring the symbol, such as `\"Gtk\"`. */\n namespace: string;\n /** Name within the namespace, which for an element is its GLib type name. */\n name: string;\n /** Kind the reference groups and filters the symbol by, `\"element\"` for a JSX tag. */\n kind: ApiSymbolKind;\n /** First sentence of the symbol's GIR documentation, elided past 220 characters and empty when it has none. */\n summary: string;\n};\n\n/** How much of one namespace the reference indexes. */\ntype ApiNamespaceSummary = {\n /** GIR namespace name, such as `\"Gtk\"`. */\n name: string;\n /** The `@gtkx/gi` subpath the namespace's symbols are imported from. */\n importPath: string;\n /** How many symbols other than JSX elements the namespace contributes. */\n symbols: number;\n /** How many JSX elements the namespace contributes. */\n elements: number;\n};\n\n/** What an `ApiReference.lookup` found: a rendered page, several candidates for the name, or nothing. */\ntype ApiLookupResult =\n | {\n /** Discriminant selecting the variant. */\n outcome: \"page\";\n /** Index entry for the symbol the query resolved to. */\n symbol: ApiSymbol;\n /** The symbol's complete reference page, rendered as Markdown. */\n markdown: string;\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"ambiguous\";\n /** Every symbol the name answers to, to be narrowed by namespace or kind. */\n candidates: ApiSymbol[];\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"notFound\";\n };\n\n/** A fuzzy search over indexed symbol names. */\ntype ApiSearchOptions = {\n /** Text matched case-insensitively against each symbol's name and its qualified `Namespace.Name` form. */\n query: string;\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n /** Maximum number of results, 20 by default. */\n limit?: number;\n};\n\n/** An indexed JSX element, carrying the widget class its page renders from. */\ntype ElementEntry = {\n /** Discriminant marking the entry as a JSX element rather than a GIR symbol. */\n kind: \"element\";\n /** GIR namespace declaring the widget class. */\n namespace: GirNamespace;\n /** Element name, which is the class's GLib type name such as `GtkButton`. */\n name: string;\n /** Documentation text carried by the widget class's GIR node. */\n doc: string | undefined;\n /** The widget class the element is generated from. */\n element: GlibNamedClass;\n};\n\n/** Anything the index holds: a GIR symbol or a JSX element. */\ntype SymbolEntry = GiSymbolEntry | ElementEntry;\n\n/** A search hit: an indexed entry and how well its name answered the query. */\ntype ScoredEntry = {\n /** Match strength, ranked best first: an exact name, then a prefix, then a substring. */\n score: number;\n /** The entry that matched. */\n entry: SymbolEntry;\n};\n\n/** Every kind the reference indexes, in the order a namespace overview groups its symbols. */\nconst API_SYMBOL_KINDS: ApiSymbolKind[] = [\n \"element\",\n \"class\",\n \"interface\",\n \"record\",\n \"enum\",\n \"callback\",\n \"alias\",\n \"function\",\n \"constant\",\n];\n\nconst KIND_SECTION_TITLES: Record<ApiSymbolKind, string> = {\n element: \"JSX elements\",\n class: \"Classes\",\n interface: \"Interfaces\",\n record: \"Records\",\n enum: \"Enums\",\n callback: \"Callbacks\",\n alias: \"Aliases\",\n function: \"Functions\",\n constant: \"Constants\",\n};\n\nconst DEFAULT_SEARCH_LIMIT = 20;\n\nconst compareNames = (a: string, b: string): number => {\n if (a < b) {\n return -1;\n }\n\n return a > b ? 1 : 0;\n};\n\nconst symbolKindSet = (kinds: ApiSymbolKind[] | undefined): Set<ApiSymbolKind> | undefined =>\n kinds === undefined ? undefined : new Set(kinds);\n\nconst isQueriedEntry = (\n entry: SymbolEntry,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): boolean => {\n if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {\n return false;\n }\n\n return kinds === undefined || kinds.has(entry.kind);\n};\n\nconst compareApiSymbols = (a: ApiSymbol, b: ApiSymbol): number => {\n const byNamespace = namespaceOrder(a.namespace).localeCompare(namespaceOrder(b.namespace));\n\n return byNamespace === 0 ? a.name.localeCompare(b.name) : byNamespace;\n};\n\n/**\n * Loads the GIR data for the given libraries and indexes every symbol and JSX element in it. The result is\n * a read-only view: it generates no store and needs none, so a tool can explore the bindings a project would\n * get without running codegen.\n *\n * @param options Which libraries to index, where to find them, and the project's element config.\n * @returns The indexed reference.\n */\nconst loadApiReference = (options: ApiReferenceOptions): ApiReference => new ApiReference(options);\n\nconst functionEntry = (\n namespace: GirNamespace,\n docsContext: ReturnType<typeof docsSignatureContext>,\n fn: GirFunction,\n): GiSymbolEntry | undefined => {\n if (!isEmittableCallable(docsContext, fn)) {\n return undefined;\n }\n\n const cIdentifier = fn.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = namespaceFunctionExportName(cIdentifier, fn.name, namespace.cSymbolPrefixes);\n\n return { kind: \"function\", namespace, name, doc: fn.doc, fn };\n};\n\nconst classEntry = (namespace: GirNamespace, klass: GirClass): GiSymbolEntry | undefined => {\n if (!klass.introspectable || klass.name.length === 0) {\n return undefined;\n }\n\n const kind = klass.isInterface ? \"interface\" : \"class\";\n\n return { kind, namespace, name: pascalCase(klass.name), doc: klass.doc, klass };\n};\n\nconst classEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const klass of [...namespace.classes, ...namespace.interfaces]) {\n const entry = classEntry(namespace, klass);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst recordEntry = (namespace: GirNamespace, record: GirRecord): GiSymbolEntry | undefined => {\n if (!record.introspectable || record.isVtable || record.name.length === 0) {\n return undefined;\n }\n\n return { kind: \"record\", namespace, name: record.name, doc: record.doc, record };\n};\n\nconst recordEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const record of namespace.records) {\n const entry = recordEntry(namespace, record);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst valueEntries = (namespace: GirNamespace): GiSymbolEntry[] => [\n ...namespace.enums\n .filter((enumeration) => enumeration.introspectable)\n .map<GiSymbolEntry>((enumeration) => ({\n kind: \"enum\",\n namespace,\n name: enumeration.name,\n doc: enumeration.doc,\n enumeration,\n })),\n ...namespace.callbacks\n .filter((callback) => callback.introspectable)\n .map<GiSymbolEntry>((callback) => ({\n kind: \"callback\",\n namespace,\n name: callback.name,\n doc: callback.doc,\n callback,\n })),\n ...namespace.aliases.map<GiSymbolEntry>((alias) => ({\n kind: \"alias\",\n namespace,\n name: alias.name,\n doc: alias.doc,\n alias,\n })),\n ...namespace.constants.map<GiSymbolEntry>((constant) => ({\n kind: \"constant\",\n namespace,\n name: constant.name,\n doc: constant.doc,\n constant,\n })),\n];\n\nconst narrowToExactMatches = (candidates: SymbolEntry[], trimmed: string, isQualified: boolean): SymbolEntry[] => {\n if (candidates.length <= 1) {\n return candidates;\n }\n\n const exact = candidates.filter(\n (entry) => (isQualified ? `${entry.namespace.name}.${entry.name}` : entry.name) === trimmed,\n );\n\n return exact.length > 0 ? exact : candidates;\n};\n\nconst getScoredEntry = (\n entry: SymbolEntry,\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): ScoredEntry | undefined => {\n if (!isQueriedEntry(entry, namespaceFilter, kinds)) {\n return undefined;\n }\n\n const score = searchScore(entry, query);\n\n if (score === 0) {\n return undefined;\n }\n\n return { score, entry };\n};\n\nconst compareScoredEntries = (a: ScoredEntry, b: ScoredEntry): number =>\n b.score - a.score ||\n a.entry.name.length - b.entry.name.length ||\n compareNames(a.entry.name, b.entry.name) ||\n compareNames(namespaceOrder(a.entry.namespace.name), namespaceOrder(b.entry.namespace.name)) ||\n compareNames(a.entry.kind, b.entry.kind);\n\nconst searchScore = (entry: SymbolEntry, query: string): number => {\n const name = entry.name.toLowerCase();\n const qualified = `${entry.namespace.name.toLowerCase()}.${name}`;\n\n if (name === query || qualified === query) {\n return 3;\n }\n\n if (name.startsWith(query)) {\n return 2;\n }\n\n if (name.includes(query) || qualified.includes(query)) {\n return 1;\n }\n\n return 0;\n};\n\n/** An index over the GIR data a project's bindings are generated from, queryable and renderable as Markdown. */\nclass ApiReference {\n private library: Library;\n private libraries: string[];\n private elementContext: ElementPageContext;\n private entries: SymbolEntry[] = [];\n private byQualified: Map<string, SymbolEntry[]> = new Map();\n private byName: Map<string, SymbolEntry[]> = new Map();\n private byNamespace: Map<string, SymbolEntry[]> = new Map();\n private elementsByClass: Map<string, string> = new Map();\n\n private props: ElementProps;\n private omittedProps: OmittedProps;\n\n /** Indexes every symbol and JSX element in the GIR data the options point at. */\n constructor(options: ApiReferenceOptions) {\n this.libraries = options.libraries;\n this.props = options.props ?? {};\n this.omittedProps = options.omittedProps ?? {};\n this.library = Library.load(options.libraries, options.girPath);\n this.elementContext = { library: this.library, linkFor: (): string | undefined => undefined };\n this.buildIndex();\n }\n\n private applyElementConfig(): void {\n setElementProps(this.props);\n setOmittedProps(this.omittedProps);\n }\n\n private add(entry: SymbolEntry): void {\n this.entries.push(entry);\n\n const push = (map: Map<string, SymbolEntry[]>, key: string): void => {\n const list = map.get(key) ?? [];\n list.push(entry);\n map.set(key, list);\n };\n\n push(this.byQualified, `${entry.namespace.name}.${entry.name}`.toLowerCase());\n push(this.byName, entry.name.toLowerCase());\n push(this.byNamespace, entry.namespace.name);\n }\n\n private buildIndex(): void {\n for (const namespace of this.library.namespaces.values()) {\n this.indexNamespace(namespace);\n }\n\n for (const element of collectIntrinsicElementClasses(this.library)) {\n this.add({\n kind: \"element\",\n namespace: element.namespace,\n name: element.glibName,\n doc: element.klass.doc,\n element,\n });\n\n this.elementsByClass.set(`${element.namespace.name}.${element.klass.name}`, element.glibName);\n }\n }\n\n private indexNamespace(namespace: GirNamespace): void {\n const entries = [\n ...classEntries(namespace),\n ...recordEntries(namespace),\n ...valueEntries(namespace),\n ];\n\n for (const entry of entries) {\n this.add(entry);\n }\n\n this.indexFunctions(namespace);\n }\n\n private indexFunctions(namespace: GirNamespace): void {\n if (namespace.sharedLibrary === undefined) {\n return;\n }\n\n const docsContext = docsSignatureContext(namespace, this.library);\n\n for (const fn of dedupeCallables(namespace.functions)) {\n const entry = functionEntry(namespace, docsContext, fn);\n\n if (entry !== undefined) {\n this.add(entry);\n }\n }\n }\n\n private toApiSymbol(entry: SymbolEntry): ApiSymbol {\n return {\n namespace: entry.namespace.name,\n name: entry.name,\n kind: entry.kind,\n summary: firstSentence(entry.doc),\n };\n }\n\n private symbolPageOptions(): SymbolPageOptions {\n return {\n library: this.library,\n elementNameFor: (namespaceName, className) => this.elementsByClass.get(`${namespaceName}.${className}`),\n };\n }\n\n private renderPage(entry: SymbolEntry): string {\n if (entry.kind === \"element\") {\n this.applyElementConfig();\n\n return renderElementPage(entry.element, this.elementContext);\n }\n\n return renderSymbolPage(entry, this.symbolPageOptions());\n }\n\n private findNamespace(name: string): GirNamespace | undefined {\n const lower = name.toLowerCase();\n\n for (const namespace of this.library.namespaces.values()) {\n if (namespace.name.toLowerCase() === lower) {\n return namespace;\n }\n }\n\n return undefined;\n }\n\n private lookupCandidates(trimmed: string, kind: ApiSymbolKind | undefined): SymbolEntry[] {\n const isQualified = trimmed.includes(\".\");\n const map = isQualified ? this.byQualified : this.byName;\n let candidates = map.get(trimmed.toLowerCase()) ?? [];\n\n if (kind !== undefined) {\n candidates = candidates.filter((entry) => entry.kind === kind);\n }\n\n return narrowToExactMatches(candidates, trimmed, isQualified);\n }\n\n private scoreEntries(\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n ): ScoredEntry[] {\n const scored: ScoredEntry[] = [];\n\n for (const entry of this.entries) {\n const item = getScoredEntry(entry, query, namespaceFilter, kinds);\n\n if (item !== undefined) {\n scored.push(item);\n }\n }\n\n return scored;\n }\n\n /** Paths of the `.gir` files the index was built from, including the ones pulled in as dependencies. */\n get girFiles(): string[] {\n return this.library.girFiles;\n }\n\n /**\n * Resolves a name to a single symbol and renders its reference page. The name may be bare (`Button`) or\n * qualified (`Gtk.Button`), and is matched case-insensitively; a name several symbols answer to is\n * reported as ambiguous rather than picked between.\n *\n * @param kind Restricts the match to one kind, which is how a class and its JSX element are told apart.\n */\n lookup(query: string, kind?: ApiSymbolKind): ApiLookupResult {\n const trimmed = query.trim();\n\n if (trimmed.length === 0) {\n return { outcome: \"notFound\" };\n }\n\n const candidates = this.lookupCandidates(trimmed, kind);\n const entry = candidates[0];\n\n if (entry === undefined) {\n return { outcome: \"notFound\" };\n }\n\n if (candidates.length > 1) {\n return { outcome: \"ambiguous\", candidates: candidates.map((candidate) => this.toApiSymbol(candidate)) };\n }\n\n return { outcome: \"page\", symbol: this.toApiSymbol(entry), markdown: this.renderPage(entry) };\n }\n\n /** Every indexed symbol the query keeps, ordered by namespace (Gtk, then Adw, then alphabetically) and name. */\n symbols(query: ApiSymbolQuery = {}): ApiSymbol[] {\n const namespaceFilter = query.namespace?.toLowerCase();\n const kinds = symbolKindSet(query.kinds);\n\n return this.entries\n .filter((entry) => isQueriedEntry(entry, namespaceFilter, kinds))\n .map((entry) => this.toApiSymbol(entry))\n .toSorted(compareApiSymbols);\n }\n\n /**\n * Symbols whose name matches the query, best first: an exact name beats a prefix, which beats a\n * substring, and shorter names win ties. An empty query matches nothing.\n */\n search(options: ApiSearchOptions): ApiSymbol[] {\n const query = options.query.trim().toLowerCase();\n\n if (query.length === 0) {\n return [];\n }\n\n const limit = Math.max(1, Math.floor(options.limit ?? DEFAULT_SEARCH_LIMIT));\n const namespaceFilter = options.namespace?.toLowerCase();\n const scored = this.scoreEntries(query, namespaceFilter, symbolKindSet(options.kinds));\n scored.sort(compareScoredEntries);\n\n return scored.slice(0, limit).map((item) => this.toApiSymbol(item.entry));\n }\n\n /** A summary of every indexed namespace, ordered Gtk, Adw, then alphabetically. */\n namespaces(): ApiNamespaceSummary[] {\n const summaries = [...this.byNamespace].map(([name, entries]) => ({\n name,\n importPath: `@gtkx/gi/${namespaceDirectory({ name })}`,\n symbols: entries.filter((entry) => entry.kind !== \"element\").length,\n elements: entries.filter((entry) => entry.kind === \"element\").length,\n }));\n\n return sortStringsBy(summaries, (summary) => namespaceOrder(summary.name));\n }\n\n /**\n * Sorted names of everything a namespace contributes, JSX elements included. The namespace is matched\n * case-insensitively, and an unindexed one yields an empty array.\n */\n symbolNames(namespaceName: string): string[] {\n const namespace = this.findNamespace(namespaceName);\n\n if (namespace === undefined) {\n return [];\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n\n return sortStrings(entries.map((entry) => entry.name));\n }\n\n /** Renders the reference's Markdown landing page: every namespace, its import path, and its totals. */\n overview(): string {\n const rows = this.namespaces().map(\n (summary) =>\n `| ${summary.name} | \\`${summary.importPath}\\` | ${String(summary.symbols)} | ` +\n `${String(summary.elements)} |`,\n );\n\n const librariesList = this.libraries.map((library) => `\\`${library}\\``).join(\", \");\n\n return [\n \"# API Reference\",\n \"\",\n `Generated bindings for ${librariesList} and the namespaces they pull in. Classes, interfaces, ` +\n \"records, enums, callbacks, aliases, functions, and constants are imported from \" +\n \"`@gtkx/gi/<namespace>`; JSX elements are imported from `@gtkx/jsx/<namespace>`.\",\n \"\",\n \"Every symbol has a reference page addressed by its qualified name (for example `Gtk.Button`, \" +\n \"`Gtk.Orientation`, `GLib.idleAdd`) and every JSX element by its element name \" +\n \"(for example `GtkButton`).\",\n \"\",\n \"| Namespace | Import | Symbols | JSX elements |\",\n \"| --- | --- | --- | --- |\",\n ...rows,\n \"\",\n ].join(\"\\n\");\n }\n\n /**\n * Renders one namespace's Markdown page: its import line and its symbol names grouped by kind. The\n * namespace is matched case-insensitively, and an unindexed one yields undefined.\n */\n namespaceOverview(name: string): string | undefined {\n const namespace = this.findNamespace(name);\n\n if (namespace === undefined) {\n return undefined;\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n const directory = namespaceDirectory(namespace);\n\n const lines = [\n `# ${namespace.name}`,\n \"\",\n `\\`\\`\\`ts\\nimport * as ${namespace.name} from \"@gtkx/gi/${directory}\";\\n\\`\\`\\``,\n ];\n\n for (const kind of API_SYMBOL_KINDS) {\n const names = entries.filter((entry) => entry.kind === kind).map((entry) => entry.name);\n\n if (names.length === 0) {\n continue;\n }\n\n lines.push(\n \"\",\n `## ${KIND_SECTION_TITLES[kind]} (${String(names.length)})`,\n \"\",\n sortStrings(names)\n .map((symbolName) => `\\`${symbolName}\\``)\n .join(\", \"),\n );\n }\n\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n }\n}\n\nexport type { ApiReference };\nexport {\n API_SYMBOL_KINDS,\n loadApiReference,\n type ApiReferenceOptions,\n type ApiSymbolKind,\n type ApiSymbol,\n type ApiNamespaceSummary,\n type ApiLookupResult,\n type ApiSearchOptions,\n type ApiSymbolQuery,\n};\n"]}
@@ -1,12 +1,12 @@
1
1
  import type { Library } from "../gir/library.js";
2
- import { type GirIndex } from "../store/jsx/gir-index.js";
3
2
  import { type GlibNamedClass } from "../store/jsx/intrinsic-elements.js";
3
+ /** Shared state an element's reference page renders from. */
4
4
  type ElementPageContext = {
5
+ /** Parsed GIR the element, its ancestors, and the interfaces it implements are read from. */
5
6
  library: Library;
6
- girIndex: GirIndex;
7
+ /** Resolves a GLib type name to the URL of its page, undefined when it has none. */
7
8
  linkFor: (glibName: string) => string | undefined;
8
9
  };
9
- declare const createElementPageContext: (library: Library, linkFor: (glibName: string) => string | undefined) => ElementPageContext;
10
10
  declare const renderElementPage: (entry: GlibNamedClass, context: ElementPageContext) => string;
11
- export { createElementPageContext, renderElementPage, type ElementPageContext };
11
+ export { renderElementPage, type ElementPageContext };
12
12
  //# sourceMappingURL=element-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"element-page.d.ts","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,oCAAoC,CAAC;AAiB5C,KAAK,kBAAkB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD,CAAC;AAsBF,QAAA,MAAM,wBAAwB,GAC1B,SAAS,OAAO,EAChB,SAAS,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,KAClD,kBAA8E,CAAC;AAyMlF,QAAA,MAAM,iBAAiB,GAAI,OAAO,cAAc,EAAE,SAAS,kBAAkB,KAAG,MAa/E,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"element-page.d.ts","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAOjD,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,oCAAoC,CAAC;AAsB5C,6DAA6D;AAC7D,KAAK,kBAAkB,GAAG;IACtB,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD,CAAC;AA+NF,QAAA,MAAM,iBAAiB,GAAI,OAAO,cAAc,EAAE,SAAS,kBAAkB,KAAG,MAc/E,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
@@ -1,14 +1,14 @@
1
- import { sortStringsBy, toCamelIdentifier, upperFirst } from "@gtkx/utils";
1
+ import { toCamelIdentifier, upperFirst } from "@gtkx/utils";
2
2
  import { ancestorChain } from "../gir/ancestry.js";
3
3
  import { namespaceDirectory } from "../gir/namespace.js";
4
4
  import { isConstructableProperty } from "../gir/property.js";
5
+ import { annotationSpec } from "../store/gi/doc-spec.js";
5
6
  import { elementPropTypeFor } from "../store/jsx/element-prop-imports.js";
6
- import { buildGirIndex } from "../store/jsx/gir-index.js";
7
7
  import { getGlibName, implementedInterfaces, newlyImplementedInterfaces, signalHandlerName, } from "../store/jsx/intrinsic-elements.js";
8
8
  import { isOmittedProp } from "../store/jsx/omitted-props.js";
9
9
  import { isObjectProp } from "../store/jsx/props.js";
10
- import { classMethodEntries, docMarkdown, docsDefaultValue, firstSentence, implementsLine, joinSections, metaBlock, methodsSectionBlocks, originSignatureBlocks, renderDocsSignalSignature, renderDocsType, } from "./render.js";
11
- const createElementPageContext = (library, linkFor) => ({ library, girIndex: buildGirIndex(library), linkFor });
10
+ import { handwrittenPropsFor } from "./handwritten-props.js";
11
+ import { annotationNotes, classMethodEntries, docMarkdown, firstSentence, implementsLine, joinSections, methodsSectionBlocks, originSignatureBlocks, propertyMetaLine, renderDocsSignalSignature, renderDocsType, signalTags, sortedMetaBlocks, } from "./render.js";
12
12
  const frontmatter = (entry) => {
13
13
  const sentence = firstSentence(entry.klass.doc);
14
14
  const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;
@@ -47,20 +47,31 @@ const propertyEntry = (context, owner, property, jsName) => {
47
47
  const isObject = isObjectProp(context.library, property);
48
48
  const baseType = renderDocsType(context.library, property.type, false);
49
49
  const type = isObject ? `${baseType} | ReactElement` : baseType;
50
- const meta = [`\`${type}\``];
51
- if (property.defaultValue !== undefined) {
52
- meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
53
- }
54
- if (property.constructOnly) {
55
- meta.push("construct-only");
56
- }
57
- if (!isConstructableProperty(property)) {
58
- meta.push(`read-only, observe with \`onNotify${upperFirst(jsName)}\``);
50
+ const accessNotes = isConstructableProperty(property)
51
+ ? []
52
+ : [`read-only, observe with \`onNotify${upperFirst(jsName)}\``];
53
+ return {
54
+ name: jsName,
55
+ meta: propertyMetaLine({ type, property, accessNotes, origin: owner.origin }),
56
+ doc: docMarkdown(property.doc),
57
+ tags: annotationSpec(property.annotations),
58
+ };
59
+ };
60
+ const handwrittenPropMeta = (prop, owner) => [`\`${prop.type}\``, ...(owner.origin === undefined ? [] : [`from \`${owner.origin}\``])].join(" · ");
61
+ const handwrittenPropEntries = (owner, seen) => {
62
+ const declared = owner.glibName === undefined ? undefined : elementPropTypeFor(owner.glibName);
63
+ if (declared === undefined) {
64
+ return [];
59
65
  }
60
- if (owner.origin !== undefined) {
61
- meta.push(`from \`${owner.origin}\``);
66
+ const entries = [];
67
+ for (const prop of handwrittenPropsFor(declared)) {
68
+ if (seen.has(prop.name)) {
69
+ continue;
70
+ }
71
+ seen.add(prop.name);
72
+ entries.push({ name: prop.name, meta: handwrittenPropMeta(prop, owner), doc: prop.doc });
62
73
  }
63
- return { name: jsName, meta: meta.join(" · "), doc: docMarkdown(property.doc) };
74
+ return entries;
64
75
  };
65
76
  const propJsName = (property, owner, seen) => {
66
77
  if (!property.introspectable) {
@@ -74,7 +85,7 @@ const propJsName = (property, owner, seen) => {
74
85
  return jsName;
75
86
  };
76
87
  const ownerPropEntries = (context, owner, seen) => {
77
- const entries = [];
88
+ const entries = [...handwrittenPropEntries(owner, seen)];
78
89
  for (const property of owner.klass.properties) {
79
90
  const jsName = propJsName(property, owner, seen);
80
91
  if (jsName !== undefined) {
@@ -102,8 +113,7 @@ const propsSection = (entry, context, selfType) => {
102
113
  if (entries.length === 0) {
103
114
  return ["## Props", intro];
104
115
  }
105
- const sorted = sortStringsBy(entries, (item) => item.name);
106
- return ["## Props", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];
116
+ return ["## Props", intro, ...sortedMetaBlocks(entries)];
107
117
  };
108
118
  const ownerSignalEntries = (context, owner, selfType, seen) => {
109
119
  const entries = [];
@@ -117,6 +127,7 @@ const ownerSignalEntries = (context, owner, selfType, seen) => {
117
127
  name,
118
128
  signature: renderDocsSignalSignature(context.library, signal, selfType),
119
129
  doc: docMarkdown(signal.doc),
130
+ tags: signalTags(signal, true),
120
131
  origin: owner.origin,
121
132
  });
122
133
  }
@@ -146,6 +157,7 @@ const renderElementPage = (entry, context) => {
146
157
  frontmatter(entry),
147
158
  `# ${entry.glibName}`,
148
159
  docMarkdown(entry.klass.doc),
160
+ ...annotationNotes(entry.klass.annotations),
149
161
  importBlock(entry),
150
162
  ...hierarchySection(entry, context),
151
163
  ...propsSection(entry, context, selfType),
@@ -153,5 +165,5 @@ const renderElementPage = (entry, context) => {
153
165
  ...methodsSection(entry, context, selfType),
154
166
  ]);
155
167
  };
156
- export { createElementPageContext, renderElementPage };
168
+ export { renderElementPage };
157
169
  //# sourceMappingURL=element-page.js.map