@gtkx/codegen 1.0.0-rc.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/README.md +8 -9
  2. package/dist/analysis/descriptor-render.d.ts +9 -4
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +51 -61
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +7 -7
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js +7 -7
  9. package/dist/analysis/descriptor.js.map +1 -1
  10. package/dist/analysis/inheritance.d.ts +1 -2
  11. package/dist/analysis/inheritance.d.ts.map +1 -1
  12. package/dist/analysis/inheritance.js +25 -22
  13. package/dist/analysis/inheritance.js.map +1 -1
  14. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  15. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  16. package/dist/analysis/nul-terminated-bytes.js +18 -0
  17. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  18. package/dist/analysis/param-capability.d.ts +5 -0
  19. package/dist/analysis/param-capability.d.ts.map +1 -0
  20. package/dist/analysis/param-capability.js +130 -0
  21. package/dist/analysis/param-capability.js.map +1 -0
  22. package/dist/analysis/param-structure.d.ts +13 -6
  23. package/dist/analysis/param-structure.d.ts.map +1 -1
  24. package/dist/analysis/param-structure.js +44 -20
  25. package/dist/analysis/param-structure.js.map +1 -1
  26. package/dist/analysis/ts-type.d.ts +1 -1
  27. package/dist/analysis/ts-type.d.ts.map +1 -1
  28. package/dist/analysis/ts-type.js +3 -5
  29. package/dist/analysis/ts-type.js.map +1 -1
  30. package/dist/analysis/type-shape.d.ts +8 -0
  31. package/dist/analysis/type-shape.d.ts.map +1 -0
  32. package/dist/analysis/type-shape.js +12 -0
  33. package/dist/analysis/type-shape.js.map +1 -0
  34. package/dist/compile.d.ts +1 -1
  35. package/dist/compile.d.ts.map +1 -1
  36. package/dist/compile.js +2 -1
  37. package/dist/compile.js.map +1 -1
  38. package/dist/docs/api-reference.d.ts +79 -3
  39. package/dist/docs/api-reference.d.ts.map +1 -1
  40. package/dist/docs/api-reference.js +68 -13
  41. package/dist/docs/api-reference.js.map +1 -1
  42. package/dist/docs/element-page.d.ts +4 -4
  43. package/dist/docs/element-page.d.ts.map +1 -1
  44. package/dist/docs/element-page.js +32 -20
  45. package/dist/docs/element-page.js.map +1 -1
  46. package/dist/docs/handwritten-props.d.ts +9 -0
  47. package/dist/docs/handwritten-props.d.ts.map +1 -0
  48. package/dist/docs/handwritten-props.js +149 -0
  49. package/dist/docs/handwritten-props.js.map +1 -0
  50. package/dist/docs/pipeline.d.ts +4 -4
  51. package/dist/docs/pipeline.d.ts.map +1 -1
  52. package/dist/docs/pipeline.js +6 -6
  53. package/dist/docs/pipeline.js.map +1 -1
  54. package/dist/docs/render.d.ts +25 -5
  55. package/dist/docs/render.d.ts.map +1 -1
  56. package/dist/docs/render.js +90 -28
  57. package/dist/docs/render.js.map +1 -1
  58. package/dist/docs/symbol-page.d.ts +22 -0
  59. package/dist/docs/symbol-page.d.ts.map +1 -1
  60. package/dist/docs/symbol-page.js +129 -44
  61. package/dist/docs/symbol-page.js.map +1 -1
  62. package/dist/fingerprint.d.ts +3 -6
  63. package/dist/fingerprint.d.ts.map +1 -1
  64. package/dist/fingerprint.js +6 -8
  65. package/dist/fingerprint.js.map +1 -1
  66. package/dist/gi.d.ts +3 -11
  67. package/dist/gi.d.ts.map +1 -1
  68. package/dist/gi.js +0 -7
  69. package/dist/gi.js.map +1 -1
  70. package/dist/gir/ancestry.d.ts +2 -2
  71. package/dist/gir/ancestry.d.ts.map +1 -1
  72. package/dist/gir/ancestry.js +11 -1
  73. package/dist/gir/ancestry.js.map +1 -1
  74. package/dist/gir/annotations.d.ts +22 -0
  75. package/dist/gir/annotations.d.ts.map +1 -0
  76. package/dist/gir/annotations.js +15 -0
  77. package/dist/gir/annotations.js.map +1 -0
  78. package/dist/gir/callback.d.ts +1 -0
  79. package/dist/gir/callback.d.ts.map +1 -1
  80. package/dist/gir/callback.js +1 -0
  81. package/dist/gir/callback.js.map +1 -1
  82. package/dist/gir/class.d.ts +32 -1
  83. package/dist/gir/class.d.ts.map +1 -1
  84. package/dist/gir/class.js +8 -3
  85. package/dist/gir/class.js.map +1 -1
  86. package/dist/gir/enum.d.ts +21 -1
  87. package/dist/gir/enum.d.ts.map +1 -1
  88. package/dist/gir/enum.js +9 -9
  89. package/dist/gir/enum.js.map +1 -1
  90. package/dist/gir/field.d.ts +19 -4
  91. package/dist/gir/field.d.ts.map +1 -1
  92. package/dist/gir/field.js +7 -11
  93. package/dist/gir/field.js.map +1 -1
  94. package/dist/gir/function.d.ts +15 -0
  95. package/dist/gir/function.d.ts.map +1 -1
  96. package/dist/gir/function.js.map +1 -1
  97. package/dist/gir/gir-path.d.ts +7 -0
  98. package/dist/gir/gir-path.d.ts.map +1 -1
  99. package/dist/gir/gir-path.js +7 -0
  100. package/dist/gir/gir-path.js.map +1 -1
  101. package/dist/gir/libraries.d.ts +13 -2
  102. package/dist/gir/libraries.d.ts.map +1 -1
  103. package/dist/gir/libraries.js +11 -0
  104. package/dist/gir/libraries.js.map +1 -1
  105. package/dist/gir/library.d.ts +36 -0
  106. package/dist/gir/library.d.ts.map +1 -1
  107. package/dist/gir/library.js +34 -0
  108. package/dist/gir/library.js.map +1 -1
  109. package/dist/gir/namespace.d.ts +38 -0
  110. package/dist/gir/namespace.d.ts.map +1 -1
  111. package/dist/gir/namespace.js +4 -5
  112. package/dist/gir/namespace.js.map +1 -1
  113. package/dist/gir/parameter.d.ts +39 -0
  114. package/dist/gir/parameter.d.ts.map +1 -1
  115. package/dist/gir/parameter.js +7 -7
  116. package/dist/gir/parameter.js.map +1 -1
  117. package/dist/gir/parse.d.ts +3 -1
  118. package/dist/gir/parse.d.ts.map +1 -1
  119. package/dist/gir/parse.js +6 -3
  120. package/dist/gir/parse.js.map +1 -1
  121. package/dist/gir/primitives.d.ts +1 -0
  122. package/dist/gir/primitives.d.ts.map +1 -1
  123. package/dist/gir/primitives.js.map +1 -1
  124. package/dist/gir/property.d.ts +16 -0
  125. package/dist/gir/property.d.ts.map +1 -1
  126. package/dist/gir/property.js +3 -3
  127. package/dist/gir/property.js.map +1 -1
  128. package/dist/gir/record.d.ts +22 -0
  129. package/dist/gir/record.d.ts.map +1 -1
  130. package/dist/gir/record.js +3 -2
  131. package/dist/gir/record.js.map +1 -1
  132. package/dist/gir/size.d.ts +5 -4
  133. package/dist/gir/size.d.ts.map +1 -1
  134. package/dist/gir/size.js +0 -3
  135. package/dist/gir/size.js.map +1 -1
  136. package/dist/gir/type-id.d.ts +36 -1
  137. package/dist/gir/type-id.d.ts.map +1 -1
  138. package/dist/gir/type-id.js +2 -3
  139. package/dist/gir/type-id.js.map +1 -1
  140. package/dist/gir/type-ref.d.ts.map +1 -1
  141. package/dist/gir/type-ref.js +2 -1
  142. package/dist/gir/type-ref.js.map +1 -1
  143. package/dist/gir/type.d.ts +20 -0
  144. package/dist/gir/type.d.ts.map +1 -1
  145. package/dist/gir/type.js.map +1 -1
  146. package/dist/index.d.ts +18 -6
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +12 -3
  149. package/dist/index.js.map +1 -1
  150. package/dist/internal.d.ts +3 -0
  151. package/dist/internal.d.ts.map +1 -0
  152. package/dist/internal.js +3 -0
  153. package/dist/internal.js.map +1 -0
  154. package/dist/jsx.d.ts +7 -12
  155. package/dist/jsx.d.ts.map +1 -1
  156. package/dist/jsx.js +18 -19
  157. package/dist/jsx.js.map +1 -1
  158. package/dist/khronos/args.d.ts +7 -6
  159. package/dist/khronos/args.d.ts.map +1 -1
  160. package/dist/khronos/args.js +29 -7
  161. package/dist/khronos/args.js.map +1 -1
  162. package/dist/khronos/doc-context.d.ts +29 -0
  163. package/dist/khronos/doc-context.d.ts.map +1 -0
  164. package/dist/khronos/doc-context.js +29 -0
  165. package/dist/khronos/doc-context.js.map +1 -0
  166. package/dist/khronos/extensions.d.ts +13 -0
  167. package/dist/khronos/extensions.d.ts.map +1 -0
  168. package/dist/khronos/extensions.js +49 -0
  169. package/dist/khronos/extensions.js.map +1 -0
  170. package/dist/khronos/jsdoc.d.ts +17 -11
  171. package/dist/khronos/jsdoc.d.ts.map +1 -1
  172. package/dist/khronos/jsdoc.js +104 -46
  173. package/dist/khronos/jsdoc.js.map +1 -1
  174. package/dist/khronos/model.d.ts +42 -3
  175. package/dist/khronos/model.d.ts.map +1 -1
  176. package/dist/khronos/model.js +218 -63
  177. package/dist/khronos/model.js.map +1 -1
  178. package/dist/khronos/modules.d.ts +9 -6
  179. package/dist/khronos/modules.d.ts.map +1 -1
  180. package/dist/khronos/modules.js +96 -26
  181. package/dist/khronos/modules.js.map +1 -1
  182. package/dist/khronos/notes.d.ts +19 -0
  183. package/dist/khronos/notes.d.ts.map +1 -0
  184. package/dist/khronos/notes.js +35 -0
  185. package/dist/khronos/notes.js.map +1 -0
  186. package/dist/khronos/param-pair.d.ts +1 -1
  187. package/dist/khronos/param-pair.d.ts.map +1 -1
  188. package/dist/khronos/param-pair.js.map +1 -1
  189. package/dist/khronos/pipeline.d.ts +3 -1
  190. package/dist/khronos/pipeline.d.ts.map +1 -1
  191. package/dist/khronos/pipeline.js +59 -28
  192. package/dist/khronos/pipeline.js.map +1 -1
  193. package/dist/khronos/plan.d.ts +5 -5
  194. package/dist/khronos/plan.d.ts.map +1 -1
  195. package/dist/khronos/plan.js +8 -8
  196. package/dist/khronos/plan.js.map +1 -1
  197. package/dist/khronos/render.d.ts +8 -6
  198. package/dist/khronos/render.d.ts.map +1 -1
  199. package/dist/khronos/render.js +35 -26
  200. package/dist/khronos/render.js.map +1 -1
  201. package/dist/khronos/select.d.ts +21 -4
  202. package/dist/khronos/select.d.ts.map +1 -1
  203. package/dist/khronos/select.js +47 -34
  204. package/dist/khronos/select.js.map +1 -1
  205. package/dist/react/element-config.d.ts +16 -10
  206. package/dist/react/element-config.d.ts.map +1 -1
  207. package/dist/react/element-config.js +22 -15
  208. package/dist/react/element-config.js.map +1 -1
  209. package/dist/runner.d.ts +33 -21
  210. package/dist/runner.d.ts.map +1 -1
  211. package/dist/runner.js +19 -20
  212. package/dist/runner.js.map +1 -1
  213. package/dist/store/compile-store.d.ts +2 -3
  214. package/dist/store/compile-store.d.ts.map +1 -1
  215. package/dist/store/compile-store.js +2 -2
  216. package/dist/store/compile-store.js.map +1 -1
  217. package/dist/store/gi/callable-doc.d.ts +11 -0
  218. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  219. package/dist/store/gi/callable-doc.js +62 -0
  220. package/dist/store/gi/callable-doc.js.map +1 -0
  221. package/dist/store/gi/callables.d.ts +3 -1
  222. package/dist/store/gi/callables.d.ts.map +1 -1
  223. package/dist/store/gi/callables.js +16 -16
  224. package/dist/store/gi/callables.js.map +1 -1
  225. package/dist/store/gi/callback.d.ts.map +1 -1
  226. package/dist/store/gi/callback.js +2 -2
  227. package/dist/store/gi/callback.js.map +1 -1
  228. package/dist/store/gi/class.d.ts.map +1 -1
  229. package/dist/store/gi/class.js +5 -3
  230. package/dist/store/gi/class.js.map +1 -1
  231. package/dist/store/gi/closure-invocation.d.ts +4 -0
  232. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  233. package/dist/store/gi/closure-invocation.js +22 -0
  234. package/dist/store/gi/closure-invocation.js.map +1 -0
  235. package/dist/store/gi/constant.d.ts.map +1 -1
  236. package/dist/store/gi/constant.js +3 -4
  237. package/dist/store/gi/constant.js.map +1 -1
  238. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  239. package/dist/store/gi/constructor-props.js +18 -20
  240. package/dist/store/gi/constructor-props.js.map +1 -1
  241. package/dist/store/gi/doc-spec.d.ts +14 -0
  242. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  243. package/dist/store/gi/doc-spec.js +23 -0
  244. package/dist/store/gi/doc-spec.js.map +1 -0
  245. package/dist/store/gi/enum.d.ts.map +1 -1
  246. package/dist/store/gi/enum.js +29 -16
  247. package/dist/store/gi/enum.js.map +1 -1
  248. package/dist/store/gi/function.d.ts.map +1 -1
  249. package/dist/store/gi/function.js +28 -17
  250. package/dist/store/gi/function.js.map +1 -1
  251. package/dist/store/gi/interface.d.ts.map +1 -1
  252. package/dist/store/gi/interface.js +130 -16
  253. package/dist/store/gi/interface.js.map +1 -1
  254. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  255. package/dist/store/gi/item-comparators.js +3 -5
  256. package/dist/store/gi/item-comparators.js.map +1 -1
  257. package/dist/store/gi/method.d.ts +9 -1
  258. package/dist/store/gi/method.d.ts.map +1 -1
  259. package/dist/store/gi/method.js +92 -47
  260. package/dist/store/gi/method.js.map +1 -1
  261. package/dist/store/gi/param-marshal.d.ts +4 -1
  262. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  263. package/dist/store/gi/param-marshal.js +5 -1
  264. package/dist/store/gi/param-marshal.js.map +1 -1
  265. package/dist/store/gi/pipeline.d.ts.map +1 -1
  266. package/dist/store/gi/pipeline.js +3 -2
  267. package/dist/store/gi/pipeline.js.map +1 -1
  268. package/dist/store/gi/properties.d.ts.map +1 -1
  269. package/dist/store/gi/properties.js +2 -2
  270. package/dist/store/gi/properties.js.map +1 -1
  271. package/dist/store/gi/property-accessor.d.ts +4 -2
  272. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  273. package/dist/store/gi/property-accessor.js +10 -11
  274. package/dist/store/gi/property-accessor.js.map +1 -1
  275. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  276. package/dist/store/gi/record-constructor.js +3 -1
  277. package/dist/store/gi/record-constructor.js.map +1 -1
  278. package/dist/store/gi/record-field-accessor.d.ts +4 -2
  279. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  280. package/dist/store/gi/record-field-accessor.js +6 -11
  281. package/dist/store/gi/record-field-accessor.js.map +1 -1
  282. package/dist/store/gi/record-layout.d.ts.map +1 -1
  283. package/dist/store/gi/record-layout.js +1 -5
  284. package/dist/store/gi/record-layout.js.map +1 -1
  285. package/dist/store/gi/record.d.ts.map +1 -1
  286. package/dist/store/gi/record.js +3 -2
  287. package/dist/store/gi/record.js.map +1 -1
  288. package/dist/store/gi/registration.d.ts +1 -1
  289. package/dist/store/gi/registration.js +2 -2
  290. package/dist/store/gi/registration.js.map +1 -1
  291. package/dist/store/gi/return-wrap.d.ts +1 -1
  292. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  293. package/dist/store/gi/return-wrap.js +4 -4
  294. package/dist/store/gi/return-wrap.js.map +1 -1
  295. package/dist/store/gi/runtime-override.d.ts +2 -1
  296. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  297. package/dist/store/gi/runtime-override.js +8 -5
  298. package/dist/store/gi/runtime-override.js.map +1 -1
  299. package/dist/store/gi/signal.d.ts.map +1 -1
  300. package/dist/store/gi/signal.js +27 -31
  301. package/dist/store/gi/signal.js.map +1 -1
  302. package/dist/store/gi/value-marshalable.d.ts +1 -10
  303. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  304. package/dist/store/gi/value-marshalable.js +1 -10
  305. package/dist/store/gi/value-marshalable.js.map +1 -1
  306. package/dist/store/gi/vtable.d.ts +16 -1
  307. package/dist/store/gi/vtable.d.ts.map +1 -1
  308. package/dist/store/gi/vtable.js +214 -51
  309. package/dist/store/gi/vtable.js.map +1 -1
  310. package/dist/store/gi-store.d.ts +2 -3
  311. package/dist/store/gi-store.d.ts.map +1 -1
  312. package/dist/store/gi-store.js.map +1 -1
  313. package/dist/store/jsx/element-components.d.ts +1 -3
  314. package/dist/store/jsx/element-components.d.ts.map +1 -1
  315. package/dist/store/jsx/element-components.js +6 -8
  316. package/dist/store/jsx/element-components.js.map +1 -1
  317. package/dist/store/jsx/element-prop-imports.d.ts +1 -4
  318. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  319. package/dist/store/jsx/element-prop-imports.js +0 -2
  320. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  321. package/dist/store/jsx/element-prop-types.d.ts +3 -1
  322. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  323. package/dist/store/jsx/element-prop-types.js +7 -2
  324. package/dist/store/jsx/element-prop-types.js.map +1 -1
  325. package/dist/store/jsx/generated-elements.d.ts +29 -0
  326. package/dist/store/jsx/generated-elements.d.ts.map +1 -0
  327. package/dist/store/jsx/generated-elements.js +30 -0
  328. package/dist/store/jsx/generated-elements.js.map +1 -0
  329. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  330. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  331. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  332. package/dist/store/jsx/jsx.d.ts.map +1 -1
  333. package/dist/store/jsx/jsx.js +13 -12
  334. package/dist/store/jsx/jsx.js.map +1 -1
  335. package/dist/store/jsx/metadata.js +9 -9
  336. package/dist/store/jsx/metadata.js.map +1 -1
  337. package/dist/store/jsx/omitted-props.d.ts +2 -4
  338. package/dist/store/jsx/omitted-props.d.ts.map +1 -1
  339. package/dist/store/jsx/omitted-props.js +2 -4
  340. package/dist/store/jsx/omitted-props.js.map +1 -1
  341. package/dist/store/jsx/pipeline.d.ts +4 -2
  342. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  343. package/dist/store/jsx/pipeline.js +3 -2
  344. package/dist/store/jsx/pipeline.js.map +1 -1
  345. package/dist/store/jsx/props.d.ts +1 -7
  346. package/dist/store/jsx/props.d.ts.map +1 -1
  347. package/dist/store/jsx/props.js +16 -8
  348. package/dist/store/jsx/props.js.map +1 -1
  349. package/dist/store/jsx-store.d.ts +2 -3
  350. package/dist/store/jsx-store.d.ts.map +1 -1
  351. package/dist/store/jsx-store.js +3 -3
  352. package/dist/store/jsx-store.js.map +1 -1
  353. package/dist/store/resolve-store.d.ts +28 -0
  354. package/dist/store/resolve-store.d.ts.map +1 -0
  355. package/dist/store/resolve-store.js +65 -0
  356. package/dist/store/resolve-store.js.map +1 -0
  357. package/dist/store/store-fs.d.ts +5 -1
  358. package/dist/store/store-fs.d.ts.map +1 -1
  359. package/dist/store/store-fs.js +6 -4
  360. package/dist/store/store-fs.js.map +1 -1
  361. package/dist/writer/context.d.ts +2 -1
  362. package/dist/writer/context.d.ts.map +1 -1
  363. package/dist/writer/context.js +3 -0
  364. package/dist/writer/context.js.map +1 -1
  365. package/dist/writer/doc-tags.d.ts +21 -0
  366. package/dist/writer/doc-tags.d.ts.map +1 -0
  367. package/dist/writer/doc-tags.js +38 -0
  368. package/dist/writer/doc-tags.js.map +1 -0
  369. package/dist/writer/doc.d.ts +3 -1
  370. package/dist/writer/doc.d.ts.map +1 -1
  371. package/dist/writer/doc.js +19 -6
  372. package/dist/writer/doc.js.map +1 -1
  373. package/dist/writer/gtk-doc.d.ts +1 -1
  374. package/dist/writer/gtk-doc.d.ts.map +1 -1
  375. package/dist/writer/gtk-doc.js +64 -15
  376. package/dist/writer/gtk-doc.js.map +1 -1
  377. package/dist/writer/module.d.ts +8 -2
  378. package/dist/writer/module.d.ts.map +1 -1
  379. package/dist/writer/module.js +13 -1
  380. package/dist/writer/module.js.map +1 -1
  381. package/overrides/gdk/rgba.ts.ejs +26 -0
  382. package/overrides/gobject/object.ts.ejs +56 -11
  383. package/overrides/gobject/value.ts.ejs +7 -0
  384. package/overrides/graphene/structs.ts.ejs +55 -0
  385. package/package.json +7 -11
  386. package/src/analysis/descriptor-render.ts +67 -73
  387. package/src/analysis/descriptor.ts +13 -16
  388. package/src/analysis/inheritance.ts +35 -34
  389. package/src/analysis/nul-terminated-bytes.ts +31 -0
  390. package/src/analysis/param-capability.ts +172 -0
  391. package/src/analysis/param-structure.ts +90 -32
  392. package/src/analysis/ts-type.ts +4 -6
  393. package/src/analysis/type-shape.ts +24 -0
  394. package/src/compile.ts +3 -2
  395. package/src/docs/api-reference.ts +162 -28
  396. package/src/docs/element-page.ts +53 -47
  397. package/src/docs/handwritten-props.ts +230 -0
  398. package/src/docs/pipeline.ts +10 -10
  399. package/src/docs/render.ts +153 -39
  400. package/src/docs/symbol-page.ts +230 -80
  401. package/src/fingerprint.ts +8 -14
  402. package/src/gi.ts +4 -11
  403. package/src/gir/ancestry.ts +15 -1
  404. package/src/gir/annotations.ts +37 -0
  405. package/src/gir/callback.ts +2 -0
  406. package/src/gir/class.ts +42 -4
  407. package/src/gir/enum.ts +30 -10
  408. package/src/gir/field.ts +24 -13
  409. package/src/gir/function.ts +15 -0
  410. package/src/gir/gir-path.ts +7 -0
  411. package/src/gir/libraries.ts +23 -2
  412. package/src/gir/library.ts +51 -2
  413. package/src/gir/namespace.ts +41 -5
  414. package/src/gir/parameter.ts +47 -7
  415. package/src/gir/parse.ts +8 -2
  416. package/src/gir/primitives.ts +1 -0
  417. package/src/gir/property.ts +18 -3
  418. package/src/gir/record.ts +24 -2
  419. package/src/gir/size.ts +8 -6
  420. package/src/gir/type-id.ts +51 -7
  421. package/src/gir/type-ref.ts +2 -1
  422. package/src/gir/type.ts +50 -6
  423. package/src/index.ts +18 -16
  424. package/src/internal.ts +2 -0
  425. package/src/jsx.ts +26 -26
  426. package/src/khronos/args.ts +37 -14
  427. package/src/khronos/doc-context.ts +62 -0
  428. package/src/khronos/extensions.ts +85 -0
  429. package/src/khronos/jsdoc.ts +152 -56
  430. package/src/khronos/model.ts +314 -69
  431. package/src/khronos/modules.ts +134 -40
  432. package/src/khronos/notes.ts +74 -0
  433. package/src/khronos/param-pair.ts +1 -1
  434. package/src/khronos/pipeline.ts +95 -42
  435. package/src/khronos/plan.ts +12 -13
  436. package/src/khronos/render.ts +62 -50
  437. package/src/khronos/select.ts +91 -50
  438. package/src/react/element-config.ts +21 -18
  439. package/src/runner.ts +51 -40
  440. package/src/store/compile-store.ts +4 -5
  441. package/src/store/gi/callable-doc.ts +102 -0
  442. package/src/store/gi/callables.ts +23 -17
  443. package/src/store/gi/callback.ts +3 -2
  444. package/src/store/gi/class.ts +6 -3
  445. package/src/store/gi/closure-invocation.ts +26 -0
  446. package/src/store/gi/constant.ts +3 -6
  447. package/src/store/gi/constructor-props.ts +19 -23
  448. package/src/store/gi/doc-spec.ts +38 -0
  449. package/src/store/gi/enum.ts +55 -20
  450. package/src/store/gi/function.ts +44 -26
  451. package/src/store/gi/interface.ts +214 -26
  452. package/src/store/gi/item-comparators.ts +3 -5
  453. package/src/store/gi/method.ts +126 -68
  454. package/src/store/gi/param-marshal.ts +15 -1
  455. package/src/store/gi/pipeline.ts +7 -2
  456. package/src/store/gi/properties.ts +3 -2
  457. package/src/store/gi/property-accessor.ts +14 -11
  458. package/src/store/gi/record-constructor.ts +6 -1
  459. package/src/store/gi/record-field-accessor.ts +9 -13
  460. package/src/store/gi/record-layout.ts +1 -5
  461. package/src/store/gi/record.ts +8 -2
  462. package/src/store/gi/registration.ts +3 -3
  463. package/src/store/gi/return-wrap.ts +5 -5
  464. package/src/store/gi/runtime-override.ts +13 -6
  465. package/src/store/gi/signal.ts +36 -37
  466. package/src/store/gi/value-marshalable.ts +1 -10
  467. package/src/store/gi/vtable.ts +361 -60
  468. package/src/store/gi-store.ts +2 -4
  469. package/src/store/jsx/element-components.ts +8 -11
  470. package/src/store/jsx/element-prop-imports.ts +6 -5
  471. package/src/store/jsx/element-prop-types.ts +10 -2
  472. package/src/store/jsx/generated-elements.ts +60 -0
  473. package/src/store/jsx/intrinsic-elements.ts +4 -0
  474. package/src/store/jsx/jsx.ts +15 -13
  475. package/src/store/jsx/metadata.ts +10 -10
  476. package/src/store/jsx/omitted-props.ts +2 -4
  477. package/src/store/jsx/pipeline.ts +6 -4
  478. package/src/store/jsx/props.ts +22 -9
  479. package/src/store/jsx-store.ts +5 -7
  480. package/src/store/resolve-store.ts +100 -0
  481. package/src/store/store-fs.ts +12 -5
  482. package/src/writer/context.ts +5 -1
  483. package/src/writer/doc-tags.ts +70 -0
  484. package/src/writer/doc.ts +29 -6
  485. package/src/writer/gtk-doc.ts +82 -15
  486. package/src/writer/module.ts +25 -2
