@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-page.js","sourceRoot":"","sources":["../../src/docs/symbol-page.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase, sortStringsBy } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirEnum } from \"../gir/enum.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { GirProperty } from \"../gir/property.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport { reservedSignalMemberRename } from \"../analysis/inheritance.js\";\nimport { renderTsType } from \"../analysis/ts-type.js\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport { callbackAsFunction, type GirCallback } from \"../gir/callback.js\";\nimport { type GirAlias, type GirConstant, type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { PRIMITIVE_TS_TYPE, primitiveCategory } from \"../gir/primitives.js\";\nimport {\n dedupeCallables,\n indexMethodsByName,\n instanceScope,\n matchStaticFinishFunction,\n renderInstanceMethodSignature,\n renderStaticSignature,\n} from \"../store/gi/callables.js\";\nimport { constantLiteral } from \"../store/gi/constant.js\";\nimport { enumMemberKey } from \"../store/gi/enum.js\";\nimport {\n methodExportName,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedSignature,\n} from \"../store/gi/method.js\";\nimport { resolveAccessor, type ResolvedAccessor } from \"../store/gi/property-accessor.js\";\nimport { resolveRecordFieldEntry } from \"../store/gi/record-field-accessor.js\";\nimport { computeRecordFieldSlots } from \"../store/gi/record-layout.js\";\nimport { implementedInterfaces, newlyImplementedInterfaces } from \"../store/jsx/intrinsic-elements.js\";\nimport {\n classMethodEntries,\n docMarkdown,\n docsDefaultValue,\n docsSignatureContext,\n firstSentence,\n implementsLine,\n joinSections,\n metaBlock,\n methodsSectionBlocks,\n originSignatureBlocks,\n renderDocsSignalHandlerType,\n renderDocsType,\n signatureBlock,\n type SignatureEntry,\n} from \"./render.js\";\n\n/** What every indexed GIR symbol carries, whatever its kind. */\ntype GiSymbolBase = {\n /** GIR namespace declaring the symbol. */\n namespace: GirNamespace;\n /** Name the bindings export it under: camelCase for functions, PascalCase for classes, the GIR name otherwise. */\n name: string;\n /** Raw gtk-doc text from the GIR, undefined when the symbol is undocumented. */\n doc: string | undefined;\n};\n\n/** A GIR symbol the reference indexes, discriminated by `kind` and carrying the GIR node its page renders from. */\ntype GiSymbolEntry =\n | (GiSymbolBase & { kind: \"class\" | \"interface\"; klass: GirClass }) |\n (GiSymbolBase & { kind: \"record\"; record: GirRecord }) |\n (GiSymbolBase & { kind: \"enum\"; enumeration: GirEnum }) |\n (GiSymbolBase & { kind: \"callback\"; callback: GirCallback }) |\n (GiSymbolBase & { kind: \"alias\"; alias: GirAlias }) |\n (GiSymbolBase & { kind: \"function\"; fn: GirFunction }) |\n (GiSymbolBase & { kind: \"constant\"; constant: GirConstant });\n\ntype SymbolPageOptions = {\n library: Library;\n elementNameFor: (namespaceName: string, className: string) => string | undefined;\n};\n\ntype StaticSectionOptions = {\n title: string;\n intro: string;\n context: ModuleContext;\n callables: GirFunction[];\n siblings: GirFunction[];\n returnTypeOverride?: string;\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n};\n\ntype PropertyAccessorSetup = {\n context: ModuleContext;\n claimedNames: Set<string>;\n methodByName: Map<string, GirFunction>;\n};\n\ntype MetaDocEntry = { name: string; meta: string; doc: string };\ntype SignalDocEntry = { name: string; signature: string; doc: string; origin: string | undefined };\ntype ResolvedRecordField = NonNullable<ReturnType<typeof resolveRecordFieldEntry>>;\n\nconst qualifiedName = (entry: GiSymbolBase): string => `${entry.namespace.name}.${entry.name}`;\n\nconst frontmatter = (entry: GiSymbolBase, kindLabel: string): string => {\n const sentence = firstSentence(entry.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${qualifiedName(entry)} ${kindLabel}.`;\n\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst kindLine = (kindLabel: string, namespace: GirNamespace): string =>\n `\\`${kindLabel}\\` in \\`@gtkx/gi/${namespaceDirectory(namespace)}\\``;\n\nconst importBlock = (entry: GiSymbolBase): string =>\n `\\`\\`\\`ts\\nimport * as ${entry.namespace.name} from \"@gtkx/gi/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst pageHeader = (entry: GiSymbolEntry, kindLabel: string): string[] => [\n frontmatter(entry, kindLabel),\n `# ${qualifiedName(entry)}`,\n kindLine(kindLabel, entry.namespace),\n docMarkdown(entry.doc),\n importBlock(entry),\n];\n\nconst qualifiedClassName = (namespaceName: string, className: string): string =>\n `${namespaceName}.${pascalCase(className)}`;\n\nconst elementNote = (entry: GiSymbolBase & { klass: GirClass }, options: SymbolPageOptions): string[] => {\n const glibName = options.elementNameFor(entry.namespace.name, entry.klass.name);\n\n if (glibName === undefined) {\n return [];\n }\n\n return [\n `Also available as the \\`${glibName}\\` JSX element from ` +\n `\\`@gtkx/jsx/${namespaceDirectory(entry.namespace)}\\`; the \\`${glibName}\\` element page ` +\n \"documents the JSX props.\",\n ];\n};\n\nconst hierarchySection = (entry: GiSymbolBase & { klass: GirClass }, library: Library): string[] => {\n const ancestors = [...ancestorChain(library, entry.klass, entry.namespace.name)].slice(1).toReversed();\n\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, library).map((iface) =>\n qualifiedClassName(iface.namespace.name, iface.klass.name),\n );\n\n if (ancestors.length === 0 && interfaces.length === 0) {\n return [];\n }\n\n const lines = [\"## Hierarchy\"];\n\n if (ancestors.length > 0) {\n const parts = ancestors.map(\n (ancestor) => `\\`${qualifiedClassName(ancestor.namespaceName, ancestor.klass.name)}\\``,\n );\n\n parts.push(`**${qualifiedName(entry)}**`);\n lines.push(parts.join(\" → \"));\n }\n\n lines.push(...implementsLine(interfaces));\n\n return lines;\n};\n\nconst prerequisitesLine = (entry: GiSymbolBase & { klass: GirClass }, library: Library): string[] => {\n const names = entry.klass.prerequisites.map((name) => {\n const resolved = library.resolveType(entry.namespace.name, name);\n\n if (resolved === undefined || (resolved.kind !== \"class\" && resolved.kind !== \"interface\")) {\n return `\\`${name}\\``;\n }\n\n return `\\`${qualifiedClassName(resolved.namespace.name, resolved.value.name)}\\``;\n });\n\n if (names.length === 0) {\n return [];\n }\n\n return [`Requires ${names.join(\", \")}.`];\n};\n\nconst staticSection = (options: StaticSectionOptions): string[] => {\n const rendered: { name: string; block: string }[] = [];\n\n for (const callable of dedupeCallables(options.callables)) {\n const signature = renderStaticSignature(options.context, callable, {\n returnTypeOverride: options.returnTypeOverride,\n siblings: options.siblings,\n });\n\n if (signature === undefined) {\n continue;\n }\n\n rendered.push({\n name: signature.name,\n block: signatureBlock(signature.name, signature.signature, [docMarkdown(callable.doc)]),\n });\n }\n\n if (rendered.length === 0) {\n return [];\n }\n\n return [options.title, options.intro, ...sortStringsBy(rendered, (item) => item.name).map((item) => item.block)];\n};\n\nconst memberOwners = (entry: GiSymbolBase & { klass: GirClass }, library: Library): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined },\n ...newlyImplementedInterfaces(entry.klass, entry.namespace, library).map((iface) => ({\n klass: iface.klass,\n namespace: iface.namespace,\n origin: qualifiedClassName(iface.namespace.name, iface.klass.name),\n })),\n];\n\nconst interfaceMethodNames = (library: Library, owner: MemberOwner): string[] => {\n const context = docsSignatureContext(owner.namespace, library);\n const className = pascalCase(owner.klass.name);\n const methods = dedupeCallables(owner.klass.methods);\n\n const scope = instanceScope(className, {\n constructors: dedupeCallables(owner.klass.constructors),\n functions: dedupeCallables(owner.klass.functions),\n methods,\n });\n\n const names: string[] = [];\n\n for (const callable of methods) {\n const rename = reservedSignalMemberRename(className, callable);\n const rendered = renderInstanceMethodSignature(context, { ...callable, doc: undefined }, scope, rename);\n\n if (rendered === undefined) {\n continue;\n }\n\n names.push(rename ?? methodExportName(callable));\n }\n\n return names;\n};\n\nconst propertyAccessorSetup = (\n owner: MemberOwner,\n library: Library,\n isUseClassRenames: boolean,\n): PropertyAccessorSetup => {\n const claimedNames = new Set(\n isUseClassRenames\n ? classMethodEntries(library, owner.namespace, owner.klass).map((item) => item.name)\n : interfaceMethodNames(library, owner),\n );\n\n return {\n context: docsSignatureContext(owner.namespace, library),\n claimedNames,\n methodByName: indexMethodsByName(dedupeCallables(owner.klass.methods)),\n };\n};\n\nconst propertyMeta = (property: GirProperty, accessor: ResolvedAccessor, origin: string | undefined): string => {\n const meta: string[] = [`\\`${accessor.tsType}\\``];\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 (!accessor.isWritable) {\n meta.push(\"read-only\");\n } else if (!accessor.hasGetter) {\n meta.push(\"write-only\");\n }\n\n if (origin !== undefined) {\n meta.push(`from \\`${origin}\\``);\n }\n\n return meta.join(\" · \");\n};\n\nconst sortedMetaBlocks = (entries: MetaDocEntry[]): string[] =>\n sortStringsBy(entries, (item) => item.name).map((item) => metaBlock(item.name, item.meta, item.doc));\n\nconst ownerPropertyEntries = (owner: MemberOwner, setup: PropertyAccessorSetup, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [];\n\n for (const property of owner.klass.properties) {\n const accessor = resolveAccessor({\n context: setup.context,\n property,\n claimedNames: setup.claimedNames,\n methodByName: setup.methodByName,\n });\n\n if (accessor === undefined || seen.has(accessor.jsName)) {\n continue;\n }\n\n seen.add(accessor.jsName);\n\n entries.push({\n name: accessor.jsName,\n meta: propertyMeta(property, accessor, owner.origin),\n doc: docMarkdown(property.doc),\n });\n }\n\n return entries;\n};\n\nconst propertiesSection = (\n entry: GiSymbolBase & { kind: \"class\" | \"interface\"; klass: GirClass },\n library: Library,\n): string[] => {\n const seen: Set<string> = new Set();\n const entries: MetaDocEntry[] = [];\n\n for (const [index, owner] of memberOwners(entry, library).entries()) {\n const isUseClassRenames = index === 0 && entry.kind === \"class\";\n const setup = propertyAccessorSetup(owner, library, isUseClassRenames);\n entries.push(...ownerPropertyEntries(owner, setup, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n const intro =\n \"Properties are read and written as instance fields; changes can be observed with \" +\n \"`connect(\\\"notify::<property-name>\\\", handler)`. Properties inherited from ancestors are \" +\n \"documented on their own pages.\";\n\n return [\"## Properties\", intro, ...sortedMetaBlocks(entries)];\n};\n\nconst ownerSignalEntries = (owner: MemberOwner, library: Library, seen: Set<string>): SignalDocEntry[] => {\n const entries: SignalDocEntry[] = [];\n\n for (const signal of owner.klass.signals) {\n if (seen.has(signal.name)) {\n continue;\n }\n\n seen.add(signal.name);\n\n entries.push({\n name: signal.name,\n signature: renderDocsSignalHandlerType(library, signal),\n doc: docMarkdown(signal.doc),\n origin: owner.origin,\n });\n }\n\n return entries;\n};\n\nconst signalsSection = (entry: GiSymbolBase & { klass: GirClass }, library: Library): string[] => {\n const seen: Set<string> = new Set();\n const entries: SignalDocEntry[] = [];\n\n for (const owner of memberOwners(entry, library)) {\n entries.push(...ownerSignalEntries(owner, library, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n const intro =\n \"Connect with `instance.connect(\\\"<signal>\\\", handler)` or `instance.on(\\\"<signal>\\\", handler)`. \" +\n \"Signals inherited from ancestors are documented on their own pages.\";\n\n return [\"## Signals\", intro, ...originSignatureBlocks(entries)];\n};\n\nconst classMethodsSection = (entry: GiSymbolBase & { klass: GirClass }, library: Library): string[] =>\n methodsSectionBlocks(\n classMethodEntries(library, entry.namespace, entry.klass),\n \"Methods are called on instances. Methods inherited from ancestors are documented on their own pages.\",\n );\n\nconst classPage = (\n entry: GiSymbolBase & { kind: \"class\" | \"interface\"; klass: GirClass },\n options: SymbolPageOptions,\n): string => {\n const { library } = options;\n const qualified = qualifiedName(entry);\n const docsContext = docsSignatureContext(entry.namespace, library);\n const constructorsIntro = `Constructors are called on the class: \\`${qualified}.new(...)\\`.`;\n const staticIntro = `Static methods are called on the class: \\`${qualified}.<method>(...)\\`.`;\n const staticSiblings = [...entry.klass.constructors, ...entry.klass.functions];\n\n return joinSections([\n ...pageHeader(entry, entry.kind),\n ...elementNote(entry, options),\n ...(entry.kind === \"interface\" ? prerequisitesLine(entry, library) : hierarchySection(entry, library)),\n ...staticSection({\n title: \"## Constructors\",\n intro: constructorsIntro,\n context: docsContext,\n callables: entry.klass.constructors,\n siblings: staticSiblings,\n returnTypeOverride: qualified,\n }),\n ...staticSection({\n title: \"## Static methods\",\n intro: staticIntro,\n context: docsContext,\n callables: entry.klass.functions,\n siblings: staticSiblings,\n }),\n ...propertiesSection(entry, library),\n ...signalsSection(entry, library),\n ...classMethodsSection(entry, library),\n ]);\n};\n\nconst renderSymbolPage = (entry: GiSymbolEntry, options: SymbolPageOptions): string => {\n switch (entry.kind) {\n case \"class\":\n case \"interface\": {\n return classPage(entry, options);\n }\n case \"record\": {\n return recordPage(entry, options.library);\n }\n case \"enum\": {\n return enumPage(entry);\n }\n case \"callback\": {\n return callbackPage(entry, options.library);\n }\n case \"alias\": {\n return aliasPage(entry, options.library);\n }\n case \"function\": {\n return functionPage(entry, options.library);\n }\n case \"constant\": {\n return constantPage(entry, options.library);\n }\n }\n};\n\nconst recordInstanceEntries = (context: ModuleContext, record: GirRecord): SignatureEntry[] => {\n const entries: SignatureEntry[] = [];\n\n for (const callable of dedupeCallables(record.methods)) {\n const rendered = renderStaticSignature(context, callable);\n\n if (rendered === undefined) {\n continue;\n }\n\n entries.push({ name: rendered.name, signature: rendered.signature, doc: docMarkdown(callable.doc) });\n }\n\n return sortStringsBy(entries, (item) => item.name);\n};\n\nconst recordPage = (entry: GiSymbolBase & { kind: \"record\"; record: GirRecord }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const qualified = qualifiedName(entry);\n const constructorsIntro = `Constructors are called on the class: \\`${qualified}.new(...)\\`.`;\n const staticIntro = `Static methods are called on the class: \\`${qualified}.<method>(...)\\`.`;\n const methodEntries = recordInstanceEntries(docsContext, entry.record);\n const claimedNames = new Set(methodEntries.map((item) => item.name));\n const staticSiblings = [...entry.record.constructors, ...entry.record.functions];\n\n return joinSections([\n ...pageHeader(entry, entry.record.isUnion ? \"union\" : \"record\"),\n ...staticSection({\n title: \"## Constructors\",\n intro: constructorsIntro,\n context: docsContext,\n callables: entry.record.constructors,\n siblings: staticSiblings,\n returnTypeOverride: qualified,\n }),\n ...staticSection({\n title: \"## Static methods\",\n intro: staticIntro,\n context: docsContext,\n callables: entry.record.functions,\n siblings: staticSiblings,\n }),\n ...fieldsSection(entry.record, docsContext, claimedNames),\n ...methodsSectionBlocks(methodEntries, \"Methods are called on instances.\"),\n ]);\n};\n\nconst fieldMeta = (field: ResolvedRecordField): string =>\n [`\\`${field.tsType}\\``, ...(field.isWritable ? [] : [\"read-only\"])].join(\" · \");\n\nconst fieldsSection = (record: GirRecord, context: ModuleContext, claimedNames: Set<string>): string[] => {\n const { slots } = computeRecordFieldSlots(context, record.fields, record.isUnion);\n const entries: MetaDocEntry[] = [];\n\n for (const slot of slots) {\n const field = resolveRecordFieldEntry(context, slot, claimedNames);\n\n if (field === undefined) {\n continue;\n }\n\n entries.push({ name: field.jsName, meta: fieldMeta(field), doc: docMarkdown(field.doc) });\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n return [\"## Fields\", ...sortedMetaBlocks(entries)];\n};\n\nconst enumPage = (entry: GiSymbolBase & { kind: \"enum\"; enumeration: GirEnum }): string => {\n const { enumeration } = entry;\n const kindLabel = enumeration.errorDomain === undefined ? enumeration.kind : \"error domain\";\n const qualified = qualifiedName(entry);\n\n const rows = enumeration.members.map((member) => {\n const description = firstSentence(member.doc).replaceAll(\"|\", String.raw`\\|`);\n\n return `| \\`${enumMemberKey(member.name)}\\` | \\`${member.value}\\` | ${description} |`;\n });\n\n const usage =\n enumeration.errorDomain === undefined\n ? `Members are accessed as \\`${qualified}.<member>\\`.`\n : `Members are error codes for the \\`${enumeration.errorDomain}\\` GError domain, ` +\n `accessed as \\`${qualified}.<member>\\`.`;\n\n const table = [\"| Member | Value | Description |\", \"| --- | --- | --- |\", ...rows].join(\"\\n\");\n\n return joinSections([...pageHeader(entry, kindLabel), \"## Members\", usage, table]);\n};\n\nconst callbackPage = (entry: GiSymbolBase & { kind: \"callback\"; callback: GirCallback }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const fn = callbackAsFunction(entry.callback);\n const parameters = renderMethodSignature(docsContext, fn);\n const signature = `type ${entry.name} = (${parameters}) => ${renderMethodReturnType(docsContext, fn)}`;\n\n return joinSections([...pageHeader(entry, \"callback\"), \"## Signature\", `\\`\\`\\`ts\\n${signature}\\n\\`\\`\\``]);\n};\n\nconst aliasPage = (entry: GiSymbolBase & { kind: \"alias\"; alias: GirAlias }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const category = entry.alias.cType === undefined ? undefined : primitiveCategory(entry.alias.cType);\n const target = category === \"gtype\" ? PRIMITIVE_TS_TYPE.gtype : renderTsType(docsContext, entry.alias.target);\n\n return joinSections([...pageHeader(entry, \"alias\"), `\\`\\`\\`ts\\ntype ${entry.name} = ${target}\\n\\`\\`\\``]);\n};\n\nconst functionSignature = (context: ModuleContext, name: string, fn: GirFunction, siblings: GirFunction[]): string => {\n const finishFn = matchStaticFinishFunction(context, fn, siblings);\n\n if (finishFn !== undefined) {\n const { signature, returnType } = renderPromisifiedSignature(context, fn, finishFn);\n\n return `function ${name}(${signature}): ${returnType}`;\n }\n\n return `function ${name}(${renderMethodSignature(context, fn)}): ${renderMethodReturnType(context, fn)}`;\n};\n\nconst functionPage = (entry: GiSymbolBase & { kind: \"function\"; fn: GirFunction }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const signature = functionSignature(docsContext, entry.name, entry.fn, entry.namespace.functions);\n\n return joinSections([...pageHeader(entry, \"function\"), `\\`\\`\\`ts\\n${signature}\\n\\`\\`\\``]);\n};\n\nconst constantPage = (entry: GiSymbolBase & { kind: \"constant\"; constant: GirConstant }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const type = renderDocsType(library, entry.constant.type, false);\n\n return joinSections([\n ...pageHeader(entry, \"constant\"),\n `\\`\\`\\`ts\\nconst ${entry.name}: ${type} = ${constantLiteral(docsContext, entry.constant)}\\n\\`\\`\\``,\n ]);\n};\n\nexport { renderSymbolPage, type GiSymbolEntry, type SymbolPageOptions };\n"]}
|
|
1
|
+
{"version":3,"file":"symbol-page.js","sourceRoot":"","sources":["../../src/docs/symbol-page.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier, sortStringsBy, upperFirst } from \"@gtkx/utils\";\nimport type { GirAnnotations } from \"../gir/annotations.js\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { EnumMember, GirEnum } from \"../gir/enum.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport type { ModuleContext } from \"../writer/context.js\";\nimport type { JsDocSpec } from \"../writer/doc.js\";\nimport { reservedSignalMemberRename } from \"../analysis/inheritance.js\";\nimport { renderTsType } from \"../analysis/ts-type.js\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport { callbackAsFunction, type GirCallback } from \"../gir/callback.js\";\nimport { type GirAlias, type GirConstant, type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { PRIMITIVE_TS_TYPE, primitiveCategory } from \"../gir/primitives.js\";\nimport { callableSpec } from \"../store/gi/callable-doc.js\";\nimport {\n dedupeCallables,\n indexMethodsByName,\n instanceScope,\n matchStaticFinishFunction,\n renderInstanceMethodSignature,\n renderStaticSignature,\n} from \"../store/gi/callables.js\";\nimport { constantLiteral } from \"../store/gi/constant.js\";\nimport { annotationSpec } from \"../store/gi/doc-spec.js\";\nimport { enumMemberKey } from \"../store/gi/enum.js\";\nimport {\n methodExportName,\n renderMethodReturnType,\n renderMethodSignature,\n renderPromisifiedSignature,\n} from \"../store/gi/method.js\";\nimport { resolveAccessor, type ResolvedAccessor } from \"../store/gi/property-accessor.js\";\nimport { resolveRecordFieldEntry } from \"../store/gi/record-field-accessor.js\";\nimport { computeRecordFieldSlots } from \"../store/gi/record-layout.js\";\nimport { vfuncEntries } from \"../store/gi/vtable.js\";\nimport { implementedInterfaces, newlyImplementedInterfaces } from \"../store/jsx/intrinsic-elements.js\";\nimport {\n annotationNotes,\n classMethodEntries,\n deprecationMeta,\n docMarkdown,\n docsSignatureContext,\n firstSentence,\n implementsLine,\n joinSections,\n type MetaDocEntry,\n methodsSectionBlocks,\n originSignatureBlocks,\n type OriginSignatureEntry,\n plainText,\n propertyMetaLine,\n qualifiedClassName,\n renderDocsSignalHandlerType,\n renderDocsType,\n signalTags,\n signatureBlock,\n type SignatureEntry,\n signatureEntryBlock,\n sortedMetaBlocks,\n tagNotes,\n} from \"./render.js\";\n\n/** What every indexed GIR symbol carries, whatever its kind. */\ntype GiSymbolBase = {\n /** GIR namespace declaring the symbol. */\n namespace: GirNamespace;\n /** Name the bindings export it under: camelCase for functions, PascalCase for classes, the GIR name otherwise. */\n name: string;\n /** Raw gtk-doc text from the GIR, undefined when the symbol is undocumented. */\n doc: string | undefined;\n};\n\n/** A GIR symbol the reference indexes, discriminated by `kind` and carrying the GIR node its page renders from. */\ntype GiSymbolEntry =\n | (GiSymbolBase & {\n /** Renders the class page: hierarchy, constructors, static methods, properties, signals, and methods. */\n kind: \"class\" | \"interface\";\n /** Supplies the ancestry, members, and, on an interface, the vtable slots an implementer fills. */\n klass: GirClass;\n }) |\n (GiSymbolBase & {\n /** Renders the record page, labeled `union` when the record is one. */\n kind: \"record\";\n /** Supplies the constructors, static methods, fields, and instance methods. */\n record: GirRecord;\n }) |\n (GiSymbolBase & {\n /** Renders the page for an enumeration, a flags type, or an error domain, as a table of members. */\n kind: \"enum\";\n /** Supplies the members, their values, and the GError domain when the enum carries one. */\n enumeration: GirEnum;\n }) |\n (GiSymbolBase & {\n /** Renders the callback page as a single function type signature. */\n kind: \"callback\";\n /** Supplies the parameters and return type the signature is rendered from. */\n callback: GirCallback;\n }) |\n (GiSymbolBase & {\n /** Renders the alias page as the type the alias resolves to. */\n kind: \"alias\";\n /** Supplies the target type the page prints. */\n alias: GirAlias;\n }) |\n (GiSymbolBase & {\n /** Renders the page for a namespace-level function, promisified when a finish function matches it. */\n kind: \"function\";\n /** Supplies the parameters and return type the signature is rendered from. */\n fn: GirFunction;\n }) |\n (GiSymbolBase & {\n /** Renders the page for a namespace-level constant, showing its type and literal value. */\n kind: \"constant\";\n /** Supplies the type and the value the literal is emitted from. */\n constant: GirConstant;\n });\n\ntype ClassSymbol = GiSymbolBase & { klass: GirClass };\ntype ClassPageSymbol = ClassSymbol & { kind: \"class\" | \"interface\" };\n\n/** What {@link renderSymbolPage} needs besides the entry itself. */\ntype SymbolPageOptions = {\n /** Parsed GIR the page resolves ancestry, interfaces, and referenced types against. */\n library: Library;\n /** Looks up the JSX element a class is also available as, undefined when it has none. */\n elementNameFor: (namespaceName: string, className: string) => string | undefined;\n};\n\ntype StaticSectionOptions = {\n title: string;\n intro: string;\n context: ModuleContext;\n callables: GirFunction[];\n siblings: GirFunction[];\n returnTypeOverride?: string;\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n};\n\ntype PropertyAccessorSetup = {\n context: ModuleContext;\n claimedNames: Set<string>;\n methodByName: Map<string, GirFunction>;\n};\n\ntype ResolvedRecordField = NonNullable<ReturnType<typeof resolveRecordFieldEntry>>;\n\nconst qualifiedName = (entry: GiSymbolBase): string => `${entry.namespace.name}.${entry.name}`;\nconst pageTagNotes = (spec: JsDocSpec): string[] => tagNotes({ ...spec, deprecated: undefined, since: undefined });\n\nconst frontmatter = (entry: GiSymbolBase, kindLabel: string): string => {\n const sentence = firstSentence(entry.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${qualifiedName(entry)} ${kindLabel}.`;\n\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst kindLine = (kindLabel: string, namespace: GirNamespace): string =>\n `\\`${kindLabel}\\` in \\`@gtkx/gi/${namespaceDirectory(namespace)}\\``;\n\nconst importBlock = (entry: GiSymbolBase): string =>\n `\\`\\`\\`ts\\nimport * as ${entry.namespace.name} from \"@gtkx/gi/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst entryAnnotations = (entry: GiSymbolEntry): GirAnnotations => {\n switch (entry.kind) {\n case \"class\":\n case \"interface\": {\n return entry.klass.annotations;\n }\n case \"record\": {\n return entry.record.annotations;\n }\n case \"enum\": {\n return entry.enumeration.annotations;\n }\n case \"callback\": {\n return entry.callback.annotations;\n }\n case \"alias\": {\n return entry.alias.annotations;\n }\n case \"function\": {\n return entry.fn.annotations;\n }\n case \"constant\": {\n return entry.constant.annotations;\n }\n }\n};\n\nconst pageHeader = (entry: GiSymbolEntry, kindLabel: string): string[] => [\n frontmatter(entry, kindLabel),\n `# ${qualifiedName(entry)}`,\n kindLine(kindLabel, entry.namespace),\n docMarkdown(entry.doc),\n ...annotationNotes(entryAnnotations(entry)),\n importBlock(entry),\n];\n\nconst elementNote = (entry: ClassSymbol, options: SymbolPageOptions): string[] => {\n const glibName = options.elementNameFor(entry.namespace.name, entry.klass.name);\n\n if (glibName === undefined) {\n return [];\n }\n\n return [\n `Also available as the \\`${glibName}\\` JSX element from ` +\n `\\`@gtkx/jsx/${namespaceDirectory(entry.namespace)}\\`; the \\`${glibName}\\` element page ` +\n \"documents the JSX props.\",\n ];\n};\n\nconst hierarchySection = (entry: ClassSymbol, library: Library): string[] => {\n const ancestors = [...ancestorChain(library, entry.klass, entry.namespace.name)].slice(1).toReversed();\n\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, library).map((iface) =>\n qualifiedClassName(iface.namespace.name, iface.klass.name),\n );\n\n if (ancestors.length === 0 && interfaces.length === 0) {\n return [];\n }\n\n const lines = [\"## Hierarchy\"];\n\n if (ancestors.length > 0) {\n const parts = ancestors.map(\n (ancestor) => `\\`${qualifiedClassName(ancestor.namespaceName, ancestor.klass.name)}\\``,\n );\n\n parts.push(`**${qualifiedName(entry)}**`);\n lines.push(parts.join(\" → \"));\n }\n\n lines.push(...implementsLine(interfaces));\n\n return lines;\n};\n\nconst prerequisitesLine = (entry: ClassSymbol, library: Library): string[] => {\n const names = entry.klass.prerequisites.map((name) => {\n const resolved = library.resolveType(entry.namespace.name, name);\n\n if (resolved === undefined || (resolved.kind !== \"class\" && resolved.kind !== \"interface\")) {\n return `\\`${name}\\``;\n }\n\n return `\\`${qualifiedClassName(resolved.namespace.name, resolved.value.name)}\\``;\n });\n\n if (names.length === 0) {\n return [];\n }\n\n return [`Requires ${names.join(\", \")}.`];\n};\n\nconst interfaceImplementingIntro = (entry: ClassSymbol): string => {\n const qualified = qualifiedName(entry);\n\n return (\n `A class fills these vtable slots to adopt the interface: declare \\`implements ${qualified}Impl\\` ` +\n `on it and pass \\`${qualified}\\` in the \\`implements\\` option of \\`registerClass\\`. Every slot is ` +\n \"optional, and one the class leaves out keeps whatever the interface installs by default. The \" +\n \"methods, properties, and signals above come from GLib dispatch.\"\n );\n};\n\nconst classImplementingIntro = (entry: ClassSymbol): string => {\n const qualified = qualifiedName(entry);\n\n return (\n \"A subclass declared with `registerClass` overrides these virtual methods to change what \" +\n `\\`${qualified}\\` does: define the slot as a method on the subclass and call \\`super.<slot>(...)\\` ` +\n \"to chain up to the inherited implementation. A slot the subclass leaves out keeps that \" +\n \"implementation unchanged.\"\n );\n};\n\nconst implementingIntro = (entry: ClassPageSymbol): string =>\n entry.kind === \"interface\" ? interfaceImplementingIntro(entry) : classImplementingIntro(entry);\n\nconst implementingSection = (entry: ClassPageSymbol, library: Library): string[] => {\n const context = docsSignatureContext(entry.namespace, library);\n const entries = vfuncEntries(context, entry.namespace.name, entry.klass);\n\n if (entries.length === 0) {\n return [];\n }\n\n const blocks = sortStringsBy(entries, (item) => item.name).map((item) =>\n signatureBlock(item.name, item.signature, [docMarkdown(item.doc)]));\n\n return [\"## Implementing\", implementingIntro(entry), ...blocks];\n};\n\nconst staticEntry = (options: StaticSectionOptions, callable: GirFunction): SignatureEntry | undefined => {\n const signature = renderStaticSignature(options.context, callable, {\n returnTypeOverride: options.returnTypeOverride,\n siblings: options.siblings,\n });\n\n if (signature === undefined) {\n return undefined;\n }\n\n const finishFn = matchStaticFinishFunction(options.context, callable, options.siblings);\n\n return {\n name: signature.name,\n signature: signature.signature,\n doc: docMarkdown(callable.doc),\n tags: callableSpec(options.context, callable, { finishFn }),\n };\n};\n\nconst staticSection = (options: StaticSectionOptions): string[] => {\n const entries: SignatureEntry[] = [];\n\n for (const callable of dedupeCallables(options.callables)) {\n const entry = staticEntry(options, callable);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n const blocks = sortStringsBy(entries, (item) => item.name).map((item) => signatureEntryBlock(item));\n\n return [options.title, options.intro, ...blocks];\n};\n\nconst memberOwners = (entry: ClassSymbol, library: Library): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined },\n ...newlyImplementedInterfaces(entry.klass, entry.namespace, library).map((iface) => ({\n klass: iface.klass,\n namespace: iface.namespace,\n origin: qualifiedClassName(iface.namespace.name, iface.klass.name),\n })),\n];\n\nconst interfaceMethodNames = (library: Library, owner: MemberOwner): string[] => {\n const context = docsSignatureContext(owner.namespace, library);\n const className = sanitizeTypeIdentifier(owner.klass.name);\n const methods = dedupeCallables(owner.klass.methods);\n\n const scope = instanceScope(className, {\n constructors: dedupeCallables(owner.klass.constructors),\n functions: dedupeCallables(owner.klass.functions),\n methods,\n });\n\n const names: string[] = [];\n\n for (const callable of methods) {\n const rename = reservedSignalMemberRename(className, callable);\n const rendered = renderInstanceMethodSignature(context, { ...callable, doc: undefined }, scope, rename);\n\n if (rendered === undefined) {\n continue;\n }\n\n names.push(rename ?? methodExportName(callable));\n }\n\n return names;\n};\n\nconst propertyAccessorSetup = (\n owner: MemberOwner,\n library: Library,\n isUseClassRenames: boolean,\n): PropertyAccessorSetup => {\n const claimedNames = new Set(\n isUseClassRenames\n ? classMethodEntries(library, owner.namespace, owner.klass).map((item) => item.name)\n : interfaceMethodNames(library, owner),\n );\n\n return {\n context: docsSignatureContext(owner.namespace, library),\n claimedNames,\n methodByName: indexMethodsByName(dedupeCallables(owner.klass.methods)),\n };\n};\n\nconst getAccessNotes = (accessor: ResolvedAccessor): string[] => {\n if (!accessor.isWritable) {\n return [\"read-only\"];\n }\n\n if (!accessor.hasGetter) {\n return [\"write-only\"];\n }\n\n return accessor.readType === accessor.writeType ? [] : [`writes \\`${accessor.writeType}\\``];\n};\n\nconst documentedAccessorType = (accessor: ResolvedAccessor): string =>\n accessor.hasGetter ? accessor.readType : accessor.writeType;\n\nconst ownerPropertyEntries = (owner: MemberOwner, setup: PropertyAccessorSetup, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [];\n\n for (const property of owner.klass.properties) {\n const accessor = resolveAccessor({\n context: setup.context,\n property,\n claimedNames: setup.claimedNames,\n methodByName: setup.methodByName,\n });\n\n if (accessor === undefined || seen.has(accessor.jsName)) {\n continue;\n }\n\n seen.add(accessor.jsName);\n\n entries.push({\n name: accessor.jsName,\n meta: propertyMetaLine({\n type: documentedAccessorType(accessor),\n property,\n accessNotes: getAccessNotes(accessor),\n origin: owner.origin,\n }),\n doc: docMarkdown(property.doc),\n tags: annotationSpec(property.annotations),\n });\n }\n\n return entries;\n};\n\nconst propertiesSection = (entry: ClassPageSymbol, library: Library): string[] => {\n const seen: Set<string> = new Set();\n const entries: MetaDocEntry[] = [];\n\n for (const [index, owner] of memberOwners(entry, library).entries()) {\n const isUseClassRenames = index === 0 && entry.kind === \"class\";\n const setup = propertyAccessorSetup(owner, library, isUseClassRenames);\n entries.push(...ownerPropertyEntries(owner, setup, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n const intro =\n \"Properties are read and written as instance fields; changes can be observed with \" +\n \"`connect(\\\"notify::<property-name>\\\", handler)`. Properties inherited from ancestors are \" +\n \"documented on their own pages.\";\n\n return [\"## Properties\", intro, ...sortedMetaBlocks(entries)];\n};\n\nconst ownerSignalEntries = (owner: MemberOwner, library: Library, seen: Set<string>): OriginSignatureEntry[] => {\n const entries: OriginSignatureEntry[] = [];\n\n for (const signal of owner.klass.signals) {\n if (seen.has(signal.name)) {\n continue;\n }\n\n seen.add(signal.name);\n\n entries.push({\n name: signal.name,\n signature: renderDocsSignalHandlerType(library, signal),\n doc: docMarkdown(signal.doc),\n tags: signalTags(signal, false),\n origin: owner.origin,\n });\n }\n\n return entries;\n};\n\nconst signalsSection = (entry: ClassSymbol, library: Library): string[] => {\n const seen: Set<string> = new Set();\n const entries: OriginSignatureEntry[] = [];\n\n for (const owner of memberOwners(entry, library)) {\n entries.push(...ownerSignalEntries(owner, library, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n const intro =\n \"Connect with `instance.connect(\\\"<signal>\\\", handler)` or `instance.on(\\\"<signal>\\\", handler)`. \" +\n \"Signals inherited from ancestors are documented on their own pages.\";\n\n return [\"## Signals\", intro, ...originSignatureBlocks(entries)];\n};\n\nconst classMethodsSection = (entry: ClassSymbol, library: Library): string[] =>\n methodsSectionBlocks(\n classMethodEntries(library, entry.namespace, entry.klass),\n \"Methods are called on instances. Methods inherited from ancestors are documented on their own pages.\",\n );\n\nconst classPage = (entry: ClassPageSymbol, options: SymbolPageOptions): string => {\n const { library } = options;\n const qualified = qualifiedName(entry);\n const docsContext = docsSignatureContext(entry.namespace, library);\n const constructorsIntro = `Constructors are called on the class: \\`${qualified}.new(...)\\`.`;\n const staticIntro = `Static methods are called on the class: \\`${qualified}.<method>(...)\\`.`;\n const staticSiblings = [...entry.klass.constructors, ...entry.klass.functions];\n\n return joinSections([\n ...pageHeader(entry, entry.kind),\n ...elementNote(entry, options),\n ...(entry.kind === \"interface\" ? prerequisitesLine(entry, library) : hierarchySection(entry, library)),\n ...staticSection({\n title: \"## Constructors\",\n intro: constructorsIntro,\n context: docsContext,\n callables: entry.klass.constructors,\n siblings: staticSiblings,\n returnTypeOverride: qualified,\n }),\n ...staticSection({\n title: \"## Static methods\",\n intro: staticIntro,\n context: docsContext,\n callables: entry.klass.functions,\n siblings: staticSiblings,\n }),\n ...propertiesSection(entry, library),\n ...signalsSection(entry, library),\n ...classMethodsSection(entry, library),\n ...implementingSection(entry, library),\n ]);\n};\n\nconst renderSymbolPage = (entry: GiSymbolEntry, options: SymbolPageOptions): string => {\n switch (entry.kind) {\n case \"class\":\n case \"interface\": {\n return classPage(entry, options);\n }\n case \"record\": {\n return recordPage(entry, options.library);\n }\n case \"enum\": {\n return enumPage(entry);\n }\n case \"callback\": {\n return callbackPage(entry, options.library);\n }\n case \"alias\": {\n return aliasPage(entry, options.library);\n }\n case \"function\": {\n return functionPage(entry, options.library);\n }\n case \"constant\": {\n return constantPage(entry, options.library);\n }\n }\n};\n\nconst recordInstanceEntries = (context: ModuleContext, record: GirRecord): SignatureEntry[] => {\n const entries: SignatureEntry[] = [];\n\n for (const callable of dedupeCallables(record.methods)) {\n const rendered = renderStaticSignature(context, callable);\n\n if (rendered === undefined) {\n continue;\n }\n\n entries.push({\n name: rendered.name,\n signature: rendered.signature,\n doc: docMarkdown(callable.doc),\n tags: callableSpec(context, callable, {}),\n });\n }\n\n return sortStringsBy(entries, (item) => item.name);\n};\n\nconst recordPage = (entry: GiSymbolBase & { kind: \"record\"; record: GirRecord }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const qualified = qualifiedName(entry);\n const constructorsIntro = `Constructors are called on the class: \\`${qualified}.new(...)\\`.`;\n const staticIntro = `Static methods are called on the class: \\`${qualified}.<method>(...)\\`.`;\n const methodEntries = recordInstanceEntries(docsContext, entry.record);\n const claimedNames = new Set(methodEntries.map((item) => item.name));\n const staticSiblings = [...entry.record.constructors, ...entry.record.functions];\n\n return joinSections([\n ...pageHeader(entry, entry.record.isUnion ? \"union\" : \"record\"),\n ...staticSection({\n title: \"## Constructors\",\n intro: constructorsIntro,\n context: docsContext,\n callables: entry.record.constructors,\n siblings: staticSiblings,\n returnTypeOverride: qualified,\n }),\n ...staticSection({\n title: \"## Static methods\",\n intro: staticIntro,\n context: docsContext,\n callables: entry.record.functions,\n siblings: staticSiblings,\n }),\n ...fieldsSection(entry.record, docsContext, claimedNames),\n ...methodsSectionBlocks(methodEntries, \"Methods are called on instances.\"),\n ]);\n};\n\nconst fieldMeta = (field: ResolvedRecordField): string =>\n [\n `\\`${field.tsType}\\``,\n ...(field.isWritable ? [] : [\"read-only\"]),\n ...deprecationMeta(field.annotations),\n ].join(\" · \");\n\nconst fieldsSection = (record: GirRecord, context: ModuleContext, claimedNames: Set<string>): string[] => {\n const { slots } = computeRecordFieldSlots(context, record.fields, record.isUnion);\n const entries: MetaDocEntry[] = [];\n\n for (const slot of slots) {\n const field = resolveRecordFieldEntry(context, slot, claimedNames);\n\n if (field === undefined) {\n continue;\n }\n\n entries.push({\n name: field.jsName,\n meta: fieldMeta(field),\n doc: docMarkdown(field.doc),\n tags: annotationSpec(field.annotations),\n });\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n return [\"## Fields\", ...sortedMetaBlocks(entries)];\n};\n\nconst memberDescription = (member: EnumMember): string => {\n const markers = deprecationMeta(member.annotations).map((note) => `**${upperFirst(note)}.**`);\n\n return [...markers, plainText(member.doc)]\n .filter((part) => part.length > 0)\n .join(\" \")\n .replaceAll(\"|\", String.raw`\\|`);\n};\n\nconst enumPage = (entry: GiSymbolBase & { kind: \"enum\"; enumeration: GirEnum }): string => {\n const { enumeration } = entry;\n const kindLabel = enumeration.errorDomain === undefined ? enumeration.kind : \"error domain\";\n const qualified = qualifiedName(entry);\n\n const rows = enumeration.members.map(\n (member) => `| \\`${enumMemberKey(member.name)}\\` | \\`${member.value}\\` | ${memberDescription(member)} |`,\n );\n\n const usage =\n enumeration.errorDomain === undefined\n ? `Members are accessed as \\`${qualified}.<member>\\`.`\n : `Members are error codes for the \\`${enumeration.errorDomain}\\` GError domain, ` +\n `accessed as \\`${qualified}.<member>\\`.`;\n\n const table = [\"| Member | Value | Description |\", \"| --- | --- | --- |\", ...rows].join(\"\\n\");\n\n return joinSections([...pageHeader(entry, kindLabel), \"## Members\", usage, table]);\n};\n\nconst callbackPage = (entry: GiSymbolBase & { kind: \"callback\"; callback: GirCallback }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const fn = callbackAsFunction(entry.callback);\n const parameters = renderMethodSignature(docsContext, fn);\n const signature = `type ${entry.name} = (${parameters}) => ${renderMethodReturnType(docsContext, fn)}`;\n\n return joinSections([\n ...pageHeader(entry, \"callback\"),\n \"## Signature\",\n `\\`\\`\\`ts\\n${signature}\\n\\`\\`\\``,\n ...pageTagNotes(callableSpec(docsContext, fn, {})),\n ]);\n};\n\nconst aliasPage = (entry: GiSymbolBase & { kind: \"alias\"; alias: GirAlias }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const category = entry.alias.cType === undefined ? undefined : primitiveCategory(entry.alias.cType);\n const target = category === \"gtype\" ? PRIMITIVE_TS_TYPE.gtype : renderTsType(docsContext, entry.alias.target);\n\n return joinSections([...pageHeader(entry, \"alias\"), `\\`\\`\\`ts\\ntype ${entry.name} = ${target}\\n\\`\\`\\``]);\n};\n\nconst functionSignature = (context: ModuleContext, name: string, fn: GirFunction, siblings: GirFunction[]): string => {\n const finishFn = matchStaticFinishFunction(context, fn, siblings);\n\n if (finishFn !== undefined) {\n const { signature, returnType } = renderPromisifiedSignature(context, fn, finishFn);\n\n return `function ${name}(${signature}): ${returnType}`;\n }\n\n return `function ${name}(${renderMethodSignature(context, fn)}): ${renderMethodReturnType(context, fn)}`;\n};\n\nconst functionPage = (entry: GiSymbolBase & { kind: \"function\"; fn: GirFunction }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const siblings = entry.namespace.functions;\n const signature = functionSignature(docsContext, entry.name, entry.fn, siblings);\n const finishFn = matchStaticFinishFunction(docsContext, entry.fn, siblings);\n const spec = callableSpec(docsContext, entry.fn, { finishFn });\n\n return joinSections([...pageHeader(entry, \"function\"), `\\`\\`\\`ts\\n${signature}\\n\\`\\`\\``, ...pageTagNotes(spec)]);\n};\n\nconst constantPage = (entry: GiSymbolBase & { kind: \"constant\"; constant: GirConstant }, library: Library): string => {\n const docsContext = docsSignatureContext(entry.namespace, library);\n const type = renderDocsType(library, entry.constant.type, false);\n\n return joinSections([\n ...pageHeader(entry, \"constant\"),\n `\\`\\`\\`ts\\nconst ${entry.name}: ${type} = ${constantLiteral(docsContext, entry.constant)}\\n\\`\\`\\``,\n ]);\n};\n\nexport { renderSymbolPage, type GiSymbolEntry, type SymbolPageOptions };\n"]}
|
package/dist/fingerprint.d.ts
CHANGED
|
@@ -8,6 +8,15 @@ type ModuleExport = {
|
|
|
8
8
|
module: string;
|
|
9
9
|
export: string;
|
|
10
10
|
};
|
|
11
|
+
type DocsFingerprintInput = {
|
|
12
|
+
basePath: string;
|
|
13
|
+
props: Record<string, ModuleExport>;
|
|
14
|
+
omittedProps: Record<string, string[]>;
|
|
15
|
+
};
|
|
16
|
+
type DocsFingerprint = {
|
|
17
|
+
value: string;
|
|
18
|
+
gi: GiFingerprint;
|
|
19
|
+
};
|
|
11
20
|
type JsxFingerprintInput = {
|
|
12
21
|
reactVersion: string;
|
|
13
22
|
components: Record<string, ModuleExport>;
|
|
@@ -22,10 +31,12 @@ type JsxFingerprint = {
|
|
|
22
31
|
declare const FINGERPRINT_FILENAME = ".codegen-fingerprint.json";
|
|
23
32
|
declare const computeGiFingerprint: (girFiles: string[], libraries: string[], girPath: string[]) => GiFingerprint;
|
|
24
33
|
declare const isGiStoreFresh: (giStoreDir: string, libraries: string[], girPath: string[]) => boolean;
|
|
34
|
+
declare const computeDocsFingerprint: (girFiles: string[], libraries: string[], girPath: string[], input: DocsFingerprintInput) => DocsFingerprint;
|
|
35
|
+
declare const isDocsOutputFresh: (outDir: string, libraries: string[], girPath: string[], input: DocsFingerprintInput) => boolean;
|
|
25
36
|
declare const computeJsxFingerprint: (input: JsxFingerprintInput, intrinsicElementCount: number) => JsxFingerprint;
|
|
26
37
|
declare const jsxStoreFreshness: (jsxStoreDir: string, input: JsxFingerprintInput) => {
|
|
27
38
|
isFresh: boolean;
|
|
28
39
|
intrinsicElementCount: number;
|
|
29
40
|
};
|
|
30
|
-
export { FINGERPRINT_FILENAME, computeGiFingerprint, isGiStoreFresh, computeJsxFingerprint, jsxStoreFreshness, type
|
|
41
|
+
export { FINGERPRINT_FILENAME, computeGiFingerprint, computeDocsFingerprint, isGiStoreFresh, isDocsOutputFresh, computeJsxFingerprint, jsxStoreFreshness, type DocsFingerprintInput, type GiFingerprint, type JsxFingerprintInput, };
|
|
31
42
|
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"AASA,KAAK,aAAa,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,KAAK,oBAAoB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,oBAAoB,8BAA8B,CAAC;AAoCzD,QAAA,MAAM,oBAAoB,GACtB,UAAU,MAAM,EAAE,EAClB,WAAW,MAAM,EAAE,EACnB,SAAS,MAAM,EAAE,KAClB,aAKD,CAAC;AA8BH,QAAA,MAAM,cAAc,GAChB,YAAY,MAAM,EAClB,WAAW,MAAM,EAAE,EACnB,SAAS,MAAM,EAAE,KAClB,OAIF,CAAC;AAiBF,QAAA,MAAM,sBAAsB,GACxB,UAAU,MAAM,EAAE,EAClB,WAAW,MAAM,EAAE,EACnB,SAAS,MAAM,EAAE,EACjB,OAAO,oBAAoB,KAC5B,eAIF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GACnB,QAAQ,MAAM,EACd,WAAW,MAAM,EAAE,EACnB,SAAS,MAAM,EAAE,EACjB,OAAO,oBAAoB,KAC5B,OAUF,CAAC;AAsBF,QAAA,MAAM,qBAAqB,GAAI,OAAO,mBAAmB,EAAE,uBAAuB,MAAM,KAAG,cAGzF,CAAC;AAEH,QAAA,MAAM,iBAAiB,GACnB,aAAa,MAAM,EACnB,OAAO,mBAAmB,KAC3B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAUnD,CAAC;AAEF,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GAC3B,CAAC"}
|
package/dist/fingerprint.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { sortStrings } from "@gtkx/utils";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
4
|
-
import { createRequire } from "node:module";
|
|
5
4
|
import { dirname, join, resolve } from "node:path";
|
|
6
5
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
|
|
6
|
+
import packageManifest from "../package.json" with { type: "json" };
|
|
7
|
+
import { arrayGuard, hasFields, isNumber, isString, optionalGuard } from "./guards.js";
|
|
8
|
+
import { readJsonFile } from "./json.js";
|
|
8
9
|
const FINGERPRINT_FILENAME = ".codegen-fingerprint.json";
|
|
9
|
-
const CODEGEN_VERSION =
|
|
10
|
+
const CODEGEN_VERSION = packageManifest.version;
|
|
10
11
|
const OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..", "overrides");
|
|
11
12
|
const sortAlpha = (values) => sortStrings(values).join(",");
|
|
12
13
|
const overrideFiles = () => {
|
|
@@ -40,29 +41,51 @@ const computeGiFingerprint = (girFiles, libraries, girPath) => ({
|
|
|
40
41
|
libraries,
|
|
41
42
|
girPath,
|
|
42
43
|
});
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
44
|
+
const readSentinel = (storeDir) => readJsonFile(join(storeDir, FINGERPRINT_FILENAME));
|
|
45
|
+
const isGiFingerprint = (value) => hasFields(value, {
|
|
46
|
+
value: isString,
|
|
47
|
+
girFiles: arrayGuard(isString),
|
|
48
|
+
libraries: arrayGuard(isString),
|
|
49
|
+
girPath: optionalGuard(arrayGuard(isString)),
|
|
50
|
+
});
|
|
51
|
+
const isDocsFingerprint = (value) => hasFields(value, { value: isString, gi: isGiFingerprint });
|
|
52
|
+
const isJsxFingerprint = (value) => hasFields(value, { value: isString, intrinsicElementCount: isNumber });
|
|
53
|
+
const recordedGiValue = (sentinel, libraries, girPath) => {
|
|
55
54
|
if (!hasMatchingRecordedInputs(sentinel, libraries, girPath)) {
|
|
56
|
-
return
|
|
55
|
+
return undefined;
|
|
57
56
|
}
|
|
58
57
|
try {
|
|
59
|
-
return hashGi(sentinel.girFiles, sentinel.libraries, girPath)
|
|
58
|
+
return hashGi(sentinel.girFiles, sentinel.libraries, girPath);
|
|
60
59
|
}
|
|
61
60
|
catch {
|
|
62
|
-
return
|
|
61
|
+
return undefined;
|
|
63
62
|
}
|
|
64
63
|
};
|
|
64
|
+
const isGiStoreFresh = (giStoreDir, libraries, girPath) => {
|
|
65
|
+
const sentinel = readSentinel(giStoreDir);
|
|
66
|
+
return isGiFingerprint(sentinel) && recordedGiValue(sentinel, libraries, girPath) === sentinel.value;
|
|
67
|
+
};
|
|
65
68
|
const hasMatchingRecordedInputs = (sentinel, libraries, girPath) => sortAlpha(sentinel.libraries) === sortAlpha(libraries) && sortAlpha(sentinel.girPath ?? []) === sortAlpha(girPath);
|
|
69
|
+
const hashDocs = (giValue, input) => createHash("sha256")
|
|
70
|
+
.update(JSON.stringify([
|
|
71
|
+
giValue,
|
|
72
|
+
input.basePath,
|
|
73
|
+
serializeModuleExports(input.props),
|
|
74
|
+
serializeOmittedProps(input.omittedProps),
|
|
75
|
+
]))
|
|
76
|
+
.digest("hex");
|
|
77
|
+
const computeDocsFingerprint = (girFiles, libraries, girPath, input) => {
|
|
78
|
+
const gi = computeGiFingerprint(girFiles, libraries, girPath);
|
|
79
|
+
return { value: hashDocs(gi.value, input), gi };
|
|
80
|
+
};
|
|
81
|
+
const isDocsOutputFresh = (outDir, libraries, girPath, input) => {
|
|
82
|
+
const sentinel = readSentinel(outDir);
|
|
83
|
+
if (!isDocsFingerprint(sentinel)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const giValue = recordedGiValue(sentinel.gi, libraries, girPath);
|
|
87
|
+
return giValue !== undefined && hashDocs(giValue, input) === sentinel.value;
|
|
88
|
+
};
|
|
66
89
|
const serializeModuleExports = (map) => sortStrings(Object.keys(map)).map((type) => [type, map[type]?.module ?? "", map[type]?.export ?? ""]);
|
|
67
90
|
const serializeOmittedProps = (map) => sortStrings(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);
|
|
68
91
|
const hashJsx = (input) => createHash("sha256")
|
|
@@ -80,20 +103,13 @@ const computeJsxFingerprint = (input, intrinsicElementCount) => ({
|
|
|
80
103
|
intrinsicElementCount,
|
|
81
104
|
});
|
|
82
105
|
const jsxStoreFreshness = (jsxStoreDir, input) => {
|
|
83
|
-
const
|
|
84
|
-
if (!
|
|
85
|
-
return { isFresh: false, intrinsicElementCount: 0 };
|
|
86
|
-
}
|
|
87
|
-
let sentinel;
|
|
88
|
-
try {
|
|
89
|
-
sentinel = JSON.parse(readFileSync(sentinelPath, "utf8"));
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
106
|
+
const sentinel = readSentinel(jsxStoreDir);
|
|
107
|
+
if (!isJsxFingerprint(sentinel)) {
|
|
92
108
|
return { isFresh: false, intrinsicElementCount: 0 };
|
|
93
109
|
}
|
|
94
110
|
return sentinel.value === hashJsx(input)
|
|
95
111
|
? { isFresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }
|
|
96
112
|
: { isFresh: false, intrinsicElementCount: 0 };
|
|
97
113
|
};
|
|
98
|
-
export { FINGERPRINT_FILENAME, computeGiFingerprint, isGiStoreFresh, computeJsxFingerprint, jsxStoreFreshness, };
|
|
114
|
+
export { FINGERPRINT_FILENAME, computeGiFingerprint, computeDocsFingerprint, isGiStoreFresh, isDocsOutputFresh, computeJsxFingerprint, jsxStoreFreshness, };
|
|
99
115
|
//# sourceMappingURL=fingerprint.js.map
|
package/dist/fingerprint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport { createHash } from \"node:crypto\";\nimport { type Dirent, existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\ntype GiFingerprint = {\n value: string;\n girFiles: string[];\n libraries: string[];\n girPath?: string[];\n};\n\ntype ModuleExport = { module: string; export: string };\n\ntype JsxFingerprintInput = {\n reactVersion: string;\n components: Record<string, ModuleExport>;\n lazyElements: string[];\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype JsxFingerprint = {\n value: string;\n intrinsicElementCount: number;\n};\n\nconst require = createRequire(import.meta.url);\nconst FINGERPRINT_FILENAME = \".codegen-fingerprint.json\";\nconst CODEGEN_VERSION: string = (require(\"../package.json\") as { version: string }).version;\nconst OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \"..\", \"overrides\");\n\nconst sortAlpha = (values: string[]): string => sortStrings(values).join(\",\");\n\nconst overrideFiles = (): string[] => {\n if (!existsSync(OVERRIDES_ROOT)) {\n return [];\n }\n\n return readdirSync(OVERRIDES_ROOT, { recursive: true, withFileTypes: true })\n .filter((entry: Dirent) => entry.isFile())\n .map((entry: Dirent) => join(entry.parentPath, entry.name));\n};\n\nconst hashGi = (girFiles: string[], libraries: string[], girPath: string[]): string => {\n const hash = createHash(\"sha256\");\n hash.update(CODEGEN_VERSION);\n hash.update(\"\\n\");\n hash.update(sortAlpha(libraries));\n hash.update(\"\\n\");\n hash.update(sortAlpha(girPath));\n hash.update(\"\\n\");\n const hashedFiles = sortStrings([...girFiles, ...overrideFiles()]);\n\n for (const file of hashedFiles) {\n hash.update(\"\\n\");\n hash.update(file);\n hash.update(\"\\0\");\n hash.update(readFileSync(file));\n }\n\n return hash.digest(\"hex\");\n};\n\nconst computeGiFingerprint = (\n girFiles: string[],\n libraries: string[],\n girPath: string[],\n): GiFingerprint => ({\n value: hashGi(girFiles, libraries, girPath),\n girFiles,\n libraries,\n girPath,\n});\n\nconst isGiStoreFresh = (\n giStoreDir: string,\n libraries: string[],\n girPath: string[],\n): boolean => {\n const sentinelPath = join(giStoreDir, FINGERPRINT_FILENAME);\n\n if (!existsSync(sentinelPath)) {\n return false;\n }\n\n let sentinel: GiFingerprint;\n\n try {\n sentinel = JSON.parse(readFileSync(sentinelPath, \"utf8\")) as GiFingerprint;\n } catch {\n return false;\n }\n\n if (!hasMatchingRecordedInputs(sentinel, libraries, girPath)) {\n return false;\n }\n\n try {\n return hashGi(sentinel.girFiles, sentinel.libraries, girPath) === sentinel.value;\n } catch {\n return false;\n }\n};\n\nconst hasMatchingRecordedInputs = (sentinel: GiFingerprint, libraries: string[], girPath: string[]): boolean =>\n sortAlpha(sentinel.libraries) === sortAlpha(libraries) && sortAlpha(sentinel.girPath ?? []) === sortAlpha(girPath);\n\nconst serializeModuleExports = (map: Record<string, ModuleExport>): [string, string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, map[type]?.module ?? \"\", map[type]?.export ?? \"\"]);\n\nconst serializeOmittedProps = (map: Record<string, string[]>): [string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);\n\nconst hashJsx = (input: JsxFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n CODEGEN_VERSION,\n input.reactVersion,\n serializeModuleExports(input.components),\n sortStrings(input.lazyElements),\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeJsxFingerprint = (input: JsxFingerprintInput, intrinsicElementCount: number): JsxFingerprint => ({\n value: hashJsx(input),\n intrinsicElementCount,\n});\n\nconst jsxStoreFreshness = (\n jsxStoreDir: string,\n input: JsxFingerprintInput,\n): { isFresh: boolean; intrinsicElementCount: number } => {\n const sentinelPath = join(jsxStoreDir, FINGERPRINT_FILENAME);\n\n if (!existsSync(sentinelPath)) {\n return { isFresh: false, intrinsicElementCount: 0 };\n }\n\n let sentinel: JsxFingerprint;\n\n try {\n sentinel = JSON.parse(readFileSync(sentinelPath, \"utf8\")) as JsxFingerprint;\n } catch {\n return { isFresh: false, intrinsicElementCount: 0 };\n }\n\n return sentinel.value === hashJsx(input)\n ? { isFresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }\n : { isFresh: false, intrinsicElementCount: 0 };\n};\n\nexport {\n FINGERPRINT_FILENAME,\n computeGiFingerprint,\n isGiStoreFresh,\n computeJsxFingerprint,\n jsxStoreFreshness,\n type GiFingerprint,\n type JsxFingerprintInput,\n type JsxFingerprint,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport { createHash } from \"node:crypto\";\nimport { type Dirent, existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { arrayGuard, hasFields, isNumber, isString, optionalGuard } from \"./guards.js\";\nimport { readJsonFile } from \"./json.js\";\n\ntype GiFingerprint = {\n value: string;\n girFiles: string[];\n libraries: string[];\n girPath?: string[];\n};\n\ntype ModuleExport = { module: string; export: string };\n\ntype DocsFingerprintInput = {\n basePath: string;\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype DocsFingerprint = {\n value: string;\n gi: GiFingerprint;\n};\n\ntype JsxFingerprintInput = {\n reactVersion: string;\n components: Record<string, ModuleExport>;\n lazyElements: string[];\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype JsxFingerprint = {\n value: string;\n intrinsicElementCount: number;\n};\n\nconst FINGERPRINT_FILENAME = \".codegen-fingerprint.json\";\nconst CODEGEN_VERSION: string = packageManifest.version;\nconst OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \"..\", \"overrides\");\n\nconst sortAlpha = (values: string[]): string => sortStrings(values).join(\",\");\n\nconst overrideFiles = (): string[] => {\n if (!existsSync(OVERRIDES_ROOT)) {\n return [];\n }\n\n return readdirSync(OVERRIDES_ROOT, { recursive: true, withFileTypes: true })\n .filter((entry: Dirent) => entry.isFile())\n .map((entry: Dirent) => join(entry.parentPath, entry.name));\n};\n\nconst hashGi = (girFiles: string[], libraries: string[], girPath: string[]): string => {\n const hash = createHash(\"sha256\");\n hash.update(CODEGEN_VERSION);\n hash.update(\"\\n\");\n hash.update(sortAlpha(libraries));\n hash.update(\"\\n\");\n hash.update(sortAlpha(girPath));\n hash.update(\"\\n\");\n const hashedFiles = sortStrings([...girFiles, ...overrideFiles()]);\n\n for (const file of hashedFiles) {\n hash.update(\"\\n\");\n hash.update(file);\n hash.update(\"\\0\");\n hash.update(readFileSync(file));\n }\n\n return hash.digest(\"hex\");\n};\n\nconst computeGiFingerprint = (\n girFiles: string[],\n libraries: string[],\n girPath: string[],\n): GiFingerprint => ({\n value: hashGi(girFiles, libraries, girPath),\n girFiles,\n libraries,\n girPath,\n});\n\nconst readSentinel = (storeDir: string): unknown => readJsonFile(join(storeDir, FINGERPRINT_FILENAME));\n\nconst isGiFingerprint = (value: unknown): value is GiFingerprint =>\n hasFields<GiFingerprint>(value, {\n value: isString,\n girFiles: arrayGuard(isString),\n libraries: arrayGuard(isString),\n girPath: optionalGuard(arrayGuard(isString)),\n });\n\nconst isDocsFingerprint = (value: unknown): value is DocsFingerprint =>\n hasFields<DocsFingerprint>(value, { value: isString, gi: isGiFingerprint });\n\nconst isJsxFingerprint = (value: unknown): value is JsxFingerprint =>\n hasFields<JsxFingerprint>(value, { value: isString, intrinsicElementCount: isNumber });\n\nconst recordedGiValue = (sentinel: GiFingerprint, libraries: string[], girPath: string[]): string | undefined => {\n if (!hasMatchingRecordedInputs(sentinel, libraries, girPath)) {\n return undefined;\n }\n\n try {\n return hashGi(sentinel.girFiles, sentinel.libraries, girPath);\n } catch {\n return undefined;\n }\n};\n\nconst isGiStoreFresh = (\n giStoreDir: string,\n libraries: string[],\n girPath: string[],\n): boolean => {\n const sentinel = readSentinel(giStoreDir);\n\n return isGiFingerprint(sentinel) && recordedGiValue(sentinel, libraries, girPath) === sentinel.value;\n};\n\nconst hasMatchingRecordedInputs = (sentinel: GiFingerprint, libraries: string[], girPath: string[]): boolean =>\n sortAlpha(sentinel.libraries) === sortAlpha(libraries) && sortAlpha(sentinel.girPath ?? []) === sortAlpha(girPath);\n\nconst hashDocs = (giValue: string, input: DocsFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n giValue,\n input.basePath,\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeDocsFingerprint = (\n girFiles: string[],\n libraries: string[],\n girPath: string[],\n input: DocsFingerprintInput,\n): DocsFingerprint => {\n const gi = computeGiFingerprint(girFiles, libraries, girPath);\n\n return { value: hashDocs(gi.value, input), gi };\n};\n\nconst isDocsOutputFresh = (\n outDir: string,\n libraries: string[],\n girPath: string[],\n input: DocsFingerprintInput,\n): boolean => {\n const sentinel = readSentinel(outDir);\n\n if (!isDocsFingerprint(sentinel)) {\n return false;\n }\n\n const giValue = recordedGiValue(sentinel.gi, libraries, girPath);\n\n return giValue !== undefined && hashDocs(giValue, input) === sentinel.value;\n};\n\nconst serializeModuleExports = (map: Record<string, ModuleExport>): [string, string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, map[type]?.module ?? \"\", map[type]?.export ?? \"\"]);\n\nconst serializeOmittedProps = (map: Record<string, string[]>): [string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);\n\nconst hashJsx = (input: JsxFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n CODEGEN_VERSION,\n input.reactVersion,\n serializeModuleExports(input.components),\n sortStrings(input.lazyElements),\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeJsxFingerprint = (input: JsxFingerprintInput, intrinsicElementCount: number): JsxFingerprint => ({\n value: hashJsx(input),\n intrinsicElementCount,\n});\n\nconst jsxStoreFreshness = (\n jsxStoreDir: string,\n input: JsxFingerprintInput,\n): { isFresh: boolean; intrinsicElementCount: number } => {\n const sentinel = readSentinel(jsxStoreDir);\n\n if (!isJsxFingerprint(sentinel)) {\n return { isFresh: false, intrinsicElementCount: 0 };\n }\n\n return sentinel.value === hashJsx(input)\n ? { isFresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }\n : { isFresh: false, intrinsicElementCount: 0 };\n};\n\nexport {\n FINGERPRINT_FILENAME,\n computeGiFingerprint,\n computeDocsFingerprint,\n isGiStoreFresh,\n isDocsOutputFresh,\n computeJsxFingerprint,\n jsxStoreFreshness,\n type DocsFingerprintInput,\n type GiFingerprint,\n type JsxFingerprintInput,\n};\n"]}
|
package/dist/gi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gi.d.ts","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,KAAK,gBAAgB,GAAG;IACpB,EAAE,EAAE,YAAY,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,SAAS,gBAAgB,KAAG,
|
|
1
|
+
{"version":3,"file":"gi.d.ts","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,KAAK,gBAAgB,GAAG;IACpB,EAAE,EAAE,YAAY,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,SAAS,gBAAgB,KAAG,MAanE,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/gi.js
CHANGED
|
@@ -7,6 +7,7 @@ const runGiCodegen = (library, options) => {
|
|
|
7
7
|
const namespaces = Array.from(library.namespaces.values(), (namespace) => ({
|
|
8
8
|
directory: namespaceDirectory(namespace),
|
|
9
9
|
rawSource: generateNamespaceModule(namespace, library),
|
|
10
|
+
girFile: namespace.girFile,
|
|
10
11
|
}));
|
|
11
12
|
const fingerprint = computeGiFingerprint(library.girFiles, [...libraries], [...girPath]);
|
|
12
13
|
writeGiStore(gi, namespaces, fingerprint);
|
package/dist/gi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gi.js","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAyB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAQjE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,OAAyB,EAAU,EAAE;IACzE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,UAAU,GAAuB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3F,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"gi.js","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAyB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAQjE,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,OAAyB,EAAU,EAAE;IACzE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,UAAU,GAAuB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3F,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC;QACtD,OAAO,EAAE,SAAS,CAAC,OAAO;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IACzF,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE1C,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import type { Library } from \"./gir/library.js\";\nimport type { StoreOptions } from \"./store/store-fs.js\";\nimport { computeGiFingerprint } from \"./fingerprint.js\";\nimport { namespaceDirectory } from \"./gir/namespace.js\";\nimport { type GiNamespaceInput, writeGiStore } from \"./store/gi-store.js\";\nimport { generateNamespaceModule } from \"./store/gi/pipeline.js\";\n\ntype GiCodegenOptions = {\n gi: StoreOptions;\n libraries: string[];\n girPath: string[];\n};\n\nconst runGiCodegen = (library: Library, options: GiCodegenOptions): number => {\n const { gi, libraries, girPath } = options;\n\n const namespaces: GiNamespaceInput[] = Array.from(library.namespaces.values(), (namespace) => ({\n directory: namespaceDirectory(namespace),\n rawSource: generateNamespaceModule(namespace, library),\n girFile: namespace.girFile,\n }));\n\n const fingerprint = computeGiFingerprint(library.girFiles, [...libraries], [...girPath]);\n writeGiStore(gi, namespaces, fingerprint);\n\n return library.namespaces.size;\n};\n\nexport { runGiCodegen };\n"]}
|
package/dist/gir/ancestry.d.ts
CHANGED
|
@@ -4,7 +4,13 @@ type ResolvedAncestor = {
|
|
|
4
4
|
klass: GirClass;
|
|
5
5
|
namespaceName: string;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type ParentRef = {
|
|
8
|
+
namespaceName: string | undefined;
|
|
9
|
+
typeName: string;
|
|
10
|
+
};
|
|
11
|
+
declare const getParentRef: (klass: GirClass) => ParentRef | undefined;
|
|
12
|
+
declare const resolveClassOrInterface: (library: Library, defaultNamespace: string, name: string) => ResolvedAncestor | undefined;
|
|
13
|
+
declare const resolveInterfaces: (library: Library, defaultNamespace: string, names: string[]) => ResolvedAncestor[];
|
|
8
14
|
declare function ancestorChain(library: Library, klass: GirClass, namespaceName: string): Generator<ResolvedAncestor>;
|
|
9
|
-
export {
|
|
15
|
+
export { resolveClassOrInterface, resolveInterfaces, ancestorChain, getParentRef, type ResolvedAncestor };
|
|
10
16
|
//# sourceMappingURL=ancestry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ancestry.d.ts","sourceRoot":"","sources":["../../src/gir/ancestry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ancestry.d.ts","sourceRoot":"","sources":["../../src/gir/ancestry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,KAAK,gBAAgB,GAAG;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,OAAO,QAAQ,KAAG,SAAS,GAAG,SAQnD,CAAC;AAOF,QAAA,MAAM,uBAAuB,GACzB,SAAS,OAAO,EAChB,kBAAkB,MAAM,EACxB,MAAM,MAAM,KACb,gBAAgB,GAAG,SAAqE,CAAC;AAY5F,QAAA,MAAM,iBAAiB,GAAI,SAAS,OAAO,EAAE,kBAAkB,MAAM,EAAE,OAAO,MAAM,EAAE,KAAG,gBAAgB,EAYxG,CAAC;AAEF,iBAAU,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAoB7G;AAED,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|
package/dist/gir/ancestry.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import { splitOptionalNamespace } from "./type-ref.js";
|
|
2
|
+
const getParentRef = (klass) => {
|
|
3
|
+
if (klass.parent === undefined) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
const [namespaceName, typeName] = splitOptionalNamespace(klass.parent);
|
|
7
|
+
return { namespaceName, typeName };
|
|
8
|
+
};
|
|
1
9
|
const getAncestor = (resolved) => resolved !== undefined && (resolved.kind === "class" || resolved.kind === "interface")
|
|
2
10
|
? { klass: resolved.value, namespaceName: resolved.namespace.name }
|
|
3
11
|
: undefined;
|
|
@@ -6,6 +14,16 @@ const resolveInterface = (library, defaultNamespace, name) => {
|
|
|
6
14
|
const resolved = library.resolveType(defaultNamespace, name);
|
|
7
15
|
return resolved?.kind === "interface" ? getAncestor(resolved) : undefined;
|
|
8
16
|
};
|
|
17
|
+
const resolveInterfaces = (library, defaultNamespace, names) => {
|
|
18
|
+
const interfaces = [];
|
|
19
|
+
for (const name of names) {
|
|
20
|
+
const iface = resolveInterface(library, defaultNamespace, name);
|
|
21
|
+
if (iface !== undefined) {
|
|
22
|
+
interfaces.push(iface);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return interfaces;
|
|
26
|
+
};
|
|
9
27
|
function* ancestorChain(library, klass, namespaceName) {
|
|
10
28
|
const visited = new Set();
|
|
11
29
|
let current = { klass, namespaceName };
|
|
@@ -22,5 +40,5 @@ function* ancestorChain(library, klass, namespaceName) {
|
|
|
22
40
|
current = resolveClassOrInterface(library, current.namespaceName, current.klass.parent);
|
|
23
41
|
}
|
|
24
42
|
}
|
|
25
|
-
export {
|
|
43
|
+
export { resolveClassOrInterface, resolveInterfaces, ancestorChain, getParentRef };
|
|
26
44
|
//# sourceMappingURL=ancestry.js.map
|
package/dist/gir/ancestry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ancestry.js","sourceRoot":"","sources":["../../src/gir/ancestry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ancestry.js","sourceRoot":"","sources":["../../src/gir/ancestry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAYvD,MAAM,YAAY,GAAG,CAAC,KAAe,EAAyB,EAAE;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAA6B,EAAgC,EAAE,CAChF,QAAQ,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC;IAClF,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;IACnE,CAAC,CAAC,SAAS,CAAC;AAEpB,MAAM,uBAAuB,GAAG,CAC5B,OAAgB,EAChB,gBAAwB,EACxB,IAAY,EACgB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;AAE5F,MAAM,gBAAgB,GAAG,CACrB,OAAgB,EAChB,gBAAwB,EACxB,IAAY,EACgB,EAAE;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAE7D,OAAO,QAAQ,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAE,gBAAwB,EAAE,KAAe,EAAsB,EAAE;IAC1G,MAAM,UAAU,GAAuB,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AAEF,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAgB,EAAE,KAAe,EAAE,aAAqB;IAC5E,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACvC,IAAI,OAAO,GAAiC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IAErE,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7D,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,OAAO,CAAC;QAEd,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO;QACX,CAAC;QAED,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;AACL,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAyB,CAAC","sourcesContent":["import type { GirClass } from \"./class.js\";\nimport type { Library } from \"./library.js\";\nimport type { GirType } from \"./type.js\";\nimport { splitOptionalNamespace } from \"./type-ref.js\";\n\ntype ResolvedAncestor = {\n klass: GirClass;\n namespaceName: string;\n};\n\ntype ParentRef = {\n namespaceName: string | undefined;\n typeName: string;\n};\n\nconst getParentRef = (klass: GirClass): ParentRef | undefined => {\n if (klass.parent === undefined) {\n return undefined;\n }\n\n const [namespaceName, typeName] = splitOptionalNamespace(klass.parent);\n\n return { namespaceName, typeName };\n};\n\nconst getAncestor = (resolved: GirType | undefined): ResolvedAncestor | undefined =>\n resolved !== undefined && (resolved.kind === \"class\" || resolved.kind === \"interface\")\n ? { klass: resolved.value, namespaceName: resolved.namespace.name }\n : undefined;\n\nconst resolveClassOrInterface = (\n library: Library,\n defaultNamespace: string,\n name: string,\n): ResolvedAncestor | undefined => getAncestor(library.resolveType(defaultNamespace, name));\n\nconst resolveInterface = (\n library: Library,\n defaultNamespace: string,\n name: string,\n): ResolvedAncestor | undefined => {\n const resolved = library.resolveType(defaultNamespace, name);\n\n return resolved?.kind === \"interface\" ? getAncestor(resolved) : undefined;\n};\n\nconst resolveInterfaces = (library: Library, defaultNamespace: string, names: string[]): ResolvedAncestor[] => {\n const interfaces: ResolvedAncestor[] = [];\n\n for (const name of names) {\n const iface = resolveInterface(library, defaultNamespace, name);\n\n if (iface !== undefined) {\n interfaces.push(iface);\n }\n }\n\n return interfaces;\n};\n\nfunction* ancestorChain(library: Library, klass: GirClass, namespaceName: string): Generator<ResolvedAncestor> {\n const visited: Set<string> = new Set();\n let current: ResolvedAncestor | undefined = { klass, namespaceName };\n\n while (current !== undefined) {\n const key = `${current.namespaceName}.${current.klass.name}`;\n\n if (visited.has(key)) {\n return;\n }\n\n visited.add(key);\n yield current;\n\n if (current.klass.parent === undefined) {\n return;\n }\n\n current = resolveClassOrInterface(library, current.namespaceName, current.klass.parent);\n }\n}\n\nexport { resolveClassOrInterface, resolveInterfaces, ancestorChain, getParentRef, type ResolvedAncestor };\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type RawNode } from "./parse.js";
|
|
2
|
+
/** Release and deprecation annotations GIR carries on a documentable element. */
|
|
3
|
+
type GirAnnotations = {
|
|
4
|
+
/** Library release the symbol appeared in, from the `version` attribute. */
|
|
5
|
+
since: string | undefined;
|
|
6
|
+
/** Whether GIR marks the symbol deprecated. */
|
|
7
|
+
isDeprecated: boolean;
|
|
8
|
+
/** Release the symbol was deprecated in, from the `deprecated-version` attribute. */
|
|
9
|
+
deprecatedSince: string | undefined;
|
|
10
|
+
/** Prose from `<doc-deprecated>` naming what to use instead. */
|
|
11
|
+
deprecationDoc: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
type DocumentedNode = {
|
|
14
|
+
name: string;
|
|
15
|
+
doc: string | undefined;
|
|
16
|
+
annotations: GirAnnotations;
|
|
17
|
+
};
|
|
18
|
+
declare const documentedFromNode: (node: RawNode) => DocumentedNode;
|
|
19
|
+
declare const hasAnnotations: (annotations: GirAnnotations) => boolean;
|
|
20
|
+
export { documentedFromNode, hasAnnotations, type GirAnnotations };
|
|
21
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/gir/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEhG,iFAAiF;AACjF,KAAK,cAAc,GAAG;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;IACtB,qFAAqF;IACrF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,gEAAgE;IAChE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,WAAW,EAAE,cAAc,CAAC;CAC/B,CAAC;AASF,QAAA,MAAM,kBAAkB,GAAI,MAAM,OAAO,KAAG,cAI1C,CAAC;AAEH,QAAA,MAAM,cAAc,GAAI,aAAa,cAAc,KAAG,OACsD,CAAC;AAE7G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { attr, getDoc, getDocDeprecated, isAttrTrue, nameAttr } from "./parse.js";
|
|
2
|
+
const annotationsFromNode = (node) => ({
|
|
3
|
+
since: attr(node, "version"),
|
|
4
|
+
isDeprecated: isAttrTrue(node, "deprecated"),
|
|
5
|
+
deprecatedSince: attr(node, "deprecated-version"),
|
|
6
|
+
deprecationDoc: getDocDeprecated(node),
|
|
7
|
+
});
|
|
8
|
+
const documentedFromNode = (node) => ({
|
|
9
|
+
name: nameAttr(node),
|
|
10
|
+
doc: getDoc(node),
|
|
11
|
+
annotations: annotationsFromNode(node),
|
|
12
|
+
});
|
|
13
|
+
const hasAnnotations = (annotations) => annotations.since !== undefined || annotations.isDeprecated || annotations.deprecatedSince !== undefined;
|
|
14
|
+
export { documentedFromNode, hasAnnotations };
|
|
15
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/gir/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AAoBhG,MAAM,mBAAmB,GAAG,CAAC,IAAyB,EAAkB,EAAE,CAAC,CAAC;IACxE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;IAC5B,YAAY,EAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5C,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACjD,cAAc,EAAE,gBAAgB,CAAC,IAAI,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAkB,EAAE,CAAC,CAAC;IAC3D,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;IACjB,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,WAA2B,EAAW,EAAE,CAC5D,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,CAAC;AAE7G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAuB,CAAC","sourcesContent":["import { attr, getDoc, getDocDeprecated, isAttrTrue, nameAttr, type RawNode } from \"./parse.js\";\n\n/** Release and deprecation annotations GIR carries on a documentable element. */\ntype GirAnnotations = {\n /** Library release the symbol appeared in, from the `version` attribute. */\n since: string | undefined;\n /** Whether GIR marks the symbol deprecated. */\n isDeprecated: boolean;\n /** Release the symbol was deprecated in, from the `deprecated-version` attribute. */\n deprecatedSince: string | undefined;\n /** Prose from `<doc-deprecated>` naming what to use instead. */\n deprecationDoc: string | undefined;\n};\n\ntype DocumentedNode = {\n name: string;\n doc: string | undefined;\n annotations: GirAnnotations;\n};\n\nconst annotationsFromNode = (node: RawNode | undefined): GirAnnotations => ({\n since: attr(node, \"version\"),\n isDeprecated: isAttrTrue(node, \"deprecated\"),\n deprecatedSince: attr(node, \"deprecated-version\"),\n deprecationDoc: getDocDeprecated(node),\n});\n\nconst documentedFromNode = (node: RawNode): DocumentedNode => ({\n name: nameAttr(node),\n doc: getDoc(node),\n annotations: annotationsFromNode(node),\n});\n\nconst hasAnnotations = (annotations: GirAnnotations): boolean =>\n annotations.since !== undefined || annotations.isDeprecated || annotations.deprecatedSince !== undefined;\n\nexport { documentedFromNode, hasAnnotations, type GirAnnotations };\n"]}
|
package/dist/gir/callback.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { GirFunction } from "./function.js";
|
|
|
2
2
|
import type { RawNode } from "./parse.js";
|
|
3
3
|
import type { ParseContext } from "./type-id.js";
|
|
4
4
|
import { type GirCallable } from "./parameter.js";
|
|
5
|
+
/** The signature of a function pointer type GIR declares, whether named or anonymous. */
|
|
5
6
|
type GirCallback = GirCallable;
|
|
6
7
|
declare const callbackFromNode: (node: RawNode, context: ParseContext) => GirCallback;
|
|
7
8
|
declare const callbackAsFunction: (callback: GirCallback) => GirFunction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/gir/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AAEjE,KAAK,WAAW,GAAG,WAAW,CAAC;AAE/B,QAAA,MAAM,gBAAgB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAA2C,CAAC;AAE7G,QAAA,MAAM,kBAAkB,GAAI,UAAU,WAAW,KAAG,
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/gir/callback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AAEjE,yFAAyF;AACzF,KAAK,WAAW,GAAG,WAAW,CAAC;AAE/B,QAAA,MAAM,gBAAgB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAA2C,CAAC;AAE7G,QAAA,MAAM,kBAAkB,GAAI,UAAU,WAAW,KAAG,WAalD,CAAC;AAEH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,CAAC"}
|