@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":"metadata.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAoCpD,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,MAyB5C,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAoCpD,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,MAyB5C,CAAC;AAmUF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -25,10 +25,12 @@ const generateMetadata = (library) => {
|
|
|
25
25
|
};
|
|
26
26
|
const collectIntrinsicElements = (library) => {
|
|
27
27
|
const entries = [];
|
|
28
|
+
const seen = new Set();
|
|
28
29
|
for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {
|
|
29
|
-
if (!isIntrinsicElementClass(klass, namespace, library)) {
|
|
30
|
+
if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {
|
|
30
31
|
continue;
|
|
31
32
|
}
|
|
33
|
+
seen.add(glibName);
|
|
32
34
|
const sources = [
|
|
33
35
|
klass,
|
|
34
36
|
...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),
|
|
@@ -237,8 +239,8 @@ const primitiveDefaultLiteral = (category, raw) => {
|
|
|
237
239
|
}
|
|
238
240
|
};
|
|
239
241
|
const bigintDefaultLiteral = (raw) => {
|
|
240
|
-
const
|
|
241
|
-
return
|
|
242
|
+
const integer = integerDefaultLiteral(raw);
|
|
243
|
+
return integer === undefined ? undefined : `${integer}n`;
|
|
242
244
|
};
|
|
243
245
|
const enumDefaultLiteral = (enumType, raw) => {
|
|
244
246
|
const trimmed = raw.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport { inputParameters } from \"../../analysis/param-structure.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport {\n implementedInterfaces,\n isIntrinsicElementClass,\n iterateClassesWithGlibName,\n signalHandlerName,\n} from \"./intrinsic-elements.js\";\n\ntype IntrinsicElementEntry = {\n glibName: string;\n signals: [string, string][];\n constructOnly: string[];\n constructable: string[];\n defaults: [string, string][];\n};\n\ntype PropNameCollector = {\n shouldKeep: (property: GirProperty) => boolean;\n seen: Set<string>;\n names: string[];\n};\n\ntype DefaultPropsCollector = {\n library: Library;\n seen: Set<string>;\n defaults: [string, string][];\n};\n\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst FLOAT_PATTERN = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\n\nconst generateMetadata = (library: Library): string => {\n const intrinsicElements = collectIntrinsicElements(library);\n\n const signalsEntries = intrinsicElements.map(\n ({ glibName, signals }) => ` \"${glibName}\": ${renderSignalsObject(signals)},`,\n );\n\n const constructOnlyEntries = intrinsicElements\n .filter(({ constructOnly }) => constructOnly.length > 0)\n .map(({ glibName, constructOnly }) => ` \"${glibName}\": ${renderStringSet(constructOnly)},`);\n\n const constructableEntries = intrinsicElements\n .filter(({ constructable }) => constructable.length > 0)\n .map(({ glibName, constructable }) => ` \"${glibName}\": ${renderStringSet(constructable)},`);\n\n const defaultsEntries = intrinsicElements\n .filter(({ defaults }) => defaults.length > 0)\n .map(({ glibName, defaults }) => ` \"${glibName}\": ${renderDefaultsObject(defaults)},`);\n\n return `${[\n `export const signals: Record<string, Record<string, string>> = {\\n${signalsEntries.join(\"\\n\")}\\n};`,\n `export const constructOnlyProps: Record<string, Set<string>> = {\\n${constructOnlyEntries.join(\"\\n\")}\\n};`,\n `export const constructProps: Record<string, Set<string>> = {\\n${constructableEntries.join(\"\\n\")}\\n};`,\n `export const defaultProps: Record<string, Record<string, unknown>> = {\\n${defaultsEntries.join(\"\\n\")}\\n};`,\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst collectIntrinsicElements = (library: Library): IntrinsicElementEntry[] => {\n const entries: IntrinsicElementEntry[] = [];\n\n for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {\n if (!isIntrinsicElementClass(klass, namespace, library)) {\n continue;\n }\n\n const sources: GirClass[] = [\n klass,\n ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),\n ];\n\n entries.push({\n glibName,\n signals: collectSignals(sources),\n constructOnly: collectConstructOnly(sources),\n constructable: collectConstructable(sources),\n defaults: collectDefaultProps(library, sources),\n });\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nconst collectSignalsFromSource = (source: GirClass, seen: Set<string>, signals: [string, string][]): void => {\n for (const signal of source.signals) {\n const handlerName = signalHandlerName(signal.name);\n\n if (seen.has(handlerName)) {\n continue;\n }\n\n seen.add(handlerName);\n signals.push([handlerName, signal.name] as const);\n }\n};\n\nconst collectSignals = (sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const signals: [string, string][] = [];\n\n for (const source of sources) {\n collectSignalsFromSource(source, seen, signals);\n }\n\n return signals;\n};\n\nconst collectPropNamesFromSource = (source: GirClass, collector: PropNameCollector): void => {\n const { shouldKeep, seen, names } = collector;\n\n for (const property of source.properties) {\n if (!shouldKeep(property)) {\n continue;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n continue;\n }\n\n seen.add(jsName);\n names.push(jsName);\n }\n};\n\nconst collectPropNames = (sources: GirClass[], shouldKeep: (property: GirProperty) => boolean): string[] => {\n const collector: PropNameCollector = { shouldKeep, seen: new Set<string>(), names: [] };\n\n for (const source of sources) {\n collectPropNamesFromSource(source, collector);\n }\n\n return collector.names;\n};\n\nconst collectConstructOnly = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => property.constructOnly && property.introspectable);\n\nconst collectConstructable = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => isConstructableProperty(property) && property.introspectable);\n\nconst renderObjectLiteral = (entries: [string, string][], renderValue: (value: string) => string): string => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);\n\n return `{\\n${lines.join(\",\\n\")}\\n }`;\n};\n\nconst renderStringSet = (names: string[]): string =>\n `new Set([${names.map((name) => sourceStringLiteral(name)).join(\",\")}])`;\n\nconst renderSignalsObject = (entries: [string, string][]): string => renderObjectLiteral(entries, sourceStringLiteral);\n\nconst collectDefaultsFromClass = (klass: GirClass, collector: DefaultPropsCollector): void => {\n for (const property of klass.properties) {\n const entry = defaultPropEntry(collector.library, klass, property, collector.seen);\n\n if (entry !== undefined) {\n collector.defaults.push(entry);\n }\n }\n};\n\nconst collectDefaultProps = (library: Library, sources: GirClass[]): [string, string][] => {\n const collector: DefaultPropsCollector = { library, seen: new Set<string>(), defaults: [] };\n\n for (const klass of sources) {\n collectDefaultsFromClass(klass, collector);\n }\n\n return collector.defaults;\n};\n\nconst isDefaultCandidate = (property: GirProperty): boolean =>\n (property.writable || property.construct) && !property.constructOnly && property.introspectable;\n\nconst defaultPropEntry = (\n library: Library,\n klass: GirClass,\n property: GirProperty,\n seen: Set<string>,\n): [string, string] | undefined => {\n if (!isDefaultCandidate(property)) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n const literal = renderDefaultLiteral(library, klass, property);\n\n if (literal === undefined) {\n return undefined;\n }\n\n return [jsName, literal];\n};\n\nconst willSetterRejectNull = (library: Library, klass: GirClass, property: GirProperty): boolean => {\n if (property.setter === undefined) {\n return false;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return false;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value !== undefined && !value.parameter.nullable && !value.parameter.optional;\n};\n\nconst setterValueRef = (library: Library, klass: GirClass, property: GirProperty): TypeId | undefined => {\n if (property.setter === undefined) {\n return undefined;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return undefined;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value?.parameter.type;\n};\n\nconst renderDefaultLiteral = (library: Library, klass: GirClass, property: GirProperty): string | undefined => {\n if (property.defaultValue === \"NULL\" && willSetterRejectNull(library, klass, property)) {\n return undefined;\n }\n\n const ref = setterValueRef(library, klass, property) ?? property.type;\n\n return resolveDefaultLiteral(library, ref, property.defaultValue);\n};\n\nconst resolveDefaultLiteral = (\n library: Library,\n ref: TypeId | undefined,\n raw: string | undefined,\n): string | undefined => {\n if (raw === undefined) {\n return undefined;\n }\n\n if (raw === \"NULL\") {\n return \"null\";\n }\n\n if (ref === undefined) {\n return undefined;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n return resolveTypeDefaultLiteral(library, resolved, raw);\n};\n\nconst resolveTypeDefaultLiteral = (library: Library, resolved: GirType, raw: string): string | undefined => {\n if (resolved.kind === \"primitive\") {\n return primitiveDefaultLiteral(resolved.category, raw);\n }\n\n if (resolved.kind === \"enum\") {\n return enumDefaultLiteral(resolved.value, raw);\n }\n\n if (resolved.kind === \"alias\") {\n return resolveDefaultLiteral(library, resolved.value.target, raw);\n }\n\n return undefined;\n};\n\nconst booleanDefaultLiteral = (raw: string): string | undefined => {\n if (raw === \"TRUE\") {\n return \"true\";\n }\n\n if (raw === \"FALSE\") {\n return \"false\";\n }\n\n return undefined;\n};\n\nconst integerDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;\n};\n\nconst floatDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (!FLOAT_PATTERN.test(trimmed)) {\n return undefined;\n }\n\n const value = Number(trimmed);\n\n return Number.isFinite(value) ? String(value) : undefined;\n};\n\nconst primitiveDefaultLiteral = (category: PrimitiveCategory, raw: string): string | undefined => {\n switch (category) {\n case \"boolean\": {\n return booleanDefaultLiteral(raw);\n }\n case \"int8\":\n case \"int16\":\n case \"int32\":\n case \"uint8\":\n case \"uint16\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"unichar\": {\n return integerDefaultLiteral(raw);\n }\n case \"float32\":\n case \"float64\": {\n return floatDefaultLiteral(raw);\n }\n case \"string\": {\n return sourceStringLiteral(raw);\n }\n case \"bigint64\":\n case \"biguint64\":\n case \"gtype\": {\n return bigintDefaultLiteral(raw);\n }\n case \"pointer\":\n case \"void\": {\n return undefined;\n }\n }\n};\n\nconst bigintDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? `${trimmed}n` : undefined;\n};\n\nconst enumDefaultLiteral = (enumType: GirEnum, raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (INTEGER_PATTERN.test(trimmed)) {\n return trimmed;\n }\n\n const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);\n\n return member?.value;\n};\n\nconst renderDefaultsObject = (entries: [string, string][]): string =>\n renderObjectLiteral(entries, (literal) => literal);\n\nexport { generateMetadata };\n"]}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOpF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAoB,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EACH,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAsBjC,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,aAAa,GAAG,+CAA+C,CAAC;AAEtE,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAU,EAAE;IAClD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAE5D,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CACxC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,CACnF,CAAC;IAEF,MAAM,oBAAoB,GAAG,iBAAiB;SACzC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,MAAM,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnG,MAAM,oBAAoB,GAAG,iBAAiB;SACzC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SACvD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,MAAM,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnG,MAAM,eAAe,GAAG,iBAAiB;SACpC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7C,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,QAAQ,MAAM,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9F,OAAO,GAAG;QACN,qEAAqE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QACpG,qEAAqE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QAC1G,iEAAiE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;QACtG,2EAA2E,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;KAC9G,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,OAAgB,EAA2B,EAAE;IAC3E,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAgB,IAAI,GAAG,EAAE,CAAC;IAEpC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5E,SAAS;QACb,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnB,MAAM,OAAO,GAAe;YACxB,KAAK;YACL,GAAG,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;SAClF,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC;YACT,QAAQ;YACR,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;YAChC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;YAC5C,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;YAC5C,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;SAClD,CAAC,CAAC;IACP,CAAC;IAED,OAAO,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,MAAgB,EAAE,IAAiB,EAAE,OAA2B,EAAQ,EAAE;IACxG,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAU,CAAC,CAAC;IACtD,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAAmB,EAAsB,EAAE;IAC/D,MAAM,IAAI,GAAgB,IAAI,GAAG,EAAE,CAAC;IACpC,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,MAAgB,EAAE,SAA4B,EAAQ,EAAE;IACxF,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAE9C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,SAAS;QACb,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAmB,EAAE,UAA8C,EAAY,EAAE;IACvG,MAAM,SAAS,GAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAExF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAmB,EAAY,EAAE,CAC3D,gBAAgB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE/F,MAAM,oBAAoB,GAAG,CAAC,OAAmB,EAAY,EAAE,CAC3D,gBAAgB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE1G,MAAM,mBAAmB,GAAG,CAAC,OAA2B,EAAE,WAAsC,EAAU,EAAE;IACxG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,mBAAmB,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE1G,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAe,EAAU,EAAE,CAChD,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAE7E,MAAM,mBAAmB,GAAG,CAAC,OAA2B,EAAU,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAEvH,MAAM,wBAAwB,GAAG,CAAC,KAAe,EAAE,SAAgC,EAAQ,EAAE;IACzF,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAEnF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,OAAmB,EAAsB,EAAE;IACtF,MAAM,SAAS,GAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE5F,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,QAAqB,EAAW,EAAE,CAC1D,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,cAAc,CAAC;AAEpG,MAAM,gBAAgB,GAAG,CACrB,OAAgB,EAChB,KAAe,EACf,QAAqB,EACrB,IAAiB,EACW,EAAE;IAC9B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE/D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAE,QAAqB,EAAW,EAAE;IAC/F,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAE,QAAqB,EAAsB,EAAE;IACpG,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEjD,OAAO,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,KAAe,EAAE,QAAqB,EAAsB,EAAE;IAC1G,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrF,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAEtE,OAAO,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC1B,OAAgB,EAChB,GAAuB,EACvB,GAAuB,EACL,EAAE;IACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,yBAAyB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,QAAiB,EAAE,GAAW,EAAsB,EAAE;IACvG,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC9D,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,QAA2B,EAAE,GAAW,EAAsB,EAAE;IAC7F,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC7D,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE3C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,QAAiB,EAAE,GAAW,EAAsB,EAAE;IAC9E,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAE3B,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzG,OAAO,MAAM,EAAE,KAAK,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,OAA2B,EAAU,EAAE,CACjE,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport { inputParameters } from \"../../analysis/param-structure.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport {\n implementedInterfaces,\n isIntrinsicElementClass,\n iterateClassesWithGlibName,\n signalHandlerName,\n} from \"./intrinsic-elements.js\";\n\ntype IntrinsicElementEntry = {\n glibName: string;\n signals: [string, string][];\n constructOnly: string[];\n constructable: string[];\n defaults: [string, string][];\n};\n\ntype PropNameCollector = {\n shouldKeep: (property: GirProperty) => boolean;\n seen: Set<string>;\n names: string[];\n};\n\ntype DefaultPropsCollector = {\n library: Library;\n seen: Set<string>;\n defaults: [string, string][];\n};\n\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst FLOAT_PATTERN = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\n\nconst generateMetadata = (library: Library): string => {\n const intrinsicElements = collectIntrinsicElements(library);\n\n const signalsEntries = intrinsicElements.map(\n ({ glibName, signals }) => ` \"${glibName}\": ${renderSignalsObject(signals)},`,\n );\n\n const constructOnlyEntries = intrinsicElements\n .filter(({ constructOnly }) => constructOnly.length > 0)\n .map(({ glibName, constructOnly }) => ` \"${glibName}\": ${renderStringSet(constructOnly)},`);\n\n const constructableEntries = intrinsicElements\n .filter(({ constructable }) => constructable.length > 0)\n .map(({ glibName, constructable }) => ` \"${glibName}\": ${renderStringSet(constructable)},`);\n\n const defaultsEntries = intrinsicElements\n .filter(({ defaults }) => defaults.length > 0)\n .map(({ glibName, defaults }) => ` \"${glibName}\": ${renderDefaultsObject(defaults)},`);\n\n return `${[\n `export const signals: Record<string, Record<string, string>> = {\\n${signalsEntries.join(\"\\n\")}\\n};`,\n `export const constructOnlyProps: Record<string, Set<string>> = {\\n${constructOnlyEntries.join(\"\\n\")}\\n};`,\n `export const constructProps: Record<string, Set<string>> = {\\n${constructableEntries.join(\"\\n\")}\\n};`,\n `export const defaultProps: Record<string, Record<string, unknown>> = {\\n${defaultsEntries.join(\"\\n\")}\\n};`,\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst collectIntrinsicElements = (library: Library): IntrinsicElementEntry[] => {\n const entries: IntrinsicElementEntry[] = [];\n const seen: Set<string> = new Set();\n\n for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {\n if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {\n continue;\n }\n\n seen.add(glibName);\n\n const sources: GirClass[] = [\n klass,\n ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),\n ];\n\n entries.push({\n glibName,\n signals: collectSignals(sources),\n constructOnly: collectConstructOnly(sources),\n constructable: collectConstructable(sources),\n defaults: collectDefaultProps(library, sources),\n });\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nconst collectSignalsFromSource = (source: GirClass, seen: Set<string>, signals: [string, string][]): void => {\n for (const signal of source.signals) {\n const handlerName = signalHandlerName(signal.name);\n\n if (seen.has(handlerName)) {\n continue;\n }\n\n seen.add(handlerName);\n signals.push([handlerName, signal.name] as const);\n }\n};\n\nconst collectSignals = (sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const signals: [string, string][] = [];\n\n for (const source of sources) {\n collectSignalsFromSource(source, seen, signals);\n }\n\n return signals;\n};\n\nconst collectPropNamesFromSource = (source: GirClass, collector: PropNameCollector): void => {\n const { shouldKeep, seen, names } = collector;\n\n for (const property of source.properties) {\n if (!shouldKeep(property)) {\n continue;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n continue;\n }\n\n seen.add(jsName);\n names.push(jsName);\n }\n};\n\nconst collectPropNames = (sources: GirClass[], shouldKeep: (property: GirProperty) => boolean): string[] => {\n const collector: PropNameCollector = { shouldKeep, seen: new Set<string>(), names: [] };\n\n for (const source of sources) {\n collectPropNamesFromSource(source, collector);\n }\n\n return collector.names;\n};\n\nconst collectConstructOnly = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => property.constructOnly && property.introspectable);\n\nconst collectConstructable = (sources: GirClass[]): string[] =>\n collectPropNames(sources, (property) => isConstructableProperty(property) && property.introspectable);\n\nconst renderObjectLiteral = (entries: [string, string][], renderValue: (value: string) => string): string => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);\n\n return `{\\n${lines.join(\",\\n\")}\\n }`;\n};\n\nconst renderStringSet = (names: string[]): string =>\n `new Set([${names.map((name) => sourceStringLiteral(name)).join(\",\")}])`;\n\nconst renderSignalsObject = (entries: [string, string][]): string => renderObjectLiteral(entries, sourceStringLiteral);\n\nconst collectDefaultsFromClass = (klass: GirClass, collector: DefaultPropsCollector): void => {\n for (const property of klass.properties) {\n const entry = defaultPropEntry(collector.library, klass, property, collector.seen);\n\n if (entry !== undefined) {\n collector.defaults.push(entry);\n }\n }\n};\n\nconst collectDefaultProps = (library: Library, sources: GirClass[]): [string, string][] => {\n const collector: DefaultPropsCollector = { library, seen: new Set<string>(), defaults: [] };\n\n for (const klass of sources) {\n collectDefaultsFromClass(klass, collector);\n }\n\n return collector.defaults;\n};\n\nconst isDefaultCandidate = (property: GirProperty): boolean =>\n (property.writable || property.construct) && !property.constructOnly && property.introspectable;\n\nconst defaultPropEntry = (\n library: Library,\n klass: GirClass,\n property: GirProperty,\n seen: Set<string>,\n): [string, string] | undefined => {\n if (!isDefaultCandidate(property)) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n const literal = renderDefaultLiteral(library, klass, property);\n\n if (literal === undefined) {\n return undefined;\n }\n\n return [jsName, literal];\n};\n\nconst willSetterRejectNull = (library: Library, klass: GirClass, property: GirProperty): boolean => {\n if (property.setter === undefined) {\n return false;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return false;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value !== undefined && !value.parameter.nullable && !value.parameter.optional;\n};\n\nconst setterValueRef = (library: Library, klass: GirClass, property: GirProperty): TypeId | undefined => {\n if (property.setter === undefined) {\n return undefined;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return undefined;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value?.parameter.type;\n};\n\nconst renderDefaultLiteral = (library: Library, klass: GirClass, property: GirProperty): string | undefined => {\n if (property.defaultValue === \"NULL\" && willSetterRejectNull(library, klass, property)) {\n return undefined;\n }\n\n const ref = setterValueRef(library, klass, property) ?? property.type;\n\n return resolveDefaultLiteral(library, ref, property.defaultValue);\n};\n\nconst resolveDefaultLiteral = (\n library: Library,\n ref: TypeId | undefined,\n raw: string | undefined,\n): string | undefined => {\n if (raw === undefined) {\n return undefined;\n }\n\n if (raw === \"NULL\") {\n return \"null\";\n }\n\n if (ref === undefined) {\n return undefined;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n return resolveTypeDefaultLiteral(library, resolved, raw);\n};\n\nconst resolveTypeDefaultLiteral = (library: Library, resolved: GirType, raw: string): string | undefined => {\n if (resolved.kind === \"primitive\") {\n return primitiveDefaultLiteral(resolved.category, raw);\n }\n\n if (resolved.kind === \"enum\") {\n return enumDefaultLiteral(resolved.value, raw);\n }\n\n if (resolved.kind === \"alias\") {\n return resolveDefaultLiteral(library, resolved.value.target, raw);\n }\n\n return undefined;\n};\n\nconst booleanDefaultLiteral = (raw: string): string | undefined => {\n if (raw === \"TRUE\") {\n return \"true\";\n }\n\n if (raw === \"FALSE\") {\n return \"false\";\n }\n\n return undefined;\n};\n\nconst integerDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;\n};\n\nconst floatDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (!FLOAT_PATTERN.test(trimmed)) {\n return undefined;\n }\n\n const value = Number(trimmed);\n\n return Number.isFinite(value) ? String(value) : undefined;\n};\n\nconst primitiveDefaultLiteral = (category: PrimitiveCategory, raw: string): string | undefined => {\n switch (category) {\n case \"boolean\": {\n return booleanDefaultLiteral(raw);\n }\n case \"int8\":\n case \"int16\":\n case \"int32\":\n case \"uint8\":\n case \"uint16\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"unichar\": {\n return integerDefaultLiteral(raw);\n }\n case \"float32\":\n case \"float64\": {\n return floatDefaultLiteral(raw);\n }\n case \"string\": {\n return sourceStringLiteral(raw);\n }\n case \"bigint64\":\n case \"biguint64\":\n case \"gtype\": {\n return bigintDefaultLiteral(raw);\n }\n case \"pointer\":\n case \"void\": {\n return undefined;\n }\n }\n};\n\nconst bigintDefaultLiteral = (raw: string): string | undefined => {\n const integer = integerDefaultLiteral(raw);\n\n return integer === undefined ? undefined : `${integer}n`;\n};\n\nconst enumDefaultLiteral = (enumType: GirEnum, raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (INTEGER_PATTERN.test(trimmed)) {\n return trimmed;\n }\n\n const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);\n\n return member?.value;\n};\n\nconst renderDefaultsObject = (entries: [string, string][]): string =>\n renderObjectLiteral(entries, (literal) => literal);\n\nexport { generateMetadata };\n"]}
|
|
@@ -21,5 +21,5 @@ type JsxGenerationOptions = {
|
|
|
21
21
|
lazyElements?: string[];
|
|
22
22
|
};
|
|
23
23
|
declare const generateJsxFiles: (library: Library, options?: JsxGenerationOptions) => JsxFiles;
|
|
24
|
-
export { generateJsxFiles, type JsxNamespaceFile
|
|
24
|
+
export { generateJsxFiles, type JsxNamespaceFile };
|
|
25
25
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,yBAAyB,EAAoC,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK1F,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAExE,KAAK,gBAAgB,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAmBF,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,UAAS,oBAAyB,KAAG,QAoBhF,CAAC;AA8EF,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,yBAAyB,EAAoC,MAAM,yBAAyB,CAAC;AAC3G,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,2BAA2B,CAAC;AAE/E,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK1F,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAExE,KAAK,gBAAgB,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC;AAEF,KAAK,oBAAoB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAmBF,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,EAAE,UAAS,oBAAyB,KAAG,QAoBhF,CAAC;AA8EF,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/store/jsx/pipeline.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy } from \"@gtkx/utils\";\nimport type { Library } from \"../../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../../gir/namespace.js\";\nimport { ImportsBuilder } from \"../../writer/imports.js\";\nimport { type ElementComponentOverrides, generateElementComponentsSection } from \"./element-components.js\";\nimport { type ElementProps, setElementProps } from \"./element-prop-imports.js\";\nimport { type LazyElementSpec, lazyElementSpecs } from \"./element-prop-types.js\";\nimport { collectGeneratedElements, type GeneratedElement } from \"./generated-elements.js\";\nimport { buildGirIndex } from \"./gir-index.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"./intrinsic-elements.js\";\nimport { generateJsxSection } from \"./jsx.js\";\nimport { generateMetadata } from \"./metadata.js\";\nimport { type OmittedProps, setOmittedProps } from \"./omitted-props.js\";\n\ntype JsxNamespaceFile = {\n directory: string;\n source: string;\n};\n\ntype JsxFiles = {\n namespaces: JsxNamespaceFile[];\n metadata: string;\n intrinsicElementCount: number;\n elements: GeneratedElement[];\n};\n\ntype JsxGenerationOptions = {\n reactSubexports?: string[];\n components?: ElementComponentOverrides;\n props?: ElementProps;\n omittedProps?: OmittedProps;\n lazyElements?: string[];\n};\n\ntype NamespaceFilesOptions = {\n library: Library;\n intrinsicElements: GlibNamedClass[];\n intrinsicElementByGlibName: Map<string, GlibNamedClass>;\n lazyByNamespace: Map<string, LazyElementSpec[]>;\n reactSubexports: string[];\n components: ElementComponentOverrides;\n};\n\ntype JsxNamespaceContext = {\n lazyElements: LazyElementSpec[];\n intrinsicElements: GlibNamedClass[];\n intrinsicElementByGlibName: Map<string, GlibNamedClass>;\n reactSubexports: string[];\n components: ElementComponentOverrides;\n};\n\nconst generateJsxFiles = (library: Library, options: JsxGenerationOptions = {}): JsxFiles => {\n setElementProps(options.props ?? {});\n setOmittedProps(options.omittedProps ?? {});\n const intrinsicElements = collectIntrinsicElementClasses(library);\n const intrinsicElementByGlibName = new Map(intrinsicElements.map((entry) => [entry.glibName, entry]));\n const girIndex = buildGirIndex(library);\n const lazyByNamespace = lazyElementSpecs(girIndex, options.lazyElements ?? []);\n\n const { namespaces, intrinsicElementCount } = generateNamespaceFiles({\n library,\n intrinsicElements,\n intrinsicElementByGlibName,\n lazyByNamespace,\n reactSubexports: options.reactSubexports ?? [],\n components: options.components ?? {},\n });\n\n const metadata = generateMetadata(library);\n\n return { namespaces, metadata, intrinsicElementCount, elements: collectGeneratedElements(intrinsicElements) };\n};\n\nconst orderedIntrinsicNamespaces = (intrinsicElements: GlibNamedClass[]): GirNamespace[] => {\n const namespacesWithIntrinsicElements: Map<string, GirNamespace> = new Map();\n\n for (const entry of intrinsicElements) {\n namespacesWithIntrinsicElements.set(entry.namespace.name, entry.namespace);\n }\n\n return sortStringsBy(namespacesWithIntrinsicElements.values(), (entry) => entry.name);\n};\n\nconst generateNamespaceFiles = (\n options: NamespaceFilesOptions,\n): { namespaces: JsxNamespaceFile[]; intrinsicElementCount: number } => {\n const { library, intrinsicElements, intrinsicElementByGlibName, lazyByNamespace, reactSubexports, components } =\n options;\n\n const namespaces: JsxNamespaceFile[] = [];\n let intrinsicElementCount = 0;\n\n for (const namespace of orderedIntrinsicNamespaces(intrinsicElements)) {\n const { source, count } = generateJsxNamespace(namespace, library, {\n lazyElements: lazyByNamespace.get(namespace.name) ?? [],\n intrinsicElements,\n intrinsicElementByGlibName,\n reactSubexports,\n components,\n });\n\n namespaces.push({ directory: namespaceDirectory(namespace), source });\n intrinsicElementCount += count;\n }\n\n return { namespaces, intrinsicElementCount };\n};\n\nconst generateJsxNamespace = (\n targetNamespace: GirNamespace,\n library: Library,\n context: JsxNamespaceContext,\n): { source: string; count: number } => {\n const { lazyElements, intrinsicElements, intrinsicElementByGlibName, reactSubexports, components } = context;\n const targetDirectory = namespaceDirectory(targetNamespace);\n const imports = new ImportsBuilder();\n imports.addSideEffect(`@gtkx/gi/${targetDirectory}`);\n\n if (reactSubexports.includes(targetDirectory)) {\n imports.addSideEffect(`@gtkx/react/${targetDirectory}`);\n }\n\n const elementComponents = generateElementComponentsSection(targetNamespace, library, {\n imports,\n lazyElements,\n intrinsicElements,\n components,\n });\n\n const excludeNames: Set<string> = new Set(elementComponents.exportedNames);\n\n const { source: jsxSection, intrinsicCount } = generateJsxSection(targetNamespace, library, {\n excludeNames,\n imports,\n intrinsicElements,\n intrinsicElementByGlibName,\n });\n\n const body = [imports.toSource().trimEnd(), \"\", jsxSection];\n\n if (elementComponents.source.length > 0) {\n body.push(\"\", elementComponents.source);\n }\n\n const count = elementComponents.exportedNames.size + intrinsicCount;\n\n return { source: `${body.join(\"\\n\")}\\n`, count };\n};\n\nexport { generateJsxFiles, type JsxNamespaceFile };\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { GirClass } from "../../gir/class.js";
|
|
2
2
|
import type { Library } from "../../gir/library.js";
|
|
3
3
|
import type { GirNamespace } from "../../gir/namespace.js";
|
|
4
|
-
import { type TsTypeTarget } from "../../analysis/ts-type.js";
|
|
5
4
|
import { type GirProperty } from "../../gir/property.js";
|
|
6
5
|
type IntrinsicElementPropsEntries = {
|
|
7
6
|
propLines: string[];
|
|
@@ -16,10 +15,6 @@ type IntrinsicElementScope = {
|
|
|
16
15
|
type IntrinsicElementPropsOptions = IntrinsicElementScope & {
|
|
17
16
|
isIntrinsicElementAncestor?: (candidate: GirClass) => boolean;
|
|
18
17
|
};
|
|
19
|
-
type PropTypeRenderContext = {
|
|
20
|
-
library: Library;
|
|
21
|
-
imports: Map<string, string>;
|
|
22
|
-
};
|
|
23
18
|
type InterfacePropsOptions = {
|
|
24
19
|
library: Library;
|
|
25
20
|
iface: GirClass;
|
|
@@ -28,6 +23,5 @@ type InterfacePropsOptions = {
|
|
|
28
23
|
declare const buildElementPropsEntries: (options: IntrinsicElementPropsOptions) => IntrinsicElementPropsEntries;
|
|
29
24
|
declare const buildInterfacePropsEntries: (options: InterfacePropsOptions) => IntrinsicElementPropsEntries;
|
|
30
25
|
declare const isObjectProp: (library: Library, property: GirProperty) => boolean;
|
|
31
|
-
|
|
32
|
-
export { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp, reactTarget };
|
|
26
|
+
export { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp };
|
|
33
27
|
//# sourceMappingURL=props.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/props.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/props.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,uBAAuB,CAAC;AAMlF,KAAK,4BAA4B,GAAG;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,4BAA4B,GAAG,qBAAqB,GAAG;IACxD,0BAA0B,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;CACjE,CAAC;AA6BF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AA6FF,QAAA,MAAM,wBAAwB,GAAI,SAAS,4BAA4B,KAAG,4BAczE,CAAC;AAEF,QAAA,MAAM,0BAA0B,GAAI,SAAS,qBAAqB,KAAG,4BAapE,CAAC;AAyCF,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,UAAU,WAAW,KAAG,OAM/D,CAAC;AA0CF,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/store/jsx/props.js
CHANGED
|
@@ -4,22 +4,29 @@ import { renderHandlerParameters, renderHandlerResultType } from "../../analysis
|
|
|
4
4
|
import { recordTypeTarget, renderBaseType } from "../../analysis/ts-type.js";
|
|
5
5
|
import { isConstructableProperty } from "../../gir/property.js";
|
|
6
6
|
import { renderJsDoc } from "../../writer/doc.js";
|
|
7
|
+
import { annotationSpec, selfHandlerSpec } from "../gi/doc-spec.js";
|
|
7
8
|
import { getGlibName, giNamespaceAlias, isIntrinsicElementClass, signalHandlerName } from "./intrinsic-elements.js";
|
|
8
9
|
import { isOmittedProp } from "./omitted-props.js";
|
|
10
|
+
const notifyDoc = (property, jsName, spec) => {
|
|
11
|
+
const note = `Called with the new value when \`${jsName}\` changes.`;
|
|
12
|
+
const doc = property.doc;
|
|
13
|
+
const text = doc === undefined || doc.length === 0 ? note : `${note}\n\n${doc}`;
|
|
14
|
+
return renderJsDoc(text, undefined, spec);
|
|
15
|
+
};
|
|
9
16
|
const appendPropertyLines = (state, property, jsName) => {
|
|
10
17
|
const tsType = renderReactPropType(state.types, property.type, false);
|
|
11
|
-
const
|
|
18
|
+
const spec = annotationSpec(property.annotations);
|
|
19
|
+
const doc = renderJsDoc(property.doc, undefined, spec);
|
|
12
20
|
if (isObjectProp(state.owner.library, property)) {
|
|
13
21
|
state.propLines.push(`${doc}${jsName}?: ${tsType} | ReactElement | null | undefined;`);
|
|
14
22
|
state.objectPropNames.push(jsName);
|
|
15
23
|
return;
|
|
16
24
|
}
|
|
17
|
-
|
|
18
|
-
if (isSettable) {
|
|
25
|
+
if (isConstructableProperty(property)) {
|
|
19
26
|
state.propLines.push(`${doc}${jsName}?: ${tsType} | null | undefined;`);
|
|
20
27
|
}
|
|
21
28
|
const handlerType = `((value: ${tsType} | null, self: Self) => void) | null | undefined`;
|
|
22
|
-
state.propLines.push(`${
|
|
29
|
+
state.propLines.push(`${notifyDoc(property, jsName, spec)}onNotify${upperFirst(jsName)}?: ${handlerType};`);
|
|
23
30
|
};
|
|
24
31
|
const acceptCollectorProperty = (state, property) => {
|
|
25
32
|
if (!property.introspectable) {
|
|
@@ -39,7 +46,8 @@ const acceptCollectorSignal = (state, signal) => {
|
|
|
39
46
|
}
|
|
40
47
|
state.seen.add(handlerName);
|
|
41
48
|
const signature = renderSignalHandler({ types: state.types, signal, selfType: "Self" });
|
|
42
|
-
|
|
49
|
+
const doc = renderJsDoc(signal.doc, undefined, selfHandlerSpec(signal));
|
|
50
|
+
state.propLines.push(`${doc}${handlerName}?: (${signature}) | undefined;`);
|
|
43
51
|
};
|
|
44
52
|
const createPropEntryCollector = (owner) => {
|
|
45
53
|
const { library } = owner;
|
|
@@ -149,5 +157,5 @@ const renderReactPropType = (context, ref, isNullable) => {
|
|
|
149
157
|
const base = renderBaseType(context.library, reactTarget(context), ref);
|
|
150
158
|
return isNullable ? `${base} | null` : base;
|
|
151
159
|
};
|
|
152
|
-
export { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp
|
|
160
|
+
export { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp };
|
|
153
161
|
//# sourceMappingURL=props.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../src/store/jsx/props.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { GirCallable } from \"../../gir/parameter.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport { forEachAncestor } from \"../../analysis/inheritance.js\";\nimport { renderHandlerParameters, renderHandlerResultType } from \"../../analysis/param-structure.js\";\nimport { recordTypeTarget, renderBaseType, type TsTypeTarget } from \"../../analysis/ts-type.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { getGlibName, giNamespaceAlias, isIntrinsicElementClass, signalHandlerName } from \"./intrinsic-elements.js\";\nimport { isOmittedProp } from \"./omitted-props.js\";\n\ntype IntrinsicElementPropsEntries = {\n propLines: string[];\n imports: Map<string, string>;\n objectPropNames: string[];\n};\n\ntype IntrinsicElementScope = {\n library: Library;\n klass: GirClass;\n namespace: GirNamespace;\n};\n\ntype IntrinsicElementPropsOptions = IntrinsicElementScope & {\n isIntrinsicElementAncestor?: (candidate: GirClass) => boolean;\n};\n\ntype PropTypeRenderContext = {\n library: Library;\n imports: Map<string, string>;\n};\n\ntype SignalRenderOptions = {\n types: PropTypeRenderContext;\n signal: GirCallable;\n selfType: string;\n};\n\ntype PropEntryCollector = {\n propLines: string[];\n imports: Map<string, string>;\n objectPropNames: string[];\n acceptProperty: (property: GirProperty) => void;\n acceptSignal: (signal: GirCallable) => void;\n};\n\ntype PropCollectorState = {\n owner: IntrinsicElementScope;\n types: PropTypeRenderContext;\n propLines: string[];\n objectPropNames: string[];\n seen: Set<string>;\n};\n\ntype InterfacePropsOptions = {\n library: Library;\n iface: GirClass;\n namespace: GirNamespace;\n};\n\ntype IntrinsicElementMemberWalk = IntrinsicElementScope & {\n isIntrinsicElementAncestor: (candidate: GirClass) => boolean;\n acceptProperty: (property: GirProperty) => void;\n acceptSignal: (signal: GirCallable) => void;\n};\n\nconst appendPropertyLines = (state: PropCollectorState, property: GirProperty, jsName: string): void => {\n const tsType = renderReactPropType(state.types, property.type, false);\n const doc = renderJsDoc(property.doc);\n\n if (isObjectProp(state.owner.library, property)) {\n state.propLines.push(`${doc}${jsName}?: ${tsType} | ReactElement | null | undefined;`);\n state.objectPropNames.push(jsName);\n\n return;\n }\n\n const isSettable = isConstructableProperty(property);\n\n if (isSettable) {\n state.propLines.push(`${doc}${jsName}?: ${tsType} | null | undefined;`);\n }\n\n const handlerType = `((value: ${tsType} | null, self: Self) => void) | null | undefined`;\n state.propLines.push(`${isSettable ? \"\" : doc}onNotify${upperFirst(jsName)}?: ${handlerType};`);\n};\n\nconst acceptCollectorProperty = (state: PropCollectorState, property: GirProperty): void => {\n if (!property.introspectable) {\n return;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (state.seen.has(jsName) || isOmittedProp(getGlibName(state.owner.klass), jsName)) {\n return;\n }\n\n state.seen.add(jsName);\n appendPropertyLines(state, property, jsName);\n};\n\nconst acceptCollectorSignal = (state: PropCollectorState, signal: GirCallable): void => {\n const handlerName = signalHandlerName(signal.name);\n\n if (state.seen.has(handlerName)) {\n return;\n }\n\n state.seen.add(handlerName);\n const signature = renderSignalHandler({ types: state.types, signal, selfType: \"Self\" });\n state.propLines.push(`${renderJsDoc(signal.doc)}${handlerName}?: (${signature}) | undefined;`);\n};\n\nconst createPropEntryCollector = (owner: IntrinsicElementScope): PropEntryCollector => {\n const { library } = owner;\n const imports: Map<string, string> = new Map();\n const types: PropTypeRenderContext = { library, imports };\n\n const state: PropCollectorState = {\n owner,\n types,\n propLines: [],\n objectPropNames: [],\n seen: new Set<string>(),\n };\n\n return {\n propLines: state.propLines,\n imports,\n objectPropNames: state.objectPropNames,\n acceptProperty: (property) => {\n acceptCollectorProperty(state, property);\n },\n acceptSignal: (signal) => {\n acceptCollectorSignal(state, signal);\n },\n };\n};\n\nconst buildElementPropsEntries = (options: IntrinsicElementPropsOptions): IntrinsicElementPropsEntries => {\n const { library, klass, namespace, isIntrinsicElementAncestor = () => false } = options;\n const collector = createPropEntryCollector({ library, klass, namespace });\n\n walkIntrinsicElementMembers({\n library,\n klass,\n namespace,\n isIntrinsicElementAncestor,\n acceptProperty: collector.acceptProperty,\n acceptSignal: collector.acceptSignal,\n });\n\n return { propLines: collector.propLines, imports: collector.imports, objectPropNames: collector.objectPropNames };\n};\n\nconst buildInterfacePropsEntries = (options: InterfacePropsOptions): IntrinsicElementPropsEntries => {\n const { library, iface, namespace } = options;\n const collector = createPropEntryCollector({ library, klass: iface, namespace });\n\n for (const property of iface.properties) {\n collector.acceptProperty(property);\n }\n\n for (const signal of iface.signals) {\n collector.acceptSignal(signal);\n }\n\n return { propLines: collector.propLines, imports: collector.imports, objectPropNames: collector.objectPropNames };\n};\n\nconst walkIntrinsicElementMembers = (walk: IntrinsicElementMemberWalk): void => {\n const { library, klass, namespace, isIntrinsicElementAncestor, acceptProperty, acceptSignal } = walk;\n\n const visitMembers = (memberClass: GirClass): void => {\n for (const property of memberClass.properties) {\n acceptProperty(property);\n }\n\n for (const signal of memberClass.signals) {\n acceptSignal(signal);\n }\n };\n\n const ancestry = { library, namespace };\n visitMembers(klass);\n\n forEachAncestor(ancestry, klass, (ancestor) => {\n visitMembers(ancestor.klass);\n }, isIntrinsicElementAncestor);\n};\n\nconst isGObjectType = (library: Library, ref: TypeId | undefined): boolean => {\n if (ref === undefined) {\n return false;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved?.kind === \"interface\") {\n return true;\n }\n\n if (resolved?.kind !== \"class\") {\n return false;\n }\n\n return isIntrinsicElementClass(resolved.value, resolved.namespace, library);\n};\n\nconst isObjectProp = (library: Library, property: GirProperty): boolean => {\n if (!property.writable || property.constructOnly) {\n return false;\n }\n\n return isGObjectType(library, property.type);\n};\n\nconst renderSignalHandler = (options: SignalRenderOptions): string => {\n const { types, signal, selfType } = options;\n\n const params = [\n ...renderHandlerParameters(signal.parameters, (ref, nullable) => renderReactPropType(types, ref, nullable)),\n `self: ${selfType}`,\n ];\n\n const result = renderHandlerResultType({\n library: types.library,\n signal,\n renderType: (ref, nullable) => renderReactPropType(types, ref, nullable),\n shouldIncludeCallerAllocated: false,\n isOptOut: true,\n });\n\n return `(${params.join(\", \")}) => ${result}`;\n};\n\nconst reactTarget = (context: PropTypeRenderContext): TsTypeTarget =>\n recordTypeTarget(\n context.library,\n (name) => {\n context.imports.set(name.namespaceName, giNamespaceAlias(name.namespaceName));\n\n return `${giNamespaceAlias(name.namespaceName)}.${name.typeName}`;\n },\n () => {\n context.imports.set(\"GObject\", giNamespaceAlias(\"GObject\"));\n\n return `${giNamespaceAlias(\"GObject\")}.Type`;\n },\n );\n\nconst renderReactPropType = (context: PropTypeRenderContext, ref: TypeId | undefined, isNullable: boolean): string => {\n const base = renderBaseType(context.library, reactTarget(context), ref);\n\n return isNullable ? `${base} | null` : base;\n};\n\nexport { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp, reactTarget };\n"]}
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../src/store/jsx/props.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { GirCallable } from \"../../gir/parameter.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { JsDocSpec } from \"../../writer/doc.js\";\nimport { forEachAncestor } from \"../../analysis/inheritance.js\";\nimport { renderHandlerParameters, renderHandlerResultType } from \"../../analysis/param-structure.js\";\nimport { recordTypeTarget, renderBaseType, type TsTypeTarget } from \"../../analysis/ts-type.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { annotationSpec, selfHandlerSpec } from \"../gi/doc-spec.js\";\nimport { getGlibName, giNamespaceAlias, isIntrinsicElementClass, signalHandlerName } from \"./intrinsic-elements.js\";\nimport { isOmittedProp } from \"./omitted-props.js\";\n\ntype IntrinsicElementPropsEntries = {\n propLines: string[];\n imports: Map<string, string>;\n objectPropNames: string[];\n};\n\ntype IntrinsicElementScope = {\n library: Library;\n klass: GirClass;\n namespace: GirNamespace;\n};\n\ntype IntrinsicElementPropsOptions = IntrinsicElementScope & {\n isIntrinsicElementAncestor?: (candidate: GirClass) => boolean;\n};\n\ntype PropTypeRenderContext = {\n library: Library;\n imports: Map<string, string>;\n};\n\ntype SignalRenderOptions = {\n types: PropTypeRenderContext;\n signal: GirCallable;\n selfType: string;\n};\n\ntype PropEntryCollector = {\n propLines: string[];\n imports: Map<string, string>;\n objectPropNames: string[];\n acceptProperty: (property: GirProperty) => void;\n acceptSignal: (signal: GirCallable) => void;\n};\n\ntype PropCollectorState = {\n owner: IntrinsicElementScope;\n types: PropTypeRenderContext;\n propLines: string[];\n objectPropNames: string[];\n seen: Set<string>;\n};\n\ntype InterfacePropsOptions = {\n library: Library;\n iface: GirClass;\n namespace: GirNamespace;\n};\n\ntype IntrinsicElementMemberWalk = IntrinsicElementScope & {\n isIntrinsicElementAncestor: (candidate: GirClass) => boolean;\n acceptProperty: (property: GirProperty) => void;\n acceptSignal: (signal: GirCallable) => void;\n};\n\nconst notifyDoc = (property: GirProperty, jsName: string, spec: JsDocSpec): string => {\n const note = `Called with the new value when \\`${jsName}\\` changes.`;\n const doc = property.doc;\n const text = doc === undefined || doc.length === 0 ? note : `${note}\\n\\n${doc}`;\n\n return renderJsDoc(text, undefined, spec);\n};\n\nconst appendPropertyLines = (state: PropCollectorState, property: GirProperty, jsName: string): void => {\n const tsType = renderReactPropType(state.types, property.type, false);\n const spec = annotationSpec(property.annotations);\n const doc = renderJsDoc(property.doc, undefined, spec);\n\n if (isObjectProp(state.owner.library, property)) {\n state.propLines.push(`${doc}${jsName}?: ${tsType} | ReactElement | null | undefined;`);\n state.objectPropNames.push(jsName);\n\n return;\n }\n\n if (isConstructableProperty(property)) {\n state.propLines.push(`${doc}${jsName}?: ${tsType} | null | undefined;`);\n }\n\n const handlerType = `((value: ${tsType} | null, self: Self) => void) | null | undefined`;\n\n state.propLines.push(\n `${notifyDoc(property, jsName, spec)}onNotify${upperFirst(jsName)}?: ${handlerType};`,\n );\n};\n\nconst acceptCollectorProperty = (state: PropCollectorState, property: GirProperty): void => {\n if (!property.introspectable) {\n return;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (state.seen.has(jsName) || isOmittedProp(getGlibName(state.owner.klass), jsName)) {\n return;\n }\n\n state.seen.add(jsName);\n appendPropertyLines(state, property, jsName);\n};\n\nconst acceptCollectorSignal = (state: PropCollectorState, signal: GirCallable): void => {\n const handlerName = signalHandlerName(signal.name);\n\n if (state.seen.has(handlerName)) {\n return;\n }\n\n state.seen.add(handlerName);\n const signature = renderSignalHandler({ types: state.types, signal, selfType: \"Self\" });\n const doc = renderJsDoc(signal.doc, undefined, selfHandlerSpec(signal));\n state.propLines.push(`${doc}${handlerName}?: (${signature}) | undefined;`);\n};\n\nconst createPropEntryCollector = (owner: IntrinsicElementScope): PropEntryCollector => {\n const { library } = owner;\n const imports: Map<string, string> = new Map();\n const types: PropTypeRenderContext = { library, imports };\n\n const state: PropCollectorState = {\n owner,\n types,\n propLines: [],\n objectPropNames: [],\n seen: new Set<string>(),\n };\n\n return {\n propLines: state.propLines,\n imports,\n objectPropNames: state.objectPropNames,\n acceptProperty: (property) => {\n acceptCollectorProperty(state, property);\n },\n acceptSignal: (signal) => {\n acceptCollectorSignal(state, signal);\n },\n };\n};\n\nconst buildElementPropsEntries = (options: IntrinsicElementPropsOptions): IntrinsicElementPropsEntries => {\n const { library, klass, namespace, isIntrinsicElementAncestor = () => false } = options;\n const collector = createPropEntryCollector({ library, klass, namespace });\n\n walkIntrinsicElementMembers({\n library,\n klass,\n namespace,\n isIntrinsicElementAncestor,\n acceptProperty: collector.acceptProperty,\n acceptSignal: collector.acceptSignal,\n });\n\n return { propLines: collector.propLines, imports: collector.imports, objectPropNames: collector.objectPropNames };\n};\n\nconst buildInterfacePropsEntries = (options: InterfacePropsOptions): IntrinsicElementPropsEntries => {\n const { library, iface, namespace } = options;\n const collector = createPropEntryCollector({ library, klass: iface, namespace });\n\n for (const property of iface.properties) {\n collector.acceptProperty(property);\n }\n\n for (const signal of iface.signals) {\n collector.acceptSignal(signal);\n }\n\n return { propLines: collector.propLines, imports: collector.imports, objectPropNames: collector.objectPropNames };\n};\n\nconst walkIntrinsicElementMembers = (walk: IntrinsicElementMemberWalk): void => {\n const { library, klass, namespace, isIntrinsicElementAncestor, acceptProperty, acceptSignal } = walk;\n\n const visitMembers = (memberClass: GirClass): void => {\n for (const property of memberClass.properties) {\n acceptProperty(property);\n }\n\n for (const signal of memberClass.signals) {\n acceptSignal(signal);\n }\n };\n\n const ancestry = { library, namespace };\n visitMembers(klass);\n\n forEachAncestor(ancestry, klass, (ancestor) => {\n visitMembers(ancestor.klass);\n }, isIntrinsicElementAncestor);\n};\n\nconst isGObjectType = (library: Library, ref: TypeId | undefined): boolean => {\n if (ref === undefined) {\n return false;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved?.kind === \"interface\") {\n return true;\n }\n\n if (resolved?.kind !== \"class\") {\n return false;\n }\n\n return isIntrinsicElementClass(resolved.value, resolved.namespace, library);\n};\n\nconst isObjectProp = (library: Library, property: GirProperty): boolean => {\n if (!property.writable || property.constructOnly) {\n return false;\n }\n\n return isGObjectType(library, property.type);\n};\n\nconst renderSignalHandler = (options: SignalRenderOptions): string => {\n const { types, signal, selfType } = options;\n\n const params = [\n ...renderHandlerParameters(signal.parameters, (ref, nullable) => renderReactPropType(types, ref, nullable)),\n `self: ${selfType}`,\n ];\n\n const result = renderHandlerResultType({\n library: types.library,\n signal,\n renderType: (ref, nullable) => renderReactPropType(types, ref, nullable),\n shouldIncludeCallerAllocated: false,\n isOptOut: true,\n });\n\n return `(${params.join(\", \")}) => ${result}`;\n};\n\nconst reactTarget = (context: PropTypeRenderContext): TsTypeTarget =>\n recordTypeTarget(\n context.library,\n (name) => {\n context.imports.set(name.namespaceName, giNamespaceAlias(name.namespaceName));\n\n return `${giNamespaceAlias(name.namespaceName)}.${name.typeName}`;\n },\n () => {\n context.imports.set(\"GObject\", giNamespaceAlias(\"GObject\"));\n\n return `${giNamespaceAlias(\"GObject\")}.Type`;\n },\n );\n\nconst renderReactPropType = (context: PropTypeRenderContext, ref: TypeId | undefined, isNullable: boolean): string => {\n const base = renderBaseType(context.library, reactTarget(context), ref);\n\n return isNullable ? `${base} | null` : base;\n};\n\nexport { buildElementPropsEntries, buildInterfacePropsEntries, isObjectProp };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-store.d.ts","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"jsx-store.d.ts","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAkC,KAAK,YAAY,EAA6B,MAAM,eAAe,CAAC;AAE7G,QAAA,MAAM,aAAa,GACf,SAAS,YAAY,EACrB,YAAY,gBAAgB,EAAE,EAC9B,UAAU,MAAM,EAChB,UAAU,OAAO,EAAE,KACpB,IAyBF,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/store/jsx-store.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { buildManifest, subpathExport, writeStore } from "./store-fs.js";
|
|
1
|
+
import { buildManifest, namespaceBarrel, subpathExport, writeStore } from "./store-fs.js";
|
|
2
2
|
const writeJsxStore = (options, namespaces, metadata, rawFiles) => {
|
|
3
3
|
const exportsMap = {
|
|
4
4
|
"./metadata": subpathExport("metadata"),
|
|
5
5
|
};
|
|
6
6
|
const files = [{ fileName: "metadata.ts", source: metadata }];
|
|
7
7
|
for (const { directory, source } of namespaces) {
|
|
8
|
-
files.push({ fileName: `${directory}/${directory}.tsx`, source });
|
|
9
|
-
exportsMap[`./${directory}`] = subpathExport(`${directory}
|
|
8
|
+
files.push({ fileName: `${directory}/${directory}.tsx`, source }, namespaceBarrel(directory));
|
|
9
|
+
exportsMap[`./${directory}`] = subpathExport(`${directory}/index`);
|
|
10
10
|
}
|
|
11
11
|
writeStore({
|
|
12
12
|
storeDir: options.storeDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-store.js","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAqB,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-store.js","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7G,MAAM,aAAa,GAAG,CAClB,OAAqB,EACrB,UAA8B,EAC9B,QAAgB,EAChB,QAAmB,EACf,EAAE;IACN,MAAM,UAAU,GAA4B;QACxC,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC;KAC1C,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9D,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9F,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,UAAU,CAAC;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK;QACL,QAAQ,EAAE,aAAa,CAAC;YACpB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,UAAU;YACnB,gBAAgB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;SACxE,CAAC;QACF,QAAQ;QACR,oBAAoB,EAAE,IAAI;KAC7B,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import type { JsxNamespaceFile } from \"./jsx/pipeline.js\";\nimport type { RawFile } from \"./store-fs.js\";\nimport { buildManifest, namespaceBarrel, type StoreOptions, subpathExport, writeStore } from \"./store-fs.js\";\n\nconst writeJsxStore = (\n options: StoreOptions,\n namespaces: JsxNamespaceFile[],\n metadata: string,\n rawFiles: RawFile[],\n): void => {\n const exportsMap: Record<string, unknown> = {\n \"./metadata\": subpathExport(\"metadata\"),\n };\n\n const files = [{ fileName: \"metadata.ts\", source: metadata }];\n\n for (const { directory, source } of namespaces) {\n files.push({ fileName: `${directory}/${directory}.tsx`, source }, namespaceBarrel(directory));\n exportsMap[`./${directory}`] = subpathExport(`${directory}/index`);\n }\n\n writeStore({\n storeDir: options.storeDir,\n linkDir: options.linkDir,\n files,\n manifest: buildManifest({\n name: \"@gtkx/jsx\",\n version: options.version,\n exports: exportsMap,\n peerDependencies: { \"@gtkx/gi\": \"*\", \"@gtkx/react\": \"*\", react: \"*\" },\n }),\n rawFiles,\n requiresEnvReference: true,\n });\n};\n\nexport { writeJsxStore };\n"]}
|
|
@@ -11,18 +11,29 @@ type ResolvedStore = {
|
|
|
11
11
|
/** Subexport names of the installed `@gtkx/react`, empty when it is absent. */
|
|
12
12
|
reactSubexports: string[];
|
|
13
13
|
};
|
|
14
|
+
declare const getShadowingStorePaths: (projectRoot: string) => string[];
|
|
15
|
+
declare const sweepProjectStaging: (projectRoot: string) => void;
|
|
14
16
|
/**
|
|
15
17
|
* Resolves where a project's `@gtkx/gi` and `@gtkx/jsx` stores belong, from the project root alone. The
|
|
16
18
|
* result supplies every `runCodegen` input except `libraries` and `girPath`, so a caller that has
|
|
17
19
|
* already resolved those can spread it straight into the call.
|
|
18
20
|
*
|
|
21
|
+
* Both stores go in one `node_modules`, found by walking the project's `node_modules` chain upwards:
|
|
22
|
+
* the one `@gtkx/react` resolves from, or `@gtkx/runtime`'s when no React is installed. That is the
|
|
23
|
+
* project's own directory when it installs those packages itself, and the workspace root when npm or
|
|
24
|
+
* yarn hoisted them there. Keeping the pair together is what lets the jsx store import the gi store, and
|
|
25
|
+
* anchoring them where the `@gtkx` packages sit is what lets `@gtkx/react`, the CLI, and the project's
|
|
26
|
+
* sources all reach the bindings. A package manager that hoists therefore gives every project sharing
|
|
27
|
+
* that `node_modules` one shared store.
|
|
28
|
+
*
|
|
19
29
|
* Store versions come from the installed `@gtkx/runtime` and `@gtkx/react`, so a dependency upgrade
|
|
20
30
|
* invalidates the stores. Pass explicit `gi` or `jsx` options to `runCodegen` to override any of it.
|
|
21
31
|
*
|
|
22
|
-
* @param projectRoot Directory holding the project's `package.json
|
|
32
|
+
* @param projectRoot Directory holding the project's `package.json`, whose `node_modules` chain is walked.
|
|
23
33
|
* @returns The store locations and the React subexports that shape the jsx store.
|
|
24
|
-
* @throws If `@gtkx/runtime` cannot be resolved from the project
|
|
34
|
+
* @throws If `@gtkx/runtime` cannot be resolved from the project, or a `@gtkx` package that imports the
|
|
35
|
+
* bindings is installed above the `node_modules` the stores would go in, since it could not reach them.
|
|
25
36
|
*/
|
|
26
37
|
declare const resolveStore: (projectRoot: string) => ResolvedStore;
|
|
27
|
-
export { resolveStore, type ResolvedStore };
|
|
38
|
+
export { getShadowingStorePaths, resolveStore, sweepProjectStaging, type ResolvedStore };
|
|
28
39
|
//# sourceMappingURL=resolve-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-store.d.ts","sourceRoot":"","sources":["../../src/store/resolve-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-store.d.ts","sourceRoot":"","sources":["../../src/store/resolve-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD;;;GAGG;AACH,KAAK,aAAa,GAAG;IACjB,mFAAmF;IACnF,EAAE,EAAE,YAAY,CAAC;IACjB,0GAA0G;IAC1G,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;IACzB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AA0IF,QAAA,MAAM,sBAAsB,GAAI,aAAa,MAAM,KAAG,MAAM,EAS3D,CAAC;AASF,QAAA,MAAM,mBAAmB,GAAI,aAAa,MAAM,KAAG,IAMlD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,YAAY,GAAI,aAAa,MAAM,KAAG,aAW3C,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,CAAC"}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
2
|
-
import { dirname, join, parse } from "node:path";
|
|
2
|
+
import { dirname, join, parse, relative, sep } from "node:path";
|
|
3
|
+
import { sweepStagingDirs } from "../staging.js";
|
|
3
4
|
const STORE_DIR = ".gtkx";
|
|
4
5
|
const SCOPE = "@gtkx";
|
|
6
|
+
const STORE_NAMES = ["gi", "jsx"];
|
|
7
|
+
const STORE_CONSUMERS = [
|
|
8
|
+
"@gtkx/cli",
|
|
9
|
+
"@gtkx/components",
|
|
10
|
+
"@gtkx/css",
|
|
11
|
+
"@gtkx/react",
|
|
12
|
+
"@gtkx/testing",
|
|
13
|
+
];
|
|
5
14
|
const readManifest = (path) => JSON.parse(readFileSync(path, "utf8"));
|
|
6
15
|
const subexportNames = (packageDir) => Object.keys(readManifest(join(packageDir, "package.json")).exports ?? {})
|
|
7
16
|
.filter((key) => key.startsWith("./") && key !== "./package.json")
|
|
8
17
|
.map((key) => key.slice(2));
|
|
9
|
-
const loadPackage = (manifest) => {
|
|
18
|
+
const loadPackage = (manifest, nodeModules) => {
|
|
10
19
|
if (!existsSync(manifest)) {
|
|
11
20
|
return null;
|
|
12
21
|
}
|
|
13
22
|
const real = realpathSync(manifest);
|
|
14
|
-
return { dir: dirname(real), version: readManifest(real).version ?? "0.0.0" };
|
|
23
|
+
return { dir: dirname(real), nodeModules, version: readManifest(real).version ?? "0.0.0" };
|
|
15
24
|
};
|
|
16
25
|
const nodeModulesChain = function* (projectRoot) {
|
|
17
26
|
const { root } = parse(projectRoot);
|
|
@@ -24,42 +33,116 @@ const nodeModulesChain = function* (projectRoot) {
|
|
|
24
33
|
};
|
|
25
34
|
const resolvePackage = (projectRoot, packageName) => {
|
|
26
35
|
for (const nodeModules of nodeModulesChain(projectRoot)) {
|
|
27
|
-
const found = loadPackage(join(nodeModules, packageName, "package.json"));
|
|
36
|
+
const found = loadPackage(join(nodeModules, packageName, "package.json"), nodeModules);
|
|
28
37
|
if (found !== null) {
|
|
29
38
|
return found;
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
const unscoped = packageName.replace(/^@[^/]+\//, "");
|
|
42
|
+
return loadPackage(join(projectRoot, "packages", unscoped, "package.json"), join(projectRoot, "node_modules"));
|
|
33
43
|
};
|
|
44
|
+
const isWithin = (parent, child) => {
|
|
45
|
+
const path = relative(parent, child);
|
|
46
|
+
return path === "" || (path !== ".." && !path.startsWith(`..${sep}`));
|
|
47
|
+
};
|
|
48
|
+
const canImport = (fromNodeModules, targetNodeModules) => isWithin(dirname(targetNodeModules), dirname(fromNodeModules));
|
|
34
49
|
const storeOptions = (nodeModules, name, version) => ({
|
|
35
50
|
storeDir: join(nodeModules, STORE_DIR, name),
|
|
36
51
|
linkDir: join(nodeModules, SCOPE, name),
|
|
37
52
|
version,
|
|
38
53
|
});
|
|
54
|
+
const resolveRuntime = (projectRoot) => {
|
|
55
|
+
const runtime = resolvePackage(projectRoot, "@gtkx/runtime");
|
|
56
|
+
if (runtime === null) {
|
|
57
|
+
throw new Error(`Cannot resolve @gtkx/runtime from ${projectRoot}; is it installed?`);
|
|
58
|
+
}
|
|
59
|
+
return runtime;
|
|
60
|
+
};
|
|
61
|
+
const storeNodeModules = (runtime, react) => {
|
|
62
|
+
if (react !== null && canImport(react.nodeModules, runtime.nodeModules)) {
|
|
63
|
+
return react.nodeModules;
|
|
64
|
+
}
|
|
65
|
+
return runtime.nodeModules;
|
|
66
|
+
};
|
|
67
|
+
const findUnreachableConsumer = (projectRoot, nodeModules) => {
|
|
68
|
+
for (const name of STORE_CONSUMERS) {
|
|
69
|
+
const consumer = resolvePackage(projectRoot, name);
|
|
70
|
+
if (consumer !== null && !canImport(consumer.nodeModules, nodeModules)) {
|
|
71
|
+
return { name, nodeModules: consumer.nodeModules };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
};
|
|
76
|
+
const unreachableConsumerMessage = (consumer, nodeModules) => `Cannot write the generated store to ${nodeModules}: ${consumer.name} is installed in ` +
|
|
77
|
+
`${consumer.nodeModules}, above it, so that copy can never import the generated @gtkx/gi. Install every ` +
|
|
78
|
+
"@gtkx package in one node_modules, then run gtkx codegen again.";
|
|
79
|
+
const checkConsumers = (projectRoot, nodeModules) => {
|
|
80
|
+
const consumer = findUnreachableConsumer(projectRoot, nodeModules);
|
|
81
|
+
if (consumer !== null) {
|
|
82
|
+
throw new Error(unreachableConsumerMessage(consumer, nodeModules));
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const jsxOptions = (react, nodeModules) => react === null ? null : storeOptions(nodeModules, "jsx", react.version);
|
|
86
|
+
const getReactSubexports = (react) => react === null ? [] : subexportNames(react.dir);
|
|
87
|
+
const storePaths = (nodeModules) => STORE_NAMES.flatMap((name) => [join(nodeModules, STORE_DIR, name), join(nodeModules, SCOPE, name)]);
|
|
88
|
+
const findStoreNodeModules = (projectRoot) => {
|
|
89
|
+
const runtime = resolvePackage(projectRoot, "@gtkx/runtime");
|
|
90
|
+
if (runtime === null) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return storeNodeModules(runtime, resolvePackage(projectRoot, "@gtkx/react"));
|
|
94
|
+
};
|
|
95
|
+
const getShadowingStorePaths = (projectRoot) => {
|
|
96
|
+
const nodeModules = join(projectRoot, "node_modules");
|
|
97
|
+
const anchored = findStoreNodeModules(projectRoot);
|
|
98
|
+
if (anchored === null || anchored === nodeModules) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return storePaths(nodeModules);
|
|
102
|
+
};
|
|
103
|
+
const stagingRoots = (projectRoot) => {
|
|
104
|
+
const nodeModules = join(projectRoot, "node_modules");
|
|
105
|
+
const anchored = findStoreNodeModules(projectRoot);
|
|
106
|
+
return anchored === null || anchored === nodeModules ? [nodeModules] : [nodeModules, anchored];
|
|
107
|
+
};
|
|
108
|
+
const sweepProjectStaging = (projectRoot) => {
|
|
109
|
+
for (const nodeModules of stagingRoots(projectRoot)) {
|
|
110
|
+
for (const name of STORE_NAMES) {
|
|
111
|
+
sweepStagingDirs(join(nodeModules, STORE_DIR, name));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
39
115
|
/**
|
|
40
116
|
* Resolves where a project's `@gtkx/gi` and `@gtkx/jsx` stores belong, from the project root alone. The
|
|
41
117
|
* result supplies every `runCodegen` input except `libraries` and `girPath`, so a caller that has
|
|
42
118
|
* already resolved those can spread it straight into the call.
|
|
43
119
|
*
|
|
120
|
+
* Both stores go in one `node_modules`, found by walking the project's `node_modules` chain upwards:
|
|
121
|
+
* the one `@gtkx/react` resolves from, or `@gtkx/runtime`'s when no React is installed. That is the
|
|
122
|
+
* project's own directory when it installs those packages itself, and the workspace root when npm or
|
|
123
|
+
* yarn hoisted them there. Keeping the pair together is what lets the jsx store import the gi store, and
|
|
124
|
+
* anchoring them where the `@gtkx` packages sit is what lets `@gtkx/react`, the CLI, and the project's
|
|
125
|
+
* sources all reach the bindings. A package manager that hoists therefore gives every project sharing
|
|
126
|
+
* that `node_modules` one shared store.
|
|
127
|
+
*
|
|
44
128
|
* Store versions come from the installed `@gtkx/runtime` and `@gtkx/react`, so a dependency upgrade
|
|
45
129
|
* invalidates the stores. Pass explicit `gi` or `jsx` options to `runCodegen` to override any of it.
|
|
46
130
|
*
|
|
47
|
-
* @param projectRoot Directory holding the project's `package.json
|
|
131
|
+
* @param projectRoot Directory holding the project's `package.json`, whose `node_modules` chain is walked.
|
|
48
132
|
* @returns The store locations and the React subexports that shape the jsx store.
|
|
49
|
-
* @throws If `@gtkx/runtime` cannot be resolved from the project
|
|
133
|
+
* @throws If `@gtkx/runtime` cannot be resolved from the project, or a `@gtkx` package that imports the
|
|
134
|
+
* bindings is installed above the `node_modules` the stores would go in, since it could not reach them.
|
|
50
135
|
*/
|
|
51
136
|
const resolveStore = (projectRoot) => {
|
|
52
|
-
const runtime =
|
|
53
|
-
if (runtime === null) {
|
|
54
|
-
throw new Error(`Cannot resolve @gtkx/runtime from ${projectRoot}; is it installed?`);
|
|
55
|
-
}
|
|
137
|
+
const runtime = resolveRuntime(projectRoot);
|
|
56
138
|
const react = resolvePackage(projectRoot, "@gtkx/react");
|
|
57
|
-
const nodeModules =
|
|
139
|
+
const nodeModules = storeNodeModules(runtime, react);
|
|
140
|
+
checkConsumers(projectRoot, nodeModules);
|
|
58
141
|
return {
|
|
59
142
|
gi: storeOptions(nodeModules, "gi", runtime.version),
|
|
60
|
-
jsx: react
|
|
61
|
-
reactSubexports:
|
|
143
|
+
jsx: jsxOptions(react, nodeModules),
|
|
144
|
+
reactSubexports: getReactSubexports(react),
|
|
62
145
|
};
|
|
63
146
|
};
|
|
64
|
-
export { resolveStore };
|
|
147
|
+
export { getShadowingStorePaths, resolveStore, sweepProjectStaging };
|
|
65
148
|
//# sourceMappingURL=resolve-store.js.map
|