@ts-for-gir/lib 4.0.0-beta.4 → 4.0.0-beta.41
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 +13 -1
- package/package.json +18 -31
- package/src/constants.ts +152 -0
- package/src/dependency-manager.ts +445 -0
- package/src/formatters/default.ts +7 -0
- package/src/formatters/formatter.ts +3 -0
- package/src/formatters/index.ts +3 -0
- package/src/formatters/json.ts +7 -0
- package/src/generators/generator.ts +65 -0
- package/src/generators/index.ts +2 -0
- package/src/generics/clutter.ts +80 -0
- package/src/generics/generify.ts +101 -0
- package/src/generics/gio.ts +91 -0
- package/src/generics/glib.ts +31 -0
- package/src/generics/gtk.ts +99 -0
- package/src/generics/meta.ts +50 -0
- package/src/generics/st.ts +206 -0
- package/src/generics/visitor.ts +484 -0
- package/src/gir/alias.ts +73 -0
- package/src/gir/callback.ts +79 -0
- package/src/gir/const.ts +73 -0
- package/src/gir/constructor.ts +91 -0
- package/src/gir/data.ts +12 -0
- package/src/gir/dependency-resolver.ts +81 -0
- package/src/gir/direct-allocation-constructor.ts +65 -0
- package/src/gir/enum-member.ts +51 -0
- package/src/gir/enum.ts +129 -0
- package/src/gir/error.ts +89 -0
- package/src/gir/function.ts +296 -0
- package/src/gir/generics.ts +66 -0
- package/src/gir/gir-complex-record.ts +7 -0
- package/src/gir/index.ts +25 -0
- package/src/gir/introspected-base.ts +104 -0
- package/src/gir/introspected-class-member.ts +15 -0
- package/src/gir/introspected-classes.ts +1484 -0
- package/src/gir/introspected-namespace-member.ts +24 -0
- package/src/gir/namespace.ts +76 -0
- package/src/gir/parameter.ts +199 -0
- package/src/gir/promisify.ts +209 -0
- package/src/gir/property.ts +203 -0
- package/src/gir/record.ts +488 -0
- package/src/gir/registry.ts +183 -0
- package/src/gir/signal.ts +278 -0
- package/src/gir-module.ts +719 -0
- package/src/gir.ts +869 -0
- package/src/index.ts +16 -0
- package/src/injections/gee08.ts +89 -0
- package/src/injections/gee1.ts +35 -0
- package/src/injections/gio.ts +720 -0
- package/src/injections/glib.ts +280 -0
- package/src/injections/gobject.ts +906 -0
- package/src/injections/gtk4.ts +23 -0
- package/src/injections/inject.ts +49 -0
- package/src/injections/shell.ts +49 -0
- package/src/injections/tracker1.ts +42 -0
- package/src/library-version.ts +50 -0
- package/src/logger.ts +104 -0
- package/src/messages.ts +57 -0
- package/src/templates/index.ts +1 -0
- package/src/templates/template-engine.ts +178 -0
- package/src/types/answer-version.ts +4 -0
- package/src/types/any-introspected-type.ts +5 -0
- package/src/types/class-function-types.ts +57 -0
- package/src/types/class-member.ts +5 -0
- package/src/types/class-parent.ts +14 -0
- package/src/types/class.ts +43 -0
- package/src/types/config-flags.ts +5 -0
- package/src/types/construct-name.ts +13 -0
- package/src/types/dependency-map.ts +4 -0
- package/src/types/dependency.ts +49 -0
- package/src/types/file-info.ts +14 -0
- package/src/types/format.ts +1 -0
- package/src/types/generator-constructor.ts +7 -0
- package/src/types/generics-config.ts +90 -0
- package/src/types/gir-any-element.ts +35 -0
- package/src/types/gir-module-interface.ts +22 -0
- package/src/types/gir-module-resolved.ts +32 -0
- package/src/types/gir-type-name.ts +20 -0
- package/src/types/index.ts +92 -0
- package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
- package/src/types/introspected.ts +18 -0
- package/src/types/local-name-check.ts +5 -0
- package/src/types/local-name-type.ts +1 -0
- package/src/types/local-name.ts +8 -0
- package/src/types/local-names.ts +5 -0
- package/src/types/metadata.ts +6 -0
- package/src/types/ns-loader.ts +6 -0
- package/src/types/options-base.ts +8 -0
- package/src/types/options-generation.ts +65 -0
- package/src/types/options-load.ts +6 -0
- package/src/types/options-transform.ts +5 -0
- package/src/types/output-format.ts +1 -0
- package/src/types/package-data-parsed.ts +28 -0
- package/src/types/package-data.ts +24 -0
- package/src/types/package-section-parsed.ts +9 -0
- package/src/types/parsed-gir.ts +5 -0
- package/src/types/parsed-package-data.ts +7 -0
- package/src/types/property-case.ts +1 -0
- package/src/types/resolve-type.ts +4 -0
- package/src/types/template-data.ts +8 -0
- package/src/types/template-options.ts +33 -0
- package/src/types/transformation-case.ts +9 -0
- package/src/types/transformations.ts +5 -0
- package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +14 -12
- package/src/types/ts-doc.ts +18 -0
- package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
- package/src/types/type-gir-class.ts +2 -0
- package/src/types/type-gir-element.ts +25 -0
- package/src/types/type-gir-enumeration-member.ts +2 -0
- package/{lib/types/type-gir-enumeration.d.ts → src/types/type-gir-enumeration.ts} +1 -1
- package/src/types/type-gir-function.ts +8 -0
- package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
- package/src/types/type-gir-method.ts +2 -0
- package/src/types/type-gir-parameter.ts +1 -0
- package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
- package/src/types/type-gir-variable.ts +1 -0
- package/src/types/type-ts-element.ts +13 -0
- package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
- package/src/types/type-ts-function.ts +1 -0
- package/src/types/type-ts-property.ts +1 -0
- package/src/types/user-config-load-result.ts +6 -0
- package/src/types/user-config.ts +70 -0
- package/src/util.ts +84 -0
- package/src/utils/conflicts/conflict-resolver.ts +122 -0
- package/src/utils/conflicts/function-conflict-detector.ts +139 -0
- package/src/utils/conflicts/index.ts +2 -0
- package/src/utils/conflicts.ts +593 -0
- package/src/utils/documentation.ts +471 -0
- package/src/utils/files.ts +71 -0
- package/src/utils/function-type-guards.ts +61 -0
- package/src/utils/generation.ts +69 -0
- package/src/utils/gir-parsing.ts +262 -0
- package/src/utils/girs.ts +113 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/naming.ts +188 -0
- package/src/utils/numbers.ts +8 -0
- package/src/utils/objects.ts +129 -0
- package/src/utils/path.ts +7 -0
- package/src/utils/registry.ts +5 -0
- package/src/utils/strings.ts +134 -0
- package/src/utils/type-resolution.ts +116 -0
- package/src/utils/types.ts +249 -0
- package/src/validators/class.ts +324 -0
- package/src/validators/function-parameters.ts +52 -0
- package/src/validators/interface.ts +20 -0
- package/src/visitor.ts +58 -0
- package/lib/constants.d.ts +0 -26
- package/lib/constants.js +0 -28
- package/lib/constants.js.map +0 -1
- package/lib/dependency-manager.d.ts +0 -183
- package/lib/dependency-manager.js +0 -401
- package/lib/dependency-manager.js.map +0 -1
- package/lib/formatters/default.d.ts +0 -4
- package/lib/formatters/default.js +0 -7
- package/lib/formatters/default.js.map +0 -1
- package/lib/formatters/formatter.d.ts +0 -3
- package/lib/formatters/formatter.js +0 -3
- package/lib/formatters/formatter.js.map +0 -1
- package/lib/formatters/json.d.ts +0 -4
- package/lib/formatters/json.js +0 -7
- package/lib/formatters/json.js.map +0 -1
- package/lib/generators/dts/glib.d.ts +0 -2
- package/lib/generators/dts/glib.js +0 -514
- package/lib/generators/dts/glib.js.map +0 -1
- package/lib/generators/dts/gobject.d.ts +0 -2
- package/lib/generators/dts/gobject.js +0 -117
- package/lib/generators/dts/gobject.js.map +0 -1
- package/lib/generators/dts-inline.d.ts +0 -8
- package/lib/generators/dts-inline.js +0 -59
- package/lib/generators/dts-inline.js.map +0 -1
- package/lib/generators/dts-modules.d.ts +0 -8
- package/lib/generators/dts-modules.js +0 -100
- package/lib/generators/dts-modules.js.map +0 -1
- package/lib/generators/dts.d.ts +0 -45
- package/lib/generators/dts.js +0 -682
- package/lib/generators/dts.js.map +0 -1
- package/lib/generators/generator.d.ts +0 -45
- package/lib/generators/generator.js +0 -9
- package/lib/generators/generator.js.map +0 -1
- package/lib/generators/index.d.ts +0 -5
- package/lib/generators/index.js +0 -6
- package/lib/generators/index.js.map +0 -1
- package/lib/generators/json.d.ts +0 -256
- package/lib/generators/json.js +0 -869
- package/lib/generators/json.js.map +0 -1
- package/lib/generics/clutter.d.ts +0 -26
- package/lib/generics/clutter.js +0 -49
- package/lib/generics/clutter.js.map +0 -1
- package/lib/generics/generify.d.ts +0 -2
- package/lib/generics/generify.js +0 -39
- package/lib/generics/generify.js.map +0 -1
- package/lib/generics/gio.d.ts +0 -7
- package/lib/generics/gio.js +0 -51
- package/lib/generics/gio.js.map +0 -1
- package/lib/generics/glib.d.ts +0 -7
- package/lib/generics/glib.js +0 -18
- package/lib/generics/glib.js.map +0 -1
- package/lib/generics/meta.d.ts +0 -21
- package/lib/generics/meta.js +0 -26
- package/lib/generics/meta.js.map +0 -1
- package/lib/generics/st.d.ts +0 -16
- package/lib/generics/st.js +0 -92
- package/lib/generics/st.js.map +0 -1
- package/lib/generics/visitor.d.ts +0 -20
- package/lib/generics/visitor.js +0 -255
- package/lib/generics/visitor.js.map +0 -1
- package/lib/gir/alias.d.ts +0 -24
- package/lib/gir/alias.js +0 -43
- package/lib/gir/alias.js.map +0 -1
- package/lib/gir/base.d.ts +0 -62
- package/lib/gir/base.js +0 -95
- package/lib/gir/base.js.map +0 -1
- package/lib/gir/class.d.ts +0 -189
- package/lib/gir/class.js +0 -1131
- package/lib/gir/class.js.map +0 -1
- package/lib/gir/const.d.ts +0 -25
- package/lib/gir/const.js +0 -43
- package/lib/gir/const.js.map +0 -1
- package/lib/gir/enum.d.ts +0 -45
- package/lib/gir/enum.js +0 -164
- package/lib/gir/enum.js.map +0 -1
- package/lib/gir/function.d.ts +0 -199
- package/lib/gir/function.js +0 -683
- package/lib/gir/function.js.map +0 -1
- package/lib/gir/generics.d.ts +0 -5
- package/lib/gir/generics.js +0 -57
- package/lib/gir/generics.js.map +0 -1
- package/lib/gir/namespace.d.ts +0 -21
- package/lib/gir/namespace.js +0 -57
- package/lib/gir/namespace.js.map +0 -1
- package/lib/gir/nodes.d.ts +0 -11
- package/lib/gir/nodes.js +0 -12
- package/lib/gir/nodes.js.map +0 -1
- package/lib/gir/property.d.ts +0 -60
- package/lib/gir/property.js +0 -128
- package/lib/gir/property.js.map +0 -1
- package/lib/gir/registry.d.ts +0 -51
- package/lib/gir/registry.js +0 -144
- package/lib/gir/registry.js.map +0 -1
- package/lib/gir/signal.d.ts +0 -33
- package/lib/gir/signal.js +0 -165
- package/lib/gir/signal.js.map +0 -1
- package/lib/gir/util.d.ts +0 -49
- package/lib/gir/util.js +0 -559
- package/lib/gir/util.js.map +0 -1
- package/lib/gir-module.d.ts +0 -112
- package/lib/gir-module.js +0 -570
- package/lib/gir-module.js.map +0 -1
- package/lib/gir.d.ts +0 -253
- package/lib/gir.js +0 -642
- package/lib/gir.js.map +0 -1
- package/lib/index.d.ts +0 -14
- package/lib/index.js +0 -17
- package/lib/index.js.map +0 -1
- package/lib/injections/gee08.d.ts +0 -7
- package/lib/injections/gee08.js +0 -68
- package/lib/injections/gee08.js.map +0 -1
- package/lib/injections/gee1.d.ts +0 -7
- package/lib/injections/gee1.js +0 -28
- package/lib/injections/gee1.js.map +0 -1
- package/lib/injections/gio.d.ts +0 -7
- package/lib/injections/gio.js +0 -431
- package/lib/injections/gio.js.map +0 -1
- package/lib/injections/glib.d.ts +0 -7
- package/lib/injections/glib.js +0 -204
- package/lib/injections/glib.js.map +0 -1
- package/lib/injections/gobject.d.ts +0 -7
- package/lib/injections/gobject.js +0 -479
- package/lib/injections/gobject.js.map +0 -1
- package/lib/injections/inject.d.ts +0 -4
- package/lib/injections/inject.js +0 -28
- package/lib/injections/inject.js.map +0 -1
- package/lib/injections/tracker1.d.ts +0 -7
- package/lib/injections/tracker1.js +0 -30
- package/lib/injections/tracker1.js.map +0 -1
- package/lib/library-version.d.ts +0 -10
- package/lib/library-version.js +0 -45
- package/lib/library-version.js.map +0 -1
- package/lib/logger.d.ts +0 -36
- package/lib/logger.js +0 -134
- package/lib/logger.js.map +0 -1
- package/lib/messages.d.ts +0 -26
- package/lib/messages.js +0 -42
- package/lib/messages.js.map +0 -1
- package/lib/registry.d.ts +0 -8
- package/lib/registry.js +0 -12
- package/lib/registry.js.map +0 -1
- package/lib/transformation.d.ts +0 -181
- package/lib/transformation.js +0 -480
- package/lib/transformation.js.map +0 -1
- package/lib/types/answer-version.d.ts +0 -4
- package/lib/types/answer-version.js +0 -2
- package/lib/types/answer-version.js.map +0 -1
- package/lib/types/class-parent.d.ts +0 -13
- package/lib/types/class-parent.js +0 -2
- package/lib/types/class-parent.js.map +0 -1
- package/lib/types/config-flags.d.ts +0 -4
- package/lib/types/config-flags.js +0 -2
- package/lib/types/config-flags.js.map +0 -1
- package/lib/types/construct-name.d.ts +0 -1
- package/lib/types/construct-name.js +0 -2
- package/lib/types/construct-name.js.map +0 -1
- package/lib/types/dependency-map.d.ts +0 -4
- package/lib/types/dependency-map.js +0 -2
- package/lib/types/dependency-map.js.map +0 -1
- package/lib/types/dependency.d.ts +0 -42
- package/lib/types/dependency.js +0 -2
- package/lib/types/dependency.js.map +0 -1
- package/lib/types/file-info.d.ts +0 -14
- package/lib/types/file-info.js +0 -2
- package/lib/types/file-info.js.map +0 -1
- package/lib/types/format.d.ts +0 -1
- package/lib/types/format.js +0 -2
- package/lib/types/format.js.map +0 -1
- package/lib/types/gir-alias-element.d.ts +0 -4
- package/lib/types/gir-alias-element.js +0 -2
- package/lib/types/gir-alias-element.js.map +0 -1
- package/lib/types/gir-annotation.d.ts +0 -9
- package/lib/types/gir-annotation.js +0 -2
- package/lib/types/gir-annotation.js.map +0 -1
- package/lib/types/gir-any-element.d.ts +0 -2
- package/lib/types/gir-any-element.js +0 -2
- package/lib/types/gir-any-element.js.map +0 -1
- package/lib/types/gir-bitfield-element.d.ts +0 -6
- package/lib/types/gir-bitfield-element.js +0 -2
- package/lib/types/gir-bitfield-element.js.map +0 -1
- package/lib/types/gir-callable-param-element.d.ts +0 -4
- package/lib/types/gir-callable-param-element.js +0 -2
- package/lib/types/gir-callable-param-element.js.map +0 -1
- package/lib/types/gir-callable-params.d.ts +0 -7
- package/lib/types/gir-callable-params.js +0 -2
- package/lib/types/gir-callable-params.js.map +0 -1
- package/lib/types/gir-callable-return.d.ts +0 -5
- package/lib/types/gir-callable-return.js +0 -2
- package/lib/types/gir-callable-return.js.map +0 -1
- package/lib/types/gir-callback-element.d.ts +0 -6
- package/lib/types/gir-callback-element.js +0 -2
- package/lib/types/gir-callback-element.js.map +0 -1
- package/lib/types/gir-class-element.d.ts +0 -17
- package/lib/types/gir-class-element.js +0 -2
- package/lib/types/gir-class-element.js.map +0 -1
- package/lib/types/gir-constant-element.d.ts +0 -4
- package/lib/types/gir-constant-element.js +0 -2
- package/lib/types/gir-constant-element.js.map +0 -1
- package/lib/types/gir-constructor-element.d.ts +0 -6
- package/lib/types/gir-constructor-element.js +0 -2
- package/lib/types/gir-constructor-element.js.map +0 -1
- package/lib/types/gir-enum-element.d.ts +0 -6
- package/lib/types/gir-enum-element.js +0 -2
- package/lib/types/gir-enum-element.js.map +0 -1
- package/lib/types/gir-field-element.d.ts +0 -5
- package/lib/types/gir-field-element.js +0 -2
- package/lib/types/gir-field-element.js.map +0 -1
- package/lib/types/gir-function-element.d.ts +0 -6
- package/lib/types/gir-function-element.js +0 -2
- package/lib/types/gir-function-element.js.map +0 -1
- package/lib/types/gir-instance-parameter.d.ts +0 -8
- package/lib/types/gir-instance-parameter.js +0 -2
- package/lib/types/gir-instance-parameter.js.map +0 -1
- package/lib/types/gir-interface-element.d.ts +0 -16
- package/lib/types/gir-interface-element.js +0 -2
- package/lib/types/gir-interface-element.js.map +0 -1
- package/lib/types/gir-member-element.d.ts +0 -5
- package/lib/types/gir-member-element.js +0 -2
- package/lib/types/gir-member-element.js.map +0 -1
- package/lib/types/gir-method-element.d.ts +0 -7
- package/lib/types/gir-method-element.js +0 -2
- package/lib/types/gir-method-element.js.map +0 -1
- package/lib/types/gir-module-resolved-by.d.ts +0 -15
- package/lib/types/gir-module-resolved-by.js +0 -2
- package/lib/types/gir-module-resolved-by.js.map +0 -1
- package/lib/types/gir-modules-grouped-map.d.ts +0 -4
- package/lib/types/gir-modules-grouped-map.js +0 -2
- package/lib/types/gir-modules-grouped-map.js.map +0 -1
- package/lib/types/gir-modules-grouped.d.ts +0 -12
- package/lib/types/gir-modules-grouped.js +0 -2
- package/lib/types/gir-modules-grouped.js.map +0 -1
- package/lib/types/gir-namespace.d.ts +0 -27
- package/lib/types/gir-namespace.js +0 -2
- package/lib/types/gir-namespace.js.map +0 -1
- package/lib/types/gir-property-element.d.ts +0 -4
- package/lib/types/gir-property-element.js +0 -2
- package/lib/types/gir-property-element.js.map +0 -1
- package/lib/types/gir-record-element.d.ts +0 -10
- package/lib/types/gir-record-element.js +0 -2
- package/lib/types/gir-record-element.js.map +0 -1
- package/lib/types/gir-repository.d.ts +0 -5
- package/lib/types/gir-repository.js +0 -2
- package/lib/types/gir-repository.js.map +0 -1
- package/lib/types/gir-signal.d.ts +0 -10
- package/lib/types/gir-signal.js +0 -2
- package/lib/types/gir-signal.js.map +0 -1
- package/lib/types/gir-type-name.d.ts +0 -2
- package/lib/types/gir-type-name.js +0 -2
- package/lib/types/gir-type-name.js.map +0 -1
- package/lib/types/gir-union-element.d.ts +0 -9
- package/lib/types/gir-union-element.js +0 -2
- package/lib/types/gir-union-element.js.map +0 -1
- package/lib/types/gir-unparsed-number.d.ts +0 -2
- package/lib/types/gir-unparsed-number.js +0 -2
- package/lib/types/gir-unparsed-number.js.map +0 -1
- package/lib/types/gir-virtual-method.d.ts +0 -6
- package/lib/types/gir-virtual-method.js +0 -2
- package/lib/types/gir-virtual-method.js.map +0 -1
- package/lib/types/index.d.ts +0 -79
- package/lib/types/index.js +0 -80
- package/lib/types/index.js.map +0 -1
- package/lib/types/inheritance-table.js +0 -2
- package/lib/types/inheritance-table.js.map +0 -1
- package/lib/types/local-name-check.d.ts +0 -4
- package/lib/types/local-name-check.js +0 -2
- package/lib/types/local-name-check.js.map +0 -1
- package/lib/types/local-name-type.d.ts +0 -1
- package/lib/types/local-name-type.js +0 -2
- package/lib/types/local-name-type.js.map +0 -1
- package/lib/types/local-name.d.ts +0 -7
- package/lib/types/local-name.js +0 -2
- package/lib/types/local-name.js.map +0 -1
- package/lib/types/local-names.d.ts +0 -4
- package/lib/types/local-names.js +0 -2
- package/lib/types/local-names.js.map +0 -1
- package/lib/types/metadata.d.ts +0 -8
- package/lib/types/metadata.js +0 -2
- package/lib/types/metadata.js.map +0 -1
- package/lib/types/options-base.d.ts +0 -4
- package/lib/types/options-base.js +0 -2
- package/lib/types/options-base.js.map +0 -1
- package/lib/types/options-generation.d.ts +0 -33
- package/lib/types/options-generation.js +0 -2
- package/lib/types/options-generation.js.map +0 -1
- package/lib/types/options-load.d.ts +0 -5
- package/lib/types/options-load.js +0 -2
- package/lib/types/options-load.js.map +0 -1
- package/lib/types/options-transform.d.ts +0 -4
- package/lib/types/options-transform.js +0 -2
- package/lib/types/options-transform.js.map +0 -1
- package/lib/types/output-format.d.ts +0 -1
- package/lib/types/output-format.js +0 -2
- package/lib/types/output-format.js.map +0 -1
- package/lib/types/package-data-parsed.d.ts +0 -28
- package/lib/types/package-data-parsed.js +0 -2
- package/lib/types/package-data-parsed.js.map +0 -1
- package/lib/types/package-data.d.ts +0 -23
- package/lib/types/package-data.js +0 -2
- package/lib/types/package-data.js.map +0 -1
- package/lib/types/package-section-parsed.d.ts +0 -8
- package/lib/types/package-section-parsed.js +0 -2
- package/lib/types/package-section-parsed.js.map +0 -1
- package/lib/types/parsed-gir.d.ts +0 -5
- package/lib/types/parsed-gir.js +0 -2
- package/lib/types/parsed-gir.js.map +0 -1
- package/lib/types/parsed-package-data.d.ts +0 -6
- package/lib/types/parsed-package-data.js +0 -2
- package/lib/types/parsed-package-data.js.map +0 -1
- package/lib/types/part-of-class.d.ts +0 -7
- package/lib/types/part-of-class.js +0 -2
- package/lib/types/part-of-class.js.map +0 -1
- package/lib/types/part-of-module.d.ts +0 -6
- package/lib/types/part-of-module.js +0 -2
- package/lib/types/part-of-module.js.map +0 -1
- package/lib/types/property-case.d.ts +0 -1
- package/lib/types/property-case.js +0 -2
- package/lib/types/property-case.js.map +0 -1
- package/lib/types/resolve-type.d.ts +0 -4
- package/lib/types/resolve-type.js +0 -6
- package/lib/types/resolve-type.js.map +0 -1
- package/lib/types/template-data.d.ts +0 -7
- package/lib/types/template-data.js +0 -2
- package/lib/types/template-data.js.map +0 -1
- package/lib/types/transformation-case.d.ts +0 -1
- package/lib/types/transformation-case.js +0 -2
- package/lib/types/transformation-case.js.map +0 -1
- package/lib/types/transformations.d.ts +0 -4
- package/lib/types/transformations.js +0 -2
- package/lib/types/transformations.js.map +0 -1
- package/lib/types/ts-doc-tag.js +0 -2
- package/lib/types/ts-doc-tag.js.map +0 -1
- package/lib/types/ts-doc.d.ts +0 -16
- package/lib/types/ts-doc.js +0 -2
- package/lib/types/ts-doc.js.map +0 -1
- package/lib/types/type-gir-alias.js +0 -2
- package/lib/types/type-gir-alias.js.map +0 -1
- package/lib/types/type-gir-class.d.ts +0 -2
- package/lib/types/type-gir-class.js +0 -2
- package/lib/types/type-gir-class.js.map +0 -1
- package/lib/types/type-gir-element.d.ts +0 -3
- package/lib/types/type-gir-element.js +0 -2
- package/lib/types/type-gir-element.js.map +0 -1
- package/lib/types/type-gir-enumeration-member.d.ts +0 -2
- package/lib/types/type-gir-enumeration-member.js +0 -2
- package/lib/types/type-gir-enumeration-member.js.map +0 -1
- package/lib/types/type-gir-enumeration.js +0 -2
- package/lib/types/type-gir-enumeration.js.map +0 -1
- package/lib/types/type-gir-function.d.ts +0 -1
- package/lib/types/type-gir-function.js +0 -2
- package/lib/types/type-gir-function.js.map +0 -1
- package/lib/types/type-gir-interface.js +0 -2
- package/lib/types/type-gir-interface.js.map +0 -1
- package/lib/types/type-gir-method.d.ts +0 -2
- package/lib/types/type-gir-method.js +0 -2
- package/lib/types/type-gir-method.js.map +0 -1
- package/lib/types/type-gir-parameter.d.ts +0 -1
- package/lib/types/type-gir-parameter.js +0 -2
- package/lib/types/type-gir-parameter.js.map +0 -1
- package/lib/types/type-gir-property.js +0 -2
- package/lib/types/type-gir-property.js.map +0 -1
- package/lib/types/type-gir-variable.d.ts +0 -1
- package/lib/types/type-gir-variable.js +0 -2
- package/lib/types/type-gir-variable.js.map +0 -1
- package/lib/types/type-ts-element.d.ts +0 -3
- package/lib/types/type-ts-element.js +0 -2
- package/lib/types/type-ts-element.js.map +0 -1
- package/lib/types/type-ts-enumeration-member.js +0 -2
- package/lib/types/type-ts-enumeration-member.js.map +0 -1
- package/lib/types/type-ts-function.d.ts +0 -1
- package/lib/types/type-ts-function.js +0 -2
- package/lib/types/type-ts-function.js.map +0 -1
- package/lib/types/type-ts-property.d.ts +0 -1
- package/lib/types/type-ts-property.js +0 -2
- package/lib/types/type-ts-property.js.map +0 -1
- package/lib/types/user-config-load-result.d.ts +0 -6
- package/lib/types/user-config-load-result.js +0 -2
- package/lib/types/user-config-load-result.js.map +0 -1
- package/lib/types/user-config.d.ts +0 -35
- package/lib/types/user-config.js +0 -2
- package/lib/types/user-config.js.map +0 -1
- package/lib/util.d.ts +0 -20
- package/lib/util.js +0 -67
- package/lib/util.js.map +0 -1
- package/lib/utils.d.ts +0 -268
- package/lib/utils.js +0 -417
- package/lib/utils.js.map +0 -1
- package/lib/validators/class.d.ts +0 -7
- package/lib/validators/class.js +0 -217
- package/lib/validators/class.js.map +0 -1
- package/lib/validators/interface.d.ts +0 -5
- package/lib/validators/interface.js +0 -16
- package/lib/validators/interface.js.map +0 -1
- package/lib/visitor.d.ts +0 -35
- package/lib/visitor.js +0 -29
- package/lib/visitor.js.map +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { IntrospectedAlias } from "../gir/alias.ts";
|
|
2
|
+
import type { IntrospectedCallback } from "../gir/callback.ts";
|
|
3
|
+
import type { IntrospectedConstant } from "../gir/const.ts";
|
|
4
|
+
import type { IntrospectedConstructor } from "../gir/constructor.ts";
|
|
5
|
+
import type { IntrospectedDirectAllocationConstructor } from "../gir/direct-allocation-constructor.ts";
|
|
6
|
+
import type { IntrospectedEnum } from "../gir/enum.ts";
|
|
7
|
+
import type { GirEnumMember } from "../gir/enum-member.ts";
|
|
8
|
+
import type { IntrospectedError } from "../gir/error.ts";
|
|
9
|
+
import type { IntrospectedFunction } from "../gir/function.ts";
|
|
10
|
+
import type {
|
|
11
|
+
IntrospectedClass,
|
|
12
|
+
IntrospectedClassCallback,
|
|
13
|
+
IntrospectedClassFunction,
|
|
14
|
+
IntrospectedInterface,
|
|
15
|
+
IntrospectedStaticClassFunction,
|
|
16
|
+
IntrospectedVirtualClassFunction,
|
|
17
|
+
} from "../gir/introspected-classes.ts";
|
|
18
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
19
|
+
import type { IntrospectedFunctionParameter } from "../gir/parameter.ts";
|
|
20
|
+
import type { IntrospectedField, IntrospectedProperty } from "../gir/property.ts";
|
|
21
|
+
import type { IntrospectedRecord } from "../gir/record.ts";
|
|
22
|
+
import type { IntrospectedSignal, IntrospectedSignalType } from "../gir/signal.ts";
|
|
23
|
+
import type { TypeExpression } from "../gir.ts";
|
|
24
|
+
import type { OptionsGeneration } from "../types/options-generation.ts";
|
|
25
|
+
|
|
26
|
+
// TODO: Move to types/
|
|
27
|
+
export interface GenericDescriptor {
|
|
28
|
+
type: TypeExpression;
|
|
29
|
+
name: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export abstract class FormatGenerator<T = string> {
|
|
33
|
+
protected namespace: IntrospectedNamespace;
|
|
34
|
+
protected options: OptionsGeneration;
|
|
35
|
+
|
|
36
|
+
constructor(namespace: IntrospectedNamespace, options: OptionsGeneration) {
|
|
37
|
+
this.namespace = namespace;
|
|
38
|
+
this.options = options;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
abstract generateNamespace(node: IntrospectedNamespace): Promise<T | null>;
|
|
42
|
+
abstract stringifyNamespace(node: IntrospectedNamespace): Promise<string | null>;
|
|
43
|
+
|
|
44
|
+
abstract generateCallback(node: IntrospectedCallback): T;
|
|
45
|
+
abstract generateClassCallback(node: IntrospectedClassCallback): T;
|
|
46
|
+
abstract generateAlias(node: IntrospectedAlias): T;
|
|
47
|
+
abstract generateConstructor(node: IntrospectedConstructor): T;
|
|
48
|
+
abstract generateDirectAllocationConstructor(node: IntrospectedDirectAllocationConstructor): T;
|
|
49
|
+
abstract generateConstructorFunction(node: IntrospectedConstructor): T;
|
|
50
|
+
abstract generateRecord(node: IntrospectedRecord): T;
|
|
51
|
+
abstract generateInterface(node: IntrospectedInterface): T;
|
|
52
|
+
abstract generateEnumMember(node: GirEnumMember): T;
|
|
53
|
+
abstract generateError(node: IntrospectedError): T;
|
|
54
|
+
abstract generateEnum(node: IntrospectedEnum): T;
|
|
55
|
+
abstract generateConst(node: IntrospectedConstant): T;
|
|
56
|
+
abstract generateClass(node: IntrospectedClass): T;
|
|
57
|
+
abstract generateParameter(node: IntrospectedFunctionParameter): T;
|
|
58
|
+
abstract generateProperty(node: IntrospectedProperty, construct?: boolean): T;
|
|
59
|
+
abstract generateField(node: IntrospectedField): T;
|
|
60
|
+
abstract generateSignal(node: IntrospectedSignal, type?: IntrospectedSignalType): T;
|
|
61
|
+
abstract generateFunction(node: IntrospectedFunction): T;
|
|
62
|
+
abstract generateClassFunction(node: IntrospectedClassFunction): T;
|
|
63
|
+
abstract generateStaticClassFunction(node: IntrospectedStaticClassFunction): T;
|
|
64
|
+
abstract generateVirtualClassFunction(node: IntrospectedVirtualClassFunction): T;
|
|
65
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import { GenericType } from "../gir.ts";
|
|
3
|
+
import type { ClutterTemplateConfig } from "../types/generics-config.ts";
|
|
4
|
+
|
|
5
|
+
function createClutterTemplate(version: string): ClutterTemplateConfig {
|
|
6
|
+
return {
|
|
7
|
+
namespace: "Clutter",
|
|
8
|
+
version,
|
|
9
|
+
modifier: (namespace: IntrospectedNamespace, inferGenerics: boolean) => {
|
|
10
|
+
if (!inferGenerics) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
applyClutterGenerics(namespace);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function applyClutterGenerics(namespace: IntrospectedNamespace): void {
|
|
20
|
+
const Actor = namespace.assertClass("Actor");
|
|
21
|
+
const Content = namespace.assertClass("Content");
|
|
22
|
+
const LayoutManager = namespace.assertClass("LayoutManager");
|
|
23
|
+
|
|
24
|
+
// Add generics to Actor
|
|
25
|
+
Actor.addGeneric({
|
|
26
|
+
default: LayoutManager.getType(),
|
|
27
|
+
constraint: LayoutManager.getType(),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Actor.addGeneric({
|
|
31
|
+
default: Content.getType(),
|
|
32
|
+
constraint: Content.getType(),
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Update layout_manager properties
|
|
36
|
+
updatePropertyType(Actor, ["layout_manager", "layoutManager"], new GenericType("A", Content.getType()));
|
|
37
|
+
|
|
38
|
+
// Update content properties
|
|
39
|
+
updatePropertyType(Actor, ["content"], new GenericType("B", Content.getType()));
|
|
40
|
+
|
|
41
|
+
// Configure Clone class
|
|
42
|
+
const Clone = namespace.assertClass("Clone");
|
|
43
|
+
Clone.addGeneric({
|
|
44
|
+
default: Actor.getType(),
|
|
45
|
+
constraint: Actor.getType(),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
updatePropertyType(Clone, ["source"], new GenericType("A", Content.getType()));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function updatePropertyType(
|
|
52
|
+
cls: ReturnType<IntrospectedNamespace["assertClass"]>,
|
|
53
|
+
propertyNames: string[],
|
|
54
|
+
newType: GenericType,
|
|
55
|
+
): void {
|
|
56
|
+
cls.props
|
|
57
|
+
.filter((p) => propertyNames.includes(p.name))
|
|
58
|
+
.forEach((prop) => {
|
|
59
|
+
// TODO: Automatically infer such changes.
|
|
60
|
+
prop.type = newType;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Version exports
|
|
65
|
+
export const clutter10 = createClutterTemplate("10");
|
|
66
|
+
export const clutter11 = createClutterTemplate("11");
|
|
67
|
+
export const clutter12 = createClutterTemplate("12");
|
|
68
|
+
export const clutter13 = createClutterTemplate("13");
|
|
69
|
+
/** Clutter-14 was introduced with GNOME 45 */
|
|
70
|
+
export const clutter14 = createClutterTemplate("14");
|
|
71
|
+
/** Clutter-15 was introduced with GNOME 47 */
|
|
72
|
+
export const clutter15 = createClutterTemplate("15");
|
|
73
|
+
/** Clutter-16 was introduced with GNOME 48 */
|
|
74
|
+
export const clutter16 = createClutterTemplate("16");
|
|
75
|
+
/** Clutter-17 was introduced with GNOME 49 */
|
|
76
|
+
export const clutter17 = createClutterTemplate("17");
|
|
77
|
+
// Possibly future versions, adjust if necessary
|
|
78
|
+
export const clutter18 = createClutterTemplate("18");
|
|
79
|
+
export const clutter19 = createClutterTemplate("19");
|
|
80
|
+
export const clutter20 = createClutterTemplate("20");
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { NSRegistry } from "../gir/registry.ts";
|
|
2
|
+
import type { NamespaceDefinition } from "../types/generics-config.ts";
|
|
3
|
+
import {
|
|
4
|
+
clutter10,
|
|
5
|
+
clutter11,
|
|
6
|
+
clutter12,
|
|
7
|
+
clutter13,
|
|
8
|
+
clutter14,
|
|
9
|
+
clutter15,
|
|
10
|
+
clutter16,
|
|
11
|
+
clutter17,
|
|
12
|
+
clutter18,
|
|
13
|
+
clutter19,
|
|
14
|
+
clutter20,
|
|
15
|
+
} from "./clutter.ts";
|
|
16
|
+
import gio from "./gio.ts";
|
|
17
|
+
import glib from "./glib.ts";
|
|
18
|
+
import gtk from "./gtk.ts";
|
|
19
|
+
import { meta10, meta11, meta12, meta13, meta14, meta15, meta16, meta17, meta18, meta19, meta20 } from "./meta.ts";
|
|
20
|
+
import { st1, st12, st13, st14, st15, st16, st17, st18, st19, st20 } from "./st.ts";
|
|
21
|
+
import { GenericVisitor } from "./visitor.ts";
|
|
22
|
+
|
|
23
|
+
// Core namespace definitions that are required
|
|
24
|
+
const CORE_DEFINITIONS: NamespaceDefinition[] = [gio, glib];
|
|
25
|
+
|
|
26
|
+
// Optional namespace definitions
|
|
27
|
+
const OPTIONAL_DEFINITIONS: NamespaceDefinition[] = [
|
|
28
|
+
gtk,
|
|
29
|
+
clutter10,
|
|
30
|
+
clutter11,
|
|
31
|
+
clutter12,
|
|
32
|
+
clutter13,
|
|
33
|
+
clutter14,
|
|
34
|
+
clutter15,
|
|
35
|
+
clutter16,
|
|
36
|
+
clutter17,
|
|
37
|
+
clutter18,
|
|
38
|
+
clutter19,
|
|
39
|
+
clutter20,
|
|
40
|
+
st1,
|
|
41
|
+
st12,
|
|
42
|
+
st13,
|
|
43
|
+
st14,
|
|
44
|
+
st15,
|
|
45
|
+
st16,
|
|
46
|
+
st17,
|
|
47
|
+
st18,
|
|
48
|
+
st19,
|
|
49
|
+
st20,
|
|
50
|
+
meta10,
|
|
51
|
+
meta11,
|
|
52
|
+
meta12,
|
|
53
|
+
meta13,
|
|
54
|
+
meta14,
|
|
55
|
+
meta15,
|
|
56
|
+
meta16,
|
|
57
|
+
meta17,
|
|
58
|
+
meta18,
|
|
59
|
+
meta19,
|
|
60
|
+
meta20,
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
function createDefinitionProcessor(registry: NSRegistry, inferGenerics: boolean, required: boolean = true) {
|
|
64
|
+
return (definition: NamespaceDefinition) => {
|
|
65
|
+
const { namespace: namespaceName, version, modifier } = definition;
|
|
66
|
+
const namespace = registry.namespace(namespaceName, version);
|
|
67
|
+
|
|
68
|
+
if (namespace) {
|
|
69
|
+
modifier(namespace, inferGenerics);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (required) {
|
|
74
|
+
throw new Error(`Could not generify ${namespaceName} ${version}`);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function applyDefinitions(
|
|
80
|
+
definitions: NamespaceDefinition[],
|
|
81
|
+
processor: (definition: NamespaceDefinition) => void,
|
|
82
|
+
): void {
|
|
83
|
+
for (const definition of definitions) {
|
|
84
|
+
processor(definition);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function generify(registry: NSRegistry, inferGenerics: boolean): void {
|
|
89
|
+
const processCoreDefinition = createDefinitionProcessor(registry, inferGenerics, true);
|
|
90
|
+
const processOptionalDefinition = createDefinitionProcessor(registry, inferGenerics, false);
|
|
91
|
+
|
|
92
|
+
// Apply core definitions (required)
|
|
93
|
+
applyDefinitions(CORE_DEFINITIONS, processCoreDefinition);
|
|
94
|
+
|
|
95
|
+
// Apply optional definitions
|
|
96
|
+
applyDefinitions(OPTIONAL_DEFINITIONS, processOptionalDefinition);
|
|
97
|
+
|
|
98
|
+
// Register visitor for runtime transformations
|
|
99
|
+
const visitor = new GenericVisitor(inferGenerics);
|
|
100
|
+
registry.registerTransformation(visitor);
|
|
101
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { IntrospectedBaseClass, IntrospectedClassFunction } from "../gir/introspected-classes.ts";
|
|
2
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
3
|
+
import { AnyType, Generic, GenericType, GenerifiedTypeIdentifier, StringType, TypeIdentifier } from "../gir.ts";
|
|
4
|
+
import type { GioConfig } from "../types/generics-config.ts";
|
|
5
|
+
|
|
6
|
+
function createGioConfig(): GioConfig {
|
|
7
|
+
return {
|
|
8
|
+
namespace: "Gio",
|
|
9
|
+
version: "2.0",
|
|
10
|
+
modifier: (namespace: IntrospectedNamespace) => {
|
|
11
|
+
applyGioGenerics(namespace);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function applyGioGenerics(namespace: IntrospectedNamespace): void {
|
|
17
|
+
const GObject = namespace.assertInstalledImport("GObject").assertClass("Object");
|
|
18
|
+
|
|
19
|
+
setupAsyncInitable(namespace, GObject);
|
|
20
|
+
setupListModel(namespace, GObject);
|
|
21
|
+
setupListStore(namespace, GObject);
|
|
22
|
+
setupSettingsValueMethods(namespace);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function setupAsyncInitable(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
|
|
26
|
+
const AsyncInitable = namespace.getClass("AsyncInitable");
|
|
27
|
+
if (!AsyncInitable) {
|
|
28
|
+
throw new Error("Gio.AsyncInitable not found.");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
AsyncInitable.addGeneric({
|
|
32
|
+
constraint: GObject.getType(),
|
|
33
|
+
default: GObject.getType(),
|
|
34
|
+
propagate: false,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function setupListModel(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
|
|
39
|
+
const ListModel = namespace.getClass("ListModel");
|
|
40
|
+
if (!ListModel) {
|
|
41
|
+
throw new Error("Gio.ListModel not found.");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
ListModel.addGeneric({
|
|
45
|
+
default: GObject.getType(),
|
|
46
|
+
constraint: GObject.getType(),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function setupListStore(namespace: IntrospectedNamespace, GObject: IntrospectedBaseClass): void {
|
|
51
|
+
const ListModel = namespace.getClass("ListModel");
|
|
52
|
+
const ListStore = namespace.getClass("ListStore");
|
|
53
|
+
|
|
54
|
+
if (!ListStore) {
|
|
55
|
+
throw new Error("Gio.ListStore not found.");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
ListStore.addGeneric({
|
|
59
|
+
deriveFrom: ListModel?.getType(),
|
|
60
|
+
default: GObject.getType(),
|
|
61
|
+
constraint: GObject.getType(),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function setupSettingsValueMethods(namespace: IntrospectedNamespace): void {
|
|
66
|
+
const Settings = namespace.assertClass("Settings");
|
|
67
|
+
const methodNames = ["get_value", "get_default_value", "get_user_value"];
|
|
68
|
+
|
|
69
|
+
Settings.members = Settings.members.map((member) => {
|
|
70
|
+
if (!methodNames.includes(member.name)) {
|
|
71
|
+
return member;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return updateSettingsMethod(member);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function updateSettingsMethod(method: IntrospectedClassFunction): IntrospectedClassFunction {
|
|
79
|
+
method.generics.push(new Generic(new GenericType("T"), AnyType, undefined, StringType));
|
|
80
|
+
|
|
81
|
+
const returnType = method.return().deepUnwrap();
|
|
82
|
+
if (returnType instanceof TypeIdentifier && returnType.is("GLib", "Variant")) {
|
|
83
|
+
return method.copy({
|
|
84
|
+
returnType: method.return().rewrap(new GenerifiedTypeIdentifier("Variant", "GLib", [new GenericType("T")])),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return method;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export default createGioConfig();
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import { AnyType, StringType } from "../gir.ts";
|
|
3
|
+
import type { GlibConfig } from "../types/generics-config.ts";
|
|
4
|
+
|
|
5
|
+
function createGlibConfig(): GlibConfig {
|
|
6
|
+
return {
|
|
7
|
+
namespace: "GLib",
|
|
8
|
+
version: "2.0",
|
|
9
|
+
modifier: (namespace: IntrospectedNamespace) => {
|
|
10
|
+
applyGlibGenerics(namespace);
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function applyGlibGenerics(namespace: IntrospectedNamespace): void {
|
|
16
|
+
const HashTable = namespace.getClass("HashTable");
|
|
17
|
+
|
|
18
|
+
if (!HashTable) {
|
|
19
|
+
throw new Error("GLib.HashTable not found.");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
HashTable.addGeneric({
|
|
23
|
+
default: StringType,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
HashTable.addGeneric({
|
|
27
|
+
default: AnyType,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default createGlibConfig();
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
|
|
2
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
3
|
+
import { Generic, GenericType, GenerifiedTypeIdentifier } from "../gir.ts";
|
|
4
|
+
import type { GtkConfig } from "../types/generics-config.ts";
|
|
5
|
+
|
|
6
|
+
function createGtkConfig(): GtkConfig {
|
|
7
|
+
return {
|
|
8
|
+
namespace: "Gtk",
|
|
9
|
+
version: "4.0",
|
|
10
|
+
modifier: (namespace: IntrospectedNamespace) => {
|
|
11
|
+
applyGtkGenerics(namespace);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function applyGtkGenerics(namespace: IntrospectedNamespace): void {
|
|
17
|
+
const classes = getGtkClasses(namespace);
|
|
18
|
+
const GObject = namespace.assertInstalledImport("GObject").assertClass("Object");
|
|
19
|
+
|
|
20
|
+
setupStringListGenerics(classes, GObject);
|
|
21
|
+
updateBindModelMethods(classes, GObject);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function getGtkClasses(namespace: IntrospectedNamespace) {
|
|
25
|
+
const requiredClasses = {
|
|
26
|
+
FlowBox: namespace.getClass("FlowBox"),
|
|
27
|
+
ListBox: namespace.getClass("ListBox"),
|
|
28
|
+
StringList: namespace.getClass("StringList"),
|
|
29
|
+
StringObject: namespace.getClass("StringObject"),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Validate required classes exist
|
|
33
|
+
for (const [name, cls] of Object.entries(requiredClasses)) {
|
|
34
|
+
if (!cls) {
|
|
35
|
+
throw new Error(`Gtk.${name} not found.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return requiredClasses as Record<
|
|
40
|
+
keyof typeof requiredClasses,
|
|
41
|
+
NonNullable<(typeof requiredClasses)[keyof typeof requiredClasses]>
|
|
42
|
+
>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function setupStringListGenerics(classes: ReturnType<typeof getGtkClasses>, GObject: IntrospectedBaseClass): void {
|
|
46
|
+
const { StringList, StringObject } = classes;
|
|
47
|
+
|
|
48
|
+
StringList.addGeneric({
|
|
49
|
+
default: StringObject.getType(),
|
|
50
|
+
constraint: GObject.getType(),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function updateBindModelMethods(classes: ReturnType<typeof getGtkClasses>, GObject: IntrospectedBaseClass): void {
|
|
55
|
+
const { FlowBox, ListBox } = classes;
|
|
56
|
+
|
|
57
|
+
const bindModelConfigs = [
|
|
58
|
+
{ cls: FlowBox, widgetFuncName: "FlowBoxCreateWidgetFunc" },
|
|
59
|
+
{ cls: ListBox, widgetFuncName: "ListBoxCreateWidgetFunc" },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
for (const config of bindModelConfigs) {
|
|
63
|
+
updateBindModelMethod(config.cls, config.widgetFuncName, GObject);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function updateBindModelMethod(
|
|
68
|
+
cls: IntrospectedBaseClass,
|
|
69
|
+
widgetFuncName: string,
|
|
70
|
+
GObject: IntrospectedBaseClass,
|
|
71
|
+
): void {
|
|
72
|
+
cls.members = cls.members.map((member) => {
|
|
73
|
+
if (member.name !== "bind_model") {
|
|
74
|
+
return member;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
member.generics.push(new Generic(new GenericType("A"), GObject.getType(), undefined, GObject.getType()));
|
|
78
|
+
|
|
79
|
+
return member.copy({
|
|
80
|
+
parameters: member.parameters.map((param) => {
|
|
81
|
+
if (param.name === "model") {
|
|
82
|
+
return param.copy({
|
|
83
|
+
type: new GenerifiedTypeIdentifier("ListModel", "Gio", [new GenericType("A")]),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (param.name === "create_widget_func") {
|
|
88
|
+
return param.copy({
|
|
89
|
+
type: new GenerifiedTypeIdentifier(widgetFuncName, "Gtk", [new GenericType("A")]),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return param;
|
|
94
|
+
}),
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export default createGtkConfig();
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import { GenerifiedTypeIdentifier } from "../gir.ts";
|
|
3
|
+
import type { MetaTemplateConfig } from "../types/generics-config.ts";
|
|
4
|
+
|
|
5
|
+
function createMetaTemplate(version: string): MetaTemplateConfig {
|
|
6
|
+
return {
|
|
7
|
+
namespace: "Meta",
|
|
8
|
+
version,
|
|
9
|
+
modifier: (namespace: IntrospectedNamespace, inferGenerics: boolean) => {
|
|
10
|
+
if (!inferGenerics) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
applyMetaGenerics(namespace);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function applyMetaGenerics(namespace: IntrospectedNamespace): void {
|
|
20
|
+
// Connect BackgroundActor to BackgroundContent
|
|
21
|
+
const LayoutManager = namespace.assertInstalledImport("Clutter").assertClass("LayoutManager");
|
|
22
|
+
const BackgroundContent = namespace.assertClass("BackgroundContent");
|
|
23
|
+
const BackgroundActor = namespace.assertClass("BackgroundActor");
|
|
24
|
+
|
|
25
|
+
const parent = BackgroundActor.superType;
|
|
26
|
+
if (parent) {
|
|
27
|
+
BackgroundActor.superType = new GenerifiedTypeIdentifier(parent.name, parent.namespace, [
|
|
28
|
+
LayoutManager.getType(),
|
|
29
|
+
BackgroundContent.getType(),
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Version exports
|
|
35
|
+
export const meta10 = createMetaTemplate("10");
|
|
36
|
+
export const meta11 = createMetaTemplate("11");
|
|
37
|
+
export const meta12 = createMetaTemplate("12");
|
|
38
|
+
export const meta13 = createMetaTemplate("13");
|
|
39
|
+
/** Meta-14 was introduced with GNOME 45 */
|
|
40
|
+
export const meta14 = createMetaTemplate("14");
|
|
41
|
+
/** Meta-15 was introduced with GNOME 47 */
|
|
42
|
+
export const meta15 = createMetaTemplate("15");
|
|
43
|
+
/** Meta-16 was introduced with GNOME 48 */
|
|
44
|
+
export const meta16 = createMetaTemplate("16");
|
|
45
|
+
/** Meta-17 was introduced with GNOME 49 */
|
|
46
|
+
export const meta17 = createMetaTemplate("17");
|
|
47
|
+
// Possibly future versions, adjust if necessary
|
|
48
|
+
export const meta18 = createMetaTemplate("18");
|
|
49
|
+
export const meta19 = createMetaTemplate("19");
|
|
50
|
+
export const meta20 = createMetaTemplate("20");
|