@ts-for-gir/lib 4.0.0-beta.4 → 4.0.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/package.json +18 -31
- package/src/constants.ts +152 -0
- package/src/dependency-manager.ts +445 -0
- package/src/formatters/default.ts +7 -0
- package/src/formatters/formatter.ts +3 -0
- package/src/formatters/index.ts +3 -0
- package/src/formatters/json.ts +7 -0
- package/src/generators/generator.ts +65 -0
- package/src/generators/index.ts +2 -0
- package/src/generics/clutter.ts +80 -0
- package/src/generics/generify.ts +101 -0
- package/src/generics/gio.ts +91 -0
- package/src/generics/glib.ts +31 -0
- package/src/generics/gtk.ts +99 -0
- package/src/generics/meta.ts +50 -0
- package/src/generics/st.ts +206 -0
- package/src/generics/visitor.ts +484 -0
- package/src/gir/alias.ts +73 -0
- package/src/gir/callback.ts +79 -0
- package/src/gir/const.ts +73 -0
- package/src/gir/constructor.ts +91 -0
- package/src/gir/data.ts +12 -0
- package/src/gir/dependency-resolver.ts +81 -0
- package/src/gir/direct-allocation-constructor.ts +65 -0
- package/src/gir/enum-member.ts +51 -0
- package/src/gir/enum.ts +129 -0
- package/src/gir/error.ts +89 -0
- package/src/gir/function.ts +296 -0
- package/src/gir/generics.ts +66 -0
- package/src/gir/gir-complex-record.ts +7 -0
- package/src/gir/index.ts +25 -0
- package/src/gir/introspected-base.ts +104 -0
- package/src/gir/introspected-class-member.ts +15 -0
- package/src/gir/introspected-classes.ts +1484 -0
- package/src/gir/introspected-namespace-member.ts +24 -0
- package/src/gir/namespace.ts +76 -0
- package/src/gir/parameter.ts +199 -0
- package/src/gir/promisify.ts +209 -0
- package/src/gir/property.ts +203 -0
- package/src/gir/record.ts +488 -0
- package/src/gir/registry.ts +183 -0
- package/src/gir/signal.ts +278 -0
- package/src/gir-module.ts +719 -0
- package/src/gir.ts +869 -0
- package/src/index.ts +16 -0
- package/src/injections/gee08.ts +89 -0
- package/src/injections/gee1.ts +35 -0
- package/src/injections/gio.ts +720 -0
- package/src/injections/glib.ts +280 -0
- package/src/injections/gobject.ts +906 -0
- package/src/injections/gtk4.ts +23 -0
- package/src/injections/inject.ts +49 -0
- package/src/injections/shell.ts +49 -0
- package/src/injections/tracker1.ts +42 -0
- package/src/library-version.ts +50 -0
- package/src/logger.ts +104 -0
- package/src/messages.ts +57 -0
- package/src/templates/index.ts +1 -0
- package/src/templates/template-engine.ts +178 -0
- package/src/types/answer-version.ts +4 -0
- package/src/types/any-introspected-type.ts +5 -0
- package/src/types/class-function-types.ts +57 -0
- package/src/types/class-member.ts +5 -0
- package/src/types/class-parent.ts +14 -0
- package/src/types/class.ts +43 -0
- package/src/types/config-flags.ts +5 -0
- package/src/types/construct-name.ts +13 -0
- package/src/types/dependency-map.ts +4 -0
- package/src/types/dependency.ts +49 -0
- package/src/types/file-info.ts +14 -0
- package/src/types/format.ts +1 -0
- package/src/types/generator-constructor.ts +7 -0
- package/src/types/generics-config.ts +90 -0
- package/src/types/gir-any-element.ts +35 -0
- package/src/types/gir-module-interface.ts +22 -0
- package/src/types/gir-module-resolved.ts +32 -0
- package/src/types/gir-type-name.ts +20 -0
- package/src/types/index.ts +92 -0
- package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
- package/src/types/introspected.ts +18 -0
- package/src/types/local-name-check.ts +5 -0
- package/src/types/local-name-type.ts +1 -0
- package/src/types/local-name.ts +8 -0
- package/src/types/local-names.ts +5 -0
- package/src/types/metadata.ts +6 -0
- package/src/types/ns-loader.ts +6 -0
- package/src/types/options-base.ts +8 -0
- package/src/types/options-generation.ts +65 -0
- package/src/types/options-load.ts +6 -0
- package/src/types/options-transform.ts +5 -0
- package/src/types/output-format.ts +1 -0
- package/src/types/package-data-parsed.ts +28 -0
- package/src/types/package-data.ts +24 -0
- package/src/types/package-section-parsed.ts +9 -0
- package/src/types/parsed-gir.ts +5 -0
- package/src/types/parsed-package-data.ts +7 -0
- package/src/types/property-case.ts +1 -0
- package/src/types/resolve-type.ts +4 -0
- package/src/types/template-data.ts +8 -0
- package/src/types/template-options.ts +33 -0
- package/src/types/transformation-case.ts +9 -0
- package/src/types/transformations.ts +5 -0
- package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +14 -12
- package/src/types/ts-doc.ts +18 -0
- package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
- package/src/types/type-gir-class.ts +2 -0
- package/src/types/type-gir-element.ts +25 -0
- package/src/types/type-gir-enumeration-member.ts +2 -0
- package/{lib/types/type-gir-enumeration.d.ts → src/types/type-gir-enumeration.ts} +1 -1
- package/src/types/type-gir-function.ts +8 -0
- package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
- package/src/types/type-gir-method.ts +2 -0
- package/src/types/type-gir-parameter.ts +1 -0
- package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
- package/src/types/type-gir-variable.ts +1 -0
- package/src/types/type-ts-element.ts +13 -0
- package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
- package/src/types/type-ts-function.ts +1 -0
- package/src/types/type-ts-property.ts +1 -0
- package/src/types/user-config-load-result.ts +6 -0
- package/src/types/user-config.ts +70 -0
- package/src/util.ts +84 -0
- package/src/utils/conflicts/conflict-resolver.ts +122 -0
- package/src/utils/conflicts/function-conflict-detector.ts +139 -0
- package/src/utils/conflicts/index.ts +2 -0
- package/src/utils/conflicts.ts +593 -0
- package/src/utils/documentation.ts +471 -0
- package/src/utils/files.ts +71 -0
- package/src/utils/function-type-guards.ts +61 -0
- package/src/utils/generation.ts +69 -0
- package/src/utils/gir-parsing.ts +262 -0
- package/src/utils/girs.ts +113 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/naming.ts +188 -0
- package/src/utils/numbers.ts +8 -0
- package/src/utils/objects.ts +129 -0
- package/src/utils/path.ts +7 -0
- package/src/utils/registry.ts +5 -0
- package/src/utils/strings.ts +134 -0
- package/src/utils/type-resolution.ts +116 -0
- package/src/utils/types.ts +249 -0
- package/src/validators/class.ts +324 -0
- package/src/validators/function-parameters.ts +52 -0
- package/src/validators/interface.ts +20 -0
- package/src/visitor.ts +58 -0
- package/lib/constants.d.ts +0 -26
- package/lib/constants.js +0 -28
- package/lib/constants.js.map +0 -1
- package/lib/dependency-manager.d.ts +0 -183
- package/lib/dependency-manager.js +0 -401
- package/lib/dependency-manager.js.map +0 -1
- package/lib/formatters/default.d.ts +0 -4
- package/lib/formatters/default.js +0 -7
- package/lib/formatters/default.js.map +0 -1
- package/lib/formatters/formatter.d.ts +0 -3
- package/lib/formatters/formatter.js +0 -3
- package/lib/formatters/formatter.js.map +0 -1
- package/lib/formatters/json.d.ts +0 -4
- package/lib/formatters/json.js +0 -7
- package/lib/formatters/json.js.map +0 -1
- package/lib/generators/dts/glib.d.ts +0 -2
- package/lib/generators/dts/glib.js +0 -514
- package/lib/generators/dts/glib.js.map +0 -1
- package/lib/generators/dts/gobject.d.ts +0 -2
- package/lib/generators/dts/gobject.js +0 -117
- package/lib/generators/dts/gobject.js.map +0 -1
- package/lib/generators/dts-inline.d.ts +0 -8
- package/lib/generators/dts-inline.js +0 -59
- package/lib/generators/dts-inline.js.map +0 -1
- package/lib/generators/dts-modules.d.ts +0 -8
- package/lib/generators/dts-modules.js +0 -100
- package/lib/generators/dts-modules.js.map +0 -1
- package/lib/generators/dts.d.ts +0 -45
- package/lib/generators/dts.js +0 -682
- package/lib/generators/dts.js.map +0 -1
- package/lib/generators/generator.d.ts +0 -45
- package/lib/generators/generator.js +0 -9
- package/lib/generators/generator.js.map +0 -1
- package/lib/generators/index.d.ts +0 -5
- package/lib/generators/index.js +0 -6
- package/lib/generators/index.js.map +0 -1
- package/lib/generators/json.d.ts +0 -256
- package/lib/generators/json.js +0 -869
- package/lib/generators/json.js.map +0 -1
- package/lib/generics/clutter.d.ts +0 -26
- package/lib/generics/clutter.js +0 -49
- package/lib/generics/clutter.js.map +0 -1
- package/lib/generics/generify.d.ts +0 -2
- package/lib/generics/generify.js +0 -39
- package/lib/generics/generify.js.map +0 -1
- package/lib/generics/gio.d.ts +0 -7
- package/lib/generics/gio.js +0 -51
- package/lib/generics/gio.js.map +0 -1
- package/lib/generics/glib.d.ts +0 -7
- package/lib/generics/glib.js +0 -18
- package/lib/generics/glib.js.map +0 -1
- package/lib/generics/meta.d.ts +0 -21
- package/lib/generics/meta.js +0 -26
- package/lib/generics/meta.js.map +0 -1
- package/lib/generics/st.d.ts +0 -16
- package/lib/generics/st.js +0 -92
- package/lib/generics/st.js.map +0 -1
- package/lib/generics/visitor.d.ts +0 -20
- package/lib/generics/visitor.js +0 -255
- package/lib/generics/visitor.js.map +0 -1
- package/lib/gir/alias.d.ts +0 -24
- package/lib/gir/alias.js +0 -43
- package/lib/gir/alias.js.map +0 -1
- package/lib/gir/base.d.ts +0 -62
- package/lib/gir/base.js +0 -95
- package/lib/gir/base.js.map +0 -1
- package/lib/gir/class.d.ts +0 -189
- package/lib/gir/class.js +0 -1131
- package/lib/gir/class.js.map +0 -1
- package/lib/gir/const.d.ts +0 -25
- package/lib/gir/const.js +0 -43
- package/lib/gir/const.js.map +0 -1
- package/lib/gir/enum.d.ts +0 -45
- package/lib/gir/enum.js +0 -164
- package/lib/gir/enum.js.map +0 -1
- package/lib/gir/function.d.ts +0 -199
- package/lib/gir/function.js +0 -683
- package/lib/gir/function.js.map +0 -1
- package/lib/gir/generics.d.ts +0 -5
- package/lib/gir/generics.js +0 -57
- package/lib/gir/generics.js.map +0 -1
- package/lib/gir/namespace.d.ts +0 -21
- package/lib/gir/namespace.js +0 -57
- package/lib/gir/namespace.js.map +0 -1
- package/lib/gir/nodes.d.ts +0 -11
- package/lib/gir/nodes.js +0 -12
- package/lib/gir/nodes.js.map +0 -1
- package/lib/gir/property.d.ts +0 -60
- package/lib/gir/property.js +0 -128
- package/lib/gir/property.js.map +0 -1
- package/lib/gir/registry.d.ts +0 -51
- package/lib/gir/registry.js +0 -144
- package/lib/gir/registry.js.map +0 -1
- package/lib/gir/signal.d.ts +0 -33
- package/lib/gir/signal.js +0 -165
- package/lib/gir/signal.js.map +0 -1
- package/lib/gir/util.d.ts +0 -49
- package/lib/gir/util.js +0 -559
- package/lib/gir/util.js.map +0 -1
- package/lib/gir-module.d.ts +0 -112
- package/lib/gir-module.js +0 -570
- package/lib/gir-module.js.map +0 -1
- package/lib/gir.d.ts +0 -253
- package/lib/gir.js +0 -642
- package/lib/gir.js.map +0 -1
- package/lib/index.d.ts +0 -14
- package/lib/index.js +0 -17
- package/lib/index.js.map +0 -1
- package/lib/injections/gee08.d.ts +0 -7
- package/lib/injections/gee08.js +0 -68
- package/lib/injections/gee08.js.map +0 -1
- package/lib/injections/gee1.d.ts +0 -7
- package/lib/injections/gee1.js +0 -28
- package/lib/injections/gee1.js.map +0 -1
- package/lib/injections/gio.d.ts +0 -7
- package/lib/injections/gio.js +0 -431
- package/lib/injections/gio.js.map +0 -1
- package/lib/injections/glib.d.ts +0 -7
- package/lib/injections/glib.js +0 -204
- package/lib/injections/glib.js.map +0 -1
- package/lib/injections/gobject.d.ts +0 -7
- package/lib/injections/gobject.js +0 -479
- package/lib/injections/gobject.js.map +0 -1
- package/lib/injections/inject.d.ts +0 -4
- package/lib/injections/inject.js +0 -28
- package/lib/injections/inject.js.map +0 -1
- package/lib/injections/tracker1.d.ts +0 -7
- package/lib/injections/tracker1.js +0 -30
- package/lib/injections/tracker1.js.map +0 -1
- package/lib/library-version.d.ts +0 -10
- package/lib/library-version.js +0 -45
- package/lib/library-version.js.map +0 -1
- package/lib/logger.d.ts +0 -36
- package/lib/logger.js +0 -134
- package/lib/logger.js.map +0 -1
- package/lib/messages.d.ts +0 -26
- package/lib/messages.js +0 -42
- package/lib/messages.js.map +0 -1
- package/lib/registry.d.ts +0 -8
- package/lib/registry.js +0 -12
- package/lib/registry.js.map +0 -1
- package/lib/transformation.d.ts +0 -181
- package/lib/transformation.js +0 -480
- package/lib/transformation.js.map +0 -1
- package/lib/types/answer-version.d.ts +0 -4
- package/lib/types/answer-version.js +0 -2
- package/lib/types/answer-version.js.map +0 -1
- package/lib/types/class-parent.d.ts +0 -13
- package/lib/types/class-parent.js +0 -2
- package/lib/types/class-parent.js.map +0 -1
- package/lib/types/config-flags.d.ts +0 -4
- package/lib/types/config-flags.js +0 -2
- package/lib/types/config-flags.js.map +0 -1
- package/lib/types/construct-name.d.ts +0 -1
- package/lib/types/construct-name.js +0 -2
- package/lib/types/construct-name.js.map +0 -1
- package/lib/types/dependency-map.d.ts +0 -4
- package/lib/types/dependency-map.js +0 -2
- package/lib/types/dependency-map.js.map +0 -1
- package/lib/types/dependency.d.ts +0 -42
- package/lib/types/dependency.js +0 -2
- package/lib/types/dependency.js.map +0 -1
- package/lib/types/file-info.d.ts +0 -14
- package/lib/types/file-info.js +0 -2
- package/lib/types/file-info.js.map +0 -1
- package/lib/types/format.d.ts +0 -1
- package/lib/types/format.js +0 -2
- package/lib/types/format.js.map +0 -1
- package/lib/types/gir-alias-element.d.ts +0 -4
- package/lib/types/gir-alias-element.js +0 -2
- package/lib/types/gir-alias-element.js.map +0 -1
- package/lib/types/gir-annotation.d.ts +0 -9
- package/lib/types/gir-annotation.js +0 -2
- package/lib/types/gir-annotation.js.map +0 -1
- package/lib/types/gir-any-element.d.ts +0 -2
- package/lib/types/gir-any-element.js +0 -2
- package/lib/types/gir-any-element.js.map +0 -1
- package/lib/types/gir-bitfield-element.d.ts +0 -6
- package/lib/types/gir-bitfield-element.js +0 -2
- package/lib/types/gir-bitfield-element.js.map +0 -1
- package/lib/types/gir-callable-param-element.d.ts +0 -4
- package/lib/types/gir-callable-param-element.js +0 -2
- package/lib/types/gir-callable-param-element.js.map +0 -1
- package/lib/types/gir-callable-params.d.ts +0 -7
- package/lib/types/gir-callable-params.js +0 -2
- package/lib/types/gir-callable-params.js.map +0 -1
- package/lib/types/gir-callable-return.d.ts +0 -5
- package/lib/types/gir-callable-return.js +0 -2
- package/lib/types/gir-callable-return.js.map +0 -1
- package/lib/types/gir-callback-element.d.ts +0 -6
- package/lib/types/gir-callback-element.js +0 -2
- package/lib/types/gir-callback-element.js.map +0 -1
- package/lib/types/gir-class-element.d.ts +0 -17
- package/lib/types/gir-class-element.js +0 -2
- package/lib/types/gir-class-element.js.map +0 -1
- package/lib/types/gir-constant-element.d.ts +0 -4
- package/lib/types/gir-constant-element.js +0 -2
- package/lib/types/gir-constant-element.js.map +0 -1
- package/lib/types/gir-constructor-element.d.ts +0 -6
- package/lib/types/gir-constructor-element.js +0 -2
- package/lib/types/gir-constructor-element.js.map +0 -1
- package/lib/types/gir-enum-element.d.ts +0 -6
- package/lib/types/gir-enum-element.js +0 -2
- package/lib/types/gir-enum-element.js.map +0 -1
- package/lib/types/gir-field-element.d.ts +0 -5
- package/lib/types/gir-field-element.js +0 -2
- package/lib/types/gir-field-element.js.map +0 -1
- package/lib/types/gir-function-element.d.ts +0 -6
- package/lib/types/gir-function-element.js +0 -2
- package/lib/types/gir-function-element.js.map +0 -1
- package/lib/types/gir-instance-parameter.d.ts +0 -8
- package/lib/types/gir-instance-parameter.js +0 -2
- package/lib/types/gir-instance-parameter.js.map +0 -1
- package/lib/types/gir-interface-element.d.ts +0 -16
- package/lib/types/gir-interface-element.js +0 -2
- package/lib/types/gir-interface-element.js.map +0 -1
- package/lib/types/gir-member-element.d.ts +0 -5
- package/lib/types/gir-member-element.js +0 -2
- package/lib/types/gir-member-element.js.map +0 -1
- package/lib/types/gir-method-element.d.ts +0 -7
- package/lib/types/gir-method-element.js +0 -2
- package/lib/types/gir-method-element.js.map +0 -1
- package/lib/types/gir-module-resolved-by.d.ts +0 -15
- package/lib/types/gir-module-resolved-by.js +0 -2
- package/lib/types/gir-module-resolved-by.js.map +0 -1
- package/lib/types/gir-modules-grouped-map.d.ts +0 -4
- package/lib/types/gir-modules-grouped-map.js +0 -2
- package/lib/types/gir-modules-grouped-map.js.map +0 -1
- package/lib/types/gir-modules-grouped.d.ts +0 -12
- package/lib/types/gir-modules-grouped.js +0 -2
- package/lib/types/gir-modules-grouped.js.map +0 -1
- package/lib/types/gir-namespace.d.ts +0 -27
- package/lib/types/gir-namespace.js +0 -2
- package/lib/types/gir-namespace.js.map +0 -1
- package/lib/types/gir-property-element.d.ts +0 -4
- package/lib/types/gir-property-element.js +0 -2
- package/lib/types/gir-property-element.js.map +0 -1
- package/lib/types/gir-record-element.d.ts +0 -10
- package/lib/types/gir-record-element.js +0 -2
- package/lib/types/gir-record-element.js.map +0 -1
- package/lib/types/gir-repository.d.ts +0 -5
- package/lib/types/gir-repository.js +0 -2
- package/lib/types/gir-repository.js.map +0 -1
- package/lib/types/gir-signal.d.ts +0 -10
- package/lib/types/gir-signal.js +0 -2
- package/lib/types/gir-signal.js.map +0 -1
- package/lib/types/gir-type-name.d.ts +0 -2
- package/lib/types/gir-type-name.js +0 -2
- package/lib/types/gir-type-name.js.map +0 -1
- package/lib/types/gir-union-element.d.ts +0 -9
- package/lib/types/gir-union-element.js +0 -2
- package/lib/types/gir-union-element.js.map +0 -1
- package/lib/types/gir-unparsed-number.d.ts +0 -2
- package/lib/types/gir-unparsed-number.js +0 -2
- package/lib/types/gir-unparsed-number.js.map +0 -1
- package/lib/types/gir-virtual-method.d.ts +0 -6
- package/lib/types/gir-virtual-method.js +0 -2
- package/lib/types/gir-virtual-method.js.map +0 -1
- package/lib/types/index.d.ts +0 -79
- package/lib/types/index.js +0 -80
- package/lib/types/index.js.map +0 -1
- package/lib/types/inheritance-table.js +0 -2
- package/lib/types/inheritance-table.js.map +0 -1
- package/lib/types/local-name-check.d.ts +0 -4
- package/lib/types/local-name-check.js +0 -2
- package/lib/types/local-name-check.js.map +0 -1
- package/lib/types/local-name-type.d.ts +0 -1
- package/lib/types/local-name-type.js +0 -2
- package/lib/types/local-name-type.js.map +0 -1
- package/lib/types/local-name.d.ts +0 -7
- package/lib/types/local-name.js +0 -2
- package/lib/types/local-name.js.map +0 -1
- package/lib/types/local-names.d.ts +0 -4
- package/lib/types/local-names.js +0 -2
- package/lib/types/local-names.js.map +0 -1
- package/lib/types/metadata.d.ts +0 -8
- package/lib/types/metadata.js +0 -2
- package/lib/types/metadata.js.map +0 -1
- package/lib/types/options-base.d.ts +0 -4
- package/lib/types/options-base.js +0 -2
- package/lib/types/options-base.js.map +0 -1
- package/lib/types/options-generation.d.ts +0 -33
- package/lib/types/options-generation.js +0 -2
- package/lib/types/options-generation.js.map +0 -1
- package/lib/types/options-load.d.ts +0 -5
- package/lib/types/options-load.js +0 -2
- package/lib/types/options-load.js.map +0 -1
- package/lib/types/options-transform.d.ts +0 -4
- package/lib/types/options-transform.js +0 -2
- package/lib/types/options-transform.js.map +0 -1
- package/lib/types/output-format.d.ts +0 -1
- package/lib/types/output-format.js +0 -2
- package/lib/types/output-format.js.map +0 -1
- package/lib/types/package-data-parsed.d.ts +0 -28
- package/lib/types/package-data-parsed.js +0 -2
- package/lib/types/package-data-parsed.js.map +0 -1
- package/lib/types/package-data.d.ts +0 -23
- package/lib/types/package-data.js +0 -2
- package/lib/types/package-data.js.map +0 -1
- package/lib/types/package-section-parsed.d.ts +0 -8
- package/lib/types/package-section-parsed.js +0 -2
- package/lib/types/package-section-parsed.js.map +0 -1
- package/lib/types/parsed-gir.d.ts +0 -5
- package/lib/types/parsed-gir.js +0 -2
- package/lib/types/parsed-gir.js.map +0 -1
- package/lib/types/parsed-package-data.d.ts +0 -6
- package/lib/types/parsed-package-data.js +0 -2
- package/lib/types/parsed-package-data.js.map +0 -1
- package/lib/types/part-of-class.d.ts +0 -7
- package/lib/types/part-of-class.js +0 -2
- package/lib/types/part-of-class.js.map +0 -1
- package/lib/types/part-of-module.d.ts +0 -6
- package/lib/types/part-of-module.js +0 -2
- package/lib/types/part-of-module.js.map +0 -1
- package/lib/types/property-case.d.ts +0 -1
- package/lib/types/property-case.js +0 -2
- package/lib/types/property-case.js.map +0 -1
- package/lib/types/resolve-type.d.ts +0 -4
- package/lib/types/resolve-type.js +0 -6
- package/lib/types/resolve-type.js.map +0 -1
- package/lib/types/template-data.d.ts +0 -7
- package/lib/types/template-data.js +0 -2
- package/lib/types/template-data.js.map +0 -1
- package/lib/types/transformation-case.d.ts +0 -1
- package/lib/types/transformation-case.js +0 -2
- package/lib/types/transformation-case.js.map +0 -1
- package/lib/types/transformations.d.ts +0 -4
- package/lib/types/transformations.js +0 -2
- package/lib/types/transformations.js.map +0 -1
- package/lib/types/ts-doc-tag.js +0 -2
- package/lib/types/ts-doc-tag.js.map +0 -1
- package/lib/types/ts-doc.d.ts +0 -16
- package/lib/types/ts-doc.js +0 -2
- package/lib/types/ts-doc.js.map +0 -1
- package/lib/types/type-gir-alias.js +0 -2
- package/lib/types/type-gir-alias.js.map +0 -1
- package/lib/types/type-gir-class.d.ts +0 -2
- package/lib/types/type-gir-class.js +0 -2
- package/lib/types/type-gir-class.js.map +0 -1
- package/lib/types/type-gir-element.d.ts +0 -3
- package/lib/types/type-gir-element.js +0 -2
- package/lib/types/type-gir-element.js.map +0 -1
- package/lib/types/type-gir-enumeration-member.d.ts +0 -2
- package/lib/types/type-gir-enumeration-member.js +0 -2
- package/lib/types/type-gir-enumeration-member.js.map +0 -1
- package/lib/types/type-gir-enumeration.js +0 -2
- package/lib/types/type-gir-enumeration.js.map +0 -1
- package/lib/types/type-gir-function.d.ts +0 -1
- package/lib/types/type-gir-function.js +0 -2
- package/lib/types/type-gir-function.js.map +0 -1
- package/lib/types/type-gir-interface.js +0 -2
- package/lib/types/type-gir-interface.js.map +0 -1
- package/lib/types/type-gir-method.d.ts +0 -2
- package/lib/types/type-gir-method.js +0 -2
- package/lib/types/type-gir-method.js.map +0 -1
- package/lib/types/type-gir-parameter.d.ts +0 -1
- package/lib/types/type-gir-parameter.js +0 -2
- package/lib/types/type-gir-parameter.js.map +0 -1
- package/lib/types/type-gir-property.js +0 -2
- package/lib/types/type-gir-property.js.map +0 -1
- package/lib/types/type-gir-variable.d.ts +0 -1
- package/lib/types/type-gir-variable.js +0 -2
- package/lib/types/type-gir-variable.js.map +0 -1
- package/lib/types/type-ts-element.d.ts +0 -3
- package/lib/types/type-ts-element.js +0 -2
- package/lib/types/type-ts-element.js.map +0 -1
- package/lib/types/type-ts-enumeration-member.js +0 -2
- package/lib/types/type-ts-enumeration-member.js.map +0 -1
- package/lib/types/type-ts-function.d.ts +0 -1
- package/lib/types/type-ts-function.js +0 -2
- package/lib/types/type-ts-function.js.map +0 -1
- package/lib/types/type-ts-property.d.ts +0 -1
- package/lib/types/type-ts-property.js +0 -2
- package/lib/types/type-ts-property.js.map +0 -1
- package/lib/types/user-config-load-result.d.ts +0 -6
- package/lib/types/user-config-load-result.js +0 -2
- package/lib/types/user-config-load-result.js.map +0 -1
- package/lib/types/user-config.d.ts +0 -35
- package/lib/types/user-config.js +0 -2
- package/lib/types/user-config.js.map +0 -1
- package/lib/util.d.ts +0 -20
- package/lib/util.js +0 -67
- package/lib/util.js.map +0 -1
- package/lib/utils.d.ts +0 -268
- package/lib/utils.js +0 -417
- package/lib/utils.js.map +0 -1
- package/lib/validators/class.d.ts +0 -7
- package/lib/validators/class.js +0 -217
- package/lib/validators/class.js.map +0 -1
- package/lib/validators/interface.d.ts +0 -5
- package/lib/validators/interface.js +0 -16
- package/lib/validators/interface.js.map +0 -1
- package/lib/visitor.d.ts +0 -35
- package/lib/visitor.js +0 -29
- package/lib/visitor.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { dirname, resolve } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
|
|
4
|
+
// Get __filename on ESM
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
// Get __dirname on ESM, resolve to the root directory of this package
|
|
7
|
+
export const __dirname = resolve(dirname(__filename), "../.."); // TODO: Bundled this must be '..' but unbundled it must be '../..'
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { isNumeric } from "./numbers.ts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Removes line breaks and consecutive white spaces from a given string
|
|
5
|
+
* @param str
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export const cleanString = (str: string) => {
|
|
9
|
+
str = str.replace(/\r?\n|\r/g, " ");
|
|
10
|
+
str = str.replace(/\s+/g, " ");
|
|
11
|
+
return str.trim();
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get the first character of a string
|
|
16
|
+
* @param str The string to get the first character from
|
|
17
|
+
* @returns The first character
|
|
18
|
+
*/
|
|
19
|
+
export const getFirstChar = (str: string): string => {
|
|
20
|
+
return str.charAt(0);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get the last character of a string
|
|
25
|
+
* @param str The string to get the last character from
|
|
26
|
+
* @returns The last character
|
|
27
|
+
*/
|
|
28
|
+
export const getLastChar = (str: string): string => {
|
|
29
|
+
return str.charAt(str.length - 1);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Check if the first character of a string is numeric
|
|
34
|
+
* @param str The string to check
|
|
35
|
+
* @returns Whether the first character is numeric or not
|
|
36
|
+
*/
|
|
37
|
+
export const isFirstCharNumeric = (str: string): boolean => {
|
|
38
|
+
return isNumeric(getFirstChar(str));
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Convert a string to camelCase, keeps the first alphabet character as it is.
|
|
43
|
+
* @param str The string to convert
|
|
44
|
+
* @returns The converted string
|
|
45
|
+
*/
|
|
46
|
+
export const camelCase = (str: string): string => {
|
|
47
|
+
return str
|
|
48
|
+
.replace(/\s(.)|(\s|-|_|\.)(.)/g, (a) => {
|
|
49
|
+
return a.toUpperCase();
|
|
50
|
+
})
|
|
51
|
+
.replace(/(\s|-|_|\.)/g, "");
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Convert a string to `lowerCamelCase`
|
|
56
|
+
* @param str The string to convert
|
|
57
|
+
* @returns The converted string
|
|
58
|
+
*/
|
|
59
|
+
export const lowerCamelCase = (str: string): string => {
|
|
60
|
+
str = camelCase(str);
|
|
61
|
+
str = getFirstChar(str).toLowerCase() + str.slice(1);
|
|
62
|
+
return str;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Convert a string to `PascalCase`
|
|
67
|
+
* @param str The string to convert
|
|
68
|
+
* @returns The converted string
|
|
69
|
+
*/
|
|
70
|
+
export const pascalCase = (str: string): string => {
|
|
71
|
+
str = camelCase(str);
|
|
72
|
+
str = getFirstChar(str).toUpperCase() + str.slice(1);
|
|
73
|
+
return str;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/** Alias for {@link pascalCase} */
|
|
77
|
+
export const upperCamelCase = pascalCase;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Convert a string to `snake_case`
|
|
81
|
+
* @param str The string to convert
|
|
82
|
+
* @returns The converted string
|
|
83
|
+
*/
|
|
84
|
+
export const snakeCase = (str: string): string => {
|
|
85
|
+
return str
|
|
86
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2") // replace camelCase with hyphen-case
|
|
87
|
+
.replace(/[^a-zA-Z0-9-]+/g, "_") // replace non-alphanumeric characters with underscore
|
|
88
|
+
.replace(/^_+|_+$/g, "") // remove any leading or trailing underscores
|
|
89
|
+
.toLowerCase();
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Convert a string to `kebab-case`
|
|
94
|
+
* @param str The string to convert
|
|
95
|
+
* @returns The converted string
|
|
96
|
+
*/
|
|
97
|
+
export const kebabCase = (str: string): string => {
|
|
98
|
+
return str
|
|
99
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2") // replace camelCase with hyphen-case
|
|
100
|
+
.replace(/[^a-zA-Z0-9-]+/g, "-") // replace non-alphanumeric characters with hyphen
|
|
101
|
+
.replace(/^-+|-+$/g, "") // remove any leading or trailing hyphens
|
|
102
|
+
.toLowerCase();
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/** Alias for {@link kebabCase} */
|
|
106
|
+
export const slugCase = kebabCase;
|
|
107
|
+
|
|
108
|
+
export const underscores = (str: string): string => {
|
|
109
|
+
return str.replace(/-|_/g, "_");
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Add indents to a string
|
|
114
|
+
* @param indents The number of indents
|
|
115
|
+
* @param spaceForIndent The number of spaces for each indent
|
|
116
|
+
* @returns The indented string
|
|
117
|
+
*/
|
|
118
|
+
export const generateIndent = (indents = 1, spaceForIndent = 4): string => {
|
|
119
|
+
return " ".repeat(indents * spaceForIndent);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Merge a large array of strings by using a smaller chunk size
|
|
124
|
+
* @param target The target array to merge into
|
|
125
|
+
* @param source The source array to merge from
|
|
126
|
+
* @param chunkSize The size of the chunks to merge
|
|
127
|
+
* @returns The merged array
|
|
128
|
+
*/
|
|
129
|
+
export const mergeLargeStringArray = (target: string[], source: string[], chunkSize: number = 1000): string[] => {
|
|
130
|
+
for (let i = 0; i < source.length; i += chunkSize) {
|
|
131
|
+
target.push(...source.slice(i, i + chunkSize));
|
|
132
|
+
}
|
|
133
|
+
return target;
|
|
134
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
|
|
2
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
3
|
+
import { AnyType, GenericType, ThisType, type TypeExpression, TypeIdentifier } from "../gir.ts";
|
|
4
|
+
import { TwoKeyMap } from "../util.ts";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a class identifier.
|
|
8
|
+
*
|
|
9
|
+
* If the identifier is a class type it is returned,
|
|
10
|
+
* otherwise `null`.
|
|
11
|
+
*
|
|
12
|
+
* @param namespace
|
|
13
|
+
* @param type
|
|
14
|
+
*/
|
|
15
|
+
export function resolveTypeIdentifier(
|
|
16
|
+
namespace: IntrospectedNamespace,
|
|
17
|
+
type: TypeIdentifier,
|
|
18
|
+
): IntrospectedBaseClass | null {
|
|
19
|
+
const ns = type.namespace;
|
|
20
|
+
const name = type.name;
|
|
21
|
+
|
|
22
|
+
const resolved_ns = namespace.assertInstalledImport(ns);
|
|
23
|
+
|
|
24
|
+
const pclass = resolved_ns.getClass(name);
|
|
25
|
+
if (pclass) {
|
|
26
|
+
return pclass;
|
|
27
|
+
} else {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Checks if two type expressions are in conflict (not equal)
|
|
34
|
+
* @param a
|
|
35
|
+
* @param b
|
|
36
|
+
*/
|
|
37
|
+
function isTypeConflict(a: TypeExpression, b: TypeExpression) {
|
|
38
|
+
return !a.equals(b) || !b.equals(a);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Checks if a given type expression in the context of a given this type
|
|
43
|
+
* is a subtype (compatible with) of another type expression in the context
|
|
44
|
+
* of a parent type.
|
|
45
|
+
*
|
|
46
|
+
* @param namespace
|
|
47
|
+
* @param thisType
|
|
48
|
+
* @param parentThisType
|
|
49
|
+
* @param potentialSubtype
|
|
50
|
+
* @param parentType
|
|
51
|
+
*/
|
|
52
|
+
export function isSubtypeOf(
|
|
53
|
+
namespace: IntrospectedNamespace,
|
|
54
|
+
thisType: TypeIdentifier,
|
|
55
|
+
parentThisType: TypeIdentifier,
|
|
56
|
+
potentialSubtype: TypeExpression,
|
|
57
|
+
parentType: TypeExpression,
|
|
58
|
+
) {
|
|
59
|
+
if (!isTypeConflict(potentialSubtype, parentType)) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const unwrappedSubtype = potentialSubtype.unwrap();
|
|
64
|
+
let unwrappedParent = parentType.unwrap();
|
|
65
|
+
|
|
66
|
+
if (
|
|
67
|
+
(potentialSubtype.equals(ThisType) && unwrappedParent.equals(thisType)) ||
|
|
68
|
+
(parentType.equals(ThisType) && unwrappedSubtype.equals(parentThisType))
|
|
69
|
+
) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (unwrappedParent instanceof GenericType && unwrappedParent.identifier !== "T") {
|
|
74
|
+
// Technically there could be a conflicting generic, but most generic types should specify a replacement for type checking.
|
|
75
|
+
// "T" denotes a local function generic in the current implementation, those can't be ignored.
|
|
76
|
+
if (!unwrappedParent.replacedType) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Use the generic replaced type as a stand-in.
|
|
81
|
+
unwrappedParent = unwrappedParent.replacedType;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (!(unwrappedSubtype instanceof TypeIdentifier) || !(unwrappedParent instanceof TypeIdentifier)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const resolutions =
|
|
89
|
+
namespace.parent.subtypes.get(unwrappedSubtype.name, unwrappedSubtype.namespace) ??
|
|
90
|
+
new TwoKeyMap<string, string, boolean>();
|
|
91
|
+
const resolution = resolutions.get(unwrappedParent.name, unwrappedParent.namespace);
|
|
92
|
+
|
|
93
|
+
if (typeof resolution === "boolean") {
|
|
94
|
+
return resolution;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const resolved = resolveTypeIdentifier(namespace, unwrappedSubtype);
|
|
98
|
+
|
|
99
|
+
if (!resolved) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const parentResolution = resolved.resolveParents();
|
|
103
|
+
|
|
104
|
+
// This checks that the two types have the same form, regardless of identifier (e.g. A | null and B | null)
|
|
105
|
+
const isStructurallySubtype = potentialSubtype.rewrap(AnyType).equals(parentType.rewrap(AnyType));
|
|
106
|
+
|
|
107
|
+
const isSubtype =
|
|
108
|
+
isStructurallySubtype &&
|
|
109
|
+
parentResolution.node.someParent((t: IntrospectedBaseClass) => t.getType().equals(unwrappedParent));
|
|
110
|
+
|
|
111
|
+
resolutions.set(unwrappedParent.name, unwrappedParent.namespace, isSubtype);
|
|
112
|
+
|
|
113
|
+
namespace.parent.subtypes.set(unwrappedSubtype.name, unwrappedSubtype.namespace, resolutions);
|
|
114
|
+
|
|
115
|
+
return isSubtype;
|
|
116
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import type { GirAliasElement } from "@gi.ts/parser";
|
|
2
|
+
import { GirDirection } from "@gi.ts/parser";
|
|
3
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
4
|
+
import {
|
|
5
|
+
AnyType,
|
|
6
|
+
ArrayType,
|
|
7
|
+
BinaryType,
|
|
8
|
+
BooleanType,
|
|
9
|
+
NativeType,
|
|
10
|
+
NeverType,
|
|
11
|
+
NumberType,
|
|
12
|
+
ObjectType,
|
|
13
|
+
StringType,
|
|
14
|
+
ThisType,
|
|
15
|
+
type TypeExpression,
|
|
16
|
+
TypeIdentifier,
|
|
17
|
+
Uint8ArrayType,
|
|
18
|
+
UnknownType,
|
|
19
|
+
VoidType,
|
|
20
|
+
} from "../gir.ts";
|
|
21
|
+
import { girParsingReporter } from "./gir-parsing.ts";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get the type expression for an alias element
|
|
25
|
+
*/
|
|
26
|
+
export function getAliasType(
|
|
27
|
+
namespace: string,
|
|
28
|
+
_ns: IntrospectedNamespace,
|
|
29
|
+
parameter: GirAliasElement,
|
|
30
|
+
): TypeExpression {
|
|
31
|
+
let name = parameter.type?.[0].$.name || "unknown";
|
|
32
|
+
|
|
33
|
+
const nameParts = name.split(" ");
|
|
34
|
+
|
|
35
|
+
if (nameParts.length === 1) {
|
|
36
|
+
name = nameParts[0];
|
|
37
|
+
} else {
|
|
38
|
+
name = nameParts[1];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return parseTypeExpression(namespace, name);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Parse a type string into namespace and name components
|
|
46
|
+
*/
|
|
47
|
+
export function parseTypeString(type: string): { namespace: string | null; name: string } {
|
|
48
|
+
if (type.includes(".")) {
|
|
49
|
+
const parts = type.split(".");
|
|
50
|
+
|
|
51
|
+
if (parts.length > 2) {
|
|
52
|
+
throw new Error(`Invalid type string ${type} passed.`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const [namespace, name] = parts;
|
|
56
|
+
|
|
57
|
+
return { name, namespace };
|
|
58
|
+
} else {
|
|
59
|
+
return { name: type, namespace: null };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Parse a type identifier from namespace and type string
|
|
65
|
+
*/
|
|
66
|
+
export function parseTypeIdentifier(namespace: string, type: string): TypeIdentifier {
|
|
67
|
+
const baseType = parseTypeString(type);
|
|
68
|
+
|
|
69
|
+
if (baseType.namespace) {
|
|
70
|
+
return new TypeIdentifier(baseType.name, baseType.namespace);
|
|
71
|
+
} else {
|
|
72
|
+
return new TypeIdentifier(baseType.name, namespace);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Parse a type expression from namespace and type string
|
|
78
|
+
*/
|
|
79
|
+
export function parseTypeExpression(namespace: string, type: string): TypeExpression {
|
|
80
|
+
const baseType = parseTypeString(type);
|
|
81
|
+
if (baseType.namespace) {
|
|
82
|
+
if (baseType.namespace === namespace) {
|
|
83
|
+
return new TypeIdentifier(baseType.name, namespace);
|
|
84
|
+
}
|
|
85
|
+
return new TypeIdentifier(baseType.name, baseType.namespace).sanitize();
|
|
86
|
+
} else {
|
|
87
|
+
const primitiveType = resolvePrimitiveType(baseType.name);
|
|
88
|
+
|
|
89
|
+
if (primitiveType !== null) {
|
|
90
|
+
return primitiveType;
|
|
91
|
+
} else {
|
|
92
|
+
return new TypeIdentifier(baseType.name, namespace);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Resolve primitive array types with their correct depth
|
|
99
|
+
*/
|
|
100
|
+
export function resolvePrimitiveArrayType(name: string, arrayDepth: number): [TypeExpression, number] | null {
|
|
101
|
+
if (arrayDepth > 0) {
|
|
102
|
+
switch (name) {
|
|
103
|
+
case "gint8":
|
|
104
|
+
case "guint8":
|
|
105
|
+
return [Uint8ArrayType, arrayDepth - 1];
|
|
106
|
+
case "gunichar":
|
|
107
|
+
return [StringType, arrayDepth - 1];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const resolvedName = resolvePrimitiveType(name);
|
|
112
|
+
|
|
113
|
+
if (resolvedName) {
|
|
114
|
+
return [resolvedName, arrayDepth];
|
|
115
|
+
} else {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Check if a type name is a primitive type
|
|
122
|
+
*/
|
|
123
|
+
export function isPrimitiveType(name: string): boolean {
|
|
124
|
+
return resolvePrimitiveType(name) !== null;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Resolve primitive type names to TypeExpression instances
|
|
129
|
+
*/
|
|
130
|
+
export function resolvePrimitiveType(name: string): TypeExpression | null {
|
|
131
|
+
switch (name) {
|
|
132
|
+
case "":
|
|
133
|
+
girParsingReporter.get().reportTypeResolutionWarning("", "unknown", "Resolving empty type name to 'any'");
|
|
134
|
+
return AnyType;
|
|
135
|
+
case "filename":
|
|
136
|
+
return StringType;
|
|
137
|
+
// Pass this through
|
|
138
|
+
case "GType":
|
|
139
|
+
return new TypeIdentifier("GType", "GObject");
|
|
140
|
+
case "utf8":
|
|
141
|
+
return StringType;
|
|
142
|
+
case "void": // Support TS "void"
|
|
143
|
+
case "none":
|
|
144
|
+
return VoidType;
|
|
145
|
+
// TODO Some libraries are bad and don't use g-prefixed numerical types
|
|
146
|
+
case "uint":
|
|
147
|
+
case "int":
|
|
148
|
+
case "uint8":
|
|
149
|
+
case "int8":
|
|
150
|
+
case "uint16":
|
|
151
|
+
case "int16":
|
|
152
|
+
case "uint32":
|
|
153
|
+
case "int32":
|
|
154
|
+
case "int64":
|
|
155
|
+
case "uint64":
|
|
156
|
+
case "double":
|
|
157
|
+
case "long":
|
|
158
|
+
case "float":
|
|
159
|
+
// Most libraries will use these though:
|
|
160
|
+
case "gshort":
|
|
161
|
+
case "guint32":
|
|
162
|
+
case "guint16":
|
|
163
|
+
case "gint16":
|
|
164
|
+
case "gint8":
|
|
165
|
+
case "gint32":
|
|
166
|
+
case "gushort":
|
|
167
|
+
case "gfloat":
|
|
168
|
+
case "gchar":
|
|
169
|
+
case "guint":
|
|
170
|
+
case "glong":
|
|
171
|
+
case "gulong":
|
|
172
|
+
case "gint":
|
|
173
|
+
case "guint8":
|
|
174
|
+
case "guint64":
|
|
175
|
+
case "gint64":
|
|
176
|
+
case "gdouble":
|
|
177
|
+
case "gssize":
|
|
178
|
+
case "gsize":
|
|
179
|
+
case "time_t": // C standard library time type (seconds since Unix epoch)
|
|
180
|
+
case "ulong": // C standard library unsigned long type
|
|
181
|
+
return NumberType;
|
|
182
|
+
case "gboolean":
|
|
183
|
+
return BooleanType;
|
|
184
|
+
case "gpointer": // This is typically used in callbacks to pass data, so we'll allow anything.
|
|
185
|
+
return AnyType;
|
|
186
|
+
case "object": // Support TS "object"
|
|
187
|
+
return ObjectType;
|
|
188
|
+
case "va_list":
|
|
189
|
+
return AnyType;
|
|
190
|
+
case "guintptr": // You can't use pointers in GJS! (at least that I'm aware of)
|
|
191
|
+
return NeverType;
|
|
192
|
+
case "never": // Support TS "never"
|
|
193
|
+
return NeverType;
|
|
194
|
+
case "unknown": // Support TS "unknown"
|
|
195
|
+
return UnknownType;
|
|
196
|
+
case "any": // Support TS "any"
|
|
197
|
+
return AnyType;
|
|
198
|
+
case "this": // Support TS "this"
|
|
199
|
+
return ThisType;
|
|
200
|
+
case "number": // Support TS "number"
|
|
201
|
+
return NumberType;
|
|
202
|
+
case "gunichar":
|
|
203
|
+
case "string": // Support TS "string"
|
|
204
|
+
return StringType;
|
|
205
|
+
case "boolean": // Support TS "boolean"
|
|
206
|
+
return BooleanType;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Resolve directional types based on GIR direction
|
|
214
|
+
*/
|
|
215
|
+
export function resolveDirectedType(type: TypeExpression, direction: GirDirection): TypeExpression | null {
|
|
216
|
+
if (type instanceof ArrayType) {
|
|
217
|
+
if (
|
|
218
|
+
(direction === GirDirection.In || direction === GirDirection.Inout) &&
|
|
219
|
+
type.type.equals(Uint8ArrayType) &&
|
|
220
|
+
type.arrayDepth === 0
|
|
221
|
+
) {
|
|
222
|
+
return new BinaryType(type, StringType);
|
|
223
|
+
} else {
|
|
224
|
+
// Rewrap arrays if they have directional types
|
|
225
|
+
return type.rewrap(resolveDirectedType(type.type, direction) ?? type.type);
|
|
226
|
+
}
|
|
227
|
+
} else if (type instanceof TypeIdentifier) {
|
|
228
|
+
if ((direction === GirDirection.In || direction === GirDirection.Inout) && type.is("GLib", "Bytes")) {
|
|
229
|
+
return new BinaryType(type, Uint8ArrayType);
|
|
230
|
+
} else if (type.is("GObject", "Value")) {
|
|
231
|
+
if (direction === GirDirection.In || direction === GirDirection.Inout) {
|
|
232
|
+
return new BinaryType(type, AnyType);
|
|
233
|
+
} else {
|
|
234
|
+
// GJS converts GObject.Value out parameters to their unboxed type, which we don't know,
|
|
235
|
+
// so type as `unknown`
|
|
236
|
+
return UnknownType;
|
|
237
|
+
}
|
|
238
|
+
} else if (type.is("GLib", "HashTable")) {
|
|
239
|
+
if (direction === GirDirection.In) {
|
|
240
|
+
// Intentional `any` — GLib.HashTable maps to a JS dict with dynamic values in generated output
|
|
241
|
+
return new BinaryType(new NativeType("{ [key: string]: any }"), type);
|
|
242
|
+
} else {
|
|
243
|
+
return type;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return null;
|
|
249
|
+
}
|