@ts-for-gir/lib 4.0.0-beta.9 → 4.0.0-rc.10
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 +125 -0
- package/src/dependency-manager.ts +463 -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 +81 -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 +51 -0
- package/src/generics/st.ts +207 -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 +297 -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 +1566 -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 +214 -0
- package/src/gir/property.ts +218 -0
- package/src/gir/record.ts +488 -0
- package/src/gir/registry.ts +187 -0
- package/src/gir/signal.ts +279 -0
- package/src/gir-module.ts +719 -0
- package/src/gir.ts +879 -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 +50 -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 +88 -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 +100 -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 +598 -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 +71 -0
- package/src/utils/gir-defaults.ts +66 -0
- package/src/utils/gir-parsing.ts +264 -0
- package/src/utils/girs.ts +112 -0
- package/src/utils/index.ts +15 -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 -8
- package/src/utils/path.ts +15 -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 +285 -0
- package/src/validators/class.ts +347 -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 -150
- package/lib/dependency-manager.js +0 -324
- 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 -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 -258
- package/lib/generators/json.js +0 -867
- 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 -106
- package/lib/gir-module.js +0 -572
- 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 -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.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 -44
- 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 -50
- 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/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 -6
- package/lib/utils/index.js +0 -7
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/numbers.js +0 -10
- package/lib/utils/numbers.js.map +0 -1
- package/lib/utils/objects.d.ts +0 -135
- 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/utils.d.ts +0 -267
- 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,24 @@
|
|
|
1
|
+
import type { PackageSectionParsed } from "./index.ts";
|
|
2
|
+
|
|
3
|
+
export interface PackageData {
|
|
4
|
+
/** Namespace of this package, e.g. Gtk */
|
|
5
|
+
namespace: string;
|
|
6
|
+
/** Version of this package, e.g. 4.0 */
|
|
7
|
+
version: string;
|
|
8
|
+
/** Description of this package */
|
|
9
|
+
description: string;
|
|
10
|
+
/** Gir package name with version string */
|
|
11
|
+
gir?: string;
|
|
12
|
+
/** URL to the homepage of this package */
|
|
13
|
+
home?: string;
|
|
14
|
+
/** URL to a gallery of widgets of this package */
|
|
15
|
+
gallery?: string;
|
|
16
|
+
/** URL to the source code of this package */
|
|
17
|
+
cDocs?: string;
|
|
18
|
+
/** True if this package is deprecated */
|
|
19
|
+
deprecated?: boolean;
|
|
20
|
+
/** Name of the Maintainer of this package */
|
|
21
|
+
maintainers?: string;
|
|
22
|
+
/** The section of this package */
|
|
23
|
+
section?: PackageSectionParsed;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type PropertyCase = "both" | "camel" | "underscore";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Data } from "ejs";
|
|
2
|
+
import type { GirModule } from "../gir-module.ts";
|
|
3
|
+
import type { OptionsGeneration } from "./options-generation.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
|
+
}
|
|
@@ -6,16 +6,18 @@
|
|
|
6
6
|
* Inspirited from https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/comments/tag.ts
|
|
7
7
|
*/
|
|
8
8
|
export interface TsDocTag {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
/**
|
|
10
|
+
* The name of this tag.
|
|
11
|
+
*/
|
|
12
|
+
tagName: string;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The name of the related parameter when this is a ```@param``` tag.
|
|
16
|
+
*/
|
|
17
|
+
paramName: string;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The actual body text of this tag.
|
|
21
|
+
*/
|
|
22
|
+
text: string;
|
|
21
23
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TsDocTag } from "./ts-doc-tag.ts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A model that represents a comment.
|
|
5
|
+
*
|
|
6
|
+
* Inspirited from https://github.com/TypeStrong/typedoc/blob/master/src/lib/models/comments/comment.ts
|
|
7
|
+
*/
|
|
8
|
+
export interface TsDoc {
|
|
9
|
+
/**
|
|
10
|
+
* The full body text of the comment..
|
|
11
|
+
*/
|
|
12
|
+
text: string;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* All associated tags.
|
|
16
|
+
*/
|
|
17
|
+
tags: TsDocTag[];
|
|
18
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript `type` */
|
|
2
|
-
export type TypeGirAlias =
|
|
2
|
+
export type TypeGirAlias = "alias";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TypeGirAlias,
|
|
3
|
+
TypeGirClass,
|
|
4
|
+
TypeGirEnumeration,
|
|
5
|
+
TypeGirEnumerationMember,
|
|
6
|
+
TypeGirFunction,
|
|
7
|
+
TypeGirInterface,
|
|
8
|
+
TypeGirMethod,
|
|
9
|
+
TypeGirParameter,
|
|
10
|
+
TypeGirProperty,
|
|
11
|
+
TypeGirVariable,
|
|
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;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript enumeration */
|
|
2
|
-
export type TypeGirEnumeration =
|
|
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 =
|
|
2
|
+
export type TypeGirInterface = "callback";
|
|
@@ -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 =
|
|
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;
|
package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-ts-enumeration-member.ts}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** All gir elements which can be a typescript enumeration */
|
|
2
|
-
export type TypeTsEnumerationMember =
|
|
2
|
+
export type TypeTsEnumerationMember = "enum-member";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TypeTsFunction = "static-function" | "constructor" | "function" | "method" | "event-methods" | "interface";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type TypeTsProperty = "static-property" | "property" | "constructor-property";
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for config file
|
|
3
|
+
*/
|
|
4
|
+
export interface UserConfig {
|
|
5
|
+
/** root / working directory of your project */
|
|
6
|
+
root: string;
|
|
7
|
+
/** directory to output to */
|
|
8
|
+
outdir: string | null;
|
|
9
|
+
/** GIR directories */
|
|
10
|
+
girDirectories: string[];
|
|
11
|
+
/** Switch on/off the verbose mode */
|
|
12
|
+
verbose: boolean;
|
|
13
|
+
/** Do not ask for package versions if multiple versions are found */
|
|
14
|
+
ignoreVersionConflicts: boolean;
|
|
15
|
+
/** print the output to console and create no files */
|
|
16
|
+
print: boolean;
|
|
17
|
+
/** GIR modules to load, e.g. 'Gio-2.0'. Accepts multiple modules */
|
|
18
|
+
modules: string[];
|
|
19
|
+
/** modules that should be ignored */
|
|
20
|
+
ignore?: string[];
|
|
21
|
+
/** Do not export all symbols for each module as a namespace */
|
|
22
|
+
noNamespace: boolean;
|
|
23
|
+
/** Do not generate documentation comments */
|
|
24
|
+
noComments: boolean;
|
|
25
|
+
/** Generate promisified functions for async/finish calls */
|
|
26
|
+
promisify: boolean;
|
|
27
|
+
/** Scope of the generated NPM packages */
|
|
28
|
+
npmScope: string;
|
|
29
|
+
/** Uses the workspace protocol for the generated packages which can be used with package managers like Yarn and PNPM */
|
|
30
|
+
workspace: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Format used for dependency version specifiers in generated package.json files.
|
|
33
|
+
* - `workspace`: emit `workspace:^` (yarn/pnpm; npm only when the ref matches a registered workspace)
|
|
34
|
+
* - `caret`: emit `^<version>` (all managers, falls back to registry for dangling refs)
|
|
35
|
+
* - `any`: emit `*` (all managers, most permissive)
|
|
36
|
+
* - `exact`: emit `<version>` (all managers, no range)
|
|
37
|
+
*
|
|
38
|
+
* If unset, defaults to `workspace` when `workspace: true`, else `caret`.
|
|
39
|
+
*/
|
|
40
|
+
depVersionFormat?: "workspace" | "caret" | "any" | "exact";
|
|
41
|
+
/**
|
|
42
|
+
* Only use the version prefix for the ambient module exports.
|
|
43
|
+
* This is useful if, for whatever reason, you want to use different library versions of the same library in your project.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* declare module 'gi://Gtk?version=4.0' {...}
|
|
48
|
+
* declare module 'gi://Gtk?version=3.0' {...}
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
onlyVersionPrefix: boolean;
|
|
52
|
+
/** Do not prettify the generated types */
|
|
53
|
+
noPrettyPrint: boolean;
|
|
54
|
+
/** Disable GLib.Variant class with string parsing */
|
|
55
|
+
noAdvancedVariants: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Generate the typescript types with package.json support
|
|
58
|
+
*/
|
|
59
|
+
package: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Enable generation problem reporter and create a detailed report file
|
|
62
|
+
*/
|
|
63
|
+
reporter: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Output file path for the reporter
|
|
66
|
+
*/
|
|
67
|
+
reporterOutput: string;
|
|
68
|
+
/** Generate a single unified documentation for all modules instead of separate per-module docs */
|
|
69
|
+
combined?: boolean;
|
|
70
|
+
/** URL template for source links in generated documentation. Supports {path}, {line}, {gitRevision} placeholders */
|
|
71
|
+
sourceLinkTemplate?: string;
|
|
72
|
+
/** Theme for HTML documentation generation (default: "gi-docgen") */
|
|
73
|
+
theme?: string;
|
|
74
|
+
/** Path to a README file to use as the documentation index page (default: "none") */
|
|
75
|
+
readme?: string;
|
|
76
|
+
/** Use TypeDoc merge mode to generate HTML from pre-generated JSON files */
|
|
77
|
+
merge?: boolean;
|
|
78
|
+
/** Directory containing pre-generated TypeDoc JSON files for merge mode (from 'ts-for-gir json') */
|
|
79
|
+
jsonDir?: string;
|
|
80
|
+
/**
|
|
81
|
+
* External-deps mode: emit `import` statements that reference dependency types from
|
|
82
|
+
* already-installed npm packages (e.g. `@girs/glib-2.0`) instead of regenerating them.
|
|
83
|
+
* Designed for project-local GIRs (Vala bridges etc.) where the surrounding `@girs/*`
|
|
84
|
+
* ecosystem is already in node_modules.
|
|
85
|
+
*/
|
|
86
|
+
externalDeps: boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Allow `externalDeps` generation to proceed when some transitive dep GIRs are missing.
|
|
89
|
+
* Default is strict: missing deps cause an error to prevent silent type-quality drift
|
|
90
|
+
* between environments with and without system GIR -devel packages installed.
|
|
91
|
+
*/
|
|
92
|
+
allowMissingDeps: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Override the default `<npmScope>/<importName>` mapping for individual namespaces when
|
|
95
|
+
* resolving external dependency imports in `externalDeps` mode.
|
|
96
|
+
*
|
|
97
|
+
* Example: `{ Soup: '@girs/soup-3.0', GLib: '@girs/glib-2.0' }`
|
|
98
|
+
*/
|
|
99
|
+
externalPackages?: Record<string, string>;
|
|
100
|
+
}
|
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
|
+
}
|