@gtkx/codegen 1.0.0-rc.1 → 1.0.0-rc.3
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.
- package/dist/analysis/descriptor-render.d.ts +20 -11
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +296 -152
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +37 -34
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +34 -30
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +16 -16
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +139 -84
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/param-structure.d.ts +14 -13
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +104 -53
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +6 -5
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +71 -29
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/compile.d.ts +5 -5
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +70 -63
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +12 -11
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +192 -123
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts +6 -9
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +69 -133
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/pipeline.d.ts +10 -7
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +81 -53
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +21 -19
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +80 -71
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +6 -6
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +126 -84
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +29 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +69 -13
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +18 -0
- package/dist/gi.d.ts.map +1 -0
- package/dist/gi.js +23 -0
- package/dist/gi.js.map +1 -0
- package/dist/gir/ancestry.d.ts +4 -3
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +12 -15
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/callback.d.ts +6 -11
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +6 -7
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +7 -5
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +14 -12
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/enum.d.ts +3 -3
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +7 -6
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +8 -3
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +30 -7
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +6 -3
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +23 -7
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/gir-path.d.ts +2 -1
- package/dist/gir/gir-path.d.ts.map +1 -1
- package/dist/gir/gir-path.js +26 -10
- package/dist/gir/gir-path.js.map +1 -1
- package/dist/gir/libraries.d.ts +5 -3
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +41 -28
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +17 -11
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +116 -92
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +10 -10
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +21 -20
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/nullable-overrides.d.ts +3 -0
- package/dist/gir/nullable-overrides.d.ts.map +1 -0
- package/dist/gir/nullable-overrides.js +5 -0
- package/dist/gir/nullable-overrides.js.map +1 -0
- package/dist/gir/parameter.d.ts +14 -12
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +27 -18
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +12 -13
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +50 -40
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +5 -4
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js +4 -3
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +5 -4
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +10 -9
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +5 -4
- package/dist/gir/record.d.ts.map +1 -1
- package/dist/gir/record.js +13 -12
- package/dist/gir/record.js.map +1 -1
- package/dist/gir/size.d.ts +6 -5
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js +49 -47
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +17 -15
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +5 -1
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.d.ts +3 -2
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +36 -25
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +3 -2
- package/dist/gir/type.d.ts.map +1 -1
- package/dist/gir/type.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts +28 -0
- package/dist/jsx.d.ts.map +1 -0
- package/dist/jsx.js +44 -0
- package/dist/jsx.js.map +1 -0
- package/dist/khronos/args.d.ts +7 -7
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +88 -67
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/jsdoc.d.ts +4 -4
- package/dist/khronos/jsdoc.d.ts.map +1 -1
- package/dist/khronos/jsdoc.js +29 -16
- package/dist/khronos/jsdoc.js.map +1 -1
- package/dist/khronos/model.d.ts +8 -7
- package/dist/khronos/model.d.ts.map +1 -1
- package/dist/khronos/model.js +94 -59
- package/dist/khronos/model.js.map +1 -1
- package/dist/khronos/modules.d.ts +4 -3
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +40 -25
- package/dist/khronos/modules.js.map +1 -1
- package/dist/khronos/param-pair.d.ts +11 -0
- package/dist/khronos/param-pair.d.ts.map +1 -0
- package/dist/khronos/param-pair.js +6 -0
- package/dist/khronos/param-pair.js.map +1 -0
- package/dist/khronos/parse.d.ts +7 -8
- package/dist/khronos/parse.d.ts.map +1 -1
- package/dist/khronos/parse.js +17 -16
- package/dist/khronos/parse.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +4 -4
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js +97 -56
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +11 -10
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +109 -45
- package/dist/khronos/plan.js.map +1 -1
- package/dist/khronos/render.d.ts +5 -4
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +106 -59
- package/dist/khronos/render.js.map +1 -1
- package/dist/khronos/select.d.ts +4 -4
- package/dist/khronos/select.d.ts.map +1 -1
- package/dist/khronos/select.js +30 -19
- package/dist/khronos/select.js.map +1 -1
- package/dist/react/element-config.d.ts +20 -0
- package/dist/react/element-config.d.ts.map +1 -0
- package/dist/react/element-config.js +64 -0
- package/dist/react/element-config.js.map +1 -0
- package/dist/runner.d.ts +19 -10
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +48 -43
- package/dist/runner.js.map +1 -1
- package/dist/store/compile-store.d.ts +5 -3
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +24 -22
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/async.d.ts +2 -1
- package/dist/store/gi/async.d.ts.map +1 -1
- package/dist/store/gi/async.js +28 -24
- package/dist/store/gi/async.js.map +1 -1
- package/dist/store/gi/callables.d.ts +26 -20
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +157 -100
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts +3 -2
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +6 -3
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts +2 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +86 -47
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/companion.d.ts +2 -1
- package/dist/store/gi/companion.d.ts.map +1 -1
- package/dist/store/gi/companion.js +8 -5
- package/dist/store/gi/companion.js.map +1 -1
- package/dist/store/gi/constant.d.ts +3 -2
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +25 -8
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts +3 -2
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +17 -10
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/enum.d.ts +3 -2
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +14 -11
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts +5 -4
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +48 -23
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts +4 -4
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +15 -11
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.d.ts +2 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +36 -18
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/item-comparators.d.ts +3 -2
- package/dist/store/gi/item-comparators.d.ts.map +1 -1
- package/dist/store/gi/item-comparators.js +33 -21
- package/dist/store/gi/item-comparators.js.map +1 -1
- package/dist/store/gi/method.d.ts +13 -13
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +188 -130
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +7 -6
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +26 -13
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts +2 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +38 -23
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/properties.d.ts +2 -1
- package/dist/store/gi/properties.d.ts.map +1 -1
- package/dist/store/gi/properties.js +6 -4
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +11 -10
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +86 -60
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts +3 -2
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +40 -28
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +9 -8
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +187 -99
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts +6 -5
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +75 -39
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts +2 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +15 -16
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.d.ts +3 -3
- package/dist/store/gi/registration.d.ts.map +1 -1
- package/dist/store/gi/registration.js +3 -2
- package/dist/store/gi/registration.js.map +1 -1
- package/dist/store/gi/return-wrap.d.ts +2 -2
- package/dist/store/gi/return-wrap.d.ts.map +1 -1
- package/dist/store/gi/return-wrap.js +43 -22
- package/dist/store/gi/return-wrap.js.map +1 -1
- package/dist/store/gi/runtime-override.d.ts +2 -1
- package/dist/store/gi/runtime-override.d.ts.map +1 -1
- package/dist/store/gi/runtime-override.js +6 -3
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.d.ts +3 -2
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +113 -66
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +15 -0
- package/dist/store/gi/value-marshalable.d.ts.map +1 -0
- package/dist/store/gi/value-marshalable.js +66 -0
- package/dist/store/gi/value-marshalable.js.map +1 -0
- package/dist/store/gi/vtable.d.ts +2 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +60 -30
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +5 -4
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +4 -2
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts +23 -0
- package/dist/store/jsx/element-components.d.ts.map +1 -0
- package/dist/store/jsx/element-components.js +86 -0
- package/dist/store/jsx/element-components.js.map +1 -0
- package/dist/store/jsx/element-prop-imports.d.ts +17 -0
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-imports.js +15 -0
- package/dist/store/jsx/element-prop-imports.js.map +1 -0
- package/dist/store/jsx/element-prop-types.d.ts +10 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
- package/dist/store/jsx/element-prop-types.js +41 -0
- package/dist/store/jsx/element-prop-types.js.map +1 -0
- package/dist/store/jsx/gir-index.d.ts +16 -0
- package/dist/store/jsx/gir-index.d.ts.map +1 -0
- package/dist/store/jsx/gir-index.js +33 -0
- package/dist/store/jsx/gir-index.js.map +1 -0
- package/dist/store/jsx/intrinsic-elements.d.ts +26 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
- package/dist/store/jsx/intrinsic-elements.js +127 -0
- package/dist/store/jsx/intrinsic-elements.js.map +1 -0
- package/dist/store/{react → jsx}/jsx.d.ts +2 -4
- package/dist/store/jsx/jsx.d.ts.map +1 -0
- package/dist/store/{react → jsx}/jsx.js +110 -71
- package/dist/store/jsx/jsx.js.map +1 -0
- package/dist/store/jsx/metadata.d.ts +4 -0
- package/dist/store/jsx/metadata.d.ts.map +1 -0
- package/dist/store/{react → jsx}/metadata.js +148 -69
- package/dist/store/jsx/metadata.js.map +1 -0
- package/dist/store/jsx/omitted-props.d.ts +10 -0
- package/dist/store/jsx/omitted-props.d.ts.map +1 -0
- package/dist/store/jsx/omitted-props.js +22 -0
- package/dist/store/jsx/omitted-props.js.map +1 -0
- package/dist/store/jsx/pipeline.d.ts +23 -0
- package/dist/store/jsx/pipeline.d.ts.map +1 -0
- package/dist/store/{react → jsx}/pipeline.js +38 -15
- package/dist/store/jsx/pipeline.js.map +1 -0
- package/dist/store/{react → jsx}/props.d.ts +9 -12
- package/dist/store/jsx/props.d.ts.map +1 -0
- package/dist/store/jsx/props.js +153 -0
- package/dist/store/jsx/props.js.map +1 -0
- package/dist/store/jsx-store.d.ts +5 -3
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +4 -1
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +14 -12
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +9 -7
- package/dist/store/store-fs.js.map +1 -1
- package/dist/writer/context.d.ts +2 -1
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +12 -6
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/doc.d.ts +2 -1
- package/dist/writer/doc.d.ts.map +1 -1
- package/dist/writer/doc.js +13 -7
- package/dist/writer/doc.js.map +1 -1
- package/dist/writer/emit.d.ts +8 -7
- package/dist/writer/emit.d.ts.map +1 -1
- package/dist/writer/emit.js +13 -10
- package/dist/writer/emit.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts +2 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +29 -18
- package/dist/writer/gtk-doc.js.map +1 -1
- package/dist/writer/imports.d.ts +4 -2
- package/dist/writer/imports.d.ts.map +1 -1
- package/dist/writer/imports.js +35 -24
- package/dist/writer/imports.js.map +1 -1
- package/dist/writer/module.d.ts +3 -2
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +16 -9
- package/dist/writer/module.js.map +1 -1
- package/dist/xml.d.ts +4 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +10 -0
- package/dist/xml.js.map +1 -0
- package/overrides/cairo/context.ts.ejs +7 -7
- package/overrides/cairo/matrix.ts.ejs +2 -2
- package/overrides/cairo/recording-surface.ts.ejs +2 -2
- package/overrides/cairo/region.ts.ejs +1 -1
- package/overrides/cairo/scaled-font.ts.ejs +3 -3
- package/package.json +14 -9
- package/src/analysis/descriptor-render.ts +516 -168
- package/src/analysis/descriptor.ts +162 -125
- package/src/analysis/inheritance.ts +286 -98
- package/src/analysis/param-structure.ts +188 -57
- package/src/analysis/ts-type.ts +113 -34
- package/src/compile.ts +103 -76
- package/src/docs/api-reference.ts +337 -146
- package/src/docs/element-page.ts +137 -150
- package/src/docs/pipeline.ts +135 -73
- package/src/docs/render.ts +151 -87
- package/src/docs/symbol-page.ts +268 -123
- package/src/fingerprint.ts +138 -26
- package/src/gi.ts +35 -0
- package/src/gir/ancestry.ts +26 -14
- package/src/gir/callback.ts +10 -15
- package/src/gir/class.ts +20 -16
- package/src/gir/enum.ts +9 -7
- package/src/gir/field.ts +37 -8
- package/src/gir/function.ts +33 -9
- package/src/gir/gir-path.ts +36 -12
- package/src/gir/libraries.ts +59 -33
- package/src/gir/library.ts +200 -97
- package/src/gir/namespace.ts +42 -26
- package/src/gir/nullable-overrides.ts +5 -0
- package/src/gir/parameter.ts +80 -42
- package/src/gir/parse.ts +102 -47
- package/src/gir/primitives.ts +25 -23
- package/src/gir/property.ts +13 -11
- package/src/gir/record.ts +16 -14
- package/src/gir/size.ts +91 -58
- package/src/gir/type-id.ts +33 -18
- package/src/gir/type-ref.ts +62 -26
- package/src/gir/type.ts +10 -8
- package/src/index.ts +8 -0
- package/src/jsx.ts +75 -0
- package/src/khronos/args.ts +158 -89
- package/src/khronos/jsdoc.ts +67 -29
- package/src/khronos/model.ts +154 -53
- package/src/khronos/modules.ts +67 -27
- package/src/khronos/param-pair.ts +14 -0
- package/src/khronos/parse.ts +37 -17
- package/src/khronos/pipeline.ts +193 -90
- package/src/khronos/plan.ts +235 -86
- package/src/khronos/render.ts +208 -71
- package/src/khronos/select.ts +48 -18
- package/src/react/element-config.ts +97 -0
- package/src/runner.ts +100 -57
- package/src/store/compile-store.ts +32 -26
- package/src/store/gi/async.ts +48 -21
- package/src/store/gi/callables.ts +339 -136
- package/src/store/gi/callback.ts +13 -4
- package/src/store/gi/class.ts +186 -64
- package/src/store/gi/companion.ts +15 -6
- package/src/store/gi/constant.ts +42 -8
- package/src/store/gi/constructor-props.ts +42 -16
- package/src/store/gi/enum.ts +28 -13
- package/src/store/gi/function.ts +88 -24
- package/src/store/gi/gtype-binding.ts +31 -18
- package/src/store/gi/interface.ts +101 -36
- package/src/store/gi/item-comparators.ts +74 -26
- package/src/store/gi/method.ts +377 -159
- package/src/store/gi/param-marshal.ts +38 -15
- package/src/store/gi/pipeline.ts +72 -22
- package/src/store/gi/properties.ts +16 -5
- package/src/store/gi/property-accessor.ts +192 -84
- package/src/store/gi/record-constructor.ts +70 -33
- package/src/store/gi/record-field-accessor.ts +415 -167
- package/src/store/gi/record-layout.ts +130 -43
- package/src/store/gi/record.ts +29 -15
- package/src/store/gi/registration.ts +15 -9
- package/src/store/gi/return-wrap.ts +71 -23
- package/src/store/gi/runtime-override.ts +13 -3
- package/src/store/gi/signal.ts +244 -104
- package/src/store/gi/value-marshalable.ts +96 -0
- package/src/store/gi/vtable.ts +117 -41
- package/src/store/gi-store.ts +26 -13
- package/src/store/jsx/element-components.ts +152 -0
- package/src/store/jsx/element-prop-imports.ts +24 -0
- package/src/store/jsx/element-prop-types.ts +59 -0
- package/src/store/jsx/gir-index.ts +62 -0
- package/src/store/jsx/intrinsic-elements.ts +253 -0
- package/src/store/{react → jsx}/jsx.ts +213 -99
- package/src/store/jsx/metadata.ts +385 -0
- package/src/store/jsx/omitted-props.ts +32 -0
- package/src/store/jsx/pipeline.ts +148 -0
- package/src/store/jsx/props.ts +262 -0
- package/src/store/jsx-store.ts +15 -3
- package/src/store/store-fs.ts +36 -20
- package/src/writer/context.ts +25 -6
- package/src/writer/doc.ts +19 -5
- package/src/writer/emit.ts +20 -11
- package/src/writer/gtk-doc.ts +48 -21
- package/src/writer/imports.ts +63 -28
- package/src/writer/module.ts +35 -11
- package/src/xml.ts +12 -0
- package/dist/store/gi/class-struct-record.d.ts +0 -9
- package/dist/store/gi/class-struct-record.d.ts.map +0 -1
- package/dist/store/gi/class-struct-record.js +0 -34
- package/dist/store/gi/class-struct-record.js.map +0 -1
- package/dist/store/react/built-ins.d.ts +0 -9
- package/dist/store/react/built-ins.d.ts.map +0 -1
- package/dist/store/react/built-ins.js +0 -226
- package/dist/store/react/built-ins.js.map +0 -1
- package/dist/store/react/element-components.d.ts +0 -15
- package/dist/store/react/element-components.d.ts.map +0 -1
- package/dist/store/react/element-components.js +0 -92
- package/dist/store/react/element-components.js.map +0 -1
- package/dist/store/react/element-prop-types.d.ts +0 -19
- package/dist/store/react/element-prop-types.d.ts.map +0 -1
- package/dist/store/react/element-prop-types.js +0 -244
- package/dist/store/react/element-prop-types.js.map +0 -1
- package/dist/store/react/element-props.d.ts +0 -4
- package/dist/store/react/element-props.d.ts.map +0 -1
- package/dist/store/react/element-props.js +0 -178
- package/dist/store/react/element-props.js.map +0 -1
- package/dist/store/react/gir-index.d.ts +0 -25
- package/dist/store/react/gir-index.d.ts.map +0 -1
- package/dist/store/react/gir-index.js +0 -55
- package/dist/store/react/gir-index.js.map +0 -1
- package/dist/store/react/intrinsic-elements.d.ts +0 -26
- package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
- package/dist/store/react/intrinsic-elements.js +0 -107
- package/dist/store/react/intrinsic-elements.js.map +0 -1
- package/dist/store/react/jsx.d.ts.map +0 -1
- package/dist/store/react/jsx.js.map +0 -1
- package/dist/store/react/metadata.d.ts +0 -4
- package/dist/store/react/metadata.d.ts.map +0 -1
- package/dist/store/react/metadata.js.map +0 -1
- package/dist/store/react/pipeline.d.ts +0 -14
- package/dist/store/react/pipeline.d.ts.map +0 -1
- package/dist/store/react/pipeline.js.map +0 -1
- package/dist/store/react/props.d.ts.map +0 -1
- package/dist/store/react/props.js +0 -133
- package/dist/store/react/props.js.map +0 -1
- package/overrides/gtk/constants.ts.ejs +0 -3
- package/overrides/gtk/index.ts.ejs +0 -2
- package/src/store/gi/class-struct-record.ts +0 -40
- package/src/store/react/built-ins.ts +0 -260
- package/src/store/react/element-components.ts +0 -138
- package/src/store/react/element-prop-types.ts +0 -280
- package/src/store/react/element-props.ts +0 -204
- package/src/store/react/gir-index.ts +0 -85
- package/src/store/react/intrinsic-elements.ts +0 -161
- package/src/store/react/metadata.ts +0 -197
- package/src/store/react/pipeline.ts +0 -90
- package/src/store/react/props.ts +0 -197
|
@@ -2,23 +2,13 @@ import { sortStringsBy, toCamelIdentifier, upperFirst } from "@gtkx/utils";
|
|
|
2
2
|
import { ancestorChain } from "../gir/ancestry.js";
|
|
3
3
|
import { namespaceDirectory } from "../gir/namespace.js";
|
|
4
4
|
import { isConstructableProperty } from "../gir/property.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { isObjectProp } from "../store/
|
|
10
|
-
import { classMethodEntries, docMarkdown, docsDefaultValue, firstSentence, joinSections, metaBlock, methodsSectionBlocks, originSignatureBlocks, renderDocsSignalSignature, renderDocsType, } from "./render.js";
|
|
11
|
-
|
|
12
|
-
const girIndex = buildGirIndex(library);
|
|
13
|
-
const applied = assembleElementProps(girIndex, elementProps);
|
|
14
|
-
return {
|
|
15
|
-
library,
|
|
16
|
-
girIndex,
|
|
17
|
-
typegen: createElementPropTypegen(girIndex, applied),
|
|
18
|
-
elementProps: applied,
|
|
19
|
-
linkFor,
|
|
20
|
-
};
|
|
21
|
-
};
|
|
5
|
+
import { elementPropTypeFor } from "../store/jsx/element-prop-imports.js";
|
|
6
|
+
import { buildGirIndex } from "../store/jsx/gir-index.js";
|
|
7
|
+
import { getGlibName, implementedInterfaces, newlyImplementedInterfaces, signalHandlerName, } from "../store/jsx/intrinsic-elements.js";
|
|
8
|
+
import { isOmittedProp } from "../store/jsx/omitted-props.js";
|
|
9
|
+
import { isObjectProp } from "../store/jsx/props.js";
|
|
10
|
+
import { classMethodEntries, docMarkdown, docsDefaultValue, firstSentence, implementsLine, joinSections, metaBlock, methodsSectionBlocks, originSignatureBlocks, renderDocsSignalSignature, renderDocsType, } from "./render.js";
|
|
11
|
+
const createElementPageContext = (library, linkFor) => ({ library, girIndex: buildGirIndex(library), linkFor });
|
|
22
12
|
const frontmatter = (entry) => {
|
|
23
13
|
const sentence = firstSentence(entry.klass.doc);
|
|
24
14
|
const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;
|
|
@@ -30,181 +20,127 @@ const glibLabel = (context, glibName) => {
|
|
|
30
20
|
return link === undefined ? `\`${glibName}\`` : `[${glibName}](${link})`;
|
|
31
21
|
};
|
|
32
22
|
const hierarchySection = (entry, context) => {
|
|
33
|
-
const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).
|
|
34
|
-
if (ancestors.length === 0)
|
|
23
|
+
const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).toReversed();
|
|
24
|
+
if (ancestors.length === 0) {
|
|
35
25
|
return [];
|
|
26
|
+
}
|
|
36
27
|
const parts = ancestors.map((ancestor) => {
|
|
37
|
-
const glib =
|
|
28
|
+
const glib = getGlibName(ancestor.klass);
|
|
38
29
|
return glib === undefined ? `\`${ancestor.namespaceName}.${ancestor.klass.name}\`` : glibLabel(context, glib);
|
|
39
30
|
});
|
|
40
31
|
parts.push(`**${entry.glibName}**`);
|
|
41
|
-
const lines = [
|
|
32
|
+
const lines = ["## Hierarchy", parts.join(" → ")];
|
|
42
33
|
const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)
|
|
43
|
-
.map((iface) =>
|
|
34
|
+
.map((iface) => getGlibName(iface.klass))
|
|
44
35
|
.filter((name) => name !== undefined);
|
|
45
|
-
|
|
46
|
-
lines.push(`Implements ${interfaces.map((name) => `\`${name}\``).join(", ")}.`);
|
|
47
|
-
}
|
|
36
|
+
lines.push(...implementsLine(interfaces));
|
|
48
37
|
return lines;
|
|
49
38
|
};
|
|
50
|
-
const callName = (call) => call === undefined ? undefined : typeof call === "string" ? call : call.method;
|
|
51
|
-
const containerLine = (prop, context) => {
|
|
52
|
-
const child = glibLabel(context, prop.child);
|
|
53
|
-
const attach = callName(prop.append);
|
|
54
|
-
const detail = [];
|
|
55
|
-
if (attach !== undefined)
|
|
56
|
-
detail.push(`attached with \`${attach}()\``);
|
|
57
|
-
if (prop.autowrap !== undefined) {
|
|
58
|
-
detail.push(`children are wrapped in a ${glibLabel(context, prop.autowrap)} before attaching`);
|
|
59
|
-
}
|
|
60
|
-
const suffix = detail.length > 0 ? ` (${detail.join("; ")})` : "";
|
|
61
|
-
if (prop.prop === "children")
|
|
62
|
-
return `- \`children\` accepts ${child} elements${suffix}.`;
|
|
63
|
-
return `- \`${prop.prop}\` is a slot accepting ${child} elements${suffix}.`;
|
|
64
|
-
};
|
|
65
|
-
const childrenSection = (entry, context) => {
|
|
66
|
-
const lines = [];
|
|
67
|
-
const seen = new Set();
|
|
68
|
-
for (const owner of memberOwners(entry, context)) {
|
|
69
|
-
if (owner.glibName === undefined)
|
|
70
|
-
continue;
|
|
71
|
-
const overlays = context.elementProps[owner.glibName] ?? [];
|
|
72
|
-
const containers = overlays.filter((prop) => prop.kind === "container" && !seen.has(prop.prop));
|
|
73
|
-
for (const prop of containers)
|
|
74
|
-
lines.push(containerLine(prop, context));
|
|
75
|
-
for (const prop of containers)
|
|
76
|
-
seen.add(prop.prop);
|
|
77
|
-
}
|
|
78
|
-
if (!seen.has("children") && context.typegen.acceptsChildren(entry.glibName)) {
|
|
79
|
-
lines.push("- `children` accepts child elements.");
|
|
80
|
-
}
|
|
81
|
-
if (lines.length === 0)
|
|
82
|
-
return [];
|
|
83
|
-
return ["## Children", lines.join("\n")];
|
|
84
|
-
};
|
|
85
39
|
const memberOwners = (entry, context) => [
|
|
86
40
|
{ klass: entry.klass, namespace: entry.namespace, origin: undefined, glibName: entry.glibName },
|
|
87
|
-
...newlyImplementedInterfaces(entry.klass, entry.namespace, context.library, (glibName) => glibName !== undefined &&
|
|
88
|
-
const glibName =
|
|
41
|
+
...newlyImplementedInterfaces(entry.klass, entry.namespace, context.library, (glibName) => glibName !== undefined && elementPropTypeFor(glibName) !== undefined).map((iface) => {
|
|
42
|
+
const glibName = getGlibName(iface.klass);
|
|
89
43
|
return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };
|
|
90
44
|
}),
|
|
91
45
|
];
|
|
92
46
|
const propertyEntry = (context, owner, property, jsName) => {
|
|
93
|
-
const
|
|
47
|
+
const isObject = isObjectProp(context.library, property);
|
|
94
48
|
const baseType = renderDocsType(context.library, property.type, false);
|
|
95
|
-
const type =
|
|
49
|
+
const type = isObject ? `${baseType} | ReactElement` : baseType;
|
|
96
50
|
const meta = [`\`${type}\``];
|
|
97
|
-
if (property.defaultValue !== undefined)
|
|
51
|
+
if (property.defaultValue !== undefined) {
|
|
98
52
|
meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
|
|
99
|
-
|
|
53
|
+
}
|
|
54
|
+
if (property.constructOnly) {
|
|
100
55
|
meta.push("construct-only");
|
|
101
|
-
|
|
56
|
+
}
|
|
57
|
+
if (!isConstructableProperty(property)) {
|
|
102
58
|
meta.push(`read-only, observe with \`onNotify${upperFirst(jsName)}\``);
|
|
103
|
-
|
|
59
|
+
}
|
|
60
|
+
if (owner.origin !== undefined) {
|
|
104
61
|
meta.push(`from \`${owner.origin}\``);
|
|
62
|
+
}
|
|
105
63
|
return { name: jsName, meta: meta.join(" · "), doc: docMarkdown(property.doc) };
|
|
106
64
|
};
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const applied = (Array.isArray(overlay.add) ? overlay.add : [overlay.add])
|
|
115
|
-
.map((call) => `\`${callName(call)}()\``)
|
|
116
|
-
.join(", ");
|
|
117
|
-
return `Array prop; items are applied with ${applied}.`;
|
|
118
|
-
}
|
|
119
|
-
if (overlay.kind === "controlled-text") {
|
|
120
|
-
return "Controlled: the element is synced to the prop value whenever that value changes; text the user has typed is preserved rather than reverted on every render.";
|
|
121
|
-
}
|
|
65
|
+
const propJsName = (property, owner, seen) => {
|
|
66
|
+
if (!property.introspectable) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const jsName = toCamelIdentifier(property.name);
|
|
70
|
+
if (seen.has(jsName) || isOmittedProp(owner.glibName, jsName)) {
|
|
71
|
+
return undefined;
|
|
122
72
|
}
|
|
123
|
-
|
|
73
|
+
seen.add(jsName);
|
|
74
|
+
return jsName;
|
|
124
75
|
};
|
|
125
|
-
const
|
|
126
|
-
const overlayEntries = (entry, context, seen) => {
|
|
127
|
-
const overlays = context.elementProps[entry.glibName] ?? [];
|
|
76
|
+
const ownerPropEntries = (context, owner, seen) => {
|
|
128
77
|
const entries = [];
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const [, name = "", rawType = ""] = match;
|
|
135
|
-
if (seen.has(name))
|
|
136
|
-
continue;
|
|
137
|
-
seen.add(name);
|
|
138
|
-
const note = overlayNote(overlays, name) ?? "Element prop managed by GTKX.";
|
|
139
|
-
entries.push({ name, meta: `\`${cleanOverlayType(rawType)}\``, doc: note });
|
|
78
|
+
for (const property of owner.klass.properties) {
|
|
79
|
+
const jsName = propJsName(property, owner, seen);
|
|
80
|
+
if (jsName !== undefined) {
|
|
81
|
+
entries.push(propertyEntry(context, owner, property, jsName));
|
|
82
|
+
}
|
|
140
83
|
}
|
|
141
84
|
return entries;
|
|
142
85
|
};
|
|
143
|
-
const withOverlayNote = (propEntry, note) => {
|
|
144
|
-
if (note === undefined)
|
|
145
|
-
return propEntry;
|
|
146
|
-
return { ...propEntry, doc: propEntry.doc.length > 0 ? `${note}\n\n${propEntry.doc}` : note };
|
|
147
|
-
};
|
|
148
86
|
const propertyEntries = (entry, context, seen) => {
|
|
149
|
-
const owners = memberOwners(entry, context);
|
|
150
|
-
const overlays = owners.flatMap((owner) => owner.glibName === undefined ? [] : (context.elementProps[owner.glibName] ?? []));
|
|
151
87
|
const entries = [];
|
|
152
|
-
for (const owner of
|
|
153
|
-
|
|
154
|
-
if (!property.introspectable)
|
|
155
|
-
continue;
|
|
156
|
-
const jsName = toCamelIdentifier(property.name);
|
|
157
|
-
if (seen.has(jsName))
|
|
158
|
-
continue;
|
|
159
|
-
seen.add(jsName);
|
|
160
|
-
const propEntry = propertyEntry(context, owner, property, jsName);
|
|
161
|
-
entries.push(withOverlayNote(propEntry, overlayNote(overlays, jsName)));
|
|
162
|
-
}
|
|
88
|
+
for (const owner of memberOwners(entry, context)) {
|
|
89
|
+
entries.push(...ownerPropEntries(context, owner, seen));
|
|
163
90
|
}
|
|
164
91
|
return entries;
|
|
165
92
|
};
|
|
166
93
|
const propsSection = (entry, context, selfType) => {
|
|
167
94
|
const seen = new Set();
|
|
168
|
-
const entries =
|
|
95
|
+
const entries = propertyEntries(entry, context, seen);
|
|
169
96
|
const intro = [
|
|
170
97
|
`\`ref\` receives the \`${selfType}\` instance.`,
|
|
171
|
-
|
|
172
|
-
|
|
98
|
+
"Every mutable property also has an `onNotify<Prop>` handler prop called with the new value " +
|
|
99
|
+
"when the property changes.",
|
|
100
|
+
"Props inherited from ancestor elements are documented on their own pages.",
|
|
173
101
|
].join(" ");
|
|
174
|
-
if (entries.length === 0)
|
|
102
|
+
if (entries.length === 0) {
|
|
175
103
|
return ["## Props", intro];
|
|
104
|
+
}
|
|
176
105
|
const sorted = sortStringsBy(entries, (item) => item.name);
|
|
177
106
|
return ["## Props", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];
|
|
178
107
|
};
|
|
179
|
-
const
|
|
180
|
-
const seen = new Set();
|
|
108
|
+
const ownerSignalEntries = (context, owner, selfType, seen) => {
|
|
181
109
|
const entries = [];
|
|
182
|
-
const
|
|
110
|
+
for (const signal of owner.klass.signals) {
|
|
183
111
|
const name = signalHandlerName(signal.name);
|
|
184
|
-
if (seen.has(name))
|
|
185
|
-
|
|
112
|
+
if (seen.has(name)) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
186
115
|
seen.add(name);
|
|
187
116
|
entries.push({
|
|
188
117
|
name,
|
|
189
118
|
signature: renderDocsSignalSignature(context.library, signal, selfType),
|
|
190
119
|
doc: docMarkdown(signal.doc),
|
|
191
|
-
origin,
|
|
120
|
+
origin: owner.origin,
|
|
192
121
|
});
|
|
193
|
-
}
|
|
122
|
+
}
|
|
123
|
+
return entries;
|
|
124
|
+
};
|
|
125
|
+
const signalsSection = (entry, context, selfType) => {
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
const entries = [];
|
|
194
128
|
for (const owner of memberOwners(entry, context)) {
|
|
195
|
-
|
|
196
|
-
acceptSignal(signal, owner.origin);
|
|
129
|
+
entries.push(...ownerSignalEntries(context, owner, selfType, seen));
|
|
197
130
|
}
|
|
198
|
-
if (entries.length === 0)
|
|
131
|
+
if (entries.length === 0) {
|
|
199
132
|
return [];
|
|
133
|
+
}
|
|
200
134
|
return ["## Signals", ...originSignatureBlocks(entries)];
|
|
201
135
|
};
|
|
202
136
|
const methodsSection = (entry, context, selfType) => {
|
|
203
137
|
const entries = classMethodEntries(context.library, entry.namespace, entry.klass);
|
|
204
|
-
const
|
|
138
|
+
const importPath = `@gtkx/gi/${namespaceDirectory(entry.namespace)}`;
|
|
139
|
+
const intro = `Methods are called on the \`${selfType}\` instance, obtained with the \`ref\` prop or ` +
|
|
140
|
+
`imported from \`${importPath}\`. Methods inherited from ancestors are documented on their own pages.`;
|
|
205
141
|
return methodsSectionBlocks(entries, intro);
|
|
206
142
|
};
|
|
207
|
-
|
|
143
|
+
const renderElementPage = (entry, context) => {
|
|
208
144
|
const selfType = `${entry.namespace.name}.${entry.klass.name}`;
|
|
209
145
|
return joinSections([
|
|
210
146
|
frontmatter(entry),
|
|
@@ -212,10 +148,10 @@ export const renderElementPage = (entry, context) => {
|
|
|
212
148
|
docMarkdown(entry.klass.doc),
|
|
213
149
|
importBlock(entry),
|
|
214
150
|
...hierarchySection(entry, context),
|
|
215
|
-
...childrenSection(entry, context),
|
|
216
151
|
...propsSection(entry, context, selfType),
|
|
217
152
|
...signalsSection(entry, context, selfType),
|
|
218
153
|
...methodsSection(entry, context, selfType),
|
|
219
154
|
]);
|
|
220
155
|
};
|
|
156
|
+
export { createElementPageContext, renderElementPage };
|
|
221
157
|
//# sourceMappingURL=element-page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-page.js","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ContainerProp, ElementProp } from \"@gtkx/config\";\nimport { sortStringsBy, toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { Library } from \"../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport type { GirSignal } from \"../gir/parameter.js\";\nimport { type GirProperty, isConstructableProperty } from \"../gir/property.js\";\nimport { createElementPropTypegen, type ElementPropTypegen } from \"../store/react/element-prop-types.js\";\nimport { assembleElementProps } from \"../store/react/element-props.js\";\nimport { buildGirIndex, type GirIndex } from \"../store/react/gir-index.js\";\nimport {\n type GlibNamedClass,\n glibNameOf,\n implementedInterfaces,\n newlyImplementedInterfaces,\n signalHandlerName,\n} from \"../store/react/intrinsic-elements.js\";\nimport { isObjectProp } from \"../store/react/props.js\";\nimport {\n classMethodEntries,\n docMarkdown,\n docsDefaultValue,\n firstSentence,\n joinSections,\n metaBlock,\n methodsSectionBlocks,\n originSignatureBlocks,\n renderDocsSignalSignature,\n renderDocsType,\n} from \"./render.js\";\n\nexport type ElementPageContext = {\n library: Library;\n girIndex: GirIndex;\n typegen: ElementPropTypegen;\n elementProps: Record<string, ElementProp[]>;\n linkFor: (glibName: string) => string | undefined;\n};\n\nexport const createElementPageContext = (\n library: Library,\n elementProps: Record<string, ElementProp[]>,\n linkFor: (glibName: string) => string | undefined,\n): ElementPageContext => {\n const girIndex = buildGirIndex(library);\n const applied = assembleElementProps(girIndex, elementProps);\n return {\n library,\n girIndex,\n typegen: createElementPropTypegen(girIndex, applied),\n elementProps: applied,\n linkFor,\n };\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n glibName: string | undefined;\n};\n\ntype PropEntry = {\n name: string;\n meta: string;\n doc: string;\n};\n\nconst frontmatter = (entry: GlibNamedClass): string => {\n const sentence = firstSentence(entry.klass.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst importBlock = (entry: GlibNamedClass): string =>\n `\\`\\`\\`tsx\\nimport { ${entry.glibName} } from \"@gtkx/jsx/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst glibLabel = (context: ElementPageContext, glibName: string): string => {\n const link = context.linkFor(glibName);\n return link === undefined ? `\\`${glibName}\\`` : `[${glibName}](${link})`;\n};\n\nconst hierarchySection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {\n const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).reverse();\n if (ancestors.length === 0) return [];\n const parts = ancestors.map((ancestor) => {\n const glib = glibNameOf(ancestor.klass);\n return glib === undefined ? `\\`${ancestor.namespaceName}.${ancestor.klass.name}\\`` : glibLabel(context, glib);\n });\n parts.push(`**${entry.glibName}**`);\n const lines = [`## Hierarchy`, parts.join(\" → \")];\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)\n .map((iface) => glibNameOf(iface.klass))\n .filter((name): name is string => name !== undefined);\n if (interfaces.length > 0) {\n lines.push(`Implements ${interfaces.map((name) => `\\`${name}\\``).join(\", \")}.`);\n }\n return lines;\n};\n\nconst callName = (call: ContainerProp[\"append\"]): string | undefined =>\n call === undefined ? undefined : typeof call === \"string\" ? call : call.method;\n\nconst containerLine = (prop: ContainerProp, context: ElementPageContext): string => {\n const child = glibLabel(context, prop.child);\n const attach = callName(prop.append);\n const detail: string[] = [];\n if (attach !== undefined) detail.push(`attached with \\`${attach}()\\``);\n if (prop.autowrap !== undefined) {\n detail.push(`children are wrapped in a ${glibLabel(context, prop.autowrap)} before attaching`);\n }\n const suffix = detail.length > 0 ? ` (${detail.join(\"; \")})` : \"\";\n if (prop.prop === \"children\") return `- \\`children\\` accepts ${child} elements${suffix}.`;\n return `- \\`${prop.prop}\\` is a slot accepting ${child} elements${suffix}.`;\n};\n\nconst childrenSection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {\n const lines: string[] = [];\n const seen = new Set<string>();\n for (const owner of memberOwners(entry, context)) {\n if (owner.glibName === undefined) continue;\n const overlays = context.elementProps[owner.glibName] ?? [];\n const containers = overlays.filter(\n (prop): prop is ContainerProp => prop.kind === \"container\" && !seen.has(prop.prop),\n );\n for (const prop of containers) lines.push(containerLine(prop, context));\n for (const prop of containers) seen.add(prop.prop);\n }\n if (!seen.has(\"children\") && context.typegen.acceptsChildren(entry.glibName)) {\n lines.push(\"- `children` accepts child elements.\");\n }\n if (lines.length === 0) return [];\n return [\"## Children\", lines.join(\"\\n\")];\n};\n\nconst memberOwners = (entry: GlibNamedClass, context: ElementPageContext): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined, glibName: entry.glibName },\n ...newlyImplementedInterfaces(\n entry.klass,\n entry.namespace,\n context.library,\n (glibName) => glibName !== undefined && context.typegen.containerPropNamesFor(glibName).length > 0,\n ).map((iface) => {\n const glibName = glibNameOf(iface.klass);\n return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };\n }),\n];\n\nconst propertyEntry = (\n context: ElementPageContext,\n owner: MemberOwner,\n property: GirProperty,\n jsName: string,\n): PropEntry => {\n const object = isObjectProp(\n { library: context.library, klass: owner.klass, namespace: owner.namespace },\n property,\n jsName,\n );\n const baseType = renderDocsType(context.library, property.type, false);\n const type = object ? `${baseType} | ReactElement` : baseType;\n const meta: string[] = [`\\`${type}\\``];\n if (property.defaultValue !== undefined) meta.push(`default \\`${docsDefaultValue(property.defaultValue)}\\``);\n if (property.constructOnly) meta.push(\"construct-only\");\n if (!isConstructableProperty(property)) meta.push(`read-only, observe with \\`onNotify${upperFirst(jsName)}\\``);\n if (owner.origin !== undefined) meta.push(`from \\`${owner.origin}\\``);\n return { name: jsName, meta: meta.join(\" · \"), doc: docMarkdown(property.doc) };\n};\n\nconst overlayNote = (overlays: ElementProp[], name: string): string | undefined => {\n for (const overlay of overlays) {\n if (overlay.kind === \"container\" || overlay.prop !== name) continue;\n if (overlay.kind === \"value\") return `Applied with \\`${callName(overlay.call)}()\\`.`;\n if (overlay.kind === \"list\") {\n const applied = (Array.isArray(overlay.add) ? overlay.add : [overlay.add])\n .map((call) => `\\`${callName(call)}()\\``)\n .join(\", \");\n return `Array prop; items are applied with ${applied}.`;\n }\n if (overlay.kind === \"controlled-text\") {\n return \"Controlled: the element is synced to the prop value whenever that value changes; text the user has typed is preserved rather than reverted on every render.\";\n }\n }\n return undefined;\n};\n\nconst cleanOverlayType = (type: string): string => type.replace(/\\s*\\|\\s*undefined$/, \"\").replaceAll(\"$.\", \".\");\n\nconst overlayEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): PropEntry[] => {\n const overlays = context.elementProps[entry.glibName] ?? [];\n const entries: PropEntry[] = [];\n const lines = context.typegen.classPropLines(entry.glibName, entry.klass, entry.namespace, new Map());\n for (const line of lines) {\n const match = line.match(/^([A-Za-z0-9_]+)\\?: (.*);$/);\n if (match === null) continue;\n const [, name = \"\", rawType = \"\"] = match;\n if (seen.has(name)) continue;\n seen.add(name);\n const note = overlayNote(overlays, name) ?? \"Element prop managed by GTKX.\";\n entries.push({ name, meta: `\\`${cleanOverlayType(rawType)}\\``, doc: note });\n }\n return entries;\n};\n\nconst withOverlayNote = (propEntry: PropEntry, note: string | undefined): PropEntry => {\n if (note === undefined) return propEntry;\n return { ...propEntry, doc: propEntry.doc.length > 0 ? `${note}\\n\\n${propEntry.doc}` : note };\n};\n\nconst propertyEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): PropEntry[] => {\n const owners = memberOwners(entry, context);\n const overlays = owners.flatMap((owner) =>\n owner.glibName === undefined ? [] : (context.elementProps[owner.glibName] ?? []),\n );\n const entries: PropEntry[] = [];\n for (const owner of owners) {\n for (const property of owner.klass.properties) {\n if (!property.introspectable) continue;\n const jsName = toCamelIdentifier(property.name);\n if (seen.has(jsName)) continue;\n seen.add(jsName);\n const propEntry = propertyEntry(context, owner, property, jsName);\n entries.push(withOverlayNote(propEntry, overlayNote(overlays, jsName)));\n }\n }\n return entries;\n};\n\nconst propsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen = new Set<string>();\n const entries = [...propertyEntries(entry, context, seen), ...overlayEntries(entry, context, seen)];\n const intro = [\n `\\`ref\\` receives the \\`${selfType}\\` instance.`,\n `Every mutable property also has an \\`onNotify<Prop>\\` handler prop called with the new value when the property changes.`,\n `Props inherited from ancestor elements are documented on their own pages.`,\n ].join(\" \");\n if (entries.length === 0) return [\"## Props\", intro];\n const sorted = sortStringsBy(entries, (item) => item.name);\n return [\"## Props\", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];\n};\n\ntype SignalEntry = {\n name: string;\n signature: string;\n doc: string;\n origin: string | undefined;\n};\n\nconst signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen = new Set<string>();\n const entries: SignalEntry[] = [];\n const acceptSignal = (signal: GirSignal, origin: string | undefined): void => {\n const name = signalHandlerName(signal.name);\n if (seen.has(name)) return;\n seen.add(name);\n entries.push({\n name,\n signature: renderDocsSignalSignature(context.library, signal, selfType),\n doc: docMarkdown(signal.doc),\n origin,\n });\n };\n for (const owner of memberOwners(entry, context)) {\n for (const signal of owner.klass.signals) acceptSignal(signal, owner.origin);\n }\n if (entries.length === 0) return [];\n return [\"## Signals\", ...originSignatureBlocks(entries)];\n};\n\nconst methodsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const entries = classMethodEntries(context.library, entry.namespace, entry.klass);\n const intro = `Methods are called on the \\`${selfType}\\` instance, obtained with the \\`ref\\` prop or imported from \\`@gtkx/gi/${namespaceDirectory(entry.namespace)}\\`. Methods inherited from ancestors are documented on their own pages.`;\n return methodsSectionBlocks(entries, intro);\n};\n\nexport const renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {\n const selfType = `${entry.namespace.name}.${entry.klass.name}`;\n return joinSections([\n frontmatter(entry),\n `# ${entry.glibName}`,\n docMarkdown(entry.klass.doc),\n importBlock(entry),\n ...hierarchySection(entry, context),\n ...childrenSection(entry, context),\n ...propsSection(entry, context, selfType),\n ...signalsSection(entry, context, selfType),\n ...methodsSection(entry, context, selfType),\n ]);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"element-page.js","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { Library } from \"../gir/library.js\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { type GirProperty, isConstructableProperty } from \"../gir/property.js\";\nimport { elementPropTypeFor } from \"../store/jsx/element-prop-imports.js\";\nimport { buildGirIndex, type GirIndex } from \"../store/jsx/gir-index.js\";\nimport {\n getGlibName,\n type GlibNamedClass,\n implementedInterfaces,\n newlyImplementedInterfaces,\n signalHandlerName,\n} from \"../store/jsx/intrinsic-elements.js\";\nimport { isOmittedProp } from \"../store/jsx/omitted-props.js\";\nimport { isObjectProp } from \"../store/jsx/props.js\";\nimport {\n classMethodEntries,\n docMarkdown,\n docsDefaultValue,\n firstSentence,\n implementsLine,\n joinSections,\n metaBlock,\n methodsSectionBlocks,\n originSignatureBlocks,\n renderDocsSignalSignature,\n renderDocsType,\n} from \"./render.js\";\n\ntype ElementPageContext = {\n library: Library;\n girIndex: GirIndex;\n linkFor: (glibName: string) => string | undefined;\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n glibName: string | undefined;\n};\n\ntype PropEntry = {\n name: string;\n meta: string;\n doc: string;\n};\n\ntype SignalEntry = {\n name: string;\n signature: string;\n doc: string;\n origin: string | undefined;\n};\n\nconst createElementPageContext = (\n library: Library,\n linkFor: (glibName: string) => string | undefined,\n): ElementPageContext => ({ library, girIndex: buildGirIndex(library), linkFor });\n\nconst frontmatter = (entry: GlibNamedClass): string => {\n const sentence = firstSentence(entry.klass.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;\n\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst importBlock = (entry: GlibNamedClass): string =>\n `\\`\\`\\`tsx\\nimport { ${entry.glibName} } from \"@gtkx/jsx/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst glibLabel = (context: ElementPageContext, glibName: string): string => {\n const link = context.linkFor(glibName);\n\n return link === undefined ? `\\`${glibName}\\`` : `[${glibName}](${link})`;\n};\n\nconst hierarchySection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {\n const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).toReversed();\n\n if (ancestors.length === 0) {\n return [];\n }\n\n const parts = ancestors.map((ancestor) => {\n const glib = getGlibName(ancestor.klass);\n\n return glib === undefined ? `\\`${ancestor.namespaceName}.${ancestor.klass.name}\\`` : glibLabel(context, glib);\n });\n\n parts.push(`**${entry.glibName}**`);\n const lines = [\"## Hierarchy\", parts.join(\" → \")];\n\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)\n .map((iface) => getGlibName(iface.klass))\n .filter((name): name is string => name !== undefined);\n\n lines.push(...implementsLine(interfaces));\n\n return lines;\n};\n\nconst memberOwners = (entry: GlibNamedClass, context: ElementPageContext): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined, glibName: entry.glibName },\n ...newlyImplementedInterfaces(\n entry.klass,\n entry.namespace,\n context.library,\n (glibName) => glibName !== undefined && elementPropTypeFor(glibName) !== undefined,\n ).map((iface) => {\n const glibName = getGlibName(iface.klass);\n\n return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };\n }),\n];\n\nconst propertyEntry = (\n context: ElementPageContext,\n owner: MemberOwner,\n property: GirProperty,\n jsName: string,\n): PropEntry => {\n const isObject = isObjectProp(context.library, property);\n const baseType = renderDocsType(context.library, property.type, false);\n const type = isObject ? `${baseType} | ReactElement` : baseType;\n const meta: string[] = [`\\`${type}\\``];\n\n if (property.defaultValue !== undefined) {\n meta.push(`default \\`${docsDefaultValue(property.defaultValue)}\\``);\n }\n\n if (property.constructOnly) {\n meta.push(\"construct-only\");\n }\n\n if (!isConstructableProperty(property)) {\n meta.push(`read-only, observe with \\`onNotify${upperFirst(jsName)}\\``);\n }\n\n if (owner.origin !== undefined) {\n meta.push(`from \\`${owner.origin}\\``);\n }\n\n return { name: jsName, meta: meta.join(\" · \"), doc: docMarkdown(property.doc) };\n};\n\nconst propJsName = (property: GirProperty, owner: MemberOwner, seen: Set<string>): string | undefined => {\n if (!property.introspectable) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName) || isOmittedProp(owner.glibName, jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n\n return jsName;\n};\n\nconst ownerPropEntries = (context: ElementPageContext, owner: MemberOwner, seen: Set<string>): PropEntry[] => {\n const entries: PropEntry[] = [];\n\n for (const property of owner.klass.properties) {\n const jsName = propJsName(property, owner, seen);\n\n if (jsName !== undefined) {\n entries.push(propertyEntry(context, owner, property, jsName));\n }\n }\n\n return entries;\n};\n\nconst propertyEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): PropEntry[] => {\n const entries: PropEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerPropEntries(context, owner, seen));\n }\n\n return entries;\n};\n\nconst propsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries = propertyEntries(entry, context, seen);\n\n const intro = [\n `\\`ref\\` receives the \\`${selfType}\\` instance.`,\n \"Every mutable property also has an `onNotify<Prop>` handler prop called with the new value \" +\n \"when the property changes.\",\n \"Props inherited from ancestor elements are documented on their own pages.\",\n ].join(\" \");\n\n if (entries.length === 0) {\n return [\"## Props\", intro];\n }\n\n const sorted = sortStringsBy(entries, (item) => item.name);\n\n return [\"## Props\", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];\n};\n\nconst ownerSignalEntries = (\n context: ElementPageContext,\n owner: MemberOwner,\n selfType: string,\n seen: Set<string>,\n): SignalEntry[] => {\n const entries: SignalEntry[] = [];\n\n for (const signal of owner.klass.signals) {\n const name = signalHandlerName(signal.name);\n\n if (seen.has(name)) {\n continue;\n }\n\n seen.add(name);\n\n entries.push({\n name,\n signature: renderDocsSignalSignature(context.library, signal, selfType),\n doc: docMarkdown(signal.doc),\n origin: owner.origin,\n });\n }\n\n return entries;\n};\n\nconst signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries: SignalEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerSignalEntries(context, owner, selfType, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n return [\"## Signals\", ...originSignatureBlocks(entries)];\n};\n\nconst methodsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const entries = classMethodEntries(context.library, entry.namespace, entry.klass);\n const importPath = `@gtkx/gi/${namespaceDirectory(entry.namespace)}`;\n\n const intro =\n `Methods are called on the \\`${selfType}\\` instance, obtained with the \\`ref\\` prop or ` +\n `imported from \\`${importPath}\\`. Methods inherited from ancestors are documented on their own pages.`;\n\n return methodsSectionBlocks(entries, intro);\n};\n\nconst renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {\n const selfType = `${entry.namespace.name}.${entry.klass.name}`;\n\n return joinSections([\n frontmatter(entry),\n `# ${entry.glibName}`,\n docMarkdown(entry.klass.doc),\n importBlock(entry),\n ...hierarchySection(entry, context),\n ...propsSection(entry, context, selfType),\n ...signalsSection(entry, context, selfType),\n ...methodsSection(entry, context, selfType),\n ]);\n};\n\nexport { createElementPageContext, renderElementPage, type ElementPageContext };\n"]}
|
package/dist/docs/pipeline.d.ts
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import { type ElementProps } from "../store/jsx/element-prop-imports.js";
|
|
2
|
+
import { type OmittedProps } from "../store/jsx/omitted-props.js";
|
|
3
|
+
type DocsElementLink = {
|
|
3
4
|
text: string;
|
|
4
5
|
link: string;
|
|
5
6
|
};
|
|
6
|
-
|
|
7
|
+
type DocsNamespace = {
|
|
7
8
|
name: string;
|
|
8
9
|
directory: string;
|
|
9
10
|
link: string;
|
|
10
11
|
elements: DocsElementLink[];
|
|
11
12
|
};
|
|
12
|
-
|
|
13
|
+
type DocsOptions = {
|
|
13
14
|
libraries: string[];
|
|
14
15
|
girPath: string[];
|
|
15
16
|
outDir: string;
|
|
16
17
|
basePath?: string;
|
|
17
|
-
|
|
18
|
+
props?: ElementProps;
|
|
19
|
+
omitProps?: OmittedProps;
|
|
18
20
|
force?: boolean;
|
|
19
21
|
};
|
|
20
|
-
|
|
22
|
+
type DocsResult = {
|
|
21
23
|
regenerated: boolean;
|
|
22
24
|
namespaces: DocsNamespace[];
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
declare const writeDocs: (options: DocsOptions) => DocsResult;
|
|
27
|
+
export { writeDocs, type DocsElementLink, type DocsNamespace, type DocsOptions, type DocsResult };
|
|
25
28
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/docs/pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/docs/pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,sCAAsC,CAAC;AAE1F,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,+BAA+B,CAAC;AAInF,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAcF,KAAK,UAAU,GAAG;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC/B,CAAC;AAuKF,QAAA,MAAM,SAAS,GAAI,SAAS,WAAW,KAAG,UAyBzC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC"}
|
package/dist/docs/pipeline.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
+
import { sortStringsBy } from "@gtkx/utils";
|
|
1
2
|
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
3
|
import { dirname, join } from "node:path";
|
|
3
|
-
import {
|
|
4
|
-
import { computeFingerprint, FINGERPRINT_FILENAME, isStoreFresh } from "../fingerprint.js";
|
|
4
|
+
import { computeGiFingerprint, FINGERPRINT_FILENAME, isGiStoreFresh } from "../fingerprint.js";
|
|
5
5
|
import { Library } from "../gir/library.js";
|
|
6
6
|
import { namespaceDirectory } from "../gir/namespace.js";
|
|
7
|
-
import {
|
|
7
|
+
import { setElementProps } from "../store/jsx/element-prop-imports.js";
|
|
8
|
+
import { collectIntrinsicElementClasses } from "../store/jsx/intrinsic-elements.js";
|
|
9
|
+
import { setOmittedProps } from "../store/jsx/omitted-props.js";
|
|
8
10
|
import { createElementPageContext, renderElementPage } from "./element-page.js";
|
|
9
11
|
import { elementSlug, firstSentence, namespaceOrder } from "./render.js";
|
|
10
12
|
const MANIFEST_FILENAME = "manifest.json";
|
|
11
13
|
const namespaceIndexPage = (namespace, elements) => {
|
|
12
14
|
const rows = elements.map((entry, index) => {
|
|
13
15
|
const link = namespace.elements[index]?.link ?? "";
|
|
14
|
-
const description = firstSentence(entry.klass.doc).replaceAll("|",
|
|
16
|
+
const description = firstSentence(entry.klass.doc).replaceAll("|", String.raw `\|`);
|
|
15
17
|
return `| [${entry.glibName}](${link}) | ${description} |`;
|
|
16
18
|
});
|
|
19
|
+
const description = `Reference pages for the ${String(namespace.elements.length)} JSX elements in ` +
|
|
20
|
+
`the ${namespace.name} namespace.`;
|
|
17
21
|
return [
|
|
18
22
|
"---",
|
|
19
|
-
`description: ${JSON.stringify(
|
|
23
|
+
`description: ${JSON.stringify(description)}`,
|
|
20
24
|
"---",
|
|
21
25
|
"",
|
|
22
26
|
`# ${namespace.name} elements`,
|
|
23
27
|
"",
|
|
24
|
-
`Elements in this namespace are imported from \`@gtkx/jsx/${namespace.directory}\`; the matching
|
|
28
|
+
`Elements in this namespace are imported from \`@gtkx/jsx/${namespace.directory}\`; the matching ` +
|
|
29
|
+
`classes, enums, and functions are imported from \`@gtkx/gi/${namespace.directory}\`.`,
|
|
25
30
|
"",
|
|
26
31
|
"| Element | Description |",
|
|
27
32
|
"| --- | --- |",
|
|
@@ -30,20 +35,24 @@ const namespaceIndexPage = (namespace, elements) => {
|
|
|
30
35
|
].join("\n");
|
|
31
36
|
};
|
|
32
37
|
const rootIndexPage = (namespaces, libraries) => {
|
|
33
|
-
const rows = namespaces.map((ns) => `| [${ns.name}](${ns.link}) | \`@gtkx/jsx/${ns.directory}\` | ${ns.elements.length} |`);
|
|
38
|
+
const rows = namespaces.map((ns) => `| [${ns.name}](${ns.link}) | \`@gtkx/jsx/${ns.directory}\` | ${String(ns.elements.length)} |`);
|
|
34
39
|
const librariesList = libraries.map((library) => `\`${library}\``).join(", ");
|
|
35
40
|
return [
|
|
36
41
|
"---",
|
|
37
|
-
|
|
42
|
+
"description: \"Generated reference documentation for every JSX element in this project's GIR libraries.\"",
|
|
38
43
|
"---",
|
|
39
44
|
"",
|
|
40
45
|
"# Element Reference",
|
|
41
46
|
"",
|
|
42
|
-
|
|
47
|
+
"This reference documents every JSX element generated from the GObject-Introspection data for " +
|
|
48
|
+
`${librariesList}, together with the namespaces they pull in. It is produced by \`gtkx docs\` ` +
|
|
49
|
+
"using the same pipeline that generates the `@gtkx/jsx` and `@gtkx/gi` bindings, so every page " +
|
|
50
|
+
"matches the types your editor sees.",
|
|
43
51
|
"",
|
|
44
52
|
"Each element page lists:",
|
|
45
53
|
"",
|
|
46
|
-
"- **Props** derived from GObject properties, plus the element props GTKX adds (such as `children`
|
|
54
|
+
"- **Props** derived from GObject properties, plus the element props GTKX adds (such as `children` " +
|
|
55
|
+
"and named slots), with types, defaults, and upstream documentation.",
|
|
47
56
|
"- **Signals** as `on<Signal>` handler props with their exact handler signatures.",
|
|
48
57
|
"- **Methods** available on the underlying instance through the `ref` prop.",
|
|
49
58
|
"",
|
|
@@ -55,76 +64,95 @@ const rootIndexPage = (namespaces, libraries) => {
|
|
|
55
64
|
"",
|
|
56
65
|
].join("\n");
|
|
57
66
|
};
|
|
58
|
-
const
|
|
59
|
-
const intrinsicElements = collectIntrinsicElementClasses(library);
|
|
67
|
+
const groupElementsByNamespace = (elements) => {
|
|
60
68
|
const byNamespace = new Map();
|
|
61
|
-
for (const entry of
|
|
69
|
+
for (const entry of elements) {
|
|
62
70
|
const list = byNamespace.get(entry.namespace.name) ?? [];
|
|
63
71
|
list.push(entry);
|
|
64
72
|
byNamespace.set(entry.namespace.name, list);
|
|
65
73
|
}
|
|
74
|
+
return byNamespace;
|
|
75
|
+
};
|
|
76
|
+
const buildElementLinks = (elements, basePath) => {
|
|
66
77
|
const linkByGlibName = new Map();
|
|
67
|
-
for (const entry of
|
|
78
|
+
for (const entry of elements) {
|
|
68
79
|
const directory = namespaceDirectory(entry.namespace);
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const existing = [...linkByGlibName.values()].includes(link);
|
|
72
|
-
if (existing)
|
|
80
|
+
const link = `${basePath}/${directory}/${elementSlug(entry.klass.name)}`;
|
|
81
|
+
if (linkByGlibName.values().some((existing) => existing === link)) {
|
|
73
82
|
throw new Error(`Docs page slug collision for ${entry.glibName} at ${link}`);
|
|
83
|
+
}
|
|
74
84
|
linkByGlibName.set(entry.glibName, link);
|
|
75
85
|
}
|
|
76
|
-
|
|
86
|
+
return linkByGlibName;
|
|
87
|
+
};
|
|
88
|
+
const namespacePages = (input) => {
|
|
89
|
+
const { name, elements, basePath, linkByGlibName, pageContext } = input;
|
|
90
|
+
const directory = name.toLowerCase();
|
|
91
|
+
const docs = {
|
|
92
|
+
name,
|
|
93
|
+
directory,
|
|
94
|
+
link: `${basePath}/${directory}/`,
|
|
95
|
+
elements: elements.map((entry) => ({ text: entry.glibName, link: linkByGlibName.get(entry.glibName) ?? "" })),
|
|
96
|
+
};
|
|
97
|
+
const pages = elements.map((entry) => ({
|
|
98
|
+
path: `${directory}/${elementSlug(entry.klass.name)}.md`,
|
|
99
|
+
content: renderElementPage(entry, pageContext),
|
|
100
|
+
}));
|
|
101
|
+
pages.push({ path: `${directory}/index.md`, content: namespaceIndexPage(docs, elements) });
|
|
102
|
+
return { docs, pages };
|
|
103
|
+
};
|
|
104
|
+
const generatePages = (options, basePath, library) => {
|
|
105
|
+
const intrinsicElements = collectIntrinsicElementClasses(library);
|
|
106
|
+
const byNamespace = groupElementsByNamespace(intrinsicElements);
|
|
107
|
+
const linkByGlibName = buildElementLinks(intrinsicElements, basePath);
|
|
108
|
+
const pageContext = createElementPageContext(library, (glibName) => linkByGlibName.get(glibName));
|
|
77
109
|
const pages = [];
|
|
78
110
|
const namespaces = [];
|
|
79
|
-
const orderedNames = sortStringsBy(
|
|
111
|
+
const orderedNames = sortStringsBy(byNamespace.keys(), namespaceOrder);
|
|
80
112
|
for (const name of orderedNames) {
|
|
81
113
|
const elements = sortStringsBy(byNamespace.get(name) ?? [], (entry) => entry.glibName);
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
directory,
|
|
86
|
-
link: `${basePath}/${directory}/`,
|
|
87
|
-
elements: elements.map((entry) => ({
|
|
88
|
-
text: entry.glibName,
|
|
89
|
-
link: linkByGlibName.get(entry.glibName) ?? "",
|
|
90
|
-
})),
|
|
91
|
-
};
|
|
92
|
-
for (const entry of elements) {
|
|
93
|
-
const slug = elementSlug(entry.klass.name);
|
|
94
|
-
pages.push({ path: `${directory}/${slug}.md`, content: renderElementPage(entry, pageContext) });
|
|
95
|
-
}
|
|
96
|
-
pages.push({ path: `${directory}/index.md`, content: namespaceIndexPage(namespaceDocs, elements) });
|
|
97
|
-
namespaces.push(namespaceDocs);
|
|
114
|
+
const result = namespacePages({ name, elements, basePath, linkByGlibName, pageContext });
|
|
115
|
+
pages.push(...result.pages);
|
|
116
|
+
namespaces.push(result.docs);
|
|
98
117
|
}
|
|
99
118
|
pages.push({ path: "index.md", content: rootIndexPage(namespaces, options.libraries) });
|
|
100
119
|
return { pages, namespaces };
|
|
101
120
|
};
|
|
102
|
-
|
|
121
|
+
const cachedDocsResult = (options, manifestPath) => {
|
|
122
|
+
if (options.force === true || !isGiStoreFresh(options.outDir, options.libraries, options.girPath)) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
if (!existsSync(manifestPath)) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
129
|
+
return { regenerated: false, namespaces: manifest.namespaces };
|
|
130
|
+
};
|
|
131
|
+
const writePages = (outDir, pages) => {
|
|
132
|
+
for (const page of pages) {
|
|
133
|
+
const target = join(outDir, page.path);
|
|
134
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
135
|
+
writeFileSync(target, page.content);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const writeDocs = (options) => {
|
|
139
|
+
setElementProps(options.props ?? {});
|
|
140
|
+
setOmittedProps(options.omitProps ?? {});
|
|
103
141
|
const basePath = options.basePath ?? "/reference";
|
|
104
|
-
const elementProps = options.elementProps ?? {};
|
|
105
142
|
const manifestPath = join(options.outDir, MANIFEST_FILENAME);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
return { regenerated: false, namespaces: manifest.namespaces };
|
|
110
|
-
}
|
|
143
|
+
const cached = cachedDocsResult(options, manifestPath);
|
|
144
|
+
if (cached !== undefined) {
|
|
145
|
+
return cached;
|
|
111
146
|
}
|
|
112
147
|
const library = Library.load(options.libraries, options.girPath);
|
|
113
148
|
const { pages, namespaces } = generatePages(options, basePath, library);
|
|
114
149
|
rmSync(options.outDir, { recursive: true, force: true });
|
|
115
150
|
mkdirSync(options.outDir, { recursive: true });
|
|
116
|
-
|
|
117
|
-
const target = join(options.outDir, page.path);
|
|
118
|
-
mkdirSync(dirname(target), { recursive: true });
|
|
119
|
-
writeFileSync(target, page.content);
|
|
120
|
-
}
|
|
151
|
+
writePages(options.outDir, pages);
|
|
121
152
|
const manifest = { namespaces };
|
|
122
153
|
writeFileSync(manifestPath, JSON.stringify(manifest));
|
|
123
|
-
writeFileSync(join(options.outDir, FINGERPRINT_FILENAME), JSON.stringify(
|
|
124
|
-
value: computeFingerprint(library.girFiles, options.libraries, elementProps),
|
|
125
|
-
girFiles: library.girFiles,
|
|
126
|
-
libraries: options.libraries,
|
|
127
|
-
}));
|
|
154
|
+
writeFileSync(join(options.outDir, FINGERPRINT_FILENAME), JSON.stringify(computeGiFingerprint(library.girFiles, options.libraries, options.girPath)));
|
|
128
155
|
return { regenerated: true, namespaces };
|
|
129
156
|
};
|
|
157
|
+
export { writeDocs };
|
|
130
158
|
//# sourceMappingURL=pipeline.js.map
|