diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 6be70abac..0e85dbbe1 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -4,11 +4,10 @@ env: parser: "@babel/eslint-parser" parserOptions: sourceType: module - ecmaVersion: 2023 requireConfigFile: false babelOptions: plugins: - - "@babel/plugin-syntax-import-assertions" + - "@babel/plugin-syntax-import-attributes" extends: - eslint:recommended - plugin:import/errors diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 000000000..8d7e2b9c7 --- /dev/null +++ b/.gitconfig @@ -0,0 +1,4 @@ +[re.sonny.Commit] +title-length-hint=72 +body-length-wrap=50 +auto-capitalize-title=true diff --git a/.gitmodules b/.gitmodules index 0f4a5ee60..02339e69e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,6 +8,6 @@ path = blueprint-compiler url = https://gitlab.gnome.org/jwestman/blueprint-compiler.git [submodule "src/langs/typescript/template/gi-types"] - path = src/langs/typescript/gi-types + path = gi-types url = https://gitlab.gnome.org/BrainBlasted/gi-typescript-definitions.git branch = nightly diff --git a/Makefile b/Makefile index 1def6fedc..12ac5ea7a 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,8 @@ SHELL:=/bin/bash -O globstar setup: flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo - flatpak install --or-update --user --noninteractive flathub org.gnome.Sdk//46 org.flatpak.Builder org.freedesktop.Sdk.Extension.rust-stable//23.08 org.freedesktop.Sdk.Extension.vala//23.08 org.freedesktop.Sdk.Extension.llvm18//23.08 org.freedesktop.Sdk.Extension.node20//23.08 org.freedesktop.Sdk.Extension.typescript//23.08 + flatpak install --or-update --user --noninteractive flathub org.gnome.Sdk//47 org.flatpak.Builder org.freedesktop.Sdk.Extension.rust-stable//24.08 org.freedesktop.Sdk.Extension.vala//24.08 org.freedesktop.Sdk.Extension.llvm18//24.08 org.freedesktop.Sdk.Extension.node20//24.08 #org.freedesktop.Sdk.Extension.typescript//24.08 # flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo -# flatpak install --or-update --user --noninteractive flathub-beta org.freedesktop.Sdk.Extension.rust-stable//24.08beta org.freedesktop.Sdk.Extension.vala//24.08beta org.freedesktop.Sdk.Extension.llvm18//24.08beta org.freedesktop.Sdk.Extension.node20//24.08beta org.freedesktop.Sdk.Extension.typescript//24.08beta # flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo # flatpak install --or-update --user --noninteractive gnome-nightly org.gnome.Sdk//master git submodule update --init @@ -70,14 +69,14 @@ ci: setup build test # make sure to test without the sdk extensions installed sandbox: setup flatpak run org.flatpak.Builder --ccache --user --install --force-clean flatpak build-aux/re.sonny.Workbench.Devel.json -# flatpak remove --noninteractive org.freedesktop.Sdk.Extension.rust-stable//23.08 org.freedesktop.Sdk.Extension.vala//23.08 org.freedesktop.Sdk.Extension.llvm18//23.08 +# flatpak remove --noninteractive org.freedesktop.Sdk.Extension.rust-stable//24.08 org.freedesktop.Sdk.Extension.vala//24.08 org.freedesktop.Sdk.Extension.llvm18//24.08 flatpak run --command="bash" re.sonny.Workbench.Devel flatpak: flatpak run org.flatpak.Builder --ccache --force-clean flatpak build-aux/re.sonny.Workbench.Devel.json # This is what Flathub does - consider moving to lint flatpak run --env=G_DEBUG=fatal-criticals --command=appstream-util org.flatpak.Builder validate flatpak/files/share/appdata/re.sonny.Workbench.Devel.appdata.xml - flatpak run --command="desktop-file-validate" --filesystem=host:ro org.freedesktop.Sdk//23.08 flatpak/files/share/applications/re.sonny.Workbench.Devel.desktop + flatpak run --command="desktop-file-validate" --filesystem=host:ro org.freedesktop.Sdk//24.08 flatpak/files/share/applications/re.sonny.Workbench.Devel.desktop # appstreamcli validate --override=release-time-missing=info /path/to/your/app.metainfo.xml flatpak run org.flatpak.Builder --run flatpak build-aux/re.sonny.Workbench.Devel.json bash diff --git a/README.md b/README.md index fa2f08659..0d9dc0e5d 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,11 @@ Among other things, Workbench comes with - Live GTK/CSS preview - Library of 100+ examples + - JavaScript, Rust, Python and Vala support - Declarative user interface syntax - Autosave, sessions and projects -- Code linter and formatter +- Code diagnostics, completion and formatter - Terminal output ℹ️ Workbench is made possible by Flatpak. Only Flathub Workbench is supported. @@ -32,8 +33,8 @@ Among other things, Workbench comes with | ---------- | --------- | ------ | ---------------- | | JavaScript | ✅ | ✅ | 99 | | Python | ✅ | ✅ | 92 | -| Vala | ✅ | ✅ | 92 | -| Rust | ✅ | ✅ | 45 | +| Vala | ✅ | ✅ | 91 | +| Rust | ✅ | ✅ | 52 | | Blueprint | ✅ | ✅ | | | CSS | ✅ | ✅ | | diff --git a/blueprint-compiler b/blueprint-compiler index adc2be145..8e10fcf86 160000 --- a/blueprint-compiler +++ b/blueprint-compiler @@ -1 +1 @@ -Subproject commit adc2be14545289778179508ac1f9797a93bc2686 +Subproject commit 8e10fcf8692108b9d4ab78f41086c5d7773ef864 diff --git a/build-aux/library.js b/build-aux/library.js index fa7b4fe91..ec18b355e 100755 --- a/build-aux/library.js +++ b/build-aux/library.js @@ -95,6 +95,14 @@ const demos = []; demos.push(demo); } + demos.sort((a, b) => { + if (a.name === "Welcome") return -1; + if (b.name === "Welcome") return 1; + if (a.name === "Platform Tools") return -1; + if (b.name === "Platform Tools") return 1; + else return a.name.localeCompare(b.name); + }); + await Gio.File.new_for_path(pkgdatadir) .get_child("demos/index.json") .replace_contents_async( diff --git a/build-aux/modules/GTKCssLanguageServer.json b/build-aux/modules/GTKCssLanguageServer.json index d0d3182f5..cbf93e759 100644 --- a/build-aux/modules/GTKCssLanguageServer.json +++ b/build-aux/modules/GTKCssLanguageServer.json @@ -12,7 +12,11 @@ "modules": [ { "name": "jsonrpc-glib", - "config-opts": ["--buildtype=release", "-Denable_tests=false"], + "config-opts": [ + "--libdir=/app/lib", + "--buildtype=release", + "-Denable_tests=false" + ], "buildsystem": "meson", "sources": [ { diff --git a/build-aux/modules/biome.json b/build-aux/modules/biome.json index 6de6f5f89..0955cccea 100644 --- a/build-aux/modules/biome.json +++ b/build-aux/modules/biome.json @@ -7,15 +7,15 @@ "type": "file", "dest-filename": "biome", "only-arches": ["aarch64"], - "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.8.3/biome-linux-arm64", - "sha256": "d134e89f6f4fc29d32c8101efb074969ac263ebdb0303e07039e3735002c6a2d" + "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.9.2/biome-linux-arm64", + "sha256": "b4b88a36487e5b6c7b34fdc5351f4beb57ce7d88497f57fd3474c64413aabf78" }, { "type": "file", "dest-filename": "biome", "only-arches": ["x86_64"], - "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.8.3/biome-linux-x64", - "sha256": "5495f2f69edd94e9f26ed1adb9ed8023d7c143c3cc6f275f90abdded612217e4" + "url": "https://github.com/biomejs/biome/releases/download/cli%2Fv1.9.2/biome-linux-x64", + "sha256": "e17bb3d15fc192aa767ae7691302f4fd239e80ceaace4c3238857b9da0f43902" } ] } diff --git a/build-aux/modules/gom.json b/build-aux/modules/gom.json new file mode 100644 index 000000000..586b5222c --- /dev/null +++ b/build-aux/modules/gom.json @@ -0,0 +1,12 @@ +{ + "name": "gom", + "buildsystem": "meson", + "config-opts": ["--libdir=/app/lib", "-Denable-gtk-doc=false"], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/gom/0.5/gom-0.5.3.tar.xz", + "sha256": "069d0909fbdc6b4d27edf7a879366194e3ab508b03548bf5b89ff63546d20177" + } + ] +} diff --git a/build-aux/modules/gst-plugin-gtk4-sources.json b/build-aux/modules/gst-plugin-gtk4-sources.json deleted file mode 100644 index bb2387d84..000000000 --- a/build-aux/modules/gst-plugin-gtk4-sources.json +++ /dev/null @@ -1,1724 +0,0 @@ -[ - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/android-tzdata/android-tzdata-0.1.1.crate", - "sha256": "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0", - "dest": "cargo/vendor/android-tzdata-0.1.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0\", \"files\": {}}", - "dest": "cargo/vendor/android-tzdata-0.1.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/android_system_properties/android_system_properties-0.1.5.crate", - "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311", - "dest": "cargo/vendor/android_system_properties-0.1.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311\", \"files\": {}}", - "dest": "cargo/vendor/android_system_properties-0.1.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/async-channel/async-channel-2.3.1.crate", - "sha256": "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a", - "dest": "cargo/vendor/async-channel-2.3.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a\", \"files\": {}}", - "dest": "cargo/vendor/async-channel-2.3.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/atomic_refcell/atomic_refcell-0.1.13.crate", - "sha256": "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c", - "dest": "cargo/vendor/atomic_refcell-0.1.13" - }, - { - "type": "inline", - "contents": "{\"package\": \"41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c\", \"files\": {}}", - "dest": "cargo/vendor/atomic_refcell-0.1.13", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/autocfg/autocfg-1.3.0.crate", - "sha256": "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0", - "dest": "cargo/vendor/autocfg-1.3.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0\", \"files\": {}}", - "dest": "cargo/vendor/autocfg-1.3.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/bitflags/bitflags-2.5.0.crate", - "sha256": "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1", - "dest": "cargo/vendor/bitflags-2.5.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1\", \"files\": {}}", - "dest": "cargo/vendor/bitflags-2.5.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/bumpalo/bumpalo-3.16.0.crate", - "sha256": "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c", - "dest": "cargo/vendor/bumpalo-3.16.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c\", \"files\": {}}", - "dest": "cargo/vendor/bumpalo-3.16.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cairo-rs/cairo-rs-0.19.4.crate", - "sha256": "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562", - "dest": "cargo/vendor/cairo-rs-0.19.4" - }, - { - "type": "inline", - "contents": "{\"package\": \"b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562\", \"files\": {}}", - "dest": "cargo/vendor/cairo-rs-0.19.4", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cairo-sys-rs/cairo-sys-rs-0.19.2.crate", - "sha256": "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64", - "dest": "cargo/vendor/cairo-sys-rs-0.19.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64\", \"files\": {}}", - "dest": "cargo/vendor/cairo-sys-rs-0.19.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cc/cc-1.0.99.crate", - "sha256": "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695", - "dest": "cargo/vendor/cc-1.0.99" - }, - { - "type": "inline", - "contents": "{\"package\": \"96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695\", \"files\": {}}", - "dest": "cargo/vendor/cc-1.0.99", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cfg-expr/cfg-expr-0.15.8.crate", - "sha256": "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02", - "dest": "cargo/vendor/cfg-expr-0.15.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02\", \"files\": {}}", - "dest": "cargo/vendor/cfg-expr-0.15.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/cfg-if/cfg-if-1.0.0.crate", - "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", - "dest": "cargo/vendor/cfg-if-1.0.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd\", \"files\": {}}", - "dest": "cargo/vendor/cfg-if-1.0.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/chrono/chrono-0.4.38.crate", - "sha256": "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401", - "dest": "cargo/vendor/chrono-0.4.38" - }, - { - "type": "inline", - "contents": "{\"package\": \"a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401\", \"files\": {}}", - "dest": "cargo/vendor/chrono-0.4.38", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/concurrent-queue/concurrent-queue-2.5.0.crate", - "sha256": "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973", - "dest": "cargo/vendor/concurrent-queue-2.5.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973\", \"files\": {}}", - "dest": "cargo/vendor/concurrent-queue-2.5.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.6.crate", - "sha256": "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f", - "dest": "cargo/vendor/core-foundation-sys-0.8.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f\", \"files\": {}}", - "dest": "cargo/vendor/core-foundation-sys-0.8.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.20.crate", - "sha256": "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80", - "dest": "cargo/vendor/crossbeam-utils-0.8.20" - }, - { - "type": "inline", - "contents": "{\"package\": \"22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80\", \"files\": {}}", - "dest": "cargo/vendor/crossbeam-utils-0.8.20", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/either/either-1.12.0.crate", - "sha256": "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b", - "dest": "cargo/vendor/either-1.12.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b\", \"files\": {}}", - "dest": "cargo/vendor/either-1.12.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/equivalent/equivalent-1.0.1.crate", - "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5", - "dest": "cargo/vendor/equivalent-1.0.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5\", \"files\": {}}", - "dest": "cargo/vendor/equivalent-1.0.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/event-listener/event-listener-5.3.1.crate", - "sha256": "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba", - "dest": "cargo/vendor/event-listener-5.3.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba\", \"files\": {}}", - "dest": "cargo/vendor/event-listener-5.3.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/event-listener-strategy/event-listener-strategy-0.5.2.crate", - "sha256": "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1", - "dest": "cargo/vendor/event-listener-strategy-0.5.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1\", \"files\": {}}", - "dest": "cargo/vendor/event-listener-strategy-0.5.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/field-offset/field-offset-0.3.6.crate", - "sha256": "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f", - "dest": "cargo/vendor/field-offset-0.3.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f\", \"files\": {}}", - "dest": "cargo/vendor/field-offset-0.3.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-channel/futures-channel-0.3.30.crate", - "sha256": "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78", - "dest": "cargo/vendor/futures-channel-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78\", \"files\": {}}", - "dest": "cargo/vendor/futures-channel-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-core/futures-core-0.3.30.crate", - "sha256": "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d", - "dest": "cargo/vendor/futures-core-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d\", \"files\": {}}", - "dest": "cargo/vendor/futures-core-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-executor/futures-executor-0.3.30.crate", - "sha256": "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d", - "dest": "cargo/vendor/futures-executor-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d\", \"files\": {}}", - "dest": "cargo/vendor/futures-executor-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-io/futures-io-0.3.30.crate", - "sha256": "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1", - "dest": "cargo/vendor/futures-io-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1\", \"files\": {}}", - "dest": "cargo/vendor/futures-io-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-macro/futures-macro-0.3.30.crate", - "sha256": "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac", - "dest": "cargo/vendor/futures-macro-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac\", \"files\": {}}", - "dest": "cargo/vendor/futures-macro-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-task/futures-task-0.3.30.crate", - "sha256": "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004", - "dest": "cargo/vendor/futures-task-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004\", \"files\": {}}", - "dest": "cargo/vendor/futures-task-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/futures-util/futures-util-0.3.30.crate", - "sha256": "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48", - "dest": "cargo/vendor/futures-util-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48\", \"files\": {}}", - "dest": "cargo/vendor/futures-util-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk-pixbuf/gdk-pixbuf-0.19.8.crate", - "sha256": "624eaba126021103c7339b2e179ae4ee8cdab842daab419040710f38ed9f8699", - "dest": "cargo/vendor/gdk-pixbuf-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"624eaba126021103c7339b2e179ae4ee8cdab842daab419040710f38ed9f8699\", \"files\": {}}", - "dest": "cargo/vendor/gdk-pixbuf-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk-pixbuf-sys/gdk-pixbuf-sys-0.19.8.crate", - "sha256": "4efa05a4f83c8cc50eb4d883787b919b85e5f1d8dd10b5a1df53bf5689782379", - "dest": "cargo/vendor/gdk-pixbuf-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"4efa05a4f83c8cc50eb4d883787b919b85e5f1d8dd10b5a1df53bf5689782379\", \"files\": {}}", - "dest": "cargo/vendor/gdk-pixbuf-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4/gdk4-0.8.2.crate", - "sha256": "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07", - "dest": "cargo/vendor/gdk4-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-sys/gdk4-sys-0.8.2.crate", - "sha256": "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd", - "dest": "cargo/vendor/gdk4-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-wayland/gdk4-wayland-0.8.2.crate", - "sha256": "f620a0ecbe4c574e3fec6bef6bebcefe19cb1b9a81569245ca4503c95f9b1371", - "dest": "cargo/vendor/gdk4-wayland-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"f620a0ecbe4c574e3fec6bef6bebcefe19cb1b9a81569245ca4503c95f9b1371\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-wayland-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-wayland-sys/gdk4-wayland-sys-0.8.2.crate", - "sha256": "7a5fd3927c917184b0e8712624eebabdc7f0909b645d468c825f8ec627e61803", - "dest": "cargo/vendor/gdk4-wayland-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"7a5fd3927c917184b0e8712624eebabdc7f0909b645d468c825f8ec627e61803\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-wayland-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-win32/gdk4-win32-0.8.2.crate", - "sha256": "3294d0d08b179198a01ac2623786e6227e3d7a98e042e26e4d020f31ba8fac41", - "dest": "cargo/vendor/gdk4-win32-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"3294d0d08b179198a01ac2623786e6227e3d7a98e042e26e4d020f31ba8fac41\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-win32-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-win32-sys/gdk4-win32-sys-0.8.2.crate", - "sha256": "6682a82d3a1616fbe17a9a757528bd3ef0ede3eab7487f0ecf6ed2a499de117d", - "dest": "cargo/vendor/gdk4-win32-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"6682a82d3a1616fbe17a9a757528bd3ef0ede3eab7487f0ecf6ed2a499de117d\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-win32-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-x11/gdk4-x11-0.8.2.crate", - "sha256": "ec6da3e3527007c14b27ddafe19496c49696a2a74dccb6ab75ba58dfa478b7ab", - "dest": "cargo/vendor/gdk4-x11-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"ec6da3e3527007c14b27ddafe19496c49696a2a74dccb6ab75ba58dfa478b7ab\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-x11-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gdk4-x11-sys/gdk4-x11-sys-0.8.2.crate", - "sha256": "0bb4e987ec77b7b2fb72c0943ccbec5c3834d9d7165fe762af8ff2414f0ae23d", - "dest": "cargo/vendor/gdk4-x11-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"0bb4e987ec77b7b2fb72c0943ccbec5c3834d9d7165fe762af8ff2414f0ae23d\", \"files\": {}}", - "dest": "cargo/vendor/gdk4-x11-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gio/gio-0.19.8.crate", - "sha256": "4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe", - "dest": "cargo/vendor/gio-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe\", \"files\": {}}", - "dest": "cargo/vendor/gio-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gio-sys/gio-sys-0.19.8.crate", - "sha256": "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef", - "dest": "cargo/vendor/gio-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef\", \"files\": {}}", - "dest": "cargo/vendor/gio-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib/glib-0.19.8.crate", - "sha256": "b664491bc77ab55daa6714a592cdbe1a55e28abec09cb50e87689b90de456ff4", - "dest": "cargo/vendor/glib-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"b664491bc77ab55daa6714a592cdbe1a55e28abec09cb50e87689b90de456ff4\", \"files\": {}}", - "dest": "cargo/vendor/glib-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib-macros/glib-macros-0.19.8.crate", - "sha256": "1d405205a405182f95e637710850a8e82f25ba01fdd6baebc82dabeaf0883376", - "dest": "cargo/vendor/glib-macros-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"1d405205a405182f95e637710850a8e82f25ba01fdd6baebc82dabeaf0883376\", \"files\": {}}", - "dest": "cargo/vendor/glib-macros-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/glib-sys/glib-sys-0.19.8.crate", - "sha256": "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5", - "dest": "cargo/vendor/glib-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5\", \"files\": {}}", - "dest": "cargo/vendor/glib-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gobject-sys/gobject-sys-0.19.8.crate", - "sha256": "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e", - "dest": "cargo/vendor/gobject-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e\", \"files\": {}}", - "dest": "cargo/vendor/gobject-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/graphene-rs/graphene-rs-0.19.8.crate", - "sha256": "f5fb86031d24d9ec0a2a15978fc7a65d545a2549642cf1eb7c3dda358da42bcf", - "dest": "cargo/vendor/graphene-rs-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"f5fb86031d24d9ec0a2a15978fc7a65d545a2549642cf1eb7c3dda358da42bcf\", \"files\": {}}", - "dest": "cargo/vendor/graphene-rs-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/graphene-sys/graphene-sys-0.19.8.crate", - "sha256": "2f530e0944bccba4b55065e9c69f4975ad691609191ebac16e13ab8e1f27af05", - "dest": "cargo/vendor/graphene-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"2f530e0944bccba4b55065e9c69f4975ad691609191ebac16e13ab8e1f27af05\", \"files\": {}}", - "dest": "cargo/vendor/graphene-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gsk4/gsk4-0.8.2.crate", - "sha256": "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be", - "dest": "cargo/vendor/gsk4-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be\", \"files\": {}}", - "dest": "cargo/vendor/gsk4-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gsk4-sys/gsk4-sys-0.8.2.crate", - "sha256": "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc", - "dest": "cargo/vendor/gsk4-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc\", \"files\": {}}", - "dest": "cargo/vendor/gsk4-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gst-plugin-version-helper/gst-plugin-version-helper-0.8.2.crate", - "sha256": "4e5e874f1660252fd2ec81c602066df3633b3a6fcbe2b196f7f93c27cf069b2a", - "dest": "cargo/vendor/gst-plugin-version-helper-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"4e5e874f1660252fd2ec81c602066df3633b3a6fcbe2b196f7f93c27cf069b2a\", \"files\": {}}", - "dest": "cargo/vendor/gst-plugin-version-helper-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer/gstreamer-0.22.6.crate", - "sha256": "080daaf35d22367a398aefd032af80cc36238c76fac7b8822894f5e5be073795", - "dest": "cargo/vendor/gstreamer-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"080daaf35d22367a398aefd032af80cc36238c76fac7b8822894f5e5be073795\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-allocators/gstreamer-allocators-0.22.6.crate", - "sha256": "1a53239735ec0376659ec082343225cd0e1a53f7f2ee318aec32adc696e31fe6", - "dest": "cargo/vendor/gstreamer-allocators-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"1a53239735ec0376659ec082343225cd0e1a53f7f2ee318aec32adc696e31fe6\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-allocators-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-allocators-sys/gstreamer-allocators-sys-0.22.6.crate", - "sha256": "9b651aa05affa0c57dbb5c85b8a0729a10c2aa412bd9ef14d782a39934835e5c", - "dest": "cargo/vendor/gstreamer-allocators-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"9b651aa05affa0c57dbb5c85b8a0729a10c2aa412bd9ef14d782a39934835e5c\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-allocators-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-base/gstreamer-base-0.22.6.crate", - "sha256": "39d55668b23fc69f1843daa42b43d289c00fe38e9586c5453b134783d2dd75a3", - "dest": "cargo/vendor/gstreamer-base-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"39d55668b23fc69f1843daa42b43d289c00fe38e9586c5453b134783d2dd75a3\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-base-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-base-sys/gstreamer-base-sys-0.22.6.crate", - "sha256": "5448abb00c197e3ad306710293bf757303cbeab4036b5ccad21c7642b8bf00c9", - "dest": "cargo/vendor/gstreamer-base-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"5448abb00c197e3ad306710293bf757303cbeab4036b5ccad21c7642b8bf00c9\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-base-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl/gstreamer-gl-0.22.6.crate", - "sha256": "2776369ce07de81b1e6f52786caec898db5be5d4678a8104e8fcbffdae68332d", - "dest": "cargo/vendor/gstreamer-gl-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"2776369ce07de81b1e6f52786caec898db5be5d4678a8104e8fcbffdae68332d\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-egl/gstreamer-gl-egl-0.22.6.crate", - "sha256": "be51a7ceaeabf411ba01a2de5af163ea2b8d79f157d0d924b4682fd217182c15", - "dest": "cargo/vendor/gstreamer-gl-egl-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"be51a7ceaeabf411ba01a2de5af163ea2b8d79f157d0d924b4682fd217182c15\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-egl-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-egl-sys/gstreamer-gl-egl-sys-0.22.6.crate", - "sha256": "45bc9d114f161ec27822c203f28e43c88b6523f31cbde29b4cb8d8378a3825a4", - "dest": "cargo/vendor/gstreamer-gl-egl-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"45bc9d114f161ec27822c203f28e43c88b6523f31cbde29b4cb8d8378a3825a4\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-egl-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-sys/gstreamer-gl-sys-0.22.6.crate", - "sha256": "050a2cf158354bd5633079baf73d12767a5c90efc6377b4f9507aca082734286", - "dest": "cargo/vendor/gstreamer-gl-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"050a2cf158354bd5633079baf73d12767a5c90efc6377b4f9507aca082734286\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-wayland/gstreamer-gl-wayland-0.22.6.crate", - "sha256": "1ed320047a5b5f33eb7011fecd57355eaefece278a244e16bfde475b1b268b68", - "dest": "cargo/vendor/gstreamer-gl-wayland-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"1ed320047a5b5f33eb7011fecd57355eaefece278a244e16bfde475b1b268b68\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-wayland-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-wayland-sys/gstreamer-gl-wayland-sys-0.22.6.crate", - "sha256": "2c0fcf9857b41dd4e96dba723edce306853d5a166a5165f7d15a1be672be6c3d", - "dest": "cargo/vendor/gstreamer-gl-wayland-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"2c0fcf9857b41dd4e96dba723edce306853d5a166a5165f7d15a1be672be6c3d\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-wayland-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-x11/gstreamer-gl-x11-0.22.6.crate", - "sha256": "e4867cfe9333b04ee14672001e914ea995707a8b02d7b12c1b6f3e9f4a5c4f0d", - "dest": "cargo/vendor/gstreamer-gl-x11-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"e4867cfe9333b04ee14672001e914ea995707a8b02d7b12c1b6f3e9f4a5c4f0d\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-x11-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-gl-x11-sys/gstreamer-gl-x11-sys-0.22.6.crate", - "sha256": "c628a2a3d216df2f85d37923f65a4e0fdafe4652f7cd06c9432f8c8ce8199aa9", - "dest": "cargo/vendor/gstreamer-gl-x11-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"c628a2a3d216df2f85d37923f65a4e0fdafe4652f7cd06c9432f8c8ce8199aa9\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-gl-x11-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-sys/gstreamer-sys-0.22.6.crate", - "sha256": "71f147e7c6bc9313d5569eb15da61f6f64026ec69791922749de230583a07286", - "dest": "cargo/vendor/gstreamer-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"71f147e7c6bc9313d5569eb15da61f6f64026ec69791922749de230583a07286\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-video/gstreamer-video-0.22.6.crate", - "sha256": "25acba301f86b02584a642de0f224317be2bd0ceec3acda49a0ef111cbced98c", - "dest": "cargo/vendor/gstreamer-video-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"25acba301f86b02584a642de0f224317be2bd0ceec3acda49a0ef111cbced98c\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-video-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gstreamer-video-sys/gstreamer-video-sys-0.22.6.crate", - "sha256": "f2ec210495f94cabaa45d08003081b550095c2d4ab12d5320f64856a91f3f01c", - "dest": "cargo/vendor/gstreamer-video-sys-0.22.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"f2ec210495f94cabaa45d08003081b550095c2d4ab12d5320f64856a91f3f01c\", \"files\": {}}", - "dest": "cargo/vendor/gstreamer-video-sys-0.22.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4/gtk4-0.8.2.crate", - "sha256": "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab", - "dest": "cargo/vendor/gtk4-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4-macros/gtk4-macros-0.8.2.crate", - "sha256": "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408", - "dest": "cargo/vendor/gtk4-macros-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-macros-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/gtk4-sys/gtk4-sys-0.8.2.crate", - "sha256": "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5", - "dest": "cargo/vendor/gtk4-sys-0.8.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5\", \"files\": {}}", - "dest": "cargo/vendor/gtk4-sys-0.8.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.14.5.crate", - "sha256": "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1", - "dest": "cargo/vendor/hashbrown-0.14.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1\", \"files\": {}}", - "dest": "cargo/vendor/hashbrown-0.14.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/heck/heck-0.5.0.crate", - "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", - "dest": "cargo/vendor/heck-0.5.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\", \"files\": {}}", - "dest": "cargo/vendor/heck-0.5.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/iana-time-zone/iana-time-zone-0.1.60.crate", - "sha256": "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141", - "dest": "cargo/vendor/iana-time-zone-0.1.60" - }, - { - "type": "inline", - "contents": "{\"package\": \"e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141\", \"files\": {}}", - "dest": "cargo/vendor/iana-time-zone-0.1.60", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/iana-time-zone-haiku/iana-time-zone-haiku-0.1.2.crate", - "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f", - "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f\", \"files\": {}}", - "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/indexmap/indexmap-2.2.6.crate", - "sha256": "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26", - "dest": "cargo/vendor/indexmap-2.2.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26\", \"files\": {}}", - "dest": "cargo/vendor/indexmap-2.2.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/itertools/itertools-0.13.0.crate", - "sha256": "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186", - "dest": "cargo/vendor/itertools-0.13.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186\", \"files\": {}}", - "dest": "cargo/vendor/itertools-0.13.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/js-sys/js-sys-0.3.69.crate", - "sha256": "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d", - "dest": "cargo/vendor/js-sys-0.3.69" - }, - { - "type": "inline", - "contents": "{\"package\": \"29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d\", \"files\": {}}", - "dest": "cargo/vendor/js-sys-0.3.69", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/khronos-egl/khronos-egl-6.0.0.crate", - "sha256": "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76", - "dest": "cargo/vendor/khronos-egl-6.0.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76\", \"files\": {}}", - "dest": "cargo/vendor/khronos-egl-6.0.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/libc/libc-0.2.155.crate", - "sha256": "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c", - "dest": "cargo/vendor/libc-0.2.155" - }, - { - "type": "inline", - "contents": "{\"package\": \"97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c\", \"files\": {}}", - "dest": "cargo/vendor/libc-0.2.155", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/log/log-0.4.21.crate", - "sha256": "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c", - "dest": "cargo/vendor/log-0.4.21" - }, - { - "type": "inline", - "contents": "{\"package\": \"90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c\", \"files\": {}}", - "dest": "cargo/vendor/log-0.4.21", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/memchr/memchr-2.7.4.crate", - "sha256": "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3", - "dest": "cargo/vendor/memchr-2.7.4" - }, - { - "type": "inline", - "contents": "{\"package\": \"78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3\", \"files\": {}}", - "dest": "cargo/vendor/memchr-2.7.4", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/memoffset/memoffset-0.9.1.crate", - "sha256": "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a", - "dest": "cargo/vendor/memoffset-0.9.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a\", \"files\": {}}", - "dest": "cargo/vendor/memoffset-0.9.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/muldiv/muldiv-1.0.1.crate", - "sha256": "956787520e75e9bd233246045d19f42fb73242759cc57fba9611d940ae96d4b0", - "dest": "cargo/vendor/muldiv-1.0.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"956787520e75e9bd233246045d19f42fb73242759cc57fba9611d940ae96d4b0\", \"files\": {}}", - "dest": "cargo/vendor/muldiv-1.0.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/num-integer/num-integer-0.1.46.crate", - "sha256": "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f", - "dest": "cargo/vendor/num-integer-0.1.46" - }, - { - "type": "inline", - "contents": "{\"package\": \"7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f\", \"files\": {}}", - "dest": "cargo/vendor/num-integer-0.1.46", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/num-rational/num-rational-0.4.2.crate", - "sha256": "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824", - "dest": "cargo/vendor/num-rational-0.4.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824\", \"files\": {}}", - "dest": "cargo/vendor/num-rational-0.4.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/num-traits/num-traits-0.2.19.crate", - "sha256": "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841", - "dest": "cargo/vendor/num-traits-0.2.19" - }, - { - "type": "inline", - "contents": "{\"package\": \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\", \"files\": {}}", - "dest": "cargo/vendor/num-traits-0.2.19", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/once_cell/once_cell-1.19.0.crate", - "sha256": "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92", - "dest": "cargo/vendor/once_cell-1.19.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92\", \"files\": {}}", - "dest": "cargo/vendor/once_cell-1.19.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/option-operations/option-operations-0.5.0.crate", - "sha256": "7c26d27bb1aeab65138e4bf7666045169d1717febcc9ff870166be8348b223d0", - "dest": "cargo/vendor/option-operations-0.5.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"7c26d27bb1aeab65138e4bf7666045169d1717febcc9ff870166be8348b223d0\", \"files\": {}}", - "dest": "cargo/vendor/option-operations-0.5.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pango/pango-0.19.8.crate", - "sha256": "3f0d328648058085cfd6897c9ae4272884098a926f3a833cd50c8c73e6eccecd", - "dest": "cargo/vendor/pango-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"3f0d328648058085cfd6897c9ae4272884098a926f3a833cd50c8c73e6eccecd\", \"files\": {}}", - "dest": "cargo/vendor/pango-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pango-sys/pango-sys-0.19.8.crate", - "sha256": "ff03da4fa086c0b244d4a4587d3e20622a3ecdb21daea9edf66597224c634ba0", - "dest": "cargo/vendor/pango-sys-0.19.8" - }, - { - "type": "inline", - "contents": "{\"package\": \"ff03da4fa086c0b244d4a4587d3e20622a3ecdb21daea9edf66597224c634ba0\", \"files\": {}}", - "dest": "cargo/vendor/pango-sys-0.19.8", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/parking/parking-2.2.0.crate", - "sha256": "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae", - "dest": "cargo/vendor/parking-2.2.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae\", \"files\": {}}", - "dest": "cargo/vendor/parking-2.2.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/paste/paste-1.0.15.crate", - "sha256": "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a", - "dest": "cargo/vendor/paste-1.0.15" - }, - { - "type": "inline", - "contents": "{\"package\": \"57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a\", \"files\": {}}", - "dest": "cargo/vendor/paste-1.0.15", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.14.crate", - "sha256": "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02", - "dest": "cargo/vendor/pin-project-lite-0.2.14" - }, - { - "type": "inline", - "contents": "{\"package\": \"bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02\", \"files\": {}}", - "dest": "cargo/vendor/pin-project-lite-0.2.14", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pin-utils/pin-utils-0.1.0.crate", - "sha256": "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184", - "dest": "cargo/vendor/pin-utils-0.1.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184\", \"files\": {}}", - "dest": "cargo/vendor/pin-utils-0.1.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/pkg-config/pkg-config-0.3.30.crate", - "sha256": "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec", - "dest": "cargo/vendor/pkg-config-0.3.30" - }, - { - "type": "inline", - "contents": "{\"package\": \"d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec\", \"files\": {}}", - "dest": "cargo/vendor/pkg-config-0.3.30", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-3.1.0.crate", - "sha256": "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284", - "dest": "cargo/vendor/proc-macro-crate-3.1.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284\", \"files\": {}}", - "dest": "cargo/vendor/proc-macro-crate-3.1.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.85.crate", - "sha256": "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23", - "dest": "cargo/vendor/proc-macro2-1.0.85" - }, - { - "type": "inline", - "contents": "{\"package\": \"22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23\", \"files\": {}}", - "dest": "cargo/vendor/proc-macro2-1.0.85", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/quote/quote-1.0.36.crate", - "sha256": "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7", - "dest": "cargo/vendor/quote-1.0.36" - }, - { - "type": "inline", - "contents": "{\"package\": \"0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7\", \"files\": {}}", - "dest": "cargo/vendor/quote-1.0.36", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/rustc_version/rustc_version-0.4.0.crate", - "sha256": "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366", - "dest": "cargo/vendor/rustc_version-0.4.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366\", \"files\": {}}", - "dest": "cargo/vendor/rustc_version-0.4.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/semver/semver-1.0.23.crate", - "sha256": "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b", - "dest": "cargo/vendor/semver-1.0.23" - }, - { - "type": "inline", - "contents": "{\"package\": \"61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b\", \"files\": {}}", - "dest": "cargo/vendor/semver-1.0.23", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/serde/serde-1.0.203.crate", - "sha256": "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094", - "dest": "cargo/vendor/serde-1.0.203" - }, - { - "type": "inline", - "contents": "{\"package\": \"7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094\", \"files\": {}}", - "dest": "cargo/vendor/serde-1.0.203", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/serde_derive/serde_derive-1.0.203.crate", - "sha256": "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba", - "dest": "cargo/vendor/serde_derive-1.0.203" - }, - { - "type": "inline", - "contents": "{\"package\": \"500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba\", \"files\": {}}", - "dest": "cargo/vendor/serde_derive-1.0.203", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/serde_spanned/serde_spanned-0.6.6.crate", - "sha256": "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0", - "dest": "cargo/vendor/serde_spanned-0.6.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0\", \"files\": {}}", - "dest": "cargo/vendor/serde_spanned-0.6.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/slab/slab-0.4.9.crate", - "sha256": "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67", - "dest": "cargo/vendor/slab-0.4.9" - }, - { - "type": "inline", - "contents": "{\"package\": \"8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67\", \"files\": {}}", - "dest": "cargo/vendor/slab-0.4.9", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/smallvec/smallvec-1.13.2.crate", - "sha256": "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67", - "dest": "cargo/vendor/smallvec-1.13.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67\", \"files\": {}}", - "dest": "cargo/vendor/smallvec-1.13.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/syn/syn-2.0.66.crate", - "sha256": "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5", - "dest": "cargo/vendor/syn-2.0.66" - }, - { - "type": "inline", - "contents": "{\"package\": \"c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5\", \"files\": {}}", - "dest": "cargo/vendor/syn-2.0.66", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/system-deps/system-deps-6.2.2.crate", - "sha256": "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349", - "dest": "cargo/vendor/system-deps-6.2.2" - }, - { - "type": "inline", - "contents": "{\"package\": \"a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349\", \"files\": {}}", - "dest": "cargo/vendor/system-deps-6.2.2", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/target-lexicon/target-lexicon-0.12.14.crate", - "sha256": "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f", - "dest": "cargo/vendor/target-lexicon-0.12.14" - }, - { - "type": "inline", - "contents": "{\"package\": \"e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f\", \"files\": {}}", - "dest": "cargo/vendor/target-lexicon-0.12.14", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/thiserror/thiserror-1.0.61.crate", - "sha256": "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709", - "dest": "cargo/vendor/thiserror-1.0.61" - }, - { - "type": "inline", - "contents": "{\"package\": \"c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709\", \"files\": {}}", - "dest": "cargo/vendor/thiserror-1.0.61", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/thiserror-impl/thiserror-impl-1.0.61.crate", - "sha256": "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533", - "dest": "cargo/vendor/thiserror-impl-1.0.61" - }, - { - "type": "inline", - "contents": "{\"package\": \"46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533\", \"files\": {}}", - "dest": "cargo/vendor/thiserror-impl-1.0.61", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/toml/toml-0.8.14.crate", - "sha256": "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335", - "dest": "cargo/vendor/toml-0.8.14" - }, - { - "type": "inline", - "contents": "{\"package\": \"6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335\", \"files\": {}}", - "dest": "cargo/vendor/toml-0.8.14", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/toml_datetime/toml_datetime-0.6.6.crate", - "sha256": "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf", - "dest": "cargo/vendor/toml_datetime-0.6.6" - }, - { - "type": "inline", - "contents": "{\"package\": \"4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf\", \"files\": {}}", - "dest": "cargo/vendor/toml_datetime-0.6.6", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.21.1.crate", - "sha256": "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1", - "dest": "cargo/vendor/toml_edit-0.21.1" - }, - { - "type": "inline", - "contents": "{\"package\": \"6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1\", \"files\": {}}", - "dest": "cargo/vendor/toml_edit-0.21.1", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.22.14.crate", - "sha256": "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38", - "dest": "cargo/vendor/toml_edit-0.22.14" - }, - { - "type": "inline", - "contents": "{\"package\": \"f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38\", \"files\": {}}", - "dest": "cargo/vendor/toml_edit-0.22.14", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.12.crate", - "sha256": "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b", - "dest": "cargo/vendor/unicode-ident-1.0.12" - }, - { - "type": "inline", - "contents": "{\"package\": \"3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b\", \"files\": {}}", - "dest": "cargo/vendor/unicode-ident-1.0.12", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/version-compare/version-compare-0.2.0.crate", - "sha256": "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b", - "dest": "cargo/vendor/version-compare-0.2.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b\", \"files\": {}}", - "dest": "cargo/vendor/version-compare-0.2.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.92.crate", - "sha256": "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8", - "dest": "cargo/vendor/wasm-bindgen-0.2.92" - }, - { - "type": "inline", - "contents": "{\"package\": \"4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8\", \"files\": {}}", - "dest": "cargo/vendor/wasm-bindgen-0.2.92", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/wasm-bindgen-backend/wasm-bindgen-backend-0.2.92.crate", - "sha256": "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da", - "dest": "cargo/vendor/wasm-bindgen-backend-0.2.92" - }, - { - "type": "inline", - "contents": "{\"package\": \"614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da\", \"files\": {}}", - "dest": "cargo/vendor/wasm-bindgen-backend-0.2.92", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.92.crate", - "sha256": "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726", - "dest": "cargo/vendor/wasm-bindgen-macro-0.2.92" - }, - { - "type": "inline", - "contents": "{\"package\": \"a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726\", \"files\": {}}", - "dest": "cargo/vendor/wasm-bindgen-macro-0.2.92", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.92.crate", - "sha256": "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7", - "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.92" - }, - { - "type": "inline", - "contents": "{\"package\": \"e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7\", \"files\": {}}", - "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.92", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.92.crate", - "sha256": "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96", - "dest": "cargo/vendor/wasm-bindgen-shared-0.2.92" - }, - { - "type": "inline", - "contents": "{\"package\": \"af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96\", \"files\": {}}", - "dest": "cargo/vendor/wasm-bindgen-shared-0.2.92", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows-core/windows-core-0.52.0.crate", - "sha256": "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9", - "dest": "cargo/vendor/windows-core-0.52.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9\", \"files\": {}}", - "dest": "cargo/vendor/windows-core-0.52.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate", - "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", - "dest": "cargo/vendor/windows-sys-0.52.0" - }, - { - "type": "inline", - "contents": "{\"package\": \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\", \"files\": {}}", - "dest": "cargo/vendor/windows-sys-0.52.0", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.52.5.crate", - "sha256": "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb", - "dest": "cargo/vendor/windows-targets-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb\", \"files\": {}}", - "dest": "cargo/vendor/windows-targets-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.52.5.crate", - "sha256": "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263", - "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263\", \"files\": {}}", - "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.52.5.crate", - "sha256": "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6", - "dest": "cargo/vendor/windows_aarch64_msvc-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6\", \"files\": {}}", - "dest": "cargo/vendor/windows_aarch64_msvc-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.52.5.crate", - "sha256": "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670", - "dest": "cargo/vendor/windows_i686_gnu-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670\", \"files\": {}}", - "dest": "cargo/vendor/windows_i686_gnu-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_i686_gnullvm/windows_i686_gnullvm-0.52.5.crate", - "sha256": "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9", - "dest": "cargo/vendor/windows_i686_gnullvm-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9\", \"files\": {}}", - "dest": "cargo/vendor/windows_i686_gnullvm-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.52.5.crate", - "sha256": "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf", - "dest": "cargo/vendor/windows_i686_msvc-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf\", \"files\": {}}", - "dest": "cargo/vendor/windows_i686_msvc-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.52.5.crate", - "sha256": "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9", - "dest": "cargo/vendor/windows_x86_64_gnu-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9\", \"files\": {}}", - "dest": "cargo/vendor/windows_x86_64_gnu-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.52.5.crate", - "sha256": "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596", - "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596\", \"files\": {}}", - "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.52.5.crate", - "sha256": "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0", - "dest": "cargo/vendor/windows_x86_64_msvc-0.52.5" - }, - { - "type": "inline", - "contents": "{\"package\": \"bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0\", \"files\": {}}", - "dest": "cargo/vendor/windows_x86_64_msvc-0.52.5", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/winnow/winnow-0.5.40.crate", - "sha256": "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876", - "dest": "cargo/vendor/winnow-0.5.40" - }, - { - "type": "inline", - "contents": "{\"package\": \"f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876\", \"files\": {}}", - "dest": "cargo/vendor/winnow-0.5.40", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "archive", - "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/winnow/winnow-0.6.13.crate", - "sha256": "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1", - "dest": "cargo/vendor/winnow-0.6.13" - }, - { - "type": "inline", - "contents": "{\"package\": \"59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1\", \"files\": {}}", - "dest": "cargo/vendor/winnow-0.6.13", - "dest-filename": ".cargo-checksum.json" - }, - { - "type": "inline", - "contents": "[source.vendored-sources]\ndirectory = \"cargo/vendor\"\n\n[source.crates-io]\nreplace-with = \"vendored-sources\"\n", - "dest": "cargo", - "dest-filename": "config" - } -] diff --git a/build-aux/modules/gst-plugin-gtk4.json b/build-aux/modules/gst-plugin-gtk4.json deleted file mode 100644 index f8c3016b3..000000000 --- a/build-aux/modules/gst-plugin-gtk4.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "gst-plugin-gtk4", - "buildsystem": "simple", - "sources": [ - { - "type": "archive", - "url": "https://crates.io/api/v1/crates/gst-plugin-gtk4/0.12.7/download", - "dest-filename": "gst-plugin-gtk4-0.12.7.tar.gz", - "sha256": "c95543801d561c9fef65704421a7208d06d90dad30f4a5e5e64db741219f6958" - }, - "gst-plugin-gtk4-sources.json" - ], - "build-commands": [ - "cargo cinstall --offline --release --features=wayland,x11glx,x11egl --library-type=cdylib --prefix=/app" - ], - "build-options": { - "env": { - "CARGO_HOME": "/run/build/gst-plugin-gtk4/cargo" - } - } -} diff --git a/build-aux/modules/libportal.json b/build-aux/modules/libportal.json index fcd1f69c4..bfaa3f2c7 100644 --- a/build-aux/modules/libportal.json +++ b/build-aux/modules/libportal.json @@ -2,6 +2,7 @@ "name": "libportal", "buildsystem": "meson", "config-opts": [ + "--libdir=/app/lib", "-Dtests=false", "-Dbackend-gtk3=disabled", "-Dbackend-gtk4=enabled", @@ -11,8 +12,8 @@ "sources": [ { "type": "archive", - "url": "https://github.com/flatpak/libportal/releases/download/0.7.1/libportal-0.7.1.tar.xz", - "sha256": "297b90b263fad22190a26b8c7e8ea938fe6b18fb936265e588927179920d3805" + "url": "https://github.com/flatpak/libportal/releases/download/0.8.1/libportal-0.8.1.tar.xz", + "sha256": "281e54e4f8561125a65d20658f1462ab932b2b1258c376fed2137718441825ac" } ] } diff --git a/build-aux/modules/libshumate.json b/build-aux/modules/libshumate.json index e626a3738..d4918e89b 100644 --- a/build-aux/modules/libshumate.json +++ b/build-aux/modules/libshumate.json @@ -1,12 +1,12 @@ { "name": "libshumate", "buildsystem": "meson", - "config-opts": ["-Dgtk_doc=false"], + "config-opts": ["--libdir=/app/lib", "-Dgtk_doc=false"], "sources": [ { "type": "archive", - "url": "https://download.gnome.org/sources/libshumate/1.2/libshumate-1.2.2.tar.xz", - "sha256": "6f587579f7f2d60b38d3f4727eb1a8d2feac9cbdc018e53ff5f772a8608fa44b" + "url": "https://download.gnome.org/sources/libshumate/1.3/libshumate-1.3.0.tar.xz", + "sha256": "8227a6e8281cde12232894fef83760d44fa66b39ef033c61ed934a86c6dc75d4" } ], "modules": [ diff --git a/build-aux/modules/libspelling.json b/build-aux/modules/libspelling.json index 11080a66a..58651b289 100644 --- a/build-aux/modules/libspelling.json +++ b/build-aux/modules/libspelling.json @@ -1,12 +1,12 @@ { "name": "libspelling", "buildsystem": "meson", - "config-opts": ["-Ddocs=false"], + "config-opts": ["--libdir=/app/lib", "-Ddocs=false"], "sources": [ { "type": "archive", - "url": "https://download.gnome.org/sources/libspelling/0.2/libspelling-0.2.1.tar.xz", - "sha256": "7a787b467bd493f6baffb44138dbc4bef78aaab60efb76a7db88b243bf0f6343" + "url": "https://download.gnome.org/sources/libspelling/0.4/libspelling-0.4.2.tar.xz", + "sha256": "b3e609b1a247e71bc097e262564f33f51fd7db566eeb0cd74ae5021536b878b5" } ] } diff --git a/build-aux/modules/vte.json b/build-aux/modules/vte.json index 46519cbc9..dc5b14c48 100644 --- a/build-aux/modules/vte.json +++ b/build-aux/modules/vte.json @@ -2,6 +2,7 @@ "name": "vte", "buildsystem": "meson", "config-opts": [ + "--libdir=/app/lib", "-Ddocs=false", "-Dgtk3=false", "-Dgtk4=true", @@ -11,8 +12,8 @@ "sources": [ { "type": "archive", - "url": "https://download.gnome.org/sources/vte/0.76/vte-0.76.2.tar.xz", - "sha256": "e3dc6082d5bd70f8aafaaad2cdfcaf7e51da6ba00a919b11ddac6efa09c72847" + "url": "https://download.gnome.org/sources/vte/0.78/vte-0.78.0.tar.xz", + "sha256": "07f09c6228a8bb3c1599dd0f5a6ec797b30d3010c3ac91cf21b69d9635dfaf7c" } ] } diff --git a/build-aux/re.sonny.Workbench.Devel.json b/build-aux/re.sonny.Workbench.Devel.json index 05b779299..0bbc6c099 100644 --- a/build-aux/re.sonny.Workbench.Devel.json +++ b/build-aux/re.sonny.Workbench.Devel.json @@ -2,17 +2,16 @@ "$schema": "https://raw.githubusercontent.com/flatpak/flatpak-builder/main/data/flatpak-manifest.schema.json", "id": "re.sonny.Workbench.Devel", "runtime": "org.gnome.Sdk", - "runtime-version": "46", + "runtime-version": "47", "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.vala", "org.freedesktop.Sdk.Extension.rust-stable", "org.freedesktop.Sdk.Extension.llvm18", - "org.freedesktop.Sdk.Extension.node20", - "org.freedesktop.Sdk.Extension.typescript" + "org.freedesktop.Sdk.Extension.node20" ], "build-options": { - "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin:/usr/lib/sdk/typescript/bin", + "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin", "append-ld-library-path": "/usr/lib/sdk/vala/lib" }, "command": "workbench", @@ -21,9 +20,7 @@ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", - "--device=dri", - "--share=network", - "--socket=pulseaudio" + "--device=dri" ], "cleanup": [ "#/include", @@ -40,11 +37,11 @@ "modules": [ "modules/blueprint-compiler.json", "modules/biome.json", - "modules/gst-plugin-gtk4.json", "modules/vte.json", "modules/libshumate.json", "modules/libportal.json", "modules/libspelling.json", + "modules/gom.json", "modules/GTKCssLanguageServer.json", "modules/python-python-lsp-server.json", "modules/python-ruff.json", diff --git a/build-aux/re.sonny.Workbench.json b/build-aux/re.sonny.Workbench.json index 4f6e3ab48..13ed0dac4 100644 --- a/build-aux/re.sonny.Workbench.json +++ b/build-aux/re.sonny.Workbench.json @@ -2,17 +2,16 @@ "$schema": "https://raw.githubusercontent.com/flatpak/flatpak-builder/main/data/flatpak-manifest.schema.json", "id": "re.sonny.Workbench", "runtime": "org.gnome.Sdk", - "runtime-version": "46", + "runtime-version": "47", "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.vala", "org.freedesktop.Sdk.Extension.rust-stable", "org.freedesktop.Sdk.Extension.llvm18", - "org.freedesktop.Sdk.Extension.node20", - "org.freedesktop.Sdk.Extension.typescript" + "org.freedesktop.Sdk.Extension.node20" ], "build-options": { - "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin:/usr/lib/sdk/typescript/bin", + "append-path": "/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin", "append-ld-library-path": "/usr/lib/sdk/vala/lib" }, "command": "workbench", @@ -21,9 +20,7 @@ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", - "--device=dri", - "--share=network", - "--socket=pulseaudio" + "--device=dri" ], "cleanup": [ "#/include", @@ -40,11 +37,11 @@ "modules": [ "modules/blueprint-compiler.json", "modules/biome.json", - "modules/gst-plugin-gtk4.json", "modules/vte.json", "modules/libshumate.json", "modules/libportal.json", "modules/libspelling.json", + "modules/gom.json", "modules/GTKCssLanguageServer.json", "modules/python-python-lsp-server.json", "modules/python-ruff.json", diff --git a/build-aux/wip/minimist.js b/build-aux/wip/minimist.js new file mode 100644 index 000000000..c34298e8c --- /dev/null +++ b/build-aux/wip/minimist.js @@ -0,0 +1,308 @@ +/* eslint-disable */ + +// https://github.com/minimistjs/minimist/blob/bedaa8b9ab5a901fa342aad4494cbbf676b11a21/index.js + +function hasKey(obj, keys) { + var o = obj; + keys.slice(0, -1).forEach(function (key) { + o = o[key] || {}; + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function isNumber(x) { + if (typeof x === "number") { + return true; + } + if (/^0x[0-9a-f]+$/i.test(x)) { + return true; + } + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + +function isConstructorOrProto(obj, key) { + return ( + (key === "constructor" && typeof obj[key] === "function") || + key === "__proto__" + ); +} + +export default function minimist(args, opts) { + if (!opts) { + opts = {}; + } + + var flags = { + bools: {}, + strings: {}, + unknownFn: null, + }; + + if (typeof opts.unknown === "function") { + flags.unknownFn = opts.unknown; + } + + if (typeof opts.boolean === "boolean" && opts.boolean) { + flags.allBools = true; + } else { + [] + .concat(opts.boolean) + .filter(Boolean) + .forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + + function isBooleanKey(key) { + if (flags.bools[key]) { + return true; + } + if (!aliases[key]) { + return false; + } + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat( + aliases[key].filter(function (y) { + return x !== y; + }), + ); + }); + }); + + [] + .concat(opts.string) + .filter(Boolean) + .forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + [].concat(aliases[key]).forEach(function (k) { + flags.strings[k] = true; + }); + } + }); + + var defaults = opts.default || {}; + + var argv = { _: [] }; + + function argDefined(key, arg) { + return ( + (flags.allBools && /^--[^=]+$/.test(arg)) || + flags.strings[key] || + flags.bools[key] || + aliases[key] + ); + } + + function setKey(obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length - 1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) { + return; + } + if (o[key] === undefined) { + o[key] = {}; + } + if ( + o[key] === Object.prototype || + o[key] === Number.prototype || + o[key] === String.prototype + ) { + o[key] = {}; + } + if (o[key] === Array.prototype) { + o[key] = []; + } + o = o[key]; + } + + var lastKey = keys[keys.length - 1]; + if (isConstructorOrProto(o, lastKey)) { + return; + } + if ( + o === Object.prototype || + o === Number.prototype || + o === String.prototype + ) { + o = {}; + } + if (o === Array.prototype) { + o = []; + } + if ( + o[lastKey] === undefined || + isBooleanKey(lastKey) || + typeof o[lastKey] === "boolean" + ) { + o[lastKey] = value; + } else if (Array.isArray(o[lastKey])) { + o[lastKey].push(value); + } else { + o[lastKey] = [o[lastKey], value]; + } + } + + function setArg(key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) { + return; + } + } + + var value = !flags.strings[key] && isNumber(val) ? Number(val) : val; + setKey(argv, key.split("."), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split("."), value); + }); + } + + // Set booleans to false by default. + Object.keys(flags.bools).forEach(function (key) { + setArg(key, false); + }); + // Set booleans to user defined default if supplied. + Object.keys(defaults) + .filter(isBooleanKey) + .forEach(function (key) { + setArg(key, defaults[key]); + }); + var notFlags = []; + + if (args.indexOf("--") !== -1) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + var key; + var next; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + key = m[1]; + var value = m[2]; + if (isBooleanKey(key)) { + value = value !== "false"; + } + setArg(key, value, arg); + } else if (/^--no-.+/.test(arg)) { + key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } else if (/^--.+/.test(arg)) { + key = arg.match(/^--(.+)/)[1]; + next = args[i + 1]; + if ( + next !== undefined && + !/^(-|--)[^-]/.test(next) && + !isBooleanKey(key) && + !flags.allBools + ) { + setArg(key, next, arg); + i += 1; + } else if (/^(true|false)$/.test(next)) { + setArg(key, next === "true", arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1, -1).split(""); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + + if (next === "-") { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") { + setArg(letters[j], next.slice(1), arg); + broken = true; + break; + } + + if ( + /[A-Za-z]/.test(letters[j]) && + /-?\d+(\.\d*)?(e-?\d+)?$/.test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg); + } + } + + key = arg.slice(-1)[0]; + if (!broken && key !== "-") { + if ( + args[i + 1] && + !/^(-|--)[^-]/.test(args[i + 1]) && + !isBooleanKey(key) + ) { + setArg(key, args[i + 1], arg); + i += 1; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key, args[i + 1] === "true", arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg)); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (k) { + if (!hasKey(argv, k.split("."))) { + setKey(argv, k.split("."), defaults[k]); + + (aliases[k] || []).forEach(function (x) { + setKey(argv, x.split("."), defaults[k]); + }); + } + }); + + if (opts["--"]) { + argv["--"] = notFlags.slice(); + } else { + notFlags.forEach(function (k) { + argv._.push(k); + }); + } + + return argv; +} diff --git a/build-aux/wip/run.js b/build-aux/wip/run.js new file mode 100755 index 000000000..0c4b58dd6 --- /dev/null +++ b/build-aux/wip/run.js @@ -0,0 +1,263 @@ +#!/usr/bin/env -S gjs -m + +import Gio from "gi://Gio"; +import { exit, programArgs, programInvocationName } from "system"; +import GLib from "gi://GLib"; +import minimist from "./minimist.js"; + +// export G_MESSAGES_DEBUG=Gjs-Console && ./run.js + +Gio._promisify( + Gio.File.prototype, + "load_contents_async", + "load_contents_finish", +); + +Gio._promisify( + Gio.Subprocess.prototype, + "wait_check_async", + "wait_check_finish", +); + +// const path = GLib.get_current_dir(); +const path = "/home/sonny/Projects/Workbench"; +console.debug(programInvocationName, programArgs); +const argv = minimist(programArgs, { boolean: true }); +console.debug(argv); + +const [manifest_path] = argv._; +if (!manifest_path) { + // eslint-disable-next-line no-restricted-globals + print(`${programInvocationName} [--verbose] [--debug] MANIFEST`); + exit(0); +} + +const home = GLib.get_home_dir(); + +const manifest_file = Gio.File.new_for_path(manifest_path); +const [contents] = await manifest_file.load_contents_async(null); +const manifest = JSON.parse(new TextDecoder().decode(contents)); + +// console.log(JSON.parse(manifest)); + +const flatpak_id = manifest.id; +// We assume the last module is the app itself +const app_module = manifest.modules.at(-1); + +function exists(path) { + const result = Gio.File.new_for_path(path).query_exists(null); + console.debug(`${path} ${result ? "exists" : "non existant"}`); + return result; +} + +if (!exists(`${path}/.flatpak/repo`)) { + const { runtime, sdk } = manifest; + const runtime_version = manifest["runtime-version"]; + // initializes repo + await run([ + "flatpak", + "build-init", + `${path}/.flatpak/repo`, + flatpak_id, + sdk, + runtime, + runtime_version, + ]); +} + +const prefix = [ + "flatpak-builder", + "--ccache", + "--force-clean", + "--disable-updates", +]; +const suffix = [ + `--state-dir=${path}/.flatpak/flatpak-builder`, + `--stop-at=${app_module.name}`, + `${path}/.flatpak/repo`, + Gio.File.new_for_path(path).get_relative_path(manifest_file), +]; + +// de-initializes +async function downloadSources() { + await run([...prefix, "--download-only", ...suffix]); +} + +// de-initializes +async function buildModules() { + await run([ + ...prefix, + "--disable-download", + "--build-only", + "--keep-build-dirs", + ...suffix, + ]); +} + +if (!exists(`${path}/.flatpak/flatpak-builder`)) { + await downloadSources(); + await buildModules(); +} + +// builds workbench +if (!exists(`${path}/_build`)) { + await buildCommand([ + "meson", + "--prefix", + "/app", + "_build", + "-Dprofile=development", + ]); +} + +await buildCommand(["meson", "install", "-C", "_build"]); +// await buildCommand([ +// `troll/gjspack/bin/gjspack`, +// `--appid=${flatpak_id}`, +// "--prefix=/re/sonny/Workbench", +// `--project-root=.`, +// `--resource-root=./src`, +// "--blueprint-compiler=/app/bin/blueprint-compiler", +// "--no-executable", +// `${path}/src/main.js`, +// `/app/share/${flatpak_id}.src.gresource`, +// ]); + +// starts workbench +await runCommand([manifest.command]); + +function buildCommand(argv) { + let PATH = + "/app/bin:/app/bin:/app/bin:/usr/bin:${home}/.var/app/com.visualstudio.code/data/node_modules/bin:/app/bin:/usr/bin"; + const append_path = manifest["build-options"]?.["append-path"]; + if (append_path) PATH += `:${append_path}`; + + let LD_LIBRARY_PATH = "/app/lib:/app/lib"; + const append_ld_library_path = + manifest["build-options"]?.["append-ls-library-path"]; + if (append_ld_library_path) LD_LIBRARY_PATH += `:${append_ld_library_path}`; + + const PKG_CONFIG_PATH = + "/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"; + + return run([ + "flatpak", + "build", + "--share=network", + `--filesystem=${path}`, + `--filesystem=${path}/.flatpak/repo`, + `--env=PATH=${PATH}`, + `--env=LD_LIBRARY_PATH=${LD_LIBRARY_PATH}`, + `--env=PKG_CONFIG_PATH=${PKG_CONFIG_PATH}`, + `--filesystem=${path}/_build`, + `${path}/.flatpak/repo`, + ...argv, + ]); +} + +async function runCommand(argv) { + await exec( + [ + "flatpak", + "build", + "--with-appdir", + "--allow=devel", + `--bind-mount=/run/user/1000/doc=/run/user/1000/doc/by-app/${flatpak_id}`, + ...manifest["finish-args"], + + // Non default permissions + // see Permissions.js + // consider getting installed overrides instead + "--share=network", + "--socket=pulseaudio", + "--device=input", + + "--talk-name=org.freedesktop.portal.*", + "--talk-name=org.a11y.Bus", + "--bind-mount=/run/flatpak/at-spi-bus=/run/user/1000/at-spi/bus", + "--env=AT_SPI_BUS_ADDRESS=unix:path=/run/flatpak/at-spi-bus", + ...getHostEnv(), + "--bind-mount=/run/host/fonts=/usr/share/fonts", + "--bind-mount=/run/host/fonts-cache=/usr/lib/fontconfig/cache", + `--filesystem=${home}/.local/share/fonts:ro`, + `--filesystem=${home}/.cache/fontconfig:ro`, + `--bind-mount=/run/host/user-fonts-cache=${home}/.cache/fontconfig`, + `--bind-mount=/run/host/font-dirs.xml=${home}/.cache/font-dirs.xml`, + `${path}/.flatpak/repo`, + ...argv, + ], + { verbose: true }, + ); +} + +function getHostEnv() { + // https://github.com/bilelmoussaoui/flatpak-vscode/blob/6424e7d8f53924faa33c9043153e08b0aedf6225/src/utils.ts#L88 + const forwarded_env_keys = [ + "COLORTERM", + "DESKTOP_SESSION", + "LANG", + "WAYLAND_DISPLAY", + "XDG_CURRENT_DESKTOP", + "XDG_SEAT", + "XDG_SESSION_DESKTOP", + "XDG_SESSION_ID", + "XDG_SESSION_TYPE", + "XDG_VTNR", + "AT_SPI_BUS_ADDRESS", + ]; + + const env_vars = []; + forwarded_env_keys.forEach((key) => { + const value = GLib.getenv(key); + if (value === undefined) env_vars.push(key + "=" + value); + }); + + return env_vars; +} + +async function run(_) { + return exec(_, { verbose: argv.verbose }); +} + +async function exec(argv, { cancellable = null /*, verbose = false*/ }) { + argv = argv.map((arg) => { + return arg.toString(); + }); + + console.debug(`$ ${argv}`); + + let cancelId = 0; + + // meson uses stdout for logs + // const flags = verbose + // ? Gio.SubprocessFlags.NONE + // : Gio.SubprocessFlags.STDOUT_SILENCE; + + const flags = Gio.SubprocessFlags.NONE; + + const proc = new Gio.Subprocess({ + argv, + flags, + }); + proc.init(cancellable); + + if (cancellable instanceof Gio.Cancellable) + cancelId = cancellable.connect(() => proc.force_exit()); + + try { + const success = await proc.wait_check_async(null); + + if (!success) { + const status = proc.get_exit_status(); + throw new Gio.IOErrorEnum({ + code: Gio.IOErrorEnum.FAILED, + message: `Command '${argv}' failed with exit code ${status}`, + }); + } + } catch (err) { + console.debug(err); + exit(1); + } finally { + if (cancelId > 0) cancellable.disconnect(cancelId); + } +} diff --git a/build-aux/wip/run.sh b/build-aux/wip/run.sh new file mode 100755 index 000000000..fda3b89f2 --- /dev/null +++ b/build-aux/wip/run.sh @@ -0,0 +1,34 @@ +set -eux + +flatpak_id=re.sonny.Workbench.Devel +path=/home/sonny/Projects/Workbench +manifest=$path/build-aux/$flatpak_id.json +module_name=Workbench +command=workbench + +function run_build_command { + flatpak build --share=network --filesystem=$path --filesystem=$path/.flatpak/repo --env=PATH=/app/bin:/app/bin:/app/bin:/usr/bin:/home/sonny/.var/app/com.visualstudio.code/data/node_modules/bin:/app/bin:/usr/bin:/usr/lib/sdk/vala/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin:/usr/lib/sdk/typescript/bin --env=LD_LIBRARY_PATH=/app/lib:/app/lib:/usr/lib/sdk/vala/lib --env=PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig --filesystem=$path/_build $path/.flatpak/repo $1 +} + +if [ ! -d "$path/.flatpak/repo" ]; then + # initializes repo + flatpak build-init $path/.flatpak/repo $flatpak_id org.gnome.Sdk org.gnome.Sdk 47 +fi + +if [ ! -d "$path/.flatpak/flatpak-builder" ]; then + # downloads sources (de-initializes) + flatpak-builder --ccache --force-clean --disable-updates --download-only --state-dir=$path/.flatpak/flatpak-builder --stop-at=$module_name $path/.flatpak/repo $manifest + # builds modules (de-initializes) + flatpak-builder --ccache --force-clean --disable-updates --disable-download --build-only --keep-build-dirs --state-dir=$path/.flatpak/flatpak-builder --stop-at=$module_name $path/.flatpak/repo $manifest +fi + +# builds Workbench module +if [ ! -d "$path/_build" ]; then + run_build_command "meson --prefix /app _build -Dprofile=development" +else + time run_build_command "meson install -C _build" + # time run_build_command "$path/troll/gjspack/bin/gjspack --appid=$flatpak_id --prefix=/re.sonny.Workbench --project-root=$path --resource-root=$path/src --blueprint-compiler=/app/bin/blueprint-compiler --no-executable $path/src/main.js /app/share/$flatpak_id.src.gresource" +fi + +# starts workbench +flatpak build --with-appdir --allow=devel --bind-mount=/run/user/1000/doc=/run/user/1000/doc/by-app/$flatpak_id --share=ipc --socket=fallback-x11 --socket=wayland --device=dri --share=network --socket=pulseaudio --talk-name='org.freedesktop.portal.*' --talk-name=org.a11y.Bus --bind-mount=/run/flatpak/at-spi-bus=/run/user/1000/at-spi/bus --env=AT_SPI_BUS_ADDRESS=unix:path=/run/flatpak/at-spi-bus --env=AT_SPI_BUS_ADDRESS=unix:path=/run/flatpak/at-spi-bus --env=COLORTERM=truecolor --env=DESKTOP_SESSION=gnome --env=LANG=en_US.UTF-8 --env=WAYLAND_DISPLAY=wayland-0 --env=XDG_CURRENT_DESKTOP=GNOME --env=XDG_SESSION_DESKTOP=gnome --env=XDG_SESSION_TYPE=wayland --bind-mount=/run/host/fonts=/usr/share/fonts --bind-mount=/run/host/fonts-cache=/usr/lib/fontconfig/cache --filesystem=/home/sonny/.local/share/fonts:ro --filesystem=/home/sonny/.cache/fontconfig:ro --bind-mount=/run/host/user-fonts-cache=/home/sonny/.cache/fontconfig --bind-mount=/run/host/font-dirs.xml=/home/sonny/.cache/font-dirs.xml $path/.flatpak/repo $command diff --git a/data/app.gschema.xml b/data/app.gschema.xml index e89a9dd85..20e075a0c 100644 --- a/data/app.gschema.xml +++ b/data/app.gschema.xml @@ -18,6 +18,9 @@ true + + false + diff --git a/data/app.metainfo.xml b/data/app.metainfo.xml index 54d0744a7..cd23fbe66 100644 --- a/data/app.metainfo.xml +++ b/data/app.metainfo.xml @@ -19,7 +19,7 @@
  • JavaScript, Rust, Python and Vala support
  • Declarative user interface syntax
  • Autosave, sessions and projects
  • -
  • Code linter and formatter
  • +
  • Code diagnostics, completion and formatter
  • Terminal output
  • @@ -43,20 +43,62 @@ - - - - +

    Library:

      -
    • Update Biome to 1.8.3
    • -
    • Update gst-plugin-gtk4 to 1.12.7
    • +
    • Add "Button Row" demo
    • +
    • Update "Spinner" to use AdwSpinner
    • +
    • Port "Dialog" to Python
    • +
    • Port "Level Bars" to Rust
    • +
    • Port "Text Fields" to Rust
    • +
    • Port "Column View" to Rust
    • +
    • Port "Clamp" to Rust
    • +
    • Port "List View" to Rust
    • +
    • Port "Frame" to Rust
    • +
    • Port "Audio" to Rust
    • +
    • Port "File Monitor" to Vala
    • +
    • Port "Scrolled Window" to Vala
    • +
    • Port "Menu" to Vala
    • +
    • Port "HTTP Server" to Vala
    • +
    • Port "Map" to Vala
    • +
    • Port "Session Monitor and Inhibit" to Vala
    • +
    • Port "Save File" to Vala
    • +
    • Port "Spin Button" to Vala
    • +
    • Port "Progress Bar" to Vala
    • +
    • Port "Label" to Vala
    • +
    • Port "Power Profile Monitor" to Vala
    • +
    • Port "Drawing Area" to Vala
    • +
    • Port "Font Dialog" to Vala
    • +
    • Port "Select Folder" to Vala
    • +
    • Port "Network Monitor" to Vala
    • +
    • Port "Toggle Button" to Vala
    • +
    • Port "Tooltip" to Vala
    • +
    • Port "Spell Checker" to Vala
    • +
    • Port "Popovers" to Vala
    • +
    • Port "Menu Button" to Vala
    • +
    • Port "Frame" to Vala
    • +
    • Port "Actions" to Vala
    • +
    • Port "Dialog" to Vala
    • +
    • Port "CSS Gradients" to Vala
    • +
    +

    Dependencies:

    +
      + +
    • Add GOM dependency 0.5.3
    • +
    • Update Biome to 1.9.2
    • +
    • Update libshumate to 1.3
    • +
    • Update Blueprint to 0.14.0
    • +
    • Update vte to 0.78.0
    • +
    • Update libspelling to 0.4.2
    • +
    • Update libportal to 0.8.1
    @@ -150,7 +192,6 @@
  • Open the Library on start if there are no sessions to restore
  • Restore scroll and cusor positions on format and Run
  • Add "Copy" and "Select All" to Console
  • -
  • Add Vala formatter support
  • Add WebP image format support
  • Use Biome instead of prettier as JavaScript formatter
  • diff --git a/data/meson.build b/data/meson.build index b44179a55..76838f8a8 100644 --- a/data/meson.build +++ b/data/meson.build @@ -2,7 +2,7 @@ desktop_file = configure_file( input: 'app.desktop', output: '@0@.desktop'.format(app_id), configuration: { 'app_id': app_id }, - install_dir: join_paths(get_option('datadir'), 'applications') + install_dir: get_option('datadir') / 'applications' ) desktop_utils = find_program('desktop-file-validate', required: true) @@ -14,14 +14,14 @@ configure_file( input: 'app.service', output: '@0@.service'.format(app_id), configuration: { 'app_id': app_id, 'bindir': bindir }, - install_dir: join_paths(get_option('datadir'), 'dbus-1/services') + install_dir: get_option('datadir') / 'dbus-1/services' ) appstream_file = configure_file( input: 'app.metainfo.xml', output: '@0@.metainfo.xml'.format(app_id), configuration: { 'app_id': app_id }, - install_dir: join_paths(get_option('datadir'), 'metainfo') + install_dir: get_option('datadir') / 'metainfo' ) appstreamcli = find_program('appstreamcli', required: false) @@ -35,7 +35,7 @@ configure_file( input: 'app.gschema.xml', output: '@0@.gschema.xml'.format(app_id), configuration: { 'app_id': app_id }, - install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') + install_dir: get_option('datadir') / 'glib-2.0/schemas' ) compile_schemas = find_program('glib-compile-schemas', required: true) @@ -43,4 +43,4 @@ test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) -install_subdir('icons/hicolor', install_dir : join_paths(get_option('datadir'), 'icons')) +install_subdir('icons/hicolor', install_dir : get_option('datadir') / 'icons') diff --git a/demos b/demos index 644fb6bb6..13af95a68 160000 --- a/demos +++ b/demos @@ -1 +1 @@ -Subproject commit 644fb6bb604bc8cf0067262f8965d57a782f9a80 +Subproject commit 13af95a689101180fd9b05f81c029cd742dc3b03 diff --git a/src/langs/typescript/gi-types b/gi-types similarity index 100% rename from src/langs/typescript/gi-types rename to gi-types diff --git a/meson.build b/meson.build index e082b98dc..71124e130 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,10 @@ project('Workbench', ['vala', 'c', 'rust'], - version: '46.2', + version: '47.0', meson_version: '>= 0.64.0', - license: 'GPL-3.0-only' + license: 'GPL-3.0-only', + default_options : [ + 'libdir=lib', + ], ) gnome = import('gnome') @@ -20,9 +23,9 @@ else endif prefix = get_option('prefix') -bindir = join_paths(prefix, 'bin') -datadir = join_paths(prefix, get_option('datadir')) -pkgdatadir = join_paths(datadir, app_id) +bindir = prefix / 'bin' +datadir = prefix / get_option('datadir') +pkgdatadir = datadir / app_id subdir('data') subdir('src') diff --git a/package-lock.json b/package-lock.json index ee55d691b..f3cbbc27b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,10 +4,10 @@ "requires": true, "packages": { "": { - "name": "Workbench", "devDependencies": { - "@babel/eslint-parser": "^7.22.11", - "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/core": "^7.25.7", + "@babel/eslint-parser": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^22.0.1", "@rollup/plugin-node-resolve": "^13.3.0", "eslint": "^8.48.0", @@ -39,7 +39,6 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -49,13 +48,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "dev": true, - "peer": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -63,33 +61,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dev": true, - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -104,9 +100,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -118,35 +114,33 @@ }, "peerDependencies": { "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dev": true, - "peer": true, "dependencies": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dev": true, - "peer": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -154,71 +148,29 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dev": true, - "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -228,93 +180,74 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dev": true, - "peer": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "dev": true, - "peer": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -328,7 +261,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -341,7 +273,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -356,17 +287,18 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "peer": true, "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "dev": true, - "peer": true, + "dependencies": { + "@babel/types": "^7.25.7" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -374,13 +306,13 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -390,35 +322,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dev": true, - "peer": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -427,14 +354,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "dev": true, - "peer": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -574,7 +500,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -589,7 +514,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "peer": true, "engines": { "node": ">=6.0.0" } @@ -599,7 +523,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "peer": true, "engines": { "node": ">=6.0.0" } @@ -608,15 +531,13 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1028,9 +949,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, "funding": [ { @@ -1046,12 +967,11 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -1110,9 +1030,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001525", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", - "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==", + "version": "1.0.30001666", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz", + "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==", "dev": true, "funding": [ { @@ -1127,8 +1047,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "peer": true + ] }, "node_modules/chalk": { "version": "5.3.0", @@ -1178,7 +1097,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -1187,8 +1105,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/colorette": { "version": "2.0.20", @@ -1218,11 +1135,10 @@ "dev": true }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "peer": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1351,11 +1267,10 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.508", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", - "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", - "dev": true, - "peer": true + "version": "1.5.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz", + "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==", + "dev": true }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -1457,11 +1372,10 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -2169,7 +2083,6 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } @@ -2254,7 +2167,6 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -2318,7 +2230,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -2821,8 +2732,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -2837,16 +2747,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, - "peer": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -2872,7 +2781,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "peer": true, "bin": { "json5": "lib/cli.js" }, @@ -3008,7 +2916,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "peer": true, "dependencies": { "yallist": "^3.0.2" } @@ -3124,11 +3031,10 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true, - "peer": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true }, "node_modules/npm-run-path": { "version": "5.1.0", @@ -3374,9 +3280,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "node_modules/picomatch": { @@ -4037,7 +3943,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -4096,7 +4001,6 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -4257,9 +4161,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -4275,10 +4179,9 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -4373,8 +4276,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true + "dev": true }, "node_modules/yaml": { "version": "2.3.1", @@ -4410,48 +4312,44 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", "dev": true, - "peer": true, "requires": { - "@babel/highlight": "^7.24.7", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" } }, "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, - "peer": true + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", + "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "dev": true }, "@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", + "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", "dev": true, - "peer": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -4459,9 +4357,9 @@ } }, "@babel/eslint-parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.7.tgz", + "integrity": "sha512-B+BO9x86VYsQHimucBAL1fxTJKF4wyKY6ZVzee9QgzdZOUfs3BaR6AQrgoGrRI+7IFS1wUz/VyQ+SoBcSpdPbw==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -4470,154 +4368,103 @@ } }, "@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dev": true, - "peer": true, "requires": { - "@babel/types": "^7.24.7", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" } }, "@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dev": true, - "peer": true, "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, - "@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "peer": true, - "requires": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.24.7" - } - }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dev": true, - "peer": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" } }, "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dev": true, - "peer": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" } }, "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true }, "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, - "peer": true, "requires": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" } }, "@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", - "dev": true, - "peer": true + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "peer": true + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "dev": true }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "peer": true + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "dev": true }, "@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dev": true, - "peer": true, "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" } }, "@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", "dev": true, - "peer": true, "requires": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -4628,7 +4475,6 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "peer": true, "requires": { "color-convert": "^1.9.0" } @@ -4638,7 +4484,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "peer": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4649,67 +4494,62 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "peer": true + "dev": true } } }, "@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "dev": true, - "peer": true + "requires": { + "@babel/types": "^7.25.7" + } }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "@babel/plugin-syntax-import-attributes": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", + "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.7" } }, "@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dev": true, - "peer": true, "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" } }, "@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "dev": true, - "peer": true, "requires": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" } }, @@ -4804,7 +4644,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "peer": true, "requires": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -4815,29 +4654,25 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "peer": true + "dev": true }, "@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "peer": true + "dev": true }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "peer": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -5140,16 +4975,15 @@ } }, "browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, - "peer": true, "requires": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" } }, "builtin-modules": { @@ -5184,11 +5018,10 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001525", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz", - "integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==", - "dev": true, - "peer": true + "version": "1.0.30001666", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz", + "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==", + "dev": true }, "chalk": { "version": "5.3.0", @@ -5220,7 +5053,6 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "peer": true, "requires": { "color-name": "1.1.3" } @@ -5229,8 +5061,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "peer": true + "dev": true }, "colorette": { "version": "2.0.20", @@ -5257,11 +5088,10 @@ "dev": true }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "peer": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "cross-spawn": { "version": "7.0.3", @@ -5349,11 +5179,10 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.508", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", - "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", - "dev": true, - "peer": true + "version": "1.5.31", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz", + "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg==", + "dev": true }, "emoji-regex": { "version": "9.2.2", @@ -5440,11 +5269,10 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "peer": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", @@ -5972,8 +5800,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "peer": true + "dev": true }, "get-intrinsic": { "version": "1.2.1", @@ -6030,8 +5857,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "peer": true + "dev": true }, "globalthis": { "version": "1.0.3", @@ -6076,8 +5902,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "peer": true + "dev": true }, "has-property-descriptors": { "version": "1.0.0", @@ -6405,8 +6230,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "peer": true + "dev": true }, "js-yaml": { "version": "4.1.0", @@ -6418,11 +6242,10 @@ } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "peer": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true }, "json-buffer": { "version": "3.0.1", @@ -6446,8 +6269,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true + "dev": true }, "keyv": { "version": "4.5.3", @@ -6539,7 +6361,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "peer": true, "requires": { "yallist": "^3.0.2" } @@ -6621,11 +6442,10 @@ "dev": true }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true, - "peer": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true }, "npm-run-path": { "version": "5.1.0", @@ -6798,9 +6618,9 @@ "dev": true }, "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "picomatch": { @@ -7239,7 +7059,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "peer": true, "requires": { "has-flag": "^3.0.0" } @@ -7276,8 +7095,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "peer": true + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -7398,14 +7216,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, - "peer": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" } }, "uri-js": { @@ -7473,8 +7290,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true + "dev": true }, "yaml": { "version": "2.3.1", diff --git a/package.json b/package.json index 5ca4a7dec..c52d29452 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,9 @@ { "private": true, "devDependencies": { - "@babel/eslint-parser": "^7.22.11", - "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/core": "^7.25.7", + "@babel/eslint-parser": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", "@rollup/plugin-commonjs": "^22.0.1", "@rollup/plugin-node-resolve": "^13.3.0", "eslint": "^8.48.0", diff --git a/src/Extensions/Extension.blp b/src/Extensions/Extension.blp index 28df25804..891c7509f 100644 --- a/src/Extensions/Extension.blp +++ b/src/Extensions/Extension.blp @@ -17,7 +17,7 @@ template $Extension: ListBoxRow { Label label_title {} [end] - Image image_enabled { + Image image_available { icon-name: "re.sonny.Workbench-test-pass-symbolic"; styles [ diff --git a/src/Extensions/Extension.js b/src/Extensions/Extension.js index 56730ea08..06e6c3828 100644 --- a/src/Extensions/Extension.js +++ b/src/Extensions/Extension.js @@ -9,7 +9,7 @@ export default GObject.registerClass( Template, InternalChildren: [ "label_title", - "image_enabled", + "image_available", "installation_guide", "label_command", ], @@ -21,8 +21,8 @@ export default GObject.registerClass( GObject.ParamFlags.READWRITE, "", ), - enabled: GObject.ParamSpec.boolean( - "enabled", + available: GObject.ParamSpec.boolean( + "available", "", "", GObject.ParamFlags.READWRITE, @@ -49,14 +49,14 @@ export default GObject.registerClass( ); this.bind_property( - "enabled", - this._image_enabled, + "available", + this._image_available, "visible", GObject.BindingFlags.SYNC_CREATE, ); this.bind_property( - "enabled", + "available", this._installation_guide, "visible", GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.INVERT_BOOLEAN, diff --git a/src/Extensions/Extensions.blp b/src/Extensions/Extensions.blp index 266b05e7f..d3ef359f8 100644 --- a/src/Extensions/Extensions.blp +++ b/src/Extensions/Extensions.blp @@ -43,12 +43,12 @@ Adw.Dialog dialog { $Extension { title: _("JavaScript"); - enabled: true; + available: true; } $Extension { title: _("Python"); - enabled: true; + available: true; } $Extension extension_rust { diff --git a/src/Extensions/Extensions.js b/src/Extensions/Extensions.js index 570bcab24..d459920b2 100644 --- a/src/Extensions/Extensions.js +++ b/src/Extensions/Extensions.js @@ -6,7 +6,7 @@ import Interface from "./Extensions.blp" with { type: "uri" }; import illustration from "./extensions.svg"; import "./Extension.js"; -import { getFlatpakInfo } from "../util.js"; +import { getFlatpakInfo, settings } from "../util.js"; export const action_extensions = new Gio.SimpleAction({ name: "extensions", @@ -26,21 +26,22 @@ export function Extensions({ window }) { picture_illustration.set_resource(illustration); - extension_rust.enabled = isRustEnabled(); + extension_rust.available = isRustAvailable(); extension_rust.command = `flatpak install flathub org.freedesktop.Sdk.Extension.rust-stable//${freedesktop_version} org.freedesktop.Sdk.Extension.${llvm}//${freedesktop_version}`; - extension_vala.enabled = isValaEnabled(); + extension_vala.available = isValaAvailable(); extension_vala.command = `flatpak install flathub org.freedesktop.Sdk.Extension.vala//${freedesktop_version}`; - extension_typescript.enabled = isTypeScriptEnabled(); + extension_typescript.available = isTypeScriptAvailable(); extension_typescript.command = `flatpak install flathub org.freedesktop.Sdk.Extension.${node}//${freedesktop_version} org.freedesktop.Sdk.Extension.typescript//${freedesktop_version}`; + extension_typescript.visible = isTypeScriptEnabled(); for (const extension of [ extension_rust, extension_vala, extension_typescript, ]) { - if (!extension.enabled) { + if (!extension.available) { all_set_hint.set_visible(false); restart_hint.set_visible(true); } @@ -53,30 +54,35 @@ export function Extensions({ window }) { window.add_action(action_extensions); } -let rust_enabled = false; -export function isRustEnabled() { - rust_enabled ??= +let rust_available = null; +export function isRustAvailable() { + rust_available ??= Gio.File.new_for_path("/usr/lib/sdk/rust-stable").query_exists(null) && Gio.File.new_for_path(`/usr/lib/sdk/${llvm}`).query_exists(null); - return rust_enabled; + return rust_available; } -let vala_enabled = false; -export function isValaEnabled() { - vala_enabled ??= +let vala_available = null; +export function isValaAvailable() { + vala_available ??= Gio.File.new_for_path("/usr/lib/sdk/vala").query_exists(null); - return vala_enabled; + return vala_available; } -let typescript_enabled = false; -export function isTypeScriptEnabled() { - typescript_enabled ??= +let typescript_available = null; +export function isTypeScriptAvailable() { + typescript_available ??= + isTypeScriptEnabled() && Gio.File.new_for_path("/usr/lib/sdk/typescript").query_exists(null) && Gio.File.new_for_path(`/usr/lib/sdk/${node}`).query_exists(null); - return typescript_enabled; + return typescript_available; } const llvm = "llvm18"; const node = "node20"; const runtime = getFlatpakInfo().get_string("Application", "runtime"); -const freedesktop_version = runtime.endsWith("master") ? "24.08beta" : "23.08"; +const freedesktop_version = runtime.endsWith("master") ? "24.08" : "24.08"; + +export function isTypeScriptEnabled() { + return settings.get_boolean("typescript"); +} diff --git a/src/Library/Library.blp b/src/Library/Library.blp index c63bf450f..7d23823af 100644 --- a/src/Library/Library.blp +++ b/src/Library/Library.blp @@ -16,7 +16,7 @@ Adw.Window window { }; } - content: ScrolledWindow { + content: ScrolledWindow scrolled_window { hscrollbar-policy: never; child: Adw.Clamp { @@ -50,124 +50,32 @@ Adw.Window window { ] } - SearchEntry search_entry { - search-delay: 100; - placeholder-text: _("Search demos"); - activates-default: true; - width-request: 400; - margin-top: 32; - } - } - - ListBox library_uncategorized { - selection-mode: none; - - styles [ - "boxed-list" - ] - } - - Label label_tools { - label: _("Tools"); - halign: start; - margin-top: 12; - - styles [ - "title-4" - ] - } - - ListBox library_tools { - selection-mode: none; - - styles [ - "boxed-list" - ] - } - - Label label_network { - label: _("Network"); - halign: start; - margin-top: 12; - - styles [ - "title-4" - ] - } - - ListBox library_network { - selection-mode: none; - - styles [ - "boxed-list" - ] - } - - Label label_controls { - label: _("Controls"); - halign: start; - margin-top: 12; - - styles [ - "title-4" - ] - } - - ListBox library_controls { - selection-mode: none; - - styles [ - "boxed-list" - ] - } - - Label label_layout { - label: _("Layout"); - halign: start; - margin-top: 12; - - styles [ - "title-4" - ] - } - - ListBox library_layout { - selection-mode: none; - - styles [ - "boxed-list" - ] - } - - Label label_feedback { - label: _("Feedback"); - halign: start; - margin-top: 12; - - styles [ - "title-4" - ] - } + Box { + spacing: 6; + + SearchEntry search_entry { + search-delay: 100; + placeholder-text: _("Search demos"); + activates-default: true; + hexpand: true; + margin-top: 32; + } - ListBox library_feedback { - selection-mode: none; + DropDown dropdown_language { + valign: end; - styles [ - "boxed-list" - ] - } + model: Gtk.StringList {}; + } - Label label_navigation { - label: _("Navigation"); - halign: start; - margin-top: 12; + DropDown dropdown_category { + valign: end; - styles [ - "title-4" - ] + model: Gtk.StringList {}; + } + } } - ListBox library_navigation { + ListBox listbox { selection-mode: none; styles [ @@ -175,46 +83,36 @@ Adw.Window window { ] } - Label label_user_interface { - label: _("User Interface"); - halign: start; + Box { + halign: center; + margin-bottom: 24; margin-top: 12; + orientation: vertical; - styles [ - "title-4" - ] - } - - ListBox library_user_interface { - selection-mode: none; - - styles [ - "boxed-list" - ] - } + Box results_empty { + orientation: vertical; + visible: false; + margin-top: 46; + margin-bottom: 70; + spacing: 6; - Label label_platform { - label: _("Platform APIs"); - halign: start; - margin-top: 12; + Label { + label: _("No results"); - styles [ - "title-4" - ] - } - - ListBox library_platform { - selection-mode: none; + styles [ + "title-3" + ] + } - styles [ - "boxed-list" - ] - } + Button button_reset { + label: _("Reset filters"); + halign: center; - Box { - halign: center; - margin-bottom: 24; - margin-top: 12; + styles [ + "pill" + ] + } + } Label { label: _("All examples are dedicated to the public domain\nand can be used freely under the terms of CC0 1.0"); diff --git a/src/Library/Library.js b/src/Library/Library.js index b70358c95..464552b2d 100644 --- a/src/Library/Library.js +++ b/src/Library/Library.js @@ -14,12 +14,28 @@ import { createSessionFromDemo } from "../sessions.js"; import EntryRow from "./EntryRow.js"; import illustration from "./library.svg"; +import { gettext as _ } from "gettext"; import { build } from "../../troll/src/builder.js"; +import { + needsAdditionalPermissions, + showPermissionsDialog, +} from "../Permissions/Permissions.js"; +import { isTypeScriptEnabled } from "../Extensions/Extensions.js"; export default function Library({ application }) { const objects = build(resource); - const { window, picture_illustration, search_entry } = objects; + const { + window, + picture_illustration, + search_entry, + dropdown_category, + dropdown_language, + results_empty, + button_reset, + listbox, + scrolled_window, + } = objects; window.application = application; picture_illustration.set_resource(illustration); @@ -31,11 +47,52 @@ export default function Library({ application }) { window.connect("close-request", quitOnLastWindowClose); + const categories = [ + { id: "all", name: _("Any Category"), index: 0 }, + { id: "tools", name: _("Tools"), index: 1 }, + { id: "network", name: _("Network"), index: 2 }, + { id: "controls", name: _("Controls"), index: 3 }, + { id: "layout", name: _("Layout"), index: 4 }, + { id: "feedback", name: _("Feedback"), index: 5 }, + { id: "navigation", name: _("Navigation"), index: 6 }, + { id: "user_interface", name: _("User Interface"), index: 7 }, + { id: "platform", name: _("Platform APIs"), index: 8 }, + ]; + const categories_by_id = Object.fromEntries( + categories.map((category) => [category.id, category]), + ); + const categories_by_index = Object.fromEntries( + categories.map((category) => [category.index, category]), + ); + const category_all = categories_by_id["all"]; + + categories.forEach((category) => { + dropdown_category.model.append(category.name); + }); + + const languages = [ + { id: "all", name: _("Any Language"), index: 0 }, + { id: "javascript", name: _("JavaScript"), index: 1 }, + { id: "python", name: _("Python"), index: 2 }, + { id: "rust", name: _("Rust"), index: 3 }, + { id: "vala", name: _("Vala"), index: 4 }, + ]; + if (isTypeScriptEnabled()) { + languages.push({ id: "typescript", name: _("TypeScript"), index: 5 }); + } + const languages_by_id = Object.fromEntries( + languages.map((language) => [language.id, language]), + ); + const languages_by_index = Object.fromEntries( + languages.map((language) => [language.index, language]), + ); + languages.forEach((language) => { + dropdown_language.model.append(language.name); + }); + const demos = getDemos(); - const widgets_map = new Map(); - const category_map = new Map(); - demos.forEach((demo) => { - const entry_row = new EntryRow({ demo: demo }); + const entries = demos.map((demo) => { + const entry_row = new EntryRow({ demo }); if (demo.name === "Welcome") last_triggered = entry_row; entry_row.connect("triggered", (_self, language) => { @@ -47,29 +104,59 @@ export default function Library({ application }) { language, }).catch(console.error); }); - if (!category_map.has(demo.category)) { - category_map.set(demo.category, objects[`library_${demo.category}`]); - } - objects[`library_${demo.category}`].append(entry_row); - widgets_map.set(demo.name, { entry_row, category: demo.category }); + listbox.append(entry_row); + + const category = categories_by_id[demo.category]; + const widget = entry_row; + const languages = demo.languages.map((lang) => languages_by_id[lang]); + + return { ...demo, category, widget, languages }; }); - search_entry.connect("search-changed", () => { - const search_term = search_entry.get_text().toLowerCase(); - const visible_categories = new Set(); + const language_all = languages_by_id["all"]; - widgets_map.forEach(({ entry_row, category }, demo_name) => { - const is_match = demo_name.toLowerCase().includes(search_term); - entry_row.visible = is_match; - if (is_match) visible_categories.add(category); - }); + function updateList() { + const current_category = + categories_by_index[dropdown_category.get_selected()]; + const current_language = + languages_by_index[dropdown_language.get_selected()]; - category_map.forEach((category_widget, category_name) => { - const label = objects[`label_${category_name}`]; - if (label) label.visible = search_term === ""; - category_widget.visible = visible_categories.has(category_name); + const search_term = search_entry.get_text().toLowerCase(); + let results_found = false; + entries.forEach(({ name, description, category, languages, widget }) => { + const category_match = + current_category === category_all || category === current_category; + const language_match = + current_language === language_all || + languages.includes(current_language); + const search_match = + search_term === "" || + name.toLowerCase().includes(search_term) || + description.toLowerCase().includes(search_term) || + category.name.toLowerCase().includes(search_term); + const is_match = category_match && language_match && search_match; + widget.visible = is_match; + if (is_match) { + results_found = true; + } }); - }); + + results_empty.visible = !results_found; + } + + search_entry.connect("search-changed", updateList); + dropdown_category.connect("notify::selected", updateList); + dropdown_language.connect("notify::selected", updateList); + + function reset() { + scrolled_window.vadjustment = null; + search_entry.text = ""; + dropdown_category.selected = category_all.index; + dropdown_language.selected = language_all.index; + } + button_reset.connect("clicked", reset); + window.connect("show", reset); + const action_library = new Gio.SimpleAction({ name: "library", parameter_type: null, @@ -124,9 +211,17 @@ async function openDemo({ application, demo_name, language }) { ); } - const { load, runCode } = Window({ application, session }); + const { load, runCode, window } = Window({ + application, + session, + }); await load(); + if (needsAdditionalPermissions({ demo })) { + showPermissionsDialog({ window }); + return; + } + const code_language = session.getCodeLanguage(); const run = autorun && code_language.id === "javascript"; if (run) { diff --git a/src/PanelCode.js b/src/PanelCode.js index 5c07fe3a2..fb95b424a 100644 --- a/src/PanelCode.js +++ b/src/PanelCode.js @@ -4,6 +4,7 @@ import GObject from "gi://GObject"; import { makeDropdownFlat, settings as global_settings } from "./util.js"; import { setupRustProject } from "./langs/rust/rust.js"; import { setupTypeScriptProject } from "./langs/typescript/typescript.js"; +import { setupJavascriptProject } from "./langs/javascript/javascript.js"; export default function PanelCode({ builder, @@ -55,6 +56,12 @@ export default function PanelCode({ stack_code.visible_child_name = panel.language; previewer.useInternal().catch(console.error); + if (panel.language.toLowerCase() === "javascript") { + setupJavascriptProject(file, langs.javascript.document).catch( + console.error, + ); + } + if (panel.language.toLowerCase() === "rust") { setupRustProject(file).catch(console.error); } diff --git a/src/Permissions/Permissions.blp b/src/Permissions/Permissions.blp new file mode 100644 index 000000000..86743400d --- /dev/null +++ b/src/Permissions/Permissions.blp @@ -0,0 +1,155 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Dialog dialog { + content-height: 750; + content-width: 600; + + Adw.ToolbarView { + [top] + Adw.HeaderBar {} + + content: ScrolledWindow { + hscrollbar-policy: never; + + Adw.Clamp { + maximum-size: 520; + tightening-threshold: 400; + margin-start: 12; + margin-end: 12; + margin-bottom: 24; + + Box { + orientation: vertical; + halign: fill; + spacing: 24; + // Gtk.Picture needs to be wrapped in a box to behave properly + Box { + halign: center; + + Picture picture_illustration { + can-shrink: false; + margin-bottom: 24; + } + } + + Label { + label: _("Permissions Needed"); + + styles [ + "title-1" + ] + } + + Label { + label: _("Workbench needs additional permissions. Please run the following command in a terminal and restart the app."); + wrap: true; + justify: center; + } + + Label label_command { + use-markup: true; + wrap: true; + wrap-mode: word_char; + selectable: true; + xalign: 0; + + styles [ + "command_snippet" + ] + } + + Box { + orientation: vertical; + + Box { + margin-bottom: 6; + + Label { + label: _("What it does"); + halign: start; + hexpand: true; + + styles [ + "heading" + ] + } + + Button button_info { + icon-name: "re.sonny.Workbench-external-link-symbolic"; + + styles [ + "flat" + ] + } + } + + ListBox { + selection-mode: none; + + styles [ + "boxed-list" + ] + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-person-symbolic"; + } + + title: _("--user"); + subtitle: _("Grant for your account only"); + + styles [ + "property" + ] + } + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-network-wireless-symbolic"; + } + + title: _("--share-network"); + subtitle: _("Network access"); + + styles [ + "property" + ] + } + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-speakers-symbolic"; + } + + title: _("--socket=pulseaudio"); + subtitle: _("Record and play audio"); + + styles [ + "property" + ] + } + + Adw.ActionRow { + [prefix] + Image { + icon-name: "re.sonny.Workbench-gamepad-symbolic"; + } + + title: _("--device=input"); + subtitle: _("Access to input device such as gamepads"); + + styles [ + "property" + ] + } + } + } + } + } + }; + } +} diff --git a/src/Permissions/Permissions.js b/src/Permissions/Permissions.js new file mode 100644 index 000000000..c0561b579 --- /dev/null +++ b/src/Permissions/Permissions.js @@ -0,0 +1,62 @@ +import Gio from "gi://Gio"; +import GLib from "gi://GLib"; +import Gtk from "gi://Gtk"; + +import { build } from "../../troll/src/main.js"; + +import Interface from "./Permissions.blp" with { type: "uri" }; + +import illustration from "./permissions.svg"; + +import { getFlatpakInfo } from "../util.js"; + +const action_permissions = new Gio.SimpleAction({ + name: "permissions", + parameter_type: null, +}); + +export function Permissions({ window }) { + const { dialog, picture_illustration, label_command, button_info } = + build(Interface); + + picture_illustration.set_resource(illustration); + label_command.label = `flatpak override --user --share=network --socket=pulseaudio --device=input ${GLib.getenv( + "FLATPAK_ID", + )}`; + + button_info.connect("clicked", () => { + new Gtk.UriLauncher({ + uri: "https://docs.flatpak.org/en/latest/sandbox-permissions.html", + }) + .launch(window, null) + .catch(console.error); + }); + + action_permissions.connect("activate", () => { + dialog.present(window); + }); + + window.add_action(action_permissions); +} + +const missing_permissions = (() => { + const flatpak_info = getFlatpakInfo(); + const shared = flatpak_info.get_string_list("Context", "shared"); + const sockets = flatpak_info.get_string_list("Context", "sockets"); + const devices = flatpak_info.get_string_list("Context", "devices"); + + return ( + !shared.includes("network") || + !sockets.includes("pulseaudio") || + !devices.includes("all") + ); +})(); + +export function needsAdditionalPermissions({ demo }) { + if (!demo["flatpak-finish-args"]) return false; + return missing_permissions; +} + +export function showPermissionsDialog({ window }) { + window.activate_action("permissions", null); +} diff --git a/src/Permissions/permissions.svg b/src/Permissions/permissions.svg new file mode 100644 index 000000000..c1eb540de --- /dev/null +++ b/src/Permissions/permissions.svg @@ -0,0 +1,568 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Previewer/Internal.js b/src/Previewer/Internal.js index 30b3f2276..4c7d56cd8 100644 --- a/src/Previewer/Internal.js +++ b/src/Previewer/Internal.js @@ -132,7 +132,7 @@ export default function Internal({ const prop_name = prop.get_name(); // AdwWindow and AdwApplicationWindow have child and titlebar properties but do not support setting them // "Using gtk_window_get_titlebar() and gtk_window_set_titlebar() is not supported and will result in a crash." - // https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.5/class.Window.html + // https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.6/class.Window.html // https://github.com/workbenchdev/Workbench/issues/130 if ( (object_preview instanceof Adw.Window || diff --git a/src/actions.js b/src/actions.js index db65a5e6d..2d14b9898 100644 --- a/src/actions.js +++ b/src/actions.js @@ -5,7 +5,9 @@ import Xdp from "gi://Xdp"; import XdpGtk from "gi://XdpGtk4"; import About from "./about.js"; +import Window from "./window.js"; import { portal, settings } from "./util.js"; +import { createSession } from "./sessions.js"; export default function Actions({ application }) { const quit = new Gio.SimpleAction({ @@ -65,6 +67,15 @@ export default function Actions({ application }) { // application.add_action(settings.create_action("safe-mode")); // application.add_action(settings.create_action("auto-preview")); + const action_new_project = new Gio.SimpleAction({ + name: "new", + }); + action_new_project.connect("activate", (_self, _target) => { + newProject({ application }).catch(console.error); + }); + application.add_action(action_new_project); + application.set_accels_for_action("app.new", ["N"]); + const action_open_file = new Gio.SimpleAction({ name: "open", parameter_type: new GLib.VariantType("s"), @@ -97,6 +108,12 @@ async function showScreenshot({ application, uri }) { ); } +async function newProject({ application }) { + const session = createSession(); + const { load } = Window({ application, session }); + await load(); +} + async function open({ application, hint }) { const file_dialog = new Gtk.FileDialog(); diff --git a/src/application.js b/src/application.js index 25acd8d74..a5d0c7713 100644 --- a/src/application.js +++ b/src/application.js @@ -30,6 +30,11 @@ import "./icons/re.sonny.Workbench-terminal-symbolic.svg" with { type: "icon" }; import "./icons/re.sonny.Workbench-test-pass-symbolic.svg" with { type: "icon" }; import "./icons/re.sonny.Workbench-up-symbolic.svg" with { type: "icon" }; import "./icons/re.sonny.Workbench-library-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-gamepad-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-network-wireless-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-person-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-speakers-symbolic.svg" with { type: "icon" }; +import "./icons/re.sonny.Workbench-external-link-symbolic.svg" with { type: "icon" }; const icon_theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()); icon_theme.resource_path = [ diff --git a/src/cli/main.js b/src/cli/main.js index ea0402f2d..d6955e677 100644 --- a/src/cli/main.js +++ b/src/cli/main.js @@ -31,7 +31,7 @@ export async function main([action, ...args]) { if (action === "ci") { const filenames = args; - const success = await ci({ filenames, current_dir }); + const success = await ci({ filenames }); return success ? 0 : 1; } @@ -43,12 +43,10 @@ export async function main([action, ...args]) { } if (lang.id === "vala") { - const api_file = ( - GLib.getenv("FLATPAK_ID") - ? Gio.File.new_for_path(pkg.pkgdatadir) - : current_dir.resolve_relative_path("src/langs/vala") - ).get_child("workbench.vala"); - api_file.copy( + const file_api = Gio.File.new_for_path(pkg.pkgdatadir).get_child( + "workbench.vala", + ); + file_api.copy( current_dir.get_child("workbench.vala"), Gio.FileCopyFlags.OVERWRITE, null, @@ -122,7 +120,7 @@ async function checkFile({ lspc, file, lang, uri }) { } } -async function ci({ filenames, current_dir }) { +async function ci({ filenames }) { for (const filename of filenames) { const demo_dir = Gio.File.new_for_path(filename); @@ -354,27 +352,27 @@ async function ci({ filenames, current_dir }) { const languageId = "vala"; let version = 0; - const template_dir = GLib.getenv("FLATPAK_ID") - ? Gio.File.new_for_path( - `/app/share/${GLib.getenv("FLATPAK_ID")}/langs/vala/template`, - ) - : current_dir.resolve_relative_path("src/langs/vala/template"); - - const api_file = template_dir.get_child("workbench.vala"); - api_file.copy( - demo_dir.get_child("workbench.vala"), - Gio.FileCopyFlags.OVERWRITE, - null, - null, - ); + const template_dir = Gio.new_for_path( + pkg.pkgdatadir, + ).resolve_relative_path("src/langs/vala/template"); + + template_dir + .get_child("workbench.vala") + .copy( + demo_dir.get_child("workbench.vala"), + Gio.FileCopyFlags.OVERWRITE, + null, + null, + ); - const meson_file = template_dir.get_child("meson.build"); - meson_file.copy( - demo_dir.get_child("meson.build"), - Gio.FileCopyFlags.OVERWRITE, - null, - null, - ); + template_dir + .get_child("meson.build") + .copy( + demo_dir.get_child("meson.build"), + Gio.FileCopyFlags.OVERWRITE, + null, + null, + ); const [contents] = await file_vala.load_contents_async(null); const text = new TextDecoder().decode(contents); diff --git a/src/cli/meson.build b/src/cli/meson.build index 51ba1d6a3..d62ee6516 100644 --- a/src/cli/meson.build +++ b/src/cli/meson.build @@ -3,7 +3,7 @@ bin_conf.set('GJS', find_program('gjs').full_path()) bin_conf.set('version', meson.project_version() + version_suffix) bin_conf.set('app_id', app_id) bin_conf.set('prefix', prefix) -bin_conf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) +bin_conf.set('libdir', get_option('prefix') / get_option('libdir')) bin_conf.set('datadir', datadir) bin_conf.set('pkgdatadir', pkgdatadir) bin_conf.set('sourcedir', meson.project_source_root()) diff --git a/src/common.js b/src/common.js index a3f3679c5..868c4f377 100644 --- a/src/common.js +++ b/src/common.js @@ -1,5 +1,3 @@ -import GLib from "gi://GLib"; - import LSPClient from "./lsp/LSPClient.js"; const formatting_options = { @@ -47,13 +45,12 @@ export const languages = [ document: null, default_file: "main.js", index: 0, + // language_server: ["typescript-language-server", "--stdio"], language_server: [ "biome", "lsp-proxy", // src/meson.build installs biome.json there - GLib.getenv("FLATPAK_ID") - ? `--config-path=${pkg.pkgdatadir}` - : `--config-path=src/langs/javascript`, + `--config-path=${pkg.pkgdatadir}`, ], formatting_options: { ...formatting_options, diff --git a/src/icons/re.sonny.Workbench-external-link-symbolic.svg b/src/icons/re.sonny.Workbench-external-link-symbolic.svg new file mode 100644 index 000000000..e88a887a0 --- /dev/null +++ b/src/icons/re.sonny.Workbench-external-link-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/icons/re.sonny.Workbench-gamepad-symbolic.svg b/src/icons/re.sonny.Workbench-gamepad-symbolic.svg new file mode 100644 index 000000000..ff2aa1e8c --- /dev/null +++ b/src/icons/re.sonny.Workbench-gamepad-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg b/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg new file mode 100644 index 000000000..f33a9104e --- /dev/null +++ b/src/icons/re.sonny.Workbench-network-wireless-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/icons/re.sonny.Workbench-person-symbolic.svg b/src/icons/re.sonny.Workbench-person-symbolic.svg new file mode 100644 index 000000000..4936089f3 --- /dev/null +++ b/src/icons/re.sonny.Workbench-person-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/icons/re.sonny.Workbench-speakers-symbolic.svg b/src/icons/re.sonny.Workbench-speakers-symbolic.svg new file mode 100644 index 000000000..bf59b480b --- /dev/null +++ b/src/icons/re.sonny.Workbench-speakers-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/init.js b/src/init.js index 68f4f85ff..f335f5c28 100644 --- a/src/init.js +++ b/src/init.js @@ -1,5 +1,5 @@ import "gi://GIRepository?version=2.0"; -import Gtk from "gi://Gtk"; +import Gtk from "gi://Gtk?version=4.0"; import Source from "gi://GtkSource"; import Adw from "gi://Adw"; import Vte from "gi://Vte"; diff --git a/src/langs/javascript/javascript.js b/src/langs/javascript/javascript.js index 817d81451..972c33b5b 100644 --- a/src/langs/javascript/javascript.js +++ b/src/langs/javascript/javascript.js @@ -1,5 +1,7 @@ +import Gio from "gi://Gio"; + import { createLSPClient } from "../../common.js"; -import { getLanguage } from "../../util.js"; +import { getLanguage, copy } from "../../util.js"; export function setup({ document }) { const { file, buffer, code_view } = document; @@ -30,3 +32,22 @@ export function setup({ document }) { return lspc; } + +const javascript_template_dir = Gio.File.new_for_path( + pkg.pkgdatadir, +).resolve_relative_path("langs/javascript/template"); + +export async function setupJavascriptProject(destination, document) { + const destination_file = await copy( + "jsconfig.json", + javascript_template_dir, + destination, + Gio.FileCopyFlags.NONE, + ); + + // Notify the language server that the jsconfig file was created + // to initialize diagnostics and type checkings + await document.lspc.notify("workspace/didCreateFile", { + files: [{ uri: destination_file.get_uri() }], + }); +} diff --git a/src/langs/javascript/meson.build b/src/langs/javascript/meson.build new file mode 100644 index 000000000..a3ddb85bb --- /dev/null +++ b/src/langs/javascript/meson.build @@ -0,0 +1,6 @@ +configure_file( + input: 'template/jsconfig.json', + output: 'jsconfig.json', + install_dir: pkgdatadir / 'langs/javascript/template/', + configuration: bin_conf, +) diff --git a/src/langs/javascript/template/jsconfig.json b/src/langs/javascript/template/jsconfig.json new file mode 100644 index 000000000..835b0797c --- /dev/null +++ b/src/langs/javascript/template/jsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "checkJs": true, + "module": "ESNext", + "moduleResolution": "Bundler", + // TODO: should probably be fixed to ES2023, or whatever standard is + // currently supported by the latest GJS + "target": "ESNext", + "outDir": "compiled_javascript", + "baseUrl": ".", + "paths": { + "*": ["*", "@pkgdatadir@/langs/typescript/gi-types/*"] + }, + "skipLibCheck": true + }, + "include": [ + "main.js", + "@pkgdatadir@/langs/typescript/types/ambient.d.ts", + "@pkgdatadir@/langs/typescript/gi-types/gi.d.ts" + ] +} diff --git a/src/langs/rust/rust.js b/src/langs/rust/rust.js index 4e7a84dc2..774b9f052 100644 --- a/src/langs/rust/rust.js +++ b/src/langs/rust/rust.js @@ -2,10 +2,10 @@ import Gio from "gi://Gio"; import { createLSPClient } from "../../common.js"; import { getLanguage, copy } from "../../util.js"; -import { isRustEnabled } from "../../Extensions/Extensions.js"; +import { isRustAvailable } from "../../Extensions/Extensions.js"; export function setup({ document }) { - if (!isRustEnabled()) return; + if (!isRustAvailable()) return; const { file, buffer, code_view } = document; diff --git a/src/langs/rust/template/meson.build b/src/langs/rust/template/meson.build index e5ea1c9c8..d6da0ccd6 100644 --- a/src/langs/rust/template/meson.build +++ b/src/langs/rust/template/meson.build @@ -1,2 +1,2 @@ install_data(['Cargo.lock', 'Cargo.toml', 'lib.rs', 'workbench.rs'], - install_dir : join_paths(pkgdatadir, 'langs/rust/template')) + install_dir : pkgdatadir / 'langs/rust/template') diff --git a/src/langs/typescript/meson.build b/src/langs/typescript/meson.build index 103d365b9..9ff964ba7 100644 --- a/src/langs/typescript/meson.build +++ b/src/langs/typescript/meson.build @@ -1,14 +1,17 @@ configure_file( input: 'template/tsconfig.json', output: 'tsconfig.json', - install_dir: join_paths(pkgdatadir, 'langs/typescript/template/'), + install_dir: pkgdatadir / 'langs/typescript/template/', configuration: bin_conf, ) install_data( ['types/ambient.d.ts'], - install_dir: join_paths(pkgdatadir, 'langs/typescript'), + install_dir: pkgdatadir / 'langs/typescript', preserve_path: true, ) -install_subdir('gi-types', install_dir: join_paths(pkgdatadir, 'langs/typescript')) \ No newline at end of file +install_subdir( + meson.project_source_root() / 'gi-types', + install_dir: pkgdatadir / 'langs/typescript', +) diff --git a/src/langs/typescript/typescript.js b/src/langs/typescript/typescript.js index 2414e148d..ecc296792 100644 --- a/src/langs/typescript/typescript.js +++ b/src/langs/typescript/typescript.js @@ -2,10 +2,10 @@ import Gio from "gi://Gio"; import { createLSPClient } from "../../common.js"; import { getLanguage, copy } from "../../util.js"; -import { isTypeScriptEnabled } from "../../Extensions/Extensions.js"; +import { isTypeScriptAvailable } from "../../Extensions/Extensions.js"; export function setup({ document }) { - if (!isTypeScriptEnabled()) return; + if (!isTypeScriptAvailable()) return; const { file, buffer, code_view } = document; diff --git a/src/langs/vala/vala.js b/src/langs/vala/vala.js index 27dd28518..002d25885 100644 --- a/src/langs/vala/vala.js +++ b/src/langs/vala/vala.js @@ -1,11 +1,11 @@ import Gio from "gi://Gio"; -import { isValaEnabled } from "../../Extensions/Extensions.js"; +import { isValaAvailable } from "../../Extensions/Extensions.js"; import { createLSPClient } from "../../common.js"; import { getLanguage, copy } from "../../util.js"; export function setup({ document }) { - if (!isValaEnabled()) return; + if (!isValaAvailable()) return; const { file, buffer, code_view } = document; diff --git a/src/libworkbench/meson.build b/src/libworkbench/meson.build index f5b2b448c..e45a9a069 100644 --- a/src/libworkbench/meson.build +++ b/src/libworkbench/meson.build @@ -3,13 +3,13 @@ # SPDX-FileContributor: Andy Holmes prefix = get_option('prefix') -datadir = join_paths(prefix, get_option('datadir')) -includedir = join_paths(prefix, get_option('includedir')) -libdir = join_paths(prefix, get_option('libdir')) +datadir = prefix / get_option('datadir') +includedir = prefix / get_option('includedir') +libdir = prefix / get_option('libdir') -girdir = join_paths(datadir, 'gir-1.0') -typelibdir = join_paths(libdir, 'girepository-1.0') -vapidir = join_paths(datadir, 'vala', 'vapi') +girdir = datadir / 'gir-1.0' +typelibdir = libdir / 'girepository-1.0' +vapidir = datadir / 'vala' / 'vapi' libworkbench_api_version = '0' libworkbench_api_name = 'libworkbench-@0@'.format(libworkbench_api_version) @@ -71,13 +71,13 @@ libworkbench_sources = files([ ]) install_headers(libworkbench_headers, - subdir: join_paths(includedir, 'libworkbench'), + subdir: includedir / 'libworkbench', ) libworkbench_enums = gnome.mkenums_simple('libworkbench-enums', sources: libworkbench_headers, install_header: true, - install_dir: join_paths(includedir, 'libworkbench'), + install_dir: includedir / 'libworkbench', ) libworkbench = shared_library('workbench-@0@'.format(libworkbench_api_version), diff --git a/src/meson.build b/src/meson.build index 8fe30f585..9d8db22f9 100644 --- a/src/meson.build +++ b/src/meson.build @@ -3,7 +3,7 @@ bin_conf.set('GJS', find_program('gjs').full_path()) bin_conf.set('version', meson.project_version() + version_suffix) bin_conf.set('app_id', app_id) bin_conf.set('prefix', prefix) -bin_conf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) +bin_conf.set('libdir', get_option('prefix') / get_option('libdir')) bin_conf.set('datadir', datadir) bin_conf.set('pkgdatadir', pkgdatadir) bin_conf.set('sourcedir', meson.project_source_root()) @@ -15,6 +15,7 @@ blueprint_compiler = find_program( meson.add_install_script('../build-aux/library.js', pkgdatadir) +subdir('langs/javascript') subdir('langs/rust/template') subdir('langs/typescript') subdir('langs/vala') diff --git a/src/sessions.js b/src/sessions.js index a3b90c0d6..96327aef4 100644 --- a/src/sessions.js +++ b/src/sessions.js @@ -56,7 +56,7 @@ export async function getSessions() { return [...files.values()].map((file) => new Session(file)); } -function createSession() { +export function createSession() { const id = getNowForFilename(); const file = sessions_dir.get_child(id); ensureDir(file); diff --git a/src/shortcutsWindow.blp b/src/shortcutsWindow.blp index d10929b30..e8a09edd5 100644 --- a/src/shortcutsWindow.blp +++ b/src/shortcutsWindow.blp @@ -17,6 +17,11 @@ ShortcutsWindow window { title: _("Format"); } + ShortcutsShortcut { + accelerator: "N"; + title: _("New Project"); + } + ShortcutsShortcut { accelerator: "O"; title: _("Open Project"); diff --git a/src/widgets/CodeView.js b/src/widgets/CodeView.js index 3859952f3..7d9f452b9 100644 --- a/src/widgets/CodeView.js +++ b/src/widgets/CodeView.js @@ -73,7 +73,6 @@ class CodeView extends Gtk.Widget { } #onUpdate = () => { - this.clearDiagnostics(); this.emit("changed"); }; diff --git a/src/window.blp b/src/window.blp index 7dad45993..863302f7e 100644 --- a/src/window.blp +++ b/src/window.blp @@ -180,15 +180,7 @@ Adw.ApplicationWindow window { } DropDown dropdown_code_lang { - model: StringList { - strings [ - "JavaScript", - "Vala", - "Rust", - "Python", - "TypeScript", - ] - }; + model: StringList {}; tooltip-text: _("Switch Document"); } @@ -595,6 +587,11 @@ menu menu_app { } section { + item { + label: _("New Project"); + action: "app.new"; + } + item { label: _("Open Project…"); action: "app.open"; @@ -695,6 +692,11 @@ menu menu_app { action: "win.extensions"; } + item { + label: _("Permissions"); + action: "win.permissions"; + } + section { item { label: _("Reveal in Files"); diff --git a/src/window.js b/src/window.js index 773af7eff..664250348 100644 --- a/src/window.js +++ b/src/window.js @@ -29,10 +29,12 @@ import { import { action_extensions, Extensions, - isRustEnabled, + isRustAvailable, + isTypeScriptAvailable, isTypeScriptEnabled, - isValaEnabled, + isValaAvailable, } from "./Extensions/Extensions.js"; +import { Permissions } from "./Permissions/Permissions.js"; import { JavaScriptDocument } from "./langs/javascript/JavaScriptDocument.js"; import { BlueprintDocument } from "./langs/blueprint/BlueprintDocument.js"; import { CssDocument } from "./langs/css/CssDocument.js"; @@ -67,6 +69,15 @@ export default function Window({ application, session }) { Extensions({ window, }); + Permissions({ window }); + + const dropdown_code_lang = builder.get_object("dropdown_code_lang"); + for (const lang of ["JavaScript", "Vala", "Rust", "Python"]) { + dropdown_code_lang.model.append(lang); + } + if (isTypeScriptEnabled()) { + dropdown_code_lang.model.append("TypeScript"); + } // Popover menu theme switcher const button_menu = builder.get_object("button_menu"); @@ -245,13 +256,13 @@ export default function Window({ application, session }) { async function runCode() { const { language } = panel_code; - if (language === "Vala" && !isValaEnabled()) { + if (language === "Vala" && !isValaAvailable()) { action_extensions.activate(null); return; - } else if (language === "Rust" && !isRustEnabled()) { + } else if (language === "Rust" && !isRustAvailable()) { action_extensions.activate(null); return; - } else if (language === "TypeScript" && !isTypeScriptEnabled()) { + } else if (language === "TypeScript" && !isTypeScriptAvailable()) { action_extensions.activate(null); return; } diff --git a/troll b/troll index 89e0c822f..1dc72cb29 160000 --- a/troll +++ b/troll @@ -1 +1 @@ -Subproject commit 89e0c822fc6c0d58e7a57ed1f7a8affc05113815 +Subproject commit 1dc72cb295edbc212b4a0952286c7b5cc66db60a