gnome-shell/js
Florian Müllner e8ee845e41 extensionSystem: Load extensions as modules
Continue the move to ESM by loading modules dynamically with
the standard import() expression, rather than by installing a
custom (legacy) importer.

This is a breaking change that affects all extensions, as they
now need to explicitly export the expected symbols.

As we are already breaking all extensions, take that opportunity
and remove support for the individual entry points: Using a
class with enable()/disable() methods has been the recommended
pattern for a long time, it is now the only entry point.

Instead of instantiating the class from an `init()` function,
the class must now be exported as default to be recognized.

Additionally, we no longer install an importer on the extension
object, so extensions that consist of more than one file MUST
import those files as modules now.

There will be a second breaking change for extensions when
gnome-shell's own code is ported to ESM, so most extension
developers will likely want to wait until the port is complete
before starting to port their extensions.

Based on a commit from Evan Welsh.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2795>
2023-07-06 18:41:29 +00:00
..
dbusServices dbusServices: Port to ESM 2023-06-21 13:26:42 +02:00
gdm js: Fix linting errors from line shifts 2023-06-21 04:50:33 -07:00
misc js: Fix linting errors from line shifts 2023-06-21 04:50:33 -07:00
perf js: Split gi imports to be on new lines to prepare for ES modules 2023-06-21 04:50:33 -07:00
portalHelper portalHelper: Port to ESM 2023-06-21 13:26:42 +02:00
ui extensionSystem: Load extensions as modules 2023-07-06 18:41:29 +00:00
js-resources.gresource.xml tests/perf: Add test for shutdown with open window 2023-04-20 14:49:38 +02:00
meson.build
portal-resources.gresource.xml js/portal-resources: Add missing fileUtils to js path 2022-11-03 18:02:27 +00:00