diff --git a/container/package.json b/container/package.json index 4bfa65e..f40bcb4 100644 --- a/container/package.json +++ b/container/package.json @@ -9,8 +9,11 @@ "dev": "node esbuild.config.js --watch" }, "devDependencies": { - "@girs/gjs": "4.0.0-next.1", - "@girs/gtk-3.0": "3.24.0-next.1", - "@girs/webkit2-4.1": "4.1.0-next.1" + "@girs/gjs": "^4.0.0", + "@girs/gtk-3.0": "^3.24.53-4.0.0", + "@girs/webkit2-4.1": "^2.52.1-4.0.0", + "@girs/gio-2.0": "^2.88.0-4.0.0", + "@girs/glib-2.0": "^2.88.0-4.0.0", + "@girs/gobject-2.0": "^2.88.0-4.0.0" } } diff --git a/container/tsconfig.json b/container/tsconfig.json index d904f80..035224d 100644 --- a/container/tsconfig.json +++ b/container/tsconfig.json @@ -4,7 +4,14 @@ "outDir": "./dist", "rootDir": ".", "noEmit": true, - "types": [] + "types": [ + "@girs/gjs", + "@girs/gio-2.0/ambient", + "@girs/glib-2.0/ambient", + "@girs/gobject-2.0/ambient", + "@girs/gtk-3.0/ambient", + "@girs/webkit2-4.1/ambient" + ] }, "include": ["src/**/*", "runtime/**/*"] } diff --git a/extension/package.json b/extension/package.json index a163cb5..e160c32 100644 --- a/extension/package.json +++ b/extension/package.json @@ -9,8 +9,11 @@ "dev": "node esbuild.config.js --watch" }, "devDependencies": { - "@girs/gnome-shell": "48.0.0-next.1", - "@girs/meta-16": "16.0.0-next.1", - "@girs/gtk-3.0": "3.24.0-next.1" + "@girs/gnome-shell": "^50.0.0", + "@girs/meta-16": "^16.0.0-4.0.0", + "@girs/gtk-3.0": "^3.24.53-4.0.0", + "@girs/gio-2.0": "^2.88.0-4.0.0", + "@girs/glib-2.0": "^2.88.0-4.0.0", + "@girs/gobject-2.0": "^2.88.0-4.0.0" } } diff --git a/extension/src/extension.ts b/extension/src/extension.ts index d9b90d5..bcd12ed 100644 --- a/extension/src/extension.ts +++ b/extension/src/extension.ts @@ -5,6 +5,7 @@ import { WindowGuard } from './window-guard.js'; import { ContainerSupervisor } from './container-supervisor.js'; import { EntryUX } from './entry-ux.js'; import { DBusService } from './dbus-service.js'; +import { log, error } from './util/logger.js'; export default class DashwardExtension extends Extension { private warden?: WorkspaceWarden; @@ -13,22 +14,35 @@ export default class DashwardExtension extends Extension { private entry?: EntryUX; private dbus?: DBusService; - enable(): void { - log('[Dashward] enable: P0 skeleton — components not wired yet'); - this.warden = new WorkspaceWarden(); - this.guard = new WindowGuard(); - this.container = new ContainerSupervisor(); - this.entry = new EntryUX(); - this.dbus = new DBusService(); + override enable(): void { + log(`enable: ${this.metadata.uuid} v${this.metadata.version}`); + + try { + this.warden = new WorkspaceWarden(); + } catch (e) { + error(`WorkspaceWarden init failed: ${String(e)}`); + // Don't proceed if the warden didn't come up — everything else + // depends on the dashboard workspace existing. + return; + } + + // P2+ components are still placeholders; left commented until each + // phase implements them so we don't pretend to be functional. + // this.guard = new WindowGuard(); + // this.container = new ContainerSupervisor(); + // this.entry = new EntryUX(); + // this.dbus = new DBusService(); } - disable(): void { - log('[Dashward] disable'); + override disable(): void { + log('disable'); + this.dbus?.dispose(); this.entry?.dispose(); this.container?.dispose(); this.guard?.dispose(); this.warden?.dispose(); + this.dbus = undefined; this.entry = undefined; this.container = undefined; @@ -36,5 +50,3 @@ export default class DashwardExtension extends Extension { this.warden = undefined; } } - -declare function log(msg: string): void; diff --git a/extension/src/types/globals.d.ts b/extension/src/types/globals.d.ts new file mode 100644 index 0000000..3260287 --- /dev/null +++ b/extension/src/types/globals.d.ts @@ -0,0 +1,18 @@ +// GNOME Shell injects a `global` singleton (Shell.Global) into the GJS +// global scope. The @girs/gnome-shell typings don't expose it as a +// resolvable module path, so we declare just the surface we use. + +import type Meta from 'gi://Meta'; + +declare global { + const global: { + workspace_manager: Meta.WorkspaceManager; + display: Meta.Display; + get_current_time(): number; + }; + + // GJS provides a `log` builtin in addition to the Console API. + function log(msg: string): void; +} + +export {}; diff --git a/extension/src/util/logger.ts b/extension/src/util/logger.ts new file mode 100644 index 0000000..bf63e9d --- /dev/null +++ b/extension/src/util/logger.ts @@ -0,0 +1,13 @@ +const PREFIX = '[Dashward]'; + +export function log(msg: string): void { + console.log(`${PREFIX} ${msg}`); +} + +export function warn(msg: string): void { + console.warn(`${PREFIX} ${msg}`); +} + +export function error(msg: string): void { + console.error(`${PREFIX} ${msg}`); +} diff --git a/extension/src/util/state-store.ts b/extension/src/util/state-store.ts new file mode 100644 index 0000000..77a8b75 --- /dev/null +++ b/extension/src/util/state-store.ts @@ -0,0 +1,49 @@ +import GLib from 'gi://GLib'; +import Gio from 'gi://Gio'; + +import { warn } from './logger.js'; + +const STATE_DIR = GLib.build_filenamev([GLib.get_user_state_dir(), 'dashward']); + +function ensureDir(): void { + const dir = Gio.File.new_for_path(STATE_DIR); + if (!dir.query_exists(null)) { + dir.make_directory_with_parents(null); + } +} + +function pathFor(name: string): string { + return GLib.build_filenamev([STATE_DIR, `${name}.json`]); +} + +export function loadState(name: string): T | null { + const file = Gio.File.new_for_path(pathFor(name)); + if (!file.query_exists(null)) return null; + try { + const [ok, contents] = file.load_contents(null); + if (!ok) return null; + const txt = new TextDecoder('utf-8').decode(contents); + return JSON.parse(txt) as T; + } catch (e) { + warn(`loadState(${name}) failed: ${String(e)}`); + return null; + } +} + +export function saveState(name: string, data: T): void { + ensureDir(); + const bytes = new TextEncoder().encode(JSON.stringify(data, null, 2)); + const file = Gio.File.new_for_path(pathFor(name)); + file.replace_contents(bytes, null, false, Gio.FileCreateFlags.NONE, null); +} + +export function clearState(name: string): void { + const file = Gio.File.new_for_path(pathFor(name)); + if (file.query_exists(null)) { + try { + file.delete(null); + } catch (e) { + warn(`clearState(${name}) failed: ${String(e)}`); + } + } +} diff --git a/extension/src/workspace-warden.ts b/extension/src/workspace-warden.ts index ab5572c..41f6f97 100644 --- a/extension/src/workspace-warden.ts +++ b/extension/src/workspace-warden.ts @@ -1,9 +1,226 @@ -// Stub: see design §5 — workspace lifecycle. -// Responsibilities: snapshot gsettings, append the dashboard workspace, hold -// position invariant on every workspace mutation, restore on disable. +import Gio from 'gi://Gio'; +import type GObject from 'gi://GObject'; +import type Meta from 'gi://Meta'; + +import { log, warn } from './util/logger.js'; +import { loadState, saveState, clearState } from './util/state-store.js'; + +// Design §5: workspace lifecycle. +// +// Enable: +// 1. Snapshot org.gnome.mutter::dynamic-workspaces and +// org.gnome.desktop.wm.preferences::num-workspaces. +// 2. dynamic-workspaces = false (so an empty trailing slot won't be GC'd). +// 3. append_new_workspace at the current end; that's the dashboard slot. +// 4. num-workspaces = the new count (so user-visible setting matches reality). +// +// Steady state: dashboard.index() === n_workspaces - 1 after every mutation. +// +// Disable: +// Remove the dashboard workspace, restore both gsettings to the snapshot. + +const SCHEMA_MUTTER = 'org.gnome.mutter'; +const SCHEMA_WM_PREFS = 'org.gnome.desktop.wm.preferences'; +const KEY_DYNAMIC = 'dynamic-workspaces'; +const KEY_NUM = 'num-workspaces'; + +const STATE_NAME = 'workspace-warden'; + +interface SavedSettings { + dynamicWorkspaces: boolean; + numWorkspaces: number; + preEnableCount: number; +} + +interface HandlerRef { + src: GObject.Object; + id: number; +} export class WorkspaceWarden { + private readonly mutterSettings: Gio.Settings; + private readonly wmSettings: Gio.Settings; + private readonly handlers: HandlerRef[] = []; + + private saved: SavedSettings | null = null; + private dashboardWs: Meta.Workspace | null = null; + private suppressGuard = false; + + constructor() { + this.mutterSettings = new Gio.Settings({ schema_id: SCHEMA_MUTTER }); + this.wmSettings = new Gio.Settings({ schema_id: SCHEMA_WM_PREFS }); + + this.enable(); + } + + getDashboardWorkspace(): Meta.Workspace | null { + return this.dashboardWs; + } + + getDashboardIndex(): number { + return this.dashboardWs?.index() ?? -1; + } + dispose(): void { - // restore snapshotted settings, remove dashboard workspace + for (const h of this.handlers) { + try { + h.src.disconnect(h.id); + } catch (e) { + warn(`disconnect failed: ${String(e)}`); + } + } + this.handlers.length = 0; + + this.removeDashboard(); + this.restoreSettings(); + clearState(STATE_NAME); + } + + // ------------------------------------------------------------------------- + + private enable(): void { + const wm = global.workspace_manager; + const n = wm.get_n_workspaces(); + + // If a prior session crashed mid-enable, the saved state file is the + // only hint we have about what to restore — but we should not trust + // its preEnableCount as the new baseline. Snapshot fresh; the leftover + // file (if any) gets overwritten below. + const stale = loadState(STATE_NAME); + if (stale) { + warn(`stale state file found — last session may not have disabled cleanly`); + } + + this.saved = { + dynamicWorkspaces: this.mutterSettings.get_boolean(KEY_DYNAMIC), + numWorkspaces: this.wmSettings.get_int(KEY_NUM), + preEnableCount: n, + }; + saveState(STATE_NAME, this.saved); + + // Order matters: turn off dynamic FIRST so mutter doesn't react to our + // append by GC'ing it back. Setting dynamic=false makes the count + // authoritative from num-workspaces; we'll update num-workspaces to + // match after the append. + this.suppressGuard = true; + this.mutterSettings.set_boolean(KEY_DYNAMIC, false); + + this.dashboardWs = wm.append_new_workspace(false, global.get_current_time()); + log(`appended dashboard workspace at index ${this.dashboardWs.index()} (n=${wm.get_n_workspaces()})`); + + this.wmSettings.set_int(KEY_NUM, wm.get_n_workspaces()); + this.suppressGuard = false; + + this.connect(wm, 'workspaces-reordered', () => this.enforceLast()); + this.connect(wm, 'workspace-added', () => this.handleWorkspaceAdded()); + this.connect(wm, 'workspace-removed', () => this.handleWorkspaceRemoved()); + this.connect(this.wmSettings, `changed::${KEY_NUM}`, () => this.handleNumWorkspacesChanged()); + this.connect(this.mutterSettings, `changed::${KEY_DYNAMIC}`, () => this.handleDynamicChanged()); + } + + private connect(src: GObject.Object, signal: string, cb: (...args: unknown[]) => void): void { + const id = src.connect(signal, cb); + this.handlers.push({ src, id }); + } + + // -- invariants ---------------------------------------------------------- + + private enforceLast(): void { + if (this.suppressGuard || !this.dashboardWs) return; + const wm = global.workspace_manager; + const last = wm.get_n_workspaces() - 1; + const idx = this.dashboardWs.index(); + if (idx !== last && idx >= 0) { + log(`reordering dashboard from ${idx} to ${last}`); + wm.reorder_workspace(this.dashboardWs, last); + } + } + + private handleWorkspaceAdded(): void { + // Someone (us or another extension) added a workspace. If it landed + // after our dashboard, reorder dashboard back to last. + this.enforceLast(); + } + + private handleWorkspaceRemoved(): void { + if (this.suppressGuard || !this.dashboardWs) return; + + const wm = global.workspace_manager; + let stillPresent = false; + for (let i = 0; i < wm.get_n_workspaces(); i++) { + if (wm.get_workspace_by_index(i) === this.dashboardWs) { + stillPresent = true; + break; + } + } + + if (!stillPresent) { + warn('dashboard workspace was removed externally — recreating'); + this.suppressGuard = true; + this.dashboardWs = wm.append_new_workspace(false, global.get_current_time()); + this.wmSettings.set_int(KEY_NUM, wm.get_n_workspaces()); + this.suppressGuard = false; + } else { + this.enforceLast(); + } + } + + private handleNumWorkspacesChanged(): void { + if (this.suppressGuard) return; + + const wm = global.workspace_manager; + const desired = wm.get_n_workspaces(); + const incoming = this.wmSettings.get_int(KEY_NUM); + + // num-workspaces is the source of truth when dynamic=false; if someone + // bumps it down, mutter will trim from the end and kill our dashboard. + // Clamp it back up so reality (workspace_manager count) wins. + if (incoming !== desired) { + log(`external num-workspaces change (${incoming}) — clamping to ${desired}`); + this.suppressGuard = true; + this.wmSettings.set_int(KEY_NUM, desired); + this.suppressGuard = false; + } + } + + private handleDynamicChanged(): void { + if (this.suppressGuard) return; + + const enabled = this.mutterSettings.get_boolean(KEY_DYNAMIC); + if (enabled) { + warn('dynamic-workspaces was turned on externally — forcing back off'); + this.suppressGuard = true; + this.mutterSettings.set_boolean(KEY_DYNAMIC, false); + this.suppressGuard = false; + } + } + + // -- teardown ------------------------------------------------------------ + + private removeDashboard(): void { + if (!this.dashboardWs) return; + this.suppressGuard = true; + try { + global.workspace_manager.remove_workspace(this.dashboardWs, global.get_current_time()); + log('removed dashboard workspace'); + } catch (e) { + warn(`remove_workspace failed: ${String(e)}`); + } + this.dashboardWs = null; + this.suppressGuard = false; + } + + private restoreSettings(): void { + if (!this.saved) return; + this.suppressGuard = true; + try { + this.wmSettings.set_int(KEY_NUM, this.saved.numWorkspaces); + this.mutterSettings.set_boolean(KEY_DYNAMIC, this.saved.dynamicWorkspaces); + log(`restored num-workspaces=${this.saved.numWorkspaces}, dynamic-workspaces=${this.saved.dynamicWorkspaces}`); + } catch (e) { + warn(`restoreSettings failed: ${String(e)}`); + } + this.suppressGuard = false; + this.saved = null; } } diff --git a/extension/tsconfig.json b/extension/tsconfig.json index 11fb0e8..4cd9034 100644 --- a/extension/tsconfig.json +++ b/extension/tsconfig.json @@ -4,7 +4,14 @@ "outDir": "./dist", "rootDir": "./src", "noEmit": true, - "types": [] + "types": [ + "@girs/gnome-shell/ambient", + "@girs/meta-16/ambient", + "@girs/gio-2.0/ambient", + "@girs/glib-2.0/ambient", + "@girs/gobject-2.0/ambient", + "@girs/gtk-3.0/ambient" + ] }, "include": ["src/**/*"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..a14497e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1209 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + esbuild: + specifier: ^0.24.0 + version: 0.24.2 + typescript: + specifier: ^5.6.0 + version: 5.9.3 + + container: + devDependencies: + '@girs/gio-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/gjs': + specifier: ^4.0.0 + version: 4.0.0 + '@girs/glib-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/gobject-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/gtk-3.0': + specifier: ^3.24.53-4.0.0 + version: 3.24.53-4.0.0 + '@girs/webkit2-4.1': + specifier: ^2.52.1-4.0.0 + version: 2.52.1-4.0.0 + + extension: + devDependencies: + '@girs/gio-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/glib-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/gnome-shell': + specifier: ^50.0.0 + version: 50.0.0 + '@girs/gobject-2.0': + specifier: ^2.88.0-4.0.0 + version: 2.88.0-4.0.0 + '@girs/gtk-3.0': + specifier: ^3.24.53-4.0.0 + version: 3.24.53-4.0.0 + '@girs/meta-16': + specifier: ^16.0.0-4.0.0 + version: 16.0.0-4.0.0 + + extension/widgets-builtin/clock: + dependencies: + '@dashward/widget-sdk': + specifier: workspace:* + version: link:../../../sdk + + sdk: {} + +packages: + + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@girs/accountsservice-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-6kDcrmBKqEeSBBawoyKJvDogT7k9oSnVzgJ8TfAZPRIb4USjFzIt+LJ5PrvGGA9ZvHzNNPoMWbrvyyltU+/Z/Q==} + + '@girs/adw-1@1.10.0-4.0.0-rc.17': + resolution: {integrity: sha512-jNdTKVjdNFMiV7JPimdPudsvkbByeCPkQtiYIemiSwvJ5LQfB48rEf7pYYGBrAtUSBjSUjayWVynGOESNsQ7Bg==} + + '@girs/atk-1.0@2.60.0-4.0.0': + resolution: {integrity: sha512-dZjTJihSuW6Z8bv6W5Yb6pLZeMEnap1TWsnS2eHNMad66nIPPIHhEjhympa3dNI4S17neOVJHVKQLIO7cnzvkg==} + + '@girs/atk-1.0@2.60.0-4.0.0-rc.17': + resolution: {integrity: sha512-Mc4aOlvHCfcE0a0r/vsULbtO4fYDo0SL5dh2F037B/NG/O6ByNn4YLpIdQUnPkO1sY7ViGb4HY/aCtWcPZIcdA==} + + '@girs/cairo-1.0@1.0.0-4.0.0': + resolution: {integrity: sha512-Y5Ltl7vUwF98tYMnOIqjnQDBtot8p3xj4ykxRw1ZZJjLN8yupNSgJOedwjeEzPy0q9UHROl7ySGOx3P47j8Rhg==} + + '@girs/cairo-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-CAR/TbYfxWq+pJl7H7s4dG6zH3KN1LUYy+YAFFmaopFJEaLheMN9j84gX+VsF23UwZvKVZH+PX5qk6LSrBdWjg==} + + '@girs/clutter-16@16.0.0-4.0.0': + resolution: {integrity: sha512-VQrCZf17Rj3MrH4ARrk45xMX5hnO8R8ChAxLuCB7zljqSoqDFYvYi/dBbGLtOj+ulYRQ7L49XJACLcUva8yCdA==} + + '@girs/clutter-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-Tea+UB/JjCmlfYmH5BvX/EayKKkcRssjaVYVhlW7EYdk1/rU2MRzhyB/MYcS/OMt3aKZFgJU4wdmD+pB2807Og==} + + '@girs/cogl-16@16.0.0-4.0.0': + resolution: {integrity: sha512-P6E8Z18jO2TTGTahsyssnfd3wGtYOXeNwJD7l5isAEb4IMdMNM+W9EQhilzSeWjqAqfy7SmEKMhhFcTMDHuNdw==} + + '@girs/cogl-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-EK0/yMoKGgFlje/jcGduF3nNgz6wj0rR3xNvfBTTIAG3Sf25EBw1UzqMZCpwsp+4nxexSJKxQgdJ05YxNnC1WQ==} + + '@girs/cogl-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-C9TcbrfzEOXlD0XpM5S+bNB2mPGDQKGwGcxDH1Y7sBlL6EEzdGnFquIiTh0M5HnH3pJEwtpec+U/Az9eYyMIYA==} + + '@girs/freetype2-2.0@2.0.0-4.0.0': + resolution: {integrity: sha512-n8MZrDGqdoE4AhpiJq9mzwFEyPCO1Oxemm6pdKb1GDNQdcZc+pwoOtpJLVZJv9ZwDaOA54YCe72cYy4goqu5Xg==} + + '@girs/freetype2-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-llJxKidMOX8HDcKXVg051EPQ08BFOeIcYSnUlLzLETWDE5mZv+slXTfH6k5cZX+5VH66fJvOoBALXl/MebkbCA==} + + '@girs/gck-2@4.4.0-4.0.0-rc.17': + resolution: {integrity: sha512-l382BN5YD4gXfoHuG7yvhYH87B6yw+qKdxToWLlJWV6L8LJFCqaSMg+Ezn+nKC+czRxb/57YhOIRp39wzoZiGA==} + + '@girs/gcr-4@4.4.0-4.0.0-rc.17': + resolution: {integrity: sha512-QX3BI9Oq8Zwmhbxb/1UfJ6E0GWC3gCQObxMTxbNPlSWACXdHtTwBON1tEh29TwkyEOvuIfdHXSMrJjV+iQdK+A==} + + '@girs/gdesktopenums-3.0@3.0.0-4.0.0': + resolution: {integrity: sha512-2bMHuFsq6Uxp1drKQuHavCL2W1xt0aqyKYOPrEjgyWjL87jSxh5vGygKjrhaDEtL8kV/WfsfjDYJHoM/c/1WPw==} + + '@girs/gdesktopenums-3.0@3.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-MJJyJQb9dTtVUe54NJ9Y+jq5VqI7gnf25SWrbw5QbHeswDEvUP8Blt1+cii9nKJncADbpEkHnOFeNw0BLio7uw==} + + '@girs/gdk-3.0@3.24.53-4.0.0': + resolution: {integrity: sha512-xXw6Z0AQNBSnl3O8m+98kVCTRDv+VqgdErwpeiR5pTaQMHE8OScklQSPk601Qw5QLsE54N/0sLUL+eOLJ0X2Kg==} + + '@girs/gdk-4.0@4.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-1UPtr5LfLn558R3tXADVJV9vDWc3rQRwSvC0C8gr2/NesRbTb/O7r95ikgxKGDD6MwV8fW+zrMSGBJwtvwifHg==} + + '@girs/gdkpixbuf-2.0@2.0.0-4.0.0': + resolution: {integrity: sha512-T9JzGxcgzXxF4AlgtL9LiyuMJ3z3Ppvtdx//mZLwcO7tNO1ET3fUnjtFJk95MUQjxx6WbHdiSEYbv3GfDBYGOQ==} + + '@girs/gdkpixbuf-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-vezXIM2WFni7f/IxslMvd1RFk/zJj6YNO0yrSfAShtqF1u8hxUvJc4p0S6Ve2RYh0cRBD1WZRYvK91OlnA1VXg==} + + '@girs/gdm-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-jUW8J8UWiGa5q3tshvqDiCNRr6Hs5zAWDNtIfVBWvOI4Lgi2iw6hxzMZsjqUN8IwZs1/gj/DMbWG9clB/g17Bw==} + + '@girs/gio-2.0@2.88.0-4.0.0': + resolution: {integrity: sha512-8Ksm5eUauITFZ1SWZXMx3hD1Vq38xstdjcRVCfgaJV56JfUExSbx8nG/dQbnOwdVu9layinfjxD3ooNo8iulCA==} + + '@girs/gio-2.0@2.88.0-4.0.0-rc.17': + resolution: {integrity: sha512-OkyK3LvTjgaRIiySxZdDdOM07BFRzy7SRPj1J4YbMSZpqmkpWRhmeq7uZoZCLqQxAQk4MUdAOp17XiUGZFpibg==} + + '@girs/giounix-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-bS3SdZ0LCHa+mGJYw+JNly7TqjQM5xlhdxKfnHgvwS5XzY+6Ko8sIq2ozi76Pho/cz5TJPigbxuW6OywxqqHFw==} + + '@girs/gjs@4.0.0': + resolution: {integrity: sha512-XfBojuB/tbxGk44InKSZ8xNcXza8wYNRYDtwF8koAgH59ViEoWSs6LvlsW2tZZ5Hjydrh/2IOfua9yOyuqD99g==} + + '@girs/gjs@4.0.0-rc.17': + resolution: {integrity: sha512-8UzowTxia0CzmyW7NRLnWNeEx+ImFxi4hyuZZppSfJBHQj4/sbaQSKf672CIbtOzsbVdeKQyQ8WWzlvA8rTxzQ==} + + '@girs/gl-1.0@1.0.0-4.0.0': + resolution: {integrity: sha512-9OWhWggvbyTukj6Odu5etmF58EOxSu3d7vSTt9le0YBWc0PoT5inFUHhehbGvkLkymyRV1NOMdA9XSfAfjrkqw==} + + '@girs/gl-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-2radfaX9jOKQ06yyXS5f7bjTXcWvYRP+bAQsxqyqm3/2wOjyfT+XnMRKfj5tUu6yCPXUXBix2jVwNANibWcZBA==} + + '@girs/glib-2.0@2.88.0-4.0.0': + resolution: {integrity: sha512-b4WRo4e2GkgpVwmd2H8fxsvmMG1TG+CVF8kIwJhifMJbJkCrIRY9UMTwp2RBVo4prOE05dQJvjAygQJ9xJ792Q==} + + '@girs/glib-2.0@2.88.0-4.0.0-rc.17': + resolution: {integrity: sha512-nTZBcDY++60wLo2OfrOWAYe7Lw9BRVIEIwiQ+7CieDAzgBgpMs1QE2xY3xwfUHEBIyzsDSZMd2DW4afHXtkz3g==} + + '@girs/gmodule-2.0@2.0.0-4.0.0': + resolution: {integrity: sha512-P7QHqyrAoxSc8ICwkaMzFhkt/jcao04/gJiv+tmtP+poMBEwoylEZh7z3qbw3ZJ/YSx8ANCPuYD8aZp5LFwRdQ==} + + '@girs/gmodule-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-47UwefN6gjqWSZRrYLGnQumVAsughnu+gHBuDkeB4ZZCPZko4AiAb+G/WB6tTWdAy08pm+tLvlQ1vjP1eN9bQQ==} + + '@girs/gnome-shell@50.0.0': + resolution: {integrity: sha512-ki3VBO/WUvinGRB8lSPa6Rn0qJwEs3cQOvZa/P8MzM/68mujLPy453qVT6fwyMPqHVusAv3JZuj9HnUewx1GeQ==} + + '@girs/gnomebg-4.0@4.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-lucIrA5lv9ga6RQYvlMXK196fCneXAYgyX1/nRL9hTSsSvNDPczOwrPOfhvI/oOFmJTfR1tXq18UqAc1XcTpgA==} + + '@girs/gnomebluetooth-3.0@3.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-6Ky3o26G5Xnbq/wg51siQEljBlB4sNrWpfYOsl9lch7eAtupNBqWbVm/Dxd4G0B2iXkmMLPSPOSahyTyW5HMiA==} + + '@girs/gnomedesktop-4.0@4.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-xiJ5sYqnrJ7iGD9DRq01v6ylf2kjjgxBt3lAa/+zUfSYiq5TERJ1WHbXkJXDWiqNhEGntQ/NTfeCWDqBtWkVDQ==} + + '@girs/gobject-2.0@2.88.0-4.0.0': + resolution: {integrity: sha512-oLMjuRsiWRv+Fh7vMQQvD7CGeRrPyWdig0EW0pBY7oqdzaVi5IFNRtPsvSKIG583nSHxWohhL+oQv3AeJ1IdWA==} + + '@girs/gobject-2.0@2.88.0-4.0.0-rc.17': + resolution: {integrity: sha512-pUkGnIrYVgRzFLWJSXU+pwWpWzrTCzbDeZLu1QzxpBT0n/t5HJnIGX3PYBnQSvXbBgVFXoSOt1pOfB7m8J2agQ==} + + '@girs/graphene-1.0@1.0.0-4.0.0': + resolution: {integrity: sha512-IjcGAjgrdLRbY/hFPCxVdVv+O/AcxosHauNkHaq6nA4f2iH2pwF9kiQNGw/k14KS1aLnWTxqaiI+FpRUT7yKlA==} + + '@girs/graphene-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-9+b0ApjMsG8Pq2bLyug3mE4lO3cFNqoEvtQIl3z50cXz/4alpPI+GdBL9C/SeiqMiEK+x3RbPsFXm7r/epkGDg==} + + '@girs/gsk-4.0@4.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-NztZASK0Lahi2whus75NeVOOl/RcJRjswVY9HDCZjO38KoFWIO8rt1aT0z5Dw8YXscnNhkkbQcMh+myWq0yHuw==} + + '@girs/gtk-3.0@3.24.53-4.0.0': + resolution: {integrity: sha512-O2gjFCl1KAq3tRFMO8/H4z+zToDK2kAKH15RoccxB7jfnwaE0LXhToArsWn86trp5WoQz+zjgNWIqegetqIqkQ==} + + '@girs/gtk-4.0@4.23.0-4.0.0-rc.17': + resolution: {integrity: sha512-tbX3nR68/n6BhhePMJHjIp9gSHfM+noyUjpx+4Pd1VImbEWjfZKqn92+X9zQZWyD6rgmaRu0CRGbD3z5ecNMcA==} + + '@girs/gvc-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-KTf7RhTgz+C0AwIEK/rDixvLzxmmYyUCmNSIlnWN1Ct2OKt9wRAPESPJIqb4AOOvJkDkm7XYlP4pQKuk7iF2OQ==} + + '@girs/harfbuzz-0.0@13.2.1-4.0.0': + resolution: {integrity: sha512-aeRc3skgoZtCs6hihBFzBq5wz3G9ybw2TiRd8AMI9ZOHyxQa9V09cqVm3Gv5eFGtd3h7YjME7VBsFe0AiU/CDQ==} + + '@girs/harfbuzz-0.0@13.2.1-4.0.0-rc.17': + resolution: {integrity: sha512-sefFHkbo++qj7Fbt9l6VmAhHtGFvVoQEyIsfQtsWLCURj2A4YCcBMvFhD2IZRSEBE6ZxyIvxszyzauintFcVlg==} + + '@girs/javascriptcore-4.1@2.52.1-4.0.0': + resolution: {integrity: sha512-zfn0To1bdSCcH9MW/D0dkDKC8Z9tSRmzr3ZUqRkOwfPN5q9OQ5263VHbeoxB1zAG3dazMg27ZZkJNKRUVXHEOA==} + + '@girs/meta-16@16.0.0-4.0.0': + resolution: {integrity: sha512-QTYeWyFRoH8RoBt9pVY2KCpwERkMEQg2KB43OObWUf4k1FzbjYL1v2eXjHzmxl/t5ekEgnInE9iah47Chx8udg==} + + '@girs/meta-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-1bNDgyt2MJuv/K0byQklGLSYXljUddZQEwYeQU7+ZJKRX/9yT8JIx71Vcn1kjFIgU4/jAJIbqKwplrEoZ/cTQA==} + + '@girs/mtk-16@16.0.0-4.0.0': + resolution: {integrity: sha512-eOXhpywQH04B8mK1K28Eq2+yb0oBIxJaQcicxVeVb+w+A2CEJCXXYybZgZTzqebOO2FApaBEBxdJb8zL12eakA==} + + '@girs/mtk-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-ioFpaXxj97QfxiGFq9vuUwzzwSs0AjCNfZopqbklhpk43jvK3A4DPVrfxdTwpAXK1+ig6mByBHrFL1tp3VXe8Q==} + + '@girs/nm-1.0@1.56.0-4.0.0-rc.17': + resolution: {integrity: sha512-Xu9wViW0WuEL9kp5wl0ybVVQCiJ6DbMjGibg48mE6aWq336jE/GYvEBdGr/VjSsmP3k1KtehKB3BqHIz4DXq7w==} + + '@girs/pango-1.0@1.57.1-4.0.0': + resolution: {integrity: sha512-KSMZ5Y7RD5LjGgwIgZXObYvjhpjGy+MNQjdSRXFlT+jeqNUtjSJOKE8fWQv5vhDH9ddcKXGSi4h0nuhs5dzHfA==} + + '@girs/pango-1.0@1.57.1-4.0.0-rc.17': + resolution: {integrity: sha512-bsYFe06tlIAcqcKK8ALOBOzIs04sgTIturR0tGyeC1bxwPPU+2VTeHDarRMbG7tCq9U1B6hCSHzPaT1Z94onHg==} + + '@girs/pangocairo-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-f6NfgDiNJVnRCa4QVBa4hvkGs0cVVfTqy1chvxfN95YjLLeO9rmlYlpqPoonN39ttM+HuEG0X4IuQoY1yG3zxw==} + + '@girs/polkit-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-JCPnI7b6NPByEsmERKDnVOCbvsSpApJM2nPkcoibJD+YZR/s0xZsTU0gOAWYGGRvtTSDxovoSc0IY9KpLCxu4g==} + + '@girs/polkitagent-1.0@1.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-5k/rJQY2GoamqED02ljM0f4He0vR5ubuHd21H4VNv/2q3TA1vfbR8aid8B+1dLTNCbOabeNeJa8RLL5fZm8/cA==} + + '@girs/shell-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-jerEw69d0VqNkKgDi14T111/vIlhDfNKeiH0My/xRvodIAFD/4Xfjeod4N+GpUUNydt+OWuI3gk2MPb7aSSlYA==} + + '@girs/shew-0@0.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-YUzSrTT7euZufSXGDRMfxICWf0056TgwFr9P+0c9BdUAhFuCzlPv17/ozeCE/f1Rj2QNHS/THbwSCGrlmv62sg==} + + '@girs/soup-3.0@3.6.6-4.0.0': + resolution: {integrity: sha512-Q2p0gO7xTIotbQ7X25BFBvgXQIUpItLnn+CRNWYUw79Vd6hNk0uJExrNYaD72bplkt303gHvggw0yhHfDqRrxQ==} + + '@girs/st-18@18.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-Qtj7ECDtQ6EcdY+sPe/ZY7aCIy7ZnXgQmxiqb2uJyjPZw9/P/7MJnZTDxb51OeWUkwWdyBcCWylA6yCsypLduA==} + + '@girs/upowerglib-1.0@1.91.1-4.0.0-rc.17': + resolution: {integrity: sha512-mbJeKrndak2azRWrBlnv9rh46OgszLF94yB+UKjfUQJILmRMwLSVA3IDQtVMJpOPSOnU/0HIoFIuUHk3t5PDcg==} + + '@girs/webkit2-4.1@2.52.1-4.0.0': + resolution: {integrity: sha512-4Td1PYSpi2C6ZVYHzGaUma1T9hCLLC+s8T+b9Xvr4ZxFjwx2ah1JlleZFFA3HxuvjZqE+8fyjbSa9NSHbneCLw==} + + '@girs/xfixes-4.0@4.0.0-4.0.0': + resolution: {integrity: sha512-GGBVFN2jw+fRqxtj6e9ACtTyTUf2TwwGoBbIBakRubze/8PPfwBCa0xTcOilk+4yILlcnOnjP1PigQ7Ci1XFVA==} + + '@girs/xfixes-4.0@4.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-kWgv5+PskncaS2rWfibkzT6UzBYYoSjygApRr/ptF3Yp6jW+NSltgak32F338JPlEAE4mRenqMljpx1740d1Sg==} + + '@girs/xlib-2.0@2.0.0-4.0.0': + resolution: {integrity: sha512-/BG82bm84UE162S6ztKXSN2xB+CCigLLB0qU7A8CNrHT+p5BWqAJ79vWRqq94N+9zYzZcN0mjXwUo3I5N5jCmQ==} + + '@girs/xlib-2.0@2.0.0-4.0.0-rc.17': + resolution: {integrity: sha512-LaECgnppICePEdVOYvXSvUFe8V8NUvDp0aNDRHCSA9VmqzPVNQWcik4UI/75wNOp4Mz5I8N6XkM0PGZzPgpObA==} + + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + +snapshots: + + '@esbuild/aix-ppc64@0.24.2': + optional: true + + '@esbuild/android-arm64@0.24.2': + optional: true + + '@esbuild/android-arm@0.24.2': + optional: true + + '@esbuild/android-x64@0.24.2': + optional: true + + '@esbuild/darwin-arm64@0.24.2': + optional: true + + '@esbuild/darwin-x64@0.24.2': + optional: true + + '@esbuild/freebsd-arm64@0.24.2': + optional: true + + '@esbuild/freebsd-x64@0.24.2': + optional: true + + '@esbuild/linux-arm64@0.24.2': + optional: true + + '@esbuild/linux-arm@0.24.2': + optional: true + + '@esbuild/linux-ia32@0.24.2': + optional: true + + '@esbuild/linux-loong64@0.24.2': + optional: true + + '@esbuild/linux-mips64el@0.24.2': + optional: true + + '@esbuild/linux-ppc64@0.24.2': + optional: true + + '@esbuild/linux-riscv64@0.24.2': + optional: true + + '@esbuild/linux-s390x@0.24.2': + optional: true + + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + + '@esbuild/netbsd-x64@0.24.2': + optional: true + + '@esbuild/openbsd-arm64@0.24.2': + optional: true + + '@esbuild/openbsd-x64@0.24.2': + optional: true + + '@esbuild/sunos-x64@0.24.2': + optional: true + + '@esbuild/win32-arm64@0.24.2': + optional: true + + '@esbuild/win32-ia32@0.24.2': + optional: true + + '@esbuild/win32-x64@0.24.2': + optional: true + + '@girs/accountsservice-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/adw-1@1.10.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gsk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gtk-4.0': 4.23.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/atk-1.0@2.60.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/atk-1.0@2.60.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/cairo-1.0@1.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/cairo-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/clutter-16@16.0.0-4.0.0': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0 + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/cogl-16': 16.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/gl-1.0': 1.0.0-4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/graphene-1.0': 1.0.0-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + '@girs/mtk-16': 16.0.0-4.0.0 + '@girs/pango-1.0': 1.57.1-4.0.0 + '@girs/xlib-2.0': 2.0.0-4.0.0 + + '@girs/clutter-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0-rc.17 + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/cogl-18': 18.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + + '@girs/cogl-16@16.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gl-1.0': 1.0.0-4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/graphene-1.0': 1.0.0-4.0.0 + '@girs/mtk-16': 16.0.0-4.0.0 + '@girs/xlib-2.0': 2.0.0-4.0.0 + + '@girs/cogl-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + + '@girs/cogl-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/freetype2-2.0@2.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/freetype2-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gck-2@4.4.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gcr-4@4.4.0-4.0.0-rc.17': + dependencies: + '@girs/gck-2': 4.4.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gdesktopenums-3.0@3.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gdesktopenums-3.0@3.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gdk-3.0@3.24.53-4.0.0': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + '@girs/pango-1.0': 1.57.1-4.0.0 + + '@girs/gdk-4.0@4.0.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/gdkpixbuf-2.0@2.0.0-4.0.0': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gdkpixbuf-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gdm-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gio-2.0@2.88.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gio-2.0@2.88.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/giounix-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gjs@4.0.0': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gjs@4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gl-1.0@1.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gl-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/glib-2.0@2.88.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/glib-2.0@2.88.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gmodule-2.0@2.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/gmodule-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gnome-shell@50.0.0': + dependencies: + '@girs/accountsservice-1.0': 1.0.0-4.0.0-rc.17 + '@girs/adw-1': 1.10.0-4.0.0-rc.17 + '@girs/atk-1.0': 2.60.0-4.0.0-rc.17 + '@girs/clutter-18': 18.0.0-4.0.0-rc.17 + '@girs/cogl-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gcr-4': 4.4.0-4.0.0-rc.17 + '@girs/gdm-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/giounix-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gnomebg-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gnomebluetooth-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gnomedesktop-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gtk-4.0': 4.23.0-4.0.0-rc.17 + '@girs/gvc-1.0': 1.0.0-4.0.0-rc.17 + '@girs/meta-18': 18.0.0-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + '@girs/polkit-1.0': 1.0.0-4.0.0-rc.17 + '@girs/shell-18': 18.0.0-4.0.0-rc.17 + '@girs/shew-0': 0.0.0-4.0.0-rc.17 + '@girs/st-18': 18.0.0-4.0.0-rc.17 + '@girs/upowerglib-1.0': 1.91.1-4.0.0-rc.17 + + '@girs/gnomebg-4.0@4.0.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gdk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gnomedesktop-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/gnomebluetooth-3.0@3.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gnomedesktop-4.0@4.0.0-4.0.0-rc.17': + dependencies: + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gobject-2.0@2.88.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + + '@girs/gobject-2.0@2.88.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/graphene-1.0@1.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/graphene-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/gsk-4.0@4.0.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/gtk-3.0@3.24.53-4.0.0': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0 + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gdk-3.0': 3.24.53-4.0.0 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + '@girs/pango-1.0': 1.57.1-4.0.0 + '@girs/xlib-2.0': 2.0.0-4.0.0 + + '@girs/gtk-4.0@4.23.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gsk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/gvc-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/harfbuzz-0.0@13.2.1-4.0.0': + dependencies: + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/harfbuzz-0.0@13.2.1-4.0.0-rc.17': + dependencies: + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/javascriptcore-4.1@2.52.1-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/meta-16@16.0.0-4.0.0': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0 + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/clutter-16': 16.0.0-4.0.0 + '@girs/cogl-16': 16.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/gl-1.0': 1.0.0-4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/graphene-1.0': 1.0.0-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + '@girs/mtk-16': 16.0.0-4.0.0 + '@girs/pango-1.0': 1.57.1-4.0.0 + '@girs/xfixes-4.0': 4.0.0-4.0.0 + '@girs/xlib-2.0': 2.0.0-4.0.0 + + '@girs/meta-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0-rc.17 + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/clutter-18': 18.0.0-4.0.0-rc.17 + '@girs/cogl-18': 18.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/xfixes-4.0': 4.0.0-4.0.0-rc.17 + '@girs/xlib-2.0': 2.0.0-4.0.0-rc.17 + + '@girs/mtk-16@16.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/graphene-1.0': 1.0.0-4.0.0 + + '@girs/mtk-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/nm-1.0@1.56.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/pango-1.0@1.57.1-4.0.0': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + + '@girs/pango-1.0@1.57.1-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + + '@girs/pangocairo-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + + '@girs/polkit-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/polkitagent-1.0@1.0.0-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/polkit-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/shell-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0-rc.17 + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/clutter-18': 18.0.0-4.0.0-rc.17 + '@girs/cogl-18': 18.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gck-2': 4.4.0-4.0.0-rc.17 + '@girs/gcr-4': 4.4.0-4.0.0-rc.17 + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/giounix-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gvc-1.0': 1.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/meta-18': 18.0.0-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + '@girs/nm-1.0': 1.56.0-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/polkit-1.0': 1.0.0-4.0.0-rc.17 + '@girs/polkitagent-1.0': 1.0.0-4.0.0-rc.17 + '@girs/st-18': 18.0.0-4.0.0-rc.17 + '@girs/xfixes-4.0': 4.0.0-4.0.0-rc.17 + '@girs/xlib-2.0': 2.0.0-4.0.0-rc.17 + + '@girs/shew-0@0.0.0-4.0.0-rc.17': + dependencies: + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/gsk-4.0': 4.0.0-4.0.0-rc.17 + '@girs/gtk-4.0': 4.23.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/pangocairo-1.0': 1.0.0-4.0.0-rc.17 + + '@girs/soup-3.0@3.6.6-4.0.0': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/st-18@18.0.0-4.0.0-rc.17': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0-rc.17 + '@girs/cairo-1.0': 1.0.0-4.0.0-rc.17 + '@girs/clutter-18': 18.0.0-4.0.0-rc.17 + '@girs/cogl-18': 18.0.0-4.0.0-rc.17 + '@girs/freetype2-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gdesktopenums-3.0': 3.0.0-4.0.0-rc.17 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/gl-1.0': 1.0.0-4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + '@girs/graphene-1.0': 1.0.0-4.0.0-rc.17 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0-rc.17 + '@girs/meta-18': 18.0.0-4.0.0-rc.17 + '@girs/mtk-18': 18.0.0-4.0.0-rc.17 + '@girs/pango-1.0': 1.57.1-4.0.0-rc.17 + '@girs/xfixes-4.0': 4.0.0-4.0.0-rc.17 + '@girs/xlib-2.0': 2.0.0-4.0.0-rc.17 + + '@girs/upowerglib-1.0@1.91.1-4.0.0-rc.17': + dependencies: + '@girs/gio-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gjs': 4.0.0-rc.17 + '@girs/glib-2.0': 2.88.0-4.0.0-rc.17 + '@girs/gmodule-2.0': 2.0.0-4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/webkit2-4.1@2.52.1-4.0.0': + dependencies: + '@girs/atk-1.0': 2.60.0-4.0.0 + '@girs/cairo-1.0': 1.0.0-4.0.0 + '@girs/freetype2-2.0': 2.0.0-4.0.0 + '@girs/gdk-3.0': 3.24.53-4.0.0 + '@girs/gdkpixbuf-2.0': 2.0.0-4.0.0 + '@girs/gio-2.0': 2.88.0-4.0.0 + '@girs/gjs': 4.0.0 + '@girs/glib-2.0': 2.88.0-4.0.0 + '@girs/gmodule-2.0': 2.0.0-4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + '@girs/gtk-3.0': 3.24.53-4.0.0 + '@girs/harfbuzz-0.0': 13.2.1-4.0.0 + '@girs/javascriptcore-4.1': 2.52.1-4.0.0 + '@girs/pango-1.0': 1.57.1-4.0.0 + '@girs/soup-3.0': 3.6.6-4.0.0 + '@girs/xlib-2.0': 2.0.0-4.0.0 + + '@girs/xfixes-4.0@4.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/xfixes-4.0@4.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + '@girs/xlib-2.0@2.0.0-4.0.0': + dependencies: + '@girs/gjs': 4.0.0 + '@girs/gobject-2.0': 2.88.0-4.0.0 + + '@girs/xlib-2.0@2.0.0-4.0.0-rc.17': + dependencies: + '@girs/gjs': 4.0.0-rc.17 + '@girs/gobject-2.0': 2.88.0-4.0.0-rc.17 + + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + typescript@5.9.3: {}