@gtkx/codegen 1.0.0-rc.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/README.md +5 -5
  2. package/dist/analysis/descriptor-render.d.ts +8 -1
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  4. package/dist/analysis/descriptor-render.js +37 -24
  5. package/dist/analysis/descriptor-render.js.map +1 -1
  6. package/dist/analysis/descriptor.d.ts +1 -1
  7. package/dist/analysis/descriptor.d.ts.map +1 -1
  8. package/dist/analysis/descriptor.js.map +1 -1
  9. package/dist/analysis/inheritance.d.ts +1 -2
  10. package/dist/analysis/inheritance.d.ts.map +1 -1
  11. package/dist/analysis/inheritance.js +25 -22
  12. package/dist/analysis/inheritance.js.map +1 -1
  13. package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
  14. package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
  15. package/dist/analysis/nul-terminated-bytes.js +18 -0
  16. package/dist/analysis/nul-terminated-bytes.js.map +1 -0
  17. package/dist/analysis/param-capability.d.ts +5 -0
  18. package/dist/analysis/param-capability.d.ts.map +1 -0
  19. package/dist/analysis/param-capability.js +130 -0
  20. package/dist/analysis/param-capability.js.map +1 -0
  21. package/dist/analysis/param-structure.d.ts +11 -4
  22. package/dist/analysis/param-structure.d.ts.map +1 -1
  23. package/dist/analysis/param-structure.js +40 -14
  24. package/dist/analysis/param-structure.js.map +1 -1
  25. package/dist/analysis/type-shape.d.ts +8 -0
  26. package/dist/analysis/type-shape.d.ts.map +1 -0
  27. package/dist/analysis/type-shape.js +12 -0
  28. package/dist/analysis/type-shape.js.map +1 -0
  29. package/dist/compile.d.ts +1 -1
  30. package/dist/compile.d.ts.map +1 -1
  31. package/dist/compile.js.map +1 -1
  32. package/dist/docs/api-reference.d.ts +2 -2
  33. package/dist/docs/api-reference.d.ts.map +1 -1
  34. package/dist/docs/api-reference.js +7 -14
  35. package/dist/docs/api-reference.js.map +1 -1
  36. package/dist/docs/element-page.d.ts +4 -4
  37. package/dist/docs/element-page.d.ts.map +1 -1
  38. package/dist/docs/element-page.js +32 -20
  39. package/dist/docs/element-page.js.map +1 -1
  40. package/dist/docs/handwritten-props.d.ts +9 -0
  41. package/dist/docs/handwritten-props.d.ts.map +1 -0
  42. package/dist/docs/handwritten-props.js +149 -0
  43. package/dist/docs/handwritten-props.js.map +1 -0
  44. package/dist/docs/pipeline.js +2 -2
  45. package/dist/docs/pipeline.js.map +1 -1
  46. package/dist/docs/render.d.ts +25 -5
  47. package/dist/docs/render.d.ts.map +1 -1
  48. package/dist/docs/render.js +84 -22
  49. package/dist/docs/render.js.map +1 -1
  50. package/dist/docs/symbol-page.d.ts +17 -0
  51. package/dist/docs/symbol-page.d.ts.map +1 -1
  52. package/dist/docs/symbol-page.js +128 -43
  53. package/dist/docs/symbol-page.js.map +1 -1
  54. package/dist/fingerprint.d.ts +1 -1
  55. package/dist/fingerprint.d.ts.map +1 -1
  56. package/dist/fingerprint.js.map +1 -1
  57. package/dist/gir/ancestry.d.ts +2 -2
  58. package/dist/gir/ancestry.d.ts.map +1 -1
  59. package/dist/gir/ancestry.js +11 -1
  60. package/dist/gir/ancestry.js.map +1 -1
  61. package/dist/gir/annotations.d.ts +22 -0
  62. package/dist/gir/annotations.d.ts.map +1 -0
  63. package/dist/gir/annotations.js +15 -0
  64. package/dist/gir/annotations.js.map +1 -0
  65. package/dist/gir/callback.d.ts +1 -0
  66. package/dist/gir/callback.d.ts.map +1 -1
  67. package/dist/gir/callback.js +1 -0
  68. package/dist/gir/callback.js.map +1 -1
  69. package/dist/gir/class.d.ts +32 -1
  70. package/dist/gir/class.d.ts.map +1 -1
  71. package/dist/gir/class.js +8 -3
  72. package/dist/gir/class.js.map +1 -1
  73. package/dist/gir/enum.d.ts +21 -1
  74. package/dist/gir/enum.d.ts.map +1 -1
  75. package/dist/gir/enum.js +9 -9
  76. package/dist/gir/enum.js.map +1 -1
  77. package/dist/gir/field.d.ts +19 -3
  78. package/dist/gir/field.d.ts.map +1 -1
  79. package/dist/gir/field.js +7 -8
  80. package/dist/gir/field.js.map +1 -1
  81. package/dist/gir/function.d.ts +15 -0
  82. package/dist/gir/function.d.ts.map +1 -1
  83. package/dist/gir/function.js.map +1 -1
  84. package/dist/gir/libraries.d.ts +1 -3
  85. package/dist/gir/libraries.d.ts.map +1 -1
  86. package/dist/gir/libraries.js +0 -1
  87. package/dist/gir/libraries.js.map +1 -1
  88. package/dist/gir/library.d.ts +36 -0
  89. package/dist/gir/library.d.ts.map +1 -1
  90. package/dist/gir/library.js +34 -0
  91. package/dist/gir/library.js.map +1 -1
  92. package/dist/gir/namespace.d.ts +38 -0
  93. package/dist/gir/namespace.d.ts.map +1 -1
  94. package/dist/gir/namespace.js +4 -5
  95. package/dist/gir/namespace.js.map +1 -1
  96. package/dist/gir/parameter.d.ts +39 -0
  97. package/dist/gir/parameter.d.ts.map +1 -1
  98. package/dist/gir/parameter.js +7 -3
  99. package/dist/gir/parameter.js.map +1 -1
  100. package/dist/gir/parse.d.ts +3 -1
  101. package/dist/gir/parse.d.ts.map +1 -1
  102. package/dist/gir/parse.js +6 -3
  103. package/dist/gir/parse.js.map +1 -1
  104. package/dist/gir/primitives.d.ts +1 -0
  105. package/dist/gir/primitives.d.ts.map +1 -1
  106. package/dist/gir/primitives.js.map +1 -1
  107. package/dist/gir/property.d.ts +16 -0
  108. package/dist/gir/property.d.ts.map +1 -1
  109. package/dist/gir/property.js +3 -3
  110. package/dist/gir/property.js.map +1 -1
  111. package/dist/gir/record.d.ts +22 -0
  112. package/dist/gir/record.d.ts.map +1 -1
  113. package/dist/gir/record.js +3 -2
  114. package/dist/gir/record.js.map +1 -1
  115. package/dist/gir/size.d.ts +5 -4
  116. package/dist/gir/size.d.ts.map +1 -1
  117. package/dist/gir/size.js.map +1 -1
  118. package/dist/gir/type-id.d.ts +35 -0
  119. package/dist/gir/type-id.d.ts.map +1 -1
  120. package/dist/gir/type-id.js +1 -0
  121. package/dist/gir/type-id.js.map +1 -1
  122. package/dist/gir/type-ref.d.ts.map +1 -1
  123. package/dist/gir/type-ref.js +1 -0
  124. package/dist/gir/type-ref.js.map +1 -1
  125. package/dist/gir/type.d.ts +20 -0
  126. package/dist/gir/type.d.ts.map +1 -1
  127. package/dist/gir/type.js.map +1 -1
  128. package/dist/khronos/args.d.ts +7 -6
  129. package/dist/khronos/args.d.ts.map +1 -1
  130. package/dist/khronos/args.js +28 -6
  131. package/dist/khronos/args.js.map +1 -1
  132. package/dist/khronos/doc-context.d.ts +29 -0
  133. package/dist/khronos/doc-context.d.ts.map +1 -0
  134. package/dist/khronos/doc-context.js +29 -0
  135. package/dist/khronos/doc-context.js.map +1 -0
  136. package/dist/khronos/extensions.d.ts +13 -0
  137. package/dist/khronos/extensions.d.ts.map +1 -0
  138. package/dist/khronos/extensions.js +49 -0
  139. package/dist/khronos/extensions.js.map +1 -0
  140. package/dist/khronos/jsdoc.d.ts +17 -11
  141. package/dist/khronos/jsdoc.d.ts.map +1 -1
  142. package/dist/khronos/jsdoc.js +104 -46
  143. package/dist/khronos/jsdoc.js.map +1 -1
  144. package/dist/khronos/model.d.ts +42 -3
  145. package/dist/khronos/model.d.ts.map +1 -1
  146. package/dist/khronos/model.js +218 -63
  147. package/dist/khronos/model.js.map +1 -1
  148. package/dist/khronos/modules.d.ts +9 -6
  149. package/dist/khronos/modules.d.ts.map +1 -1
  150. package/dist/khronos/modules.js +96 -26
  151. package/dist/khronos/modules.js.map +1 -1
  152. package/dist/khronos/notes.d.ts +19 -0
  153. package/dist/khronos/notes.d.ts.map +1 -0
  154. package/dist/khronos/notes.js +35 -0
  155. package/dist/khronos/notes.js.map +1 -0
  156. package/dist/khronos/param-pair.d.ts +1 -1
  157. package/dist/khronos/param-pair.d.ts.map +1 -1
  158. package/dist/khronos/param-pair.js.map +1 -1
  159. package/dist/khronos/pipeline.d.ts +3 -1
  160. package/dist/khronos/pipeline.d.ts.map +1 -1
  161. package/dist/khronos/pipeline.js +58 -27
  162. package/dist/khronos/pipeline.js.map +1 -1
  163. package/dist/khronos/plan.d.ts +3 -3
  164. package/dist/khronos/plan.d.ts.map +1 -1
  165. package/dist/khronos/plan.js +2 -2
  166. package/dist/khronos/plan.js.map +1 -1
  167. package/dist/khronos/render.d.ts +8 -6
  168. package/dist/khronos/render.d.ts.map +1 -1
  169. package/dist/khronos/render.js +35 -26
  170. package/dist/khronos/render.js.map +1 -1
  171. package/dist/khronos/select.d.ts +21 -4
  172. package/dist/khronos/select.d.ts.map +1 -1
  173. package/dist/khronos/select.js +47 -34
  174. package/dist/khronos/select.js.map +1 -1
  175. package/dist/react/element-config.d.ts +2 -2
  176. package/dist/react/element-config.d.ts.map +1 -1
  177. package/dist/react/element-config.js.map +1 -1
  178. package/dist/runner.d.ts +1 -7
  179. package/dist/runner.d.ts.map +1 -1
  180. package/dist/runner.js.map +1 -1
  181. package/dist/store/compile-store.d.ts +1 -1
  182. package/dist/store/compile-store.d.ts.map +1 -1
  183. package/dist/store/compile-store.js.map +1 -1
  184. package/dist/store/gi/callable-doc.d.ts +11 -0
  185. package/dist/store/gi/callable-doc.d.ts.map +1 -0
  186. package/dist/store/gi/callable-doc.js +62 -0
  187. package/dist/store/gi/callable-doc.js.map +1 -0
  188. package/dist/store/gi/callables.d.ts +3 -1
  189. package/dist/store/gi/callables.d.ts.map +1 -1
  190. package/dist/store/gi/callables.js +12 -12
  191. package/dist/store/gi/callables.js.map +1 -1
  192. package/dist/store/gi/callback.d.ts.map +1 -1
  193. package/dist/store/gi/callback.js +2 -2
  194. package/dist/store/gi/callback.js.map +1 -1
  195. package/dist/store/gi/class.d.ts.map +1 -1
  196. package/dist/store/gi/class.js +5 -3
  197. package/dist/store/gi/class.js.map +1 -1
  198. package/dist/store/gi/closure-invocation.d.ts +4 -0
  199. package/dist/store/gi/closure-invocation.d.ts.map +1 -0
  200. package/dist/store/gi/closure-invocation.js +22 -0
  201. package/dist/store/gi/closure-invocation.js.map +1 -0
  202. package/dist/store/gi/constant.d.ts.map +1 -1
  203. package/dist/store/gi/constant.js +3 -2
  204. package/dist/store/gi/constant.js.map +1 -1
  205. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  206. package/dist/store/gi/constructor-props.js +18 -20
  207. package/dist/store/gi/constructor-props.js.map +1 -1
  208. package/dist/store/gi/doc-spec.d.ts +14 -0
  209. package/dist/store/gi/doc-spec.d.ts.map +1 -0
  210. package/dist/store/gi/doc-spec.js +23 -0
  211. package/dist/store/gi/doc-spec.js.map +1 -0
  212. package/dist/store/gi/enum.d.ts.map +1 -1
  213. package/dist/store/gi/enum.js +29 -16
  214. package/dist/store/gi/enum.js.map +1 -1
  215. package/dist/store/gi/function.d.ts.map +1 -1
  216. package/dist/store/gi/function.js +27 -12
  217. package/dist/store/gi/function.js.map +1 -1
  218. package/dist/store/gi/interface.d.ts.map +1 -1
  219. package/dist/store/gi/interface.js +130 -16
  220. package/dist/store/gi/interface.js.map +1 -1
  221. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  222. package/dist/store/gi/item-comparators.js +3 -5
  223. package/dist/store/gi/item-comparators.js.map +1 -1
  224. package/dist/store/gi/method.d.ts +9 -1
  225. package/dist/store/gi/method.d.ts.map +1 -1
  226. package/dist/store/gi/method.js +69 -26
  227. package/dist/store/gi/method.js.map +1 -1
  228. package/dist/store/gi/param-marshal.d.ts +4 -1
  229. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  230. package/dist/store/gi/param-marshal.js +5 -1
  231. package/dist/store/gi/param-marshal.js.map +1 -1
  232. package/dist/store/gi/pipeline.d.ts.map +1 -1
  233. package/dist/store/gi/pipeline.js +3 -2
  234. package/dist/store/gi/pipeline.js.map +1 -1
  235. package/dist/store/gi/properties.d.ts.map +1 -1
  236. package/dist/store/gi/properties.js +2 -2
  237. package/dist/store/gi/properties.js.map +1 -1
  238. package/dist/store/gi/property-accessor.d.ts +3 -1
  239. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  240. package/dist/store/gi/property-accessor.js +6 -5
  241. package/dist/store/gi/property-accessor.js.map +1 -1
  242. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  243. package/dist/store/gi/record-constructor.js +3 -1
  244. package/dist/store/gi/record-constructor.js.map +1 -1
  245. package/dist/store/gi/record-field-accessor.d.ts +3 -1
  246. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  247. package/dist/store/gi/record-field-accessor.js +3 -2
  248. package/dist/store/gi/record-field-accessor.js.map +1 -1
  249. package/dist/store/gi/record-layout.js +1 -1
  250. package/dist/store/gi/record-layout.js.map +1 -1
  251. package/dist/store/gi/record.d.ts.map +1 -1
  252. package/dist/store/gi/record.js +3 -2
  253. package/dist/store/gi/record.js.map +1 -1
  254. package/dist/store/gi/registration.d.ts +1 -1
  255. package/dist/store/gi/registration.js +2 -2
  256. package/dist/store/gi/registration.js.map +1 -1
  257. package/dist/store/gi/runtime-override.d.ts +2 -1
  258. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  259. package/dist/store/gi/runtime-override.js +8 -5
  260. package/dist/store/gi/runtime-override.js.map +1 -1
  261. package/dist/store/gi/signal.d.ts.map +1 -1
  262. package/dist/store/gi/signal.js +14 -15
  263. package/dist/store/gi/signal.js.map +1 -1
  264. package/dist/store/gi/value-marshalable.d.ts +1 -2
  265. package/dist/store/gi/value-marshalable.d.ts.map +1 -1
  266. package/dist/store/gi/value-marshalable.js +1 -1
  267. package/dist/store/gi/value-marshalable.js.map +1 -1
  268. package/dist/store/gi/vtable.d.ts +16 -1
  269. package/dist/store/gi/vtable.d.ts.map +1 -1
  270. package/dist/store/gi/vtable.js +214 -51
  271. package/dist/store/gi/vtable.js.map +1 -1
  272. package/dist/store/jsx/element-components.d.ts +1 -1
  273. package/dist/store/jsx/element-components.d.ts.map +1 -1
  274. package/dist/store/jsx/element-components.js +6 -4
  275. package/dist/store/jsx/element-components.js.map +1 -1
  276. package/dist/store/jsx/element-prop-imports.d.ts +1 -3
  277. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
  278. package/dist/store/jsx/element-prop-imports.js.map +1 -1
  279. package/dist/store/jsx/element-prop-types.d.ts +3 -0
  280. package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
  281. package/dist/store/jsx/element-prop-types.js +7 -1
  282. package/dist/store/jsx/element-prop-types.js.map +1 -1
  283. package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
  284. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
  285. package/dist/store/jsx/intrinsic-elements.js.map +1 -1
  286. package/dist/store/jsx/jsx.d.ts.map +1 -1
  287. package/dist/store/jsx/jsx.js +7 -6
  288. package/dist/store/jsx/jsx.js.map +1 -1
  289. package/dist/store/jsx/metadata.js +2 -2
  290. package/dist/store/jsx/metadata.js.map +1 -1
  291. package/dist/store/jsx/pipeline.d.ts +1 -1
  292. package/dist/store/jsx/pipeline.d.ts.map +1 -1
  293. package/dist/store/jsx/pipeline.js.map +1 -1
  294. package/dist/store/jsx/props.d.ts +1 -7
  295. package/dist/store/jsx/props.d.ts.map +1 -1
  296. package/dist/store/jsx/props.js +14 -6
  297. package/dist/store/jsx/props.js.map +1 -1
  298. package/dist/writer/context.d.ts +2 -1
  299. package/dist/writer/context.d.ts.map +1 -1
  300. package/dist/writer/context.js +3 -0
  301. package/dist/writer/context.js.map +1 -1
  302. package/dist/writer/doc-tags.d.ts +21 -0
  303. package/dist/writer/doc-tags.d.ts.map +1 -0
  304. package/dist/writer/doc-tags.js +38 -0
  305. package/dist/writer/doc-tags.js.map +1 -0
  306. package/dist/writer/doc.d.ts +3 -1
  307. package/dist/writer/doc.d.ts.map +1 -1
  308. package/dist/writer/doc.js +19 -6
  309. package/dist/writer/doc.js.map +1 -1
  310. package/dist/writer/gtk-doc.d.ts +1 -1
  311. package/dist/writer/gtk-doc.d.ts.map +1 -1
  312. package/dist/writer/gtk-doc.js +64 -15
  313. package/dist/writer/gtk-doc.js.map +1 -1
  314. package/dist/writer/module.d.ts +8 -2
  315. package/dist/writer/module.d.ts.map +1 -1
  316. package/dist/writer/module.js +13 -1
  317. package/dist/writer/module.js.map +1 -1
  318. package/overrides/gdk/rgba.ts.ejs +26 -0
  319. package/overrides/gobject/object.ts.ejs +48 -3
  320. package/overrides/gobject/value.ts.ejs +7 -0
  321. package/overrides/graphene/structs.ts.ejs +55 -0
  322. package/package.json +4 -4
  323. package/src/analysis/descriptor-render.ts +47 -28
  324. package/src/analysis/descriptor.ts +0 -3
  325. package/src/analysis/inheritance.ts +35 -34
  326. package/src/analysis/nul-terminated-bytes.ts +31 -0
  327. package/src/analysis/param-capability.ts +172 -0
  328. package/src/analysis/param-structure.ts +83 -23
  329. package/src/analysis/type-shape.ts +24 -0
  330. package/src/compile.ts +1 -1
  331. package/src/docs/api-reference.ts +36 -25
  332. package/src/docs/element-page.ts +53 -47
  333. package/src/docs/handwritten-props.ts +230 -0
  334. package/src/docs/pipeline.ts +2 -2
  335. package/src/docs/render.ts +146 -32
  336. package/src/docs/symbol-page.ts +224 -79
  337. package/src/fingerprint.ts +0 -1
  338. package/src/gir/ancestry.ts +15 -1
  339. package/src/gir/annotations.ts +37 -0
  340. package/src/gir/callback.ts +2 -0
  341. package/src/gir/class.ts +42 -4
  342. package/src/gir/enum.ts +30 -10
  343. package/src/gir/field.ts +24 -9
  344. package/src/gir/function.ts +15 -0
  345. package/src/gir/libraries.ts +11 -3
  346. package/src/gir/library.ts +51 -2
  347. package/src/gir/namespace.ts +41 -5
  348. package/src/gir/parameter.ts +47 -3
  349. package/src/gir/parse.ts +8 -2
  350. package/src/gir/primitives.ts +1 -0
  351. package/src/gir/property.ts +18 -3
  352. package/src/gir/record.ts +24 -2
  353. package/src/gir/size.ts +8 -3
  354. package/src/gir/type-id.ts +49 -3
  355. package/src/gir/type-ref.ts +1 -0
  356. package/src/gir/type.ts +50 -6
  357. package/src/khronos/args.ts +36 -13
  358. package/src/khronos/doc-context.ts +62 -0
  359. package/src/khronos/extensions.ts +85 -0
  360. package/src/khronos/jsdoc.ts +152 -56
  361. package/src/khronos/model.ts +314 -69
  362. package/src/khronos/modules.ts +134 -40
  363. package/src/khronos/notes.ts +74 -0
  364. package/src/khronos/param-pair.ts +1 -1
  365. package/src/khronos/pipeline.ts +94 -41
  366. package/src/khronos/plan.ts +4 -5
  367. package/src/khronos/render.ts +62 -50
  368. package/src/khronos/select.ts +91 -50
  369. package/src/react/element-config.ts +2 -2
  370. package/src/runner.ts +1 -8
  371. package/src/store/compile-store.ts +1 -1
  372. package/src/store/gi/callable-doc.ts +102 -0
  373. package/src/store/gi/callables.ts +18 -12
  374. package/src/store/gi/callback.ts +3 -2
  375. package/src/store/gi/class.ts +6 -3
  376. package/src/store/gi/closure-invocation.ts +26 -0
  377. package/src/store/gi/constant.ts +3 -4
  378. package/src/store/gi/constructor-props.ts +19 -23
  379. package/src/store/gi/doc-spec.ts +38 -0
  380. package/src/store/gi/enum.ts +55 -20
  381. package/src/store/gi/function.ts +43 -21
  382. package/src/store/gi/interface.ts +214 -26
  383. package/src/store/gi/item-comparators.ts +3 -5
  384. package/src/store/gi/method.ts +98 -42
  385. package/src/store/gi/param-marshal.ts +15 -1
  386. package/src/store/gi/pipeline.ts +7 -2
  387. package/src/store/gi/properties.ts +3 -2
  388. package/src/store/gi/property-accessor.ts +9 -4
  389. package/src/store/gi/record-constructor.ts +6 -1
  390. package/src/store/gi/record-field-accessor.ts +5 -3
  391. package/src/store/gi/record-layout.ts +1 -1
  392. package/src/store/gi/record.ts +8 -2
  393. package/src/store/gi/registration.ts +3 -3
  394. package/src/store/gi/runtime-override.ts +13 -6
  395. package/src/store/gi/signal.ts +19 -20
  396. package/src/store/gi/value-marshalable.ts +1 -1
  397. package/src/store/gi/vtable.ts +361 -60
  398. package/src/store/jsx/element-components.ts +8 -5
  399. package/src/store/jsx/element-prop-imports.ts +1 -3
  400. package/src/store/jsx/element-prop-types.ts +10 -1
  401. package/src/store/jsx/intrinsic-elements.ts +4 -0
  402. package/src/store/jsx/jsx.ts +8 -6
  403. package/src/store/jsx/metadata.ts +2 -2
  404. package/src/store/jsx/pipeline.ts +1 -1
  405. package/src/store/jsx/props.ts +20 -7
  406. package/src/writer/context.ts +5 -1
  407. package/src/writer/doc-tags.ts +70 -0
  408. package/src/writer/doc.ts +29 -6
  409. package/src/writer/gtk-doc.ts +82 -15
  410. package/src/writer/module.ts +25 -2