@@ -0,0 +1,70 @@
1
+ type JsDocParam = { name: string; doc: string };
2
+ type JsDocDeprecation = { since: string | undefined; doc: string | undefined };
3
+
4
+ type JsDocSpec = {
5
+ params?: JsDocParam[];
6
+ returns?: string | undefined;
7
+ throws?: string | undefined;
8
+ deprecated?: JsDocDeprecation | undefined;
9
+ since?: string | undefined;
10
+ identifiers?: Map<string, string> | undefined;
11
+ };
12
+
13
+ type DocConverter = (text: string) => string;
14
+
15
+ const WHITESPACE_RUN_PATTERN = /\s+/g;
16
+ const PICTURE_PATTERN = /<picture[\s\S]*?<\/picture>/g;
17
+ const VIDEO_PATTERN = /<video[\s\S]*?(?:<\/video>|\/>)/g;
18
+ const IMAGE_PATTERN = /<img[^>]*>/g;
19
+
20
+ const stripDocMedia = (markdown: string): string =>
21
+ markdown.replaceAll(PICTURE_PATTERN, "").replaceAll(VIDEO_PATTERN, "").replaceAll(IMAGE_PATTERN, "");
22
+
23
+ const flatten = (text: string, convert: DocConverter): string =>
24
+ convert(text).replaceAll(WHITESPACE_RUN_PATTERN, " ").trim();
25
+
26
+ const paramLines = (params: JsDocParam[] | undefined, convert: DocConverter): string[] =>
27
+ (params ?? [])
28
+ .map((param) => ({ name: param.name, text: flatten(param.doc, convert) }))
29
+ .filter((entry) => entry.text.length > 0)
30
+ .map((entry) => `@param ${entry.name} ${entry.text}`);
31
+
32
+ const returnsLines = (returns: string | undefined, convert: DocConverter): string[] => {
33
+ const text = convert(returns ?? "").trim();
34
+
35
+ return text.length === 0 ? [] : `@returns ${text}`.split("\n");
36
+ };
37
+
38
+ const simpleTagLine = (tag: string, value: string | undefined, convert: DocConverter): string[] => {
39
+ const text = flatten(value ?? "", convert);
40
+
41
+ return text.length === 0 ? [] : [`${tag} ${text}`];
42
+ };
43
+
44
+ const sinceClause = (since: string | undefined): string =>
45
+ since === undefined || since.length === 0 ? "" : `Since ${since}.`;
46
+
47
+ const deprecatedText = (deprecation: JsDocDeprecation, convert: DocConverter): string =>
48
+ [sinceClause(deprecation.since), flatten(deprecation.doc ?? "", convert)]
49
+ .filter((part) => part.length > 0)
50
+ .join(" ");
51
+
52
+ const deprecatedLine = (deprecation: JsDocDeprecation | undefined, convert: DocConverter): string[] => {
53
+ if (deprecation === undefined) {
54
+ return [];
55
+ }
56
+
57
+ const text = deprecatedText(deprecation, convert);
58
+
59
+ return [text.length === 0 ? "@deprecated" : `@deprecated ${text}`];
60
+ };
61
+
62
+ const renderDocTagLines = (spec: JsDocSpec, convert: DocConverter): string[] => [
63
+ ...paramLines(spec.params, convert),
64
+ ...returnsLines(spec.returns, convert),
65
+ ...simpleTagLine("@throws", spec.throws, convert),
66
+ ...deprecatedLine(spec.deprecated, convert),
67
+ ...simpleTagLine("@since", spec.since, convert),
68
+ ];
69
+
70
+ export { renderDocTagLines, stripDocMedia, type JsDocDeprecation, type JsDocParam, type JsDocSpec };
package/src/writer/doc.ts CHANGED
@@ -1,11 +1,15 @@
1
+ import { type JsDocSpec, renderDocTagLines, stripDocMedia } from "./doc-tags.js";
1
2
  import { gtkDocToMarkdown } from "./gtk-doc.js";
