From 5fbf4fdbd20da844e88b2231916c4c8f5130a26c Mon Sep 17 00:00:00 2001 From: Thomas Florio Date: Sun, 10 Mar 2024 22:59:04 +0100 Subject: [PATCH] Migrated from gi-types to girs --- package.json | 22 +- rollup.config.ts | 22 +- .../gnome-shell/misc/extensionUtils.d.ts | 6 +- .../types/gnome-shell/ui/messageTray.d.ts | 30 +- src/main/types/gnome-shell/ui/panel.d.ts | 6 +- src/main/types/gnome-shell/ui/panelMenu.d.ts | 6 +- src/main/typescript/client/Soup2HttpEngine.ts | 16 +- src/main/typescript/client/Soup3HttpEngine.ts | 19 +- src/main/typescript/core/GitHubManager.ts | 6 +- src/main/typescript/index.d.ts | 17 +- .../notifications/NotificationAdapter.ts | 18 +- .../notifications/NotificationController.ts | 4 +- .../notifications/actions/OpenAction.ts | 10 +- .../preferences/PreferencesController.ts | 95 +-- src/main/typescript/preferences/PrefsGroup.ts | 28 +- src/main/typescript/preferences/PrefsPage.ts | 22 +- src/main/typescript/preferences/PrefsRow.ts | 64 +- src/main/typescript/preferences/PrefsStack.ts | 48 +- src/main/typescript/preferences/SettingRow.ts | 54 +- src/main/typescript/prefs.ts | 16 +- .../typescript/settings/SettingsWrapper.ts | 12 +- .../typescript/utils/LimitedRetriableTimer.ts | 10 +- src/main/typescript/utils/Logger.ts | 10 +- src/main/typescript/utils/gnome.ts | 14 +- src/main/typescript/widget/GitHubWidget.ts | 34 +- .../typescript/widget/WidgetController.ts | 20 +- src/test/stubs/gi-types/clutter10.ts | 1 - src/test/stubs/gi-types/gio2.ts | 59 -- src/test/stubs/gi-types/glib2.ts | 44 -- src/test/stubs/gi-types/gobject2.ts | 5 - src/test/stubs/gi-types/gtk4.ts | 1 - src/test/stubs/gi-types/soup2.ts | 50 -- src/test/stubs/gi-types/soup3.ts | 37 - src/test/stubs/gi-types/st1.ts | 3 - src/test/stubs/girs/clutter-10.ts | 5 + src/test/stubs/girs/gio-2.0.ts | 56 ++ src/test/stubs/girs/glib-2.0.ts | 48 ++ src/test/stubs/girs/gobject-2.0.ts | 18 + src/test/stubs/girs/gtk-4.0.ts | 8 + src/test/stubs/girs/soup-2.4.ts | 54 ++ src/test/stubs/girs/soup-3.0.ts | 41 ++ src/test/stubs/girs/st-1.0.ts | 7 + .../stubs/gnome-shell/misc/extensionUtils.ts | 6 +- src/test/stubs/gnome-shell/ui/messageTray.ts | 6 +- src/test/stubs/gnome-shell/ui/panel.ts | 4 +- src/test/stubs/gnome-shell/ui/panelMenu.ts | 4 +- src/test/tsconfig.json | 2 +- .../notifications/NotificationAdapter.test.ts | 4 +- .../notifications/actions/OpenAction.test.ts | 6 +- .../settings/SettingsWrapper.test.ts | 8 +- src/test/typescript/utils/Logger.test.ts | 19 +- yarn.lock | 697 ++++++++++++------ 52 files changed, 1036 insertions(+), 766 deletions(-) delete mode 100644 src/test/stubs/gi-types/clutter10.ts delete mode 100644 src/test/stubs/gi-types/gio2.ts delete mode 100644 src/test/stubs/gi-types/glib2.ts delete mode 100644 src/test/stubs/gi-types/gobject2.ts delete mode 100644 src/test/stubs/gi-types/gtk4.ts delete mode 100644 src/test/stubs/gi-types/soup2.ts delete mode 100644 src/test/stubs/gi-types/soup3.ts delete mode 100644 src/test/stubs/gi-types/st1.ts create mode 100644 src/test/stubs/girs/clutter-10.ts create mode 100644 src/test/stubs/girs/gio-2.0.ts create mode 100644 src/test/stubs/girs/glib-2.0.ts create mode 100644 src/test/stubs/girs/gobject-2.0.ts create mode 100644 src/test/stubs/girs/gtk-4.0.ts create mode 100644 src/test/stubs/girs/soup-2.4.ts create mode 100644 src/test/stubs/girs/soup-3.0.ts create mode 100644 src/test/stubs/girs/st-1.0.ts diff --git a/package.json b/package.json index c4c81fb..d5b21ba 100644 --- a/package.json +++ b/package.json @@ -50,16 +50,16 @@ "typescript": "^4.8.4" }, "dependencies": { - "@gi-types/adw1": "^1.1.1", - "@gi-types/clutter10": "^10.0.1", - "@gi-types/gdk4": "^4.0.1", - "@gi-types/gdkpixbuf2": "^2.0.2", - "@gi-types/gio2": "^2.72.1", - "@gi-types/glib2": "^2.72.1", - "@gi-types/gobject2": "^2.72.1", - "@gi-types/gtk4": "^4.6.1", - "@gi-types/soup2": "^2.74.1", - "@gi-types/soup3": "^3.0.1", - "@gi-types/st1": "^1.0.1" + "@girs/adw-1": "^1.4.3-3.2.9", + "@girs/clutter-10": "^10.0.0-3.2.9", + "@girs/gdk-4.0": "^4.0.0-3.2.9", + "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.9", + "@girs/gio-2.0": "^2.78.0-3.2.9", + "@girs/glib-2.0": "^2.78.0-3.2.9", + "@girs/gobject-2.0": "^2.78.0-3.2.9", + "@girs/gtk-4.0": "^4.12.5-3.2.9", + "@girs/soup-2.4": "^2.74.3-3.2.9", + "@girs/soup-3.0": "^3.4.4-3.2.9", + "@girs/st-1.0": "^1.0.0-3.2.9" } } diff --git a/rollup.config.ts b/rollup.config.ts index 12d4e92..98617c4 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -24,17 +24,17 @@ const metadata: ExtensionMetadata = JSON.parse(data) as ExtensionMetadata; const globals = { // Dirty hack to make class that require Adwaita to work even in Gnome < 42 - '@gi-types/adw1': 'imports.gi.versions.Adw ? imports.gi.Adw : { ActionRow: imports.gi.Gtk.Widget }', - '@gi-types/clutter10': 'imports.gi.Clutter', - '@gi-types/gdk4': 'imports.gi.Gdk', - '@gi-types/gdkpixbuf2': 'imports.gi.GdkPixbuf', - '@gi-types/gio2': 'imports.gi.Gio', - '@gi-types/glib2': 'imports.gi.GLib', - '@gi-types/gobject2': 'imports.gi.GObject', - '@gi-types/gtk4': 'imports.gi.Gtk', - '@gi-types/soup2': 'imports.gi.Soup', - '@gi-types/soup3': 'imports.gi.Soup', - '@gi-types/st1': 'imports.gi.St', + '@girs/adw-1': 'imports.gi.versions.Adw ? imports.gi.Adw : { ActionRow: imports.gi.Gtk.Widget }', + '@girs/clutter-10': 'imports.gi.Clutter', + '@girs/gdk-4.0': 'imports.gi.Gdk', + '@girs/gdkpixbuf-2.0': 'imports.gi.GdkPixbuf', + '@girs/gio-2.0': 'imports.gi.Gio', + '@girs/glib-2.0': 'imports.gi.GLib', + '@girs/gobject-2.0': 'imports.gi.GObject', + '@girs/gtk-4.0': 'imports.gi.Gtk', + '@girs/soup-2.4': 'imports.gi.Soup', + '@girs/soup-3.0': 'imports.gi.Soup', + '@girs/st-1.0': 'imports.gi.St', '@gnome-shell/misc/extensionUtils': 'imports.misc.extensionUtils', '@gnome-shell/ui': 'imports.ui', '@gnome-shell/ui/panel': 'imports.ui.panel', diff --git a/src/main/types/gnome-shell/misc/extensionUtils.d.ts b/src/main/types/gnome-shell/misc/extensionUtils.d.ts index 8eb1a5b..878c2e0 100644 --- a/src/main/types/gnome-shell/misc/extensionUtils.d.ts +++ b/src/main/types/gnome-shell/misc/extensionUtils.d.ts @@ -1,4 +1,4 @@ -import { File, Settings } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; export interface ExtensionMetadata { uuid: string; @@ -15,7 +15,7 @@ export interface Extension { metadata: ExtensionMetadata; uuid: string; type: number; - dir: File; + dir: Gio.File; path: string; error: string; hasPrefs: boolean; @@ -27,4 +27,4 @@ export interface Extension { export function initTranslations(domain: string): void; export function openPrefs(): void; export function getCurrentExtension(): Extension; -export function getSettings(name?: string): Settings; +export function getSettings(name?: string): Gio.Settings; diff --git a/src/main/types/gnome-shell/ui/messageTray.d.ts b/src/main/types/gnome-shell/ui/messageTray.d.ts index 500ce3d..f563c86 100644 --- a/src/main/types/gnome-shell/ui/messageTray.d.ts +++ b/src/main/types/gnome-shell/ui/messageTray.d.ts @@ -1,20 +1,20 @@ -import { Actor } from '@gi-types/clutter10'; -import { Icon } from '@gi-types/gio2'; -import { DateTime } from '@gi-types/glib2'; -import { Object as GObject } from '@gi-types/gobject2'; -import { Button, Widget } from '@gi-types/st1'; +import Clutter from '@girs/clutter-10'; +import Gio from '@girs/gio-2.0'; +import GLib from '@girs/glib-2.0'; +import GObject from '@girs/gobject-2.0'; +import St from '@girs/st-1.0'; export interface NotificationProperties { - gicon: Icon; - secondaryGIcon: Icon; + gicon: Gio.Icon; + secondaryGIcon: Gio.Icon; bannerMarkup: boolean; clear: boolean; - datetime: DateTime; + datetime: GLib.DateTime; soundName: string; soundFile: string; } -export class Notification extends GObject { +export class Notification extends GObject.Object { public constructor(source: Source, title: string, banner: string, params?: Partial); public title: string; @@ -33,18 +33,18 @@ export class Notification extends GObject { // NotificationBanner actually extends Calendar.NotificationMessage but it's not needed for this project export class NotificationBanner { - public addButton(button: Button, callback: () => void): Button; - public addAction(label: string, callback: () => void): Button; + public addButton(button: St.Button, callback: () => void): St.Button; + public addAction(label: string, callback: () => void): St.Button; } -export class Source extends GObject { +export class Source extends GObject.Object { public notifications: Notification[]; public constructor(title: string, iconName: string); public open(): void; public destroy(reson?: string): void; - public getIcon(): Icon; + public getIcon(): Gio.Icon; public showNotification(notification: Notification): void; public pushNotification(notification: Notification): void; @@ -56,7 +56,7 @@ export class SystemNotificationSource extends Source { public constructor(); } -export interface MessageTray extends Widget { +export interface MessageTray extends St.Widget { add(source: Source): void; - contains(source: Source | Actor): boolean; + contains(source: Source | Clutter.Actor): boolean; } diff --git a/src/main/types/gnome-shell/ui/panel.d.ts b/src/main/types/gnome-shell/ui/panel.d.ts index da5ad8b..1b02611 100644 --- a/src/main/types/gnome-shell/ui/panel.d.ts +++ b/src/main/types/gnome-shell/ui/panel.d.ts @@ -1,9 +1,9 @@ -import { BoxLayout, Widget } from '@gi-types/st1'; +import St from '@girs/st-1.0'; import { Button } from './panelMenu'; -export interface Panel extends Widget { - _rightBox: BoxLayout; +export interface Panel extends St.Widget { + _rightBox: St.BoxLayout; addToStatusArea(role: string, indicator: Button, position?: number, box?: number): Button; } diff --git a/src/main/types/gnome-shell/ui/panelMenu.d.ts b/src/main/types/gnome-shell/ui/panelMenu.d.ts index 3ff6d6b..57eae70 100644 --- a/src/main/types/gnome-shell/ui/panelMenu.d.ts +++ b/src/main/types/gnome-shell/ui/panelMenu.d.ts @@ -1,8 +1,8 @@ -import { Widget } from '@gi-types/st1'; +import St from '@girs/st-1.0'; -export class ButtonBox extends Widget {} +export class ButtonBox extends St.Widget {} export class Button extends ButtonBox { public constructor(menuAlignment: number, nameText: string, dontCreateMenu: boolean); - public add_actor(widget: Widget): void; + public add_actor(widget: St.Widget): void; } diff --git a/src/main/typescript/client/Soup2HttpEngine.ts b/src/main/typescript/client/Soup2HttpEngine.ts index 94750a1..34fb57d 100644 --- a/src/main/typescript/client/Soup2HttpEngine.ts +++ b/src/main/typescript/client/Soup2HttpEngine.ts @@ -1,18 +1,18 @@ -import { MemoryUse, Message, Session, URI } from '@gi-types/soup2'; +import Soup from '@girs/soup-2.4'; import { HttpEngine, HttpRequest, HttpResponse } from './Http'; export class Soup2HttpEngine implements HttpEngine { - private readonly session: Session; + private readonly session: Soup.Session; public constructor(userAgent: string) { - this.session = new Session(); - this.session.user_agent = `${userAgent} via Soup2`; + this.session = new Soup.Session(); + this.session.userAgent = `${userAgent} via Soup2`; } public send(request: HttpRequest): Promise { - const soupUri = URI.new(request.url); - const message = new Message({ method: request.method, uri: soupUri }); + const soupUri = Soup.URI.new(request.url); + const message = new Soup.Message({ method: request.method, uri: soupUri }); // Set the headers request.headers.forEach((value: string, name: string) => message.requestHeaders.append(name, value)); @@ -20,12 +20,12 @@ export class Soup2HttpEngine implements HttpEngine { // Set the request body, if available if (request.body !== undefined) { const encoder = new TextEncoder(); - message.set_request(request.body.contentType, MemoryUse.COPY, encoder.encode(request.body.data)); + message.set_request(request.body.contentType, Soup.MemoryUse.COPY, encoder.encode(request.body.data)); } return new Promise((resolve, reject) => { try { - this.session.queue_message(message, (_: Session, msg: Message) => { + this.session.queue_message(message, (_: Soup.Session, msg: Soup.Message) => { const headers = new Map(); msg.requestHeaders.foreach((name, value) => headers.set(name, value)); diff --git a/src/main/typescript/client/Soup3HttpEngine.ts b/src/main/typescript/client/Soup3HttpEngine.ts index e4b7558..746e1a3 100644 --- a/src/main/typescript/client/Soup3HttpEngine.ts +++ b/src/main/typescript/client/Soup3HttpEngine.ts @@ -1,18 +1,18 @@ -import { Bytes, PRIORITY_DEFAULT, Uri } from '@gi-types/glib2'; -import { HTTP_URI_FLAGS, Message, Session } from '@gi-types/soup3'; +import GLib from '@girs/glib-2.0'; +import Soup from '@girs/soup-3.0'; import { HttpEngine, HttpRequest, HttpResponse } from './Http'; export class Soup3HttpEngine implements HttpEngine { - private readonly session: Session; + private readonly session: Soup.Session; public constructor(userAgent: string) { - this.session = new Session(); - this.session.user_agent = `${userAgent} via Soup3`; + this.session = new Soup.Session(); + this.session.userAgent = `${userAgent} via Soup3`; } public async send(request: HttpRequest): Promise { - const message = Message.new_from_uri(request.method, Uri.parse(request.url, HTTP_URI_FLAGS)); + const message = Soup.Message.new_from_uri(request.method, GLib.Uri.parse(request.url, Soup.HTTP_URI_FLAGS)); // Set the headers request.headers.forEach((value: string, name: string) => message.requestHeaders.append(name, value)); @@ -20,11 +20,14 @@ export class Soup3HttpEngine implements HttpEngine { // Set the request body, if available if (request.body !== undefined) { const encoder = new TextEncoder(); - message.set_request_body_from_bytes(request.body.contentType, new Bytes(encoder.encode(request.body.data))); + message.set_request_body_from_bytes( + request.body.contentType, + new GLib.Bytes(encoder.encode(request.body.data)) + ); } const responseBody: string = await this.session - .send_and_read_async(message, PRIORITY_DEFAULT, null) + .send_and_read_async(message, GLib.PRIORITY_DEFAULT, null) .then((bytes) => bytes.get_data() ?? new Uint8Array()) .then((data) => new TextDecoder('utf-8').decode(data)); diff --git a/src/main/typescript/core/GitHubManager.ts b/src/main/typescript/core/GitHubManager.ts index 0a9bbfc..5ac0df9 100644 --- a/src/main/typescript/core/GitHubManager.ts +++ b/src/main/typescript/core/GitHubManager.ts @@ -1,4 +1,4 @@ -import { Icon, icon_new_for_string } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { getCurrentExtension, getSettings } from '@gnome-shell/misc/extensionUtils'; import { NotificationController } from '@github-manager/notifications'; @@ -10,7 +10,7 @@ export class GitHubManager implements Disposable { @lazy private static readonly LOGGER: Logger = new Logger('core::GitHubManager'); - private readonly githubIcon: Icon; + private readonly githubIcon: Gio.Icon; private readonly eventDispatcher: EventDispatcher; @@ -23,7 +23,7 @@ export class GitHubManager implements Disposable { public constructor() { GitHubManager.LOGGER.trace('Building and wiring components'); - this.githubIcon = icon_new_for_string(`${getCurrentExtension().path}/github.svg`); + this.githubIcon = Gio.icon_new_for_string(`${getCurrentExtension().path}/github.svg`); this.eventDispatcher = new EventDispatcher(); this.settings = new SettingsWrapper(getSettings(), this.eventDispatcher); diff --git a/src/main/typescript/index.d.ts b/src/main/typescript/index.d.ts index 90bd28e..36e361f 100644 --- a/src/main/typescript/index.d.ts +++ b/src/main/typescript/index.d.ts @@ -1,3 +1,5 @@ +import GObject from '@girs/gobject-2.0'; + export {}; declare global { @@ -15,18 +17,3 @@ declare global { export function log(message: string): void; export function logError(e: unknown, message: string): void; } - -declare module '@gi-types/gobject2' { - export interface MetaInfo { - GTypeName: string; - GTypeFlags?: TypeFlags; - Implements?: { $gtype: GType }[]; - Properties?: Record; - Signals?: Record; - Requires?: { $gtype: GType }[]; - CssName?: string; - Template?: string; - Children?: string[]; - InternalChildren?: string[]; - } -} diff --git a/src/main/typescript/notifications/NotificationAdapter.ts b/src/main/typescript/notifications/NotificationAdapter.ts index da73b36..fda5a52 100644 --- a/src/main/typescript/notifications/NotificationAdapter.ts +++ b/src/main/typescript/notifications/NotificationAdapter.ts @@ -1,4 +1,4 @@ -import { Icon, icon_new_for_string } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { Source, Notification as UINotification } from '@gnome-shell/ui/messageTray'; import { GitHub } from '@github-manager/client'; @@ -10,15 +10,15 @@ import { NotificationAction } from './actions/NotificationAction'; @registerGObject class DigestSource extends Source { - private readonly icon: Icon; + private readonly icon: Gio.Icon; - public constructor(icon: Icon) { + public constructor(icon: Gio.Icon) { super('Github Notifications', ''); this.icon = icon; } - public getIcon(): Icon { + public getIcon(): Gio.Icon { return this.icon; } @@ -30,7 +30,7 @@ class DigestSource extends Source { @registerGObject class ProjectSource extends Source { private readonly avatarUrl: string; - private icon?: Icon; + private icon?: Gio.Icon; public constructor(projectName: string, avatarUrl: string) { super(projectName, ''); @@ -38,9 +38,9 @@ class ProjectSource extends Source { this.avatarUrl = avatarUrl; } - public getIcon(): Icon { + public getIcon(): Gio.Icon { if (this.icon === undefined) { - this.icon = icon_new_for_string(this.avatarUrl); + this.icon = Gio.icon_new_for_string(this.avatarUrl); } return this.icon; @@ -60,11 +60,11 @@ export class NotificationAdapter { private _secondaryAction?: NotificationAction; - private readonly digestIcon: Icon; + private readonly digestIcon: Gio.Icon; public constructor( notificationMode: NotificationMode, - digestIcon: Icon, + digestIcon: Gio.Icon, activateAction?: NotificationAction, primaryAction?: NotificationAction, secondaryAction?: NotificationAction diff --git a/src/main/typescript/notifications/NotificationController.ts b/src/main/typescript/notifications/NotificationController.ts index d87e066..6d0c908 100644 --- a/src/main/typescript/notifications/NotificationController.ts +++ b/src/main/typescript/notifications/NotificationController.ts @@ -1,4 +1,4 @@ -import { Icon } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { main as ShellUI } from '@gnome-shell/ui'; import { Notification } from '@gnome-shell/ui/messageTray'; @@ -25,7 +25,7 @@ export class NotificationController { private notifications: GitHub.Thread[]; - public constructor(settings: SettingsWrapper, eventDispatcher: EventDispatcher, gitHubIcon: Icon) { + public constructor(settings: SettingsWrapper, eventDispatcher: EventDispatcher, gitHubIcon: Gio.Icon) { this.settings = settings; this.eventDispatcher = eventDispatcher; diff --git a/src/main/typescript/notifications/actions/OpenAction.ts b/src/main/typescript/notifications/actions/OpenAction.ts index b2add2e..2912da0 100644 --- a/src/main/typescript/notifications/actions/OpenAction.ts +++ b/src/main/typescript/notifications/actions/OpenAction.ts @@ -1,5 +1,5 @@ -import { CURRENT_TIME } from '@gi-types/clutter10'; -import { show_uri } from '@gi-types/gtk4'; +import Clutter from '@girs/clutter-10'; +import Gtk from '@girs/gtk-4.0'; import { ApiError, GitHub, GitHubClient } from '@github-manager/client'; import { EventDispatcher, Logger, lazy } from '@github-manager/utils'; @@ -31,13 +31,13 @@ export class OpenAction implements NotificationAction { } // No specific notification selected, action on a digest notification - show_uri(null, `https://${this.gitHubClient.domain}/notifications`, CURRENT_TIME); + Gtk.show_uri(null, `https://${this.gitHubClient.domain}/notifications`, Clutter.CURRENT_TIME); } private openSingle(notification: GitHub.Thread): void { void Promise.resolve() .then(() => this.gitHubClient.getWebUrlForSubject(notification.subject)) - .then((url) => show_uri(null, url, CURRENT_TIME)) + .then((url) => Gtk.show_uri(null, url, Clutter.CURRENT_TIME)) .then(() => this.eventDispatcher.emit('notificationRead', notification.id)) .catch((error) => { if (error instanceof ApiError) { @@ -53,7 +53,7 @@ export class OpenAction implements NotificationAction { } // Fallback opening the notifications page - show_uri(null, `https://${this.gitHubClient.domain}/notifications`, CURRENT_TIME); + Gtk.show_uri(null, `https://${this.gitHubClient.domain}/notifications`, Clutter.CURRENT_TIME); }); } } diff --git a/src/main/typescript/preferences/PreferencesController.ts b/src/main/typescript/preferences/PreferencesController.ts index b56cb0d..347f072 100644 --- a/src/main/typescript/preferences/PreferencesController.ts +++ b/src/main/typescript/preferences/PreferencesController.ts @@ -1,26 +1,7 @@ -import { CURRENT_TIME } from '@gi-types/gdk4'; -import { Pixbuf } from '@gi-types/gdkpixbuf2'; -import { ActionGroup, File, Settings, SettingsBindFlags, SimpleAction, SimpleActionGroup } from '@gi-types/gio2'; -import { - AboutDialog, - Align, - ButtonsType, - DropDown, - Entry, - HeaderBar, - Image, - License, - MessageDialog, - MessageType, - PasswordEntry, - ResponseType, - SpinButton, - StringList, - Switch, - Widget, - Window, - show_uri, -} from '@gi-types/gtk4'; +import Gdk from '@girs/gdk-4.0'; +import Pixbuf from '@girs/gdkpixbuf-2.0'; +import Gio from '@girs/gio-2.0'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension, getSettings } from '@gnome-shell/misc/extensionUtils'; import { Logger } from '@github-manager/utils'; @@ -46,42 +27,42 @@ interface ExtensionInfo { translators: Record; } -export function createAndBindWidget(widgetType: string, _widgetParameters: string, settingKey?: string): Widget { - let widget: Widget, bindProperty: string; +export function createAndBindWidget(widgetType: string, _widgetParameters: string, settingKey?: string): Gtk.Widget { + let widget: Gtk.Widget, bindProperty: string; if (widgetType === 'GtkPasswordEntry') { - widget = new PasswordEntry({ showPeekIcon: true }); + widget = new Gtk.PasswordEntry({ showPeekIcon: true }); bindProperty = 'text'; } else if (widgetType === 'GtkSwitch') { - widget = new Switch({ halign: Align.END }); + widget = new Gtk.Switch({ halign: Gtk.Align.END }); bindProperty = 'state'; } else if (widgetType === 'GtkSpinButton') { const params = JSON.parse(_widgetParameters) as Partial; - widget = SpinButton.new_with_range(params.min ?? 0, params.max ?? 100, params.step ?? 1); + widget = Gtk.SpinButton.new_with_range(params.min ?? 0, params.max ?? 100, params.step ?? 1); bindProperty = 'value'; } else if (widgetType === 'GtkDropDown') { const params = JSON.parse(_widgetParameters) as Partial; - widget = new DropDown({ model: StringList.new(params.items ?? []) }); + widget = new Gtk.DropDown({ model: Gtk.StringList.new(params.items ?? []) }); bindProperty = 'selected'; } else { - widget = new Entry(); + widget = new Gtk.Entry(); bindProperty = 'text'; } // Align the widget - widget.set_valign(Align.CENTER); + widget.set_valign(Gtk.Align.CENTER); widget.set_hexpand(true); widget.set_vexpand(false); if (settingKey !== undefined && settingKey !== '') { - getSettings().bind(settingKey, widget, bindProperty, SettingsBindFlags.DEFAULT); + getSettings().bind(settingKey, widget, bindProperty, Gio.SettingsBindFlags.DEFAULT); } return widget; } -export function buildActionGroupFor(dialog: Window): ActionGroup { - const actionGroup = new SimpleActionGroup(); +export function buildActionGroupFor(dialog: Gtk.Window): Gio.ActionGroup { + const actionGroup = new Gio.SimpleActionGroup(); const baseUrl = extension.metadata.url; addActionToGroup(actionGroup, 'resetToDefault', () => resetToDefault(dialog)); @@ -96,7 +77,7 @@ export function buildActionGroupFor(dialog: Window): ActionGroup { return actionGroup; } -export function addMenuButton(header: HeaderBar, menu: Widget): void { +export function addMenuButton(header: Gtk.HeaderBar, menu: Gtk.Widget): void { try { // Try to set the menu button according to the title bar setting const buttonLayout = getSettings('org.gnome.desktop.wm.preferences').get_string('button-layout'); @@ -111,29 +92,29 @@ export function addMenuButton(header: HeaderBar, menu: Widget): void { } } -function addActionToGroup(actionGroup: SimpleActionGroup, name: string, callback: () => void): void { - const action = new SimpleAction({ name: name }); +function addActionToGroup(actionGroup: Gio.SimpleActionGroup, name: string, callback: () => void): void { + const action = new Gio.SimpleAction({ name: name }); action.connect('activate', callback); actionGroup.add_action(action); } -function resetToDefault(dialog: Window): void { - const confirmation: MessageDialog = new MessageDialog({ +function resetToDefault(dialog: Gtk.Window): void { + const confirmation: Gtk.MessageDialog = new Gtk.MessageDialog({ transientFor: dialog, - buttons: ButtonsType.YES_NO, - messageType: MessageType.QUESTION, + buttons: Gtk.ButtonsType.YES_NO, + messageType: Gtk.MessageType.QUESTION, modal: true, - destroy_with_parent: true, + destroyWithParent: true, text: _('Are you sure you want to reset all settings?'), secondaryText: _('All the customizations made will be lost. This operation cannot be undone.'), }); - confirmation.get_widget_for_response(ResponseType.YES)?.add_css_class('destructive-action'); - confirmation.set_default_response(ResponseType.NO); + confirmation.get_widget_for_response(Gtk.ResponseType.YES)?.add_css_class('destructive-action'); + confirmation.set_default_response(Gtk.ResponseType.NO); - confirmation.connect('response', (_source, response) => { - if (response === ResponseType.YES) { - const settings: Settings = getSettings(); + confirmation.connect('response', (_source: Gtk.MessageDialog, response: number) => { + if (response === Gtk.ResponseType.YES) { + const settings: Gio.Settings = getSettings(); settings.list_keys().forEach((key) => { const defaultValue = settings.get_default_value(key); if (defaultValue !== null) { @@ -148,15 +129,15 @@ function resetToDefault(dialog: Window): void { confirmation.present(); } -function about(dialog: Window): void { +function about(dialog: Gtk.Window): void { try { - const githubIcon = Pixbuf.new_from_file_at_scale(`${extension.path}/github.svg`, -1, 128, true); - const paintableLogo = Image.new_from_pixbuf(githubIcon).get_paintable(); + const githubIcon = Pixbuf.Pixbuf.new_from_file_at_scale(`${extension.path}/github.svg`, -1, 128, true); + const paintableLogo = Gtk.Image.new_from_pixbuf(githubIcon).get_paintable(); const extensionInfo = getAdditionalExtensionInfo('extension-info.json'); const translatorsMap = new Map(Object.entries(extensionInfo.translators)); - const aboutDialog = new AboutDialog({ + const aboutDialog = new Gtk.AboutDialog({ transientFor: dialog, modal: true, authors: extensionInfo.authors, @@ -169,9 +150,9 @@ function about(dialog: Window): void { translatorCredits: Array.from(translatorsMap.entries()) .map(([lang, translators]) => `${lang}:\n\t${translators.join('\n\t')}`) .join('\n\n'), - licenseType: License.GPL_2_0, + licenseType: Gtk.License.GPL_2_0, website: extension.metadata.url, - website_label: _('Source code on GitHub'), + websiteLabel: _('Source code on GitHub'), }); if (paintableLogo !== null) { @@ -181,7 +162,7 @@ function about(dialog: Window): void { aboutDialog.set_system_information(null); const titleBar = aboutDialog.get_titlebar(); - if (titleBar instanceof HeaderBar) { + if (titleBar instanceof Gtk.HeaderBar) { titleBar.get_title_widget()?.set_visible(true); } @@ -192,7 +173,7 @@ function about(dialog: Window): void { } function getAdditionalExtensionInfo(filename: string): ExtensionInfo { - const [success, bytes] = File.new_for_path(`${extension.path}/${filename}`).load_contents(null); + const [success, bytes] = Gio.File.new_for_path(`${extension.path}/${filename}`).load_contents(null); if (!success) { throw new Error('Unable to correcly load extension-info.json'); } @@ -200,6 +181,6 @@ function getAdditionalExtensionInfo(filename: string): ExtensionInfo { return JSON.parse(new TextDecoder('utf-8').decode(bytes.buffer)) as ExtensionInfo; } -function openUrl(url: string, dialog: Window): void { - show_uri(dialog, url, CURRENT_TIME); +function openUrl(url: string, dialog: Gtk.Window): void { + Gtk.show_uri(dialog, url, Gdk.CURRENT_TIME); } diff --git a/src/main/typescript/preferences/PrefsGroup.ts b/src/main/typescript/preferences/PrefsGroup.ts index ad4d757..c09ecea 100644 --- a/src/main/typescript/preferences/PrefsGroup.ts +++ b/src/main/typescript/preferences/PrefsGroup.ts @@ -1,36 +1,36 @@ -import { File } from '@gi-types/gio2'; -import { Object as GObject, MetaInfo, ParamFlags, ParamSpec } from '@gi-types/gobject2'; -import { Box, Buildable, Builder, ListBox, Widget } from '@gi-types/gtk4'; +import Gio from '@girs/gio-2.0'; +import GObject from '@girs/gobject-2.0'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; import { PrefsRow } from './PrefsRow'; -export interface PrefsGroupConstructorProperties extends Box.ConstructorProperties { +export interface PrefsGroupConstructorProperties extends Gtk.Box.ConstructorProperties { label: string; } @registerGObject -export class PrefsGroup extends Box { - public static readonly metaInfo: MetaInfo = { +export class PrefsGroup extends Gtk.Box { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'PrefsGroup', - Template: File.new_for_path(`${getCurrentExtension().path}/ui/PrefsGroup.ui`).get_uri(), + Template: Gio.File.new_for_path(`${getCurrentExtension().path}/ui/PrefsGroup.ui`).get_uri() ?? undefined, Properties: { - label: ParamSpec.string( + label: GObject.ParamSpec.string( 'label', 'Label', 'Label display for the input widget of this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), }, InternalChildren: ['rows'], - Implements: [Buildable], + Implements: [Gtk.Buildable], }; private _label: string; - private _rows?: ListBox; + private _rows?: Gtk.ListBox; private prefsRows: PrefsRow[]; public constructor(params?: Partial) { @@ -40,10 +40,10 @@ export class PrefsGroup extends Box { this._label = params?.label ?? ''; } - public vfunc_add_child(builder: Builder, child: GObject, type?: string | null | undefined): void { + public vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type: string | null): void { if (child instanceof PrefsRow) { this.appendRow(child); - } else if (child instanceof Widget) { + } else if (child instanceof Gtk.Widget) { super.append(child); } else { super.vfunc_add_child(builder, child, type); diff --git a/src/main/typescript/preferences/PrefsPage.ts b/src/main/typescript/preferences/PrefsPage.ts index 86e49b8..b70f71d 100644 --- a/src/main/typescript/preferences/PrefsPage.ts +++ b/src/main/typescript/preferences/PrefsPage.ts @@ -1,29 +1,29 @@ -import { File } from '@gi-types/gio2'; -import { MetaInfo, ParamFlags, ParamSpec } from '@gi-types/gobject2'; -import { Box, Buildable } from '@gi-types/gtk4'; +import Gio from '@girs/gio-2.0'; +import GObject from '@girs/gobject-2.0'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; -export interface PrefsPageConstructorProperties extends Box.ConstructorProperties { +export interface PrefsPageConstructorProperties extends Gtk.Box.ConstructorProperties { label: string; } @registerGObject -export class PrefsPage extends Box { - public static readonly metaInfo: MetaInfo = { +export class PrefsPage extends Gtk.Box { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'PrefsPage', - Template: File.new_for_path(`${getCurrentExtension().path}/ui/PrefsPage.ui`).get_uri(), + Template: Gio.File.new_for_path(`${getCurrentExtension().path}/ui/PrefsPage.ui`).get_uri() ?? undefined, Properties: { - label: ParamSpec.string( + label: GObject.ParamSpec.string( 'label', 'Label', 'Label display for the input widget of this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), }, - Implements: [Buildable], + Implements: [Gtk.Buildable], }; private _label: string; diff --git a/src/main/typescript/preferences/PrefsRow.ts b/src/main/typescript/preferences/PrefsRow.ts index 50198f1..2ad2afd 100644 --- a/src/main/typescript/preferences/PrefsRow.ts +++ b/src/main/typescript/preferences/PrefsRow.ts @@ -1,76 +1,76 @@ -import { File } from '@gi-types/gio2'; -import { MetaInfo, ParamFlags, ParamSpec } from '@gi-types/gobject2'; -import { Box, Widget } from '@gi-types/gtk4'; +import Gio from '@girs/gio-2.0'; +import GObject from '@girs/gobject-2.0'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; import * as PreferencesController from './PreferencesController'; -export interface PrefsRowConstructorProperties extends Box.ConstructorProperties { +export interface PrefsRowConstructorProperties extends Gtk.Box.ConstructorProperties { label: string; description: string; widgetType: string; widgetParameters: string; setting: string; - prefix: Widget; - suffix: Widget; + prefix: Gtk.Widget; + suffix: Gtk.Widget; } @registerGObject -export class PrefsRow extends Box { - public static readonly metaInfo: MetaInfo = { +export class PrefsRow extends Gtk.Box { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'PrefsRow', - Template: File.new_for_path(`${getCurrentExtension().path}/ui/PrefsRow.ui`).get_uri(), + Template: Gio.File.new_for_path(`${getCurrentExtension().path}/ui/PrefsRow.ui`).get_uri() ?? undefined, Properties: { - label: ParamSpec.string( + label: GObject.ParamSpec.string( 'label', 'Label', 'Label for the input widget of this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), - description: ParamSpec.string( + description: GObject.ParamSpec.string( 'description', 'Description', 'Additional information on this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), - widgetType: ParamSpec.string( + widgetType: GObject.ParamSpec.string( 'widget-type', 'Type of widget', 'The widget to use to edit this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, 'GktEntry' ), - widgetParameters: ParamSpec.string( + widgetParameters: GObject.ParamSpec.string( 'widget-parameters', 'Widget parameters', 'Additional parameter to build the widget', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '{}' ), - setting: ParamSpec.string( + setting: GObject.ParamSpec.string( 'setting-key', 'The setting key', 'The key of the setting controlled by this pref', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), - prefix: ParamSpec.object( + prefix: GObject.ParamSpec.object( 'prefix', 'Prefix widget', 'Widget at the beginning of the prefs row', - ParamFlags.READWRITE, - Widget.$gtype + GObject.ParamFlags.READWRITE, + Gtk.Widget.$gtype ), - suffix: ParamSpec.object( + suffix: GObject.ParamSpec.object( 'suffix', 'Suffix widget', 'Widget at the end of the prefs row', - ParamFlags.READWRITE, - Widget.$gtype + GObject.ParamFlags.READWRITE, + Gtk.Widget.$gtype ), }, }; @@ -80,8 +80,8 @@ export class PrefsRow extends Box { private _widgetType: string; private _widgetParameters: string; private _settingKey: string; - private _prefix?: Widget; - private _suffix?: Widget; + private _prefix?: Gtk.Widget; + private _suffix?: Gtk.Widget; public constructor(params?: Partial) { super(params); @@ -180,11 +180,11 @@ export class PrefsRow extends Box { this.notify('setting-key'); } - public get prefix(): Widget | undefined { + public get prefix(): Gtk.Widget | undefined { return this._prefix; } - public set prefix(value: Widget | undefined) { + public set prefix(value: Gtk.Widget | undefined) { if (this._prefix === value) { return; } @@ -193,11 +193,11 @@ export class PrefsRow extends Box { this.notify('prefix'); } - public get suffix(): Widget | undefined { + public get suffix(): Gtk.Widget | undefined { return this._suffix; } - public set suffix(value: Widget | undefined) { + public set suffix(value: Gtk.Widget | undefined) { if (this._suffix === value) { return; } diff --git a/src/main/typescript/preferences/PrefsStack.ts b/src/main/typescript/preferences/PrefsStack.ts index 67d2278..803bc20 100644 --- a/src/main/typescript/preferences/PrefsStack.ts +++ b/src/main/typescript/preferences/PrefsStack.ts @@ -1,64 +1,52 @@ -import { File } from '@gi-types/gio2'; -import { Object as GObject, MetaInfo } from '@gi-types/gobject2'; -import { - Buildable, - Builder, - HeaderBar, - MenuButton, - ScrolledWindow, - Stack, - StackPage, - StackTransitionType, - Viewport, - Widget, - Window, -} from '@gi-types/gtk4'; +import Gio from '@girs/gio-2.0'; +import GObject from '@girs/gobject-2.0'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; import { Logger, lazy } from '@github-manager/utils'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; import * as PreferencesController from './PreferencesController'; import { PrefsPage } from './PrefsPage'; @registerGObject -export class PrefsStack extends Stack { +export class PrefsStack extends Gtk.Stack { @lazy private static readonly LOGGER: Logger = new Logger('ui::prefs::PrefsStack'); - public static metaInfo: MetaInfo = { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'PrefsStack', - Template: File.new_for_path(`${getCurrentExtension().path}/ui/PrefsStack.ui`).get_uri(), + Template: Gio.File.new_for_path(`${getCurrentExtension().path}/ui/PrefsStack.ui`).get_uri() ?? undefined, InternalChildren: ['header', 'primaryMenu'], - Implements: [Buildable], + Implements: [Gtk.Buildable], }; - private _header?: HeaderBar; + private _header?: Gtk.HeaderBar; - private _primaryMenu?: MenuButton; + private _primaryMenu?: Gtk.MenuButton; public constructor() { - super({ hexpand: true, vexpand: true, transitionType: StackTransitionType.SLIDE_LEFT_RIGHT }); + super({ hexpand: true, vexpand: true, transitionType: Gtk.StackTransitionType.SLIDE_LEFT_RIGHT }); } - public vfunc_add_child(builder: Builder, child: GObject, type?: string | null | undefined): void { + public vfunc_add_child(builder: Gtk.Builder, child: GObject.Object, type: string | null): void { if (child instanceof PrefsPage) { - const window = new ScrolledWindow({ + const window = new Gtk.ScrolledWindow({ canFocus: true, - child: new Viewport({ + child: new Gtk.Viewport({ scrollToFocus: true, child: child, }), }); super.add_titled(window, child.label, child.label); - } else if (child instanceof StackPage) { - if (child.title.length > 0) { + } else if (child instanceof Gtk.StackPage) { + if (child.title !== null && child.title.length > 0) { super.add_titled(child.child, child.name, child.title); } else { super.add_named(child.child, child.name); } - } else if (child instanceof Widget) { + } else if (child instanceof Gtk.Widget) { super.add_child(child); } else { super.vfunc_add_child(builder, child, type); @@ -74,7 +62,7 @@ export class PrefsStack extends Stack { } const dialog = this.get_root(); - if (dialog instanceof Window) { + if (dialog instanceof Gtk.Window) { dialog.set_titlebar(this._header); dialog.insert_action_group('actions', PreferencesController.buildActionGroupFor(dialog)); } else { diff --git a/src/main/typescript/preferences/SettingRow.ts b/src/main/typescript/preferences/SettingRow.ts index 3b5258d..21c203d 100644 --- a/src/main/typescript/preferences/SettingRow.ts +++ b/src/main/typescript/preferences/SettingRow.ts @@ -1,58 +1,58 @@ -import { ActionRow } from '@gi-types/adw1'; -import { MetaInfo, ParamFlags, ParamSpec } from '@gi-types/gobject2'; -import { Widget } from '@gi-types/gtk4'; +import Adw from '@girs/adw-1'; +import GObject from '@girs/gobject-2.0'; +import Gtk from '@girs/gtk-4.0'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; import * as PreferencesController from './PreferencesController'; -export interface SettingRowConstructorProperties extends ActionRow.ConstructorProperties { +export interface SettingRowConstructorProperties extends Adw.ActionRow.ConstructorProperties { widgetType: string; widgetParameters: string; setting: string; - prefix: Widget; - suffix: Widget; + prefix: Gtk.Widget; + suffix: Gtk.Widget; } @registerGObject -export class SettingRow extends ActionRow { - public static readonly metaInfo: MetaInfo = { +export class SettingRow extends Adw.ActionRow { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'SettingRow', Properties: { - widgetType: ParamSpec.string( + widgetType: GObject.ParamSpec.string( 'widget-type', 'Type of widget', 'The widget to use to edit this setting', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, 'GktEntry' ), - widgetParameters: ParamSpec.string( + widgetParameters: GObject.ParamSpec.string( 'widget-parameters', 'Widget parameters', 'Additional parameter to build the widget', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '{}' ), - setting: ParamSpec.string( + setting: GObject.ParamSpec.string( 'setting-key', 'The setting key', 'The key of the setting controlled by this widget', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, '' ), - prefix: ParamSpec.object( + prefix: GObject.ParamSpec.object( 'prefix', 'Prefix widget', 'Widget at the beginning of the setting row', - ParamFlags.READWRITE, - Widget.$gtype + GObject.ParamFlags.READWRITE, + Gtk.Widget.$gtype ), - suffix: ParamSpec.object( + suffix: GObject.ParamSpec.object( 'suffix', 'Suffix widget', 'Widget at the end of the setting row', - ParamFlags.READWRITE, - Widget.$gtype + GObject.ParamFlags.READWRITE, + Gtk.Widget.$gtype ), }, }; @@ -60,8 +60,8 @@ export class SettingRow extends ActionRow { private _widgetType: string; private _widgetParameters: string; private _settingKey: string; - private _prefix?: Widget; - private _suffix?: Widget; + private _prefix?: Gtk.Widget; + private _suffix?: Gtk.Widget; public constructor(params?: Partial) { super(params); @@ -133,11 +133,11 @@ export class SettingRow extends ActionRow { this.notify('setting-key'); } - public get prefix(): Widget | undefined { + public get prefix(): Gtk.Widget | undefined { return this._prefix; } - public set prefix(value: Widget | undefined) { + public set prefix(value: Gtk.Widget | undefined) { if (this._prefix === value) { return; } @@ -146,11 +146,11 @@ export class SettingRow extends ActionRow { this.notify('prefix'); } - public get suffix(): Widget | undefined { + public get suffix(): Gtk.Widget | undefined { return this._suffix; } - public set suffix(value: Widget | undefined) { + public set suffix(value: Gtk.Widget | undefined) { if (this._suffix === value) { return; } diff --git a/src/main/typescript/prefs.ts b/src/main/typescript/prefs.ts index 6cfa016..fb0cf64 100644 --- a/src/main/typescript/prefs.ts +++ b/src/main/typescript/prefs.ts @@ -1,5 +1,5 @@ -import { PreferencesPage, PreferencesWindow } from '@gi-types/adw1'; -import { Builder, HeaderBar } from '@gi-types/gtk4'; +import Adw from '@girs/adw-1'; +import Gtk from '@girs/gtk-4.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; import { PreferencesController, PrefsStack } from '@github-manager/preferences'; @@ -21,13 +21,13 @@ export default { } }, - fillPreferencesWindow: (window: PreferencesWindow) => { - const builder = new Builder(); + fillPreferencesWindow: (window: Adw.PreferencesWindow) => { + const builder = new Gtk.Builder(); builder.set_translation_domain(`${getCurrentExtension().metadata.uuid}`); builder.add_from_file(`${getCurrentExtension().path}/ui/AdwPreferences.ui`); - const generalPage: PreferencesPage = builder.get_object('general'); - const notificationsPage: PreferencesPage = builder.get_object('notifications'); + const generalPage: Adw.PreferencesPage = builder.get_object('general') as Adw.PreferencesPage; + const notificationsPage: Adw.PreferencesPage = builder.get_object('notifications') as Adw.PreferencesPage; window.add(generalPage); window.add(notificationsPage); @@ -39,8 +39,8 @@ export default { ?.get_parent() ?.get_parent() // GtkStack ?.get_parent() // GtkBox - ?.get_first_child() as HeaderBar; + ?.get_first_child() as Gtk.HeaderBar; - PreferencesController.addMenuButton(header, builder.get_object('primaryMenu')); + PreferencesController.addMenuButton(header, builder.get_object('primaryMenu') as Gtk.Widget); }, }; diff --git a/src/main/typescript/settings/SettingsWrapper.ts b/src/main/typescript/settings/SettingsWrapper.ts index 346097c..9e19f41 100644 --- a/src/main/typescript/settings/SettingsWrapper.ts +++ b/src/main/typescript/settings/SettingsWrapper.ts @@ -1,4 +1,4 @@ -import { Settings } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { Disposable, EventDispatcher } from '@github-manager/utils'; @@ -9,9 +9,9 @@ export class SettingsWrapper implements Disposable { private readonly eventDispatcher: EventDispatcher; - private readonly settings: Settings; + private readonly settings: Gio.Settings; - public constructor(settings: Settings, eventDispatcher: EventDispatcher) { + public constructor(settings: Gio.Settings, eventDispatcher: EventDispatcher) { this.settings = settings; this.eventDispatcher = eventDispatcher; @@ -24,11 +24,11 @@ export class SettingsWrapper implements Disposable { } public get domain(): string { - return this.settings.get_string('domain'); + return this.settings.get_string('domain') ?? 'github.com'; } public get token(): string { - return this.settings.get_string('token'); + return this.settings.get_string('token') ?? ''; } public get hideNotificationCount(): boolean { @@ -63,7 +63,7 @@ export class SettingsWrapper implements Disposable { return SettingsWrapper.mapIntToEnum(storedValue, NotificationActionType, NotificationActionType.NONE); } - private onChange(source: Settings, key: string): void { + private onChange(source: Gio.Settings, key: string): void { if (this.settings !== source) { return; } diff --git a/src/main/typescript/utils/LimitedRetriableTimer.ts b/src/main/typescript/utils/LimitedRetriableTimer.ts index 63607c9..274d4dd 100644 --- a/src/main/typescript/utils/LimitedRetriableTimer.ts +++ b/src/main/typescript/utils/LimitedRetriableTimer.ts @@ -1,4 +1,4 @@ -import { PRIORITY_DEFAULT, source_remove, timeout_add_seconds } from '@gi-types/glib2'; +import GLib from '@girs/glib-2.0'; import { Logger } from './Logger'; import { lazy } from './utilities'; @@ -49,7 +49,7 @@ export class LimitedRetriableTimer { this.runTaskAndSchedule(); } else { // Otherwise schedule the first execution - this.timerHandle = timeout_add_seconds(PRIORITY_DEFAULT, initialDelay, () => { + this.timerHandle = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, initialDelay, () => { this.runTaskAndSchedule(); return false; }); @@ -62,7 +62,7 @@ export class LimitedRetriableTimer { } LimitedRetriableTimer.LOGGER.debug('Timer is stopped'); - source_remove(this.timerHandle); + GLib.source_remove(this.timerHandle); this.timerHandle = undefined; this.retries = 0; } @@ -104,10 +104,10 @@ export class LimitedRetriableTimer { private scheduleNextRun(): void { if (this.timerHandle !== undefined) { - source_remove(this.timerHandle); + GLib.source_remove(this.timerHandle); } - this.timerHandle = timeout_add_seconds(PRIORITY_DEFAULT, this.currentInterval, () => { + this.timerHandle = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, this.currentInterval, () => { this.runTaskAndSchedule(); return false; }); diff --git a/src/main/typescript/utils/Logger.ts b/src/main/typescript/utils/Logger.ts index 5a86572..fd47c01 100644 --- a/src/main/typescript/utils/Logger.ts +++ b/src/main/typescript/utils/Logger.ts @@ -1,5 +1,5 @@ -import { File } from '@gi-types/gio2'; -import { get_user_data_dir } from '@gi-types/glib2'; +import Gio from '@girs/gio-2.0'; +import GLib from '@girs/glib-2.0'; import { getCurrentExtension } from '@gnome-shell/misc/extensionUtils'; import { formatString, readonlyMap, removeAfter as stripAfter } from './utilities'; @@ -28,14 +28,14 @@ export class Logger { public static initialize(): void { Logger.resetConfiguration(); - const configuration = File.new_for_path(`${get_user_data_dir()}/gnome-github-manager/logging.properties`); - if (!configuration.query_exists(null)) { + const config = Gio.File.new_for_path(`${GLib.get_user_data_dir()}/gnome-github-manager/logging.properties`); + if (!config.query_exists(null)) { // No configuration file, nothing to do return; } try { - const [success, bytes] = configuration.load_contents(null); + const [success, bytes] = config.load_contents(null); if (!success) { throw new Error('Loading data was not successfull'); } diff --git a/src/main/typescript/utils/gnome.ts b/src/main/typescript/utils/gnome.ts index b1d2d29..639e6d4 100644 --- a/src/main/typescript/utils/gnome.ts +++ b/src/main/typescript/utils/gnome.ts @@ -1,11 +1,17 @@ -import { MetaInfo, registerClass } from '@gi-types/gobject2'; +import GObject from '@girs/gobject-2.0'; import { Logger } from './Logger'; +export type GObjectMetaInfo = GObject.MetaInfo< + Record, + { $gtype: GObject.GType }[], + Record +>; + const LOGGER: Logger = new Logger('utils::GUtils'); interface BaseGObject { - metaInfo?: MetaInfo; + metaInfo?: GObjectMetaInfo; // eslint-disable-next-line @typescript-eslint/no-explicit-any new (...params: any[]): K; } @@ -22,9 +28,9 @@ export function registerGObject>(targ // This would be bad because we would inherit the GObjectName too, which is supposed to be unique. if (target.metaInfo !== undefined && Object.prototype.hasOwnProperty.call(target, 'metaInfo')) { LOGGER.debug('Registering GObject {0} with metaInfo', typeof target); - return registerClass(target.metaInfo, target) as unknown as typeof target; + return GObject.registerClass(target.metaInfo, target) as unknown as typeof target; } else { LOGGER.debug('Registering GObject {0} as standalone', typeof target); - return registerClass(target) as unknown as typeof target; + return GObject.registerClass(target) as unknown as typeof target; } } diff --git a/src/main/typescript/widget/GitHubWidget.ts b/src/main/typescript/widget/GitHubWidget.ts index 84b177b..2e79682 100644 --- a/src/main/typescript/widget/GitHubWidget.ts +++ b/src/main/typescript/widget/GitHubWidget.ts @@ -1,28 +1,28 @@ -import { ActorAlign } from '@gi-types/clutter10'; -import { Icon as GioIcon } from '@gi-types/gio2'; -import { MetaInfo, ParamFlags, ParamSpec } from '@gi-types/gobject2'; -import { BoxLayout, Icon, Label } from '@gi-types/st1'; +import Clutter from '@girs/clutter-10'; +import Gio from '@girs/gio-2.0'; +import GObject from '@girs/gobject-2.0'; +import St from '@girs/st-1.0'; -import { registerGObject } from '@github-manager/utils/gnome'; +import { GObjectMetaInfo, registerGObject } from '@github-manager/utils/gnome'; @registerGObject -export class GitHubWidget extends BoxLayout { - public static readonly metaInfo: MetaInfo = { +export class GitHubWidget extends St.BoxLayout { + public static readonly metaInfo: GObjectMetaInfo = { GTypeName: 'GitHubWidget', Properties: { - text: ParamSpec.string('text', 'Text', 'The text of the widget', ParamFlags.READWRITE, ''), - textVisible: ParamSpec.boolean( + text: GObject.ParamSpec.string('text', 'Text', 'The text of the widget', GObject.ParamFlags.READWRITE, ''), + textVisible: GObject.ParamSpec.boolean( 'text-visible', 'Text Visible', 'The visibility of the text next to the widget', - ParamFlags.READWRITE, + GObject.ParamFlags.READWRITE, true ), }, }; public get text(): string { - return this.label.text; + return this.label.text ?? ''; } public set text(value: string) { @@ -47,11 +47,11 @@ export class GitHubWidget extends BoxLayout { this.notify('text-visible'); } - private readonly icon: Icon; + private readonly icon: St.Icon; - private readonly label: Label; + private readonly label: St.Label; - public constructor(defaultIcon: GioIcon, initialText: string = '') { + public constructor(defaultIcon: Gio.Icon, initialText: string = '') { super({ styleClass: 'panel-button github-widget', reactive: true, @@ -60,15 +60,15 @@ export class GitHubWidget extends BoxLayout { visible: true, }); - this.icon = new Icon({ + this.icon = new St.Icon({ styleClass: 'system-status-icon widget-icon', gicon: defaultIcon, }); - this.label = new Label({ + this.label = new St.Label({ text: initialText, styleClass: 'system-status-icon widget-label', - yAlign: ActorAlign.CENTER, + yAlign: Clutter.ActorAlign.CENTER, yExpand: true, }); diff --git a/src/main/typescript/widget/WidgetController.ts b/src/main/typescript/widget/WidgetController.ts index 67cd6bd..6f290e7 100644 --- a/src/main/typescript/widget/WidgetController.ts +++ b/src/main/typescript/widget/WidgetController.ts @@ -1,7 +1,7 @@ -import { CURRENT_TIME } from '@gi-types/clutter10'; -import { BUTTON_PRIMARY, BUTTON_SECONDARY, ButtonEvent } from '@gi-types/gdk4'; -import { Icon as GioIcon } from '@gi-types/gio2'; -import { show_uri } from '@gi-types/gtk4'; +import Clutter from '@girs/clutter-10'; +import Gdk from '@girs/gdk-4.0'; +import Gio from '@girs/gio-2.0'; +import Gtk from '@girs/gtk-4.0'; import { openPrefs } from '@gnome-shell/misc/extensionUtils'; import { main as ShellUI } from '@gnome-shell/ui'; @@ -20,10 +20,10 @@ export class WidgetController implements Disposable { private readonly buttonPressId: number; - public constructor(settings: SettingsWrapper, eventDispatcher: EventDispatcher, githubIcon: GioIcon) { + public constructor(settings: SettingsWrapper, eventDispatcher: EventDispatcher, githubIcon: Gio.Icon) { this.settings = settings; this.widget = new GitHubWidget(githubIcon, '0'); - this.buttonPressId = this.widget.connect('button-press-event', (_: this, event: ButtonEvent) => + this.buttonPressId = this.widget.connect('button-press-event', (_: this, event: Gdk.ButtonEvent) => this.handleButtonPress(event) ); @@ -62,21 +62,21 @@ export class WidgetController implements Disposable { this.widget.text = text; } - private handleButtonPress(event: ButtonEvent): void { + private handleButtonPress(event: Gdk.ButtonEvent): void { switch (event.get_button()) { - case BUTTON_PRIMARY: + case Gdk.BUTTON_PRIMARY: try { let url = `https://${this.settings.domain}/notifications`; if (this.settings.showParticipatingOnly) { url = url.concat('/participating'); } - show_uri(null, url, CURRENT_TIME); + Gtk.show_uri(null, url, Clutter.CURRENT_TIME); } catch (e) { WidgetController.LOGGER.error('Cannot open uri', e); } break; - case BUTTON_SECONDARY: + case Gdk.BUTTON_SECONDARY: openPrefs(); break; } diff --git a/src/test/stubs/gi-types/clutter10.ts b/src/test/stubs/gi-types/clutter10.ts deleted file mode 100644 index 8ba5572..0000000 --- a/src/test/stubs/gi-types/clutter10.ts +++ /dev/null @@ -1 +0,0 @@ -export let CURRENT_TIME: number = new Date().getTime() \ No newline at end of file diff --git a/src/test/stubs/gi-types/gio2.ts b/src/test/stubs/gi-types/gio2.ts deleted file mode 100644 index 4dfb82b..0000000 --- a/src/test/stubs/gi-types/gio2.ts +++ /dev/null @@ -1,59 +0,0 @@ -export class File { - public static new_for_path(_path: string): File { - return new File(); - } - - public query_exists(_cancellable: unknown): boolean { - return false; - } - - public load_contents(_cancellable: unknown): [boolean, Uint8Array] { - return [false, new Uint8Array()]; - } -} - -export type SettingsCallback = (_source: Settings, key: string) => void; - -export class Settings { - private callback?: SettingsCallback; - - public connect(signal: string, callback: SettingsCallback): number { - if (signal === 'changed') { - this.callback = callback; - } - return 0; - } - - public disconnect(_id: number): void {} - - public get_string(_key: string): string { - return `value`; - } - - public get_boolean(_key: string): boolean { - return true; - } - - public get_int(_key: string): number { - return 1; - } - - public emit(signal: string, key: string): void { - if (signal === 'changed' && this.callback !== undefined) { - this.callback(this, key); - } - } -} - -export class IconPrototype { - public constructor() {} -} -export class Icon extends IconPrototype { - public constructor() { - super(); - } -} - -export function icon_new_for_string(_str: string): Icon { - return new Icon(); -} diff --git a/src/test/stubs/gi-types/glib2.ts b/src/test/stubs/gi-types/glib2.ts deleted file mode 100644 index 974d2f0..0000000 --- a/src/test/stubs/gi-types/glib2.ts +++ /dev/null @@ -1,44 +0,0 @@ -export function free(mem?: any | null): void {} - -export function get_user_data_dir(): string { - return '/user/data/dir'; -} - -const timersMap = new Map(); -let index: number = 0; - -export const PRIORITY_DEFAULT = 0; - -export function timeout_add_seconds(_priority: number, interval: number, task: () => boolean): number { - const currentIndex = index++; - const timeout = setTimeout(() => { - task(); - timersMap.delete(currentIndex); - }, interval * 1000); - timersMap.set(currentIndex, timeout); - return currentIndex; -} - -export function source_remove(handle: number): boolean { - const timer = timersMap.get(handle); - if (timer !== undefined) { - clearTimeout(timer); - timersMap.delete(handle); - } - - return false; -} - -export class Uri { - public static parse(_uri_string: string, _flags: number): Uri { - return new Uri(); - } -} - -export class Bytes { - public constructor(_data?: Uint8Array) {} - - public get_data(): Uint8Array { - return new Uint8Array(); - } -} diff --git a/src/test/stubs/gi-types/gobject2.ts b/src/test/stubs/gi-types/gobject2.ts deleted file mode 100644 index 37f58ad..0000000 --- a/src/test/stubs/gi-types/gobject2.ts +++ /dev/null @@ -1,5 +0,0 @@ -export class MetaInfo {} - -export function registerClass(_info: unknown, _klass: unknown = undefined): object { - return _klass ?? _info as object; -} diff --git a/src/test/stubs/gi-types/gtk4.ts b/src/test/stubs/gi-types/gtk4.ts deleted file mode 100644 index 566294b..0000000 --- a/src/test/stubs/gi-types/gtk4.ts +++ /dev/null @@ -1 +0,0 @@ -export function show_uri(parent: Window | null, uri: string, timestamp: number): void {} \ No newline at end of file diff --git a/src/test/stubs/gi-types/soup2.ts b/src/test/stubs/gi-types/soup2.ts deleted file mode 100644 index 424f5ce..0000000 --- a/src/test/stubs/gi-types/soup2.ts +++ /dev/null @@ -1,50 +0,0 @@ -export enum MemoryUse { - STATIC = 0, - TAKE = 1, - COPY = 2, - TEMPORARY = 3, -} - -export class URI { - public static new(_url: string): URI { - return new URI(); - } -} - -export class MessageHeaders { - public append(_name: string, _value: string): void {} - - public foreach(_func: (name: string, value: string) => void): void {} -} - -export class MessageBody { - public length: number; - public data: string; - - public constructor() { - this.length = 0; - this.data = ''; - } -} - -export class Message { - public requestHeaders: MessageHeaders; - - public statusCode: number; - - public responseBody: MessageBody; - - public constructor(_properties: unknown) { - this.requestHeaders = new MessageHeaders(); - this.statusCode = 0; - this.responseBody = new MessageBody(); - } - - public set_request(_content_type: string | null, _req_use: MemoryUse, _req_body?: Uint8Array | null): void {} -} - -export class Session { - public user_agent: string = 'stub-libsoup2'; - - public queue_message(_msg: Message, _callback?: unknown): void {} -} diff --git a/src/test/stubs/gi-types/soup3.ts b/src/test/stubs/gi-types/soup3.ts deleted file mode 100644 index d30e342..0000000 --- a/src/test/stubs/gi-types/soup3.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Bytes, Uri } from './glib2'; - -export const HTTP_URI_FLAGS = 0; - -export class MessageHeaders { - public append(_name: string, _value: string): void {} - - public foreach(_func: (name: string, value: string) => void): void {} -} - -export class Message { - public requestHeaders: MessageHeaders; - - public responseHeaders: MessageHeaders; - - public statusCode: number; - - public static new_from_uri(_method: string, _uri: Uri): Message { - return new Message(); - } - - public constructor() { - this.requestHeaders = new MessageHeaders(); - this.responseHeaders = new MessageHeaders(); - this.statusCode = 0; - } - - public set_request_body_from_bytes(_content_type?: string | null, _bytes?: Bytes | null): void {} -} - -export class Session { - public user_agent: string = 'stub-libsoup3'; - - public send_and_read_async(_msg: Message, _io_priority: number, _cancellable?: unknown): Promise { - return Promise.resolve(new Bytes()); - } -} diff --git a/src/test/stubs/gi-types/st1.ts b/src/test/stubs/gi-types/st1.ts deleted file mode 100644 index ef8f0e0..0000000 --- a/src/test/stubs/gi-types/st1.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class Widget {} - -export class BoxLayout {} \ No newline at end of file diff --git a/src/test/stubs/girs/clutter-10.ts b/src/test/stubs/girs/clutter-10.ts new file mode 100644 index 0000000..722f393 --- /dev/null +++ b/src/test/stubs/girs/clutter-10.ts @@ -0,0 +1,5 @@ +export namespace Clutter { + export let CURRENT_TIME: number = new Date().getTime(); +} + +export default Clutter; diff --git a/src/test/stubs/girs/gio-2.0.ts b/src/test/stubs/girs/gio-2.0.ts new file mode 100644 index 0000000..3b4ef1f --- /dev/null +++ b/src/test/stubs/girs/gio-2.0.ts @@ -0,0 +1,56 @@ +export namespace Gio { + export class File { + public static new_for_path(_path: string): File { + return new File(); + } + + public query_exists(_cancellable: unknown): boolean { + return false; + } + + public load_contents(_cancellable: unknown): [boolean, Uint8Array, string | null] { + return [false, new Uint8Array(), null]; + } + } + + export type SettingsCallback = (_source: Settings, key: string) => void; + + export class Settings { + private callback?: SettingsCallback; + + public connect(signal: string, callback: SettingsCallback): number { + if (signal === 'changed') { + this.callback = callback; + } + return 0; + } + + public disconnect(_id: number): void {} + + public get_string(_key: string): string { + return `value`; + } + + public get_boolean(_key: string): boolean { + return true; + } + + public get_int(_key: string): number { + return 1; + } + + public emit(signal: string, key: string): void { + if (signal === 'changed' && this.callback !== undefined) { + this.callback(this, key); + } + } + } + + export class Icon {} + + export function icon_new_for_string(_str: string): Icon { + return new Icon(); + } +} + +export default Gio; diff --git a/src/test/stubs/girs/glib-2.0.ts b/src/test/stubs/girs/glib-2.0.ts new file mode 100644 index 0000000..3939534 --- /dev/null +++ b/src/test/stubs/girs/glib-2.0.ts @@ -0,0 +1,48 @@ +export namespace GLib { + export function free(mem?: any | null): void {} + + export function get_user_data_dir(): string { + return '/user/data/dir'; + } + + const timersMap = new Map(); + let index: number = 0; + + export const PRIORITY_DEFAULT = 0; + + export function timeout_add_seconds(_priority: number, interval: number, task: () => boolean): number { + const currentIndex = index++; + const timeout = setTimeout(() => { + task(); + timersMap.delete(currentIndex); + }, interval * 1000); + timersMap.set(currentIndex, timeout); + return currentIndex; + } + + export function source_remove(handle: number): boolean { + const timer = timersMap.get(handle); + if (timer !== undefined) { + clearTimeout(timer); + timersMap.delete(handle); + } + + return false; + } + + export class Uri { + public static parse(_uri_string: string, _flags: number): Uri { + return new Uri(); + } + } + + export class Bytes { + public constructor(_data?: Uint8Array) {} + + public get_data(): Uint8Array { + return new Uint8Array(); + } + } +} + +export default GLib; \ No newline at end of file diff --git a/src/test/stubs/girs/gobject-2.0.ts b/src/test/stubs/girs/gobject-2.0.ts new file mode 100644 index 0000000..c9dfc4c --- /dev/null +++ b/src/test/stubs/girs/gobject-2.0.ts @@ -0,0 +1,18 @@ +export namespace GObject { + export class ParamSpec {} + + export class SignalDefinition {} + + export class MetaInfo {} + + export type GType = { + __type__(arg: never): T + name: string + } + + export function registerClass(_info: unknown, _klass: unknown = undefined): object { + return _klass ?? (_info as object); + } +} + +export default GObject; diff --git a/src/test/stubs/girs/gtk-4.0.ts b/src/test/stubs/girs/gtk-4.0.ts new file mode 100644 index 0000000..d7708c0 --- /dev/null +++ b/src/test/stubs/girs/gtk-4.0.ts @@ -0,0 +1,8 @@ +export namespace Gtk { + + export class Window {} + + export function show_uri(parent: Window | null, uri: string, timestamp: number): void {} +} + +export default Gtk; diff --git a/src/test/stubs/girs/soup-2.4.ts b/src/test/stubs/girs/soup-2.4.ts new file mode 100644 index 0000000..965016c --- /dev/null +++ b/src/test/stubs/girs/soup-2.4.ts @@ -0,0 +1,54 @@ +export namespace Soup { + export enum MemoryUse { + STATIC = 0, + TAKE = 1, + COPY = 2, + TEMPORARY = 3, + } + + export class URI { + public static new(_url: string): URI { + return new URI(); + } + } + + export class MessageHeaders { + public append(_name: string, _value: string): void {} + + public foreach(_func: (name: string, value: string) => void): void {} + } + + export class MessageBody { + public length: number; + public data: string; + + public constructor() { + this.length = 0; + this.data = ''; + } + } + + export class Message { + public requestHeaders: MessageHeaders; + + public statusCode: number; + + public responseBody: MessageBody; + + public constructor(_properties: unknown) { + this.requestHeaders = new MessageHeaders(); + this.statusCode = 0; + this.responseBody = new MessageBody(); + } + + public set_request(_content_type: string | null, _req_use: MemoryUse, _req_body?: Uint8Array | null): void {} + } + + export class Session { + public userAgent: string = 'stub-libsoup2'; + + public queue_message(_msg: Message, _callback?: unknown): void {} + } +} + +export default Soup; diff --git a/src/test/stubs/girs/soup-3.0.ts b/src/test/stubs/girs/soup-3.0.ts new file mode 100644 index 0000000..db13fc8 --- /dev/null +++ b/src/test/stubs/girs/soup-3.0.ts @@ -0,0 +1,41 @@ +import GLib from './glib-2.0'; + +export namespace Soup { + export const HTTP_URI_FLAGS = 0; + + export class MessageHeaders { + public append(_name: string, _value: string): void {} + + public foreach(_func: (name: string, value: string) => void): void {} + } + + export class Message { + public requestHeaders: MessageHeaders; + + public responseHeaders: MessageHeaders; + + public statusCode: number; + + public static new_from_uri(_method: string, _uri: GLib.Uri): Message { + return new Message(); + } + + public constructor() { + this.requestHeaders = new MessageHeaders(); + this.responseHeaders = new MessageHeaders(); + this.statusCode = 0; + } + + public set_request_body_from_bytes(_content_type?: string | null, _bytes?: GLib.Bytes | null): void {} + } + + export class Session { + public userAgent: string = 'stub-libsoup3'; + + public send_and_read_async(_msg: Message, _io_priority: number, _cancellable?: unknown): Promise { + return Promise.resolve(new GLib.Bytes()); + } + } +} + +export default Soup; diff --git a/src/test/stubs/girs/st-1.0.ts b/src/test/stubs/girs/st-1.0.ts new file mode 100644 index 0000000..160a37f --- /dev/null +++ b/src/test/stubs/girs/st-1.0.ts @@ -0,0 +1,7 @@ +export namespace St { + export class Widget {} + + export class BoxLayout {} +} + +export default St; diff --git a/src/test/stubs/gnome-shell/misc/extensionUtils.ts b/src/test/stubs/gnome-shell/misc/extensionUtils.ts index c223ffd..3c00723 100644 --- a/src/test/stubs/gnome-shell/misc/extensionUtils.ts +++ b/src/test/stubs/gnome-shell/misc/extensionUtils.ts @@ -1,4 +1,4 @@ -import { Settings } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; export class ExtensionMetadata { uuid: string = 'e1f0a5eb-a65b-4dff-a0c2-ba024ac7ea3a'; @@ -33,6 +33,6 @@ export function getCurrentExtension(): Extension { export function openPrefs(): void {}; -export function getSettings(name?: string): Settings { - return new Settings(); +export function getSettings(name?: string): Gio.Settings { + return new Gio.Settings(); }; diff --git a/src/test/stubs/gnome-shell/ui/messageTray.ts b/src/test/stubs/gnome-shell/ui/messageTray.ts index ed72331..6882d89 100644 --- a/src/test/stubs/gnome-shell/ui/messageTray.ts +++ b/src/test/stubs/gnome-shell/ui/messageTray.ts @@ -1,4 +1,4 @@ -import { Icon } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; export class Source { public notifications: Notification[]; @@ -7,8 +7,8 @@ export class Source { this.notifications = []; } - public getIcon(): Icon { - return new Icon(); + public getIcon(): Gio.Icon { + return new Gio.Icon(); } public open(): void {} diff --git a/src/test/stubs/gnome-shell/ui/panel.ts b/src/test/stubs/gnome-shell/ui/panel.ts index 86ad361..12f3547 100644 --- a/src/test/stubs/gnome-shell/ui/panel.ts +++ b/src/test/stubs/gnome-shell/ui/panel.ts @@ -1,9 +1,9 @@ -import { BoxLayout } from '@gi-types/st1'; +import St from '@girs/st-1.0'; import { Button } from './panelMenu'; export class Panel { - _rightBox: BoxLayout = new BoxLayout(); + _rightBox: St.BoxLayout = new St.BoxLayout(); public addToStatusArea(role: string, indicator: Button, position?: number, box?: number): Button { return new Button(); diff --git a/src/test/stubs/gnome-shell/ui/panelMenu.ts b/src/test/stubs/gnome-shell/ui/panelMenu.ts index 19b4399..5bbe632 100644 --- a/src/test/stubs/gnome-shell/ui/panelMenu.ts +++ b/src/test/stubs/gnome-shell/ui/panelMenu.ts @@ -1,4 +1,4 @@ -import { Widget } from "@gi-types/st1"; +import St from '@girs/st-1.0'; export class ButtonBox {} @@ -8,5 +8,5 @@ export class Button extends ButtonBox { super(); } - public add_actor(widget: Widget): void {} + public add_actor(widget: St.Widget): void {} } diff --git a/src/test/tsconfig.json b/src/test/tsconfig.json index e960d0f..e849fad 100644 --- a/src/test/tsconfig.json +++ b/src/test/tsconfig.json @@ -6,7 +6,7 @@ "@test-suite/*": ["typescript/*"], "@github-manager/*": ["../main/typescript/*"], "@gnome-shell/*": ["stubs/gnome-shell/*"], - "@gi-types/*": ["stubs/gi-types/*"], + "@girs/*": ["stubs/girs/*"], "@gettext": ["stubs/gettext"] } }, diff --git a/src/test/typescript/notifications/NotificationAdapter.test.ts b/src/test/typescript/notifications/NotificationAdapter.test.ts index 02dacb3..9b825a4 100644 --- a/src/test/typescript/notifications/NotificationAdapter.test.ts +++ b/src/test/typescript/notifications/NotificationAdapter.test.ts @@ -1,6 +1,6 @@ import { readFileSync } from 'fs'; -import { Icon } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { testResource } from '@test-suite/testSupport'; import { assert } from 'chai'; @@ -12,7 +12,7 @@ import { disposeTranslationDomain, initializeTranslations } from '@github-manage import '@test-suite/globals'; describe('NotificationAdapter', () => { - const digestIcon = new Icon(); + const digestIcon = new Gio.Icon(); let adapter: NotificationAdapter; let threads: GitHub.Thread[]; diff --git a/src/test/typescript/notifications/actions/OpenAction.test.ts b/src/test/typescript/notifications/actions/OpenAction.test.ts index fb6297c..0b4c1a8 100644 --- a/src/test/typescript/notifications/actions/OpenAction.test.ts +++ b/src/test/typescript/notifications/actions/OpenAction.test.ts @@ -1,6 +1,6 @@ import { readFileSync } from 'fs'; -import * as Gtk4 from '@gi-types/gtk4'; +import Gtk from '@girs/gtk-4.0'; import { GitHubClientStub, assertWithRetries, testResource } from '@test-suite/testSupport'; import { assert } from 'chai'; import { SinonSpy, spy, stub } from 'sinon'; @@ -17,13 +17,13 @@ describe('Open Action', () => { let githubClient: GitHubClient; let eventDispatcher: EventDispatcher; - let showUriSpy: SinonSpy<[parent: Window | null, uri: string, timestamp: number], void>; + let showUriSpy: SinonSpy<[parent: Gtk.Window | null, uri: string, timestamp: number], void>; before(() => { const scenarioJSON = readFileSync(testResource('../notifications.json'), { encoding: 'utf-8' }); thread = (JSON.parse(scenarioJSON) as GitHub.Thread[])[0]; - showUriSpy = spy(Gtk4, 'show_uri'); + showUriSpy = spy(Gtk, 'show_uri'); }); beforeEach(() => { diff --git a/src/test/typescript/settings/SettingsWrapper.test.ts b/src/test/typescript/settings/SettingsWrapper.test.ts index 4c21be2..a7d0072 100644 --- a/src/test/typescript/settings/SettingsWrapper.test.ts +++ b/src/test/typescript/settings/SettingsWrapper.test.ts @@ -1,4 +1,4 @@ -import { Settings } from '@gi-types/gio2'; +import Gio from '@girs/gio-2.0'; import { assert } from 'chai'; import { SinonSpy, SinonStub, match, spy, stub } from 'sinon'; @@ -6,16 +6,16 @@ import { NotificationActionType, NotificationMode } from '@github-manager/settin import { SettingsWrapper } from '@github-manager/settings/SettingsWrapper'; import { EventDispatcher } from '@github-manager/utils/EventDispatcher'; -type SettingsConnectParameters = [signal: string, callback: (_source: Settings, key: string) => void]; +type SettingsConnectParameters = [signal: string, callback: (_source: Gio.Settings, key: string) => void]; describe('SettingsWrapper', () => { let eventDispatcher: EventDispatcher; - let settings: Settings; + let settings: Gio.Settings; beforeEach(() => { // Default implementation to allow stubbing eventDispatcher = new EventDispatcher(); - settings = new Settings(); + settings = new Gio.Settings(); }); it('can send event when change is triggered', () => { diff --git a/src/test/typescript/utils/Logger.test.ts b/src/test/typescript/utils/Logger.test.ts index ce8fccd..c160f98 100644 --- a/src/test/typescript/utils/Logger.test.ts +++ b/src/test/typescript/utils/Logger.test.ts @@ -1,5 +1,6 @@ -import { File } from '@gi-types/gio2'; -import * as GLib2 from '@gi-types/glib2'; +import Gio from '@girs/gio-2.0'; +import GLib from '@girs/glib-2.0'; + import { assert } from 'chai'; import { SinonSpy, SinonStub, spy, stub } from 'sinon'; @@ -11,8 +12,8 @@ describe('Logger', () => { let logSpy: SinonSpy<[message: string], void>; let logErrorSpy: SinonSpy<[e: unknown, message: string], void>; - const getUserDataDirStub: SinonStub<[], string> = stub(GLib2, 'get_user_data_dir'); - const newForPathStub: SinonStub<[path: string], File> = stub(File, 'new_for_path'); + const getUserDataDirStub: SinonStub<[], string> = stub(GLib, 'get_user_data_dir'); + const newForPathStub: SinonStub<[path: string], Gio.File> = stub(Gio.File, 'new_for_path'); before(() => { logSpy = spy(globalThis, 'log'); @@ -143,7 +144,7 @@ describe('Logger', () => { }); it('uses default configuration when initializing with no configuration file', () => { - const configurationFileStub = stub(new File()); + const configurationFileStub = stub(new Gio.File()); getUserDataDirStub.returns('.'); newForPathStub.returns(configurationFileStub); @@ -156,7 +157,7 @@ describe('Logger', () => { }); it('can load configuration file', () => { - const configurationFileStub = stub(new File()); + const configurationFileStub = stub(new Gio.File()); const configurationFile = ` root = WARN @@ -169,7 +170,7 @@ test::core = DEBUG getUserDataDirStub.returns('.'); newForPathStub.returns(configurationFileStub); configurationFileStub.query_exists.returns(true); - configurationFileStub.load_contents.returns([true, new TextEncoder().encode(configurationFile)]); + configurationFileStub.load_contents.returns([true, new TextEncoder().encode(configurationFile), null]); Logger.initialize(); @@ -181,14 +182,14 @@ test::core = DEBUG }); it('ignores errors while parsing the configuration file', () => { - const configurationFileStub = stub(new File()); + const configurationFileStub = stub(new Gio.File()); getUserDataDirStub.returns('.'); newForPathStub.returns(configurationFileStub); configurationFileStub.query_exists.returns(true); // First case, load_content return false - configurationFileStub.load_contents.returns([false, new Uint8Array()]); + configurationFileStub.load_contents.returns([false, new Uint8Array(), null]); Logger.initialize(); diff --git a/yarn.lock b/yarn.lock index 3f7818e..b669e2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -218,221 +218,488 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== -"@gi-types/adw1@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@gi-types/adw1/-/adw1-1.1.1.tgz#c118d4c3f88aa77db2fd5f9a0697e551bba9b574" - integrity sha512-w+NxplCUf2AeVdSwkicbVrIOB5QJd9BQo1BI3Xq+2IZkgMRePIUG9/eGsrvmzxKU00EiH211KEwqGe/2UOmomQ== - dependencies: - "@gi-types/gdk4" "^4.0.1" - "@gi-types/gio2" "^2.68.0" - "@gi-types/glib2" "^2.68.0" - "@gi-types/gobject2" "^2.68.0" - "@gi-types/gsk4" "^4.0.1" - "@gi-types/gtk4" "^4.6.1" - -"@gi-types/atk1@^2.36.0": - version "2.36.0" - resolved "https://registry.yarnpkg.com/@gi-types/atk1/-/atk1-2.36.0.tgz#24bbd25e11a8c7465349af040350f86af46c3ecb" - integrity sha512-lCuoaJwqFDV+V+sf4mOcciLCJitiUsGNg/W2Q5Y+21FycPZqlsjgXb0pimo7gLdq11d1lEfHffh3AkY80+7SHw== - dependencies: - "@gi-types/glib2" "^2.68.0" - "@gi-types/gobject2" "^2.68.0" - -"@gi-types/cairo1@^1.0.0", "@gi-types/cairo1@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/cairo1/-/cairo1-1.0.1.tgz#d061952c42cebd7a9377e7e7a49e85eea9c8a7b1" - integrity sha512-Q92XKfTWVmtF3LBX9Kx7TkdRjeaZeb8llC01p9WgbkVfFX1d2VO4LrqYgeNkThwmJpscHzDzGF0uv5njsfd4xg== - dependencies: - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/cally10@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/cally10/-/cally10-10.0.1.tgz#26041618e82f47dedbfacbdd3856d0ba0a91c386" - integrity sha512-q4QOjuvXtVxHPC81eWkUl3cmnTjn5VgfhdMyphnym4vRd1JmBpYCQxvGBMpePaqwwxolgUccdVeUYv671XCenA== - dependencies: - "@gi-types/atk1" "^2.36.0" - "@gi-types/clutter10" "^10.0.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/clutter10@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/clutter10/-/clutter10-10.0.1.tgz#331ffe8c78bafa28fd937b9afe7e5add6c087888" - integrity sha512-RID6cMWeIFP4ikkd3GLymEG/KbWnQYBz3DAte+HjWOxbP/yAKlfDWrz3CwVM0NO+pIbD7zeCgdFbcCaXC9u2Ww== - dependencies: - "@gi-types/atk1" "^2.36.0" - "@gi-types/cairo1" "^1.0.1" - "@gi-types/cogl10" "^10.0.1" - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - "@gi-types/graphene1" "^1.0.1" - "@gi-types/json1" "^1.6.1" - "@gi-types/pango1" "^1.50.1" - -"@gi-types/cogl10@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/cogl10/-/cogl10-10.0.1.tgz#a7a3da149ff83a58d237ab037e33ef28fccee7a0" - integrity sha512-n4Kf019kVog/X+YCjvIBXKgOv5zmJWaWHjpPViKs4ydH5X/LKqM23EpYGvyvDgFOFV4y/cv9i6/RMcb5rgCeHA== - dependencies: - "@gi-types/cairo1" "^1.0.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - "@gi-types/graphene1" "^1.0.1" - -"@gi-types/freetype22@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/freetype22/-/freetype22-2.0.1.tgz#706f61c7e425c4ada3765b0d796e3336bc3e5f6a" - integrity sha512-3p4XvTSn6o1UCGpla/1KhvMIwZkgIyBtGErbnXuAvGzULtlseQjX2IljY4fi2FKtFd9ngRtIIF71inRPUIj+1w== - dependencies: - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/gdk4@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/gdk4/-/gdk4-4.0.1.tgz#e16b1e6b8cc4aedb56e9a1afd2c627d855e3159f" - integrity sha512-Msf4bWdw8A0qorTvbvWgCwMno8nUCGLiDcEhNI6iqh6o8IJKchID9a51j6KeqpHkwSPZAcaR2TKM+CVafa4pOw== - dependencies: - "@gi-types/cairo1" "^1.0.0" - "@gi-types/gdkpixbuf2" "^2.0.0" - "@gi-types/gio2" "^2.68.0" - "@gi-types/glib2" "^2.68.0" - "@gi-types/gobject2" "^2.68.0" - "@gi-types/pango1" "^1.0.0" - -"@gi-types/gdkpixbuf2@^2.0.0", "@gi-types/gdkpixbuf2@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@gi-types/gdkpixbuf2/-/gdkpixbuf2-2.0.2.tgz#adbd80bfca359117c986b5abfc5818862517f6bc" - integrity sha512-vwopihyKOjJszDPvMj+T2XO6hMWYRmhW/uSrfCeCudMhzmJBrpIzmRZTYfeTgMMDU8cuWydCjacbiD7hSio0tw== - dependencies: - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gmodule2" "^2.0.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/gio2@^2.68.0", "@gi-types/gio2@^2.72.1": - version "2.72.1" - resolved "https://registry.yarnpkg.com/@gi-types/gio2/-/gio2-2.72.1.tgz#15ee7770655c578f574f5fe343a3d7fdf3062798" - integrity sha512-V3ASxEbq4xBdw/rcROEbNrTqtFtWfwFOcOsXO+48JPIEqZRTJZcf9LX/ATxi9hxaZXogpmOBMsxuyNsd5ZQXyA== - dependencies: - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/glib2@^2.68.0", "@gi-types/glib2@^2.72.1": - version "2.72.1" - resolved "https://registry.yarnpkg.com/@gi-types/glib2/-/glib2-2.72.1.tgz#9cdfb4d05bf5f44a224e96d07ec1ebe3f12f32e7" - integrity sha512-Mfhs1UGV1a0GOLolqA1xC2oVV5cILbJjGh/M9Db3irqWNIWGM0LUFkoG2nRMBpJ0enhIYbqY9CCpGlMpAnyxOw== - dependencies: - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/gmodule2@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/gmodule2/-/gmodule2-2.0.1.tgz#dd396c8563bd416c051053cb313077179723137c" - integrity sha512-thIYqYL3ALKBLR/zpjrlXro1m9UTv6eAYyuIdpPtmQvlaggBLoUakYl6mzNmqcb22OIlq/8jJrVx+cjFxdPd/A== - dependencies: - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/gobject2@^2.68.0", "@gi-types/gobject2@^2.72.1": - version "2.72.1" - resolved "https://registry.yarnpkg.com/@gi-types/gobject2/-/gobject2-2.72.1.tgz#be5e8f8b0d220fcd93d386598907b2efc5be8d3e" - integrity sha512-1UUD2zzwRo7vJLu0J62L1cgB39wjYNs1+6qS0UBhdLhzkOWK+CnVII9CNh21Z4YBs0Oa2d5REeGUiZO4d7a6Zw== - dependencies: - "@gi-types/glib2" "^2.72.1" - -"@gi-types/graphene1@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/graphene1/-/graphene1-1.0.1.tgz#0d85568b162d03a0b365b1d3206b3a03c72cbd42" - integrity sha512-O5cJG/eIi912eF1zcaXrSur25LgMJDU+VhFDnYuO4Latj32eypFJf5Sw3KOZvN2EoctIBxjutbXLOxYYKMBhHA== - dependencies: - "@gi-types/gobject2" "^2.68.0" - -"@gi-types/gsk4@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/gsk4/-/gsk4-4.0.1.tgz#c66f3ca4029c01e8e5e1a43e158deede1ca60d22" - integrity sha512-/OtGBQwwtyQw7vjkfC4/P2pQf9hrtB89sXhDyKQG5B2UJ/LTAQQJNK7vu4u2W0Y922WK/zqrzimBy38JUoPO5Q== - dependencies: - "@gi-types/cairo1" "^1.0.0" - "@gi-types/gdk4" "^4.0.1" - "@gi-types/glib2" "^2.68.0" - "@gi-types/gobject2" "^2.68.0" - "@gi-types/graphene1" "^1.0.1" - "@gi-types/pango1" "^1.0.0" - -"@gi-types/gtk4@^4.6.1": - version "4.6.1" - resolved "https://registry.yarnpkg.com/@gi-types/gtk4/-/gtk4-4.6.1.tgz#643334e076fb9c15d8829dadd44d597275283986" - integrity sha512-WtdHV2S/xParqwJX9BJ/OsGTzoEorEhVAP0W2eJpUk5rqfSlzIXHnNvFvs9T5sT43fRZmefVd3Id1EbxsHKeLg== - dependencies: - "@gi-types/cairo1" "^1.0.0" - "@gi-types/gdk4" "^4.0.1" - "@gi-types/gdkpixbuf2" "^2.0.0" - "@gi-types/gio2" "^2.68.0" - "@gi-types/glib2" "^2.68.0" - "@gi-types/gobject2" "^2.68.0" - "@gi-types/graphene1" "^1.0.1" - "@gi-types/gsk4" "^4.0.1" - "@gi-types/pango1" "^1.50.1" - -"@gi-types/harfbuzz2@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@gi-types/harfbuzz2/-/harfbuzz2-4.4.2.tgz#b651cc6777caea6044b4da1b26b9aeff087717c4" - integrity sha512-jsntc6SthoOdw4VSetTOKFI0BM1ccDISP1JQhnL5NETrVuYGnNAwRZ2oDIujuG0M70bHDv/MWKiZnmJxXNPrKw== - dependencies: - "@gi-types/freetype22" "^2.0.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/json1@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@gi-types/json1/-/json1-1.6.1.tgz#e77b32c75304dfcdd90e8b533c78483e01bbf818" - integrity sha512-6DpNf3PTYYKbL96U76R/mWZuAXv32cI0ZDalyKAciKeh9pczHjlnNdjq8h6lDKJc5vKxviHW9TsOdtB3NaXuqQ== - dependencies: - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/pango1@^1.0.0", "@gi-types/pango1@^1.50.1": - version "1.50.1" - resolved "https://registry.yarnpkg.com/@gi-types/pango1/-/pango1-1.50.1.tgz#d5632c8d3f5ba50c1a3bc5ca1da0a90967e84b81" - integrity sha512-SdpoZ5Fcz7Zo8Tal5Ap4Z/4SMqpo/PspORIadxmNZ3kafFOwK7TPvdWiUIBgua+i3uWiLnreKCGD/6rLJLbw3g== - dependencies: - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - "@gi-types/harfbuzz2" "^4.4.2" - -"@gi-types/soup2@^2.74.1": - version "2.74.1" - resolved "https://registry.yarnpkg.com/@gi-types/soup2/-/soup2-2.74.1.tgz#114a53638ddab71684681a53dd10f570eaac96a6" - integrity sha512-K11KSN032DFAc3RTTBtPiZ9utWqw4CJ7wUAG1cMRdQtRBD44Xi2o2r9RuZkqUhT12V0vU7ZafF8Apb6PM6AOpg== - dependencies: - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/soup3@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/soup3/-/soup3-3.0.1.tgz#0b8c73c929384dba0a1122f0c20ced724808fabd" - integrity sha512-fZoJA5QHopIcOVf83dbhzRJqpHtbUUmyIinq6nu+sStQTOMQcf8m31cTVJvpjP6PzaBO13xaG3hagccF1PXpvw== - dependencies: - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - -"@gi-types/st1@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@gi-types/st1/-/st1-1.0.1.tgz#4456817938050eb781e3b953d882ac7aaeff0120" - integrity sha512-vpS4n36J2rI4gL2FEYTL/+yrjEdJjEVuV+g7bSnteZQOLyuLZjaB2noXFnvsQ30Cfp1rHD+uinY86cPaJv/ARA== - dependencies: - "@gi-types/atk1" "^2.36.0" - "@gi-types/cairo1" "^1.0.1" - "@gi-types/cally10" "^10.0.1" - "@gi-types/clutter10" "^10.0.1" - "@gi-types/cogl10" "^10.0.1" - "@gi-types/gio2" "^2.72.1" - "@gi-types/glib2" "^2.72.1" - "@gi-types/gobject2" "^2.72.1" - "@gi-types/json1" "^1.6.1" - "@gi-types/pango1" "^1.50.1" +"@girs/adw-1@^1.4.3-3.2.9": + version "1.4.3-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/adw-1/-/adw-1-1.4.3-3.2.9.tgz#4d2770bc522904511f3e250c3d4e5ea372e8aeed" + integrity sha512-FJPtFRLJHXHZl5WEPjXmyKXaoIgBWurZMroSxNxpRGFVlbxx7wq4Q1k1iKKVxcKbe69z66GQsHV2BgaeQK0aXg== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdk-4.0" "^4.0.0-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/gsk-4.0" "^4.0.0-3.2.9" + "@girs/gtk-4.0" "^4.12.5-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/atk-1.0@^2.50.1-3.2.9": + version "2.50.1-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/atk-1.0/-/atk-1.0-2.50.1-3.2.9.tgz#5afa1b0991e6f8b46b0dd8ed24fab96f7d0d51c4" + integrity sha512-8zhXFR/pCx0b8QMm759Z4JrHgNmO/Gc5K6OT5EhjkFbg9YMY2WCddDvL6GpFMSLdG7tvFzsOqE9KwL3avpoclA== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/cairo-1.0@^1.0.0-3.2.9": + version "1.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/cairo-1.0/-/cairo-1.0-1.0.0-3.2.9.tgz#d11561f6e48f39e2aa1b2023d5b81c297b8804ba" + integrity sha512-yeBoeyniCKU3IcgpoKUywlviBx2kEVeYjglFw4v5eGGvaBugPWvlShqePxfNmfh2A4cjFzzdLXRN6brQEHgQEA== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/cally-11@^11.0.0-3.2.9": + version "11.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/cally-11/-/cally-11-11.0.0-3.2.9.tgz#5c068ba7501074ea374c387bf8f1eef15111e8fd" + integrity sha512-eDeZRNq+X4KbrH1wqhO2dH1/zwSyH4c8yjwXuqdgxc3rzJLRnHgJff20ZDmTrxPJHYxGYPJXJ1KnAHt/suYEvg== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/clutter-11" "^11.0.0-3.2.9" + "@girs/cogl-11" "^11.0.0-3.2.9" + "@girs/coglpango-11" "^11.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/json-1.0" "^1.7.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/clutter-10@^10.0.0-3.2.9": + version "10.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/clutter-10/-/clutter-10-10.0.0-3.2.9.tgz#ef4fde390ab3b32b6d6349f01346923f156d8bae" + integrity sha512-WoRyoeyy4A9tbh4asTFj77aXS9HVvBhh8heQt9006+ZznymuceUk4kkwbWxx4Hx6uAEAuUASAA8Yes8ap7HM9Q== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/cogl-10" "^10.0.0-3.2.9" + "@girs/coglpango-10" "^10.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/json-1.0" "^1.7.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/clutter-11@^11.0.0-3.2.9": + version "11.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/clutter-11/-/clutter-11-11.0.0-3.2.9.tgz#9b87b1e165eb98f5e25a6ea1f61667f95a77dff0" + integrity sha512-VMEu3ZkcqREkKHo1N1mkOLboIfNBXf/demUuWiOMb2dh/z+slptE+SaKK8UkLeOPAOnWpc8YuUrkUUbpfLCEbA== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/cogl-11" "^11.0.0-3.2.9" + "@girs/coglpango-11" "^11.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/json-1.0" "^1.7.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/cogl-10@^10.0.0-3.2.9": + version "10.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/cogl-10/-/cogl-10-10.0.0-3.2.9.tgz#d6afaa5b417390754b550e33db13b45dff52c67b" + integrity sha512-OLnpZlt8ey1S679xyiww8pfzLZvg4pwlF4hy1A2wzVohFlP0R6XK/pFC+fn/mU16tclNP/GVnAQjQuu2ZUxAPw== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + +"@girs/cogl-11@^11.0.0-3.2.9": + version "11.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/cogl-11/-/cogl-11-11.0.0-3.2.9.tgz#e3a86f67250cff76119a1136aa1edc57df32f9a7" + integrity sha512-Ke+1UX/iI73a3sLOgvzdLhi93sSdmfj+X6NrqOdW7p98N913ihiD4g2QH12SfyX3yldUBYC08VN6dOunHEY70Q== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + +"@girs/coglpango-10@^10.0.0-3.2.9": + version "10.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/coglpango-10/-/coglpango-10-10.0.0-3.2.9.tgz#6bcc677513401ac29e9d62ccb35711eff16f5bed" + integrity sha512-y6MguEXmfr0BKWmP96rTSee/S4dTdpdvIoCmi/KXtF8gmSG6Mut95vSWSMxn78Zi6ASilX1P+/vWS/fQihSOfA== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/cogl-10" "^10.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/coglpango-11@^11.0.0-3.2.9": + version "11.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/coglpango-11/-/coglpango-11-11.0.0-3.2.9.tgz#3fff31def86e5c3775fe0ead32e8764cc63909e2" + integrity sha512-Ng4pEPgfCrVlvWXXzuAiJdQE4fLA6Dk2QKLjOFbm/8k+YiKo5Rr0loDk0dsOLdk6c1V3NdXwfJsPUSsxLtOJ+w== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/cogl-11" "^11.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/freetype2-2.0@^2.0.0-3.2.9": + version "2.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/freetype2-2.0/-/freetype2-2.0-2.0.0-3.2.9.tgz#10af6e70ec04459370857930ecd5f12fa5824184" + integrity sha512-Og9CTSl2QYnuCtX2L6rYa9WVUetYbaD1Y7BwEe3kOSG2OkDB+hunnF82x1Ctg1iKRRBXgWxadKb28bm2wKx/Jw== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gdesktopenums-3.0@^3.0.0-3.2.9": + version "3.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gdesktopenums-3.0/-/gdesktopenums-3.0-3.0.0-3.2.9.tgz#b1faece824da3b7ac6ddf1fc623facdeaa6f4327" + integrity sha512-wVq00qXfiPs+oMk+0uRrM6VPTnFb27I/QqBMSZMrAkCNOJLw1pXFw/vomfEPdZUXY63FU5LAqGp0IIx85MlSOQ== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gdk-3.0@^3.24.41-3.2.9": + version "3.24.41-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gdk-3.0/-/gdk-3.0-3.24.41-3.2.9.tgz#67ba873fdb969ac6591b00eb1875d1d89afd9ff7" + integrity sha512-kvMPHvXQPNvT98XDPvS+B4Ep2cklhiWEt2Z5YUrCf0Ili+UeIFCrV4tsr/EFxwkSEDylizUyNVqDZg8Rj9BgIg== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + +"@girs/gdk-4.0@^4.0.0-3.2.9": + version "4.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gdk-4.0/-/gdk-4.0-4.0.0-3.2.9.tgz#bc0155af1582713a6437db6b4ba8540a1f2ebefa" + integrity sha512-86+32kDXaSqzicqMCx35O8ZkCrG5Qyyozaq1NQdWhBNUopGNiTLtVkf90aIP0y8ZccIeJKidCWEO3IYiRmmHkg== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/gdkpixbuf-2.0@^2.0.0-3.2.9": + version "2.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gdkpixbuf-2.0/-/gdkpixbuf-2.0-2.0.0-3.2.9.tgz#d50c1ecaa7305f3892fd4099f7acbd8111c3d275" + integrity sha512-7guULwcaulcOvqvAB8pd6Xr9B2YmK1sQK6CYm5bHZQw9N18LnZkm9ATOAXjXLieaUSeERA6LnBPmtkLUZdeTzA== + dependencies: + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gio-2.0@^2.78.0-3.2.9": + version "2.78.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gio-2.0/-/gio-2.0-2.78.0-3.2.9.tgz#0fce31e9106d545bcdce57c3992cffe913c519fb" + integrity sha512-A3F1AkBPF8Up6bSfH9zbAUsQqv4dB0jvfUIo5b+SJs6Mt9FhpqNEUMyqeCFTDKDA9n2sK6JxAJviwsW9dxViJA== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gjs@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gjs/-/gjs-3.2.9.tgz#20e30722e7eb854e74968015da1b1b2587b554a7" + integrity sha512-dJfCNdtt4OLRywlhKOc+h27l5KoOiDhbhkuuG/WaV/jn9KaQ1BMAyVWdBEZu6WzPJlsiWYujis0fe5ZJnrgoDA== + dependencies: + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gl-1.0@^1.0.0-3.2.9": + version "1.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gl-1.0/-/gl-1.0-1.0.0-3.2.9.tgz#b3b965de0c9ce9945fe9c0bd955df4c00a160630" + integrity sha512-2+rIGrEU0FRop7cJsHdD+4pz+StAZZo2+el4oz8o6cAuUZcbnMpTM5DAKsiGVLoQH+WrYc7A8mjO1gS1Igsf/w== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/glib-2.0@^2.78.0-3.2.9": + version "2.78.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/glib-2.0/-/glib-2.0-2.78.0-3.2.9.tgz#c1c351848eb446febf5ab15ed594cd7f1718fe6c" + integrity sha512-wcbnSojav6jc4//PYsAJPwXizFlz35/F+AHyFbvutOSdNz4xzzUUZqUhhH2lmoyR8WDvkVWBcQitCmYmPNe6Xg== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gmodule-2.0@^2.0.0-3.2.9": + version "2.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gmodule-2.0/-/gmodule-2.0-2.0.0-3.2.9.tgz#35c1ab0683f3d00a00fd7dbcd9932aa93964b976" + integrity sha512-10JS6N7VkPxcom5I3hzD65NmZzQ63ZFmN+2KXZPwTDU6K2A2QrxZB2/3Q3j6KKNc+e/d9GhStL9ISUPLErHoNg== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gobject-2.0@^2.78.0-3.2.9": + version "2.78.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gobject-2.0/-/gobject-2.0-2.78.0-3.2.9.tgz#1938b28d075f2c3be3b9df8bba470a8d8a3bd87d" + integrity sha512-zszoqx7/z7KseQnc7WUXz1jgs3oYskT748cMKLQ7n4pRtL6klrTzlPbM42Szs+Uk6wOKJ+o+MMdcpb8znflDBg== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + +"@girs/graphene-1.0@^1.0.0-3.2.9": + version "1.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/graphene-1.0/-/graphene-1.0-1.0.0-3.2.9.tgz#29e41823bb1802d62aeb9febca5c6943c6873306" + integrity sha512-2iTdpt7XTJAH/K5GiKoF2r0BHe1JghpV+rh81WYtFqM/r9CLs5GipESuraVQvZeK2vyrZcGRjVmoDoiKiA3BlQ== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/gsk-4.0@^4.0.0-3.2.9": + version "4.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gsk-4.0/-/gsk-4.0-4.0.0-3.2.9.tgz#ce9265c922771871865a63337eb12f4999d4cbb4" + integrity sha512-LtGbMKBVYPburnI1JGt2d3uKzHgk4A2QtO4n/kP0T99Rmnxr+D2xwR+VdqcdgkLXoTzdlvodfK1b7W/eILB7CQ== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdk-4.0" "^4.0.0-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/gtk-3.0@^3.24.41-3.2.9": + version "3.24.41-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gtk-3.0/-/gtk-3.0-3.24.41-3.2.9.tgz#d08fceb7452714cd0719938d57d1799200905d02" + integrity sha512-5xOrAgkFvJIEezMiwfrFm8+YMPq6BhVJlfc1hzLgsXNHw61vCxs2Pzkp/TVKpRKQYed/rVC62vInqel3LE+5uw== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdk-3.0" "^3.24.41-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/xlib-2.0" "^2.0.0-3.2.9" + +"@girs/gtk-4.0@^4.12.5-3.2.9": + version "4.12.5-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/gtk-4.0/-/gtk-4.0-4.12.5-3.2.9.tgz#7719f24cd8a0be4c2519ad3040703850fbf900e5" + integrity sha512-TweLlhryVS8DnDQouLdJtGv3AeJ9Dv/nKFatPSDlcwUFYCSDa9+R5gA5L7GNh3NobPIa6ZMAT4oAv2fJS7zYFw== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdk-4.0" "^4.0.0-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/gsk-4.0" "^4.0.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + +"@girs/harfbuzz-0.0@^8.2.1-3.2.9": + version "8.2.1-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/harfbuzz-0.0/-/harfbuzz-0.0-8.2.1-3.2.9.tgz#8e5f350d6521ac32c609cc09e8b431b14833b230" + integrity sha512-5o4Ow44ndt9Jnyp5vw6tWYSFESY/inH/3nNoWk1bWpG5TFxOwvW05RiSpdKXb4nTXaDWPBXLZF4Its9Q/GrW2w== + dependencies: + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/json-1.0@^1.7.1-3.2.9": + version "1.7.1-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/json-1.0/-/json-1.0-1.7.1-3.2.9.tgz#e38ca5a61fbe42187d334ce7a55b386356ceedf9" + integrity sha512-RcurPnual2wvQWJ9tTiAjSCWoMhTjMV8TTIhzev7HIty8GdB+sPwjuqL6dHTyIvr2GXsbJkKgQEdE5Ad+phcTA== + dependencies: + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/meta-11@^11.0.0-3.2.9": + version "11.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/meta-11/-/meta-11-11.0.0-3.2.9.tgz#60ce9a5312be6c491a34bf83d363446804cd0bc4" + integrity sha512-D0lCthF0dQlagIQwjI5SDeX9JYXTS0CL4nZ4sz7a4/J2eD5RFxZLsUELsFaxncLfqqtAbYnToyFS9heHvGACMg== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/clutter-11" "^11.0.0-3.2.9" + "@girs/cogl-11" "^11.0.0-3.2.9" + "@girs/coglpango-11" "^11.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdesktopenums-3.0" "^3.0.0-3.2.9" + "@girs/gdk-3.0" "^3.24.41-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/gtk-3.0" "^3.24.41-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/json-1.0" "^1.7.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + "@girs/xfixes-4.0" "^4.0.0-3.2.9" + "@girs/xlib-2.0" "^2.0.0-3.2.9" + +"@girs/pango-1.0@^1.51.0-3.2.9": + version "1.51.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/pango-1.0/-/pango-1.0-1.51.0-3.2.9.tgz#03116a08070db7d44246f2c986316e8ca426a468" + integrity sha512-dWIvPJoFnpgWQcflTyGhXN5TmlmW0OvTG6kjBFwVJLwT2H6vugUKk9665MvEQDywaeGZzdfrJqQo/oFplhVSBg== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + +"@girs/pangocairo-1.0@^1.0.0-3.2.9": + version "1.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/pangocairo-1.0/-/pangocairo-1.0-1.0.0-3.2.9.tgz#59dc25286ab8434fd5728e230cde6d4611bd1a24" + integrity sha512-9tpiYEwdx9829p0oQFrC5Y38USGeap2Y+yNeD8Klf1Pb9pGC/lVjAjrqmGC/nSAyLHz3SlK1kTDP1fBsqoCEng== + dependencies: + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + +"@girs/soup-2.4@^2.74.3-3.2.9": + version "2.74.3-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/soup-2.4/-/soup-2.4-2.74.3-3.2.9.tgz#ea5ffccb67c72776636424a8c2fae9fffe6ba9f6" + integrity sha512-oKpnuYiqxBiwseKgbGsU6XM5aan10zlxlpjpHPlzVuOrba0ba90NngexozBWQPzJycCcEM89r/tgVfREziaLyw== + dependencies: + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/soup-3.0@^3.4.4-3.2.9": + version "3.4.4-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/soup-3.0/-/soup-3.0-3.4.4-3.2.9.tgz#a5a19e2c8184c9a6018e2fa6be06d719ba44c2f0" + integrity sha512-rp9EJjT8ywjRcpQ2LTpLPufIY+iOc8DW7s3YK+oWJ0P7ltdpSMagKjhc8ykGhP+aMKVyvCn+AF2nP/othMmhAQ== + dependencies: + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/st-1.0@^1.0.0-3.2.9": + version "1.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/st-1.0/-/st-1.0-1.0.0-3.2.9.tgz#9b4a92d846a43795f5075ea5518eb0e057028f2d" + integrity sha512-pKkFsz44CK4E/M1dZJzVowHs5R9M8Sk7NK0bWZTKS0awNwmBeLAphP66h8xLzOriqrYSXuWrI20Y+bhXQhTNbw== + dependencies: + "@girs/atk-1.0" "^2.50.1-3.2.9" + "@girs/cairo-1.0" "^1.0.0-3.2.9" + "@girs/cally-11" "^11.0.0-3.2.9" + "@girs/clutter-11" "^11.0.0-3.2.9" + "@girs/cogl-11" "^11.0.0-3.2.9" + "@girs/coglpango-11" "^11.0.0-3.2.9" + "@girs/freetype2-2.0" "^2.0.0-3.2.9" + "@girs/gdesktopenums-3.0" "^3.0.0-3.2.9" + "@girs/gdk-3.0" "^3.24.41-3.2.9" + "@girs/gdkpixbuf-2.0" "^2.0.0-3.2.9" + "@girs/gio-2.0" "^2.78.0-3.2.9" + "@girs/gjs" "^3.2.9" + "@girs/gl-1.0" "^1.0.0-3.2.9" + "@girs/glib-2.0" "^2.78.0-3.2.9" + "@girs/gmodule-2.0" "^2.0.0-3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + "@girs/graphene-1.0" "^1.0.0-3.2.9" + "@girs/gtk-3.0" "^3.24.41-3.2.9" + "@girs/harfbuzz-0.0" "^8.2.1-3.2.9" + "@girs/json-1.0" "^1.7.1-3.2.9" + "@girs/meta-11" "^11.0.0-3.2.9" + "@girs/pango-1.0" "^1.51.0-3.2.9" + "@girs/pangocairo-1.0" "^1.0.0-3.2.9" + "@girs/xfixes-4.0" "^4.0.0-3.2.9" + "@girs/xlib-2.0" "^2.0.0-3.2.9" + +"@girs/xfixes-4.0@^4.0.0-3.2.9": + version "4.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/xfixes-4.0/-/xfixes-4.0-4.0.0-3.2.9.tgz#85fcdd29c8eba88afeb5a39b50f47faceeeaa8ad" + integrity sha512-kNPXWOk4oYYHWC3/PSHGHEad9qxIlkvB4BpBp5kZLOnd5p8wqOKD6dVgyk6HmnwLqZ62asIE4Ep4nLaVk7Afxw== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" + +"@girs/xlib-2.0@^2.0.0-3.2.9": + version "2.0.0-3.2.9" + resolved "https://registry.yarnpkg.com/@girs/xlib-2.0/-/xlib-2.0-2.0.0-3.2.9.tgz#d5b74dc8f03147852bb9c0d2703a8dd60678a581" + integrity sha512-Y3NmwvWJS68ssj5VWdV6b2c6KP5ySoKj8LB7Ksz8tYCJpf/B712ZFuZQtKR5N5LOGVrTtRswtyvqVoeVm5h5gA== + dependencies: + "@girs/gjs" "^3.2.9" + "@girs/gobject-2.0" "^2.78.0-3.2.9" "@humanwhocodes/config-array@^0.11.8": version "0.11.8"