@ts-for-gir/lib 4.0.0-beta.25 → 4.0.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -26
- package/src/constants.ts +154 -0
- package/src/dependency-manager.ts +427 -0
- package/src/formatters/default.ts +7 -0
- package/src/formatters/formatter.ts +3 -0
- package/src/formatters/index.ts +3 -0
- package/src/formatters/json.ts +7 -0
- package/src/generators/generator.ts +65 -0
- package/src/generators/index.ts +2 -0
- package/src/generics/clutter.ts +71 -0
- package/src/generics/generify.ts +74 -0
- package/src/generics/gio.ts +91 -0
- package/src/generics/glib.ts +31 -0
- package/src/generics/gtk.ts +99 -0
- package/src/generics/meta.ts +41 -0
- package/src/generics/st.ts +197 -0
- package/src/generics/visitor.ts +484 -0
- package/src/gir/alias.ts +73 -0
- package/src/gir/callback.ts +79 -0
- package/src/gir/const.ts +73 -0
- package/src/gir/constructor.ts +91 -0
- package/src/gir/data.ts +12 -0
- package/src/gir/dependency-resolver.ts +81 -0
- package/src/gir/direct-allocation-constructor.ts +65 -0
- package/src/gir/enum-member.ts +51 -0
- package/src/gir/enum.ts +126 -0
- package/src/gir/error.ts +82 -0
- package/src/gir/function.ts +296 -0
- package/src/gir/generics.ts +66 -0
- package/src/gir/gir-complex-record.ts +7 -0
- package/src/gir/index.ts +25 -0
- package/src/gir/introspected-base.ts +104 -0
- package/src/gir/introspected-class-member.ts +15 -0
- package/src/gir/introspected-classes.ts +1517 -0
- package/src/gir/introspected-namespace-member.ts +24 -0
- package/src/gir/namespace.ts +76 -0
- package/src/gir/parameter.ts +199 -0
- package/src/gir/promisify.ts +209 -0
- package/src/gir/property.ts +203 -0
- package/src/gir/record.ts +477 -0
- package/src/gir/registry.ts +184 -0
- package/src/gir/signal.ts +246 -0
- package/src/gir-module.ts +703 -0
- package/src/gir.ts +892 -0
- package/src/index.ts +16 -0
- package/src/injections/gee08.ts +89 -0
- package/src/injections/gee1.ts +35 -0
- package/src/injections/gio.ts +707 -0
- package/src/injections/glib.ts +275 -0
- package/src/injections/gobject.ts +901 -0
- package/src/injections/gtk4.ts +23 -0
- package/src/injections/inject.ts +43 -0
- package/src/injections/shell.ts +45 -0
- package/src/injections/tracker1.ts +42 -0
- package/src/library-version.ts +50 -0
- package/src/logger.ts +104 -0
- package/src/messages.ts +57 -0
- package/src/templates/index.ts +1 -0
- package/src/templates/template-engine.ts +178 -0
- package/src/types/answer-version.ts +4 -0
- package/src/types/any-introspected-type.ts +3 -0
- package/src/types/class-function-types.ts +49 -0
- package/src/types/class-member.ts +5 -0
- package/src/types/class-parent.ts +14 -0
- package/src/types/class.ts +45 -0
- package/src/types/config-flags.ts +5 -0
- package/src/types/construct-name.ts +13 -0
- package/src/types/dependency-map.ts +4 -0
- package/{lib/types/dependency.d.ts → src/types/dependency.ts} +17 -15
- package/{lib/types/file-info.d.ts → src/types/file-info.ts} +3 -3
- package/src/types/format.ts +1 -0
- package/src/types/generator-constructor.ts +7 -0
- package/src/types/generics-config.ts +90 -0
- package/src/types/gir-any-element.ts +35 -0
- package/src/types/gir-module-interface.ts +22 -0
- package/src/types/gir-module-resolved.ts +32 -0
- package/src/types/gir-type-name.ts +20 -0
- package/src/types/index.ts +94 -0
- package/{lib/types/inheritance-table.d.ts → src/types/inheritance-table.ts} +1 -1
- package/src/types/introspected.ts +18 -0
- package/src/types/local-name-check.ts +5 -0
- package/src/types/local-name-type.ts +1 -0
- package/src/types/local-name.ts +8 -0
- package/src/types/local-names.ts +5 -0
- package/src/types/metadata.ts +6 -0
- package/src/types/ns-loader.ts +7 -0
- package/src/types/options-base.ts +8 -0
- package/{lib/types/options-generation.d.ts → src/types/options-generation.ts} +22 -13
- package/src/types/options-load.ts +6 -0
- package/src/types/options-transform.ts +5 -0
- package/src/types/output-format.ts +1 -0
- package/{lib/types/package-data-parsed.d.ts → src/types/package-data-parsed.ts} +13 -13
- package/{lib/types/package-data.d.ts → src/types/package-data.ts} +12 -11
- package/src/types/package-section-parsed.ts +9 -0
- package/src/types/parsed-gir.ts +5 -0
- package/src/types/parsed-package-data.ts +7 -0
- package/src/types/property-case.ts +1 -0
- package/src/types/resolve-type.ts +4 -0
- package/src/types/template-data.ts +8 -0
- package/src/types/template-options.ts +33 -0
- package/src/types/transformation-case.ts +9 -0
- package/src/types/transformations.ts +5 -0
- package/{lib/types/ts-doc-tag.d.ts → src/types/ts-doc-tag.ts} +5 -3
- package/{lib/types/ts-doc.d.ts → src/types/ts-doc.ts} +5 -3
- package/{lib/types/type-gir-alias.d.ts → src/types/type-gir-alias.ts} +1 -1
- package/{lib/types/type-gir-class.d.ts → src/types/type-gir-class.ts} +1 -1
- package/src/types/type-gir-element.ts +25 -0
- package/{lib/types/type-gir-enumeration-member.d.ts → src/types/type-gir-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-enumeration-member.d.ts → src/types/type-gir-enumeration.ts} +1 -1
- package/src/types/type-gir-function.ts +8 -0
- package/{lib/types/type-gir-interface.d.ts → src/types/type-gir-interface.ts} +1 -1
- package/{lib/types/type-gir-method.d.ts → src/types/type-gir-method.ts} +1 -1
- package/src/types/type-gir-parameter.ts +1 -0
- package/{lib/types/type-gir-property.d.ts → src/types/type-gir-property.ts} +1 -1
- package/src/types/type-gir-variable.ts +1 -0
- package/src/types/type-ts-element.ts +13 -0
- package/{lib/types/type-gir-enumeration.d.ts → src/types/type-ts-enumeration-member.ts} +1 -1
- package/{lib/types/type-ts-function.d.ts → src/types/type-ts-function.ts} +1 -1
- package/{lib/types/type-ts-property.d.ts → src/types/type-ts-property.ts} +1 -1
- package/src/types/user-config-load-result.ts +6 -0
- package/{lib/types/user-config.d.ts → src/types/user-config.ts} +25 -17
- package/src/util.ts +84 -0
- package/src/utils/conflicts/conflict-resolver.ts +122 -0
- package/src/utils/conflicts/function-conflict-detector.ts +139 -0
- package/src/utils/conflicts/index.ts +2 -0
- package/src/utils/conflicts.ts +490 -0
- package/{lib/utils/documentation.js → src/utils/documentation.ts} +25 -22
- package/src/utils/files.ts +71 -0
- package/src/utils/function-type-guards.ts +61 -0
- package/src/utils/generation.ts +69 -0
- package/src/utils/gir-parsing.ts +243 -0
- package/src/utils/girs.ts +113 -0
- package/src/utils/index.ts +14 -0
- package/src/utils/naming.ts +188 -0
- package/{lib/utils/numbers.d.ts → src/utils/numbers.ts} +3 -1
- package/{lib/utils/objects.js → src/utils/objects.ts} +15 -7
- package/src/utils/path.ts +7 -0
- package/src/utils/registry.ts +5 -0
- package/src/utils/strings.ts +134 -0
- package/src/utils/type-resolution.ts +116 -0
- package/src/utils/types.ts +247 -0
- package/src/validators/class.ts +324 -0
- package/src/validators/function-parameters.ts +52 -0
- package/src/validators/interface.ts +20 -0
- package/src/visitor.ts +58 -0
- package/lib/constants.d.ts +0 -25
- package/lib/constants.js +0 -93
- package/lib/constants.js.map +0 -1
- package/lib/dependency-manager.d.ts +0 -151
- package/lib/dependency-manager.js +0 -340
- package/lib/dependency-manager.js.map +0 -1
- package/lib/formatters/default.d.ts +0 -4
- package/lib/formatters/default.js +0 -7
- package/lib/formatters/default.js.map +0 -1
- package/lib/formatters/formatter.d.ts +0 -3
- package/lib/formatters/formatter.js +0 -3
- package/lib/formatters/formatter.js.map +0 -1
- package/lib/formatters/json.d.ts +0 -4
- package/lib/formatters/json.js +0 -7
- package/lib/formatters/json.js.map +0 -1
- package/lib/generators/dts/glib.d.ts +0 -2
- package/lib/generators/dts/glib.js +0 -514
- package/lib/generators/dts/glib.js.map +0 -1
- package/lib/generators/dts/gobject.d.ts +0 -2
- package/lib/generators/dts/gobject.js +0 -117
- package/lib/generators/dts/gobject.js.map +0 -1
- package/lib/generators/dts-inline.d.ts +0 -10
- package/lib/generators/dts-inline.js +0 -57
- package/lib/generators/dts-inline.js.map +0 -1
- package/lib/generators/dts-modules.d.ts +0 -10
- package/lib/generators/dts-modules.js +0 -98
- package/lib/generators/dts-modules.js.map +0 -1
- package/lib/generators/dts.d.ts +0 -45
- package/lib/generators/dts.js +0 -683
- package/lib/generators/dts.js.map +0 -1
- package/lib/generators/generator.d.ts +0 -45
- package/lib/generators/generator.js +0 -9
- package/lib/generators/generator.js.map +0 -1
- package/lib/generators/index.d.ts +0 -5
- package/lib/generators/index.js +0 -6
- package/lib/generators/index.js.map +0 -1
- package/lib/generators/json.d.ts +0 -257
- package/lib/generators/json.js +0 -866
- package/lib/generators/json.js.map +0 -1
- package/lib/generics/clutter.d.ts +0 -41
- package/lib/generics/clutter.js +0 -52
- package/lib/generics/clutter.js.map +0 -1
- package/lib/generics/generify.d.ts +0 -2
- package/lib/generics/generify.js +0 -47
- package/lib/generics/generify.js.map +0 -1
- package/lib/generics/gio.d.ts +0 -7
- package/lib/generics/gio.js +0 -51
- package/lib/generics/gio.js.map +0 -1
- package/lib/generics/glib.d.ts +0 -7
- package/lib/generics/glib.js +0 -18
- package/lib/generics/glib.js.map +0 -1
- package/lib/generics/gtk.d.ts +0 -7
- package/lib/generics/gtk.js +0 -56
- package/lib/generics/gtk.js.map +0 -1
- package/lib/generics/meta.d.ts +0 -36
- package/lib/generics/meta.js +0 -29
- package/lib/generics/meta.js.map +0 -1
- package/lib/generics/st.d.ts +0 -31
- package/lib/generics/st.js +0 -98
- package/lib/generics/st.js.map +0 -1
- package/lib/generics/visitor.d.ts +0 -20
- package/lib/generics/visitor.js +0 -255
- package/lib/generics/visitor.js.map +0 -1
- package/lib/gir/alias.d.ts +0 -24
- package/lib/gir/alias.js +0 -43
- package/lib/gir/alias.js.map +0 -1
- package/lib/gir/base.d.ts +0 -62
- package/lib/gir/base.js +0 -83
- package/lib/gir/base.js.map +0 -1
- package/lib/gir/class.d.ts +0 -228
- package/lib/gir/class.js +0 -1151
- package/lib/gir/class.js.map +0 -1
- package/lib/gir/const.d.ts +0 -25
- package/lib/gir/const.js +0 -43
- package/lib/gir/const.js.map +0 -1
- package/lib/gir/enum.d.ts +0 -45
- package/lib/gir/enum.js +0 -164
- package/lib/gir/enum.js.map +0 -1
- package/lib/gir/function.d.ts +0 -200
- package/lib/gir/function.js +0 -683
- package/lib/gir/function.js.map +0 -1
- package/lib/gir/generics.d.ts +0 -5
- package/lib/gir/generics.js +0 -57
- package/lib/gir/generics.js.map +0 -1
- package/lib/gir/index.d.ts +0 -14
- package/lib/gir/index.js +0 -15
- package/lib/gir/index.js.map +0 -1
- package/lib/gir/namespace.d.ts +0 -21
- package/lib/gir/namespace.js +0 -57
- package/lib/gir/namespace.js.map +0 -1
- package/lib/gir/nodes.d.ts +0 -11
- package/lib/gir/nodes.js +0 -12
- package/lib/gir/nodes.js.map +0 -1
- package/lib/gir/promisify.d.ts +0 -5
- package/lib/gir/promisify.js +0 -158
- package/lib/gir/promisify.js.map +0 -1
- package/lib/gir/property.d.ts +0 -60
- package/lib/gir/property.js +0 -128
- package/lib/gir/property.js.map +0 -1
- package/lib/gir/registry.d.ts +0 -51
- package/lib/gir/registry.js +0 -147
- package/lib/gir/registry.js.map +0 -1
- package/lib/gir/signal.d.ts +0 -36
- package/lib/gir/signal.js +0 -169
- package/lib/gir/signal.js.map +0 -1
- package/lib/gir/util.d.ts +0 -49
- package/lib/gir/util.js +0 -561
- package/lib/gir/util.js.map +0 -1
- package/lib/gir-module.d.ts +0 -104
- package/lib/gir-module.js +0 -584
- package/lib/gir-module.js.map +0 -1
- package/lib/gir.d.ts +0 -254
- package/lib/gir.js +0 -639
- package/lib/gir.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -16
- package/lib/index.js.map +0 -1
- package/lib/injections/gee08.d.ts +0 -7
- package/lib/injections/gee08.js +0 -68
- package/lib/injections/gee08.js.map +0 -1
- package/lib/injections/gee1.d.ts +0 -7
- package/lib/injections/gee1.js +0 -28
- package/lib/injections/gee1.js.map +0 -1
- package/lib/injections/gio.d.ts +0 -7
- package/lib/injections/gio.js +0 -563
- package/lib/injections/gio.js.map +0 -1
- package/lib/injections/glib.d.ts +0 -7
- package/lib/injections/glib.js +0 -210
- package/lib/injections/glib.js.map +0 -1
- package/lib/injections/gobject.d.ts +0 -7
- package/lib/injections/gobject.js +0 -594
- package/lib/injections/gobject.js.map +0 -1
- package/lib/injections/gtk4.d.ts +0 -7
- package/lib/injections/gtk4.js +0 -19
- package/lib/injections/gtk4.js.map +0 -1
- package/lib/injections/inject.d.ts +0 -4
- package/lib/injections/inject.js +0 -33
- package/lib/injections/inject.js.map +0 -1
- package/lib/injections/shell.d.ts +0 -20
- package/lib/injections/shell.js +0 -34
- package/lib/injections/shell.js.map +0 -1
- package/lib/injections/tracker1.d.ts +0 -7
- package/lib/injections/tracker1.js +0 -30
- package/lib/injections/tracker1.js.map +0 -1
- package/lib/library-version.d.ts +0 -10
- package/lib/library-version.js +0 -45
- package/lib/library-version.js.map +0 -1
- package/lib/logger.d.ts +0 -36
- package/lib/logger.js +0 -134
- package/lib/logger.js.map +0 -1
- package/lib/messages.d.ts +0 -23
- package/lib/messages.js +0 -39
- package/lib/messages.js.map +0 -1
- package/lib/registry.d.ts +0 -8
- package/lib/registry.js +0 -12
- package/lib/registry.js.map +0 -1
- package/lib/transformation.d.ts +0 -169
- package/lib/transformation.js +0 -393
- package/lib/transformation.js.map +0 -1
- package/lib/types/answer-version.d.ts +0 -4
- package/lib/types/answer-version.js +0 -2
- package/lib/types/answer-version.js.map +0 -1
- package/lib/types/class-parent.d.ts +0 -13
- package/lib/types/class-parent.js +0 -2
- package/lib/types/class-parent.js.map +0 -1
- package/lib/types/config-flags.d.ts +0 -4
- package/lib/types/config-flags.js +0 -2
- package/lib/types/config-flags.js.map +0 -1
- package/lib/types/construct-name.d.ts +0 -1
- package/lib/types/construct-name.js +0 -2
- package/lib/types/construct-name.js.map +0 -1
- package/lib/types/dependency-map.d.ts +0 -4
- package/lib/types/dependency-map.js +0 -2
- package/lib/types/dependency-map.js.map +0 -1
- package/lib/types/dependency.js +0 -2
- package/lib/types/dependency.js.map +0 -1
- package/lib/types/file-info.js +0 -2
- package/lib/types/file-info.js.map +0 -1
- package/lib/types/format.d.ts +0 -1
- package/lib/types/format.js +0 -2
- package/lib/types/format.js.map +0 -1
- package/lib/types/gir-alias-element.d.ts +0 -4
- package/lib/types/gir-alias-element.js +0 -2
- package/lib/types/gir-alias-element.js.map +0 -1
- package/lib/types/gir-annotation.d.ts +0 -9
- package/lib/types/gir-annotation.js +0 -2
- package/lib/types/gir-annotation.js.map +0 -1
- package/lib/types/gir-any-element.d.ts +0 -2
- package/lib/types/gir-any-element.js +0 -2
- package/lib/types/gir-any-element.js.map +0 -1
- package/lib/types/gir-bitfield-element.d.ts +0 -6
- package/lib/types/gir-bitfield-element.js +0 -2
- package/lib/types/gir-bitfield-element.js.map +0 -1
- package/lib/types/gir-callable-param-element.d.ts +0 -4
- package/lib/types/gir-callable-param-element.js +0 -2
- package/lib/types/gir-callable-param-element.js.map +0 -1
- package/lib/types/gir-callable-params.d.ts +0 -7
- package/lib/types/gir-callable-params.js +0 -2
- package/lib/types/gir-callable-params.js.map +0 -1
- package/lib/types/gir-callable-return.d.ts +0 -5
- package/lib/types/gir-callable-return.js +0 -2
- package/lib/types/gir-callable-return.js.map +0 -1
- package/lib/types/gir-callback-element.d.ts +0 -6
- package/lib/types/gir-callback-element.js +0 -2
- package/lib/types/gir-callback-element.js.map +0 -1
- package/lib/types/gir-class-element.d.ts +0 -17
- package/lib/types/gir-class-element.js +0 -2
- package/lib/types/gir-class-element.js.map +0 -1
- package/lib/types/gir-constant-element.d.ts +0 -4
- package/lib/types/gir-constant-element.js +0 -2
- package/lib/types/gir-constant-element.js.map +0 -1
- package/lib/types/gir-constructor-element.d.ts +0 -6
- package/lib/types/gir-constructor-element.js +0 -2
- package/lib/types/gir-constructor-element.js.map +0 -1
- package/lib/types/gir-enum-element.d.ts +0 -6
- package/lib/types/gir-enum-element.js +0 -2
- package/lib/types/gir-enum-element.js.map +0 -1
- package/lib/types/gir-field-element.d.ts +0 -5
- package/lib/types/gir-field-element.js +0 -2
- package/lib/types/gir-field-element.js.map +0 -1
- package/lib/types/gir-function-element.d.ts +0 -6
- package/lib/types/gir-function-element.js +0 -2
- package/lib/types/gir-function-element.js.map +0 -1
- package/lib/types/gir-instance-parameter.d.ts +0 -7
- package/lib/types/gir-instance-parameter.js +0 -2
- package/lib/types/gir-instance-parameter.js.map +0 -1
- package/lib/types/gir-interface-element.d.ts +0 -16
- package/lib/types/gir-interface-element.js +0 -2
- package/lib/types/gir-interface-element.js.map +0 -1
- package/lib/types/gir-member-element.d.ts +0 -5
- package/lib/types/gir-member-element.js +0 -2
- package/lib/types/gir-member-element.js.map +0 -1
- package/lib/types/gir-method-element.d.ts +0 -7
- package/lib/types/gir-method-element.js +0 -2
- package/lib/types/gir-method-element.js.map +0 -1
- package/lib/types/gir-module-resolved-by.d.ts +0 -15
- package/lib/types/gir-module-resolved-by.js +0 -2
- package/lib/types/gir-module-resolved-by.js.map +0 -1
- package/lib/types/gir-modules-grouped-map.d.ts +0 -4
- package/lib/types/gir-modules-grouped-map.js +0 -2
- package/lib/types/gir-modules-grouped-map.js.map +0 -1
- package/lib/types/gir-modules-grouped.d.ts +0 -12
- package/lib/types/gir-modules-grouped.js +0 -2
- package/lib/types/gir-modules-grouped.js.map +0 -1
- package/lib/types/gir-namespace.d.ts +0 -27
- package/lib/types/gir-namespace.js +0 -2
- package/lib/types/gir-namespace.js.map +0 -1
- package/lib/types/gir-property-element.d.ts +0 -4
- package/lib/types/gir-property-element.js +0 -2
- package/lib/types/gir-property-element.js.map +0 -1
- package/lib/types/gir-record-element.d.ts +0 -10
- package/lib/types/gir-record-element.js +0 -2
- package/lib/types/gir-record-element.js.map +0 -1
- package/lib/types/gir-repository.d.ts +0 -5
- package/lib/types/gir-repository.js +0 -2
- package/lib/types/gir-repository.js.map +0 -1
- package/lib/types/gir-signal.d.ts +0 -10
- package/lib/types/gir-signal.js +0 -2
- package/lib/types/gir-signal.js.map +0 -1
- package/lib/types/gir-type-name.d.ts +0 -2
- package/lib/types/gir-type-name.js +0 -2
- package/lib/types/gir-type-name.js.map +0 -1
- package/lib/types/gir-union-element.d.ts +0 -9
- package/lib/types/gir-union-element.js +0 -2
- package/lib/types/gir-union-element.js.map +0 -1
- package/lib/types/gir-unparsed-number.d.ts +0 -2
- package/lib/types/gir-unparsed-number.js +0 -2
- package/lib/types/gir-unparsed-number.js.map +0 -1
- package/lib/types/gir-virtual-method.d.ts +0 -6
- package/lib/types/gir-virtual-method.js +0 -2
- package/lib/types/gir-virtual-method.js.map +0 -1
- package/lib/types/index.d.ts +0 -79
- package/lib/types/index.js +0 -80
- package/lib/types/index.js.map +0 -1
- package/lib/types/inheritance-table.js +0 -2
- package/lib/types/inheritance-table.js.map +0 -1
- package/lib/types/local-name-check.d.ts +0 -4
- package/lib/types/local-name-check.js +0 -2
- package/lib/types/local-name-check.js.map +0 -1
- package/lib/types/local-name-type.d.ts +0 -1
- package/lib/types/local-name-type.js +0 -2
- package/lib/types/local-name-type.js.map +0 -1
- package/lib/types/local-name.d.ts +0 -7
- package/lib/types/local-name.js +0 -2
- package/lib/types/local-name.js.map +0 -1
- package/lib/types/local-names.d.ts +0 -4
- package/lib/types/local-names.js +0 -2
- package/lib/types/local-names.js.map +0 -1
- package/lib/types/metadata.d.ts +0 -8
- package/lib/types/metadata.js +0 -2
- package/lib/types/metadata.js.map +0 -1
- package/lib/types/options-base.d.ts +0 -4
- package/lib/types/options-base.js +0 -2
- package/lib/types/options-base.js.map +0 -1
- package/lib/types/options-generation.js +0 -2
- package/lib/types/options-generation.js.map +0 -1
- package/lib/types/options-load.d.ts +0 -5
- package/lib/types/options-load.js +0 -2
- package/lib/types/options-load.js.map +0 -1
- package/lib/types/options-transform.d.ts +0 -4
- package/lib/types/options-transform.js +0 -2
- package/lib/types/options-transform.js.map +0 -1
- package/lib/types/output-format.d.ts +0 -1
- package/lib/types/output-format.js +0 -2
- package/lib/types/output-format.js.map +0 -1
- package/lib/types/package-data-parsed.js +0 -2
- package/lib/types/package-data-parsed.js.map +0 -1
- package/lib/types/package-data.js +0 -2
- package/lib/types/package-data.js.map +0 -1
- package/lib/types/package-section-parsed.d.ts +0 -8
- package/lib/types/package-section-parsed.js +0 -2
- package/lib/types/package-section-parsed.js.map +0 -1
- package/lib/types/parsed-gir.d.ts +0 -5
- package/lib/types/parsed-gir.js +0 -2
- package/lib/types/parsed-gir.js.map +0 -1
- package/lib/types/parsed-package-data.d.ts +0 -6
- package/lib/types/parsed-package-data.js +0 -2
- package/lib/types/parsed-package-data.js.map +0 -1
- package/lib/types/part-of-class.d.ts +0 -7
- package/lib/types/part-of-class.js +0 -2
- package/lib/types/part-of-class.js.map +0 -1
- package/lib/types/part-of-module.d.ts +0 -6
- package/lib/types/part-of-module.js +0 -2
- package/lib/types/part-of-module.js.map +0 -1
- package/lib/types/property-case.d.ts +0 -1
- package/lib/types/property-case.js +0 -2
- package/lib/types/property-case.js.map +0 -1
- package/lib/types/resolve-type.d.ts +0 -4
- package/lib/types/resolve-type.js +0 -6
- package/lib/types/resolve-type.js.map +0 -1
- package/lib/types/template-data.d.ts +0 -7
- package/lib/types/template-data.js +0 -2
- package/lib/types/template-data.js.map +0 -1
- package/lib/types/transformation-case.d.ts +0 -1
- package/lib/types/transformation-case.js +0 -2
- package/lib/types/transformation-case.js.map +0 -1
- package/lib/types/transformations.d.ts +0 -4
- package/lib/types/transformations.js +0 -2
- package/lib/types/transformations.js.map +0 -1
- package/lib/types/ts-doc-tag.js +0 -2
- package/lib/types/ts-doc-tag.js.map +0 -1
- package/lib/types/ts-doc.js +0 -2
- package/lib/types/ts-doc.js.map +0 -1
- package/lib/types/type-gir-alias.js +0 -2
- package/lib/types/type-gir-alias.js.map +0 -1
- package/lib/types/type-gir-class.js +0 -2
- package/lib/types/type-gir-class.js.map +0 -1
- package/lib/types/type-gir-element.d.ts +0 -3
- package/lib/types/type-gir-element.js +0 -2
- package/lib/types/type-gir-element.js.map +0 -1
- package/lib/types/type-gir-enumeration-member.js +0 -2
- package/lib/types/type-gir-enumeration-member.js.map +0 -1
- package/lib/types/type-gir-enumeration.js +0 -2
- package/lib/types/type-gir-enumeration.js.map +0 -1
- package/lib/types/type-gir-function.d.ts +0 -1
- package/lib/types/type-gir-function.js +0 -2
- package/lib/types/type-gir-function.js.map +0 -1
- package/lib/types/type-gir-interface.js +0 -2
- package/lib/types/type-gir-interface.js.map +0 -1
- package/lib/types/type-gir-method.js +0 -2
- package/lib/types/type-gir-method.js.map +0 -1
- package/lib/types/type-gir-parameter.d.ts +0 -1
- package/lib/types/type-gir-parameter.js +0 -2
- package/lib/types/type-gir-parameter.js.map +0 -1
- package/lib/types/type-gir-property.js +0 -2
- package/lib/types/type-gir-property.js.map +0 -1
- package/lib/types/type-gir-variable.d.ts +0 -1
- package/lib/types/type-gir-variable.js +0 -2
- package/lib/types/type-gir-variable.js.map +0 -1
- package/lib/types/type-ts-element.d.ts +0 -3
- package/lib/types/type-ts-element.js +0 -2
- package/lib/types/type-ts-element.js.map +0 -1
- package/lib/types/type-ts-enumeration-member.js +0 -2
- package/lib/types/type-ts-enumeration-member.js.map +0 -1
- package/lib/types/type-ts-function.js +0 -2
- package/lib/types/type-ts-function.js.map +0 -1
- package/lib/types/type-ts-property.js +0 -2
- package/lib/types/type-ts-property.js.map +0 -1
- package/lib/types/user-config-load-result.d.ts +0 -6
- package/lib/types/user-config-load-result.js +0 -2
- package/lib/types/user-config-load-result.js.map +0 -1
- package/lib/types/user-config.js +0 -2
- package/lib/types/user-config.js.map +0 -1
- package/lib/util.d.ts +0 -20
- package/lib/util.js +0 -67
- package/lib/util.js.map +0 -1
- package/lib/utils/documentation.d.ts +0 -13
- package/lib/utils/documentation.js.map +0 -1
- package/lib/utils/files.d.ts +0 -21
- package/lib/utils/files.js +0 -62
- package/lib/utils/files.js.map +0 -1
- package/lib/utils/girs.d.ts +0 -45
- package/lib/utils/girs.js +0 -101
- package/lib/utils/girs.js.map +0 -1
- package/lib/utils/index.d.ts +0 -8
- package/lib/utils/index.js +0 -9
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/naming.d.ts +0 -13
- package/lib/utils/naming.js +0 -40
- package/lib/utils/naming.js.map +0 -1
- package/lib/utils/numbers.js +0 -9
- package/lib/utils/numbers.js.map +0 -1
- package/lib/utils/objects.d.ts +0 -136
- package/lib/utils/objects.js.map +0 -1
- package/lib/utils/path.d.ts +0 -1
- package/lib/utils/path.js +0 -7
- package/lib/utils/path.js.map +0 -1
- package/lib/utils/strings.d.ts +0 -74
- package/lib/utils/strings.js +0 -121
- package/lib/utils/strings.js.map +0 -1
- package/lib/validators/class.d.ts +0 -7
- package/lib/validators/class.js +0 -217
- package/lib/validators/class.js.map +0 -1
- package/lib/validators/function-parameters.d.ts +0 -14
- package/lib/validators/function-parameters.js +0 -31
- package/lib/validators/function-parameters.js.map +0 -1
- package/lib/validators/interface.d.ts +0 -5
- package/lib/validators/interface.js +0 -16
- package/lib/validators/interface.js.map +0 -1
- package/lib/visitor.d.ts +0 -35
- package/lib/visitor.js +0 -29
- package/lib/visitor.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import { JSField } from "../gir/property.ts";
|
|
3
|
+
import { FunctionType, GenericType, GenerifiedType, NativeType } from "../gir.ts";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
namespace: "Gtk",
|
|
7
|
+
version: "4.0",
|
|
8
|
+
modifier(namespace: IntrospectedNamespace) {
|
|
9
|
+
{
|
|
10
|
+
const Widget = namespace.assertClass("Widget");
|
|
11
|
+
|
|
12
|
+
Widget.fields.push(
|
|
13
|
+
new JSField({
|
|
14
|
+
name: "Symbol.iterator",
|
|
15
|
+
parent: Widget,
|
|
16
|
+
computed: true,
|
|
17
|
+
doc: "Gtk.Widget is an iterable of its children.",
|
|
18
|
+
type: new FunctionType({}, new GenerifiedType(new NativeType("IterableIterator"), new GenericType("Widget"))),
|
|
19
|
+
}),
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import type { NSRegistry } from "../gir/registry.ts";
|
|
3
|
+
import gee1 from "./gee1.ts";
|
|
4
|
+
import gee08 from "./gee08.ts";
|
|
5
|
+
import gio from "./gio.ts";
|
|
6
|
+
import glib from "./glib.ts";
|
|
7
|
+
import gobject from "./gobject.ts";
|
|
8
|
+
import gtk4 from "./gtk4.ts";
|
|
9
|
+
import { shell14, shell15 } from "./shell.ts";
|
|
10
|
+
import tracker1 from "./tracker1.ts";
|
|
11
|
+
|
|
12
|
+
export type NamespaceInjection = (namespace: IntrospectedNamespace, registry: NSRegistry) => void;
|
|
13
|
+
|
|
14
|
+
function injectDefinitions(registry: NSRegistry, required = true) {
|
|
15
|
+
return (definition: { namespace: string; version: string; modifier: NamespaceInjection }) => {
|
|
16
|
+
const ns = registry.namespace(definition.namespace, definition.version);
|
|
17
|
+
|
|
18
|
+
if (required && !ns) {
|
|
19
|
+
throw new Error(`Namespace '${definition.namespace}' not found.`);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (ns) {
|
|
23
|
+
definition.modifier(ns, registry);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function inject(registry: NSRegistry) {
|
|
29
|
+
const $ = injectDefinitions(registry);
|
|
30
|
+
|
|
31
|
+
$(glib);
|
|
32
|
+
$(gobject);
|
|
33
|
+
$(gio);
|
|
34
|
+
|
|
35
|
+
const $_ = injectDefinitions(registry, false);
|
|
36
|
+
|
|
37
|
+
$_(tracker1);
|
|
38
|
+
$_(gee08);
|
|
39
|
+
$_(gee1);
|
|
40
|
+
$_(gtk4);
|
|
41
|
+
$_(shell14);
|
|
42
|
+
$_(shell15);
|
|
43
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import type { NSRegistry } from "../gir/registry.ts";
|
|
3
|
+
import { NullableType, OrType, TypeIdentifier } from "../gir.ts";
|
|
4
|
+
|
|
5
|
+
const shellTemplate = (version: string) => ({
|
|
6
|
+
namespace: "Shell",
|
|
7
|
+
version,
|
|
8
|
+
modifier(namespace: IntrospectedNamespace, _registry: NSRegistry) {
|
|
9
|
+
// Get the GLSLEffect class which contains the add_glsl_snippet method
|
|
10
|
+
const GLSLEffect = namespace.assertClass("GLSLEffect");
|
|
11
|
+
|
|
12
|
+
// Find the add_glsl_snippet method
|
|
13
|
+
const addGlslSnippet = GLSLEffect.members.find((m) => m.name === "add_glsl_snippet");
|
|
14
|
+
|
|
15
|
+
// Change
|
|
16
|
+
// ```ts
|
|
17
|
+
// add_glsl_snippet(hook: SnippetHook | null, declarations: string, code: string, is_replace: boolean): void;
|
|
18
|
+
// ```
|
|
19
|
+
// to
|
|
20
|
+
// ```ts
|
|
21
|
+
// add_glsl_snippet(hook: SnippetHook | Cogl.SnippetHook | null, declarations: string, code: string, is_replace: boolean): void;
|
|
22
|
+
// ```
|
|
23
|
+
|
|
24
|
+
if (addGlslSnippet) {
|
|
25
|
+
// Create a new parameter with updated type using copy()
|
|
26
|
+
const updatedParameter = addGlslSnippet.parameters[0].copy({
|
|
27
|
+
type: new NullableType(
|
|
28
|
+
new OrType(new TypeIdentifier("SnippetHook", "Shell"), new TypeIdentifier("SnippetHook", "Cogl")),
|
|
29
|
+
),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Replace the original parameter
|
|
33
|
+
addGlslSnippet.parameters[0] = updatedParameter;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
/** Shell 14 was introduced with GNOME 45 */
|
|
39
|
+
export const shell14 = shellTemplate("14");
|
|
40
|
+
|
|
41
|
+
/** Shell 15 was introduced with GNOME 47 */
|
|
42
|
+
export const shell15 = shellTemplate("15");
|
|
43
|
+
|
|
44
|
+
/** Shell 16 was introduced with GNOME 48 */
|
|
45
|
+
export const shell16 = shellTemplate("16");
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "../gir/namespace.ts";
|
|
2
|
+
import { IntrospectedRecord } from "../gir/record.ts";
|
|
3
|
+
import { ClassStructTypeIdentifier } from "../gir.ts";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
namespace: "Tracker",
|
|
7
|
+
version: "1.0",
|
|
8
|
+
modifier(namespace: IntrospectedNamespace) {
|
|
9
|
+
const SparqlError = namespace.getEnum("Error");
|
|
10
|
+
|
|
11
|
+
if (!SparqlError) throw new Error("Error enum not found in Tracker.");
|
|
12
|
+
|
|
13
|
+
namespace.members.delete("Error");
|
|
14
|
+
|
|
15
|
+
SparqlError.name = "SparqlError";
|
|
16
|
+
|
|
17
|
+
namespace.members.set("SparqlError", SparqlError);
|
|
18
|
+
|
|
19
|
+
// Hack around broken references in Tracker
|
|
20
|
+
|
|
21
|
+
const CursorClass = namespace.members.get("SparqlCursorClass");
|
|
22
|
+
|
|
23
|
+
if (CursorClass instanceof IntrospectedRecord) {
|
|
24
|
+
// @ts-expect-error This is a private property by Tracker is cursed
|
|
25
|
+
CursorClass._structFor = new ClassStructTypeIdentifier("SparqlCursor", "Tracker");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const ConnectionClass = namespace.members.get("SparqlConnectionClass");
|
|
29
|
+
|
|
30
|
+
if (ConnectionClass instanceof IntrospectedRecord) {
|
|
31
|
+
// @ts-expect-error This is a private property by Tracker is cursed
|
|
32
|
+
ConnectionClass._structFor = new ClassStructTypeIdentifier("SparqlConnection", "Tracker");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const BuilderClass = namespace.members.get("SparqlBuilderClass");
|
|
36
|
+
|
|
37
|
+
if (BuilderClass instanceof IntrospectedRecord) {
|
|
38
|
+
// @ts-expect-error This is a private property by Tracker is cursed
|
|
39
|
+
BuilderClass._structFor = new ClassStructTypeIdentifier("SparqlBuilder", "Tracker");
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { GirConstantElement } from "./types/index.ts";
|
|
2
|
+
|
|
3
|
+
export class LibraryVersion {
|
|
4
|
+
major: number | undefined;
|
|
5
|
+
minor: number | undefined;
|
|
6
|
+
patch: number | undefined;
|
|
7
|
+
|
|
8
|
+
constructor(constants: GirConstantElement[] = [], version = "0.0.0") {
|
|
9
|
+
const [_major, _minor, _micro] = version.split(".").filter((v) => v !== "");
|
|
10
|
+
if (_major) {
|
|
11
|
+
this.major = Number(_major) || undefined;
|
|
12
|
+
}
|
|
13
|
+
if (_minor) {
|
|
14
|
+
this.minor = Number(_minor) || undefined;
|
|
15
|
+
}
|
|
16
|
+
if (_micro) {
|
|
17
|
+
this.patch = Number(_micro) || undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
for (const constant of constants) {
|
|
21
|
+
if (constant.$.name === "MAJOR_VERSION" || (constant.$.name === "VERSION_MAJOR" && constant.$.value)) {
|
|
22
|
+
this.major = Number(constant.$.value) || undefined;
|
|
23
|
+
}
|
|
24
|
+
if (constant.$.name === "MINOR_VERSION" || (constant.$.name === "VERSION_MINOR" && constant.$.value)) {
|
|
25
|
+
this.minor = Number(constant.$.value) || undefined;
|
|
26
|
+
}
|
|
27
|
+
if (constant.$.name === "MICRO_VERSION" || (constant.$.name === "VERSION_MICRO" && constant.$.value)) {
|
|
28
|
+
this.patch = Number(constant.$.value) || undefined;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
toString() {
|
|
34
|
+
return `${this.major || "0"}.${this.minor || "0"}.${this.patch || "0"}`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Compare two library versions and return -1 if this version is greater than the other, 1 if this version is less than the other, and 0 if they are equal. */
|
|
38
|
+
compare(other: LibraryVersion) {
|
|
39
|
+
if (this.major !== other.major) {
|
|
40
|
+
return (this.major || 0) > (other.major || 0) ? -1 : 1;
|
|
41
|
+
}
|
|
42
|
+
if (this.minor !== other.minor) {
|
|
43
|
+
return (this.minor || 0) > (other.minor || 0) ? -1 : 1;
|
|
44
|
+
}
|
|
45
|
+
if (this.patch !== other.patch) {
|
|
46
|
+
return (this.patch || 0) > (other.patch || 0) ? -1 : 1;
|
|
47
|
+
}
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/logger.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A logger that displays information in different colors on the console.
|
|
3
|
+
* In addition, the environment or the module currently being processed is also included as prepended to the logging string
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { blue, gray, green, red, yellow, yellowBright } from "colorette";
|
|
7
|
+
|
|
8
|
+
export class Logger {
|
|
9
|
+
private readonly verbose: boolean;
|
|
10
|
+
private readonly moduleName: string;
|
|
11
|
+
constructor(verbose: boolean, moduleName: string) {
|
|
12
|
+
this.verbose = verbose;
|
|
13
|
+
this.moduleName = moduleName;
|
|
14
|
+
}
|
|
15
|
+
private static prepend(txt: string, prepend: string): string {
|
|
16
|
+
if (typeof txt === "string") {
|
|
17
|
+
txt = `${prepend}${txt}`;
|
|
18
|
+
}
|
|
19
|
+
return txt;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns something like '[node][Gda-5.0] Could not find type 'Gda.SqlExpr' for 'expr''
|
|
23
|
+
* @param txt
|
|
24
|
+
* @param logLevel
|
|
25
|
+
*/
|
|
26
|
+
private prependInfo(txt: string, logLevel?: "WARN:" | "ERROR:" | "INFO:" | "DEBUG:"): string {
|
|
27
|
+
if (logLevel || this.moduleName.length > 0) {
|
|
28
|
+
txt = Logger.prepend(txt, " ");
|
|
29
|
+
}
|
|
30
|
+
if (logLevel) {
|
|
31
|
+
if (this.moduleName.length > 0) {
|
|
32
|
+
txt = Logger.prepend(txt, ` ${logLevel}`);
|
|
33
|
+
} else {
|
|
34
|
+
txt = Logger.prepend(txt, logLevel);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (this.moduleName.length > 0) {
|
|
38
|
+
txt = Logger.prepend(txt, `[${this.moduleName}]`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return txt;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public log(...args: unknown[]): void {
|
|
45
|
+
if (!this.verbose) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
console.log(...args);
|
|
49
|
+
}
|
|
50
|
+
public dir(...args: unknown[]): void {
|
|
51
|
+
if (!this.verbose) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
args.forEach((arg) => {
|
|
55
|
+
console.dir(arg);
|
|
56
|
+
});
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
public info(txt: string, ...args: unknown[]): void {
|
|
60
|
+
if (!this.verbose) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
console.info(blue(txt), ...args);
|
|
64
|
+
}
|
|
65
|
+
public warn(txt: string, ...args: unknown[]): void {
|
|
66
|
+
if (!this.verbose) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
txt = this.prependInfo(txt, "WARN:");
|
|
70
|
+
console.warn(yellow(txt), ...args);
|
|
71
|
+
}
|
|
72
|
+
public debug(txt: string, ...args: unknown[]): void {
|
|
73
|
+
if (!this.verbose) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
txt = this.prependInfo(txt, "DEBUG:");
|
|
77
|
+
console.debug(yellowBright(txt), ...args);
|
|
78
|
+
}
|
|
79
|
+
public error(txt: string, ...args: unknown[]): void {
|
|
80
|
+
txt = this.prependInfo(txt, "ERROR:");
|
|
81
|
+
this.danger(txt, ...args);
|
|
82
|
+
}
|
|
83
|
+
public success(txt: string, ...args: unknown[]): void {
|
|
84
|
+
if (!this.verbose) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.log(green(txt), ...args);
|
|
88
|
+
}
|
|
89
|
+
public danger(txt: string, ...args: unknown[]): void {
|
|
90
|
+
console.error(red(txt), ...args);
|
|
91
|
+
}
|
|
92
|
+
public muted(txt: string, ...args: unknown[]): void {
|
|
93
|
+
this.log(gray(txt), ...args);
|
|
94
|
+
}
|
|
95
|
+
public white(txt: string, ...args: unknown[]): void {
|
|
96
|
+
this.log(txt, ...args);
|
|
97
|
+
}
|
|
98
|
+
public yellow(txt: string, ...args: unknown[]): void {
|
|
99
|
+
this.log(yellow(txt), ...args);
|
|
100
|
+
}
|
|
101
|
+
public gray(txt: string, ...args: unknown[]): void {
|
|
102
|
+
this.log(gray(txt), ...args);
|
|
103
|
+
}
|
|
104
|
+
}
|
package/src/messages.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export const NO_TSDATA = (namespace?: string) => {
|
|
2
|
+
let message = "You need to set the tsData first!";
|
|
3
|
+
if (namespace) message = `[${namespace}] ${message}`;
|
|
4
|
+
return message;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// Error messages
|
|
8
|
+
|
|
9
|
+
export const ERROR_NO_MODULES_FOUND = (girDirectories: string[]) => `No module found in ${girDirectories.join(", ")}!
|
|
10
|
+
Please make sure that you have installed the necessary gir files.
|
|
11
|
+
For example with "sudo apt install libgtk-4-dev" for Gtk4 on Ubuntu or "sudo dnf install gtk4-devel" on Fedora.`;
|
|
12
|
+
export const ERROR_CONFIG_EXTENSION_UNSUPPORTED =
|
|
13
|
+
"Only configs with the extension .js and .json are currently supported. Do nothing";
|
|
14
|
+
export const ERROR_NO_MODULE_SPECIFIED = "Need to specify modules!";
|
|
15
|
+
|
|
16
|
+
// Warn messages
|
|
17
|
+
|
|
18
|
+
export const WARN_NO_GIR_FILE_FOUND_FOR_PACKAGE = (packageName: string) =>
|
|
19
|
+
`No gir file found for '${packageName}', this module will be ignored`;
|
|
20
|
+
export const WARN_CONSTANT_ALREADY_EXPORTED = (name: string) => `The constant '${name}' has already been exported`;
|
|
21
|
+
|
|
22
|
+
export const WARN_DUPLICATE_ENUM_IDENTIFIER = (name: string, renamed: string) =>
|
|
23
|
+
`Enum has a duplicate identifier '${name}', renamed to '${renamed}'!`;
|
|
24
|
+
export const WARN_DUPLICATE_SYMBOL = (symbol: string) => `Duplicate symbol: ${symbol}`;
|
|
25
|
+
export const WARN_DUPLICATE_PARAMETER = (paramName: string, namespace?: string) => {
|
|
26
|
+
let message = `Duplicate parameter name "${paramName}" found!`;
|
|
27
|
+
if (namespace) message = `[${namespace}] ${message}`;
|
|
28
|
+
return message;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const WARN_NOT_FOUND_TYPE = (logName: string) => `Could not find type for "${logName}"`;
|
|
32
|
+
export const WARN_NOT_FOUND_PACKAGE_NAME = (namespace: string, implementation: string) =>
|
|
33
|
+
`Package name for namespace ${namespace} not found! (${implementation})`;
|
|
34
|
+
|
|
35
|
+
export const WARN_RENAMED_PROPERTY = (originalName: string, newName: string) =>
|
|
36
|
+
`Property name renamed from '${originalName}' to '${newName}'`;
|
|
37
|
+
export const WARN_RENAMED_FUNCTION = (originalName: string, newName: string) =>
|
|
38
|
+
`Function name renamed from '${originalName}' to '${newName}'`;
|
|
39
|
+
export const WARN_RENAMED_CLASS = (originalName: string, newName: string) =>
|
|
40
|
+
`Class name renamed from '${originalName}' to '${newName}'`;
|
|
41
|
+
export const WARN_RENAMED_CONSTANT = (originalName: string, newName: string) =>
|
|
42
|
+
`Constant name renamed from '${originalName}' to '${newName}'`;
|
|
43
|
+
export const WARN_RENAMED_FIELD = (originalName: string, newName: string) =>
|
|
44
|
+
`Field name renamed from '${originalName}' to '${newName}'`;
|
|
45
|
+
export const WARN_RENAMED_ENUM = (originalName: string, newName: string) =>
|
|
46
|
+
`Enum name renamed from '${originalName}' to '${newName}'`;
|
|
47
|
+
export const WARN_RENAMED_PARAMETER = (originalName: string, newName: string) =>
|
|
48
|
+
`Parameter name renamed from '${originalName}' to '${newName}'`;
|
|
49
|
+
|
|
50
|
+
// Info messages
|
|
51
|
+
|
|
52
|
+
export const DANGER_HTML_DOC_GENERATOR_NOT_IMPLEMENTED =
|
|
53
|
+
"The HtmlDocGenerator is currently not implemented. Do nothing...";
|
|
54
|
+
export const START_MODULE = "Start to generate .d.ts files...";
|
|
55
|
+
export const FILE_PARSING_DONE = "Files parsed, loading types...";
|
|
56
|
+
export const TSDATA_PARSING_DONE = "Typescript data loaded, generating .d.ts...";
|
|
57
|
+
export const GENERATING_TYPES_DONE = "Done.";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./template-engine.ts";
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { dirname, extname, join, resolve } from "node:path";
|
|
4
|
+
import ejs from "ejs";
|
|
5
|
+
|
|
6
|
+
import { fileExists, Logger } from "../index.ts";
|
|
7
|
+
import type { TemplateData } from "../types/index.ts";
|
|
8
|
+
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Core template engine for rendering EJS templates
|
|
13
|
+
* This is a generic utility that can be used by different generators
|
|
14
|
+
*/
|
|
15
|
+
export class TemplateEngine {
|
|
16
|
+
protected log: Logger;
|
|
17
|
+
protected readonly templateDir: string;
|
|
18
|
+
|
|
19
|
+
constructor(templateDir?: string) {
|
|
20
|
+
this.templateDir = templateDir ?? this.resolveTemplateDirectory();
|
|
21
|
+
this.log = new Logger(false, "TemplateEngine");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Resolves the templates directory from the @ts-for-gir/templates package
|
|
26
|
+
* Try require.resolve first, fallback to workspace path for development
|
|
27
|
+
*/
|
|
28
|
+
private resolveTemplateDirectory(): string {
|
|
29
|
+
try {
|
|
30
|
+
return join(dirname(require.resolve("@ts-for-gir/templates/package.json")), "templates");
|
|
31
|
+
} catch (_error) {
|
|
32
|
+
// Fallback for workspace development setup
|
|
33
|
+
return resolve(process.cwd(), "../../templates/templates");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Gets the append template name for a given template filename
|
|
39
|
+
*/
|
|
40
|
+
protected getAppendTemplateName(templateFilename: string): string {
|
|
41
|
+
let appendTemplateFilename = templateFilename;
|
|
42
|
+
|
|
43
|
+
if (appendTemplateFilename.endsWith(".d.ts")) {
|
|
44
|
+
appendTemplateFilename = appendTemplateFilename.replace(".d.ts", ".append.d.ts");
|
|
45
|
+
} else if (extname(appendTemplateFilename)) {
|
|
46
|
+
const ext = extname(appendTemplateFilename);
|
|
47
|
+
appendTemplateFilename = appendTemplateFilename.replace(ext, `.append${ext}`);
|
|
48
|
+
} else {
|
|
49
|
+
appendTemplateFilename += ".append";
|
|
50
|
+
}
|
|
51
|
+
return appendTemplateFilename;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Checks if the template file or directory exists and returns the path if found
|
|
56
|
+
*/
|
|
57
|
+
public async exists(templateFilename: string): Promise<string | null> {
|
|
58
|
+
const fullTemplatePath = join(this.templateDir, templateFilename);
|
|
59
|
+
if (await fileExists(fullTemplatePath)) {
|
|
60
|
+
return fullTemplatePath;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Removes TypeScript directive comments from the first line of a template
|
|
67
|
+
*/
|
|
68
|
+
protected removeTypeScriptDirectives(content: string): string {
|
|
69
|
+
const lines = content.split("\n");
|
|
70
|
+
if (lines.length > 0 && (lines[0].includes("// @ts-nocheck") || lines[0].includes("// @ts-ignore"))) {
|
|
71
|
+
lines.shift(); // Remove the first line
|
|
72
|
+
return lines.join("\n");
|
|
73
|
+
}
|
|
74
|
+
return content;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Reads a template file from filesystem and gets the raw string back
|
|
79
|
+
*/
|
|
80
|
+
protected async read(templateFilename: string): Promise<string> {
|
|
81
|
+
const path = await this.exists(templateFilename);
|
|
82
|
+
if (path) {
|
|
83
|
+
const content = await readFile(path, "utf8");
|
|
84
|
+
return this.removeTypeScriptDirectives(content);
|
|
85
|
+
}
|
|
86
|
+
throw new Error(`Template '${path || templateFilename}' not found'`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Reads all template files from a directory and gets the raw strings back
|
|
91
|
+
*/
|
|
92
|
+
protected async readAll(templateDirname: string, fileExtension: string): Promise<{ [path: string]: string }> {
|
|
93
|
+
const path = await this.exists(templateDirname);
|
|
94
|
+
if (path) {
|
|
95
|
+
const files = (await readdir(path)).filter((file) => file.endsWith(fileExtension));
|
|
96
|
+
if (files.length === 0) {
|
|
97
|
+
throw new Error(`Template directory '${templateDirname}' is empty'`);
|
|
98
|
+
}
|
|
99
|
+
const results: { [path: string]: string } = {};
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
const content = await readFile(join(path, file), "utf8");
|
|
102
|
+
results[file] = this.removeTypeScriptDirectives(content);
|
|
103
|
+
}
|
|
104
|
+
return results;
|
|
105
|
+
}
|
|
106
|
+
throw new Error(`Template directory '${templateDirname}' not found'`);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Renders a template string with the given data and options
|
|
111
|
+
*/
|
|
112
|
+
protected async render(
|
|
113
|
+
templateString: string,
|
|
114
|
+
data: TemplateData,
|
|
115
|
+
options: Partial<ejs.Options> = {},
|
|
116
|
+
): Promise<string> {
|
|
117
|
+
try {
|
|
118
|
+
const renderedTpl = await ejs.render(templateString, data, {
|
|
119
|
+
async: true,
|
|
120
|
+
...options,
|
|
121
|
+
});
|
|
122
|
+
return renderedTpl;
|
|
123
|
+
} catch (error) {
|
|
124
|
+
this.log.error(`Error on render "${templateString}":`, error);
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Loads and renders a template and gets the rendered templates back
|
|
131
|
+
*/
|
|
132
|
+
public async load(
|
|
133
|
+
templateFilename: string,
|
|
134
|
+
data: TemplateData,
|
|
135
|
+
ejsOptions: Partial<ejs.Options> = {},
|
|
136
|
+
): Promise<{ prepend: string; append: string }> {
|
|
137
|
+
const fileContent = await this.read(templateFilename);
|
|
138
|
+
const prepend = await this.render(fileContent, data, ejsOptions);
|
|
139
|
+
let append = "";
|
|
140
|
+
|
|
141
|
+
const appendTemplateFilename = this.getAppendTemplateName(templateFilename);
|
|
142
|
+
if (await this.exists(appendTemplateFilename)) {
|
|
143
|
+
const appendFileContent = await this.read(appendTemplateFilename);
|
|
144
|
+
append = await this.render(appendFileContent, data, ejsOptions);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return { prepend, append };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Loads and renders all templates in a directory and gets the rendered templates back
|
|
152
|
+
*/
|
|
153
|
+
public async loadAll(
|
|
154
|
+
templateDirname: string,
|
|
155
|
+
fileExtension: string,
|
|
156
|
+
data: TemplateData,
|
|
157
|
+
ejsOptions: Partial<ejs.Options> = {},
|
|
158
|
+
): Promise<{ [path: string]: string }> {
|
|
159
|
+
const fileContents = await this.readAll(templateDirname, fileExtension);
|
|
160
|
+
for (const file of Object.keys(fileContents)) {
|
|
161
|
+
fileContents[file] = await this.render(fileContents[file], data, ejsOptions);
|
|
162
|
+
}
|
|
163
|
+
return fileContents;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Writes content to the filesystem
|
|
168
|
+
*/
|
|
169
|
+
public async writeFile(content: string, outputPath: string): Promise<string> {
|
|
170
|
+
this.log.info("Writing to", outputPath);
|
|
171
|
+
|
|
172
|
+
// write template result file
|
|
173
|
+
await mkdir(dirname(outputPath), { recursive: true });
|
|
174
|
+
await writeFile(outputPath, content, { encoding: "utf8", flag: "w" });
|
|
175
|
+
|
|
176
|
+
return Promise.resolve(outputPath);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { TypeExpression, Generic } from "../gir.ts";
|
|
2
|
+
import type { IntrospectedFunctionParameter } from "../gir/parameter.ts";
|
|
3
|
+
import type { GirVisitor } from "../visitor.ts";
|
|
4
|
+
|
|
5
|
+
export interface ClassFunctionCopyOptions<Parent> {
|
|
6
|
+
parent?: Parent;
|
|
7
|
+
name?: string;
|
|
8
|
+
interfaceParent?: any; // Using any to avoid circular deps
|
|
9
|
+
parameters?: IntrospectedFunctionParameter[];
|
|
10
|
+
outputParameters?: IntrospectedFunctionParameter[];
|
|
11
|
+
returnType?: TypeExpression;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ClassFunctionOptions<Parent> {
|
|
15
|
+
name: string;
|
|
16
|
+
parameters?: IntrospectedFunctionParameter[];
|
|
17
|
+
output_parameters?: IntrospectedFunctionParameter[];
|
|
18
|
+
return_type?: TypeExpression;
|
|
19
|
+
parent: Parent;
|
|
20
|
+
originalParent?: Parent | null;
|
|
21
|
+
doc?: string | null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Type discriminators for function types
|
|
25
|
+
export const FunctionTypeKind = {
|
|
26
|
+
CLASS_FUNCTION: 'CLASS_FUNCTION',
|
|
27
|
+
VIRTUAL_CLASS_FUNCTION: 'VIRTUAL_CLASS_FUNCTION',
|
|
28
|
+
STATIC_CLASS_FUNCTION: 'STATIC_CLASS_FUNCTION',
|
|
29
|
+
CONSTRUCTOR: 'CONSTRUCTOR'
|
|
30
|
+
} as const;
|
|
31
|
+
|
|
32
|
+
export type FunctionTypeKind = typeof FunctionTypeKind[keyof typeof FunctionTypeKind];
|
|
33
|
+
|
|
34
|
+
// Base interface for all class functions to enable type checking
|
|
35
|
+
export interface ClassFunctionLike {
|
|
36
|
+
readonly __functionTypeKind: FunctionTypeKind;
|
|
37
|
+
readonly parameters: IntrospectedFunctionParameter[];
|
|
38
|
+
readonly output_parameters: IntrospectedFunctionParameter[];
|
|
39
|
+
readonly generics: Generic[];
|
|
40
|
+
returnTypeDoc?: string | null;
|
|
41
|
+
interfaceParent?: any;
|
|
42
|
+
|
|
43
|
+
anyify(): any;
|
|
44
|
+
shouldAnyify(): boolean;
|
|
45
|
+
return(): TypeExpression;
|
|
46
|
+
getCallbackParameters(): any;
|
|
47
|
+
copy(options?: any): any;
|
|
48
|
+
accept(visitor: GirVisitor): any;
|
|
49
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IntrospectedClassMember } from "../gir/introspected-class-member.ts";
|
|
2
|
+
import type { IntrospectedClassFunction } from "../gir/introspected-classes.ts";
|
|
3
|
+
import type { IntrospectedProperty } from "../gir/property.ts";
|
|
4
|
+
|
|
5
|
+
export type ClassMember = IntrospectedClassMember | IntrospectedClassFunction | IntrospectedProperty;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GirClassElement, GirUnionElement, GirInterfaceElement, GirRecordElement, TypeGirClass } from './index.ts'
|
|
2
|
+
|
|
3
|
+
export interface ClassParent {
|
|
4
|
+
parentName: string
|
|
5
|
+
qualifiedParentName: string
|
|
6
|
+
/** qualified if its module != qualifiedName's module */
|
|
7
|
+
localParentName: string
|
|
8
|
+
type: 'parent' | 'prerequisite' | 'implements'
|
|
9
|
+
/** Parent class / interface */
|
|
10
|
+
cls?: GirClassElement | GirUnionElement | GirInterfaceElement | GirRecordElement
|
|
11
|
+
girTypeName: TypeGirClass
|
|
12
|
+
/** True if the parent dependency exists */
|
|
13
|
+
dependencyExists: boolean
|
|
14
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
TypeIdentifier,
|
|
3
|
+
} from "../gir.ts";
|
|
4
|
+
import type {
|
|
5
|
+
IntrospectedClassFunction,
|
|
6
|
+
} from "../gir/introspected-classes.ts";
|
|
7
|
+
import type { IntrospectedConstructor } from "../gir/constructor.ts";
|
|
8
|
+
import type { IntrospectedClassCallback } from "../gir/introspected-classes.ts";
|
|
9
|
+
import type { IntrospectedProperty, IntrospectedField } from "../gir/property.ts";
|
|
10
|
+
import type { IntrospectedBaseClass } from "../gir/introspected-classes.ts";
|
|
11
|
+
import type { IntrospectedInterface } from "../gir/introspected-classes.ts";
|
|
12
|
+
import type { IntrospectedClass } from "../gir/introspected-classes.ts";
|
|
13
|
+
import type { IntrospectedRecord } from "../gir/record.ts";
|
|
14
|
+
|
|
15
|
+
export interface ClassDefinition {
|
|
16
|
+
superType: TypeIdentifier;
|
|
17
|
+
interfaces: TypeIdentifier[];
|
|
18
|
+
mainConstructor: IntrospectedConstructor;
|
|
19
|
+
constructors: IntrospectedConstructor[];
|
|
20
|
+
members: IntrospectedClassFunction[];
|
|
21
|
+
props: IntrospectedProperty[];
|
|
22
|
+
fields: IntrospectedField[];
|
|
23
|
+
callbacks: IntrospectedClassCallback[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface ResolutionNode {
|
|
27
|
+
identifier: TypeIdentifier;
|
|
28
|
+
node: IntrospectedBaseClass;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface InterfaceResolution extends ResolutionNode, Iterable<InterfaceResolution | ClassResolution> {
|
|
32
|
+
extends(): InterfaceResolution | ClassResolution | undefined;
|
|
33
|
+
node: IntrospectedInterface;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface ClassResolution extends ResolutionNode, Iterable<ClassResolution> {
|
|
37
|
+
extends(): ClassResolution | undefined;
|
|
38
|
+
implements(): InterfaceResolution[];
|
|
39
|
+
node: IntrospectedClass;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface RecordResolution extends ResolutionNode, Iterable<RecordResolution> {
|
|
43
|
+
extends(): RecordResolution | undefined;
|
|
44
|
+
node: IntrospectedRecord;
|
|
45
|
+
}
|