@ts-for-gir/lib 4.0.0-beta.25 → 4.0.0-beta.26
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/package.json +12 -26
- package/src/constants.ts +154 -0
- package/src/dependency-manager.ts +427 -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 +71 -0
- package/src/generics/generify.ts +74 -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 +41 -0
- package/src/generics/st.ts +197 -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 +126 -0
- package/src/gir/error.ts +82 -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 +1517 -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 +477 -0
- package/src/gir/registry.ts +184 -0
- package/src/gir/signal.ts +246 -0
- package/src/gir-module.ts +703 -0
- package/src/gir.ts +892 -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 +707 -0
- package/src/injections/glib.ts +275 -0
- package/src/injections/gobject.ts +901 -0
- package/src/injections/gtk4.ts +23 -0
- package/src/injections/inject.ts +43 -0
- package/src/injections/shell.ts +45 -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 +3 -0
- package/src/types/class-function-types.ts +49 -0
- package/src/types/class-member.ts +5 -0
- package/src/types/class-parent.ts +14 -0
- package/src/types/class.ts +45 -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/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
- package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
- 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 +94 -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 +7 -0
- package/src/types/options-base.ts +8 -0
- package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
- 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/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
- package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
- 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} +5 -3
- package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
- package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
- package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
- package/src/types/type-gir-element.ts +25 -0
- package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-enumeration-member.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/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
- 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-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
- package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
- package/src/types/user-config-load-result.ts +6 -0
- package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
- 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 +490 -0
- package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
- 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 +243 -0
- package/src/utils/girs.ts +113 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/naming.ts +188 -0
- package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
- package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
- 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 +247 -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 -25
- package/lib/constants.js +0 -93
- package/lib/constants.js.map +0 -1
- package/lib/dependency-manager.d.ts +0 -151
- package/lib/dependency-manager.js +0 -340
- 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 -10
- package/lib/generators/dts-inline.js +0 -57
- package/lib/generators/dts-inline.js.map +0 -1
- package/lib/generators/dts-modules.d.ts +0 -10
- package/lib/generators/dts-modules.js +0 -98
- package/lib/generators/dts-modules.js.map +0 -1
- package/lib/generators/dts.d.ts +0 -45
- package/lib/generators/dts.js +0 -683
- 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 -257
- package/lib/generators/json.js +0 -866
- package/lib/generators/json.js.map +0 -1
- package/lib/generics/clutter.d.ts +0 -41
- package/lib/generics/clutter.js +0 -52
- package/lib/generics/clutter.js.map +0 -1
- package/lib/generics/generify.d.ts +0 -2
- package/lib/generics/generify.js +0 -47
- 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/gtk.d.ts +0 -7
- package/lib/generics/gtk.js +0 -56
- package/lib/generics/gtk.js.map +0 -1
- package/lib/generics/meta.d.ts +0 -36
- package/lib/generics/meta.js +0 -29
- package/lib/generics/meta.js.map +0 -1
- package/lib/generics/st.d.ts +0 -31
- package/lib/generics/st.js +0 -98
- 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 -83
- package/lib/gir/base.js.map +0 -1
- package/lib/gir/class.d.ts +0 -228
- package/lib/gir/class.js +0 -1151
- 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 -200
- 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/index.d.ts +0 -14
- package/lib/gir/index.js +0 -15
- package/lib/gir/index.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/promisify.d.ts +0 -5
- package/lib/gir/promisify.js +0 -158
- package/lib/gir/promisify.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 -147
- package/lib/gir/registry.js.map +0 -1
- package/lib/gir/signal.d.ts +0 -36
- package/lib/gir/signal.js +0 -169
- package/lib/gir/signal.js.map +0 -1
- package/lib/gir/util.d.ts +0 -49
- package/lib/gir/util.js +0 -561
- package/lib/gir/util.js.map +0 -1
- package/lib/gir-module.d.ts +0 -104
- package/lib/gir-module.js +0 -584
- package/lib/gir-module.js.map +0 -1
- package/lib/gir.d.ts +0 -254
- package/lib/gir.js +0 -639
- package/lib/gir.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -16
- 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 -563
- package/lib/injections/gio.js.map +0 -1
- package/lib/injections/glib.d.ts +0 -7
- package/lib/injections/glib.js +0 -210
- package/lib/injections/glib.js.map +0 -1
- package/lib/injections/gobject.d.ts +0 -7
- package/lib/injections/gobject.js +0 -594
- package/lib/injections/gobject.js.map +0 -1
- package/lib/injections/gtk4.d.ts +0 -7
- package/lib/injections/gtk4.js +0 -19
- package/lib/injections/gtk4.js.map +0 -1
- package/lib/injections/inject.d.ts +0 -4
- package/lib/injections/inject.js +0 -33
- package/lib/injections/inject.js.map +0 -1
- package/lib/injections/shell.d.ts +0 -20
- package/lib/injections/shell.js +0 -34
- package/lib/injections/shell.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 -23
- package/lib/messages.js +0 -39
- 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 -169
- package/lib/transformation.js +0 -393
- 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.js +0 -2
- package/lib/types/dependency.js.map +0 -1
- 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 -7
- 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.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.js +0 -2
- package/lib/types/package-data-parsed.js.map +0 -1
- 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.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.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.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.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.js +0 -2
- package/lib/types/type-ts-function.js.map +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.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/documentation.d.ts +0 -13
- package/lib/utils/documentation.js.map +0 -1
- package/lib/utils/files.d.ts +0 -21
- package/lib/utils/files.js +0 -62
- package/lib/utils/files.js.map +0 -1
- package/lib/utils/girs.d.ts +0 -45
- package/lib/utils/girs.js +0 -101
- package/lib/utils/girs.js.map +0 -1
- package/lib/utils/index.d.ts +0 -8
- package/lib/utils/index.js +0 -9
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/naming.d.ts +0 -13
- package/lib/utils/naming.js +0 -40
- package/lib/utils/naming.js.map +0 -1
- package/lib/utils/numbers.js +0 -9
- package/lib/utils/numbers.js.map +0 -1
- package/lib/utils/objects.d.ts +0 -136
- package/lib/utils/objects.js.map +0 -1
- package/lib/utils/path.d.ts +0 -1
- package/lib/utils/path.js +0 -7
- package/lib/utils/path.js.map +0 -1
- package/lib/utils/strings.d.ts +0 -74
- package/lib/utils/strings.js +0 -121
- package/lib/utils/strings.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/function-parameters.d.ts +0 -14
- package/lib/validators/function-parameters.js +0 -31
- package/lib/validators/function-parameters.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 @@
|
|
|
1
|
+
export type PropertyCase = 'both' | 'camel' | 'underscore'
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Data } from 'ejs'
|
|
2
|
+
import type { OptionsGeneration } from './options-generation.ts'
|
|
3
|
+
import type { GirModule } from '../gir-module.ts'
|
|
4
|
+
|
|
5
|
+
export interface TemplateData extends Data, Partial<OptionsGeneration> {
|
|
6
|
+
girModule?: GirModule
|
|
7
|
+
importName?: string
|
|
8
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type ejs from "ejs";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for template rendering
|
|
5
|
+
*/
|
|
6
|
+
export interface TemplateRenderOptions {
|
|
7
|
+
/** EJS rendering options */
|
|
8
|
+
ejsOptions?: Partial<ejs.Options>;
|
|
9
|
+
/** Whether to include append templates */
|
|
10
|
+
includeAppend?: boolean;
|
|
11
|
+
/** Custom template directory override */
|
|
12
|
+
templateDir?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Result of template loading operation
|
|
17
|
+
*/
|
|
18
|
+
export interface TemplateLoadResult {
|
|
19
|
+
/** Main template content */
|
|
20
|
+
prepend: string;
|
|
21
|
+
/** Append template content (if exists) */
|
|
22
|
+
append: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Template file processing result
|
|
27
|
+
*/
|
|
28
|
+
export interface TemplateFileResult {
|
|
29
|
+
/** The rendered template content */
|
|
30
|
+
content: string;
|
|
31
|
+
/** The output file path */
|
|
32
|
+
outputPath: string;
|
|
33
|
+
}
|
|
@@ -9,13 +9,15 @@ export interface TsDocTag {
|
|
|
9
9
|
/**
|
|
10
10
|
* The name of this tag.
|
|
11
11
|
*/
|
|
12
|
-
tagName: string
|
|
12
|
+
tagName: string
|
|
13
|
+
|
|
13
14
|
/**
|
|
14
15
|
* The name of the related parameter when this is a ```@param``` tag.
|
|
15
16
|
*/
|
|
16
|
-
paramName: string
|
|
17
|
+
paramName: string
|
|
18
|
+
|
|
17
19
|
/**
|
|
18
20
|
* The actual body text of this tag.
|
|
19
21
|
*/
|
|
20
|
-
text: string
|
|
22
|
+
text: string
|
|
21
23
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { TsDocTag } from './ts-doc-tag.
|
|
1
|
+
import type { TsDocTag } from './ts-doc-tag.ts'
|
|
2
|
+
|
|
2
3
|
/**
|
|
3
4
|
* A model that represents a comment.
|
|
4
5
|
*
|
|
@@ -8,9 +9,10 @@ export interface TsDoc {
|
|
|
8
9
|
/**
|
|
9
10
|
* The full body text of the comment..
|
|
10
11
|
*/
|
|
11
|
-
text: string
|
|
12
|
+
text: string
|
|
13
|
+
|
|
12
14
|
/**
|
|
13
15
|
* All associated tags.
|
|
14
16
|
*/
|
|
15
|
-
tags: TsDocTag[]
|
|
17
|
+
tags: TsDocTag[]
|
|
16
18
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript `type` */
|
|
2
|
-
export type TypeGirAlias = 'alias'
|
|
2
|
+
export type TypeGirAlias = 'alias'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript class */
|
|
2
|
-
export type TypeGirClass = 'class' | 'record' | 'interface' | 'union'
|
|
2
|
+
export type TypeGirClass = 'class' | 'record' | 'interface' | 'union'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TypeGirClass,
|
|
3
|
+
TypeGirMethod,
|
|
4
|
+
TypeGirVariable,
|
|
5
|
+
TypeGirAlias,
|
|
6
|
+
TypeGirEnumeration,
|
|
7
|
+
TypeGirEnumerationMember,
|
|
8
|
+
TypeGirInterface,
|
|
9
|
+
TypeGirParameter,
|
|
10
|
+
TypeGirProperty,
|
|
11
|
+
TypeGirFunction,
|
|
12
|
+
} from './index.ts'
|
|
13
|
+
|
|
14
|
+
/** Any gir element type */
|
|
15
|
+
export type TypeGirElement =
|
|
16
|
+
| TypeGirClass
|
|
17
|
+
| TypeGirMethod
|
|
18
|
+
| TypeGirVariable
|
|
19
|
+
| TypeGirAlias
|
|
20
|
+
| TypeGirEnumeration
|
|
21
|
+
| TypeGirEnumerationMember
|
|
22
|
+
| TypeGirInterface
|
|
23
|
+
| TypeGirParameter
|
|
24
|
+
| TypeGirProperty
|
|
25
|
+
| TypeGirFunction
|
package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript enumeration */
|
|
2
|
-
export type TypeGirEnumerationMember = 'enum-member' | 'bitfield-member'
|
|
2
|
+
export type TypeGirEnumerationMember = 'enum-member' | 'bitfield-member'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript enumeration */
|
|
2
|
-
export type
|
|
2
|
+
export type TypeGirEnumeration = 'enum' | 'bitfield'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript interface */
|
|
2
|
-
export type TypeGirInterface = 'callback'
|
|
2
|
+
export type TypeGirInterface = 'callback'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript method (or static function) of a class */
|
|
2
|
-
export type TypeGirMethod = 'virtual' | 'signal' | 'method' | 'constructor' | 'function' | 'static'
|
|
2
|
+
export type TypeGirMethod = 'virtual' | 'signal' | 'method' | 'constructor' | 'function' | 'static'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TypeGirParameter = 'callable-param'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript field / property */
|
|
2
|
-
export type TypeGirProperty = 'property' | 'field' | 'constant'
|
|
2
|
+
export type TypeGirProperty = 'property' | 'field' | 'constant'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TypeGirVariable = 'constant'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TypeTsFunction, TypeTsProperty } from './index.ts'
|
|
2
|
+
|
|
3
|
+
/** Any typescript element type */
|
|
4
|
+
export type TypeTsElement =
|
|
5
|
+
| 'class'
|
|
6
|
+
| 'interface'
|
|
7
|
+
| 'enum'
|
|
8
|
+
| 'enum-member'
|
|
9
|
+
| 'constant'
|
|
10
|
+
| 'event-methods'
|
|
11
|
+
| 'type'
|
|
12
|
+
| TypeTsFunction
|
|
13
|
+
| TypeTsProperty
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript enumeration */
|
|
2
|
-
export type
|
|
2
|
+
export type TypeTsEnumerationMember = 'enum-member'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type TypeTsFunction = 'static-function' | 'constructor' | 'function' | 'method' | 'event-methods' | 'interface'
|
|
1
|
+
export type TypeTsFunction = 'static-function' | 'constructor' | 'function' | 'method' | 'event-methods' | 'interface'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type TypeTsProperty = 'static-property' | 'property' | 'constructor-property'
|
|
1
|
+
export type TypeTsProperty = 'static-property' | 'property' | 'constructor-property'
|
|
@@ -3,31 +3,31 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface UserConfig {
|
|
5
5
|
/** root / working directory of your project */
|
|
6
|
-
root: string
|
|
6
|
+
root: string
|
|
7
7
|
/** directory to output to */
|
|
8
|
-
outdir: string | null
|
|
8
|
+
outdir: string | null
|
|
9
9
|
/** GIR directories */
|
|
10
|
-
girDirectories: string[]
|
|
10
|
+
girDirectories: string[]
|
|
11
11
|
/** Switch on/off the verbose mode */
|
|
12
|
-
verbose: boolean
|
|
12
|
+
verbose: boolean
|
|
13
13
|
/** Do not ask for package versions if multiple versions are found */
|
|
14
|
-
ignoreVersionConflicts: boolean
|
|
14
|
+
ignoreVersionConflicts: boolean
|
|
15
15
|
/** print the output to console and create no files */
|
|
16
|
-
print: boolean
|
|
16
|
+
print: boolean
|
|
17
17
|
/** GIR modules to load, e.g. 'Gio-2.0'. Accepts multiple modules */
|
|
18
|
-
modules: string[]
|
|
18
|
+
modules: string[]
|
|
19
19
|
/** modules that should be ignored */
|
|
20
|
-
ignore?: string[]
|
|
20
|
+
ignore?: string[]
|
|
21
21
|
/** Do not export all symbols for each module as a namespace */
|
|
22
|
-
noNamespace: boolean
|
|
22
|
+
noNamespace: boolean
|
|
23
23
|
/** Do not generate documentation comments */
|
|
24
|
-
noComments: boolean
|
|
24
|
+
noComments: boolean
|
|
25
25
|
/** Generate promisified functions for async/finish calls */
|
|
26
|
-
promisify: boolean
|
|
26
|
+
promisify: boolean
|
|
27
27
|
/** Scope of the generated NPM packages */
|
|
28
|
-
npmScope: string
|
|
28
|
+
npmScope: string
|
|
29
29
|
/** Uses the workspace protocol for the generated packages which can be used with package managers like Yarn and PNPM */
|
|
30
|
-
workspace: boolean
|
|
30
|
+
workspace: boolean
|
|
31
31
|
/**
|
|
32
32
|
* Only use the version prefix for the ambient module exports.
|
|
33
33
|
* This is useful if, for whatever reason, you want to use different library versions of the same library in your project.
|
|
@@ -38,13 +38,21 @@ export interface UserConfig {
|
|
|
38
38
|
* declare module 'gi://Gtk?version=3.0' {...}
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
onlyVersionPrefix: boolean
|
|
41
|
+
onlyVersionPrefix: boolean
|
|
42
42
|
/** Do not prettify the generated types */
|
|
43
|
-
noPrettyPrint: boolean
|
|
43
|
+
noPrettyPrint: boolean
|
|
44
44
|
/** Disable GLib.Variant class with string parsing */
|
|
45
|
-
noAdvancedVariants: boolean
|
|
45
|
+
noAdvancedVariants: boolean
|
|
46
46
|
/**
|
|
47
47
|
* Generate the typescript types with package.json support
|
|
48
48
|
*/
|
|
49
|
-
package: boolean
|
|
49
|
+
package: boolean
|
|
50
|
+
/**
|
|
51
|
+
* Enable generation problem reporter and create a detailed report file
|
|
52
|
+
*/
|
|
53
|
+
reporter: boolean
|
|
54
|
+
/**
|
|
55
|
+
* Output file path for the reporter
|
|
56
|
+
*/
|
|
57
|
+
reporterOutput: string
|
|
50
58
|
}
|
package/src/util.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple two-key map.
|
|
3
|
+
*/
|
|
4
|
+
export class TwoKeyMap<K1, K2, V> {
|
|
5
|
+
private baseMap = new Map<K1, Map<K2, V>>();
|
|
6
|
+
|
|
7
|
+
forEach(op: (v: V) => void) {
|
|
8
|
+
this.baseMap.forEach((map) => {
|
|
9
|
+
map.forEach((v) => {
|
|
10
|
+
op(v);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
has(key1: K1, key2: K2): boolean {
|
|
16
|
+
const obj = this.baseMap.get(key1);
|
|
17
|
+
|
|
18
|
+
if (!obj) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return obj.has(key2);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
getIfOnly(key1: K1): readonly [K2, V] | undefined {
|
|
26
|
+
const obj = this.baseMap.get(key1);
|
|
27
|
+
|
|
28
|
+
if (!obj) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (obj.size === 1) {
|
|
33
|
+
const [k2] = obj.keys();
|
|
34
|
+
const v = obj.get(k2);
|
|
35
|
+
|
|
36
|
+
if (!v) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return [k2, v] as const;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get(key1: K1, key2: K2): V | undefined {
|
|
47
|
+
const obj = this.baseMap.get(key1);
|
|
48
|
+
|
|
49
|
+
if (!obj) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return obj.get(key2);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
set(key1: K1, key2: K2, value: V): void {
|
|
57
|
+
let obj = this.baseMap.get(key1);
|
|
58
|
+
|
|
59
|
+
if (!obj) {
|
|
60
|
+
obj = new Map<K2, V>();
|
|
61
|
+
|
|
62
|
+
this.baseMap.set(key1, obj);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
obj.set(key2, value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* If the predicate returns a value other than undefined,
|
|
71
|
+
* that value is returned. It combines the .find() and
|
|
72
|
+
* .map() APIs for convenience.
|
|
73
|
+
*
|
|
74
|
+
* @param arr
|
|
75
|
+
* @param predicate
|
|
76
|
+
*/
|
|
77
|
+
export function findMap<T, K>(arr: T[], predicate: (p: T) => K | undefined): K | undefined {
|
|
78
|
+
for (const a of arr) {
|
|
79
|
+
const val = predicate(a);
|
|
80
|
+
if (val !== undefined) return val;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { IntrospectedClassMember } from "../../gir/introspected-class-member.ts";
|
|
2
|
+
import type { IntrospectedBaseClass, IntrospectedClassFunction } from "../../gir/introspected-classes.ts";
|
|
3
|
+
import type { IntrospectedNamespace } from "../../gir/namespace.ts";
|
|
4
|
+
import { IntrospectedProperty } from "../../gir/property.ts";
|
|
5
|
+
import type { TypeIdentifier } from "../../gir.ts";
|
|
6
|
+
import { ConflictType, TypeConflict } from "../../gir.ts";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Detects what type of conflict a class member has, if any
|
|
10
|
+
*/
|
|
11
|
+
export function detectConflictType<
|
|
12
|
+
T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
|
|
13
|
+
>(
|
|
14
|
+
namespace: IntrospectedNamespace,
|
|
15
|
+
clazz: IntrospectedBaseClass,
|
|
16
|
+
element: T,
|
|
17
|
+
thisType: TypeIdentifier,
|
|
18
|
+
): ConflictType | undefined {
|
|
19
|
+
// Check field conflicts
|
|
20
|
+
const fieldConflict = checkFieldConflicts(clazz, element);
|
|
21
|
+
if (fieldConflict) {
|
|
22
|
+
return fieldConflict;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Check property conflicts
|
|
26
|
+
const propertyConflict = checkPropertyConflicts(namespace, clazz, element, thisType);
|
|
27
|
+
if (propertyConflict) {
|
|
28
|
+
return propertyConflict;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Check function name conflicts
|
|
32
|
+
return checkFunctionNameConflicts(namespace, clazz, element, thisType);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Creates a conflict element wrapper for the given element
|
|
37
|
+
*/
|
|
38
|
+
export function createConflictElement<
|
|
39
|
+
T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
|
|
40
|
+
>(element: T, conflictType: ConflictType): T | null {
|
|
41
|
+
if (element instanceof IntrospectedProperty) {
|
|
42
|
+
const conflictProperty = element.copy();
|
|
43
|
+
conflictProperty.type = new TypeConflict(conflictProperty.type, conflictType);
|
|
44
|
+
return conflictProperty as T;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// For other types, we might need to implement specific conflict handling
|
|
48
|
+
// For now, return the original element
|
|
49
|
+
return element;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function checkFieldConflicts<T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty>(
|
|
53
|
+
clazz: IntrospectedBaseClass,
|
|
54
|
+
element: T,
|
|
55
|
+
): ConflictType | undefined {
|
|
56
|
+
if (!element.name) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const hasFieldConflict = clazz.fields.some((field) => field.name === element.name);
|
|
61
|
+
|
|
62
|
+
if (hasFieldConflict) {
|
|
63
|
+
if (element instanceof IntrospectedProperty) {
|
|
64
|
+
return ConflictType.PROPERTY_NAME_CONFLICT;
|
|
65
|
+
}
|
|
66
|
+
return ConflictType.FIELD_NAME_CONFLICT;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function checkPropertyConflicts<T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty>(
|
|
73
|
+
_namespace: IntrospectedNamespace,
|
|
74
|
+
clazz: IntrospectedBaseClass,
|
|
75
|
+
element: T,
|
|
76
|
+
_thisType: TypeIdentifier,
|
|
77
|
+
): ConflictType | undefined {
|
|
78
|
+
if (!element.name) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const hasPropertyConflict = clazz.props.some((property) => property.name === element.name && property !== element);
|
|
83
|
+
|
|
84
|
+
if (hasPropertyConflict) {
|
|
85
|
+
// Check if this is an accessor property conflict
|
|
86
|
+
if (isAccessorProperty(element)) {
|
|
87
|
+
return ConflictType.ACCESSOR_PROPERTY_CONFLICT;
|
|
88
|
+
}
|
|
89
|
+
return ConflictType.PROPERTY_ACCESSOR_CONFLICT;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function checkFunctionNameConflicts<
|
|
96
|
+
T extends IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
|
|
97
|
+
>(
|
|
98
|
+
_namespace: IntrospectedNamespace,
|
|
99
|
+
clazz: IntrospectedBaseClass,
|
|
100
|
+
element: T,
|
|
101
|
+
_thisType: TypeIdentifier,
|
|
102
|
+
): ConflictType | undefined {
|
|
103
|
+
if (!element.name) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const hasFunctionConflict = clazz.members.some((member) => member.name === element.name && member !== element);
|
|
108
|
+
|
|
109
|
+
if (hasFunctionConflict) {
|
|
110
|
+
return ConflictType.FUNCTION_NAME_CONFLICT;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function isAccessorProperty(
|
|
117
|
+
element: IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty,
|
|
118
|
+
): boolean {
|
|
119
|
+
// Check if the element is an accessor property
|
|
120
|
+
// This is a simplified check - in practice, you might need more sophisticated logic
|
|
121
|
+
return element instanceof IntrospectedProperty && element.readable && element.writable;
|
|
122
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { IntrospectedConstructor } from "../../gir/constructor.ts";
|
|
2
|
+
import type { IntrospectedFunction } from "../../gir/function.ts";
|
|
3
|
+
import type { IntrospectedClassFunction } from "../../gir/introspected-classes.ts";
|
|
4
|
+
import type { IntrospectedNamespace } from "../../gir/namespace.ts";
|
|
5
|
+
import type { IntrospectedFunctionParameter } from "../../gir/parameter.ts";
|
|
6
|
+
import type { TypeIdentifier } from "../../gir.ts";
|
|
7
|
+
import { isSubtypeOf } from "../type-resolution.ts";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Checks if two functions are conflicting based on their signatures
|
|
11
|
+
*/
|
|
12
|
+
export function isConflictingFunction(
|
|
13
|
+
namespace: IntrospectedNamespace,
|
|
14
|
+
childThis: TypeIdentifier,
|
|
15
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
16
|
+
parentThis: TypeIdentifier,
|
|
17
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
18
|
+
): boolean {
|
|
19
|
+
if (!parent.isIntrospectable || !child.isIntrospectable) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Handle constructor conflicts
|
|
24
|
+
if (isConstructorConflict(namespace, childThis, child, parentThis, parent)) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Handle mixed constructor/function conflicts
|
|
29
|
+
if (isMixedConstructorFunctionConflict(child, parent)) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Handle different function types (no conflict if different prototypes)
|
|
34
|
+
if (hasDifferentPrototypes(child, parent)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Check parameter and return type conflicts
|
|
39
|
+
return hasParameterOrReturnTypeConflicts(namespace, childThis, child, parentThis, parent);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function isConstructorConflict(
|
|
43
|
+
namespace: IntrospectedNamespace,
|
|
44
|
+
childThis: TypeIdentifier,
|
|
45
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
46
|
+
parentThis: TypeIdentifier,
|
|
47
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
48
|
+
): boolean {
|
|
49
|
+
if (!(child instanceof IntrospectedConstructor && parent instanceof IntrospectedConstructor)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
child.parameters.length > parent.parameters.length ||
|
|
55
|
+
!isSubtypeOf(namespace, childThis, parentThis, child.return(), parent.return()) ||
|
|
56
|
+
child.parameters.some((p, i) => !isSubtypeOf(namespace, childThis, parentThis, p.type, parent.parameters[i].type))
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function isMixedConstructorFunctionConflict(
|
|
61
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
62
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
63
|
+
): boolean {
|
|
64
|
+
return child instanceof IntrospectedConstructor !== parent instanceof IntrospectedConstructor;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function hasDifferentPrototypes(
|
|
68
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
69
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
70
|
+
): boolean {
|
|
71
|
+
// This occurs if two functions of the same name are passed but they
|
|
72
|
+
// are different types (e.g. GirStaticClassFunction vs GirClassFunction)
|
|
73
|
+
return Object.getPrototypeOf(child) !== Object.getPrototypeOf(parent);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function hasParameterOrReturnTypeConflicts(
|
|
77
|
+
namespace: IntrospectedNamespace,
|
|
78
|
+
childThis: TypeIdentifier,
|
|
79
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
80
|
+
parentThis: TypeIdentifier,
|
|
81
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
82
|
+
): boolean {
|
|
83
|
+
// Check basic parameter conflicts
|
|
84
|
+
if (child.parameters.length > parent.parameters.length) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Check return type conflicts
|
|
89
|
+
if (!isSubtypeOf(namespace, childThis, parentThis, child.return(), parent.return())) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Check parameter type conflicts
|
|
94
|
+
if (hasParameterTypeConflicts(namespace, childThis, child.parameters, parentThis, parent.parameters)) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Check output parameter conflicts if both functions support them
|
|
99
|
+
return hasOutputParameterConflicts(namespace, childThis, child, parentThis, parent);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function hasParameterTypeConflicts(
|
|
103
|
+
namespace: IntrospectedNamespace,
|
|
104
|
+
childThis: TypeIdentifier,
|
|
105
|
+
childParams: IntrospectedFunctionParameter[],
|
|
106
|
+
parentThis: TypeIdentifier,
|
|
107
|
+
parentParams: IntrospectedFunctionParameter[],
|
|
108
|
+
): boolean {
|
|
109
|
+
return childParams.some(
|
|
110
|
+
(childParam, i) => !isSubtypeOf(namespace, childThis, parentThis, childParam.type, parentParams[i].type),
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function hasOutputParameterConflicts(
|
|
115
|
+
namespace: IntrospectedNamespace,
|
|
116
|
+
childThis: TypeIdentifier,
|
|
117
|
+
child: IntrospectedFunction | IntrospectedClassFunction | IntrospectedConstructor,
|
|
118
|
+
parentThis: TypeIdentifier,
|
|
119
|
+
parent: IntrospectedClassFunction | IntrospectedFunction | IntrospectedConstructor,
|
|
120
|
+
): boolean {
|
|
121
|
+
// Only check output parameters if both functions have them (constructors don't have output_parameters)
|
|
122
|
+
const childHasOutputParams = "output_parameters" in child;
|
|
123
|
+
const parentHasOutputParams = "output_parameters" in parent;
|
|
124
|
+
|
|
125
|
+
if (!childHasOutputParams || !parentHasOutputParams) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Length mismatch
|
|
130
|
+
if (child.output_parameters.length !== parent.output_parameters.length) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Type mismatch
|
|
135
|
+
return child.output_parameters.some(
|
|
136
|
+
(childParam, i) =>
|
|
137
|
+
!isSubtypeOf(namespace, childThis, parentThis, childParam.type, parent.output_parameters[i].type),
|
|
138
|
+
);
|
|
139
|
+
}
|