@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,66 @@
|
|
|
1
|
+
import type { GirModule } from "../gir-module.ts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Resolves a single C enum/bitfield constant to its GJS-qualified path by searching
|
|
5
|
+
* the module's own enum_constants map and then all direct and transitive dependencies.
|
|
6
|
+
* Returns [namespaceName, enumTypeName, memberName] or null if not found.
|
|
7
|
+
*
|
|
8
|
+
* Called during the generation phase (after all modules have been parsed), so all
|
|
9
|
+
* dependency enum_constants maps are fully populated. Each GirModule.enum_constants
|
|
10
|
+
* is an O(1) Map; the total cost per call is O(deps) — negligible given the small
|
|
11
|
+
* fraction of properties that carry a default-value attribute.
|
|
12
|
+
*/
|
|
13
|
+
function resolveCEnumConstant(cIdentifier: string, ns: GirModule): readonly [string, string, string] | null {
|
|
14
|
+
// Check own namespace first
|
|
15
|
+
const own = ns.enum_constants.get(cIdentifier);
|
|
16
|
+
if (own) return [ns.namespace, own[0], own[1]] as const;
|
|
17
|
+
|
|
18
|
+
// Check all direct and transitive dependencies
|
|
19
|
+
for (const dep of ns.allDependencies) {
|
|
20
|
+
const depModule = ns.getInstalledImport(dep.namespace);
|
|
21
|
+
if (!depModule) continue;
|
|
22
|
+
const entry = depModule.enum_constants.get(cIdentifier);
|
|
23
|
+
if (entry) return [depModule.namespace, entry[0], entry[1]] as const;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function convertSingleCValue(value: string, ns: GirModule): string {
|
|
30
|
+
const trimmed = value.trim();
|
|
31
|
+
|
|
32
|
+
if (trimmed === "NULL") return "null";
|
|
33
|
+
if (trimmed === "TRUE") return "true";
|
|
34
|
+
if (trimmed === "FALSE") return "false";
|
|
35
|
+
|
|
36
|
+
// Normalize C floats: "0.000000" → "0", "1.500000" → "1.5"
|
|
37
|
+
if (/^-?\d+\.\d+$/.test(trimmed)) {
|
|
38
|
+
const n = parseFloat(trimmed);
|
|
39
|
+
if (!Number.isNaN(n)) return String(n);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Resolve C enum/bitfield constant (own namespace + all dependencies)
|
|
43
|
+
// e.g. "GTK_ALIGN_FILL" → "Gtk.Align.FILL"
|
|
44
|
+
// e.g. "GDK_NO_MODIFIER_MASK" → "Gdk.ModifierType.NO_MODIFIER_MASK"
|
|
45
|
+
// e.g. "PANGO_ALIGN_LEFT" → "Pango.Alignment.LEFT"
|
|
46
|
+
const entry = resolveCEnumConstant(trimmed, ns);
|
|
47
|
+
if (entry) return `${entry[0]}.${entry[1]}.${entry[2]}`;
|
|
48
|
+
|
|
49
|
+
return trimmed;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Converts a raw C default-value string from GIR XML to its JavaScript equivalent.
|
|
54
|
+
* Handles NULL/TRUE/FALSE, C float literals, C enum/bitfield constants (including
|
|
55
|
+
* cross-namespace lookups), and bitmask combinations (A | B | C).
|
|
56
|
+
*/
|
|
57
|
+
export function convertCDefaultValue(rawValue: string, ns: GirModule): string {
|
|
58
|
+
// Handle bitmask combinations: "A | B | C"
|
|
59
|
+
if (rawValue.includes("|")) {
|
|
60
|
+
return rawValue
|
|
61
|
+
.split("|")
|
|
62
|
+
.map((part) => convertSingleCValue(part, ns))
|
|
63
|
+
.join(" | ");
|
|
64
|
+
}
|
|
65
|
+
return convertSingleCValue(rawValue, ns);
|
|
66
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
GirCallableParamElement,
|
|
3
|
+
GirCallableReturn,
|
|
4
|
+
GirConstantElement,
|
|
5
|
+
GirDocElement,
|
|
6
|
+
GirFieldElement,
|
|
7
|
+
GirFunctionElement,
|
|
8
|
+
GirInfoAttrs,
|
|
9
|
+
GirMethodElement,
|
|
10
|
+
GirType,
|
|
11
|
+
} from "@gi.ts/parser";
|
|
12
|
+
import { GirDirection } from "@gi.ts/parser";
|
|
13
|
+
import { LazyReporter } from "@ts-for-gir/reporter";
|
|
14
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
15
|
+
import {
|
|
16
|
+
ArrayType,
|
|
17
|
+
BigintOrNumberType,
|
|
18
|
+
ClosureType,
|
|
19
|
+
GenerifiedTypeIdentifier,
|
|
20
|
+
makeNullable,
|
|
21
|
+
NativeType,
|
|
22
|
+
type TypeExpression,
|
|
23
|
+
TypeIdentifier,
|
|
24
|
+
VoidType,
|
|
25
|
+
} from "../gir.ts";
|
|
26
|
+
import type { IntrospectedMetadata } from "../types/introspected.ts";
|
|
27
|
+
import { deprecatedVersion, introducedVersion, isDeprecated } from "./girs.ts";
|
|
28
|
+
import { isPrimitiveType, parseTypeExpression, resolvePrimitiveArrayType } from "./types.ts";
|
|
29
|
+
|
|
30
|
+
export const girParsingReporter = new LazyReporter("GirParsing");
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Parse documentation from a GIR element
|
|
34
|
+
*/
|
|
35
|
+
export function parseDoc(element: GirDocElement): string | null {
|
|
36
|
+
const el = element.doc?.[0]?._;
|
|
37
|
+
|
|
38
|
+
return el ? `${el}` : null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Parse deprecated documentation from a GIR element
|
|
43
|
+
*/
|
|
44
|
+
export function parseDeprecatedDoc(element: GirDocElement): string | null {
|
|
45
|
+
return element["doc-deprecated"]?.[0]?._ ?? null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Parse metadata from a GIR element
|
|
50
|
+
*/
|
|
51
|
+
export function parseMetadata(element: { $: GirInfoAttrs } & GirDocElement): IntrospectedMetadata | undefined {
|
|
52
|
+
const version = introducedVersion(element);
|
|
53
|
+
const deprecatedIn = deprecatedVersion(element);
|
|
54
|
+
const deprecated = isDeprecated(element);
|
|
55
|
+
const doc = parseDeprecatedDoc(element);
|
|
56
|
+
|
|
57
|
+
if (!version && !deprecated && !deprecatedIn && !doc) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
...(deprecated ? { deprecated } : {}),
|
|
63
|
+
...(doc ? { deprecatedDoc: doc } : {}),
|
|
64
|
+
...(deprecatedIn ? { deprecatedVersion: deprecatedIn } : {}),
|
|
65
|
+
...(version ? { introducedVersion: version } : {}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* This function determines whether a given type is a "pointer type"...
|
|
71
|
+
* Any type where the c:type ends with *
|
|
72
|
+
*/
|
|
73
|
+
function isPointerType(types: GirType[] | undefined) {
|
|
74
|
+
const type = types?.[0];
|
|
75
|
+
if (!type) return false;
|
|
76
|
+
|
|
77
|
+
const ctype = type.$["c:type"];
|
|
78
|
+
if (!ctype) return false;
|
|
79
|
+
|
|
80
|
+
const typeName = type.$.name;
|
|
81
|
+
if (!typeName) return false;
|
|
82
|
+
|
|
83
|
+
if (isPrimitiveType(typeName)) return false;
|
|
84
|
+
|
|
85
|
+
return ctype.endsWith("*");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Decode the type from GIR elements
|
|
90
|
+
*/
|
|
91
|
+
export function getType(
|
|
92
|
+
ns: IntrospectedNamespace,
|
|
93
|
+
param?: GirConstantElement | GirCallableReturn | GirFieldElement,
|
|
94
|
+
): TypeExpression {
|
|
95
|
+
const modName = ns.namespace;
|
|
96
|
+
|
|
97
|
+
if (!param) return VoidType;
|
|
98
|
+
|
|
99
|
+
let name = "";
|
|
100
|
+
let arrayDepth: number | null = null;
|
|
101
|
+
let length: number | null = null;
|
|
102
|
+
let isPointer = false;
|
|
103
|
+
|
|
104
|
+
const parameter = param as GirCallableParamElement;
|
|
105
|
+
if (parameter.array?.[0]) {
|
|
106
|
+
arrayDepth = 1;
|
|
107
|
+
|
|
108
|
+
const [array] = parameter.array;
|
|
109
|
+
|
|
110
|
+
if (array.$ && array.$.length != null) {
|
|
111
|
+
length = array.$.length;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (array.type?.[0].$?.name) {
|
|
115
|
+
name = array.type[0].$.name;
|
|
116
|
+
} else if (array.array) {
|
|
117
|
+
let arr = array;
|
|
118
|
+
let depth = 1;
|
|
119
|
+
|
|
120
|
+
while (Array.isArray(arr.array)) {
|
|
121
|
+
arr = arr.array[0];
|
|
122
|
+
depth++;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const possibleName = arr.type?.[0].$.name;
|
|
126
|
+
if (possibleName) {
|
|
127
|
+
name = possibleName;
|
|
128
|
+
} else {
|
|
129
|
+
name = "unknown";
|
|
130
|
+
const cType = (arr.type?.[0].$ as Record<string, string>)?.["c:type"] || "unknown";
|
|
131
|
+
girParsingReporter
|
|
132
|
+
.get()
|
|
133
|
+
.reportTypeResolutionWarning(
|
|
134
|
+
cType,
|
|
135
|
+
ns.namespace,
|
|
136
|
+
`Failed to find array type in ${ns.packageName}, marking as unknown`,
|
|
137
|
+
`c:type=${cType}`,
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
arrayDepth = depth;
|
|
141
|
+
isPointer = isPointerType(array.type);
|
|
142
|
+
} else {
|
|
143
|
+
name = "unknown";
|
|
144
|
+
}
|
|
145
|
+
} else if (parameter.type?.[0]?.$) {
|
|
146
|
+
const possibleName = parameter.type[0].$.name;
|
|
147
|
+
if (possibleName) {
|
|
148
|
+
name = possibleName;
|
|
149
|
+
} else {
|
|
150
|
+
name = "unknown";
|
|
151
|
+
const cType = (parameter.type[0].$ as Record<string, string>)?.["c:type"] || "unknown";
|
|
152
|
+
girParsingReporter
|
|
153
|
+
.get()
|
|
154
|
+
.reportTypeResolutionWarning(
|
|
155
|
+
cType,
|
|
156
|
+
modName,
|
|
157
|
+
`Failed to find type in ${modName}, marking as unknown`,
|
|
158
|
+
`c:type=${cType}`,
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
isPointer = isPointerType(parameter.type);
|
|
162
|
+
} else if (parameter.varargs || (parameter.$ && parameter.$.name === "...")) {
|
|
163
|
+
arrayDepth = 1;
|
|
164
|
+
name = "any";
|
|
165
|
+
} else {
|
|
166
|
+
name = "unknown";
|
|
167
|
+
girParsingReporter
|
|
168
|
+
.get()
|
|
169
|
+
.reportTypeResolutionWarning(
|
|
170
|
+
"varargs",
|
|
171
|
+
modName,
|
|
172
|
+
`Unknown varargs type in ${modName}, marking as unknown`,
|
|
173
|
+
parameter.$ ? JSON.stringify(parameter.$) : undefined,
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
let closure = null as null | number;
|
|
178
|
+
|
|
179
|
+
if (parameter.$?.closure) {
|
|
180
|
+
closure = parameter.$.closure;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const nullable = parameter.$ && parameter.$.nullable === "1";
|
|
184
|
+
const allowNone = parameter.$ && parameter.$["allow-none"] === "1";
|
|
185
|
+
|
|
186
|
+
const x = name.split(" ");
|
|
187
|
+
if (x.length === 1) {
|
|
188
|
+
name = x[0];
|
|
189
|
+
} else {
|
|
190
|
+
name = x[1];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
let variableType: TypeExpression = parseTypeExpression(ns.namespace, name);
|
|
194
|
+
|
|
195
|
+
if (variableType instanceof TypeIdentifier) {
|
|
196
|
+
if (variableType.is("GLib", "List") || variableType.is("GLib", "SList")) {
|
|
197
|
+
// TODO: $?.name was not necessary in gi.ts, but TelepathyLogger
|
|
198
|
+
// fails to generate now.
|
|
199
|
+
const listType = parameter?.type?.[0].type?.[0]?.$?.name;
|
|
200
|
+
|
|
201
|
+
if (listType) {
|
|
202
|
+
name = listType;
|
|
203
|
+
variableType = parseTypeExpression(ns.namespace, name);
|
|
204
|
+
|
|
205
|
+
arrayDepth = 1;
|
|
206
|
+
}
|
|
207
|
+
} else if (variableType.is("GLib", "HashTable")) {
|
|
208
|
+
const keyType = parameter?.type?.[0]?.type?.[0]?.$.name;
|
|
209
|
+
const valueType = parameter?.type?.[0]?.type?.[1]?.$.name;
|
|
210
|
+
|
|
211
|
+
if (keyType && valueType) {
|
|
212
|
+
const key = parseTypeExpression(ns.namespace, keyType);
|
|
213
|
+
const value = parseTypeExpression(ns.namespace, valueType);
|
|
214
|
+
|
|
215
|
+
variableType = new GenerifiedTypeIdentifier("HashTable", "GLib", [key, value]);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (arrayDepth != null) {
|
|
221
|
+
const primitiveArrayType = resolvePrimitiveArrayType(name, arrayDepth);
|
|
222
|
+
|
|
223
|
+
if (primitiveArrayType) {
|
|
224
|
+
const [primitiveName, primitiveArrayDepth] = primitiveArrayType;
|
|
225
|
+
|
|
226
|
+
variableType = ArrayType.new({
|
|
227
|
+
type: primitiveName,
|
|
228
|
+
arrayDepth: primitiveArrayDepth,
|
|
229
|
+
length,
|
|
230
|
+
});
|
|
231
|
+
} else {
|
|
232
|
+
variableType = ArrayType.new({ type: variableType, arrayDepth, length });
|
|
233
|
+
}
|
|
234
|
+
} else if (closure != null) {
|
|
235
|
+
variableType = ClosureType.new({ type: variableType, user_data: closure });
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (
|
|
239
|
+
parameter.$ &&
|
|
240
|
+
(parameter.$.direction === GirDirection.Inout || parameter.$.direction === GirDirection.Out) &&
|
|
241
|
+
(nullable || allowNone) &&
|
|
242
|
+
!(variableType instanceof NativeType) &&
|
|
243
|
+
variableType !== BigintOrNumberType
|
|
244
|
+
) {
|
|
245
|
+
return makeNullable(variableType);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if ((!parameter.$?.direction || parameter.$.direction === GirDirection.In) && nullable) {
|
|
249
|
+
return makeNullable(variableType);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
variableType.isPointer = isPointer;
|
|
253
|
+
|
|
254
|
+
return variableType;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Check if a function/method element has a shadow attribute
|
|
259
|
+
*/
|
|
260
|
+
export function hasShadow(
|
|
261
|
+
obj: GirFunctionElement | GirMethodElement,
|
|
262
|
+
): obj is GirFunctionElement & { $: { shadows: string } } {
|
|
263
|
+
return obj.$.shadows != null;
|
|
264
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { GirInfoAttrs } from "@gi.ts/parser";
|
|
2
|
+
import type { TsDoc } from "../types/index.ts";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Split a package name into namespace and version
|
|
6
|
+
*/
|
|
7
|
+
export const splitModuleName = (packageName: string): { packageName: string; namespace: string; version: string } => {
|
|
8
|
+
// Workaround for Vte-4-2.91
|
|
9
|
+
if (packageName.startsWith("Vte-4")) {
|
|
10
|
+
return {
|
|
11
|
+
packageName,
|
|
12
|
+
namespace: "Vte",
|
|
13
|
+
version: packageName.replace("Vte-", ""),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (!packageName.includes("-")) {
|
|
17
|
+
return {
|
|
18
|
+
packageName,
|
|
19
|
+
namespace: packageName,
|
|
20
|
+
version: "",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// There are modules that use multiple hyphens like 'GUPnP-DLNA-1.0'
|
|
24
|
+
const splits = packageName.split("-");
|
|
25
|
+
const version = splits.splice(-1, 1)[0];
|
|
26
|
+
const namespace = splits.join("");
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
packageName,
|
|
30
|
+
namespace,
|
|
31
|
+
version,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/** Remove namespace prefix */
|
|
36
|
+
export const removeNamespace = (type: string, namespace: string) => {
|
|
37
|
+
if (type.startsWith(`${namespace}.`)) {
|
|
38
|
+
type = type.substring(namespace.length + 1);
|
|
39
|
+
}
|
|
40
|
+
return type;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/** Remove class module name prefix */
|
|
44
|
+
export const removeClassModule = removeNamespace;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Add namespace prefix
|
|
48
|
+
*/
|
|
49
|
+
export const addNamespace = (type: string, namespace: string) => {
|
|
50
|
+
if (!type.startsWith(`${namespace}.`)) {
|
|
51
|
+
type = `${namespace}.${type}`;
|
|
52
|
+
}
|
|
53
|
+
return type;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Check if a line is a comment line
|
|
58
|
+
* @param line The line to check
|
|
59
|
+
* @returns Whether the line is a comment line or not
|
|
60
|
+
*/
|
|
61
|
+
export const isCommentLine = (line: string) => {
|
|
62
|
+
const lineTrim = line.trim();
|
|
63
|
+
return lineTrim.startsWith("//") || (lineTrim.startsWith("/*") && lineTrim.endsWith("*/"));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Convert a GirBoolean to a boolean
|
|
68
|
+
* @param boolStr The GirBoolean string
|
|
69
|
+
* @param defaultVal The default value
|
|
70
|
+
* @returns The boolean value
|
|
71
|
+
*/
|
|
72
|
+
export const girBool = (boolStr: string | undefined, defaultVal = false): boolean => {
|
|
73
|
+
if (boolStr) {
|
|
74
|
+
if (parseInt(boolStr, 10) === 0) return false;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return defaultVal;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const printGirDocComment = (tsDoc: TsDoc, config: { noComments: boolean }) => {
|
|
81
|
+
const desc: string[] = [];
|
|
82
|
+
if (config.noComments) {
|
|
83
|
+
return desc.join("\n");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const text = tsDoc.text;
|
|
87
|
+
|
|
88
|
+
if (text) {
|
|
89
|
+
if (text) {
|
|
90
|
+
const lines = text.split("\n");
|
|
91
|
+
if (lines.length) {
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
desc.push(`${line}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
for (const tag of tsDoc.tags) {
|
|
99
|
+
if (tag.paramName) {
|
|
100
|
+
desc.push(`@${tag.tagName} ${tag.paramName} ${tag.text}`);
|
|
101
|
+
} else {
|
|
102
|
+
desc.push(`@${tag.tagName} ${tag.text}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return desc.join("\n");
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export const isIntrospectable = (e: { $?: GirInfoAttrs }) => !e?.$?.introspectable || e.$.introspectable === "1";
|
|
110
|
+
export const isDeprecated = (e: { $: GirInfoAttrs }) => e?.$ && e.$.deprecated === "1";
|
|
111
|
+
export const deprecatedVersion = (e: { $: GirInfoAttrs }) => e?.$?.["deprecated-version"];
|
|
112
|
+
export const introducedVersion = (e: { $: GirInfoAttrs }) => e?.$?.version;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from "./conflicts.ts";
|
|
2
|
+
export * from "./documentation.ts";
|
|
3
|
+
export * from "./files.ts";
|
|
4
|
+
export * from "./generation.ts";
|
|
5
|
+
export * from "./gir-defaults.ts";
|
|
6
|
+
export * from "./gir-parsing.ts";
|
|
7
|
+
export * from "./girs.ts";
|
|
8
|
+
export * from "./naming.ts";
|
|
9
|
+
export * from "./numbers.ts";
|
|
10
|
+
export * from "./objects.ts";
|
|
11
|
+
export * from "./path.ts";
|
|
12
|
+
export * from "./registry.ts";
|
|
13
|
+
export * from "./strings.ts";
|
|
14
|
+
export * from "./type-resolution.ts";
|
|
15
|
+
export * from "./types.ts";
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { RESERVED_NAMESPACE_NAMES } from "../constants.ts";
|
|
2
|
+
import { isFirstCharNumeric, upperCamelCase } from "./strings.ts";
|
|
3
|
+
|
|
4
|
+
// Reserved words for identifier sanitization
|
|
5
|
+
const reservedWords = [
|
|
6
|
+
"abstract",
|
|
7
|
+
"arguments",
|
|
8
|
+
"await",
|
|
9
|
+
"boolean",
|
|
10
|
+
"break",
|
|
11
|
+
"byte",
|
|
12
|
+
"case",
|
|
13
|
+
"catch",
|
|
14
|
+
"char",
|
|
15
|
+
"class",
|
|
16
|
+
"const",
|
|
17
|
+
"continue",
|
|
18
|
+
"constructor", // This isn't technically reserved, but it's problematic.
|
|
19
|
+
"debugger",
|
|
20
|
+
"default",
|
|
21
|
+
"delete",
|
|
22
|
+
"do",
|
|
23
|
+
"else",
|
|
24
|
+
"enum",
|
|
25
|
+
"eval",
|
|
26
|
+
"export",
|
|
27
|
+
"extends",
|
|
28
|
+
"false",
|
|
29
|
+
"final",
|
|
30
|
+
"finally",
|
|
31
|
+
"for",
|
|
32
|
+
"function",
|
|
33
|
+
"goto",
|
|
34
|
+
"if",
|
|
35
|
+
"implements",
|
|
36
|
+
"import",
|
|
37
|
+
"in",
|
|
38
|
+
"instanceof",
|
|
39
|
+
"interface",
|
|
40
|
+
"let",
|
|
41
|
+
"native",
|
|
42
|
+
"new",
|
|
43
|
+
"null",
|
|
44
|
+
"package",
|
|
45
|
+
"private",
|
|
46
|
+
"protected",
|
|
47
|
+
"public",
|
|
48
|
+
"return",
|
|
49
|
+
"short",
|
|
50
|
+
"static",
|
|
51
|
+
"super",
|
|
52
|
+
"switch",
|
|
53
|
+
"synchronized",
|
|
54
|
+
"this",
|
|
55
|
+
"throw",
|
|
56
|
+
"throws",
|
|
57
|
+
"transient",
|
|
58
|
+
"true",
|
|
59
|
+
"try",
|
|
60
|
+
"typeof",
|
|
61
|
+
"var",
|
|
62
|
+
"void",
|
|
63
|
+
"volatile",
|
|
64
|
+
"while",
|
|
65
|
+
"with",
|
|
66
|
+
"yield",
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
// Map to store sanitized identifiers
|
|
70
|
+
export const SanitizedIdentifiers = new Map<string, string>();
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Transform a package name to import name format (lowercase)
|
|
74
|
+
* @param packageName The package name to transform
|
|
75
|
+
* @returns The transformed import name
|
|
76
|
+
*/
|
|
77
|
+
export function transformImportName(packageName: string): string {
|
|
78
|
+
return packageName.toLowerCase();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Transform a module namespace name to the proper format
|
|
83
|
+
* Handles numeric names and reserved namespace names
|
|
84
|
+
* @param name The namespace name to transform
|
|
85
|
+
* @returns The transformed namespace name
|
|
86
|
+
*/
|
|
87
|
+
export function transformModuleNamespaceName(name: string): string {
|
|
88
|
+
// Handle numeric names - prepend 'TODO_' if name starts with a number
|
|
89
|
+
name = transformNumericName(name);
|
|
90
|
+
|
|
91
|
+
// Convert to upperCamelCase
|
|
92
|
+
name = upperCamelCase(name);
|
|
93
|
+
|
|
94
|
+
// Handle reserved namespace names
|
|
95
|
+
if (RESERVED_NAMESPACE_NAMES[name]) {
|
|
96
|
+
name = `${name}_`;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return name;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Transform names starting with numbers by prepending 'TODO_'
|
|
104
|
+
* In JavaScript there can be no variables, methods, class names or enum names that start with a number
|
|
105
|
+
* @param name The name to transform
|
|
106
|
+
* @returns The transformed name
|
|
107
|
+
*/
|
|
108
|
+
function transformNumericName(name: string): string {
|
|
109
|
+
if (isFirstCharNumeric(name)) {
|
|
110
|
+
name = `TODO_${name}`;
|
|
111
|
+
}
|
|
112
|
+
return name;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Sanitize identifier name to be valid JavaScript identifier
|
|
117
|
+
* @param namespace The namespace for the identifier (can be null)
|
|
118
|
+
* @param name The name to sanitize
|
|
119
|
+
* @returns The sanitized identifier name
|
|
120
|
+
*/
|
|
121
|
+
export function sanitizeIdentifierName(namespace: string | null, name: string): string {
|
|
122
|
+
// This is a unique case where the name is "empty".
|
|
123
|
+
if (name === "") {
|
|
124
|
+
return "''";
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
let sanitized_name = name.replace(/[^A-z0-9_]/gi, "_");
|
|
128
|
+
|
|
129
|
+
if (reservedWords.includes(sanitized_name)) {
|
|
130
|
+
sanitized_name = `__${sanitized_name}`;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (sanitized_name.match(/^[^A-z_]/) != null) {
|
|
134
|
+
sanitized_name = `__${sanitized_name}`;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (namespace && sanitized_name !== name) {
|
|
138
|
+
SanitizedIdentifiers.set(`${namespace}.${name}`, `${namespace}.${sanitized_name}`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return sanitized_name;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Sanitize namespace name - fix broken namespacing in some GIRs
|
|
146
|
+
* @param namespace The namespace to sanitize
|
|
147
|
+
* @returns The sanitized namespace
|
|
148
|
+
*/
|
|
149
|
+
export function sanitizeNamespace(namespace: string): string {
|
|
150
|
+
if (namespace === "Tracker_Vala") {
|
|
151
|
+
return "Tracker";
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return namespace;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Sanitize member names for safe usage
|
|
159
|
+
* @param name The member name to sanitize
|
|
160
|
+
* @returns The sanitized member name
|
|
161
|
+
*/
|
|
162
|
+
export function sanitizeMemberName(name: string): string {
|
|
163
|
+
// This is a unique case where the name is "empty".
|
|
164
|
+
if (name === "") {
|
|
165
|
+
return "''";
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return name.replace(/[^A-z0-9_]/gi, "_");
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Check if a name would be invalid as JavaScript identifier
|
|
173
|
+
* @param name The name to check
|
|
174
|
+
* @returns True if the name would be invalid
|
|
175
|
+
*/
|
|
176
|
+
export function isInvalid(name: string): boolean {
|
|
177
|
+
if (reservedWords.includes(name)) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const sanitized = sanitizeMemberName(name);
|
|
182
|
+
|
|
183
|
+
if (sanitized.match(/^[^A-z_]/) != null) {
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return false;
|
|
188
|
+
}
|