@@ -1,42 +1,112 @@
1
1
  import { sortStrings, sortStringsBy } from "@gtkx/utils";
2
2
  import { ModuleBuilder } from "../writer/module.js";
3
+ import { asSentence, backtick, backtickList, provenanceLines } from "./notes.js";
3
4
  import { GL_SCALARS } from "./plan.js";
4
- const LIB_CONSTANT = "export const LIB = \"libGL.so.1\";";
5
- const GENERATED_HEADER = `/**
6
- * GENERATED FILE: do not edit.
7
- */`;
5
+ const LIB_CONSTANT = "/** The shared library the generated OpenGL bindings are loaded from. */\n" +
6
+ "export const LIB = \"libGL.so.1\";";
7
+ const SYNC_SUMMARY = "An opaque `GLsync` fence handle";
8
8
  const TS_PRIMITIVES = new Set(["boolean", "string", "void", "number"]);
9
- const quotedGroupList = (groups) => groups.map((group) => `\`${group}\``).join(", ");
10
- const renderEnumsModule = (tokens) => {
11
- const builder = new ModuleBuilder();
12
- for (const { token, exportName, literal, feature } of tokens) {
13
- const groupNote = token.groups.length > 0 ? ` Groups: ${quotedGroupList(token.groups)}.` : "";
14
- builder.appendDeclaration(`/** \`${token.name}\`, provided by \`${feature}\`.${groupNote} */\n` +
15
- `export const ${exportName} = ${literal};`);
9
+ const attributionLine = (line) => (line.length === 0 ? " *" : ` * ${line}`);
10
+ const attributionLines = (registryComment) => registryComment === undefined
11
+ ? []
12
+ : [" *", ...registryComment.split("\n").map((line) => attributionLine(line))];
13
+ const generatedHeader = (docs) => [
14
+ "/**",
15
+ " * GENERATED FILE: do not edit.",
16
+ " *",
17
+ " * Derived from the Khronos OpenGL registry (gl.xml).",
18
+ ...attributionLines(docs.registryComment),
19
+ " */",
20
+ ].join("\n");
21
+ const groupsLine = (groups) => (groups.length === 0 ? [] : [` * Groups: ${backtickList(groups)}.`]);
22
+ const rangePhrase = (vendor) => vendor === undefined ? "Registry enumerant block" : `Allocated from the ${backtick(vendor)} enumerant range`;
23
+ const rangeLine = ({ vendor, blockComment }) => {
24
+ if (vendor === undefined && blockComment === undefined) {
25
+ return [];
16
26
  }
17
- return `${GENERATED_HEADER}\n\n${builder.toSource()}`;
27
+ const phrase = rangePhrase(vendor);
28
+ const text = blockComment === undefined ? phrase : `${phrase}: ${blockComment}`;
29
+ return [` * ${asSentence(text)}`];
18
30
  };
19
- const renderTypesModule = (groupAliases) => {
31
+ const tokenNoteLines = (token) => [
32
+ ...groupsLine(token.groups),
33
+ ...(token.comment === undefined ? [] : [` * Token note: ${asSentence(token.comment)}`]),
34
+ ...(token.alias === undefined ? [] : [` * Also known as ${backtick(token.alias)}.`]),
35
+ ...(token.valueType === undefined ? [] : [` * Tagged ${backtick(token.valueType)} in the registry.`]),
36
+ ...rangeLine(token),
37
+ ];
38
+ const enumJsDoc = ({ token, provenance }, docs) => [
39
+ "/**",
40
+ ` * ${backtick(token.name)}.`,
41
+ " *",
42
+ ...provenanceLines(provenance, docs.extensionEnums.get(token.name) ?? []),
43
+ ...tokenNoteLines(token),
44
+ " */",
45
+ ].join("\n");
46
+ const renderEnumsModule = (tokens, docs) => {
20
47
  const builder = new ModuleBuilder();
21
- builder.imports.addNamed("@gtkx/native", "ExternalObject", true);
22
- builder.imports.addNamed("@gtkx/native", "Handle", true);
23
- builder.appendDeclaration("/** An opaque `GLsync` fence handle. */\nexport type GLsync = ExternalObject<Handle>;");
24
- builder.appendDeclaration("/** An opaque native pointer handle (e.g. a `glMapBufferRange` mapping). */\n" +
25
- "export type GLpointer = ExternalObject<Handle>;");
48
+ for (const row of tokens) {
49
+ builder.appendDeclaration(`${enumJsDoc(row, docs)}\nexport const ${row.exportName} = ${row.literal};`);
50
+ }
51
+ return `${generatedHeader(docs)}\n\n${builder.toSource()}`;
52
+ };
53
+ const scalarSentences = (alias, type) => [
54
+ `The C ${backtick(alias)} scalar: ${backtick(type.declaration)}.`,
55
+ ...(type.requires === undefined ? [] : [`Requires the ${backtick(type.requires)} header.`]),
56
+ ...(type.comment === undefined ? [] : [`Registry note: ${asSentence(type.comment)}`]),
57
+ ];
58
+ const scalarJsDoc = (alias, docs) => {
59
+ const type = docs.types.get(alias);
60
+ if (type === undefined) {
61
+ return `/** The C ${backtick(alias)} scalar. */`;
62
+ }
63
+ return `/** ${scalarSentences(alias, type).join(" ")} */`;
64
+ };
65
+ const syncJsDoc = (docs) => {
66
+ const type = docs.types.get("GLsync");
67
+ if (type === undefined) {
68
+ return `/** ${SYNC_SUMMARY}. */`;
69
+ }
70
+ return `/** ${SYNC_SUMMARY}: ${backtick(type.declaration)}. */`;
71
+ };
72
+ const groupSummary = (group, isBitmask) => isBitmask
73
+ ? `Registry enum group ${backtick(group)}, declared as a bitmask: members are combined with \`|\`.`
74
+ : `Registry enum group ${backtick(group)}.`;
75
+ const memberLines = (members) => members.length === 0 ? [] : [" *", ` * Members: ${backtickList(members)}.`];
76
+ const groupAliasJsDoc = (group, base, docs) => [
77
+ "/**",
78
+ ` * ${groupSummary(group, docs.bitmaskGroups.has(group))}`,
79
+ " *",
80
+ ` * Open and documentation-only; any ${backtick(base)} value is accepted.`,
81
+ ...memberLines(docs.groupMembers.get(group) ?? []),
82
+ " */",
83
+ ].join("\n");
84
+ const appendScalarAliases = (builder, docs) => {
26
85
  const seen = new Set();
27
86
  for (const scalar of GL_SCALARS.values()) {
28
87
  if (seen.has(scalar.tsAlias)) {
29
88
  continue;
30
89
  }
31
90
  seen.add(scalar.tsAlias);
32
- builder.appendDeclaration(`/** The C \`${scalar.tsAlias}\` scalar. */\nexport type ${scalar.tsAlias} = number;`);
91
+ builder.appendDeclaration(`${scalarJsDoc(scalar.tsAlias, docs)}\nexport type ${scalar.tsAlias} = number;`);
33
92
  }
34
- const sortedAliases = sortStringsBy(groupAliases.entries(), ([key]) => key);
35
- for (const [group, base] of sortedAliases) {
36
- builder.appendDeclaration(`/** Registry enum group \`${group}\`; open and documentation-only, ` +
37
- `any \`${base}\` value is accepted. */\nexport type ${group} = ${base};`);
93
+ };
94
+ const appendGroupAliases = (builder, groupAliases, docs) => {
95
+ const sorted = sortStringsBy(groupAliases.entries(), ([key]) => key);
96
+ for (const [group, base] of sorted) {
97
+ builder.appendDeclaration(`${groupAliasJsDoc(group, base, docs)}\nexport type ${group} = ${base};`);
38
98
  }
39
- return `${GENERATED_HEADER}\n\n${builder.toSource()}`;
99
+ };
100
+ const renderTypesModule = (groupAliases, docs) => {
101
+ const builder = new ModuleBuilder();
102
+ builder.imports.addNamed("@gtkx/native", "ExternalObject", true);
103
+ builder.imports.addNamed("@gtkx/native", "Handle", true);
104
+ builder.appendDeclaration(`${syncJsDoc(docs)}\nexport type GLsync = ExternalObject<Handle>;`);
105
+ builder.appendDeclaration("/** An opaque native pointer handle (e.g. a `glMapBufferRange` mapping). */\n" +
106
+ "export type GLpointer = ExternalObject<Handle>;");
107
+ appendScalarAliases(builder, docs);
108
+ appendGroupAliases(builder, groupAliases, docs);
109
+ return `${generatedHeader(docs)}\n\n${builder.toSource()}`;
40
110
  };
41
111
  const appendTypeImports = (builder, usedTypes) => {
42
112
  for (const alias of sortStrings(usedTypes)) {
@@ -58,7 +128,7 @@ const appendCommandDeclarations = (builder, commands) => {
58
128
  builder.appendDeclaration(command.declaration);
59
129
  }
60
130
  };
61
- const renderCommandsModule = (rendered, singulars, usedTypes) => {
131
+ const renderCommandsModule = (rendered, singulars, usedTypes, docs) => {
62
132
  const builder = new ModuleBuilder();
63
133
  builder.imports.addNamed("@gtkx/runtime", "t");
64
134
  appendTypeImports(builder, usedTypes);
@@ -67,7 +137,7 @@ const renderCommandsModule = (rendered, singulars, usedTypes) => {
67
137
  appendCommandBindings(builder, singulars);
68
138
  appendCommandDeclarations(builder, rendered);
69
139
  appendCommandDeclarations(builder, singulars);
70
- return `${GENERATED_HEADER}\n\n${builder.toSource()}`;
140
+ return `${generatedHeader(docs)}\n\n${builder.toSource()}`;
71
141
  };
72
142
  export { renderEnumsModule, renderTypesModule, renderCommandsModule };
73
143
  //# sourceMappingURL=modules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/khronos/modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GlEnum } from \"./model.js\";\nimport type { RenderedCommand } from \"./render.js\";\nimport { ModuleBuilder } from \"../writer/module.js\";\nimport { GL_SCALARS } from \"./plan.js\";\n\nconst LIB_CONSTANT = \"export const LIB = \\\"libGL.so.1\\\";\";\n\nconst GENERATED_HEADER = `/**\n * GENERATED FILE: do not edit.\n */`;\n\nconst TS_PRIMITIVES: Set<string> = new Set([\"boolean\", \"string\", \"void\", \"number\"]);\n\nconst quotedGroupList = (groups: string[]): string => groups.map((group) => `\\`${group}\\``).join(\", \");\n\nconst renderEnumsModule = (\n tokens: { token: GlEnum; exportName: string; literal: string; feature: string }[],\n): string => {\n const builder = new ModuleBuilder();\n\n for (const { token, exportName, literal, feature } of tokens) {\n const groupNote = token.groups.length > 0 ? ` Groups: ${quotedGroupList(token.groups)}.` : \"\";\n\n builder.appendDeclaration(\n `/** \\`${token.name}\\`, provided by \\`${feature}\\`.${groupNote} */\\n` +\n `export const ${exportName} = ${literal};`,\n );\n }\n\n return `${GENERATED_HEADER}\\n\\n${builder.toSource()}`;\n};\n\nconst renderTypesModule = (groupAliases: Map<string, string>): string => {\n const builder = new ModuleBuilder();\n builder.imports.addNamed(\"@gtkx/native\", \"ExternalObject\", true);\n builder.imports.addNamed(\"@gtkx/native\", \"Handle\", true);\n\n builder.appendDeclaration(\n \"/** An opaque `GLsync` fence handle. */\\nexport type GLsync = ExternalObject<Handle>;\",\n );\n\n builder.appendDeclaration(\n \"/** An opaque native pointer handle (e.g. a `glMapBufferRange` mapping). */\\n\" +\n \"export type GLpointer = ExternalObject<Handle>;\",\n );\n\n const seen: Set<string> = new Set();\n\n for (const scalar of GL_SCALARS.values()) {\n if (seen.has(scalar.tsAlias)) {\n continue;\n }\n\n seen.add(scalar.tsAlias);\n\n builder.appendDeclaration(\n `/** The C \\`${scalar.tsAlias}\\` scalar. */\\nexport type ${scalar.tsAlias} = number;`,\n );\n }\n\n const sortedAliases = sortStringsBy(groupAliases.entries(), ([key]) => key);\n\n for (const [group, base] of sortedAliases) {\n builder.appendDeclaration(\n `/** Registry enum group \\`${group}\\`; open and documentation-only, ` +\n `any \\`${base}\\` value is accepted. */\\nexport type ${group} = ${base};`,\n );\n }\n\n return `${GENERATED_HEADER}\\n\\n${builder.toSource()}`;\n};\n\nconst appendTypeImports = (builder: ModuleBuilder, usedTypes: Set<string>): void => {\n for (const alias of sortStrings(usedTypes)) {\n if (TS_PRIMITIVES.has(alias)) {\n continue;\n }\n\n builder.imports.addNamed(\"./types.js\", alias, true);\n }\n};\n\nconst appendCommandBindings = (builder: ModuleBuilder, commands: RenderedCommand[]): void => {\n for (const command of commands) {\n if (command.binding !== undefined) {\n builder.appendBinding(command.binding, command.binding);\n }\n }\n};\n\nconst appendCommandDeclarations = (builder: ModuleBuilder, commands: RenderedCommand[]): void => {\n for (const command of commands) {\n builder.appendDeclaration(command.declaration);\n }\n};\n\nconst renderCommandsModule = (\n rendered: RenderedCommand[],\n singulars: RenderedCommand[],\n usedTypes: Set<string>,\n): string => {\n const builder = new ModuleBuilder();\n builder.imports.addNamed(\"@gtkx/runtime\", \"t\");\n appendTypeImports(builder, usedTypes);\n builder.appendBinding(LIB_CONSTANT);\n appendCommandBindings(builder, rendered);\n appendCommandBindings(builder, singulars);\n appendCommandDeclarations(builder, rendered);\n appendCommandDeclarations(builder, singulars);\n\n return `${GENERATED_HEADER}\\n\\n${builder.toSource()}`;\n};\n\nexport { renderEnumsModule, renderTypesModule, renderCommandsModule };\n"]}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/khronos/modules.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GlDocContext } from \"./doc-context.js\";\nimport type { GlEnum, GlType } from \"./model.js\";\nimport type { RenderedCommand } from \"./render.js\";\nimport type { GlSymbolProvenance } from \"./select.js\";\nimport { ModuleBuilder } from \"../writer/module.js\";\nimport { asSentence, backtick, backtickList, provenanceLines } from \"./notes.js\";\nimport { GL_SCALARS } from \"./plan.js\";\n\ntype EnumRow = {\n token: GlEnum;\n exportName: string;\n literal: string;\n provenance: GlSymbolProvenance;\n};\n\nconst LIB_CONSTANT =\n \"/** The shared library the generated OpenGL bindings are loaded from. */\\n\" +\n \"export const LIB = \\\"libGL.so.1\\\";\";\n\nconst SYNC_SUMMARY = \"An opaque `GLsync` fence handle\";\nconst TS_PRIMITIVES: Set<string> = new Set([\"boolean\", \"string\", \"void\", \"number\"]);\n\nconst attributionLine = (line: string): string => (line.length === 0 ? \" *\" : ` * ${line}`);\n\nconst attributionLines = (registryComment: string | undefined): string[] =>\n registryComment === undefined\n ? []\n : [\" *\", ...registryComment.split(\"\\n\").map((line) => attributionLine(line))];\n\nconst generatedHeader = (docs: GlDocContext): string =>\n [\n \"/**\",\n \" * GENERATED FILE: do not edit.\",\n \" *\",\n \" * Derived from the Khronos OpenGL registry (gl.xml).\",\n ...attributionLines(docs.registryComment),\n \" */\",\n ].join(\"\\n\");\n\nconst groupsLine = (groups: string[]): string[] => (groups.length === 0 ? [] : [` * Groups: ${backtickList(groups)}.`]);\n\nconst rangePhrase = (vendor: string | undefined): string =>\n vendor === undefined ? \"Registry enumerant block\" : `Allocated from the ${backtick(vendor)} enumerant range`;\n\nconst rangeLine = ({ vendor, blockComment }: GlEnum): string[] => {\n if (vendor === undefined && blockComment === undefined) {\n return [];\n }\n\n const phrase = rangePhrase(vendor);\n const text = blockComment === undefined ? phrase : `${phrase}: ${blockComment}`;\n\n return [` * ${asSentence(text)}`];\n};\n\nconst tokenNoteLines = (token: GlEnum): string[] => [\n ...groupsLine(token.groups),\n ...(token.comment === undefined ? [] : [` * Token note: ${asSentence(token.comment)}`]),\n ...(token.alias === undefined ? [] : [` * Also known as ${backtick(token.alias)}.`]),\n ...(token.valueType === undefined ? [] : [` * Tagged ${backtick(token.valueType)} in the registry.`]),\n ...rangeLine(token),\n];\n\nconst enumJsDoc = ({ token, provenance }: EnumRow, docs: GlDocContext): string =>\n [\n \"/**\",\n ` * ${backtick(token.name)}.`,\n \" *\",\n ...provenanceLines(provenance, docs.extensionEnums.get(token.name) ?? []),\n ...tokenNoteLines(token),\n \" */\",\n ].join(\"\\n\");\n\nconst renderEnumsModule = (tokens: EnumRow[], docs: GlDocContext): string => {\n const builder = new ModuleBuilder();\n\n for (const row of tokens) {\n builder.appendDeclaration(`${enumJsDoc(row, docs)}\\nexport const ${row.exportName} = ${row.literal};`);\n }\n\n return `${generatedHeader(docs)}\\n\\n${builder.toSource()}`;\n};\n\nconst scalarSentences = (alias: string, type: GlType): string[] => [\n `The C ${backtick(alias)} scalar: ${backtick(type.declaration)}.`,\n ...(type.requires === undefined ? [] : [`Requires the ${backtick(type.requires)} header.`]),\n ...(type.comment === undefined ? [] : [`Registry note: ${asSentence(type.comment)}`]),\n];\n\nconst scalarJsDoc = (alias: string, docs: GlDocContext): string => {\n const type = docs.types.get(alias);\n\n if (type === undefined) {\n return `/** The C ${backtick(alias)} scalar. */`;\n }\n\n return `/** ${scalarSentences(alias, type).join(\" \")} */`;\n};\n\nconst syncJsDoc = (docs: GlDocContext): string => {\n const type = docs.types.get(\"GLsync\");\n\n if (type === undefined) {\n return `/** ${SYNC_SUMMARY}. */`;\n }\n\n return `/** ${SYNC_SUMMARY}: ${backtick(type.declaration)}. */`;\n};\n\nconst groupSummary = (group: string, isBitmask: boolean): string =>\n isBitmask\n ? `Registry enum group ${backtick(group)}, declared as a bitmask: members are combined with \\`|\\`.`\n : `Registry enum group ${backtick(group)}.`;\n\nconst memberLines = (members: string[]): string[] =>\n members.length === 0 ? [] : [\" *\", ` * Members: ${backtickList(members)}.`];\n\nconst groupAliasJsDoc = (group: string, base: string, docs: GlDocContext): string =>\n [\n \"/**\",\n ` * ${groupSummary(group, docs.bitmaskGroups.has(group))}`,\n \" *\",\n ` * Open and documentation-only; any ${backtick(base)} value is accepted.`,\n ...memberLines(docs.groupMembers.get(group) ?? []),\n \" */\",\n ].join(\"\\n\");\n\nconst appendScalarAliases = (builder: ModuleBuilder, docs: GlDocContext): void => {\n const seen: Set<string> = new Set();\n\n for (const scalar of GL_SCALARS.values()) {\n if (seen.has(scalar.tsAlias)) {\n continue;\n }\n\n seen.add(scalar.tsAlias);\n builder.appendDeclaration(`${scalarJsDoc(scalar.tsAlias, docs)}\\nexport type ${scalar.tsAlias} = number;`);\n }\n};\n\nconst appendGroupAliases = (builder: ModuleBuilder, groupAliases: Map<string, string>, docs: GlDocContext): void => {\n const sorted = sortStringsBy(groupAliases.entries(), ([key]) => key);\n\n for (const [group, base] of sorted) {\n builder.appendDeclaration(`${groupAliasJsDoc(group, base, docs)}\\nexport type ${group} = ${base};`);\n }\n};\n\nconst renderTypesModule = (groupAliases: Map<string, string>, docs: GlDocContext): string => {\n const builder = new ModuleBuilder();\n builder.imports.addNamed(\"@gtkx/native\", \"ExternalObject\", true);\n builder.imports.addNamed(\"@gtkx/native\", \"Handle\", true);\n builder.appendDeclaration(`${syncJsDoc(docs)}\\nexport type GLsync = ExternalObject<Handle>;`);\n\n builder.appendDeclaration(\n \"/** An opaque native pointer handle (e.g. a `glMapBufferRange` mapping). */\\n\" +\n \"export type GLpointer = ExternalObject<Handle>;\",\n );\n\n appendScalarAliases(builder, docs);\n appendGroupAliases(builder, groupAliases, docs);\n\n return `${generatedHeader(docs)}\\n\\n${builder.toSource()}`;\n};\n\nconst appendTypeImports = (builder: ModuleBuilder, usedTypes: Set<string>): void => {\n for (const alias of sortStrings(usedTypes)) {\n if (TS_PRIMITIVES.has(alias)) {\n continue;\n }\n\n builder.imports.addNamed(\"./types.js\", alias, true);\n }\n};\n\nconst appendCommandBindings = (builder: ModuleBuilder, commands: RenderedCommand[]): void => {\n for (const command of commands) {\n if (command.binding !== undefined) {\n builder.appendBinding(command.binding, command.binding);\n }\n }\n};\n\nconst appendCommandDeclarations = (builder: ModuleBuilder, commands: RenderedCommand[]): void => {\n for (const command of commands) {\n builder.appendDeclaration(command.declaration);\n }\n};\n\nconst renderCommandsModule = (\n rendered: RenderedCommand[],\n singulars: RenderedCommand[],\n usedTypes: Set<string>,\n docs: GlDocContext,\n): string => {\n const builder = new ModuleBuilder();\n builder.imports.addNamed(\"@gtkx/runtime\", \"t\");\n appendTypeImports(builder, usedTypes);\n builder.appendBinding(LIB_CONSTANT);\n appendCommandBindings(builder, rendered);\n appendCommandBindings(builder, singulars);\n appendCommandDeclarations(builder, rendered);\n appendCommandDeclarations(builder, singulars);\n\n return `${generatedHeader(docs)}\\n\\n${builder.toSource()}`;\n};\n\nexport { renderEnumsModule, renderTypesModule, renderCommandsModule, type EnumRow };\n"]}
@@ -0,0 +1,19 @@
1
+ import type { GlExtensionAttribution } from "./extensions.js";
2
+ import type { GlSymbolProvenance } from "./select.js";
3
+ type MetadataNotesOptions = {
4
+ type: string;
5
+ group?: string;
6
+ len?: string;
7
+ objectClass?: string;
8
+ kinds: string[];
9
+ note?: string;
10
+ };
11
+ declare const commandExportName: (name: string) => string;
12
+ declare const backtick: (text: string) => string;
13
+ declare const backtickList: (values: string[]) => string;
14
+ declare const asSentence: (text: string) => string;
15
+ declare const provenanceLines: (provenance: GlSymbolProvenance, extensions: GlExtensionAttribution[]) => string[];
16
+ declare const metadataNotes: ({ type, group, len, objectClass, kinds, note }: MetadataNotesOptions) => string;
17
+ declare const kindDescriptions: (kinds: string[], table: Map<string, string>) => string;
18
+ export { asSentence, backtick, backtickList, commandExportName, kindDescriptions, metadataNotes, type MetadataNotesOptions, provenanceLines, };
19
+ //# sourceMappingURL=notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../src/khronos/notes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAa,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE,KAAK,oBAAoB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MACqC,CAAC;AAEhF,QAAA,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,MAAuB,CAAC;AACzD,QAAA,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,KAAG,MAA2D,CAAC;AACrG,QAAA,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAAkD,CAAC;AA0BtF,QAAA,MAAM,eAAe,GAAI,YAAY,kBAAkB,EAAE,YAAY,sBAAsB,EAAE,KAAG,MAAM,EAKrG,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,gDAAgD,oBAAoB,KAAG,MAQ9E,CAAC;AAEjB,QAAA,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MACZ,CAAC;AAE7D,OAAO,EACH,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,KAAK,oBAAoB,EACzB,eAAe,GAClB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { lowerFirst, toCamelIdentifier } from "@gtkx/utils";
2
+ const commandExportName = (name) => toCamelIdentifier(name.startsWith("gl") ? lowerFirst(name.slice(2)) : name);
3
+ const backtick = (text) => `\`${text}\``;
4
+ const backtickList = (values) => values.map((value) => backtick(value)).join(", ");
5
+ const asSentence = (text) => (text.endsWith(".") ? text : `${text}.`);
6
+ const removalPhrase = (removal) => removal.comment === undefined
7
+ ? backtick(removal.feature)
8
+ : `${backtick(removal.feature)} (${removal.comment})`;
9
+ const removalLine = (provenance) => {
10
+ const phrases = provenance.removals.map((removal) => removalPhrase(removal)).join(", ");
11
+ return ` * Removed from the core profile by ${phrases}, then restored by ${backtick(provenance.feature)}.`;
12
+ };
13
+ const extensionLine = (extensions) => {
14
+ const names = backtickList(extensions.map((extension) => extension.name));
15
+ return ` * Also provided by the ${names} extension${extensions.length === 1 ? "" : "s"}.`;
16
+ };
17
+ const extensionNoteLines = (extensions) => extensions.flatMap((extension) => extension.notes.map((note) => ` * ${backtick(extension.name)} note: ${asSentence(note)}`));
18
+ const extensionLines = (extensions) => extensions.length === 0 ? [] : [extensionLine(extensions), ...extensionNoteLines(extensions)];
19
+ const provenanceLines = (provenance, extensions) => [
20
+ ` * Provided by ${backtick(provenance.feature)}.`,
21
+ ...(provenance.removals.length > 0 ? [removalLine(provenance)] : []),
22
+ ...(provenance.requireComment === undefined ? [] : [` * Registry note: ${provenance.requireComment}`]),
23
+ ...extensionLines(extensions),
24
+ ];
25
+ const metadataNotes = ({ type, group, len, objectClass, kinds, note }) => [
26
+ backtick(type),
27
+ ...(group === undefined ? [] : [`group ${backtick(group)}`]),
28
+ ...(len === undefined ? [] : [`length ${backtick(len)}`]),
29
+ ...(objectClass === undefined ? [] : [`object class ${backtick(objectClass)}`]),
30
+ ...kinds.map((kind) => `kind ${backtick(kind)}`),
31
+ ...(note === undefined ? [] : [note]),
32
+ ].join(", ");
33
+ const kindDescriptions = (kinds, table) => kinds.flatMap((kind) => table.get(kind) ?? []).join(" ");
34
+ export { asSentence, backtick, backtickList, commandExportName, kindDescriptions, metadataNotes, provenanceLines, };
35
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/khronos/notes.ts"],"names":[],"mappings":"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","sourcesContent":["import { lowerFirst, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GlExtensionAttribution } from \"./extensions.js\";\nimport type { GlRemoval, GlSymbolProvenance } from \"./select.js\";\n\ntype MetadataNotesOptions = {\n type: string;\n group?: string;\n len?: string;\n objectClass?: string;\n kinds: string[];\n note?: string;\n};\n\nconst commandExportName = (name: string): string =>\n toCamelIdentifier(name.startsWith(\"gl\") ? lowerFirst(name.slice(2)) : name);\n\nconst backtick = (text: string): string => `\\`${text}\\``;\nconst backtickList = (values: string[]): string => values.map((value) => backtick(value)).join(\", \");\nconst asSentence = (text: string): string => (text.endsWith(\".\") ? text : `${text}.`);\n\nconst removalPhrase = (removal: GlRemoval): string =>\n removal.comment === undefined\n ? backtick(removal.feature)\n : `${backtick(removal.feature)} (${removal.comment})`;\n\nconst removalLine = (provenance: GlSymbolProvenance): string => {\n const phrases = provenance.removals.map((removal) => removalPhrase(removal)).join(\", \");\n\n return ` * Removed from the core profile by ${phrases}, then restored by ${backtick(provenance.feature)}.`;\n};\n\nconst extensionLine = (extensions: GlExtensionAttribution[]): string => {\n const names = backtickList(extensions.map((extension) => extension.name));\n\n return ` * Also provided by the ${names} extension${extensions.length === 1 ? \"\" : \"s\"}.`;\n};\n\nconst extensionNoteLines = (extensions: GlExtensionAttribution[]): string[] =>\n extensions.flatMap((extension) =>\n extension.notes.map((note) => ` * ${backtick(extension.name)} note: ${asSentence(note)}`));\n\nconst extensionLines = (extensions: GlExtensionAttribution[]): string[] =>\n extensions.length === 0 ? [] : [extensionLine(extensions), ...extensionNoteLines(extensions)];\n\nconst provenanceLines = (provenance: GlSymbolProvenance, extensions: GlExtensionAttribution[]): string[] => [\n ` * Provided by ${backtick(provenance.feature)}.`,\n ...(provenance.removals.length > 0 ? [removalLine(provenance)] : []),\n ...(provenance.requireComment === undefined ? [] : [` * Registry note: ${provenance.requireComment}`]),\n ...extensionLines(extensions),\n];\n\nconst metadataNotes = ({ type, group, len, objectClass, kinds, note }: MetadataNotesOptions): string =>\n [\n backtick(type),\n ...(group === undefined ? [] : [`group ${backtick(group)}`]),\n ...(len === undefined ? [] : [`length ${backtick(len)}`]),\n ...(objectClass === undefined ? [] : [`object class ${backtick(objectClass)}`]),\n ...kinds.map((kind) => `kind ${backtick(kind)}`),\n ...(note === undefined ? [] : [note]),\n ].join(\", \");\n\nconst kindDescriptions = (kinds: string[], table: Map<string, string>): string =>\n kinds.flatMap((kind) => table.get(kind) ?? []).join(\" \");\n\nexport {\n asSentence,\n backtick,\n backtickList,\n commandExportName,\n kindDescriptions,\n metadataNotes,\n type MetadataNotesOptions,\n provenanceLines,\n};\n"]}
@@ -5,7 +5,7 @@ type ParamPair = {
5
5
  param: GlParam | undefined;
6
6
  };
7
7
  declare const paramPairAt: (plan: CommandPlan & {
8
- ok: true;
8
+ isOk: true;
9
9
  }, index: number) => ParamPair;
10
10
  export { paramPairAt };
11
11
  //# sourceMappingURL=param-pair.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"param-pair.d.ts","sourceRoot":"","sources":["../../src/khronos/param-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAExD,KAAK,SAAS,GAAG;IACb,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,EAAE,OAAO,MAAM,KAAG,SAGrE,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"param-pair.d.ts","sourceRoot":"","sources":["../../src/khronos/param-pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAExD,KAAK,SAAS,GAAG;IACb,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,OAAO,MAAM,KAAG,SAGvE,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"param-pair.js","sourceRoot":"","sources":["../../src/khronos/param-pair.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG,CAAC,IAAgC,EAAE,KAAa,EAAa,EAAE,CAAC,CAAC;IACjF,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CACpC,CAAC,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import type { GlParam } from \"./model.js\";\nimport type { CommandPlan, ParamPlan } from \"./plan.js\";\n\ntype ParamPair = {\n paramPlan: ParamPlan | undefined;\n param: GlParam | undefined;\n};\n\nconst paramPairAt = (plan: CommandPlan & { ok: true }, index: number): ParamPair => ({\n paramPlan: plan.params[index],\n param: plan.command.params[index],\n});\n\nexport { paramPairAt };\n"]}
1
+ {"version":3,"file":"param-pair.js","sourceRoot":"","sources":["../../src/khronos/param-pair.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG,CAAC,IAAkC,EAAE,KAAa,EAAa,EAAE,CAAC,CAAC;IACnF,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;CACpC,CAAC,CAAC;AAEH,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import type { GlParam } from \"./model.js\";\nimport type { CommandPlan, ParamPlan } from \"./plan.js\";\n\ntype ParamPair = {\n paramPlan: ParamPlan | undefined;\n param: GlParam | undefined;\n};\n\nconst paramPairAt = (plan: CommandPlan & { isOk: true }, index: number): ParamPair => ({\n paramPlan: plan.params[index],\n param: plan.command.params[index],\n});\n\nexport { paramPairAt };\n"]}
@@ -1,5 +1,5 @@
1
1
  import { type GlExclusionReason } from "./plan.js";
2
- import { type GlSelection } from "./select.js";
2
+ import { type GlSelection, type GlSubset } from "./select.js";
3
3
  type GlExclusion = {
4
4
  command: string;
5
5
  reason: GlExclusionReason;
@@ -10,6 +10,8 @@ type GlGenerationReport = {
10
10
  emittedCommands: number;
11
11
  derivedSingulars: number;
12
12
  exclusions: GlExclusion[];
13
+ enumExclusions: string[];
14
+ coreRemovals: GlSubset["removed"];
13
15
  };
14
16
  type GlGenerationResult = {
15
17
  files: Map<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/khronos/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EAKzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,WAAW,EAA6B,MAAM,aAAa,CAAC;AAE1E,KAAK,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,WAAW,EAAE,CAAC;CAC7B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAIF,KAAK,mBAAmB,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAkQF,QAAA,MAAM,iBAAiB,GAAI,SAAS,mBAAmB,KAAG,kBAsCzD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/khronos/pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,KAAK,iBAAiB,EAKzB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAsD,MAAM,aAAa,CAAC;AAElH,KAAK,WAAW,GAAG;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,SAAS,EAAE,WAAW,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAIF,KAAK,mBAAmB,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAoTF,QAAA,MAAM,iBAAiB,GAAI,SAAS,mBAAmB,KAAG,kBAqCzD,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { sanitizeIdentifier, sortStrings, sortStringsBy } from "@gtkx/utils";
2
+ import { buildDocContext } from "./doc-context.js";
3
+ import { buildExtensionIndex } from "./extensions.js";
2
4
  import { loadGlRegistry } from "./model.js";
3
5
  import { renderCommandsModule, renderEnumsModule, renderTypesModule } from "./modules.js";
4
6
  import { paramPairAt } from "./param-pair.js";
@@ -51,7 +53,12 @@ const PLAN_POLICY = {
51
53
  singleValuedQueries: SINGLE_VALUED_QUERIES,
52
54
  };
53
55
  const MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);
54
- const GROUP_BEARING_PARAM_KINDS = new Set(["scalar", "array-in", "ref-out"]);
56
+ const GROUP_BEARING_PARAM_KINDS = new Set([
57
+ "scalar",
58
+ "array-in",
59
+ "ref-out",
60
+ "ref-array-out",
61
+ ]);
55
62
  const GL_SELECTION = { api: "gl", version: 4.6, profile: "core" };
56
63
  const enumExportName = (name) => sanitizeIdentifier((name.startsWith("GL_") ? name.slice(3) : name).toUpperCase());
57
64
  const enumLiteral = (token) => {
@@ -124,7 +131,7 @@ const planSelectedCommand = (registry, name) => {
124
131
  return { command: name, reason: "override-owned" };
125
132
  }
126
133
  const plan = planCommand(command, PLAN_POLICY);
127
- if (!plan.ok) {
134
+ if (!plan.isOk) {
128
135
  return { command: name, reason: plan.reason };
129
136
  }
130
137
  return plan;
@@ -134,11 +141,11 @@ const planSelectedCommands = (registry, commandNames) => {
134
141
  const okPlans = [];
135
142
  const planFeatures = new Map();
136
143
  const sortedCommands = sortStringsBy(commandNames.entries(), ([key]) => key);
137
- for (const [name, feature] of sortedCommands) {
144
+ for (const [name, provenance] of sortedCommands) {
138
145
  const result = planSelectedCommand(registry, name);
139
- if ("ok" in result) {
146
+ if ("isOk" in result) {
140
147
  okPlans.push(result);
141
- planFeatures.set(name, feature);
148
+ planFeatures.set(name, provenance);
142
149
  }
143
150
  else {
144
151
  exclusions.push(result);
@@ -146,18 +153,42 @@ const planSelectedCommands = (registry, commandNames) => {
146
153
  }
147
154
  return { okPlans, planFeatures, exclusions };
148
155
  };
149
- const buildEnumRows = (registry, enumNames) => {
150
- const enumRows = [];
156
+ const buildEnumRows = (registry, enumNames, selection) => {
157
+ const rows = [];
158
+ const enumExclusions = [];
151
159
  const sortedEnums = sortStringsBy(enumNames.entries(), ([key]) => key);
152
- for (const [name, feature] of sortedEnums) {
153
- const token = resolveEnum(registry, name);
160
+ for (const [name, provenance] of sortedEnums) {
161
+ const token = resolveEnum(registry, name, selection.api);
154
162
  const literal = enumLiteral(token);
155
163
  if (literal === undefined) {
156
- continue;
164
+ enumExclusions.push(name);
165
+ }
166
+ else {
167
+ rows.push({ token, exportName: enumExportName(name), literal, provenance });
157
168
  }
158
- enumRows.push({ token, exportName: enumExportName(name), literal, feature });
159
169
  }
160
- return enumRows;
170
+ return { rows, enumExclusions };
171
+ };
172
+ const provenanceFor = (planFeatures, name) => {
173
+ const found = planFeatures.get(name);
174
+ if (found === undefined) {
175
+ throw new Error(`Command ${name} was planned without a selection provenance`);
176
+ }
177
+ return found;
178
+ };
179
+ const renderCommands = (plans, planFeatures, usedTypes, docs) => {
180
+ const rendered = [];
181
+ const singulars = [];
182
+ for (const plan of plans) {
183
+ const provenance = provenanceFor(planFeatures, plan.command.name);
184
+ rendered.push(renderCommand(plan, provenance, usedTypes, docs));
185
+ const singular = deriveGenSingular(plan, provenance, usedTypes, docs) ??
186
+ deriveDeleteSingular(plan, provenance, usedTypes, docs);
187
+ if (singular !== undefined) {
188
+ singulars.push(singular);
189
+ }
190
+ }
191
+ return { rendered, singulars };
161
192
  };
162
193
  const claimExportName = (exportNames, name, owner) => {
163
194
  const existing = exportNames.get(name);
@@ -190,23 +221,21 @@ const generateGlModules = (options) => {
190
221
  const registry = loadGlRegistry(options.registryPath);
191
222
  const subset = selectSubset(registry, selection);
192
223
  const { okPlans, planFeatures, exclusions } = planSelectedCommands(registry, subset.commands);
224
+ const { rows, enumExclusions } = buildEnumRows(registry, subset.enums, selection);
225
+ const groupAliases = collectGroupAliases(okPlans);
226
+ const docs = buildDocContext({
227
+ registry,
228
+ extensions: buildExtensionIndex(registry, selection),
229
+ plans: okPlans,
230
+ enumRows: rows,
231
+ });
193
232
  const usedTypes = new Set();
194
- const rendered = [];
195
- const singulars = [];
196
- for (const plan of okPlans) {
197
- const feature = planFeatures.get(plan.command.name) ?? "unknown feature";
198
- rendered.push(renderCommand(plan, feature, usedTypes));
199
- const singular = deriveGenSingular(plan, feature, usedTypes) ?? deriveDeleteSingular(plan, feature, usedTypes);
200
- if (singular !== undefined) {
201
- singulars.push(singular);
202
- }
203
- }
204
- const enumRows = buildEnumRows(registry, subset.enums);
205
- assertExportNamesDisjoint(rendered, singulars, enumRows, options.overrideExports);
233
+ const { rendered, singulars } = renderCommands(okPlans, planFeatures, usedTypes, docs);
234
+ assertExportNamesDisjoint(rendered, singulars, rows, options.overrideExports);
206
235
  const files = new Map([
207
- ["types.ts", renderTypesModule(collectGroupAliases(okPlans))],
208
- ["enums.ts", renderEnumsModule(enumRows)],
209
- ["commands.ts", renderCommandsModule(rendered, singulars, usedTypes)],
236
+ ["types.ts", renderTypesModule(groupAliases, docs)],
237
+ ["enums.ts", renderEnumsModule(rows, docs)],
238
+ ["commands.ts", renderCommandsModule(rendered, singulars, usedTypes, docs)],
210
239
  ]);
211
240
  return {
212
241
  files,
@@ -216,6 +245,8 @@ const generateGlModules = (options) => {
216
245
  emittedCommands: rendered.length,
217
246
  derivedSingulars: singulars.length,
218
247
  exclusions,
248
+ enumExclusions,
249
+ coreRemovals: subset.removed,
219
250
  },
220
251
  };
221
252
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/khronos/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeIdentifier, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport { type GlEnum, loadGlRegistry } from \"./model.js\";\nimport { renderCommandsModule, renderEnumsModule, renderTypesModule } from \"./modules.js\";\nimport { paramPairAt } from \"./param-pair.js\";\nimport {\n type CommandPlan,\n type GlExclusionReason,\n type GlPlanPolicy,\n type GlScalar,\n type ParamPlan,\n planCommand,\n} from \"./plan.js\";\nimport { deriveDeleteSingular, deriveGenSingular, renderCommand, type RenderedCommand } from \"./render.js\";\nimport { type GlSelection, resolveEnum, selectSubset } from \"./select.js\";\n\ntype GlExclusion = {\n command: string;\n reason: GlExclusionReason;\n};\n\ntype GlGenerationReport = {\n selection: GlSelection;\n selectedCommands: number;\n emittedCommands: number;\n derivedSingulars: number;\n exclusions: GlExclusion[];\n};\n\ntype GlGenerationResult = {\n files: Map<string, string>;\n report: GlGenerationReport;\n};\n\ntype GroupBearingParamPlan = Extract<ParamPlan, { kind: \"scalar\" | \"array-in\" | \"ref-out\" }>;\n\ntype GlGenerationOptions = {\n registryPath: string;\n overrideExports: Set<string>;\n};\n\ntype OkPlan = CommandPlan & { ok: true };\n\ntype PlannedSelection = {\n okPlans: OkPlan[];\n planFeatures: Map<string, string>;\n exclusions: GlExclusion[];\n};\n\ntype EnumRow = {\n token: GlEnum;\n exportName: string;\n literal: string;\n feature: string;\n};\n\nconst BYTE_OFFSET_PARAMS: Set<string> = new Set([\n \"glVertexAttribPointer:pointer\",\n \"glVertexAttribIPointer:pointer\",\n \"glVertexAttribLPointer:pointer\",\n \"glDrawElements:indices\",\n \"glDrawRangeElements:indices\",\n \"glDrawElementsBaseVertex:indices\",\n \"glDrawRangeElementsBaseVertex:indices\",\n \"glDrawElementsInstanced:indices\",\n \"glDrawElementsInstancedBaseVertex:indices\",\n \"glDrawElementsInstancedBaseInstance:indices\",\n \"glDrawElementsInstancedBaseVertexBaseInstance:indices\",\n \"glMultiDrawElements:indices\",\n \"glMultiDrawElementsBaseVertex:indices\",\n \"glDrawArraysIndirect:indirect\",\n \"glDrawElementsIndirect:indirect\",\n \"glMultiDrawArraysIndirect:indirect\",\n \"glMultiDrawElementsIndirect:indirect\",\n]);\n\nconst SINGLE_VALUED_QUERIES: Set<string> = new Set([\n \"glGetShaderiv\",\n \"glGetProgramiv\",\n \"glGetProgramPipelineiv\",\n \"glGetBufferParameteriv\",\n \"glGetBufferParameteri64v\",\n \"glGetRenderbufferParameteriv\",\n \"glGetFramebufferParameteriv\",\n \"glGetFramebufferAttachmentParameteriv\",\n \"glGetQueryiv\",\n \"glGetQueryObjectiv\",\n \"glGetQueryObjectuiv\",\n \"glGetQueryObjecti64v\",\n \"glGetQueryObjectui64v\",\n \"glGetTransformFeedbackiv\",\n \"glGetVertexArrayiv\",\n]);\n\nconst OVERRIDE_OWNED: Set<string> = new Set([\n \"glGetShaderInfoLog\",\n \"glGetProgramInfoLog\",\n \"glGetProgramPipelineInfoLog\",\n]);\n\nconst PLAN_POLICY: GlPlanPolicy = {\n byteOffsetParams: BYTE_OFFSET_PARAMS,\n singleValuedQueries: SINGLE_VALUED_QUERIES,\n};\n\nconst MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\nconst GROUP_BEARING_PARAM_KINDS: Set<ParamPlan[\"kind\"]> = new Set([\"scalar\", \"array-in\", \"ref-out\"]);\nconst GL_SELECTION: GlSelection = { api: \"gl\", version: 4.6, profile: \"core\" };\n\nconst enumExportName = (name: string): string =>\n sanitizeIdentifier((name.startsWith(\"GL_\") ? name.slice(3) : name).toUpperCase());\n\nconst enumLiteral = (token: GlEnum): string | undefined => {\n const text = token.value.trim();\n let value: bigint;\n\n try {\n value = BigInt(text);\n } catch {\n return undefined;\n }\n\n if (value > MAX_SAFE) {\n return undefined;\n }\n\n if (/^0[xX]/.test(text)) {\n return `0x${text.slice(2).toLowerCase()}`;\n }\n\n return text;\n};\n\nconst groupAliasValue = (existing: string | undefined, scalarAlias: string): string => {\n if (scalarAlias === \"GLbitfield\") {\n return \"GLbitfield\";\n }\n\n return existing ?? \"GLenum\";\n};\n\nconst mergeGroupAlias = (aliases: Map<string, string>, scalar: GlScalar, group: string | undefined): void => {\n if (group === undefined) {\n return;\n }\n\n if (scalar.isGroupBearing !== true) {\n return;\n }\n\n const existing = aliases.get(group);\n\n if (existing === \"GLbitfield\") {\n return;\n }\n\n aliases.set(group, groupAliasValue(existing, scalar.tsAlias));\n};\n\nconst isGroupBearingParam = (paramPlan: ParamPlan): paramPlan is GroupBearingParamPlan =>\n GROUP_BEARING_PARAM_KINDS.has(paramPlan.kind);\n\nconst considerParamGroup = (aliases: Map<string, string>, plan: OkPlan, index: number): void => {\n const { paramPlan, param } = paramPairAt(plan, index);\n\n if (paramPlan === undefined || param === undefined) {\n return;\n }\n\n if (isGroupBearingParam(paramPlan)) {\n mergeGroupAlias(aliases, paramPlan.scalar, param.group);\n }\n};\n\nconst collectPlanGroups = (aliases: Map<string, string>, plan: OkPlan): void => {\n for (let index = 0; index < plan.params.length; index++) {\n considerParamGroup(aliases, plan, index);\n }\n\n if (plan.returnPlan.kind === \"scalar\") {\n mergeGroupAlias(aliases, plan.returnPlan.scalar, plan.command.returnGroup);\n }\n};\n\nconst collectGroupAliases = (plans: OkPlan[]): Map<string, string> => {\n const aliases: Map<string, string> = new Map();\n\n for (const plan of plans) {\n collectPlanGroups(aliases, plan);\n }\n\n return aliases;\n};\n\nconst planSelectedCommand = (registry: ReturnType<typeof loadGlRegistry>, name: string): OkPlan | GlExclusion => {\n const command = registry.commands.get(name);\n\n if (command === undefined) {\n throw new Error(`Selected command ${name} is not defined in the registry`);\n }\n\n if (OVERRIDE_OWNED.has(name)) {\n return { command: name, reason: \"override-owned\" };\n }\n\n const plan = planCommand(command, PLAN_POLICY);\n\n if (!plan.ok) {\n return { command: name, reason: plan.reason };\n }\n\n return plan;\n};\n\nconst planSelectedCommands = (\n registry: ReturnType<typeof loadGlRegistry>,\n commandNames: Map<string, string>,\n): PlannedSelection => {\n const exclusions: GlExclusion[] = [];\n const okPlans: OkPlan[] = [];\n const planFeatures: Map<string, string> = new Map();\n const sortedCommands = sortStringsBy(commandNames.entries(), ([key]) => key);\n\n for (const [name, feature] of sortedCommands) {\n const result = planSelectedCommand(registry, name);\n\n if (\"ok\" in result) {\n okPlans.push(result);\n planFeatures.set(name, feature);\n } else {\n exclusions.push(result);\n }\n }\n\n return { okPlans, planFeatures, exclusions };\n};\n\nconst buildEnumRows = (registry: ReturnType<typeof loadGlRegistry>, enumNames: Map<string, string>): EnumRow[] => {\n const enumRows: EnumRow[] = [];\n const sortedEnums = sortStringsBy(enumNames.entries(), ([key]) => key);\n\n for (const [name, feature] of sortedEnums) {\n const token = resolveEnum(registry, name);\n const literal = enumLiteral(token);\n\n if (literal === undefined) {\n continue;\n }\n\n enumRows.push({ token, exportName: enumExportName(name), literal, feature });\n }\n\n return enumRows;\n};\n\nconst claimExportName = (exportNames: Map<string, string>, name: string, owner: string): void => {\n const existing = exportNames.get(name);\n\n if (existing !== undefined) {\n throw new Error(`Generated export name collision: ${name} (${existing} vs ${owner})`);\n }\n\n exportNames.set(name, owner);\n};\n\nconst assertExportNamesDisjoint = (\n rendered: RenderedCommand[],\n singulars: RenderedCommand[],\n enumRows: EnumRow[],\n overrideExports: Set<string>,\n): void => {\n const exportNames: Map<string, string> = new Map();\n\n for (const command of rendered) {\n claimExportName(exportNames, command.exportName, \"command\");\n }\n\n for (const singular of singulars) {\n claimExportName(exportNames, singular.exportName, \"derived singular\");\n }\n\n for (const row of enumRows) {\n claimExportName(exportNames, row.exportName, \"enum constant\");\n }\n\n const overrideCollisions = exportNames\n .keys()\n .filter((name) => overrideExports.has(name))\n .toArray();\n\n if (overrideCollisions.length > 0) {\n throw new Error(\n `Override module exports collide with generated exports: ${sortStrings(overrideCollisions).join(\", \")}`,\n );\n }\n};\n\nconst generateGlModules = (options: GlGenerationOptions): GlGenerationResult => {\n const selection = GL_SELECTION;\n const registry = loadGlRegistry(options.registryPath);\n const subset = selectSubset(registry, selection);\n const { okPlans, planFeatures, exclusions } = planSelectedCommands(registry, subset.commands);\n const usedTypes: Set<string> = new Set();\n const rendered: RenderedCommand[] = [];\n const singulars: RenderedCommand[] = [];\n\n for (const plan of okPlans) {\n const feature = planFeatures.get(plan.command.name) ?? \"unknown feature\";\n rendered.push(renderCommand(plan, feature, usedTypes));\n const singular = deriveGenSingular(plan, feature, usedTypes) ?? deriveDeleteSingular(plan, feature, usedTypes);\n\n if (singular !== undefined) {\n singulars.push(singular);\n }\n }\n\n const enumRows = buildEnumRows(registry, subset.enums);\n assertExportNamesDisjoint(rendered, singulars, enumRows, options.overrideExports);\n\n const files: Map<string, string> = new Map([\n [\"types.ts\", renderTypesModule(collectGroupAliases(okPlans))],\n [\"enums.ts\", renderEnumsModule(enumRows)],\n [\"commands.ts\", renderCommandsModule(rendered, singulars, usedTypes)],\n ]);\n\n return {\n files,\n report: {\n selection,\n selectedCommands: subset.commands.size,\n emittedCommands: rendered.length,\n derivedSingulars: singulars.length,\n exclusions,\n },\n };\n};\n\nexport { generateGlModules, type GlGenerationReport, type GlGenerationResult };\n"]}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/khronos/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeIdentifier, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport { buildDocContext, type GlDocContext } from \"./doc-context.js\";\nimport { buildExtensionIndex } from \"./extensions.js\";\nimport { type GlEnum, loadGlRegistry } from \"./model.js\";\nimport { type EnumRow, renderCommandsModule, renderEnumsModule, renderTypesModule } from \"./modules.js\";\nimport { paramPairAt } from \"./param-pair.js\";\nimport {\n type CommandPlan,\n type GlExclusionReason,\n type GlPlanPolicy,\n type GlScalar,\n type ParamPlan,\n planCommand,\n} from \"./plan.js\";\nimport { deriveDeleteSingular, deriveGenSingular, renderCommand, type RenderedCommand } from \"./render.js\";\nimport { type GlSelection, type GlSubset, type GlSymbolProvenance, resolveEnum, selectSubset } from \"./select.js\";\n\ntype GlExclusion = {\n command: string;\n reason: GlExclusionReason;\n};\n\ntype GlGenerationReport = {\n selection: GlSelection;\n selectedCommands: number;\n emittedCommands: number;\n derivedSingulars: number;\n exclusions: GlExclusion[];\n enumExclusions: string[];\n coreRemovals: GlSubset[\"removed\"];\n};\n\ntype GlGenerationResult = {\n files: Map<string, string>;\n report: GlGenerationReport;\n};\n\ntype GroupBearingParamPlan = Extract<ParamPlan, { kind: \"scalar\" | \"array-in\" | \"ref-out\" | \"ref-array-out\" }>;\n\ntype GlGenerationOptions = {\n registryPath: string;\n overrideExports: Set<string>;\n};\n\ntype OkPlan = CommandPlan & { isOk: true };\n\ntype PlannedSelection = {\n okPlans: OkPlan[];\n planFeatures: Map<string, GlSymbolProvenance>;\n exclusions: GlExclusion[];\n};\n\ntype EnumSelection = {\n rows: EnumRow[];\n enumExclusions: string[];\n};\n\ntype RenderedCommands = {\n rendered: RenderedCommand[];\n singulars: RenderedCommand[];\n};\n\nconst BYTE_OFFSET_PARAMS: Set<string> = new Set([\n \"glVertexAttribPointer:pointer\",\n \"glVertexAttribIPointer:pointer\",\n \"glVertexAttribLPointer:pointer\",\n \"glDrawElements:indices\",\n \"glDrawRangeElements:indices\",\n \"glDrawElementsBaseVertex:indices\",\n \"glDrawRangeElementsBaseVertex:indices\",\n \"glDrawElementsInstanced:indices\",\n \"glDrawElementsInstancedBaseVertex:indices\",\n \"glDrawElementsInstancedBaseInstance:indices\",\n \"glDrawElementsInstancedBaseVertexBaseInstance:indices\",\n \"glMultiDrawElements:indices\",\n \"glMultiDrawElementsBaseVertex:indices\",\n \"glDrawArraysIndirect:indirect\",\n \"glDrawElementsIndirect:indirect\",\n \"glMultiDrawArraysIndirect:indirect\",\n \"glMultiDrawElementsIndirect:indirect\",\n]);\n\nconst SINGLE_VALUED_QUERIES: Set<string> = new Set([\n \"glGetShaderiv\",\n \"glGetProgramiv\",\n \"glGetProgramPipelineiv\",\n \"glGetBufferParameteriv\",\n \"glGetBufferParameteri64v\",\n \"glGetRenderbufferParameteriv\",\n \"glGetFramebufferParameteriv\",\n \"glGetFramebufferAttachmentParameteriv\",\n \"glGetQueryiv\",\n \"glGetQueryObjectiv\",\n \"glGetQueryObjectuiv\",\n \"glGetQueryObjecti64v\",\n \"glGetQueryObjectui64v\",\n \"glGetTransformFeedbackiv\",\n \"glGetVertexArrayiv\",\n]);\n\nconst OVERRIDE_OWNED: Set<string> = new Set([\n \"glGetShaderInfoLog\",\n \"glGetProgramInfoLog\",\n \"glGetProgramPipelineInfoLog\",\n]);\n\nconst PLAN_POLICY: GlPlanPolicy = {\n byteOffsetParams: BYTE_OFFSET_PARAMS,\n singleValuedQueries: SINGLE_VALUED_QUERIES,\n};\n\nconst MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\n\nconst GROUP_BEARING_PARAM_KINDS: Set<ParamPlan[\"kind\"]> = new Set([\n \"scalar\",\n \"array-in\",\n \"ref-out\",\n \"ref-array-out\",\n]);\n\nconst GL_SELECTION: GlSelection = { api: \"gl\", version: 4.6, profile: \"core\" };\n\nconst enumExportName = (name: string): string =>\n sanitizeIdentifier((name.startsWith(\"GL_\") ? name.slice(3) : name).toUpperCase());\n\nconst enumLiteral = (token: GlEnum): string | undefined => {\n const text = token.value.trim();\n let value: bigint;\n\n try {\n value = BigInt(text);\n } catch {\n return undefined;\n }\n\n if (value > MAX_SAFE) {\n return undefined;\n }\n\n if (/^0[xX]/.test(text)) {\n return `0x${text.slice(2).toLowerCase()}`;\n }\n\n return text;\n};\n\nconst groupAliasValue = (existing: string | undefined, scalarAlias: string): string => {\n if (scalarAlias === \"GLbitfield\") {\n return \"GLbitfield\";\n }\n\n return existing ?? \"GLenum\";\n};\n\nconst mergeGroupAlias = (aliases: Map<string, string>, scalar: GlScalar, group: string | undefined): void => {\n if (group === undefined) {\n return;\n }\n\n if (scalar.isGroupBearing !== true) {\n return;\n }\n\n const existing = aliases.get(group);\n\n if (existing === \"GLbitfield\") {\n return;\n }\n\n aliases.set(group, groupAliasValue(existing, scalar.tsAlias));\n};\n\nconst isGroupBearingParam = (paramPlan: ParamPlan): paramPlan is GroupBearingParamPlan =>\n GROUP_BEARING_PARAM_KINDS.has(paramPlan.kind);\n\nconst considerParamGroup = (aliases: Map<string, string>, plan: OkPlan, index: number): void => {\n const { paramPlan, param } = paramPairAt(plan, index);\n\n if (paramPlan === undefined || param === undefined) {\n return;\n }\n\n if (isGroupBearingParam(paramPlan)) {\n mergeGroupAlias(aliases, paramPlan.scalar, param.group);\n }\n};\n\nconst collectPlanGroups = (aliases: Map<string, string>, plan: OkPlan): void => {\n for (let index = 0; index < plan.params.length; index++) {\n considerParamGroup(aliases, plan, index);\n }\n\n if (plan.returnPlan.kind === \"scalar\") {\n mergeGroupAlias(aliases, plan.returnPlan.scalar, plan.command.returnGroup);\n }\n};\n\nconst collectGroupAliases = (plans: OkPlan[]): Map<string, string> => {\n const aliases: Map<string, string> = new Map();\n\n for (const plan of plans) {\n collectPlanGroups(aliases, plan);\n }\n\n return aliases;\n};\n\nconst planSelectedCommand = (registry: ReturnType<typeof loadGlRegistry>, name: string): OkPlan | GlExclusion => {\n const command = registry.commands.get(name);\n\n if (command === undefined) {\n throw new Error(`Selected command ${name} is not defined in the registry`);\n }\n\n if (OVERRIDE_OWNED.has(name)) {\n return { command: name, reason: \"override-owned\" };\n }\n\n const plan = planCommand(command, PLAN_POLICY);\n\n if (!plan.isOk) {\n return { command: name, reason: plan.reason };\n }\n\n return plan;\n};\n\nconst planSelectedCommands = (\n registry: ReturnType<typeof loadGlRegistry>,\n commandNames: Map<string, GlSymbolProvenance>,\n): PlannedSelection => {\n const exclusions: GlExclusion[] = [];\n const okPlans: OkPlan[] = [];\n const planFeatures: Map<string, GlSymbolProvenance> = new Map();\n const sortedCommands = sortStringsBy(commandNames.entries(), ([key]) => key);\n\n for (const [name, provenance] of sortedCommands) {\n const result = planSelectedCommand(registry, name);\n\n if (\"isOk\" in result) {\n okPlans.push(result);\n planFeatures.set(name, provenance);\n } else {\n exclusions.push(result);\n }\n }\n\n return { okPlans, planFeatures, exclusions };\n};\n\nconst buildEnumRows = (\n registry: ReturnType<typeof loadGlRegistry>,\n enumNames: Map<string, GlSymbolProvenance>,\n selection: GlSelection,\n): EnumSelection => {\n const rows: EnumRow[] = [];\n const enumExclusions: string[] = [];\n const sortedEnums = sortStringsBy(enumNames.entries(), ([key]) => key);\n\n for (const [name, provenance] of sortedEnums) {\n const token = resolveEnum(registry, name, selection.api);\n const literal = enumLiteral(token);\n\n if (literal === undefined) {\n enumExclusions.push(name);\n } else {\n rows.push({ token, exportName: enumExportName(name), literal, provenance });\n }\n }\n\n return { rows, enumExclusions };\n};\n\nconst provenanceFor = (planFeatures: Map<string, GlSymbolProvenance>, name: string): GlSymbolProvenance => {\n const found = planFeatures.get(name);\n\n if (found === undefined) {\n throw new Error(`Command ${name} was planned without a selection provenance`);\n }\n\n return found;\n};\n\nconst renderCommands = (\n plans: OkPlan[],\n planFeatures: Map<string, GlSymbolProvenance>,\n usedTypes: Set<string>,\n docs: GlDocContext,\n): RenderedCommands => {\n const rendered: RenderedCommand[] = [];\n const singulars: RenderedCommand[] = [];\n\n for (const plan of plans) {\n const provenance = provenanceFor(planFeatures, plan.command.name);\n rendered.push(renderCommand(plan, provenance, usedTypes, docs));\n\n const singular =\n deriveGenSingular(plan, provenance, usedTypes, docs) ??\n deriveDeleteSingular(plan, provenance, usedTypes, docs);\n\n if (singular !== undefined) {\n singulars.push(singular);\n }\n }\n\n return { rendered, singulars };\n};\n\nconst claimExportName = (exportNames: Map<string, string>, name: string, owner: string): void => {\n const existing = exportNames.get(name);\n\n if (existing !== undefined) {\n throw new Error(`Generated export name collision: ${name} (${existing} vs ${owner})`);\n }\n\n exportNames.set(name, owner);\n};\n\nconst assertExportNamesDisjoint = (\n rendered: RenderedCommand[],\n singulars: RenderedCommand[],\n enumRows: EnumRow[],\n overrideExports: Set<string>,\n): void => {\n const exportNames: Map<string, string> = new Map();\n\n for (const command of rendered) {\n claimExportName(exportNames, command.exportName, \"command\");\n }\n\n for (const singular of singulars) {\n claimExportName(exportNames, singular.exportName, \"derived singular\");\n }\n\n for (const row of enumRows) {\n claimExportName(exportNames, row.exportName, \"enum constant\");\n }\n\n const overrideCollisions = exportNames\n .keys()\n .filter((name) => overrideExports.has(name))\n .toArray();\n\n if (overrideCollisions.length > 0) {\n throw new Error(\n `Override module exports collide with generated exports: ${sortStrings(overrideCollisions).join(\", \")}`,\n );\n }\n};\n\nconst generateGlModules = (options: GlGenerationOptions): GlGenerationResult => {\n const selection = GL_SELECTION;\n const registry = loadGlRegistry(options.registryPath);\n const subset = selectSubset(registry, selection);\n const { okPlans, planFeatures, exclusions } = planSelectedCommands(registry, subset.commands);\n const { rows, enumExclusions } = buildEnumRows(registry, subset.enums, selection);\n const groupAliases = collectGroupAliases(okPlans);\n\n const docs = buildDocContext({\n registry,\n extensions: buildExtensionIndex(registry, selection),\n plans: okPlans,\n enumRows: rows,\n });\n\n const usedTypes: Set<string> = new Set();\n const { rendered, singulars } = renderCommands(okPlans, planFeatures, usedTypes, docs);\n assertExportNamesDisjoint(rendered, singulars, rows, options.overrideExports);\n\n const files: Map<string, string> = new Map([\n [\"types.ts\", renderTypesModule(groupAliases, docs)],\n [\"enums.ts\", renderEnumsModule(rows, docs)],\n [\"commands.ts\", renderCommandsModule(rendered, singulars, usedTypes, docs)],\n ]);\n\n return {\n files,\n report: {\n selection,\n selectedCommands: subset.commands.size,\n emittedCommands: rendered.length,\n derivedSingulars: singulars.length,\n exclusions,\n enumExclusions,\n coreRemovals: subset.removed,\n },\n };\n};\n\nexport { generateGlModules, type GlGenerationReport, type GlGenerationResult };\n"]}
@@ -65,17 +65,17 @@ type GlPlanPolicy = {
65
65
  singleValuedQueries: Set<string>;
66
66
  };
67
67
  type CommandPlan = {
68
- ok: true;
68
+ isOk: true;
69
69
  command: GlCommand;
70
70
  params: ParamPlan[];
71
71
  returnPlan: ReturnPlan;
72
72
  } | {
73
- ok: false;
73
+ isOk: false;
74
74
  command: GlCommand;
75
75
  reason: GlExclusionReason;
76
76
  };
77
77
  declare const GL_SCALARS: Map<string, GlScalar>;
78
78
  declare const parseCType: (cType: string) => ParsedCType;
79
79
  declare const planCommand: (command: GlCommand, policy: GlPlanPolicy) => CommandPlan;
80
- export { GL_SCALARS, parseCType, planCommand, type GlScalar, type ParsedCType, type ParamPlan, type ReturnPlan, type GlExclusionReason, type GlPlanPolicy, type CommandPlan, };
80
+ export { GL_SCALARS, parseCType, planCommand, type GlScalar, type ParamPlan, type ReturnPlan, type GlExclusionReason, type GlPlanPolicy, type CommandPlan, };
81
81
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/khronos/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/khronos/plan.ts"],"names":[],"mappings":"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"}