@ts-for-gir/lib 4.0.0-beta.25 → 4.0.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -26
- package/src/constants.ts +154 -0
- package/src/dependency-manager.ts +427 -0
- package/src/formatters/default.ts +7 -0
- package/src/formatters/formatter.ts +3 -0
- package/src/formatters/index.ts +3 -0
- package/src/formatters/json.ts +7 -0
- package/src/generators/generator.ts +65 -0
- package/src/generators/index.ts +2 -0
- package/src/generics/clutter.ts +71 -0
- package/src/generics/generify.ts +74 -0
- package/src/generics/gio.ts +91 -0
- package/src/generics/glib.ts +31 -0
- package/src/generics/gtk.ts +99 -0
- package/src/generics/meta.ts +41 -0
- package/src/generics/st.ts +197 -0
- package/src/generics/visitor.ts +484 -0
- package/src/gir/alias.ts +73 -0
- package/src/gir/callback.ts +79 -0
- package/src/gir/const.ts +73 -0
- package/src/gir/constructor.ts +91 -0
- package/src/gir/data.ts +12 -0
- package/src/gir/dependency-resolver.ts +81 -0
- package/src/gir/direct-allocation-constructor.ts +65 -0
- package/src/gir/enum-member.ts +51 -0
- package/src/gir/enum.ts +126 -0
- package/src/gir/error.ts +82 -0
- package/src/gir/function.ts +296 -0
- package/src/gir/generics.ts +66 -0
- package/src/gir/gir-complex-record.ts +7 -0
- package/src/gir/index.ts +25 -0
- package/src/gir/introspected-base.ts +104 -0
- package/src/gir/introspected-class-member.ts +15 -0
- package/src/gir/introspected-classes.ts +1517 -0
- package/src/gir/introspected-namespace-member.ts +24 -0
- package/src/gir/namespace.ts +76 -0
- package/src/gir/parameter.ts +199 -0
- package/src/gir/promisify.ts +209 -0
- package/src/gir/property.ts +203 -0
- package/src/gir/record.ts +477 -0
- package/src/gir/registry.ts +184 -0
- package/src/gir/signal.ts +246 -0
- package/src/gir-module.ts +703 -0
- package/src/gir.ts +892 -0
- package/src/index.ts +16 -0
- package/src/injections/gee08.ts +89 -0
- package/src/injections/gee1.ts +35 -0
- package/src/injections/gio.ts +707 -0
- package/src/injections/glib.ts +275 -0
- package/src/injections/gobject.ts +901 -0
- package/src/injections/gtk4.ts +23 -0
- package/src/injections/inject.ts +43 -0
- package/src/injections/shell.ts +45 -0
- package/src/injections/tracker1.ts +42 -0
- package/src/library-version.ts +50 -0
- package/src/logger.ts +104 -0
- package/src/messages.ts +57 -0
- package/src/templates/index.ts +1 -0
- package/src/templates/template-engine.ts +178 -0
- package/src/types/answer-version.ts +4 -0
- package/src/types/any-introspected-type.ts +3 -0
- package/src/types/class-function-types.ts +49 -0
- package/src/types/class-member.ts +5 -0
- package/src/types/class-parent.ts +14 -0
- package/src/types/class.ts +45 -0
- package/src/types/config-flags.ts +5 -0
- package/src/types/construct-name.ts +13 -0
- package/src/types/dependency-map.ts +4 -0
- package/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
- package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
- package/src/types/format.ts +1 -0
- package/src/types/generator-constructor.ts +7 -0
- package/src/types/generics-config.ts +90 -0
- package/src/types/gir-any-element.ts +35 -0
- package/src/types/gir-module-interface.ts +22 -0
- package/src/types/gir-module-resolved.ts +32 -0
- package/src/types/gir-type-name.ts +20 -0
- package/src/types/index.ts +94 -0
- package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
- package/src/types/introspected.ts +18 -0
- package/src/types/local-name-check.ts +5 -0
- package/src/types/local-name-type.ts +1 -0
- package/src/types/local-name.ts +8 -0
- package/src/types/local-names.ts +5 -0
- package/src/types/metadata.ts +6 -0
- package/src/types/ns-loader.ts +7 -0
- package/src/types/options-base.ts +8 -0
- package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
- package/src/types/options-load.ts +6 -0
- package/src/types/options-transform.ts +5 -0
- package/src/types/output-format.ts +1 -0
- package/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
- package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
- package/src/types/package-section-parsed.ts +9 -0
- package/src/types/parsed-gir.ts +5 -0
- package/src/types/parsed-package-data.ts +7 -0
- package/src/types/property-case.ts +1 -0
- package/src/types/resolve-type.ts +4 -0
- package/src/types/template-data.ts +8 -0
- package/src/types/template-options.ts +33 -0
- package/src/types/transformation-case.ts +9 -0
- package/src/types/transformations.ts +5 -0
- package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +5 -3
- package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
- package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
- package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
- package/src/types/type-gir-element.ts +25 -0
- package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-gir-enumeration.ts} +1 -1
- package/src/types/type-gir-function.ts +8 -0
- package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
- package/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
- package/src/types/type-gir-parameter.ts +1 -0
- package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
- package/src/types/type-gir-variable.ts +1 -0
- package/src/types/type-ts-element.ts +13 -0
- package/{lib/types/type-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
- package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
- package/src/types/user-config-load-result.ts +6 -0
- package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
- package/src/util.ts +84 -0
- package/src/utils/conflicts/conflict-resolver.ts +122 -0
- package/src/utils/conflicts/function-conflict-detector.ts +139 -0
- package/src/utils/conflicts/index.ts +2 -0
- package/src/utils/conflicts.ts +490 -0
- package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
- package/src/utils/files.ts +71 -0
- package/src/utils/function-type-guards.ts +61 -0
- package/src/utils/generation.ts +69 -0
- package/src/utils/gir-parsing.ts +243 -0
- package/src/utils/girs.ts +113 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/naming.ts +188 -0
- package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
- package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
- package/src/utils/path.ts +7 -0
- package/src/utils/registry.ts +5 -0
- package/src/utils/strings.ts +134 -0
- package/src/utils/type-resolution.ts +116 -0
- package/src/utils/types.ts +247 -0
- package/src/validators/class.ts +324 -0
- package/src/validators/function-parameters.ts +52 -0
- package/src/validators/interface.ts +20 -0
- package/src/visitor.ts +58 -0
- package/lib/constants.d.ts +0 -25
- package/lib/constants.js +0 -93
- package/lib/constants.js.map +0 -1
- package/lib/dependency-manager.d.ts +0 -151
- package/lib/dependency-manager.js +0 -340
- package/lib/dependency-manager.js.map +0 -1
- package/lib/formatters/default.d.ts +0 -4
- package/lib/formatters/default.js +0 -7
- package/lib/formatters/default.js.map +0 -1
- package/lib/formatters/formatter.d.ts +0 -3
- package/lib/formatters/formatter.js +0 -3
- package/lib/formatters/formatter.js.map +0 -1
- package/lib/formatters/json.d.ts +0 -4
- package/lib/formatters/json.js +0 -7
- package/lib/formatters/json.js.map +0 -1
- package/lib/generators/dts/glib.d.ts +0 -2
- package/lib/generators/dts/glib.js +0 -514
- package/lib/generators/dts/glib.js.map +0 -1
- package/lib/generators/dts/gobject.d.ts +0 -2
- package/lib/generators/dts/gobject.js +0 -117
- package/lib/generators/dts/gobject.js.map +0 -1
- package/lib/generators/dts-inline.d.ts +0 -10
- package/lib/generators/dts-inline.js +0 -57
- package/lib/generators/dts-inline.js.map +0 -1
- package/lib/generators/dts-modules.d.ts +0 -10
- package/lib/generators/dts-modules.js +0 -98
- package/lib/generators/dts-modules.js.map +0 -1
- package/lib/generators/dts.d.ts +0 -45
- package/lib/generators/dts.js +0 -683
- package/lib/generators/dts.js.map +0 -1
- package/lib/generators/generator.d.ts +0 -45
- package/lib/generators/generator.js +0 -9
- package/lib/generators/generator.js.map +0 -1
- package/lib/generators/index.d.ts +0 -5
- package/lib/generators/index.js +0 -6
- package/lib/generators/index.js.map +0 -1
- package/lib/generators/json.d.ts +0 -257
- package/lib/generators/json.js +0 -866
- package/lib/generators/json.js.map +0 -1
- package/lib/generics/clutter.d.ts +0 -41
- package/lib/generics/clutter.js +0 -52
- package/lib/generics/clutter.js.map +0 -1
- package/lib/generics/generify.d.ts +0 -2
- package/lib/generics/generify.js +0 -47
- package/lib/generics/generify.js.map +0 -1
- package/lib/generics/gio.d.ts +0 -7
- package/lib/generics/gio.js +0 -51
- package/lib/generics/gio.js.map +0 -1
- package/lib/generics/glib.d.ts +0 -7
- package/lib/generics/glib.js +0 -18
- package/lib/generics/glib.js.map +0 -1
- package/lib/generics/gtk.d.ts +0 -7
- package/lib/generics/gtk.js +0 -56
- package/lib/generics/gtk.js.map +0 -1
- package/lib/generics/meta.d.ts +0 -36
- package/lib/generics/meta.js +0 -29
- package/lib/generics/meta.js.map +0 -1
- package/lib/generics/st.d.ts +0 -31
- package/lib/generics/st.js +0 -98
- package/lib/generics/st.js.map +0 -1
- package/lib/generics/visitor.d.ts +0 -20
- package/lib/generics/visitor.js +0 -255
- package/lib/generics/visitor.js.map +0 -1
- package/lib/gir/alias.d.ts +0 -24
- package/lib/gir/alias.js +0 -43
- package/lib/gir/alias.js.map +0 -1
- package/lib/gir/base.d.ts +0 -62
- package/lib/gir/base.js +0 -83
- package/lib/gir/base.js.map +0 -1
- package/lib/gir/class.d.ts +0 -228
- package/lib/gir/class.js +0 -1151
- package/lib/gir/class.js.map +0 -1
- package/lib/gir/const.d.ts +0 -25
- package/lib/gir/const.js +0 -43
- package/lib/gir/const.js.map +0 -1
- package/lib/gir/enum.d.ts +0 -45
- package/lib/gir/enum.js +0 -164
- package/lib/gir/enum.js.map +0 -1
- package/lib/gir/function.d.ts +0 -200
- package/lib/gir/function.js +0 -683
- package/lib/gir/function.js.map +0 -1
- package/lib/gir/generics.d.ts +0 -5
- package/lib/gir/generics.js +0 -57
- package/lib/gir/generics.js.map +0 -1
- package/lib/gir/index.d.ts +0 -14
- package/lib/gir/index.js +0 -15
- package/lib/gir/index.js.map +0 -1
- package/lib/gir/namespace.d.ts +0 -21
- package/lib/gir/namespace.js +0 -57
- package/lib/gir/namespace.js.map +0 -1
- package/lib/gir/nodes.d.ts +0 -11
- package/lib/gir/nodes.js +0 -12
- package/lib/gir/nodes.js.map +0 -1
- package/lib/gir/promisify.d.ts +0 -5
- package/lib/gir/promisify.js +0 -158
- package/lib/gir/promisify.js.map +0 -1
- package/lib/gir/property.d.ts +0 -60
- package/lib/gir/property.js +0 -128
- package/lib/gir/property.js.map +0 -1
- package/lib/gir/registry.d.ts +0 -51
- package/lib/gir/registry.js +0 -147
- package/lib/gir/registry.js.map +0 -1
- package/lib/gir/signal.d.ts +0 -36
- package/lib/gir/signal.js +0 -169
- package/lib/gir/signal.js.map +0 -1
- package/lib/gir/util.d.ts +0 -49
- package/lib/gir/util.js +0 -561
- package/lib/gir/util.js.map +0 -1
- package/lib/gir-module.d.ts +0 -104
- package/lib/gir-module.js +0 -584
- package/lib/gir-module.js.map +0 -1
- package/lib/gir.d.ts +0 -254
- package/lib/gir.js +0 -639
- package/lib/gir.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -16
- package/lib/index.js.map +0 -1
- package/lib/injections/gee08.d.ts +0 -7
- package/lib/injections/gee08.js +0 -68
- package/lib/injections/gee08.js.map +0 -1
- package/lib/injections/gee1.d.ts +0 -7
- package/lib/injections/gee1.js +0 -28
- package/lib/injections/gee1.js.map +0 -1
- package/lib/injections/gio.d.ts +0 -7
- package/lib/injections/gio.js +0 -563
- package/lib/injections/gio.js.map +0 -1
- package/lib/injections/glib.d.ts +0 -7
- package/lib/injections/glib.js +0 -210
- package/lib/injections/glib.js.map +0 -1
- package/lib/injections/gobject.d.ts +0 -7
- package/lib/injections/gobject.js +0 -594
- package/lib/injections/gobject.js.map +0 -1
- package/lib/injections/gtk4.d.ts +0 -7
- package/lib/injections/gtk4.js +0 -19
- package/lib/injections/gtk4.js.map +0 -1
- package/lib/injections/inject.d.ts +0 -4
- package/lib/injections/inject.js +0 -33
- package/lib/injections/inject.js.map +0 -1
- package/lib/injections/shell.d.ts +0 -20
- package/lib/injections/shell.js +0 -34
- package/lib/injections/shell.js.map +0 -1
- package/lib/injections/tracker1.d.ts +0 -7
- package/lib/injections/tracker1.js +0 -30
- package/lib/injections/tracker1.js.map +0 -1
- package/lib/library-version.d.ts +0 -10
- package/lib/library-version.js +0 -45
- package/lib/library-version.js.map +0 -1
- package/lib/logger.d.ts +0 -36
- package/lib/logger.js +0 -134
- package/lib/logger.js.map +0 -1
- package/lib/messages.d.ts +0 -23
- package/lib/messages.js +0 -39
- package/lib/messages.js.map +0 -1
- package/lib/registry.d.ts +0 -8
- package/lib/registry.js +0 -12
- package/lib/registry.js.map +0 -1
- package/lib/transformation.d.ts +0 -169
- package/lib/transformation.js +0 -393
- package/lib/transformation.js.map +0 -1
- package/lib/types/answer-version.d.ts +0 -4
- package/lib/types/answer-version.js +0 -2
- package/lib/types/answer-version.js.map +0 -1
- package/lib/types/class-parent.d.ts +0 -13
- package/lib/types/class-parent.js +0 -2
- package/lib/types/class-parent.js.map +0 -1
- package/lib/types/config-flags.d.ts +0 -4
- package/lib/types/config-flags.js +0 -2
- package/lib/types/config-flags.js.map +0 -1
- package/lib/types/construct-name.d.ts +0 -1
- package/lib/types/construct-name.js +0 -2
- package/lib/types/construct-name.js.map +0 -1
- package/lib/types/dependency-map.d.ts +0 -4
- package/lib/types/dependency-map.js +0 -2
- package/lib/types/dependency-map.js.map +0 -1
- package/lib/types/dependency.js +0 -2
- package/lib/types/dependency.js.map +0 -1
- package/lib/types/file-info.js +0 -2
- package/lib/types/file-info.js.map +0 -1
- package/lib/types/format.d.ts +0 -1
- package/lib/types/format.js +0 -2
- package/lib/types/format.js.map +0 -1
- package/lib/types/gir-alias-element.d.ts +0 -4
- package/lib/types/gir-alias-element.js +0 -2
- package/lib/types/gir-alias-element.js.map +0 -1
- package/lib/types/gir-annotation.d.ts +0 -9
- package/lib/types/gir-annotation.js +0 -2
- package/lib/types/gir-annotation.js.map +0 -1
- package/lib/types/gir-any-element.d.ts +0 -2
- package/lib/types/gir-any-element.js +0 -2
- package/lib/types/gir-any-element.js.map +0 -1
- package/lib/types/gir-bitfield-element.d.ts +0 -6
- package/lib/types/gir-bitfield-element.js +0 -2
- package/lib/types/gir-bitfield-element.js.map +0 -1
- package/lib/types/gir-callable-param-element.d.ts +0 -4
- package/lib/types/gir-callable-param-element.js +0 -2
- package/lib/types/gir-callable-param-element.js.map +0 -1
- package/lib/types/gir-callable-params.d.ts +0 -7
- package/lib/types/gir-callable-params.js +0 -2
- package/lib/types/gir-callable-params.js.map +0 -1
- package/lib/types/gir-callable-return.d.ts +0 -5
- package/lib/types/gir-callable-return.js +0 -2
- package/lib/types/gir-callable-return.js.map +0 -1
- package/lib/types/gir-callback-element.d.ts +0 -6
- package/lib/types/gir-callback-element.js +0 -2
- package/lib/types/gir-callback-element.js.map +0 -1
- package/lib/types/gir-class-element.d.ts +0 -17
- package/lib/types/gir-class-element.js +0 -2
- package/lib/types/gir-class-element.js.map +0 -1
- package/lib/types/gir-constant-element.d.ts +0 -4
- package/lib/types/gir-constant-element.js +0 -2
- package/lib/types/gir-constant-element.js.map +0 -1
- package/lib/types/gir-constructor-element.d.ts +0 -6
- package/lib/types/gir-constructor-element.js +0 -2
- package/lib/types/gir-constructor-element.js.map +0 -1
- package/lib/types/gir-enum-element.d.ts +0 -6
- package/lib/types/gir-enum-element.js +0 -2
- package/lib/types/gir-enum-element.js.map +0 -1
- package/lib/types/gir-field-element.d.ts +0 -5
- package/lib/types/gir-field-element.js +0 -2
- package/lib/types/gir-field-element.js.map +0 -1
- package/lib/types/gir-function-element.d.ts +0 -6
- package/lib/types/gir-function-element.js +0 -2
- package/lib/types/gir-function-element.js.map +0 -1
- package/lib/types/gir-instance-parameter.d.ts +0 -7
- package/lib/types/gir-instance-parameter.js +0 -2
- package/lib/types/gir-instance-parameter.js.map +0 -1
- package/lib/types/gir-interface-element.d.ts +0 -16
- package/lib/types/gir-interface-element.js +0 -2
- package/lib/types/gir-interface-element.js.map +0 -1
- package/lib/types/gir-member-element.d.ts +0 -5
- package/lib/types/gir-member-element.js +0 -2
- package/lib/types/gir-member-element.js.map +0 -1
- package/lib/types/gir-method-element.d.ts +0 -7
- package/lib/types/gir-method-element.js +0 -2
- package/lib/types/gir-method-element.js.map +0 -1
- package/lib/types/gir-module-resolved-by.d.ts +0 -15
- package/lib/types/gir-module-resolved-by.js +0 -2
- package/lib/types/gir-module-resolved-by.js.map +0 -1
- package/lib/types/gir-modules-grouped-map.d.ts +0 -4
- package/lib/types/gir-modules-grouped-map.js +0 -2
- package/lib/types/gir-modules-grouped-map.js.map +0 -1
- package/lib/types/gir-modules-grouped.d.ts +0 -12
- package/lib/types/gir-modules-grouped.js +0 -2
- package/lib/types/gir-modules-grouped.js.map +0 -1
- package/lib/types/gir-namespace.d.ts +0 -27
- package/lib/types/gir-namespace.js +0 -2
- package/lib/types/gir-namespace.js.map +0 -1
- package/lib/types/gir-property-element.d.ts +0 -4
- package/lib/types/gir-property-element.js +0 -2
- package/lib/types/gir-property-element.js.map +0 -1
- package/lib/types/gir-record-element.d.ts +0 -10
- package/lib/types/gir-record-element.js +0 -2
- package/lib/types/gir-record-element.js.map +0 -1
- package/lib/types/gir-repository.d.ts +0 -5
- package/lib/types/gir-repository.js +0 -2
- package/lib/types/gir-repository.js.map +0 -1
- package/lib/types/gir-signal.d.ts +0 -10
- package/lib/types/gir-signal.js +0 -2
- package/lib/types/gir-signal.js.map +0 -1
- package/lib/types/gir-type-name.d.ts +0 -2
- package/lib/types/gir-type-name.js +0 -2
- package/lib/types/gir-type-name.js.map +0 -1
- package/lib/types/gir-union-element.d.ts +0 -9
- package/lib/types/gir-union-element.js +0 -2
- package/lib/types/gir-union-element.js.map +0 -1
- package/lib/types/gir-unparsed-number.d.ts +0 -2
- package/lib/types/gir-unparsed-number.js +0 -2
- package/lib/types/gir-unparsed-number.js.map +0 -1
- package/lib/types/gir-virtual-method.d.ts +0 -6
- package/lib/types/gir-virtual-method.js +0 -2
- package/lib/types/gir-virtual-method.js.map +0 -1
- package/lib/types/index.d.ts +0 -79
- package/lib/types/index.js +0 -80
- package/lib/types/index.js.map +0 -1
- package/lib/types/inheritance-table.js +0 -2
- package/lib/types/inheritance-table.js.map +0 -1
- package/lib/types/local-name-check.d.ts +0 -4
- package/lib/types/local-name-check.js +0 -2
- package/lib/types/local-name-check.js.map +0 -1
- package/lib/types/local-name-type.d.ts +0 -1
- package/lib/types/local-name-type.js +0 -2
- package/lib/types/local-name-type.js.map +0 -1
- package/lib/types/local-name.d.ts +0 -7
- package/lib/types/local-name.js +0 -2
- package/lib/types/local-name.js.map +0 -1
- package/lib/types/local-names.d.ts +0 -4
- package/lib/types/local-names.js +0 -2
- package/lib/types/local-names.js.map +0 -1
- package/lib/types/metadata.d.ts +0 -8
- package/lib/types/metadata.js +0 -2
- package/lib/types/metadata.js.map +0 -1
- package/lib/types/options-base.d.ts +0 -4
- package/lib/types/options-base.js +0 -2
- package/lib/types/options-base.js.map +0 -1
- package/lib/types/options-generation.js +0 -2
- package/lib/types/options-generation.js.map +0 -1
- package/lib/types/options-load.d.ts +0 -5
- package/lib/types/options-load.js +0 -2
- package/lib/types/options-load.js.map +0 -1
- package/lib/types/options-transform.d.ts +0 -4
- package/lib/types/options-transform.js +0 -2
- package/lib/types/options-transform.js.map +0 -1
- package/lib/types/output-format.d.ts +0 -1
- package/lib/types/output-format.js +0 -2
- package/lib/types/output-format.js.map +0 -1
- package/lib/types/package-data-parsed.js +0 -2
- package/lib/types/package-data-parsed.js.map +0 -1
- package/lib/types/package-data.js +0 -2
- package/lib/types/package-data.js.map +0 -1
- package/lib/types/package-section-parsed.d.ts +0 -8
- package/lib/types/package-section-parsed.js +0 -2
- package/lib/types/package-section-parsed.js.map +0 -1
- package/lib/types/parsed-gir.d.ts +0 -5
- package/lib/types/parsed-gir.js +0 -2
- package/lib/types/parsed-gir.js.map +0 -1
- package/lib/types/parsed-package-data.d.ts +0 -6
- package/lib/types/parsed-package-data.js +0 -2
- package/lib/types/parsed-package-data.js.map +0 -1
- package/lib/types/part-of-class.d.ts +0 -7
- package/lib/types/part-of-class.js +0 -2
- package/lib/types/part-of-class.js.map +0 -1
- package/lib/types/part-of-module.d.ts +0 -6
- package/lib/types/part-of-module.js +0 -2
- package/lib/types/part-of-module.js.map +0 -1
- package/lib/types/property-case.d.ts +0 -1
- package/lib/types/property-case.js +0 -2
- package/lib/types/property-case.js.map +0 -1
- package/lib/types/resolve-type.d.ts +0 -4
- package/lib/types/resolve-type.js +0 -6
- package/lib/types/resolve-type.js.map +0 -1
- package/lib/types/template-data.d.ts +0 -7
- package/lib/types/template-data.js +0 -2
- package/lib/types/template-data.js.map +0 -1
- package/lib/types/transformation-case.d.ts +0 -1
- package/lib/types/transformation-case.js +0 -2
- package/lib/types/transformation-case.js.map +0 -1
- package/lib/types/transformations.d.ts +0 -4
- package/lib/types/transformations.js +0 -2
- package/lib/types/transformations.js.map +0 -1
- package/lib/types/ts-doc-tag.js +0 -2
- package/lib/types/ts-doc-tag.js.map +0 -1
- package/lib/types/ts-doc.js +0 -2
- package/lib/types/ts-doc.js.map +0 -1
- package/lib/types/type-gir-alias.js +0 -2
- package/lib/types/type-gir-alias.js.map +0 -1
- package/lib/types/type-gir-class.js +0 -2
- package/lib/types/type-gir-class.js.map +0 -1
- package/lib/types/type-gir-element.d.ts +0 -3
- package/lib/types/type-gir-element.js +0 -2
- package/lib/types/type-gir-element.js.map +0 -1
- package/lib/types/type-gir-enumeration-member.js +0 -2
- package/lib/types/type-gir-enumeration-member.js.map +0 -1
- package/lib/types/type-gir-enumeration.js +0 -2
- package/lib/types/type-gir-enumeration.js.map +0 -1
- package/lib/types/type-gir-function.d.ts +0 -1
- package/lib/types/type-gir-function.js +0 -2
- package/lib/types/type-gir-function.js.map +0 -1
- package/lib/types/type-gir-interface.js +0 -2
- package/lib/types/type-gir-interface.js.map +0 -1
- package/lib/types/type-gir-method.js +0 -2
- package/lib/types/type-gir-method.js.map +0 -1
- package/lib/types/type-gir-parameter.d.ts +0 -1
- package/lib/types/type-gir-parameter.js +0 -2
- package/lib/types/type-gir-parameter.js.map +0 -1
- package/lib/types/type-gir-property.js +0 -2
- package/lib/types/type-gir-property.js.map +0 -1
- package/lib/types/type-gir-variable.d.ts +0 -1
- package/lib/types/type-gir-variable.js +0 -2
- package/lib/types/type-gir-variable.js.map +0 -1
- package/lib/types/type-ts-element.d.ts +0 -3
- package/lib/types/type-ts-element.js +0 -2
- package/lib/types/type-ts-element.js.map +0 -1
- package/lib/types/type-ts-enumeration-member.js +0 -2
- package/lib/types/type-ts-enumeration-member.js.map +0 -1
- package/lib/types/type-ts-function.js +0 -2
- package/lib/types/type-ts-function.js.map +0 -1
- package/lib/types/type-ts-property.js +0 -2
- package/lib/types/type-ts-property.js.map +0 -1
- package/lib/types/user-config-load-result.d.ts +0 -6
- package/lib/types/user-config-load-result.js +0 -2
- package/lib/types/user-config-load-result.js.map +0 -1
- package/lib/types/user-config.js +0 -2
- package/lib/types/user-config.js.map +0 -1
- package/lib/util.d.ts +0 -20
- package/lib/util.js +0 -67
- package/lib/util.js.map +0 -1
- package/lib/utils/documentation.d.ts +0 -13
- package/lib/utils/documentation.js.map +0 -1
- package/lib/utils/files.d.ts +0 -21
- package/lib/utils/files.js +0 -62
- package/lib/utils/files.js.map +0 -1
- package/lib/utils/girs.d.ts +0 -45
- package/lib/utils/girs.js +0 -101
- package/lib/utils/girs.js.map +0 -1
- package/lib/utils/index.d.ts +0 -8
- package/lib/utils/index.js +0 -9
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/naming.d.ts +0 -13
- package/lib/utils/naming.js +0 -40
- package/lib/utils/naming.js.map +0 -1
- package/lib/utils/numbers.js +0 -9
- package/lib/utils/numbers.js.map +0 -1
- package/lib/utils/objects.d.ts +0 -136
- package/lib/utils/objects.js.map +0 -1
- package/lib/utils/path.d.ts +0 -1
- package/lib/utils/path.js +0 -7
- package/lib/utils/path.js.map +0 -1
- package/lib/utils/strings.d.ts +0 -74
- package/lib/utils/strings.js +0 -121
- package/lib/utils/strings.js.map +0 -1
- package/lib/validators/class.d.ts +0 -7
- package/lib/validators/class.js +0 -217
- package/lib/validators/class.js.map +0 -1
- package/lib/validators/function-parameters.d.ts +0 -14
- package/lib/validators/function-parameters.js +0 -31
- package/lib/validators/function-parameters.js.map +0 -1
- package/lib/validators/interface.d.ts +0 -5
- package/lib/validators/interface.js +0 -16
- package/lib/validators/interface.js.map +0 -1
- package/lib/visitor.d.ts +0 -35
- package/lib/visitor.js +0 -29
- package/lib/visitor.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ts-for-gir/lib",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.26",
|
|
4
4
|
"description": "Typescript .d.ts generator from GIR for gjs",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"main": "src/index.ts",
|
|
6
|
+
"module": "src/index.ts",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"engines": {
|
|
9
9
|
"node": ">=18"
|
|
10
10
|
},
|
|
11
11
|
"exports": {
|
|
12
|
-
".":
|
|
13
|
-
"types": "./lib/index.d.ts",
|
|
14
|
-
"import": "./lib/index.js"
|
|
15
|
-
}
|
|
12
|
+
".": "./src/index.ts"
|
|
16
13
|
},
|
|
17
14
|
"scripts": {
|
|
18
|
-
"
|
|
19
|
-
"build:ts": "tsc",
|
|
20
|
-
"clear": "yarn clear:build",
|
|
21
|
-
"clear:build": "rimraf ./lib",
|
|
22
|
-
"watch": "yarn build:ts --watch",
|
|
23
|
-
"lint": "eslint . --fix",
|
|
24
|
-
"update-package-descriptions": "wget https://raw.githubusercontent.com/vala-lang/valadoc-org/master/documentation/packages.xml"
|
|
15
|
+
"check": "tsc --noEmit"
|
|
25
16
|
},
|
|
26
17
|
"repository": {
|
|
27
18
|
"type": "git",
|
|
@@ -29,7 +20,7 @@
|
|
|
29
20
|
},
|
|
30
21
|
"author": "Pascal Garber <pascal@artandcode.studio>",
|
|
31
22
|
"files": [
|
|
32
|
-
"
|
|
23
|
+
"src"
|
|
33
24
|
],
|
|
34
25
|
"license": "Apache-2.0",
|
|
35
26
|
"bugs": {
|
|
@@ -51,20 +42,15 @@
|
|
|
51
42
|
],
|
|
52
43
|
"devDependencies": {
|
|
53
44
|
"@types/ejs": "^3.1.5",
|
|
54
|
-
"@types/
|
|
55
|
-
"@types/
|
|
56
|
-
"@types/node": "^24.0.1",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.34.0",
|
|
58
|
-
"@typescript-eslint/parser": "^8.34.0",
|
|
59
|
-
"eslint": "^9.29.0",
|
|
60
|
-
"eslint-config-prettier": "^10.1.5",
|
|
61
|
-
"eslint-plugin-prettier": "^5.4.1",
|
|
62
|
-
"prettier": "^3.5.3",
|
|
45
|
+
"@types/lodash": "^4.17.20",
|
|
46
|
+
"@types/node": "^24.2.1",
|
|
63
47
|
"rimraf": "^6.0.1",
|
|
64
|
-
"typescript": "^5.
|
|
48
|
+
"typescript": "^5.9.2"
|
|
65
49
|
},
|
|
66
50
|
"dependencies": {
|
|
67
|
-
"@gi.ts/parser": "^4.0.0-beta.
|
|
51
|
+
"@gi.ts/parser": "^4.0.0-beta.26",
|
|
52
|
+
"@ts-for-gir/reporter": "^4.0.0-beta.26",
|
|
53
|
+
"@ts-for-gir/templates": "^4.0.0-beta.26",
|
|
68
54
|
"colorette": "^2.0.20",
|
|
69
55
|
"ejs": "^3.1.10",
|
|
70
56
|
"glob": "^11.0.3",
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import type { LibraryVersion } from "./library-version.ts";
|
|
4
|
+
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
|
|
7
|
+
export const COMMENT_REG_EXP = /\/\*.*\*\//g;
|
|
8
|
+
export const PARAM_REG_EXP = /[0-9a-zA-Z_]*:/g;
|
|
9
|
+
export const OPT_PARAM_REG_EXP = /[0-9a-zA-Z_]*\?:/g;
|
|
10
|
+
export const NEW_LINE_REG_EXP = /[\n\r]+/g;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Package information interface for workspace root package.json
|
|
14
|
+
*/
|
|
15
|
+
interface WorkspacePackage {
|
|
16
|
+
name: string;
|
|
17
|
+
version: string;
|
|
18
|
+
description: string;
|
|
19
|
+
license: string;
|
|
20
|
+
homepage: string;
|
|
21
|
+
author: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the workspace root package.json path
|
|
26
|
+
* Uses require.resolve to find the correct path regardless of execution context
|
|
27
|
+
*/
|
|
28
|
+
function resolveWorkspacePackageJson(): string {
|
|
29
|
+
try {
|
|
30
|
+
// Try to resolve from the workspace root by going up from this package
|
|
31
|
+
// @ts-for-gir/lib -> ts-for-gir root
|
|
32
|
+
return require.resolve("../../../package.json");
|
|
33
|
+
} catch {
|
|
34
|
+
// Fallback: try to resolve from current package's package.json location
|
|
35
|
+
try {
|
|
36
|
+
const currentPackageJson = require.resolve("@ts-for-gir/lib/package.json");
|
|
37
|
+
return join(dirname(dirname(currentPackageJson)), "package.json");
|
|
38
|
+
} catch {
|
|
39
|
+
throw new Error("Unable to resolve workspace package.json path");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Reads and parses the workspace package.json file synchronously
|
|
46
|
+
* Contains version and metadata shared across all workspace packages
|
|
47
|
+
*/
|
|
48
|
+
function readWorkspacePackageSync(): WorkspacePackage {
|
|
49
|
+
try {
|
|
50
|
+
const packagePath = resolveWorkspacePackageJson();
|
|
51
|
+
// Use dynamic import to avoid top-level await in constants
|
|
52
|
+
const { readFileSync } = require("node:fs");
|
|
53
|
+
const content = readFileSync(packagePath, "utf-8");
|
|
54
|
+
return JSON.parse(content) as WorkspacePackage;
|
|
55
|
+
} catch (error) {
|
|
56
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
57
|
+
throw new Error(`Failed to read workspace package.json: ${message}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Read package information once at module load
|
|
62
|
+
export const PACKAGE = readWorkspacePackageSync();
|
|
63
|
+
|
|
64
|
+
export const APP_NAME = "ts-for-gir";
|
|
65
|
+
export const APP_USAGE = "TypeScript type definition generator for GObject introspection GIR files";
|
|
66
|
+
export const APP_SOURCE = "https://github.com/gjsify/ts-for-gir";
|
|
67
|
+
export const APP_VERSION = PACKAGE.version;
|
|
68
|
+
|
|
69
|
+
export const PACKAGE_DESC = (packageName: string, libraryVersion?: LibraryVersion) => {
|
|
70
|
+
if (libraryVersion) {
|
|
71
|
+
return `GJS TypeScript type definitions for ${packageName}, generated from library version ${libraryVersion.toString()}`;
|
|
72
|
+
}
|
|
73
|
+
return `GJS TypeScript type definitions for ${packageName}`;
|
|
74
|
+
};
|
|
75
|
+
export const PACKAGE_KEYWORDS = (packageName: string) => {
|
|
76
|
+
return `"Gir", "TypeScript", "types", "GObject-Introspection", "GJS", "${packageName}"`;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/** The reserved variable names listed here cannot be resolved simply by quotation marks */
|
|
80
|
+
export const RESERVED_QUOTE_VARIABLE_NAMES = ["constructor"];
|
|
81
|
+
|
|
82
|
+
export const RESERVED_VARIABLE_NAMES = [
|
|
83
|
+
"in",
|
|
84
|
+
"function",
|
|
85
|
+
"true",
|
|
86
|
+
"false",
|
|
87
|
+
"break",
|
|
88
|
+
"arguments",
|
|
89
|
+
"eval",
|
|
90
|
+
"default",
|
|
91
|
+
"new",
|
|
92
|
+
"extends",
|
|
93
|
+
"with",
|
|
94
|
+
"var",
|
|
95
|
+
"class",
|
|
96
|
+
"delete",
|
|
97
|
+
"return",
|
|
98
|
+
"constructor",
|
|
99
|
+
"this", // TODO check if this is used as we would use this in javascript, if so, this is only allowed as the first parameter
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
export const RESERVED_CLASS_NAMES = [
|
|
103
|
+
"break",
|
|
104
|
+
"boolean",
|
|
105
|
+
"case",
|
|
106
|
+
"catch",
|
|
107
|
+
"class",
|
|
108
|
+
"const",
|
|
109
|
+
"continue",
|
|
110
|
+
"debugger",
|
|
111
|
+
"default",
|
|
112
|
+
"delete",
|
|
113
|
+
"do",
|
|
114
|
+
"else",
|
|
115
|
+
"enum",
|
|
116
|
+
"export",
|
|
117
|
+
"extends",
|
|
118
|
+
"false",
|
|
119
|
+
"finally",
|
|
120
|
+
"for",
|
|
121
|
+
"function",
|
|
122
|
+
"if",
|
|
123
|
+
"implements",
|
|
124
|
+
"import",
|
|
125
|
+
"in",
|
|
126
|
+
"instanceof",
|
|
127
|
+
"interface",
|
|
128
|
+
"let",
|
|
129
|
+
"new",
|
|
130
|
+
"number",
|
|
131
|
+
"package",
|
|
132
|
+
"private",
|
|
133
|
+
"protected",
|
|
134
|
+
"public",
|
|
135
|
+
"return",
|
|
136
|
+
"static",
|
|
137
|
+
"super",
|
|
138
|
+
"switch",
|
|
139
|
+
"string",
|
|
140
|
+
"this",
|
|
141
|
+
"throw",
|
|
142
|
+
"true",
|
|
143
|
+
"try",
|
|
144
|
+
"typeof",
|
|
145
|
+
"var",
|
|
146
|
+
"void",
|
|
147
|
+
"while",
|
|
148
|
+
"with",
|
|
149
|
+
"yield",
|
|
150
|
+
];
|
|
151
|
+
|
|
152
|
+
export const RESERVED_FUNCTION_NAMES = ["false", "true", "break"];
|
|
153
|
+
|
|
154
|
+
export const RESERVED_NAMESPACE_NAMES = {};
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { type GirInclude, type GirNamespace, type GirRepository, type GirXML, parser } from "@gi.ts/parser";
|
|
3
|
+
import type { GirModule } from "./gir-module.ts";
|
|
4
|
+
import { LibraryVersion } from "./library-version.ts";
|
|
5
|
+
import { Logger } from "./logger.ts";
|
|
6
|
+
import type { Dependency, FileInfo, OptionsGeneration } from "./types/index.ts";
|
|
7
|
+
import { findFilesInDirs } from "./utils/files.ts";
|
|
8
|
+
import { splitModuleName } from "./utils/girs.ts";
|
|
9
|
+
import { sanitizeNamespace, transformImportName, transformModuleNamespaceName } from "./utils/naming.ts";
|
|
10
|
+
import { pascalCase } from "./utils/strings.ts";
|
|
11
|
+
|
|
12
|
+
export class DependencyManager {
|
|
13
|
+
protected log: Logger;
|
|
14
|
+
protected readonly config: OptionsGeneration;
|
|
15
|
+
protected _cache: { [packageName: string]: Dependency } = {};
|
|
16
|
+
|
|
17
|
+
static instances: { [key: string]: DependencyManager } = {};
|
|
18
|
+
|
|
19
|
+
protected constructor(config: OptionsGeneration) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.log = new Logger(config.verbose, "DependencyManager");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Get the DependencyManager singleton instance
|
|
26
|
+
*/
|
|
27
|
+
static getInstance(config?: OptionsGeneration): DependencyManager {
|
|
28
|
+
const configKey = config ? JSON.stringify(config) : Object.keys(DependencyManager.instances)[0];
|
|
29
|
+
|
|
30
|
+
if (DependencyManager.instances[configKey]) {
|
|
31
|
+
return DependencyManager.instances[configKey];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!config) {
|
|
35
|
+
throw new Error("config parameter is required to initialize DependencyManager");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const instance = new DependencyManager(config);
|
|
39
|
+
DependencyManager.instances[configKey] = instance;
|
|
40
|
+
return instance;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
protected parsePackageName(namespaceOrPackageName: string, version?: string) {
|
|
44
|
+
let packageName: string;
|
|
45
|
+
let namespace: string;
|
|
46
|
+
if (version) {
|
|
47
|
+
namespace = namespaceOrPackageName;
|
|
48
|
+
packageName = `${namespace}-${version}`;
|
|
49
|
+
} else {
|
|
50
|
+
packageName = namespaceOrPackageName;
|
|
51
|
+
const { namespace: _namespace, version: _version } = splitModuleName(packageName);
|
|
52
|
+
namespace = _namespace;
|
|
53
|
+
version = _version;
|
|
54
|
+
}
|
|
55
|
+
return { packageName, namespace, version };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
protected parseArgs(namespaceOrPackageNameOrRepo: string | GirRepository, version?: string, noOverride?: boolean) {
|
|
59
|
+
let packageName: string;
|
|
60
|
+
let namespace: string;
|
|
61
|
+
let repo: GirRepository | null = null;
|
|
62
|
+
|
|
63
|
+
if (typeof namespaceOrPackageNameOrRepo === "string") {
|
|
64
|
+
// Special case for Gjs
|
|
65
|
+
if (!noOverride && namespaceOrPackageNameOrRepo === "Gjs") {
|
|
66
|
+
return { ...this.getGjs(), repo: null };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const args = this.parsePackageName(namespaceOrPackageNameOrRepo, version);
|
|
70
|
+
version = args.version;
|
|
71
|
+
packageName = args.packageName;
|
|
72
|
+
namespace = args.namespace;
|
|
73
|
+
} else {
|
|
74
|
+
repo = namespaceOrPackageNameOrRepo;
|
|
75
|
+
const ns = repo.namespace?.[0];
|
|
76
|
+
if (!ns) {
|
|
77
|
+
throw new Error("Invalid GirRepository");
|
|
78
|
+
}
|
|
79
|
+
version = ns.$.version;
|
|
80
|
+
namespace = ns.$.name;
|
|
81
|
+
packageName = `${namespace}-${version}`;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return { packageName, namespace, version, repo };
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get all dependencies in the cache
|
|
89
|
+
* @returns All dependencies in the cache
|
|
90
|
+
*/
|
|
91
|
+
all(): Dependency[] {
|
|
92
|
+
return Object.values(this._cache);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
getAllPackageNames(): string[] {
|
|
96
|
+
return Object.keys(this._cache);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get the core dependencies
|
|
101
|
+
* @returns
|
|
102
|
+
*/
|
|
103
|
+
async core(): Promise<Dependency[]> {
|
|
104
|
+
return [
|
|
105
|
+
await this.get("GObject", "2.0"),
|
|
106
|
+
await this.get("GLib", "2.0"),
|
|
107
|
+
await this.get("Gio", "2.0"),
|
|
108
|
+
await this.get("cairo", "1.0"),
|
|
109
|
+
];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
createImportProperties(namespace: string, packageName: string, version: string) {
|
|
113
|
+
const importPath = this.createImportPath(packageName, namespace, version);
|
|
114
|
+
const importDef = this.createImportDef(namespace, importPath);
|
|
115
|
+
const packageJsonImport = this.createPackageJsonImport(importPath);
|
|
116
|
+
return {
|
|
117
|
+
importPath,
|
|
118
|
+
importDef,
|
|
119
|
+
packageJsonImport,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
createImportPath(packageName: string, namespace: string, version: string): string {
|
|
124
|
+
if (!this.config.package) {
|
|
125
|
+
return `gi://${namespace}?version=${version}`;
|
|
126
|
+
}
|
|
127
|
+
const importName = transformImportName(packageName);
|
|
128
|
+
const importPath = `${this.config.npmScope}/${importName}`;
|
|
129
|
+
return importPath;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
createImportDef(namespace: string, importPath: string): string {
|
|
133
|
+
return this.config.noNamespace
|
|
134
|
+
? `import type * as ${namespace} from '${importPath}'`
|
|
135
|
+
: `import type ${namespace} from '${importPath}';`;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
createPackageJsonImport(importPath: string): string {
|
|
139
|
+
const depVersion = this.config.workspace ? "workspace:^" : "*";
|
|
140
|
+
return `"${importPath}": "${depVersion}"`;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
protected async parseGir(path: string) {
|
|
144
|
+
const girXML = parser.parseGir(await readFile(path, "utf8"));
|
|
145
|
+
const repo = girXML.repository[0];
|
|
146
|
+
const ns = repo?.namespace?.[0];
|
|
147
|
+
const version = ns?.$.version;
|
|
148
|
+
return { girXML, repo, ns, version };
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
protected async parseGirAndReturnLatestVersion(filesInfo: FileInfo[]) {
|
|
152
|
+
const libraryVersions: { libraryVersion: LibraryVersion; girXML: GirXML; fileInfo: FileInfo }[] = [];
|
|
153
|
+
|
|
154
|
+
if (filesInfo.length > 1) {
|
|
155
|
+
this.log.warn(`Multiple paths found for ${filesInfo[0].filename}`);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
for (const fileInfo of filesInfo) {
|
|
159
|
+
if (!fileInfo.exists || !fileInfo.path) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const { girXML, ns, version } = await this.parseGir(fileInfo.path);
|
|
163
|
+
if (!version || !ns) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const libraryVersion = new LibraryVersion(ns?.constant, version);
|
|
168
|
+
|
|
169
|
+
if (filesInfo.length > 1) {
|
|
170
|
+
this.log.muted(` - ${fileInfo.path} (${libraryVersion.toString()})`);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
libraryVersions.push({
|
|
174
|
+
libraryVersion,
|
|
175
|
+
girXML,
|
|
176
|
+
fileInfo,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
// Compare all library versions and return the latest version
|
|
180
|
+
const latestLibraryVersion = libraryVersions.sort((a, b) => a.libraryVersion.compare(b.libraryVersion))[0];
|
|
181
|
+
|
|
182
|
+
if (!latestLibraryVersion) {
|
|
183
|
+
this.log.warn("No latest library version found", {
|
|
184
|
+
libraryVersions,
|
|
185
|
+
filesInfo,
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
libraryVersion: new LibraryVersion(),
|
|
189
|
+
girXML: null,
|
|
190
|
+
fileInfo: filesInfo[0],
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (filesInfo.length > 1) {
|
|
195
|
+
this.log.muted(
|
|
196
|
+
`Use latest version ${latestLibraryVersion.libraryVersion.toString()} from ${latestLibraryVersion.fileInfo.path}`,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return latestLibraryVersion;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Get the dependency object by packageName
|
|
205
|
+
* @param packageName The package name (with version affix) of the dependency
|
|
206
|
+
* @returns The dependency object
|
|
207
|
+
*/
|
|
208
|
+
async get(packageName: string): Promise<Dependency>;
|
|
209
|
+
/**
|
|
210
|
+
* Get the dependency object by namespace and version
|
|
211
|
+
* @param namespace The namespace of the dependency
|
|
212
|
+
* @param version The version of the dependency
|
|
213
|
+
* @returns The dependency object
|
|
214
|
+
*/
|
|
215
|
+
async get(namespace: string, version: string, noOverride?: boolean): Promise<Dependency>;
|
|
216
|
+
/**
|
|
217
|
+
* Get the dependency object by {@link GirRepository}
|
|
218
|
+
* @param namespace The namespace of the dependency
|
|
219
|
+
* @param version The version of the dependency
|
|
220
|
+
* @returns The dependency object
|
|
221
|
+
*/
|
|
222
|
+
async get(repo: GirRepository, version?: string, noOverride?: boolean): Promise<Dependency>;
|
|
223
|
+
async get(
|
|
224
|
+
namespaceOrPackageNameOrRepo: string | GirRepository,
|
|
225
|
+
_version?: string,
|
|
226
|
+
noOverride?: boolean,
|
|
227
|
+
): Promise<Dependency> {
|
|
228
|
+
const parsedArgs = this.parseArgs(namespaceOrPackageNameOrRepo, _version, noOverride);
|
|
229
|
+
const { packageName, repo } = parsedArgs;
|
|
230
|
+
let { namespace, version } = parsedArgs;
|
|
231
|
+
namespace = sanitizeNamespace(namespace);
|
|
232
|
+
|
|
233
|
+
if (this._cache[packageName]) {
|
|
234
|
+
const dep = this._cache[packageName];
|
|
235
|
+
return dep;
|
|
236
|
+
}
|
|
237
|
+
const filename = `${packageName}.gir`;
|
|
238
|
+
const filesInfo = await findFilesInDirs(this.config.girDirectories, filename);
|
|
239
|
+
|
|
240
|
+
const { libraryVersion, girXML, fileInfo } = await this.parseGirAndReturnLatestVersion(filesInfo);
|
|
241
|
+
|
|
242
|
+
const ns = (girXML?.repository[0]?.namespace?.[0] || repo?.namespace?.[0] || null) as GirNamespace | null;
|
|
243
|
+
|
|
244
|
+
// Use the version from the gir file if it exists
|
|
245
|
+
if (ns?.$.version) {
|
|
246
|
+
version = ns?.$.version;
|
|
247
|
+
}
|
|
248
|
+
if (ns?.$.name) {
|
|
249
|
+
namespace = ns?.$.name;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
const dependency: Dependency = {
|
|
253
|
+
...fileInfo,
|
|
254
|
+
namespace,
|
|
255
|
+
packageName,
|
|
256
|
+
importName: transformImportName(packageName),
|
|
257
|
+
importNamespace: transformModuleNamespaceName(packageName),
|
|
258
|
+
version,
|
|
259
|
+
libraryVersion,
|
|
260
|
+
girXML,
|
|
261
|
+
...this.createImportProperties(namespace, packageName, version),
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// Special case for Cairo
|
|
265
|
+
// This is a special case for Cairo because Cairo in GJS is provided as a built-in module that doesn't
|
|
266
|
+
// follow the standard GI repository pattern.
|
|
267
|
+
// So we need to special case it and redirect to the 'cairo' package.
|
|
268
|
+
// This changes the typescript import definition to use the internal 'cairo' package instead of the 'cairo-1.0' Gir package.
|
|
269
|
+
if (!noOverride && namespace === "cairo" && version === "1.0") {
|
|
270
|
+
dependency.importDef = this.createImportDef("cairo", "cairo");
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
this._cache[packageName] = dependency;
|
|
274
|
+
|
|
275
|
+
return dependency;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Get all dependencies with the given namespace
|
|
280
|
+
* @param namespace The namespace of the dependency
|
|
281
|
+
* @returns All dependencies with the given namespace
|
|
282
|
+
*/
|
|
283
|
+
list(namespace: string): Dependency[] {
|
|
284
|
+
const packageNames = this.all();
|
|
285
|
+
const candidates = packageNames.filter((dep) => {
|
|
286
|
+
return dep.namespace === namespace && dep.exists;
|
|
287
|
+
});
|
|
288
|
+
return candidates;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Get girModule for dependency
|
|
293
|
+
* @param girModules
|
|
294
|
+
* @param packageName
|
|
295
|
+
*/
|
|
296
|
+
getModule(girModules: GirModule[], dep: Dependency): GirModule | undefined {
|
|
297
|
+
return girModules.find(
|
|
298
|
+
(m) => m.packageName === dep.packageName && m.namespace === dep.namespace && m.version === dep.version,
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Add all dependencies from an array of gir modules
|
|
304
|
+
* @param girModules
|
|
305
|
+
*/
|
|
306
|
+
async addAll(girModules: GirModule[]): Promise<Dependency[]> {
|
|
307
|
+
for (const girModule of girModules) {
|
|
308
|
+
await this.get(girModule.namespace, girModule.version || "0.0");
|
|
309
|
+
}
|
|
310
|
+
return this.all();
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Transforms a gir include object array to a dependency object array
|
|
315
|
+
* @param girIncludes - Array of gir includes
|
|
316
|
+
* @returns Array of dependencies
|
|
317
|
+
*/
|
|
318
|
+
async fromGirIncludes(girIncludes: GirInclude[]): Promise<Dependency[]> {
|
|
319
|
+
const dependencies: Dependency[] = [];
|
|
320
|
+
for (const i of girIncludes) {
|
|
321
|
+
dependencies.unshift(await this.get(i.$.name, i.$.version || "0.0"));
|
|
322
|
+
}
|
|
323
|
+
return dependencies;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Check if multiple dependencies with the given namespace exist in the cache
|
|
328
|
+
* @param namespace The namespace of the dependency
|
|
329
|
+
* @returns
|
|
330
|
+
*/
|
|
331
|
+
hasConflict(namespace: string): boolean {
|
|
332
|
+
const packageNames = this.getAllPackageNames();
|
|
333
|
+
const candidates = packageNames.filter((packageName) => {
|
|
334
|
+
return packageName.startsWith(`${namespace}-`) && this._cache[packageName].namespace === namespace;
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
return candidates.length > 1;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* get the latest version of the dependency with the given namespace
|
|
342
|
+
* @param namespace The namespace of the dependency
|
|
343
|
+
* @returns The latest version of the dependency
|
|
344
|
+
*/
|
|
345
|
+
getLatestVersion(namespace: string): Dependency | undefined {
|
|
346
|
+
const candidates = this.list(namespace);
|
|
347
|
+
const latestVersion = candidates
|
|
348
|
+
.sort((a, b) => {
|
|
349
|
+
return a.version.localeCompare(b.version);
|
|
350
|
+
})
|
|
351
|
+
.pop();
|
|
352
|
+
return latestVersion;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Check if the given version is the latest version of the dependency
|
|
357
|
+
* @param namespace The namespace of the dependency
|
|
358
|
+
* @param version The version of the dependency
|
|
359
|
+
* @returns
|
|
360
|
+
*/
|
|
361
|
+
isLatestVersion(namespace: string, version: string): boolean {
|
|
362
|
+
const latestVersion = this.getLatestVersion(namespace);
|
|
363
|
+
return latestVersion?.version === version;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Find a dependency by it's namespace from the cache, if multiple versions are found, the latest version is returned
|
|
368
|
+
* @param namespace The namespace of the dependency
|
|
369
|
+
* @returns The dependency object or null if not found
|
|
370
|
+
*/
|
|
371
|
+
find(namespace: string): Dependency | null {
|
|
372
|
+
// Special case for Gjs
|
|
373
|
+
if (namespace === "Gjs") {
|
|
374
|
+
return this.getGjs();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const packageNames = this.getAllPackageNames();
|
|
378
|
+
const candidates = packageNames.filter((packageName) => {
|
|
379
|
+
return packageName.startsWith(`${namespace}-`) && this._cache[packageName].namespace === namespace;
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
if (candidates.length > 1) {
|
|
383
|
+
this.log.warn(`Found multiple versions of ${namespace}: ${candidates.join(", ")}`);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
const latestVersion = candidates.sort().pop();
|
|
387
|
+
|
|
388
|
+
if (latestVersion && this._cache[latestVersion]) {
|
|
389
|
+
const dep = this._cache[latestVersion];
|
|
390
|
+
return dep;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
protected getPseudoPackage(
|
|
397
|
+
packageName: string,
|
|
398
|
+
namespace: string = pascalCase(packageName),
|
|
399
|
+
version = "2.0",
|
|
400
|
+
): Dependency {
|
|
401
|
+
if (this._cache[`${packageName}_pseudo`]) {
|
|
402
|
+
return this._cache[`${packageName}_pseudo`];
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
const dep: Dependency = {
|
|
406
|
+
namespace,
|
|
407
|
+
exists: true,
|
|
408
|
+
filename: "",
|
|
409
|
+
path: "",
|
|
410
|
+
packageName: packageName,
|
|
411
|
+
importName: transformImportName(packageName),
|
|
412
|
+
importNamespace: transformModuleNamespaceName(packageName),
|
|
413
|
+
version,
|
|
414
|
+
libraryVersion: new LibraryVersion(),
|
|
415
|
+
girXML: null,
|
|
416
|
+
...this.createImportProperties(packageName, packageName, version),
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
this._cache[`${packageName}_pseudo`] = dep;
|
|
420
|
+
|
|
421
|
+
return dep;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
getGjs(): Dependency {
|
|
425
|
+
return this.getPseudoPackage("Gjs");
|
|
426
|
+
}
|
|
427
|
+
}
|