@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/src/gir.ts
ADDED
|
@@ -0,0 +1,892 @@
|
|
|
1
|
+
import type { IntrospectedNamespace } from "./gir/namespace.ts";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A list of possible type conflicts.
|
|
5
|
+
*
|
|
6
|
+
* The format is CHILD_PARENT_CONFLICT so
|
|
7
|
+
* ACCESSOR_PROPERTY_CONFLICT means there
|
|
8
|
+
* is an accessor on a child class and a
|
|
9
|
+
* property on the parent class, which is a
|
|
10
|
+
* conflict.
|
|
11
|
+
*
|
|
12
|
+
* Starts at '1' because the value is often
|
|
13
|
+
* used as truthy.
|
|
14
|
+
*/
|
|
15
|
+
export enum ConflictType {
|
|
16
|
+
PROPERTY_NAME_CONFLICT = 1,
|
|
17
|
+
FIELD_NAME_CONFLICT,
|
|
18
|
+
FUNCTION_NAME_CONFLICT,
|
|
19
|
+
ACCESSOR_PROPERTY_CONFLICT,
|
|
20
|
+
PROPERTY_ACCESSOR_CONFLICT,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
import { ConsoleReporter, ReporterService } from "@ts-for-gir/reporter";
|
|
24
|
+
import type { IntrospectedField, IntrospectedProperty } from "./gir/property.ts";
|
|
25
|
+
import type { OptionsBase } from "./types/index.ts";
|
|
26
|
+
import { isInvalid, sanitizeIdentifierName, sanitizeNamespace } from "./utils/naming.ts";
|
|
27
|
+
|
|
28
|
+
export abstract class TypeExpression {
|
|
29
|
+
isPointer = false;
|
|
30
|
+
|
|
31
|
+
abstract equals(type: TypeExpression): boolean;
|
|
32
|
+
abstract unwrap(): TypeExpression;
|
|
33
|
+
|
|
34
|
+
deepUnwrap(): TypeExpression {
|
|
35
|
+
return this.unwrap();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
abstract rewrap(type: TypeExpression): TypeExpression;
|
|
39
|
+
abstract resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression;
|
|
40
|
+
|
|
41
|
+
abstract print(namespace: IntrospectedNamespace, options: OptionsBase): string;
|
|
42
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
43
|
+
return this.print(namespace, options);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export class TypeIdentifier extends TypeExpression {
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly namespace: string;
|
|
50
|
+
|
|
51
|
+
// Global reporter configuration and instance
|
|
52
|
+
private static reporterConfig: { enabled: boolean; output: string } = {
|
|
53
|
+
enabled: false,
|
|
54
|
+
output: "ts-for-gir-report.json",
|
|
55
|
+
};
|
|
56
|
+
private static globalReporter: ConsoleReporter | null = null;
|
|
57
|
+
|
|
58
|
+
static configureReporter(enabled: boolean, output: string = "ts-for-gir-report.json") {
|
|
59
|
+
TypeIdentifier.reporterConfig = { enabled, output };
|
|
60
|
+
|
|
61
|
+
// Reset global reporter to force recreation with new config
|
|
62
|
+
if (TypeIdentifier.globalReporter) {
|
|
63
|
+
TypeIdentifier.globalReporter = null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Create and register the global reporter if enabled
|
|
67
|
+
if (enabled) {
|
|
68
|
+
TypeIdentifier.globalReporter = new ConsoleReporter(true, "TypeIdentifier", enabled, output);
|
|
69
|
+
const reporterService = ReporterService.getInstance();
|
|
70
|
+
reporterService.registerReporter("TypeIdentifier", TypeIdentifier.globalReporter);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private static getReporter(): ConsoleReporter {
|
|
75
|
+
if (!TypeIdentifier.globalReporter) {
|
|
76
|
+
const config = TypeIdentifier.reporterConfig;
|
|
77
|
+
TypeIdentifier.globalReporter = new ConsoleReporter(true, "TypeIdentifier", config.enabled, config.output);
|
|
78
|
+
|
|
79
|
+
if (config.enabled) {
|
|
80
|
+
const reporterService = ReporterService.getInstance();
|
|
81
|
+
reporterService.registerReporter("TypeIdentifier", TypeIdentifier.globalReporter);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return TypeIdentifier.globalReporter;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
get log(): ConsoleReporter {
|
|
88
|
+
return TypeIdentifier.getReporter();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
constructor(name: string, namespace: string) {
|
|
92
|
+
super();
|
|
93
|
+
this.name = name;
|
|
94
|
+
this.namespace = namespace;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
equals(type: TypeExpression): boolean {
|
|
98
|
+
return type instanceof TypeIdentifier && type.name === this.name && type.namespace === this.namespace;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
is(namespace: string, name: string) {
|
|
102
|
+
return this.namespace === namespace && this.name === name;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
unwrap() {
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
110
|
+
return type;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* TODO: gi.ts didn't deal with sanitizing types but probably should have to avoid
|
|
115
|
+
* invalid names such as "3gppProfile"
|
|
116
|
+
*/
|
|
117
|
+
sanitize() {
|
|
118
|
+
return new TypeIdentifier(sanitizeIdentifierName(this.namespace, this.name), sanitizeNamespace(this.namespace));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
protected _resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeIdentifier | null {
|
|
122
|
+
const name: string = sanitizeIdentifierName(null, this.name);
|
|
123
|
+
const unresolvedNamespaceName = this.namespace;
|
|
124
|
+
|
|
125
|
+
const ns = namespace.assertInstalledImport(unresolvedNamespaceName);
|
|
126
|
+
|
|
127
|
+
if (ns.hasSymbol(name)) {
|
|
128
|
+
const c = ns.getClass(name);
|
|
129
|
+
|
|
130
|
+
// Some records are structs for other class types.
|
|
131
|
+
// GirRecord.prototype.getType resolves this relationship.
|
|
132
|
+
if (c) return c.getType();
|
|
133
|
+
|
|
134
|
+
return new TypeIdentifier(name, ns.namespace);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Handle "class callback" types (they're in a definition-merged module)
|
|
138
|
+
let [cb, corrected_name] = ns.findClassCallback(name);
|
|
139
|
+
let resolved_name: string | null = null;
|
|
140
|
+
|
|
141
|
+
if (!cb) {
|
|
142
|
+
resolved_name = ns.resolveSymbolFromTypeName(name);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
let c_resolved_name: string | null = null;
|
|
146
|
+
|
|
147
|
+
if (!c_resolved_name) {
|
|
148
|
+
c_resolved_name = ns.resolveSymbolFromTypeName(`${unresolvedNamespaceName}${name}`);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (!c_resolved_name) {
|
|
152
|
+
c_resolved_name = ns.resolveSymbolFromTypeName(`${ns.namespace}${name}`);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!cb && !resolved_name && !c_resolved_name) {
|
|
156
|
+
// Don't warn if a missing import is at fault, this will be dealt with later.
|
|
157
|
+
if (namespace.namespace === ns.namespace) {
|
|
158
|
+
this.log.reportTypeResolutionWarning(
|
|
159
|
+
this.name,
|
|
160
|
+
this.namespace,
|
|
161
|
+
`Attempting to fall back on c:type inference for ${ns.namespace}.${name}`,
|
|
162
|
+
`Fallback to c:type inference attempted`,
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
[cb, corrected_name] = ns.findClassCallback(`${ns.namespace}${name}`);
|
|
167
|
+
|
|
168
|
+
if (cb) {
|
|
169
|
+
this.log.reportTypeResolutionWarning(
|
|
170
|
+
this.name,
|
|
171
|
+
this.namespace,
|
|
172
|
+
`Falling back on c:type inference for ${ns.namespace}.${name} and found ${ns.namespace}.${corrected_name}`,
|
|
173
|
+
`Successfully resolved using c:type fallback`,
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (cb) {
|
|
179
|
+
if (options.verbose) {
|
|
180
|
+
this.log.debug(`Callback found: ${cb}.${corrected_name}`);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return new ModuleTypeIdentifier(corrected_name, cb, ns.namespace);
|
|
184
|
+
} else if (resolved_name) {
|
|
185
|
+
return new TypeIdentifier(resolved_name, ns.namespace);
|
|
186
|
+
} else if (c_resolved_name) {
|
|
187
|
+
this.log.reportTypeResolutionWarning(
|
|
188
|
+
this.name,
|
|
189
|
+
this.namespace,
|
|
190
|
+
`Fall back on c:type inference for ${ns.namespace}.${name} and found ${ns.namespace}.${corrected_name}`,
|
|
191
|
+
`Using c:type as fallback for type resolution`,
|
|
192
|
+
);
|
|
193
|
+
|
|
194
|
+
return new TypeIdentifier(c_resolved_name, ns.namespace);
|
|
195
|
+
} else if (namespace.namespace === ns.namespace) {
|
|
196
|
+
this.log.reportTypeResolutionError(
|
|
197
|
+
this.name,
|
|
198
|
+
ns.namespace,
|
|
199
|
+
`Unable to resolve type ${this.name} in same namespace ${ns.namespace}!`,
|
|
200
|
+
`Type resolution failed within the same namespace`,
|
|
201
|
+
);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
this.log.reportTypeResolutionError(
|
|
206
|
+
this.name,
|
|
207
|
+
this.namespace,
|
|
208
|
+
`Type ${this.name} could not be resolved in ${namespace.namespace} ${namespace.version}`,
|
|
209
|
+
`Failed to resolve type during namespace processing`,
|
|
210
|
+
);
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
resolveIdentifier(namespace: IntrospectedNamespace, options: OptionsBase): TypeIdentifier | null {
|
|
215
|
+
return this._resolve(namespace, options);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
219
|
+
const resolved = this._resolve(namespace, options);
|
|
220
|
+
|
|
221
|
+
// Generally if we can't resolve a type it is not introspectable,
|
|
222
|
+
// thus we annotate it as "never".
|
|
223
|
+
return resolved ?? NeverType;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
static new({ name, namespace }: { name: string; namespace: string }) {
|
|
227
|
+
return new TypeIdentifier(name, namespace);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
print(namespace: IntrospectedNamespace, _options: OptionsBase): string {
|
|
231
|
+
if (namespace.hasSymbol(this.namespace) && this.namespace !== namespace.namespace) {
|
|
232
|
+
// TODO: Move to TypeScript generator...
|
|
233
|
+
// Libraries like zbar have classes named things like "Gtk"
|
|
234
|
+
return `${this.namespace}__.${this.name}`;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (namespace.namespace === this.namespace) {
|
|
238
|
+
return `${this.name}`;
|
|
239
|
+
} else {
|
|
240
|
+
return `${this.namespace}.${this.name}`;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export class ModuleTypeIdentifier extends TypeIdentifier {
|
|
246
|
+
readonly moduleName: string;
|
|
247
|
+
declare readonly namespace: string;
|
|
248
|
+
|
|
249
|
+
constructor(name: string, moduleName: string, namespace: string) {
|
|
250
|
+
super(name, namespace);
|
|
251
|
+
this.moduleName = moduleName;
|
|
252
|
+
this.namespace = namespace;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
equals(type: TypeExpression): boolean {
|
|
256
|
+
return super.equals(type) && type instanceof ModuleTypeIdentifier && this.moduleName === type.moduleName;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
is(namespace: string, moduleName: string, name?: string) {
|
|
260
|
+
return this.namespace === namespace && this.moduleName === moduleName && this.name === name && name !== undefined;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
unwrap() {
|
|
264
|
+
return this;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
268
|
+
return type;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
sanitize() {
|
|
272
|
+
return new ModuleTypeIdentifier(
|
|
273
|
+
sanitizeIdentifierName(this.namespace, this.name),
|
|
274
|
+
sanitizeIdentifierName(this.namespace, this.moduleName),
|
|
275
|
+
sanitizeNamespace(this.namespace),
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
protected _resolve(_namespace: IntrospectedNamespace, _options: OptionsBase): ModuleTypeIdentifier | null {
|
|
280
|
+
return this;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
print(namespace: IntrospectedNamespace, _options: OptionsBase): string {
|
|
284
|
+
if (namespace.namespace === this.namespace) {
|
|
285
|
+
return `${this.moduleName}.${this.name}`;
|
|
286
|
+
} else {
|
|
287
|
+
return `${this.namespace}.${this.moduleName}.${this.name}`;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* This class overrides the default printing for types
|
|
294
|
+
*/
|
|
295
|
+
export class ClassStructTypeIdentifier extends TypeIdentifier {
|
|
296
|
+
equals(type: TypeExpression): boolean {
|
|
297
|
+
return type instanceof ClassStructTypeIdentifier && super.equals(type);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
print(namespace: IntrospectedNamespace, _options: OptionsBase): string {
|
|
301
|
+
if (namespace.namespace === this.namespace) {
|
|
302
|
+
// TODO: Mapping to invalid names should happen at the generator level...
|
|
303
|
+
return `typeof ${isInvalid(this.name) ? `__${this.name}` : this.name}`;
|
|
304
|
+
} else {
|
|
305
|
+
return `typeof ${this.namespace}.${isInvalid(this.name) ? `__${this.name}` : this.name}`;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export class GenerifiedTypeIdentifier extends TypeIdentifier {
|
|
311
|
+
generics: TypeExpression[];
|
|
312
|
+
|
|
313
|
+
constructor(name: string, namespace: string, generics: TypeExpression[] = []) {
|
|
314
|
+
super(name, namespace);
|
|
315
|
+
this.generics = generics;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
319
|
+
const Generics = this.generics.map((generic) => generic.print(namespace, options)).join(", ");
|
|
320
|
+
|
|
321
|
+
if (namespace.namespace === this.namespace) {
|
|
322
|
+
return `${this.name}${this.generics.length > 0 ? `<${Generics}>` : ""}`;
|
|
323
|
+
} else {
|
|
324
|
+
return `${this.namespace}.${this.name}${this.generics.length > 0 ? `<${Generics}>` : ""}`;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
_resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeIdentifier | null {
|
|
329
|
+
const iden = super._resolve(namespace, options);
|
|
330
|
+
|
|
331
|
+
if (iden) {
|
|
332
|
+
return new GenerifiedTypeIdentifier(iden.name, iden.namespace, [...this.generics]);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
return iden;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export class NativeType extends TypeExpression {
|
|
340
|
+
readonly expression: (options?: OptionsBase) => string;
|
|
341
|
+
|
|
342
|
+
constructor(expression: ((options?: OptionsBase) => string) | string) {
|
|
343
|
+
super();
|
|
344
|
+
this.expression = typeof expression === "string" ? () => expression : expression;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
348
|
+
return type;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
resolve(): TypeExpression {
|
|
352
|
+
return this;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
print(_namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
356
|
+
return this.expression(options);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
equals(type: TypeExpression, options?: OptionsBase): boolean {
|
|
360
|
+
return type instanceof NativeType && this.expression(options) === type.expression(options);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
unwrap(): TypeExpression {
|
|
364
|
+
return this;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
static withGenerator(generator: (options?: OptionsBase) => string): TypeExpression {
|
|
368
|
+
return new NativeType(generator);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
static of(nativeType: string): NativeType {
|
|
372
|
+
return new NativeType(nativeType);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export class OrType extends TypeExpression {
|
|
377
|
+
readonly types: ReadonlyArray<TypeExpression>;
|
|
378
|
+
|
|
379
|
+
constructor(type: TypeExpression, ...types: TypeExpression[]) {
|
|
380
|
+
super();
|
|
381
|
+
this.types = [type, ...types];
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
385
|
+
return type;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
unwrap(): TypeExpression {
|
|
389
|
+
return this;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
393
|
+
const [type, ...types] = this.types;
|
|
394
|
+
|
|
395
|
+
return new OrType(type.resolve(namespace, options), ...types.map((t) => t.resolve(namespace, options)));
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
399
|
+
return `(${this.types.map((t) => t.print(namespace, options)).join(" | ")})`;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
403
|
+
return `${this.types.map((t) => t.print(namespace, options)).join(" | ")}`;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
equals(type: TypeExpression) {
|
|
407
|
+
if (type instanceof OrType) {
|
|
408
|
+
return this.types.every((t) => type.types.some((type) => type.equals(t)));
|
|
409
|
+
} else {
|
|
410
|
+
return false;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export class TupleType extends OrType {
|
|
416
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
417
|
+
return `[${this.types.map((t) => t.print(namespace, options)).join(", ")}]`;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
421
|
+
return this.print(namespace, options);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
425
|
+
const [type, ...types] = this.types;
|
|
426
|
+
|
|
427
|
+
return new TupleType(type.resolve(namespace, options), ...types.map((t) => t.resolve(namespace, options)));
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
equals(type: TypeExpression) {
|
|
431
|
+
if (type instanceof TupleType) {
|
|
432
|
+
return this.types.length === type.types.length && this.types.every((t, i) => type.types[i].equals(t));
|
|
433
|
+
} else {
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
export class BinaryType extends OrType {
|
|
440
|
+
unwrap(): TypeExpression {
|
|
441
|
+
return this;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase) {
|
|
445
|
+
return new BinaryType(this.a.resolve(namespace, options), this.b.resolve(namespace, options));
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
is() {
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
get a() {
|
|
453
|
+
return this.types[0];
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
get b() {
|
|
457
|
+
return this.types[1];
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
export class FunctionType extends TypeExpression {
|
|
462
|
+
parameterTypes: { [name: string]: TypeExpression };
|
|
463
|
+
returnType: TypeExpression;
|
|
464
|
+
|
|
465
|
+
constructor(parameters: { [name: string]: TypeExpression }, returnType: TypeExpression) {
|
|
466
|
+
super();
|
|
467
|
+
|
|
468
|
+
this.parameterTypes = parameters;
|
|
469
|
+
this.returnType = returnType;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
equals(type: TypeExpression): boolean {
|
|
473
|
+
if (type instanceof FunctionType) {
|
|
474
|
+
return (
|
|
475
|
+
Object.values(this.parameterTypes).every((t) =>
|
|
476
|
+
Object.values(type.parameterTypes).some((tp) => t.equals(tp)),
|
|
477
|
+
) &&
|
|
478
|
+
Object.values(type.parameterTypes).every((t) =>
|
|
479
|
+
Object.values(this.parameterTypes).some((tp) => t.equals(tp)),
|
|
480
|
+
) &&
|
|
481
|
+
this.returnType.equals(type.returnType)
|
|
482
|
+
);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
489
|
+
return type;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
unwrap(): TypeExpression {
|
|
493
|
+
return this;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
497
|
+
return new FunctionType(
|
|
498
|
+
Object.fromEntries(
|
|
499
|
+
Object.entries(this.parameterTypes).map(([k, p]) => {
|
|
500
|
+
return [k, p.resolve(namespace, options)];
|
|
501
|
+
}),
|
|
502
|
+
),
|
|
503
|
+
this.returnType.resolve(namespace, options),
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
508
|
+
const Parameters = Object.entries(this.parameterTypes)
|
|
509
|
+
.map(([k, v]) => {
|
|
510
|
+
return `${k}: ${v.rootPrint(namespace, options)}`;
|
|
511
|
+
})
|
|
512
|
+
.join(", ");
|
|
513
|
+
|
|
514
|
+
return `(${Parameters}) => ${this.returnType.print(namespace, options)}`;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
518
|
+
return `(${this.rootPrint(namespace, options)})`;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
export class Generic {
|
|
523
|
+
private _deriveFrom: TypeIdentifier | null;
|
|
524
|
+
private _genericType: GenericType;
|
|
525
|
+
private _defaultType: TypeExpression | null;
|
|
526
|
+
private _constraint: TypeExpression | null;
|
|
527
|
+
private _propagate: boolean;
|
|
528
|
+
|
|
529
|
+
constructor(
|
|
530
|
+
genericType: GenericType,
|
|
531
|
+
defaultType?: TypeExpression,
|
|
532
|
+
deriveFrom?: TypeIdentifier,
|
|
533
|
+
constraint?: TypeExpression,
|
|
534
|
+
propagate = true,
|
|
535
|
+
) {
|
|
536
|
+
this._deriveFrom = deriveFrom ?? null;
|
|
537
|
+
this._genericType = genericType;
|
|
538
|
+
this._defaultType = defaultType ?? null;
|
|
539
|
+
this._constraint = constraint ?? null;
|
|
540
|
+
this._propagate = propagate;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
unwrap() {
|
|
544
|
+
return this._genericType;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
get propagate() {
|
|
548
|
+
return this._propagate;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
get type() {
|
|
552
|
+
return this._genericType;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
get defaultType() {
|
|
556
|
+
return this._defaultType;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
get constraint() {
|
|
560
|
+
return this._constraint;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
get parent() {
|
|
564
|
+
return this._deriveFrom;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
export class GenerifiedType extends TypeExpression {
|
|
569
|
+
type: TypeExpression;
|
|
570
|
+
generic: GenericType;
|
|
571
|
+
|
|
572
|
+
constructor(type: TypeExpression, generic: GenericType) {
|
|
573
|
+
super();
|
|
574
|
+
|
|
575
|
+
this.type = type;
|
|
576
|
+
this.generic = generic;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase) {
|
|
580
|
+
return new GenerifiedType(this.type.resolve(namespace, options), this.generic);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
unwrap() {
|
|
584
|
+
return this.type;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase) {
|
|
588
|
+
return this.type.rootPrint(namespace, options);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase) {
|
|
592
|
+
return `${this.type.print(namespace, options)}<${this.generic.print()}>`;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
equals(type: TypeExpression): boolean {
|
|
596
|
+
if (type instanceof GenerifiedType) {
|
|
597
|
+
return this.type.equals(type.type) && this.generic.equals(type.generic);
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
return this.type.equals(type);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
604
|
+
return new GenerifiedType(this.type.rewrap(type), this.generic);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
export class GenericType extends TypeExpression {
|
|
609
|
+
identifier: string;
|
|
610
|
+
replacedType?: TypeExpression;
|
|
611
|
+
|
|
612
|
+
constructor(identifier: string, replacedType?: TypeExpression) {
|
|
613
|
+
super();
|
|
614
|
+
|
|
615
|
+
this.identifier = identifier;
|
|
616
|
+
this.replacedType = replacedType;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
equals(type: TypeExpression): boolean {
|
|
620
|
+
if (type instanceof GenericType) {
|
|
621
|
+
const genericType = type;
|
|
622
|
+
return this.identifier === genericType.identifier;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
return false;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
unwrap(): TypeExpression {
|
|
629
|
+
return this;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
633
|
+
return type;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
resolve(): GenericType {
|
|
637
|
+
return this;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
print(): string {
|
|
641
|
+
return this.identifier;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
export class NullableType extends BinaryType {
|
|
646
|
+
constructor(type: TypeExpression) {
|
|
647
|
+
super(type, NullType);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
unwrap() {
|
|
651
|
+
return this.a;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
655
|
+
return new NullableType(this.a.rewrap(type));
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
get type() {
|
|
659
|
+
return this.a;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
export class PromiseType extends TypeExpression {
|
|
664
|
+
type: TypeExpression;
|
|
665
|
+
|
|
666
|
+
constructor(type: TypeExpression) {
|
|
667
|
+
super();
|
|
668
|
+
this.type = type;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
equals(type: TypeExpression): boolean {
|
|
672
|
+
return type instanceof PromiseType && type.type.equals(this.type);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
unwrap() {
|
|
676
|
+
return this;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
680
|
+
return new PromiseType(this.type.rewrap(type));
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
684
|
+
return new PromiseType(this.type.resolve(namespace, options));
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
688
|
+
if (this.type.equals(VoidType)) {
|
|
689
|
+
return "globalThis.Promise<void>";
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
return `globalThis.Promise<${this.type.print(namespace, options)}>`;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
rootPrint(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
696
|
+
return this.print(namespace, options);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/**
|
|
701
|
+
* This is one of the more interesting usages of our type
|
|
702
|
+
* system. To handle type conflicts we wrap conflicting types
|
|
703
|
+
* in this class with a ConflictType to denote why they are a
|
|
704
|
+
* conflict.
|
|
705
|
+
*
|
|
706
|
+
* TypeConflict will throw if it is printed or resolved, so generators
|
|
707
|
+
* must unwrap it and "resolve" the conflict. Some generators like JSON
|
|
708
|
+
* just disregard this info, other generators like DTS attempt to
|
|
709
|
+
* resolve the conflicts so the typing stays sound.
|
|
710
|
+
*/
|
|
711
|
+
export class TypeConflict extends TypeExpression {
|
|
712
|
+
readonly conflictType: ConflictType;
|
|
713
|
+
readonly type: TypeExpression;
|
|
714
|
+
|
|
715
|
+
constructor(type: TypeExpression, conflictType: ConflictType) {
|
|
716
|
+
super();
|
|
717
|
+
this.type = type;
|
|
718
|
+
this.conflictType = conflictType;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
rewrap(type: TypeExpression): TypeConflict {
|
|
722
|
+
return new TypeConflict(this.type.rewrap(type), this.conflictType);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
unwrap(): TypeExpression {
|
|
726
|
+
return this.type;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
// TODO: This constant "true" is a remnant of the Anyified type.
|
|
730
|
+
equals(): boolean {
|
|
731
|
+
return true;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
735
|
+
const resolvedType = this.type.resolve(namespace, options);
|
|
736
|
+
const typeString = resolvedType.print(namespace, options);
|
|
737
|
+
throw new Error(`Type conflict was not resolved for ${typeString} in ${namespace.namespace}`);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
741
|
+
const resolvedType = this.type.resolve(namespace, options);
|
|
742
|
+
const typeString = resolvedType.print(namespace, options);
|
|
743
|
+
throw new Error(`Type conflict was not resolved for ${typeString} in ${namespace.namespace}`);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
export class ClosureType extends TypeExpression {
|
|
748
|
+
type: TypeExpression;
|
|
749
|
+
user_data: number | null = null;
|
|
750
|
+
|
|
751
|
+
constructor(type: TypeExpression) {
|
|
752
|
+
super();
|
|
753
|
+
this.type = type;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
equals(type: TypeExpression): boolean {
|
|
757
|
+
if (type instanceof ClosureType) {
|
|
758
|
+
const closureType = type;
|
|
759
|
+
return this.type.equals(closureType.type);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
return false;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
deepUnwrap(): TypeExpression {
|
|
766
|
+
return this.type;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
770
|
+
const closure = new ClosureType(this.type.rewrap(type));
|
|
771
|
+
|
|
772
|
+
closure.user_data = this.user_data;
|
|
773
|
+
|
|
774
|
+
return closure;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
unwrap(): TypeExpression {
|
|
778
|
+
return this;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase) {
|
|
782
|
+
const { user_data, type } = this;
|
|
783
|
+
|
|
784
|
+
return ClosureType.new({
|
|
785
|
+
user_data,
|
|
786
|
+
type: type.resolve(namespace, options),
|
|
787
|
+
});
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
791
|
+
return this.type.print(namespace, options);
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
static new({ type, user_data = null }: { type: TypeExpression; user_data?: number | null }) {
|
|
795
|
+
const vt = new ClosureType(type);
|
|
796
|
+
vt.user_data = user_data;
|
|
797
|
+
return vt;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
export class ArrayType extends TypeExpression {
|
|
802
|
+
type: TypeExpression;
|
|
803
|
+
arrayDepth: number = 1;
|
|
804
|
+
length: number | null = null;
|
|
805
|
+
|
|
806
|
+
constructor(type: TypeExpression) {
|
|
807
|
+
super();
|
|
808
|
+
this.type = type;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
deepUnwrap(): TypeExpression {
|
|
812
|
+
return this.type;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
unwrap(): TypeExpression {
|
|
816
|
+
return this;
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
rewrap(type: TypeExpression): TypeExpression {
|
|
820
|
+
const array = new ArrayType(this.type.rewrap(type));
|
|
821
|
+
|
|
822
|
+
array.arrayDepth = this.arrayDepth;
|
|
823
|
+
array.length = this.length;
|
|
824
|
+
|
|
825
|
+
return array;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
equals(type: TypeExpression) {
|
|
829
|
+
if (type instanceof ArrayType) {
|
|
830
|
+
const arrayType: ArrayType = type;
|
|
831
|
+
|
|
832
|
+
return arrayType.type.equals(this.type) && type.arrayDepth === this.arrayDepth;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
return false;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
resolve(namespace: IntrospectedNamespace, options: OptionsBase): TypeExpression {
|
|
839
|
+
const { type, arrayDepth, length } = this;
|
|
840
|
+
return ArrayType.new({
|
|
841
|
+
type: type.resolve(namespace, options),
|
|
842
|
+
arrayDepth,
|
|
843
|
+
length,
|
|
844
|
+
});
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
print(namespace: IntrospectedNamespace, options: OptionsBase): string {
|
|
848
|
+
const depth = this.arrayDepth;
|
|
849
|
+
let typeSuffix: string = "";
|
|
850
|
+
|
|
851
|
+
if (depth === 0) {
|
|
852
|
+
typeSuffix = "";
|
|
853
|
+
} else if (depth === 1) {
|
|
854
|
+
typeSuffix = "[]";
|
|
855
|
+
} else {
|
|
856
|
+
typeSuffix = "".padStart(2 * depth, "[]");
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
return `${this.type.print(namespace, options)}${typeSuffix}`;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
static new({
|
|
863
|
+
type,
|
|
864
|
+
arrayDepth = 1,
|
|
865
|
+
length = null,
|
|
866
|
+
}: {
|
|
867
|
+
type: TypeExpression;
|
|
868
|
+
length?: number | null;
|
|
869
|
+
arrayDepth?: number;
|
|
870
|
+
}) {
|
|
871
|
+
const vt = new ArrayType(type);
|
|
872
|
+
vt.length = length;
|
|
873
|
+
vt.arrayDepth = arrayDepth;
|
|
874
|
+
return vt;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
// Common native types as constants
|
|
879
|
+
export const ThisType = new NativeType("this");
|
|
880
|
+
export const ObjectType = new NativeType("object");
|
|
881
|
+
export const AnyType = new NativeType("any");
|
|
882
|
+
export const NeverType = new NativeType("never");
|
|
883
|
+
export const Uint8ArrayType = new NativeType("Uint8Array");
|
|
884
|
+
export const BooleanType = new NativeType("boolean");
|
|
885
|
+
export const StringType = new NativeType("string");
|
|
886
|
+
export const NumberType = new NativeType("number");
|
|
887
|
+
export const NullType = new NativeType("null");
|
|
888
|
+
export const VoidType = new NativeType("void");
|
|
889
|
+
export const UnknownType = new NativeType("unknown");
|
|
890
|
+
export const AnyFunctionType = new NativeType("(...args: any[]) => any");
|
|
891
|
+
|
|
892
|
+
export type GirClassField = IntrospectedProperty | IntrospectedField;
|