@gtkx/codegen 1.0.0-rc.4 → 1.1.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.
- package/README.md +5 -5
- package/dist/analysis/descriptor-render.d.ts +13 -9
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +80 -50
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +16 -7
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +15 -3
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +4 -3
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +103 -58
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/interface-conflicts.d.ts +23 -0
- package/dist/analysis/interface-conflicts.d.ts.map +1 -0
- package/dist/analysis/interface-conflicts.js +144 -0
- package/dist/analysis/interface-conflicts.js.map +1 -0
- package/dist/analysis/nul-terminated-bytes.d.ts +5 -0
- package/dist/analysis/nul-terminated-bytes.d.ts.map +1 -0
- package/dist/analysis/nul-terminated-bytes.js +18 -0
- package/dist/analysis/nul-terminated-bytes.js.map +1 -0
- package/dist/analysis/param-capability.d.ts +5 -0
- package/dist/analysis/param-capability.d.ts.map +1 -0
- package/dist/analysis/param-capability.js +129 -0
- package/dist/analysis/param-capability.js.map +1 -0
- package/dist/analysis/param-structure.d.ts +11 -4
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js +42 -16
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +10 -17
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/analysis/type-key.d.ts +5 -0
- package/dist/analysis/type-key.d.ts.map +1 -0
- package/dist/analysis/type-key.js +9 -0
- package/dist/analysis/type-key.js.map +1 -0
- package/dist/analysis/type-shape.d.ts +8 -0
- package/dist/analysis/type-shape.d.ts.map +1 -0
- package/dist/analysis/type-shape.js +12 -0
- package/dist/analysis/type-shape.js.map +1 -0
- package/dist/compile.d.ts +12 -3
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +73 -24
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +2 -2
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +17 -23
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts +4 -4
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +36 -22
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/handwritten-props.d.ts +9 -0
- package/dist/docs/handwritten-props.d.ts.map +1 -0
- package/dist/docs/handwritten-props.js +149 -0
- package/dist/docs/handwritten-props.js.map +1 -0
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +87 -20
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +26 -5
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +88 -25
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts +17 -0
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +132 -44
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +12 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +44 -28
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +1 -0
- package/dist/gi.js.map +1 -1
- package/dist/gir/ancestry.d.ts +8 -2
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +19 -1
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/annotations.d.ts +21 -0
- package/dist/gir/annotations.d.ts.map +1 -0
- package/dist/gir/annotations.js +15 -0
- package/dist/gir/annotations.js.map +1 -0
- package/dist/gir/callback.d.ts +1 -0
- package/dist/gir/callback.d.ts.map +1 -1
- package/dist/gir/callback.js +1 -0
- package/dist/gir/callback.js.map +1 -1
- package/dist/gir/class.d.ts +32 -1
- package/dist/gir/class.d.ts.map +1 -1
- package/dist/gir/class.js +8 -3
- package/dist/gir/class.js.map +1 -1
- package/dist/gir/cursor-overrides.d.ts +8 -0
- package/dist/gir/cursor-overrides.d.ts.map +1 -0
- package/dist/gir/cursor-overrides.js +6 -0
- package/dist/gir/cursor-overrides.js.map +1 -0
- package/dist/gir/emittable.d.ts +7 -0
- package/dist/gir/emittable.d.ts.map +1 -0
- package/dist/gir/emittable.js +3 -0
- package/dist/gir/emittable.js.map +1 -0
- package/dist/gir/enum.d.ts +21 -1
- package/dist/gir/enum.d.ts.map +1 -1
- package/dist/gir/enum.js +9 -9
- package/dist/gir/enum.js.map +1 -1
- package/dist/gir/field.d.ts +19 -3
- package/dist/gir/field.d.ts.map +1 -1
- package/dist/gir/field.js +7 -8
- package/dist/gir/field.js.map +1 -1
- package/dist/gir/function.d.ts +15 -0
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +28 -2
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/libraries.d.ts +1 -3
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +0 -1
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +36 -0
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +35 -1
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +43 -1
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +8 -7
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/parameter.d.ts +52 -1
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +8 -3
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts +3 -1
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +9 -9
- package/dist/gir/parse.js.map +1 -1
- package/dist/gir/primitives.d.ts +1 -0
- package/dist/gir/primitives.d.ts.map +1 -1
- package/dist/gir/primitives.js.map +1 -1
- package/dist/gir/property.d.ts +16 -0
- package/dist/gir/property.d.ts.map +1 -1
- package/dist/gir/property.js +3 -3
- package/dist/gir/property.js.map +1 -1
- package/dist/gir/record.d.ts +22 -0
- package/dist/gir/record.d.ts.map +1 -1
- package/dist/gir/record.js +3 -2
- package/dist/gir/record.js.map +1 -1
- package/dist/gir/size.d.ts +5 -4
- package/dist/gir/size.d.ts.map +1 -1
- package/dist/gir/size.js.map +1 -1
- package/dist/gir/type-id.d.ts +35 -0
- package/dist/gir/type-id.d.ts.map +1 -1
- package/dist/gir/type-id.js +1 -0
- package/dist/gir/type-id.js.map +1 -1
- package/dist/gir/type-ref.d.ts.map +1 -1
- package/dist/gir/type-ref.js +1 -0
- package/dist/gir/type-ref.js.map +1 -1
- package/dist/gir/type.d.ts +20 -0
- package/dist/gir/type.d.ts.map +1 -1
- package/dist/gir/type.js.map +1 -1
- package/dist/guards.d.ts +16 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +11 -0
- package/dist/guards.js.map +1 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -1
- package/dist/json.d.ts +3 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +11 -0
- package/dist/json.js.map +1 -0
- package/dist/khronos/args.d.ts +7 -6
- package/dist/khronos/args.d.ts.map +1 -1
- package/dist/khronos/args.js +28 -6
- package/dist/khronos/args.js.map +1 -1
- package/dist/khronos/doc-context.d.ts +29 -0
- package/dist/khronos/doc-context.d.ts.map +1 -0
- package/dist/khronos/doc-context.js +29 -0
- package/dist/khronos/doc-context.js.map +1 -0
- package/dist/khronos/extensions.d.ts +13 -0
- package/dist/khronos/extensions.d.ts.map +1 -0
- package/dist/khronos/extensions.js +49 -0
- package/dist/khronos/extensions.js.map +1 -0
- package/dist/khronos/jsdoc.d.ts +17 -11
- package/dist/khronos/jsdoc.d.ts.map +1 -1
- package/dist/khronos/jsdoc.js +104 -46
- package/dist/khronos/jsdoc.js.map +1 -1
- package/dist/khronos/model.d.ts +42 -3
- package/dist/khronos/model.d.ts.map +1 -1
- package/dist/khronos/model.js +218 -63
- package/dist/khronos/model.js.map +1 -1
- package/dist/khronos/modules.d.ts +9 -6
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +112 -27
- package/dist/khronos/modules.js.map +1 -1
- package/dist/khronos/notes.d.ts +19 -0
- package/dist/khronos/notes.d.ts.map +1 -0
- package/dist/khronos/notes.js +35 -0
- package/dist/khronos/notes.js.map +1 -0
- package/dist/khronos/param-pair.d.ts +1 -1
- package/dist/khronos/param-pair.d.ts.map +1 -1
- package/dist/khronos/param-pair.js.map +1 -1
- package/dist/khronos/parse.d.ts.map +1 -1
- package/dist/khronos/parse.js +3 -4
- package/dist/khronos/parse.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +4 -2
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js +58 -27
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +3 -9
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +3 -3
- package/dist/khronos/plan.js.map +1 -1
- package/dist/khronos/render.d.ts +8 -6
- package/dist/khronos/render.d.ts.map +1 -1
- package/dist/khronos/render.js +35 -26
- package/dist/khronos/render.js.map +1 -1
- package/dist/khronos/select.d.ts +21 -4
- package/dist/khronos/select.d.ts.map +1 -1
- package/dist/khronos/select.js +47 -34
- package/dist/khronos/select.js.map +1 -1
- package/dist/react/element-config.d.ts +2 -2
- package/dist/react/element-config.d.ts.map +1 -1
- package/dist/react/element-config.js.map +1 -1
- package/dist/runner.d.ts +6 -8
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +16 -0
- package/dist/runner.js.map +1 -1
- package/dist/staging.d.ts +5 -0
- package/dist/staging.d.ts.map +1 -0
- package/dist/staging.js +57 -0
- package/dist/staging.js.map +1 -0
- package/dist/store/compile-store.d.ts +1 -1
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +4 -2
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/callable-doc.d.ts +11 -0
- package/dist/store/gi/callable-doc.d.ts.map +1 -0
- package/dist/store/gi/callable-doc.js +62 -0
- package/dist/store/gi/callable-doc.js.map +1 -0
- package/dist/store/gi/callables.d.ts +9 -2
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +35 -40
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +10 -6
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +63 -40
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/closure-invocation.d.ts +4 -0
- package/dist/store/gi/closure-invocation.d.ts.map +1 -0
- package/dist/store/gi/closure-invocation.js +22 -0
- package/dist/store/gi/closure-invocation.js.map +1 -0
- package/dist/store/gi/companion.d.ts.map +1 -1
- package/dist/store/gi/companion.js +6 -6
- package/dist/store/gi/companion.js.map +1 -1
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +12 -3
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +18 -20
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/doc-spec.d.ts +14 -0
- package/dist/store/gi/doc-spec.d.ts.map +1 -0
- package/dist/store/gi/doc-spec.js +23 -0
- package/dist/store/gi/doc-spec.js.map +1 -0
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +52 -19
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts +1 -3
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +50 -29
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +4 -1
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +155 -26
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/item-comparators.d.ts.map +1 -1
- package/dist/store/gi/item-comparators.js +3 -5
- package/dist/store/gi/item-comparators.js.map +1 -1
- package/dist/store/gi/method.d.ts +11 -2
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +80 -45
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +6 -2
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +54 -5
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +23 -11
- 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 +7 -4
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +12 -5
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +98 -46
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts +8 -1
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +34 -11
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +3 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +8 -3
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts +6 -1
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +9 -2
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +21 -9
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.d.ts +1 -1
- package/dist/store/gi/registration.js +4 -4
- package/dist/store/gi/registration.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 +8 -5
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.d.ts +2 -1
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +42 -37
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts +1 -2
- package/dist/store/gi/value-marshalable.d.ts.map +1 -1
- package/dist/store/gi/value-marshalable.js +3 -2
- package/dist/store/gi/value-marshalable.js.map +1 -1
- package/dist/store/gi/vtable.d.ts +19 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +257 -51
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +1 -0
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +15 -20
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts +1 -1
- package/dist/store/jsx/element-components.d.ts.map +1 -1
- package/dist/store/jsx/element-components.js +6 -4
- package/dist/store/jsx/element-components.js.map +1 -1
- package/dist/store/jsx/element-prop-imports.d.ts +1 -3
- package/dist/store/jsx/element-prop-imports.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-imports.js.map +1 -1
- package/dist/store/jsx/element-prop-types.d.ts +3 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-types.js +7 -1
- package/dist/store/jsx/element-prop-types.js.map +1 -1
- package/dist/store/jsx/generated-elements.d.ts +2 -1
- package/dist/store/jsx/generated-elements.d.ts.map +1 -1
- package/dist/store/jsx/generated-elements.js +13 -7
- package/dist/store/jsx/generated-elements.js.map +1 -1
- package/dist/store/jsx/intrinsic-elements.d.ts +4 -0
- package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -1
- package/dist/store/jsx/intrinsic-elements.js.map +1 -1
- package/dist/store/jsx/jsx.d.ts.map +1 -1
- package/dist/store/jsx/jsx.js +10 -9
- package/dist/store/jsx/jsx.js.map +1 -1
- package/dist/store/jsx/metadata.d.ts.map +1 -1
- package/dist/store/jsx/metadata.js +5 -3
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx/pipeline.d.ts +1 -1
- package/dist/store/jsx/pipeline.d.ts.map +1 -1
- package/dist/store/jsx/pipeline.js.map +1 -1
- package/dist/store/jsx/props.d.ts +1 -7
- package/dist/store/jsx/props.d.ts.map +1 -1
- package/dist/store/jsx/props.js +14 -6
- package/dist/store/jsx/props.js.map +1 -1
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +3 -3
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts +14 -3
- package/dist/store/resolve-store.d.ts.map +1 -1
- package/dist/store/resolve-store.js +98 -15
- package/dist/store/resolve-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +9 -6
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +59 -25
- package/dist/store/store-fs.js.map +1 -1
- package/dist/store/store-links.d.ts +3 -0
- package/dist/store/store-links.d.ts.map +1 -0
- package/dist/store/store-links.js +39 -0
- package/dist/store/store-links.js.map +1 -0
- package/dist/writer/comparison-context.d.ts +4 -0
- package/dist/writer/comparison-context.d.ts.map +1 -0
- package/dist/writer/comparison-context.js +13 -0
- package/dist/writer/comparison-context.js.map +1 -0
- package/dist/writer/context.d.ts +3 -2
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +11 -3
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/doc-tags.d.ts +21 -0
- package/dist/writer/doc-tags.d.ts.map +1 -0
- package/dist/writer/doc-tags.js +38 -0
- package/dist/writer/doc-tags.js.map +1 -0
- package/dist/writer/doc.d.ts +3 -1
- package/dist/writer/doc.d.ts.map +1 -1
- package/dist/writer/doc.js +19 -6
- package/dist/writer/doc.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts +1 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +64 -15
- package/dist/writer/gtk-doc.js.map +1 -1
- package/dist/writer/module.d.ts +17 -3
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +72 -3
- package/dist/writer/module.js.map +1 -1
- package/dist/xml.d.ts +7 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +43 -1
- package/dist/xml.js.map +1 -1
- package/overrides/gdk/rgba.ts.ejs +26 -0
- package/overrides/gobject/object.ts.ejs +48 -3
- package/overrides/gobject/value.ts.ejs +7 -0
- package/overrides/graphene/structs.ts.ejs +55 -0
- package/package.json +15 -4
- package/src/analysis/descriptor-render.ts +130 -66
- package/src/analysis/descriptor.ts +35 -11
- package/src/analysis/inheritance.ts +166 -75
- package/src/analysis/interface-conflicts.ts +237 -0
- package/src/analysis/nul-terminated-bytes.ts +31 -0
- package/src/analysis/param-capability.ts +169 -0
- package/src/analysis/param-structure.ts +85 -25
- package/src/analysis/ts-type.ts +13 -17
- package/src/analysis/type-key.ts +14 -0
- package/src/analysis/type-shape.ts +24 -0
- package/src/compile.ts +110 -26
- package/src/docs/api-reference.ts +46 -34
- package/src/docs/element-page.ts +58 -49
- package/src/docs/handwritten-props.ts +230 -0
- package/src/docs/pipeline.ts +131 -21
- package/src/docs/render.ts +153 -35
- package/src/docs/symbol-page.ts +230 -80
- package/src/fingerprint.ts +86 -32
- package/src/gi.ts +1 -0
- package/src/gir/ancestry.ts +31 -1
- package/src/gir/annotations.ts +37 -0
- package/src/gir/callback.ts +2 -0
- package/src/gir/class.ts +42 -4
- package/src/gir/cursor-overrides.ts +12 -0
- package/src/gir/emittable.ts +8 -0
- package/src/gir/enum.ts +30 -10
- package/src/gir/field.ts +24 -9
- package/src/gir/function.ts +60 -9
- package/src/gir/libraries.ts +11 -3
- package/src/gir/library.ts +52 -3
- package/src/gir/namespace.ts +49 -7
- package/src/gir/parameter.ts +62 -3
- package/src/gir/parse.ts +13 -9
- package/src/gir/primitives.ts +1 -0
- package/src/gir/property.ts +18 -3
- package/src/gir/record.ts +24 -2
- package/src/gir/size.ts +8 -3
- package/src/gir/type-id.ts +49 -3
- package/src/gir/type-ref.ts +1 -0
- package/src/gir/type.ts +50 -6
- package/src/guards.ts +23 -0
- package/src/internal.ts +2 -0
- package/src/json.ts +11 -0
- package/src/khronos/args.ts +36 -13
- package/src/khronos/doc-context.ts +62 -0
- package/src/khronos/extensions.ts +85 -0
- package/src/khronos/jsdoc.ts +152 -56
- package/src/khronos/model.ts +314 -69
- package/src/khronos/modules.ts +150 -40
- package/src/khronos/notes.ts +74 -0
- package/src/khronos/param-pair.ts +1 -1
- package/src/khronos/parse.ts +3 -4
- package/src/khronos/pipeline.ts +95 -42
- package/src/khronos/plan.ts +4 -6
- package/src/khronos/render.ts +62 -50
- package/src/khronos/select.ts +91 -50
- package/src/react/element-config.ts +2 -2
- package/src/runner.ts +20 -9
- package/src/staging.ts +69 -0
- package/src/store/compile-store.ts +7 -5
- package/src/store/gi/callable-doc.ts +102 -0
- package/src/store/gi/callables.ts +58 -44
- package/src/store/gi/callback.ts +10 -9
- package/src/store/gi/class.ts +83 -49
- package/src/store/gi/closure-invocation.ts +26 -0
- package/src/store/gi/companion.ts +7 -6
- package/src/store/gi/constant.ts +14 -5
- package/src/store/gi/constructor-props.ts +19 -23
- package/src/store/gi/doc-spec.ts +38 -0
- package/src/store/gi/enum.ts +75 -26
- package/src/store/gi/function.ts +72 -44
- package/src/store/gi/gtype-binding.ts +7 -2
- package/src/store/gi/interface.ts +244 -37
- package/src/store/gi/item-comparators.ts +3 -5
- package/src/store/gi/method.ts +124 -69
- package/src/store/gi/param-marshal.ts +91 -6
- package/src/store/gi/pipeline.ts +28 -13
- package/src/store/gi/properties.ts +10 -5
- package/src/store/gi/property-accessor.ts +163 -75
- package/src/store/gi/record-constructor.ts +56 -19
- package/src/store/gi/record-field-accessor.ts +13 -4
- package/src/store/gi/record-layout.ts +12 -2
- package/src/store/gi/record.ts +24 -10
- package/src/store/gi/registration.ts +5 -5
- package/src/store/gi/runtime-override.ts +13 -6
- package/src/store/gi/signal.ts +54 -57
- package/src/store/gi/value-marshalable.ts +4 -2
- package/src/store/gi/vtable.ts +439 -61
- package/src/store/gi-store.ts +26 -31
- package/src/store/jsx/element-components.ts +8 -5
- package/src/store/jsx/element-prop-imports.ts +1 -3
- package/src/store/jsx/element-prop-types.ts +10 -1
- package/src/store/jsx/generated-elements.ts +17 -8
- package/src/store/jsx/intrinsic-elements.ts +4 -0
- package/src/store/jsx/jsx.ts +11 -9
- package/src/store/jsx/metadata.ts +6 -3
- package/src/store/jsx/pipeline.ts +1 -1
- package/src/store/jsx/props.ts +20 -7
- package/src/store/jsx-store.ts +3 -3
- package/src/store/resolve-store.ts +133 -18
- package/src/store/store-fs.ts +87 -34
- package/src/store/store-links.ts +49 -0
- package/src/writer/comparison-context.ts +18 -0
- package/src/writer/context.ts +14 -4
- package/src/writer/doc-tags.ts +70 -0
- package/src/writer/doc.ts +29 -6
- package/src/writer/gtk-doc.ts +82 -15
- package/src/writer/module.ts +114 -4
- package/src/xml.ts +61 -1
package/src/docs/pipeline.ts
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { sortStringsBy } from "@gtkx/utils";
|
|
2
|
-
import {
|
|
2
|
+
import { mkdirSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
computeDocsFingerprint,
|
|
6
|
+
type DocsFingerprintInput,
|
|
7
|
+
FINGERPRINT_FILENAME,
|
|
8
|
+
isDocsOutputFresh,
|
|
9
|
+
} from "../fingerprint.js";
|
|
5
10
|
import { Library } from "../gir/library.js";
|
|
6
11
|
import { namespaceDirectory } from "../gir/namespace.js";
|
|
12
|
+
import { arrayGuard, hasFields, isString } from "../guards.js";
|
|
13
|
+
import { readJsonFile } from "../json.js";
|
|
7
14
|
import { type ElementProps, setElementProps } from "../store/jsx/element-prop-imports.js";
|
|
8
15
|
import { collectIntrinsicElementClasses, type GlibNamedClass } from "../store/jsx/intrinsic-elements.js";
|
|
9
16
|
import { type OmittedProps, setOmittedProps } from "../store/jsx/omitted-props.js";
|
|
10
|
-
import {
|
|
17
|
+
import { type ElementPageContext, renderElementPage } from "./element-page.js";
|
|
11
18
|
import { elementSlug, firstSentence, namespaceOrder } from "./render.js";
|
|
12
19
|
|
|
13
20
|
type DocsElementLink = {
|
|
@@ -33,6 +40,7 @@ type DocsOptions = {
|
|
|
33
40
|
};
|
|
34
41
|
|
|
35
42
|
type DocsManifest = {
|
|
43
|
+
generator: string;
|
|
36
44
|
namespaces: DocsNamespace[];
|
|
37
45
|
};
|
|
38
46
|
|
|
@@ -50,6 +58,9 @@ type DocsResult = {
|
|
|
50
58
|
};
|
|
51
59
|
|
|
52
60
|
const MANIFEST_FILENAME = "manifest.json";
|
|
61
|
+
const MANIFEST_GENERATOR = "gtkx-docs";
|
|
62
|
+
const ROOT_INDEX_FILENAME = "index.md";
|
|
63
|
+
const DEFAULT_BASE_PATH = "/reference";
|
|
53
64
|
|
|
54
65
|
const namespaceIndexPage = (namespace: DocsNamespace, elements: GlibNamedClass[]): string => {
|
|
55
66
|
const rows = elements.map((entry, index) => {
|
|
@@ -144,6 +155,28 @@ const buildElementLinks = (elements: GlibNamedClass[], basePath: string): Map<st
|
|
|
144
155
|
return linkByGlibName;
|
|
145
156
|
};
|
|
146
157
|
|
|
158
|
+
const isEntryInsideOutDir = (value: string): boolean =>
|
|
159
|
+
value.length > 0 && value !== "." && value !== ".." && !value.includes("/") && !value.includes("\\");
|
|
160
|
+
|
|
161
|
+
const isChildEntry = (value: unknown): value is string => isString(value) && isEntryInsideOutDir(value);
|
|
162
|
+
|
|
163
|
+
const ownedEntry = (entry: string, source: string): string => {
|
|
164
|
+
if (isEntryInsideOutDir(entry)) {
|
|
165
|
+
return entry;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
throw new Error(
|
|
169
|
+
`Refusing to generate documentation outside the output directory: ${source} maps to \`${entry}\`, ` +
|
|
170
|
+
"which is not an entry inside it. The GIR that declares it is malformed.",
|
|
171
|
+
);
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
const elementPagePath = (directory: string, entry: GlibNamedClass): string => {
|
|
175
|
+
const slug = ownedEntry(elementSlug(entry.klass.name), `the element ${entry.glibName}`);
|
|
176
|
+
|
|
177
|
+
return `${directory}/${slug}.md`;
|
|
178
|
+
};
|
|
179
|
+
|
|
147
180
|
const namespacePages = (input: {
|
|
148
181
|
name: string;
|
|
149
182
|
elements: GlibNamedClass[];
|
|
@@ -152,7 +185,7 @@ const namespacePages = (input: {
|
|
|
152
185
|
pageContext: ElementPageContext;
|
|
153
186
|
}): NamespacePages => {
|
|
154
187
|
const { name, elements, basePath, linkByGlibName, pageContext } = input;
|
|
155
|
-
const directory = name
|
|
188
|
+
const directory = ownedEntry(namespaceDirectory({ name }), `the GIR namespace ${name}`);
|
|
156
189
|
|
|
157
190
|
const docs: DocsNamespace = {
|
|
158
191
|
name,
|
|
@@ -162,7 +195,7 @@ const namespacePages = (input: {
|
|
|
162
195
|
};
|
|
163
196
|
|
|
164
197
|
const pages: Page[] = elements.map((entry) => ({
|
|
165
|
-
path:
|
|
198
|
+
path: elementPagePath(directory, entry),
|
|
166
199
|
content: renderElementPage(entry, pageContext),
|
|
167
200
|
}));
|
|
168
201
|
|
|
@@ -175,7 +208,7 @@ const generatePages = (options: DocsOptions, basePath: string, library: Library)
|
|
|
175
208
|
const intrinsicElements = collectIntrinsicElementClasses(library);
|
|
176
209
|
const byNamespace = groupElementsByNamespace(intrinsicElements);
|
|
177
210
|
const linkByGlibName = buildElementLinks(intrinsicElements, basePath);
|
|
178
|
-
const pageContext =
|
|
211
|
+
const pageContext: ElementPageContext = { library, linkFor: (glibName) => linkByGlibName.get(glibName) };
|
|
179
212
|
const pages: Page[] = [];
|
|
180
213
|
const namespaces: DocsNamespace[] = [];
|
|
181
214
|
const orderedNames = sortStringsBy(byNamespace.keys(), namespaceOrder);
|
|
@@ -187,21 +220,90 @@ const generatePages = (options: DocsOptions, basePath: string, library: Library)
|
|
|
187
220
|
namespaces.push(result.docs);
|
|
188
221
|
}
|
|
189
222
|
|
|
190
|
-
pages.push({ path:
|
|
223
|
+
pages.push({ path: ROOT_INDEX_FILENAME, content: rootIndexPage(namespaces, options.libraries) });
|
|
191
224
|
|
|
192
225
|
return { pages, namespaces };
|
|
193
226
|
};
|
|
194
227
|
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
228
|
+
const isGeneratorTag = (value: unknown): value is string => value === MANIFEST_GENERATOR;
|
|
229
|
+
|
|
230
|
+
const isDocsElementLink = (value: unknown): value is DocsElementLink =>
|
|
231
|
+
hasFields<DocsElementLink>(value, { text: isString, link: isString });
|
|
232
|
+
|
|
233
|
+
const isDocsNamespace = (value: unknown): value is DocsNamespace =>
|
|
234
|
+
hasFields<DocsNamespace>(value, {
|
|
235
|
+
name: isString,
|
|
236
|
+
directory: isChildEntry,
|
|
237
|
+
link: isString,
|
|
238
|
+
elements: arrayGuard(isDocsElementLink),
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
const isDocsManifest = (value: unknown): value is DocsManifest =>
|
|
242
|
+
hasFields<DocsManifest>(value, { generator: isGeneratorTag, namespaces: arrayGuard(isDocsNamespace) });
|
|
243
|
+
|
|
244
|
+
const readDocsManifest = (manifestPath: string): DocsManifest | undefined => {
|
|
245
|
+
const parsed = readJsonFile(manifestPath);
|
|
246
|
+
|
|
247
|
+
return isDocsManifest(parsed) ? parsed : undefined;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
const outDirRefusal = (outDir: string, reason: string): Error =>
|
|
251
|
+
new Error(
|
|
252
|
+
`Refusing to generate documentation into ${outDir}: ${reason}. Point the output directory at an ` +
|
|
253
|
+
"empty directory or at one gtkx generated, or remove it yourself first.",
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
const assertOwnedOutDir = (options: DocsOptions, manifest: DocsManifest | undefined): void => {
|
|
257
|
+
const stats = statSync(options.outDir, { throwIfNoEntry: false });
|
|
258
|
+
|
|
259
|
+
if (stats === undefined) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (!stats.isDirectory()) {
|
|
264
|
+
throw outDirRefusal(options.outDir, "it already exists and is not a directory");
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (manifest !== undefined || readdirSync(options.outDir).length === 0) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
throw outDirRefusal(
|
|
272
|
+
options.outDir,
|
|
273
|
+
`it is not empty and holds no ${MANIFEST_FILENAME} written by \`gtkx docs\`, ` +
|
|
274
|
+
"so its contents are not gtkx's to replace",
|
|
275
|
+
);
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const clearOutDir = (options: DocsOptions, manifest: DocsManifest | undefined): void => {
|
|
279
|
+
if (manifest === undefined) {
|
|
280
|
+
return;
|
|
198
281
|
}
|
|
199
282
|
|
|
200
|
-
|
|
283
|
+
const entries = [
|
|
284
|
+
...manifest.namespaces.map((namespace) => namespace.directory),
|
|
285
|
+
ROOT_INDEX_FILENAME,
|
|
286
|
+
MANIFEST_FILENAME,
|
|
287
|
+
FINGERPRINT_FILENAME,
|
|
288
|
+
];
|
|
289
|
+
|
|
290
|
+
for (const entry of entries) {
|
|
291
|
+
rmSync(join(options.outDir, entry), { recursive: true, force: true });
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
const cachedDocsResult = (
|
|
296
|
+
options: DocsOptions,
|
|
297
|
+
manifest: DocsManifest | undefined,
|
|
298
|
+
input: DocsFingerprintInput,
|
|
299
|
+
): DocsResult | undefined => {
|
|
300
|
+
if (manifest === undefined || options.isForced === true) {
|
|
201
301
|
return undefined;
|
|
202
302
|
}
|
|
203
303
|
|
|
204
|
-
|
|
304
|
+
if (!isDocsOutputFresh(options.outDir, options.libraries, options.girPath, input)) {
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
205
307
|
|
|
206
308
|
return { isRegenerated: false, namespaces: manifest.namespaces };
|
|
207
309
|
};
|
|
@@ -214,28 +316,36 @@ const writePages = (outDir: string, pages: Page[]): void => {
|
|
|
214
316
|
}
|
|
215
317
|
};
|
|
216
318
|
|
|
319
|
+
const docsFingerprintInput = (options: DocsOptions): DocsFingerprintInput => ({
|
|
320
|
+
basePath: options.basePath ?? DEFAULT_BASE_PATH,
|
|
321
|
+
props: options.props ?? {},
|
|
322
|
+
omittedProps: options.omittedProps ?? {},
|
|
323
|
+
});
|
|
324
|
+
|
|
217
325
|
const writeDocs = (options: DocsOptions): DocsResult => {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
326
|
+
const input = docsFingerprintInput(options);
|
|
327
|
+
setElementProps(input.props);
|
|
328
|
+
setOmittedProps(input.omittedProps);
|
|
221
329
|
const manifestPath = join(options.outDir, MANIFEST_FILENAME);
|
|
222
|
-
const
|
|
330
|
+
const previous = readDocsManifest(manifestPath);
|
|
331
|
+
const cached = cachedDocsResult(options, previous, input);
|
|
223
332
|
|
|
224
333
|
if (cached !== undefined) {
|
|
225
334
|
return cached;
|
|
226
335
|
}
|
|
227
336
|
|
|
337
|
+
assertOwnedOutDir(options, previous);
|
|
228
338
|
const library = Library.load(options.libraries, options.girPath);
|
|
229
|
-
const { pages, namespaces } = generatePages(options, basePath, library);
|
|
230
|
-
|
|
339
|
+
const { pages, namespaces } = generatePages(options, input.basePath, library);
|
|
340
|
+
clearOutDir(options, previous);
|
|
231
341
|
mkdirSync(options.outDir, { recursive: true });
|
|
232
|
-
|
|
233
|
-
const manifest: DocsManifest = { namespaces };
|
|
342
|
+
const manifest: DocsManifest = { generator: MANIFEST_GENERATOR, namespaces };
|
|
234
343
|
writeFileSync(manifestPath, JSON.stringify(manifest));
|
|
344
|
+
writePages(options.outDir, pages);
|
|
235
345
|
|
|
236
346
|
writeFileSync(
|
|
237
347
|
join(options.outDir, FINGERPRINT_FILENAME),
|
|
238
|
-
JSON.stringify(
|
|
348
|
+
JSON.stringify(computeDocsFingerprint(library.girFiles, options.libraries, options.girPath, input)),
|
|
239
349
|
);
|
|
240
350
|
|
|
241
351
|
return { isRegenerated: true, namespaces };
|
package/src/docs/render.ts
CHANGED
|
@@ -1,31 +1,57 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sanitizeTypeIdentifier, sortStringsBy } from "@gtkx/utils";
|
|
2
|
+
import type { GirAnnotations } from "../gir/annotations.js";
|
|
2
3
|
import type { GirClass } from "../gir/class.js";
|
|
3
4
|
import type { GirFunction } from "../gir/function.js";
|
|
4
5
|
import type { Library } from "../gir/library.js";
|
|
5
6
|
import type { GirNamespace } from "../gir/namespace.js";
|
|
6
7
|
import type { GirCallable } from "../gir/parameter.js";
|
|
8
|
+
import type { GirProperty } from "../gir/property.js";
|
|
7
9
|
import type { TypeId } from "../gir/type-id.js";
|
|
10
|
+
import type { JsDocDeprecation, JsDocParam, JsDocSpec } from "../writer/doc-tags.js";
|
|
8
11
|
import { collectInheritedMethods, conflictRename } from "../analysis/inheritance.js";
|
|
9
12
|
import { renderHandlerParameters, renderHandlerResultType } from "../analysis/param-structure.js";
|
|
10
13
|
import { recordTypeTarget, renderBaseType, type TsTypeTarget } from "../analysis/ts-type.js";
|
|
11
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
dedupeCallables,
|
|
16
|
+
instanceMemberSpec,
|
|
17
|
+
instanceScope,
|
|
18
|
+
renderInstanceMethodSignature,
|
|
19
|
+
} from "../store/gi/callables.js";
|
|
20
|
+
import { annotationSpec, handlerSpec, selfHandlerSpec } from "../store/gi/doc-spec.js";
|
|
12
21
|
import { methodExportName } from "../store/gi/method.js";
|
|
13
22
|
import { ModuleContext } from "../writer/context.js";
|
|
23
|
+
import { stripDocMedia } from "../writer/doc-tags.js";
|
|
14
24
|
import { gtkDocToMarkdown } from "../writer/gtk-doc.js";
|
|
15
25
|
|
|
16
26
|
type SignatureEntry = {
|
|
17
27
|
name: string;
|
|
18
28
|
signature: string;
|
|
19
29
|
doc: string;
|
|
30
|
+
tags?: JsDocSpec | undefined;
|
|
20
31
|
};
|
|
21
32
|
|
|
22
33
|
type OriginSignatureEntry = SignatureEntry & { origin: string | undefined };
|
|
23
34
|
|
|
35
|
+
type MetaDocEntry = {
|
|
36
|
+
name: string;
|
|
37
|
+
meta: string;
|
|
38
|
+
doc: string;
|
|
39
|
+
tags?: JsDocSpec | undefined;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type PropertyMetaOptions = {
|
|
43
|
+
type: string;
|
|
44
|
+
property: GirProperty;
|
|
45
|
+
accessNotes: string[];
|
|
46
|
+
origin: string | undefined;
|
|
47
|
+
};
|
|
48
|
+
|
|
24
49
|
const DOCS_DEFAULT_VALUES: Record<string, string> = { TRUE: "true", FALSE: "false", NULL: "null" };
|
|
25
50
|
const FENCE_LINE = /^\s*(```|~~~)/;
|
|
26
51
|
const HEADING_LINE = /^#{1,5}\s/;
|
|
27
52
|
const LEADING_NAMESPACES = ["Gtk", "Adw"];
|
|
28
53
|
const DOCS_SIGNATURE_NAMESPACE = "$docs";
|
|
54
|
+
const WHITESPACE_RUN = /\s+/g;
|
|
29
55
|
|
|
30
56
|
const docsTarget = (library: Library): TsTypeTarget =>
|
|
31
57
|
recordTypeTarget(
|
|
@@ -63,12 +89,6 @@ const renderDocsSignalHandlerType = (library: Library, signal: GirCallable): str
|
|
|
63
89
|
|
|
64
90
|
const docsDefaultValue = (value: string): string => DOCS_DEFAULT_VALUES[value] ?? value;
|
|
65
91
|
|
|
66
|
-
const stripDocMedia = (markdown: string): string =>
|
|
67
|
-
markdown
|
|
68
|
-
.replaceAll(/<picture[\s\S]*?<\/picture>/g, "")
|
|
69
|
-
.replaceAll(/<video[\s\S]*?(?:<\/video>|\/>)/g, "")
|
|
70
|
-
.replaceAll(/<img[^>]*>/g, "");
|
|
71
|
-
|
|
72
92
|
const demoteLine = (line: string, isInFence: boolean): { text: string; isInFence: boolean } => {
|
|
73
93
|
if (FENCE_LINE.test(line)) {
|
|
74
94
|
return { text: line, isInFence: !isInFence };
|
|
@@ -102,12 +122,15 @@ const stripMarkdown = (markdown: string): string =>
|
|
|
102
122
|
.replaceAll(/```[\s\S]*?```/g, " ")
|
|
103
123
|
.replaceAll(/`([^`]*)`/g, "$1")
|
|
104
124
|
.replaceAll(/\[([^[\]]*)\]\([^)]*\)/g, "$1")
|
|
105
|
-
.replaceAll(/[
|
|
106
|
-
.replaceAll(
|
|
125
|
+
.replaceAll(/[*#>]/g, "")
|
|
126
|
+
.replaceAll(WHITESPACE_RUN, " ")
|
|
107
127
|
.trim();
|
|
108
128
|
|
|
129
|
+
const inlineMarkdown = (doc: string | undefined): string => docMarkdown(doc).replaceAll(WHITESPACE_RUN, " ").trim();
|
|
130
|
+
const plainText = (doc: string | undefined): string => stripMarkdown(docMarkdown(doc));
|
|
131
|
+
|
|
109
132
|
const firstSentence = (doc: string | undefined): string => {
|
|
110
|
-
const text =
|
|
133
|
+
const text = plainText(doc);
|
|
111
134
|
|
|
112
135
|
if (text.length === 0) {
|
|
113
136
|
return "";
|
|
@@ -138,16 +161,102 @@ const implementsLine = (names: string[]): string[] => {
|
|
|
138
161
|
const joinSections = (sections: string[]): string =>
|
|
139
162
|
`${sections.filter((section) => section.length > 0).join("\n\n")}\n`;
|
|
140
163
|
|
|
141
|
-
const
|
|
142
|
-
const
|
|
164
|
+
const paramNotes = (params: JsDocParam[] | undefined): string[] => {
|
|
165
|
+
const entries = (params ?? [])
|
|
166
|
+
.map((param) => ({ name: param.name, text: inlineMarkdown(param.doc) }))
|
|
167
|
+
.filter((entry) => entry.text.length > 0);
|
|
168
|
+
|
|
169
|
+
if (entries.length === 0) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const bullets = entries.map((entry) => `- \`${entry.name}\`: ${entry.text}`);
|
|
174
|
+
|
|
175
|
+
return [["**Parameters**", "", ...bullets].join("\n")];
|
|
176
|
+
};
|
|
143
177
|
|
|
144
|
-
|
|
145
|
-
|
|
178
|
+
const labelledNote = (label: string, text: string): string[] => (text.length === 0 ? [] : [`${label} ${text}`]);
|
|
179
|
+
|
|
180
|
+
const deprecationNote = (deprecation: JsDocDeprecation | undefined): string[] => {
|
|
181
|
+
if (deprecation === undefined) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const since = deprecation.since;
|
|
186
|
+
const heading = since === undefined ? "**Deprecated.**" : `**Deprecated since ${since}.**`;
|
|
187
|
+
const text = inlineMarkdown(deprecation.doc);
|
|
188
|
+
const body = text.length === 0 ? heading : `${heading} ${text}`;
|
|
189
|
+
|
|
190
|
+
return [`> ${body}`];
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const sinceNote = (since: string | undefined): string[] =>
|
|
194
|
+
since === undefined || since.length === 0 ? [] : [`_Available since ${since}._`];
|
|
195
|
+
|
|
196
|
+
const tagNotes = (spec: JsDocSpec | undefined): string[] => {
|
|
197
|
+
if (spec === undefined) {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return [
|
|
202
|
+
...paramNotes(spec.params),
|
|
203
|
+
...labelledNote("**Returns**", docMarkdown(spec.returns)),
|
|
204
|
+
...labelledNote("**Throws**", inlineMarkdown(spec.throws)),
|
|
205
|
+
...deprecationNote(spec.deprecated),
|
|
206
|
+
...sinceNote(spec.since),
|
|
207
|
+
];
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const deprecationMeta = (annotations: GirAnnotations): string[] => {
|
|
211
|
+
if (!annotations.isDeprecated) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const since = annotations.deprecatedSince;
|
|
216
|
+
|
|
217
|
+
return [since === undefined ? "deprecated" : `deprecated since ${since}`];
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
const annotationNotes = (annotations: GirAnnotations): string[] => tagNotes(annotationSpec(annotations));
|
|
221
|
+
|
|
222
|
+
const signalTags = (signal: GirCallable, isSelfIncluded: boolean): JsDocSpec =>
|
|
223
|
+
isSelfIncluded ? selfHandlerSpec(signal) : handlerSpec(signal, signal.parameters);
|
|
224
|
+
|
|
225
|
+
const metaBlock = (entry: MetaDocEntry): string => {
|
|
226
|
+
const lines = [`### \`${entry.name}\``, "", entry.meta];
|
|
227
|
+
|
|
228
|
+
for (const note of [entry.doc, ...tagNotes(entry.tags)]) {
|
|
229
|
+
if (note.length > 0) {
|
|
230
|
+
lines.push("", note);
|
|
231
|
+
}
|
|
146
232
|
}
|
|
147
233
|
|
|
148
234
|
return lines.join("\n");
|
|
149
235
|
};
|
|
150
236
|
|
|
237
|
+
const sortedMetaBlocks = (entries: MetaDocEntry[]): string[] =>
|
|
238
|
+
sortStringsBy(entries, (item) => item.name).map((item) => metaBlock(item));
|
|
239
|
+
|
|
240
|
+
const propertyMetaLine = ({ type, property, accessNotes, origin }: PropertyMetaOptions): string => {
|
|
241
|
+
const meta = [`\`${type}\``];
|
|
242
|
+
|
|
243
|
+
if (property.defaultValue !== undefined) {
|
|
244
|
+
meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (property.constructOnly) {
|
|
248
|
+
meta.push("construct-only");
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
meta.push(...accessNotes, ...deprecationMeta(property.annotations));
|
|
252
|
+
|
|
253
|
+
if (origin !== undefined) {
|
|
254
|
+
meta.push(`from \`${origin}\``);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return meta.join(" · ");
|
|
258
|
+
};
|
|
259
|
+
|
|
151
260
|
const signatureBlock = (name: string, signature: string, notes: string[]): string => {
|
|
152
261
|
const lines = [`### \`${name}\``, "", `\`\`\`ts\n${signature}\n\`\`\``];
|
|
153
262
|
|
|
@@ -160,6 +269,9 @@ const signatureBlock = (name: string, signature: string, notes: string[]): strin
|
|
|
160
269
|
return lines.join("\n");
|
|
161
270
|
};
|
|
162
271
|
|
|
272
|
+
const signatureEntryBlock = (entry: SignatureEntry, leadingNotes: string[] = []): string =>
|
|
273
|
+
signatureBlock(entry.name, entry.signature, [...leadingNotes, entry.doc, ...tagNotes(entry.tags)]);
|
|
274
|
+
|
|
163
275
|
const namespaceOrder = (name: string): string => {
|
|
164
276
|
const index = LEADING_NAMESPACES.indexOf(name);
|
|
165
277
|
|
|
@@ -171,16 +283,16 @@ const docsSignatureContext = (namespace: GirNamespace, library: Library): Module
|
|
|
171
283
|
|
|
172
284
|
const originSignatureBlocks = (entries: OriginSignatureEntry[]): string[] =>
|
|
173
285
|
sortStringsBy(entries, (item) => item.name).map((item) =>
|
|
174
|
-
|
|
175
|
-
item.origin === undefined ? "" : `From \`${item.origin}\`.`,
|
|
176
|
-
item.doc,
|
|
177
|
-
]),
|
|
286
|
+
signatureEntryBlock(item, item.origin === undefined ? [] : [`From \`${item.origin}\`.`]),
|
|
178
287
|
);
|
|
179
288
|
|
|
289
|
+
const qualifiedClassName = (namespaceName: string, className: string): string =>
|
|
290
|
+
`${namespaceName}.${sanitizeTypeIdentifier(className)}`;
|
|
291
|
+
|
|
180
292
|
const classMethodEntries = (library: Library, namespace: GirNamespace, klass: GirClass): SignatureEntry[] => {
|
|
181
293
|
const realContext = new ModuleContext(namespace, library);
|
|
182
294
|
const signatureContext = docsSignatureContext(namespace, library);
|
|
183
|
-
const className =
|
|
295
|
+
const className = sanitizeTypeIdentifier(klass.name);
|
|
184
296
|
const inherited = collectInheritedMethods(realContext, klass);
|
|
185
297
|
|
|
186
298
|
return instanceMethodEntries(signatureContext, klass, (method) =>
|
|
@@ -189,9 +301,7 @@ const classMethodEntries = (library: Library, namespace: GirNamespace, klass: Gi
|
|
|
189
301
|
};
|
|
190
302
|
|
|
191
303
|
const methodsSectionBlocks = (entries: SignatureEntry[], intro: string): string[] =>
|
|
192
|
-
entries.length === 0
|
|
193
|
-
? []
|
|
194
|
-
: ["## Methods", intro, ...entries.map((item) => signatureBlock(item.name, item.signature, [item.doc]))];
|
|
304
|
+
entries.length === 0 ? [] : ["## Methods", intro, ...entries.map((item) => signatureEntryBlock(item))];
|
|
195
305
|
|
|
196
306
|
const instanceMethodEntries = (
|
|
197
307
|
signatureContext: ModuleContext,
|
|
@@ -200,7 +310,7 @@ const instanceMethodEntries = (
|
|
|
200
310
|
): SignatureEntry[] => {
|
|
201
311
|
const deduped = dedupeCallables(klass.methods);
|
|
202
312
|
|
|
203
|
-
const scope = instanceScope(
|
|
313
|
+
const scope = instanceScope(sanitizeTypeIdentifier(klass.name), {
|
|
204
314
|
constructors: dedupeCallables(klass.constructors),
|
|
205
315
|
functions: dedupeCallables(klass.functions),
|
|
206
316
|
methods: deduped,
|
|
@@ -210,13 +320,7 @@ const instanceMethodEntries = (
|
|
|
210
320
|
|
|
211
321
|
for (const method of deduped) {
|
|
212
322
|
const nameOverride = rename(method);
|
|
213
|
-
|
|
214
|
-
const rendered = renderInstanceMethodSignature(
|
|
215
|
-
signatureContext,
|
|
216
|
-
{ ...method, doc: undefined },
|
|
217
|
-
scope,
|
|
218
|
-
nameOverride,
|
|
219
|
-
);
|
|
323
|
+
const rendered = renderInstanceMethodSignature(signatureContext, method, scope, nameOverride);
|
|
220
324
|
|
|
221
325
|
if (rendered === undefined) {
|
|
222
326
|
continue;
|
|
@@ -224,32 +328,46 @@ const instanceMethodEntries = (
|
|
|
224
328
|
|
|
225
329
|
entries.push({
|
|
226
330
|
name: nameOverride ?? methodExportName(method),
|
|
227
|
-
signature: rendered
|
|
331
|
+
signature: signatureText(rendered),
|
|
228
332
|
doc: docMarkdown(method.doc),
|
|
333
|
+
tags: instanceMemberSpec(signatureContext, method, scope),
|
|
229
334
|
});
|
|
230
335
|
}
|
|
231
336
|
|
|
232
337
|
return sortStringsBy(entries, (entry) => entry.name);
|
|
233
338
|
};
|
|
234
339
|
|
|
340
|
+
const signatureText = (rendered: string): string => {
|
|
341
|
+
const start = rendered.startsWith("/**") ? rendered.indexOf("*/") + 2 : 0;
|
|
342
|
+
|
|
343
|
+
return rendered.slice(start).trim().replace(/;$/, "");
|
|
344
|
+
};
|
|
345
|
+
|
|
235
346
|
export {
|
|
236
347
|
renderDocsType,
|
|
237
348
|
renderDocsSignalSignature,
|
|
238
349
|
renderDocsSignalHandlerType,
|
|
239
|
-
|
|
350
|
+
annotationNotes,
|
|
351
|
+
deprecationMeta,
|
|
240
352
|
docMarkdown,
|
|
241
353
|
firstSentence,
|
|
242
354
|
elementSlug,
|
|
243
355
|
implementsLine,
|
|
244
356
|
joinSections,
|
|
245
|
-
|
|
357
|
+
plainText,
|
|
358
|
+
propertyMetaLine,
|
|
359
|
+
signalTags,
|
|
246
360
|
signatureBlock,
|
|
361
|
+
signatureEntryBlock,
|
|
362
|
+
sortedMetaBlocks,
|
|
247
363
|
namespaceOrder,
|
|
248
364
|
docsSignatureContext,
|
|
249
365
|
originSignatureBlocks,
|
|
250
366
|
classMethodEntries,
|
|
251
367
|
methodsSectionBlocks,
|
|
252
|
-
|
|
368
|
+
qualifiedClassName,
|
|
369
|
+
tagNotes,
|
|
370
|
+
type MetaDocEntry,
|
|
253
371
|
type SignatureEntry,
|
|
254
372
|
type OriginSignatureEntry,
|
|
255
373
|
};
|