ts-for-gir

TypeScript type definition generator for GObject introspection interfaces

APACHE-2.0 License

Downloads
25.6K
Stars
237
Committers
17

Bot releases are hidden (Show)

ts-for-gir - 4.0.0-beta.16 Latest Release

Published by JumpLink 29 days ago

What's Changed

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.15...4.0.0-beta.16

ts-for-gir - 4.0.0-beta.15

Published by JumpLink about 2 months ago

What's Changed

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.14...4.0.0-beta.15

ts-for-gir - 4.0.0-beta.14

Published by JumpLink 3 months ago

  • Update gir files
  • Add missing ambient module console
  • Add missing static property Object.$gtype (not GObject.Object.$gtype)

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.12...4.0.0-beta.14

ts-for-gir - 4.0.0-beta.12

Published by JumpLink 3 months ago

What's Changed

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.11...4.0.0-beta.12

ts-for-gir - 4.0.0-beta.10

Published by JumpLink 3 months ago

Add support for $gtype for enums.

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.8...4.0.0-beta.10

ts-for-gir - 4.0.0-beta.8

Published by JumpLink 3 months ago

Improved GJS package core types

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/4.0.0-beta.7...4.0.0-beta.8

ts-for-gir - 4.0.0-beta.7

Published by JumpLink 3 months ago

We have just updated ts-for-gir to 4.0.0-beta.7. Types can now be generated locally without package.json support, which is now the default. You can try it out directly with:

npx @ts-for-gir/cli generate Adw-1.0

This will generate the types for Libadwaita and all its dependencies, including Gtk 4.0, GObject 2.0, etc.

If you still want to generate types with package.json support, simply use the --package CLI argument. We have also updated them on NPM, including the upcoming types for GNOME Shell 47.

What's Changed