2
3
 
3
4
  const escapeCommentTerminators = (doc: string): string => doc.replaceAll("*/", String.raw`*\/`);
4
5
 
5
- const renderJsDocLines = (lines: string[]): string => {
6
+ const convertDoc = (doc: string, identifiers: Map<string, string> | undefined): string =>
7
+ escapeCommentTerminators(stripDocMedia(gtkDocToMarkdown(doc, identifiers)));
8
+
9
+ const renderJsDocLines = (lines: string[], isCollapsible: boolean): string => {
6
10
  const [single, ...rest] = lines;
7
11
 
8
- if (single !== undefined && rest.length === 0) {
12
+ if (isCollapsible && single !== undefined && rest.length === 0) {
9
13
  return `/** ${single} */\n`;
10
14
  }
11
15
 
@@ -14,12 +18,31 @@ const renderJsDocLines = (lines: string[]): string => {
14
18
  return `/**\n${body}\n */\n`;
15
19
  };
16
20
 
17
- const renderJsDoc = (doc: string | undefined): string => {
18
- if (doc === undefined || doc.length === 0) {
19
- return "";
21
+ const docLines = (doc: string | undefined, identifiers: Map<string, string> | undefined): string[] =>
22
+ doc === undefined || doc.length === 0 ? [] : convertDoc(doc, identifiers).split("\n");
23
+
24
+ const appendNote = (lines: string[], note: string): string[] =>
25
+ lines.length === 0 ? note.split("\n") : [...lines, "", ...note.split("\n")];
26
+
27
+ const appendTags = (lines: string[], tagLines: string[]): string[] => {
28
+ if (lines.length === 0 || tagLines.length === 0) {
29
+ return [...lines, ...tagLines];
20
30
  }
21
31
 
22
- return renderJsDocLines(escapeCommentTerminators(gtkDocToMarkdown(doc)).split("\n"));
32
+ return [...lines, "", ...tagLines];
33
+ };
34
+
35
+ const specLines = (spec: JsDocSpec | undefined): string[] =>
36
+ spec === undefined ? [] : renderDocTagLines(spec, (text) => convertDoc(text, spec.identifiers));
37
+
38
+ const renderJsDoc = (doc: string | undefined, note?: string, spec?: JsDocSpec): string => {
39
+ const described = docLines(doc, spec?.identifiers);
40
+ const withNote = note === undefined ? described : appendNote(described, note);
41
+ const tagLines = specLines(spec);
42
+ const lines = appendTags(withNote, tagLines);
43
+
44
+ return lines.length === 0 ? "" : renderJsDocLines(lines, tagLines.length === 0);
23
45
  };
24
46
 
47
+ export { type JsDocSpec } from "./doc-tags.js";
25
48
  export { renderJsDoc };
@@ -1,7 +1,7 @@
1
1
  import { camelCase } from "@gtkx/utils";
2
2
 
3
3
  const CONSTANT_MAP: Record<string, string> = { TRUE: "true", FALSE: "false", NULL: "null" };
4
- const CALLABLE_LINK_KINDS: Set<string> = new Set(["method", "func", "ctor", "vfunc"]);
4
+ const CALLABLE_LINK_KINDS: Set<string> = new Set(["method", "func", "ctor", "vfunc", "id"]);
5
5
  const SENTINEL = String.fromCodePoint(0xE0_00);
6
6
  const CODE_BLOCK_OPEN = "|[";
7
7
  const CODE_BLOCK_CLOSE = "]|";
@@ -9,10 +9,23 @@ const CODE_LANGUAGE_PATTERN = /^\s*<!--\s*language="([^"]*)"\s*-->/;
9
9
  const FENCED_BLOCK_PATTERN = /```[\s\S]*?```/g;
10
10
  const INLINE_CODE_PATTERN = /`[^`\n]*`/g;
11
11
  const LINK_PATTERN = /\[(\w+)@([\w.:%#-]+)\]/g;
12
- const CONSTANT_PATTERN = /(?<!\w)%(\w+)/g;
13
- const TYPE_REF_PATTERN = /(?<!\w)#(\w+)/g;
12
+ const CONSTANT_PATTERN = /(?<![\w\\])%(\w+)/g;
13
+ const ESCAPED_CONSTANT_PATTERN = /\\%/g;
14
+ const TYPE_REF_PATTERN = /(?<!\w)#(\w+)(::[\w-]+|:[\w-]+)?/g;
14
15
  const PARAM_REF_PATTERN = /(?<!\w)@(\w+)/g;
15
16
  const FUNCTION_REF_PATTERN = /\b([a-z_][a-z0-9_]*)\(\)/g;
17
+ const HTML_COMMENT_PATTERN = /<!--[\s\S]*?-->/g;
18
+ const DOCBOOK_TAG_PATTERN = /<\/?(?:itemizedlist|listitem|para|literal|link|informalexample|programlisting)[\s>]/;
19
+ const DOCBOOK_LISTING_OPEN = "<programlisting>";
20
+ const DOCBOOK_LISTING_CLOSE = "</programlisting>";
21
+ const DOCBOOK_EXAMPLE_PATTERN = /<\/?informalexample>\s*/g;
22
+ const DOCBOOK_ITEM_OPEN_PATTERN = /<listitem>\s*(?:<para>\s*)?/g;
23
+ const DOCBOOK_ITEM_CLOSE_PATTERN = /(?:<\/para>\s*)?<\/listitem>\s*/g;
24
+ const DOCBOOK_LINK_PATTERN = /<link\s+linkend="[^"]*">([\s\S]*?)<\/link>/g;
25
+ const DOCBOOK_LITERAL_PATTERN = /<literal>([\s\S]*?)<\/literal>/g;
26
+ const DOCBOOK_LIST_PATTERN = /<\/?itemizedlist>\s*/g;
27
+ const DOCBOOK_PARA_PATTERN = /<\/?para>\s*/g;
28
+ const BLANK_LINE_RUN_PATTERN = /\n{3,}/g;
16
29
 
17
30
  const renderLink = (kind: string, target: string): string => {
18
31
  const segments = target.split(/::|[.:]/);
@@ -27,6 +40,17 @@ const renderLink = (kind: string, target: string): string => {
27
40
  return `\`${symbol}${CALLABLE_LINK_KINDS.has(kind) ? "()" : ""}\``;
28
41
  };
29
42
 
43
+ const renderTypeRef = (name: string, member: string | undefined): string => {
44
+ if (member === undefined) {
45
+ return `\`${name}\``;
46
+ }
47
+
48
+ return renderLink(member.startsWith("::") ? "signal" : "property", `${name}${member}`);
49
+ };
50
+
51
+ const renderParamRef = (name: string, identifiers: Map<string, string> | undefined): string =>
52
+ `\`${identifiers?.get(name) ?? name}\``;
53
+
30
54
  const trimTrailingNewlines = (value: string): string => {
31
55
  let end = value.length;
32
56
 
@@ -46,32 +70,69 @@ const renderCodeFence = (body: string): string => {
46
70
  return `\`\`\`${fence}\n${code}\n\`\`\``;
47
71
  };
48
72
 
49
- const protectCodeBlocks = (raw: string, protect: (value: string) => string): string => {
73
+ const renderListing = (code: string): string => `\n\`\`\`\n${code.trim()}\n\`\`\`\n`;
74
+
75
+ const replaceDocBookTags = (text: string): string =>
76
+ replaceDelimited(text, [DOCBOOK_LISTING_OPEN, DOCBOOK_LISTING_CLOSE], renderListing)
77
+ .replaceAll(DOCBOOK_EXAMPLE_PATTERN, "\n")
78
+ .replaceAll(DOCBOOK_ITEM_OPEN_PATTERN, "\n- ")
79
+ .replaceAll(DOCBOOK_ITEM_CLOSE_PATTERN, "\n")
80
+ .replaceAll(DOCBOOK_LINK_PATTERN, (_match, label: string) => label)
81
+ .replaceAll(DOCBOOK_LITERAL_PATTERN, (_match, literal: string) => `\`${literal}\``)
82
+ .replaceAll(DOCBOOK_LIST_PATTERN, "\n\n")
83
+ .replaceAll(DOCBOOK_PARA_PATTERN, "\n\n");
84
+
85
+ const docBookToMarkdown = (text: string): string => {
86
+ if (!DOCBOOK_TAG_PATTERN.test(text)) {
87
+ return text;
88
+ }
89
+
90
+ return replaceDocBookTags(text).replaceAll(BLANK_LINE_RUN_PATTERN, "\n\n").trim();
91
+ };
92
+
93
+ const replaceDelimited = (raw: string, bounds: [string, string], render: (body: string) => string): string => {
94
+ const [open, close] = bounds;
50
95
  let result = "";
51
96
  let cursor = 0;
52
97
 
53
98
  while (cursor < raw.length) {
54
- const open = raw.indexOf(CODE_BLOCK_OPEN, cursor);
99
+ const start = raw.indexOf(open, cursor);
55
100
 
56
- if (open === -1) {
101
+ if (start === -1) {
57
102
  break;
58
103
  }
59
104
 
60
- const close = raw.indexOf(CODE_BLOCK_CLOSE, open + CODE_BLOCK_OPEN.length);
105
+ const end = raw.indexOf(close, start + open.length);
61
106
 
62
- if (close === -1) {
107
+ if (end === -1) {
63
108
  break;
64
109
  }
65
110
 
66
- result += raw.slice(cursor, open);
67
- result += protect(renderCodeFence(raw.slice(open + CODE_BLOCK_OPEN.length, close)));
68
- cursor = close + CODE_BLOCK_CLOSE.length;
111
+ result += raw.slice(cursor, start);
112
+ result += render(raw.slice(start + open.length, end));
113
+ cursor = end + close.length;
69
114
  }
70
115
 
71
116
  return result + raw.slice(cursor);
72
117
  };
73
118
 
74
- const gtkDocToMarkdown = (raw: string): string => {
119
+ const protectCodeBlocks = (raw: string, protect: (value: string) => string): string =>
120
+ replaceDelimited(raw, [CODE_BLOCK_OPEN, CODE_BLOCK_CLOSE], (body) => protect(renderCodeFence(body)));
121
+
122
+ const stripHtmlComments = (text: string): string => {
123
+ let current = text;
124
+ let previous = "";
125
+
126
+ while (current !== previous) {
127
+ previous = current;
128
+ current = current.replaceAll(HTML_COMMENT_PATTERN, "");
129
+ }
130
+
131
+ return current;
132
+ };
133
+
134
+ // eslint-disable-next-line gtkx/no-library-prefix
135
+ const gtkDocToMarkdown = (raw: string, identifiers?: Map<string, string>): string => {
75
136
  const stash: string[] = [];
76
137
 
77
138
  const protect = (value: string): string => {
@@ -81,14 +142,20 @@ const gtkDocToMarkdown = (raw: string): string => {
81
142
  return token;
82
143
  };
83
144
 
84
- let text = protectCodeBlocks(raw, protect);
145
+ let text = protectCodeBlocks(docBookToMarkdown(raw), protect);
85
146
  text = text.replaceAll(FENCED_BLOCK_PATTERN, (block) => protect(block));
86
147
  text = text.replaceAll(INLINE_CODE_PATTERN, (span) => protect(span));
87
148
  text = text.replaceAll(LINK_PATTERN, (_match, kind: string, target: string) => protect(renderLink(kind, target)));
88
149
  text = text.replaceAll(CONSTANT_PATTERN, (_match, name: string) => protect(`\`${CONSTANT_MAP[name] ?? name}\``));
89
- text = text.replaceAll(TYPE_REF_PATTERN, (_match, name: string) => protect(`\`${name}\``));
90
- text = text.replaceAll(PARAM_REF_PATTERN, (_match, name: string) => protect(`\`${name}\``));
150
+ text = text.replaceAll(ESCAPED_CONSTANT_PATTERN, "%");
151
+
152
+ text = text.replaceAll(TYPE_REF_PATTERN, (_match, name: string, member: string | undefined) =>
153
+ protect(renderTypeRef(name, member)),
154
+ );
155
+
156
+ text = text.replaceAll(PARAM_REF_PATTERN, (_match, name: string) => protect(renderParamRef(name, identifiers)));
91
157
  text = text.replaceAll(FUNCTION_REF_PATTERN, (_match, name: string) => protect(`\`${name}()\``));
158
+ text = stripHtmlComments(text);
92
159
 
93
160
  for (let index = stash.length - 1; index >= 0; index -= 1) {
94
161
  const value = stash[index] ?? "";
@@ -1,13 +1,32 @@
1
1
  import { ImportsBuilder } from "./imports.js";
2
2
 
3
+ type DeclaredType = {
4
+ name: string;
5
+ owner: string;
6
+ };
7
+
3
8
  class ModuleBuilder {
4
9
  private bindings: string[] = [];
5
10
  private bindingNames: Set<string> = new Set();
6
11
  private hoistedDescriptors: Map<string, string> = new Map();
7
12
  private declarations: string[] = [];
13
+ private declaredTypes: Map<string, string> = new Map();
8
14
  private registrations: string[] = [];
9
15
  public imports: ImportsBuilder = new ImportsBuilder();
10
16
 
17
+ private claimTypeName(declared: DeclaredType): void {
18
+ const owner = this.declaredTypes.get(declared.name);
19
+
20
+ if (owner !== undefined && owner !== declared.owner) {
21
+ throw new Error(
22
+ `The generated type '${declared.name}' is declared for both ${owner} and ${declared.owner}. ` +
23
+ "Rename one of them, or drop the namespace from the configuration.",
24
+ );
25
+ }
26
+
27
+ this.declaredTypes.set(declared.name, declared.owner);
28
+ }
29
+
11
30
  appendBinding(code: string, name?: string): void {
12
31
  if (name !== undefined) {
13
32
  if (this.bindingNames.has(name)) {
@@ -34,7 +53,11 @@ class ModuleBuilder {
34
53
  return name;
35
54
  }
36
55
 
37
- appendDeclaration(code: string): void {
56
+ appendDeclaration(code: string, declared?: DeclaredType): void {
57
+ if (declared !== undefined) {
58
+ this.claimTypeName(declared);
59
+ }
60
+
38
61
  this.declarations.push(code);
39
62
  }
40
63
 
@@ -66,4 +89,4 @@ class ModuleBuilder {
66
89
  }
67
90
  }
68
91
 
69
- export { ModuleBuilder };
92
+ export { type DeclaredType, ModuleBuilder };