Allow toggling between package.json support and further cleanups from the gi.ts merge by @JumpLink in #176:

  • Renamed the CLI argument packageYarn to workspace as other package managers such as PNPM also support this protocol.
  • Ambient module definitions are now always generated with and without version prefixes (previously this was only the case for the latest versions). This makes sense as care should be taken not to use the same library in different versions. If needed, it can be prevented with the new generate option onlyVersionPrefix. This fixes Allow all versions to be imported without a version string (e.g. gi://Gtk instead of gi://Gtk?version=4.0) in #158 and possibly #174.
  • An index.d.ts file is now created for each module, allowing everything for the module (ambient module, imports.gi, and namespace) to be imported.
  • Removed synchronous methods that existed twice for the asynchronous variant, originally criticized in #162.
  • Added support for type generation without package.json support to fix #168 and #173. For this, there is a new CLI argument package to toggle package.json support.

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v4.0.0-beta.6...v4.0.0-beta.7

ts-for-gir - v4.0.0-beta.6

Published by JumpLink 3 months ago

What's Changed

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v4.0.0-beta.2...v4.0.0-beta.6

ts-for-gir - v4.0.0-beta.2

Published by JumpLink 7 months ago

We are thrilled to announce the first beta release of new TypeScript bindings for GNOME! These bindings combine the efforts of ts-for-gir and gi.ts into a unified project under the gjsify organization. Since we announced this effort at GUADEC 2023, @JumpLink and @ewlsh have been working continuously to identify areas for improvement in the bindings and how best to merge these two sprawling codebases. This fusion marks a significant milestone in our journey towards enhancing the TypeScript ecosystem for GJS and GObject-based libraries. Our collaboration shows the power of community-driven development and the remarkable achievements that can be realized when we join forces towards a common objective 🤝

We have also removed some features, such as support for Node.js and CommonJS. Types for Node.js can still be generated via v3.x.x, and we are open to contributions in this area. However, there has been limited feedback from the community so far, leading us to focus on GJS for the time being. Furthermore, ESM represents the future and has already become the standard within GJS. This move also enables us to publish types on https://jsr.io/, a runtime-independent JavaScript and TypeScript open-source package registry created by the makers of Deno, where CommonJS is not allowed.

The new bindings have been published on NPM with the next tag and are ready for testing. We've tried to minimize breaking changes whereever possible and hopefully with new, advanced types the bindings just "work" 😊

We're excited to see what the future holds for JavaScript and TypeScript in GNOME!

What's Changed

Breaking changes

  • Removed CommonJS support
  • Removed Node.js support

New Contributors

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v3.3.0...v4.0.0-beta.2

ts-for-gir - v3.3.0

Published by JumpLink 7 months ago

ts-for-git logo

TypeScript type definition generator for GObject introspection GIR files

What's Changed

  • Upgrade dependencies
  • Replaced xml2js with fast-xml-parser (Backport from gi.ts merge branch)
  • Upgrade gir files for GNOME 46

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v3.2.8...v3.3.0

ts-for-gir - v3.2.8

Published by JumpLink 8 months ago

What's Changed

  • Upgrade dependencies
  • Update examples and removed deprecated function calls like byteArray.toString()
  • Add dom.js, ambient.js and node-ambient.js to allow importing there type definitions in the codebase with a bundler
  • Update TSDoc documentation for system
  • node-gtk: Add new gtk-4-application example
  • node-gtk: Uses snake_case for property names at constructor, fixes #131

Breaking Changes

  • Removed support for additional underscore properties (next to lowerCamelCase) in the generated types, if this causes problems please let us know, then we will undo it again

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v3.2.7...v3.2.8

ts-for-gir - v3.2.7

Published by JumpLink 10 months ago

3.2.7

  • Upgrade dependencies
  • Add type for import.meta.url, see #142
  • C type const is readonly in typescript
  • Constants are not nullable, fixes #141

3.2.6

  • Upgrade dependencies
  • Generate camel cased property accessors, see #138
  • Add runAsync override for GLib.MainLoop, see #130

3.2.5

  • Upgrade dependencies
  • Allow ambient modules without version for NPM packages, see #139
  • Add information about ESM and CommonJS modules to README.md for NPM packages

3.2.4

  • Upgrade dependencies
  • Add instruction to install GnomeBluetooth-3.0.gir on Fedora
  • Add more *.gir files to ./girs directory

3.2.3

  • Upgrade dependencies
  • Upgrade gir files

3.2.1

  • TypeDoc: Only include main entry point
  • Upgrade dependencies

New Contributors

Full Changelog: https://github.com/gjsify/ts-for-gir/compare/v3.2.0...v3.2.7

ts-for-gir - v3.2.0

Published by JumpLink over 1 year ago

  • Improved TypeDoc support for TypeDoc 0.24.x of the generated NPM packages
  • Upgrade dependencies
  • Upgrade gir files
ts-for-gir - v3.1.0

Published by JumpLink over 1 year ago

  • Upgrade dependencies
  • Move conflicting global GJS types to dom.d.ts for optional import

Breaking Changes

Move conflicting global GJS types to dom.d.ts, allowing you to optionally import them in your project. By doing so, you have the flexibility to choose whether or not to include these types based on your specific needs. This resolves the conflict between the GJS and DOM types and provides you with more control over managing the type definitions.

To use the previous behavior and include the conflicting GJS types, you can import both ./@types/gjs.d.ts and ./@types/dom.d.ts in your code.

Alternatively, if you are using the NPM packages, you can import the following:

  • @girs/gjs: This package provides the GJS types.
  • @girs/gjs/dom: This package provides the conflicting DOM types.

Please update your imports accordingly based on your chosen approach.

ts-for-gir - v3.0.4

Published by JumpLink over 1 year ago

  • Update badges on README template files
  • Node-gtk: Readd gobject signal method, fixes #126
ts-for-gir - v3.0.3

Published by JumpLink over 1 year ago

  • NPM package Yarn workspace support is optional now, see #124
  • Upgrade all dependencies (except xml2js, see #125)
  • Parse app version from package.json
  • Moved templates, packages.xml, package-data-parser.ts and template-processor.ts from @ts-for-gir/lib to @ts-for-gir/generator-typescript
  • Cleanup yarn scripts in ./package.json
ts-for-gir - v3.0.1

Published by JumpLink over 1 year ago

Add missing packages.xml to @ts-for-gir/lib

ts-for-gir - v3.0.0

Published by JumpLink over 1 year ago

🎉 ts-for-gir v3.0.0 is here! 🚀

This stable release brings exciting new features and improvements to ts-for-gir.

Highlights

  • Support for generating NPM packages for each module, making it easier to manage and use the type definitions.
  • New CLI options to generate NPM packages and customize the package scope name.
  • Improved documentation with detailed explanations of the new CLI options.
  • Enhanced package structure with separate folders for each package, along with individual package.json files.
  • Compatibility updates for GNOME Shell extensions, including a dedicated NPM package for GNOME Shell types.
  • Expanded support for ambient modules.
  • Generation of both CommonJS and ESM modules.
  • Breaking changes to improve file naming conventions and folder structure.
  • The pre-generated NPM packages can be found on gjsify/types

Changelog

  • Add support to generate a package for each type we can publish on NPM, see #106
  • Add a new CLI option to generate NPM packages
  • Add a new CLI option to change the NPM package scope name
  • Documentation for the new CLI options
  • Generate a package.json for each package
  • One folder for each package
  • New example
  • Add dependencies to each package.json
  • Package names in lower case
  • Separate package names for node-gtk types
  • Package directory and file names in lower case
  • Parse library versions
  • Add a README.md for each NPM package
  • Different README.md for node-gtk NPM packages
  • Add an test to CI
  • Fix tsconfig.alias.json
  • Add support for ambient modules
  • Documentation for ambient modules
  • Generate both CJS and ESM modules
  • Add node-gtk to the peer dependencies to the node-gtk NPM packages
  • Remove destination environment directory
  • Separate README.md for the main NPM packages (@gir/gjs and @gir/node-gtk)
  • Generate and publish the new NPM packages
  • Provide system and gettext as ESM, see #114
  • Include only desired types (instead of all existing ones)
  • Add repository and homepage to package.json
  • Updated Documentation for the new NPM packages
  • Move the GNOME Shell type definitions to a NPM package and make use of the new generated NPM packages
ts-for-gir - v3.0.0-beta.12

Published by JumpLink over 1 year ago

  • UTF-8 string pointers are handled as nullable now, see #108
  • Extract default GIR directories from XDG_DATA_DIRS environment variable, this fixes ts-for-gir on NixOS. See #107 by @samdroid-apps

Breaking Changes

  • More parameters and returned UTF-8 strings are nullable now, so maybe you need to update your code to check if the string is not null. Please give us feedback about this change