ags init
you can initialize a project, which generates a basic template.
+ - title: Generate TypeScript types.
+ details: With ags types
you can generate types from GObject based libraries.
+ - title: Bundle projects
+ details: With ags bundle
you can bundle your project into a single executable script.
+ - title: Run projects
+ details: With ags run
you can run a projects without bundling them first.
+---
+
+
diff --git a/docs/package-lock.json b/docs/package-lock.json
new file mode 100644
index 00000000..18423360
--- /dev/null
+++ b/docs/package-lock.json
@@ -0,0 +1,2430 @@
+{
+ "name": "ags-docs",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "ags-docs",
+ "dependencies": {
+ "devicon": "^2.16.0"
+ },
+ "devDependencies": {
+ "vitepress": "^1.5.0"
+ }
+ },
+ "node_modules/@algolia/autocomplete-core": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.6.tgz",
+ "integrity": "sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-plugin-algolia-insights": "1.17.6",
+ "@algolia/autocomplete-shared": "1.17.6"
+ }
+ },
+ "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.6.tgz",
+ "integrity": "sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.17.6"
+ },
+ "peerDependencies": {
+ "search-insights": ">= 1 < 3"
+ }
+ },
+ "node_modules/@algolia/autocomplete-preset-algolia": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz",
+ "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-shared": "1.17.6"
+ },
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/autocomplete-shared": {
+ "version": "1.17.6",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz",
+ "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@algolia/client-search": ">= 4.9.1 < 6",
+ "algoliasearch": ">= 4.9.1 < 6"
+ }
+ },
+ "node_modules/@algolia/client-abtesting": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.13.0.tgz",
+ "integrity": "sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-analytics": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.13.0.tgz",
+ "integrity": "sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-common": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.13.0.tgz",
+ "integrity": "sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-insights": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.13.0.tgz",
+ "integrity": "sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-personalization": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.13.0.tgz",
+ "integrity": "sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-query-suggestions": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.13.0.tgz",
+ "integrity": "sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/client-search": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.13.0.tgz",
+ "integrity": "sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/ingestion": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.13.0.tgz",
+ "integrity": "sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/monitoring": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.13.0.tgz",
+ "integrity": "sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/recommend": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.13.0.tgz",
+ "integrity": "sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-browser-xhr": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.13.0.tgz",
+ "integrity": "sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-fetch": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.13.0.tgz",
+ "integrity": "sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@algolia/requester-node-http": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.13.0.tgz",
+ "integrity": "sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-common": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
+ "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.26.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@docsearch/css": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.7.0.tgz",
+ "integrity": "sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@docsearch/js": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.7.0.tgz",
+ "integrity": "sha512-ScfqOIKrSr8SImbpxVaD59xc/bytbL8QEM2GUpe3aICmoICflWp5DyTRzAdFky16HY+yEOAVZXt3COXQ1NOCWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@docsearch/react": "3.7.0",
+ "preact": "^10.0.0"
+ }
+ },
+ "node_modules/@docsearch/react": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.7.0.tgz",
+ "integrity": "sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/autocomplete-core": "1.17.6",
+ "@algolia/autocomplete-preset-algolia": "1.17.6",
+ "@docsearch/css": "3.7.0",
+ "algoliasearch": "^5.12.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">= 16.8.0 < 19.0.0",
+ "react": ">= 16.8.0 < 19.0.0",
+ "react-dom": ">= 16.8.0 < 19.0.0",
+ "search-insights": ">= 1 < 3"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "search-insights": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@iconify-json/simple-icons": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.11.tgz",
+ "integrity": "sha512-AHCGDtBRqP+JzAbBzgO8uN/08CXxEmuaC6lQQZ3b5burKhRU12AJnJczwbUw2K5Mb/U85EpSUNhYMG3F28b8NA==",
+ "dev": true,
+ "license": "CC0-1.0",
+ "dependencies": {
+ "@iconify/types": "*"
+ }
+ },
+ "node_modules/@iconify/types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
+ "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz",
+ "integrity": "sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz",
+ "integrity": "sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz",
+ "integrity": "sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz",
+ "integrity": "sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz",
+ "integrity": "sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz",
+ "integrity": "sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz",
+ "integrity": "sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz",
+ "integrity": "sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz",
+ "integrity": "sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz",
+ "integrity": "sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz",
+ "integrity": "sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz",
+ "integrity": "sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz",
+ "integrity": "sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz",
+ "integrity": "sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz",
+ "integrity": "sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz",
+ "integrity": "sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz",
+ "integrity": "sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz",
+ "integrity": "sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@shikijs/core": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz",
+ "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/engine-javascript": "1.22.2",
+ "@shikijs/engine-oniguruma": "1.22.2",
+ "@shikijs/types": "1.22.2",
+ "@shikijs/vscode-textmate": "^9.3.0",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.3"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz",
+ "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.22.2",
+ "@shikijs/vscode-textmate": "^9.3.0",
+ "oniguruma-to-js": "0.4.3"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz",
+ "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.22.2",
+ "@shikijs/vscode-textmate": "^9.3.0"
+ }
+ },
+ "node_modules/@shikijs/transformers": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.22.2.tgz",
+ "integrity": "sha512-8f78OiBa6pZDoZ53lYTmuvpFPlWtevn23bzG+azpPVvZg7ITax57o/K3TC91eYL3OMJOO0onPbgnQyZjRos8XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shiki": "1.22.2"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz",
+ "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^9.3.0",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz",
+ "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/linkify-it": "^5",
+ "@types/mdurl": "^2"
+ }
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.20",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
+ "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.5.tgz",
+ "integrity": "sha512-dlnib73G05CDBAUR/YpuZcQQ47fpjihnnNouAAqN62z+oqSsWJ+kh52GRzIxpkgFG3q11eXK7Di7RMmoCwISZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
+ "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.12",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
+ "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
+ "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.12",
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/compiler-ssr": "3.5.12",
+ "@vue/shared": "3.5.12",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.47",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
+ "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.6.4.tgz",
+ "integrity": "sha512-5AaJ5ELBIuevmFMZYYLuOO9HUuY/6OlkOELHE7oeDhy4XD/hSODIzktlsvBOsn+bto3aD0psj36LGzwVu5Ip8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-kit": "^7.6.4"
+ }
+ },
+ "node_modules/@vue/devtools-kit": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.6.4.tgz",
+ "integrity": "sha512-Zs86qIXXM9icU0PiGY09PQCle4TI750IPLmAJzW5Kf9n9t5HzSYf6Rz6fyzSwmfMPiR51SUKJh9sXVZu78h2QA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-shared": "^7.6.4",
+ "birpc": "^0.2.19",
+ "hookable": "^5.5.3",
+ "mitt": "^3.0.1",
+ "perfect-debounce": "^1.0.0",
+ "speakingurl": "^14.0.1",
+ "superjson": "^2.2.1"
+ }
+ },
+ "node_modules/@vue/devtools-shared": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.6.4.tgz",
+ "integrity": "sha512-nD6CUvBEel+y7zpyorjiUocy0nh77DThZJ0k1GRnJeOmY3ATq2fWijEp7wk37gb023Cb0R396uYh5qMSBQ5WFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "rfdc": "^1.4.1"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz",
+ "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz",
+ "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.12",
+ "@vue/shared": "3.5.12"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz",
+ "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.12",
+ "@vue/runtime-core": "3.5.12",
+ "@vue/shared": "3.5.12",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz",
+ "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.12",
+ "@vue/shared": "3.5.12"
+ },
+ "peerDependencies": {
+ "vue": "3.5.12"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
+ "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vueuse/core": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.2.0.tgz",
+ "integrity": "sha512-JIUwRcOqOWzcdu1dGlfW04kaJhW3EXnnjJJfLTtddJanymTL7lF1C0+dVVZ/siLfc73mWn+cGP1PE1PKPruRSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.20",
+ "@vueuse/metadata": "11.2.0",
+ "@vueuse/shared": "11.2.0",
+ "vue-demi": ">=0.14.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/core/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/integrations": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.2.0.tgz",
+ "integrity": "sha512-zGXz3dsxNHKwiD9jPMvR3DAxQEOV6VWIEYTGVSB9PNpk4pTWR+pXrHz9gvXWcP2sTk3W2oqqS6KwWDdntUvNVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vueuse/core": "11.2.0",
+ "@vueuse/shared": "11.2.0",
+ "vue-demi": ">=0.14.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "async-validator": "^4",
+ "axios": "^1",
+ "change-case": "^5",
+ "drauu": "^0.4",
+ "focus-trap": "^7",
+ "fuse.js": "^7",
+ "idb-keyval": "^6",
+ "jwt-decode": "^4",
+ "nprogress": "^0.2",
+ "qrcode": "^1.5",
+ "sortablejs": "^1",
+ "universal-cookie": "^7"
+ },
+ "peerDependenciesMeta": {
+ "async-validator": {
+ "optional": true
+ },
+ "axios": {
+ "optional": true
+ },
+ "change-case": {
+ "optional": true
+ },
+ "drauu": {
+ "optional": true
+ },
+ "focus-trap": {
+ "optional": true
+ },
+ "fuse.js": {
+ "optional": true
+ },
+ "idb-keyval": {
+ "optional": true
+ },
+ "jwt-decode": {
+ "optional": true
+ },
+ "nprogress": {
+ "optional": true
+ },
+ "qrcode": {
+ "optional": true
+ },
+ "sortablejs": {
+ "optional": true
+ },
+ "universal-cookie": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/integrations/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.2.0.tgz",
+ "integrity": "sha512-L0ZmtRmNx+ZW95DmrgD6vn484gSpVeRbgpWevFKXwqqQxW9hnSi2Ppuh2BzMjnbv4aJRiIw8tQatXT9uOB23dQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.2.0.tgz",
+ "integrity": "sha512-VxFjie0EanOudYSgMErxXfq6fo8vhr5ICI+BuE3I9FnX7ePllEsVrRQ7O6Q1TLgApeLuPKcHQxAXpP+KnlrJsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vue-demi": ">=0.14.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared/node_modules/vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/algoliasearch": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.13.0.tgz",
+ "integrity": "sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/client-abtesting": "5.13.0",
+ "@algolia/client-analytics": "5.13.0",
+ "@algolia/client-common": "5.13.0",
+ "@algolia/client-insights": "5.13.0",
+ "@algolia/client-personalization": "5.13.0",
+ "@algolia/client-query-suggestions": "5.13.0",
+ "@algolia/client-search": "5.13.0",
+ "@algolia/ingestion": "1.13.0",
+ "@algolia/monitoring": "1.13.0",
+ "@algolia/recommend": "5.13.0",
+ "@algolia/requester-browser-xhr": "5.13.0",
+ "@algolia/requester-fetch": "5.13.0",
+ "@algolia/requester-node-http": "5.13.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/birpc": {
+ "version": "0.2.19",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz",
+ "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/devicon": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/devicon/-/devicon-2.16.0.tgz",
+ "integrity": "sha512-PE5a2HBNeN4av+Iu975OiiWEwS8LJPw5HAvlv0JUHb62jZTdYxTpz4ga+cQyvdtb3x1side2P9Sr1mmOmUkO/g==",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/focus-trap": {
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.1.tgz",
+ "integrity": "sha512-nB8y4nQl8PshahLpGKZOq1sb0xrMVFSn6at7u/qOsBZTlZRzaapISGENcB6mOkoezbClZyiMwEF/dGY8AZ00rA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tabbable": "^6.2.0"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz",
+ "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
+ "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.12",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
+ "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/mark.js": {
+ "version": "8.11.1",
+ "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
+ "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
+ "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
+ "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
+ "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
+ "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
+ "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/minisearch": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz",
+ "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/oniguruma-to-js": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz",
+ "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regex": "^4.3.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/perfect-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.24.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz",
+ "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/regex": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-4.4.0.tgz",
+ "integrity": "sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/rollup": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.25.0.tgz",
+ "integrity": "sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.25.0",
+ "@rollup/rollup-android-arm64": "4.25.0",
+ "@rollup/rollup-darwin-arm64": "4.25.0",
+ "@rollup/rollup-darwin-x64": "4.25.0",
+ "@rollup/rollup-freebsd-arm64": "4.25.0",
+ "@rollup/rollup-freebsd-x64": "4.25.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.25.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.25.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.25.0",
+ "@rollup/rollup-linux-arm64-musl": "4.25.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.25.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.25.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.25.0",
+ "@rollup/rollup-linux-x64-gnu": "4.25.0",
+ "@rollup/rollup-linux-x64-musl": "4.25.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.25.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.25.0",
+ "@rollup/rollup-win32-x64-msvc": "4.25.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/search-insights": {
+ "version": "2.17.2",
+ "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz",
+ "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/shiki": {
+ "version": "1.22.2",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz",
+ "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "1.22.2",
+ "@shikijs/engine-javascript": "1.22.2",
+ "@shikijs/engine-oniguruma": "1.22.2",
+ "@shikijs/types": "1.22.2",
+ "@shikijs/vscode-textmate": "^9.3.0",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/speakingurl": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
+ "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/superjson": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz",
+ "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "copy-anything": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vite": {
+ "version": "5.4.11",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz",
+ "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || >=20.0.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitepress": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.5.0.tgz",
+ "integrity": "sha512-q4Q/G2zjvynvizdB3/bupdYkCJe2umSAMv9Ju4d92E6/NXJ59z70xB0q5p/4lpRyAwflDsbwy1mLV9Q5+nlB+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@docsearch/css": "^3.6.2",
+ "@docsearch/js": "^3.6.2",
+ "@iconify-json/simple-icons": "^1.2.10",
+ "@shikijs/core": "^1.22.2",
+ "@shikijs/transformers": "^1.22.2",
+ "@shikijs/types": "^1.22.2",
+ "@types/markdown-it": "^14.1.2",
+ "@vitejs/plugin-vue": "^5.1.4",
+ "@vue/devtools-api": "^7.5.4",
+ "@vue/shared": "^3.5.12",
+ "@vueuse/core": "^11.1.0",
+ "@vueuse/integrations": "^11.1.0",
+ "focus-trap": "^7.6.0",
+ "mark.js": "8.11.1",
+ "minisearch": "^7.1.0",
+ "shiki": "^1.22.2",
+ "vite": "^5.4.10",
+ "vue": "^3.5.12"
+ },
+ "bin": {
+ "vitepress": "bin/vitepress.js"
+ },
+ "peerDependencies": {
+ "markdown-it-mathjax3": "^4",
+ "postcss": "^8"
+ },
+ "peerDependenciesMeta": {
+ "markdown-it-mathjax3": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz",
+ "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.12",
+ "@vue/compiler-sfc": "3.5.12",
+ "@vue/runtime-dom": "3.5.12",
+ "@vue/server-renderer": "3.5.12",
+ "@vue/shared": "3.5.12"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/docs/package.json b/docs/package.json
new file mode 100644
index 00000000..9d12b47f
--- /dev/null
+++ b/docs/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "ags-docs",
+ "type": "module",
+ "devDependencies": {
+ "vitepress": "^1.5.0"
+ },
+ "scripts": {
+ "dev": "vitepress dev .",
+ "build": "vitepress build .",
+ "preview": "vitepress preview ."
+ },
+ "dependencies": {
+ "devicon": "^2.16.0"
+ }
+}
diff --git a/docs/vitepress.config.ts b/docs/vitepress.config.ts
new file mode 100644
index 00000000..ae231c43
--- /dev/null
+++ b/docs/vitepress.config.ts
@@ -0,0 +1,60 @@
+import { defineConfig } from 'vitepress'
+
+export default defineConfig({
+ title: "AGS",
+ description: "Documentation website of AGS",
+
+ outDir: "./dist",
+ base: "/ags/",
+ lastUpdated: true,
+
+ head: [
+ ["link", { rel: "icon", href: "https://aylur.github.io/astal/icon.svg" }],
+ ],
+
+ themeConfig: {
+ outline: "deep",
+
+ nav: [
+ {
+ text: "Guide",
+ link: "/guide/installation",
+ activeMatch: "/guide/",
+ },
+ {
+ text: "Astal",
+ link: "https://aylur.github.io/astal/",
+ },
+ ],
+
+
+ sidebar: [
+ { text: "Quick Start", link: "/guide/quick-start" },
+ { text: "Installation", link: "/guide/install" },
+ { text: "Setting up a project", link: "/guide/init" },
+ { text: "Bundling", link: "/guide/bundling" },
+ { text: "Generating types", link: "/guide/types" },
+ { text: "Astal CLI", link: "/guide/astal-cli" },
+ { text: "Example", link: "/guide/example" },
+ { text: "Nix", link: "/guide/nix" },
+ ],
+
+ socialLinks: [
+ { icon: "github", link: "https://github.com/aylur/ags" },
+ { icon: "discord", link: "https://discord.gg/CXQpHwDuhY" },
+ ],
+
+ editLink: {
+ pattern: "https://github.com/aylur/ags/edit/main/docs/:path",
+ text: "Edit this page on GitHub",
+ },
+
+ lastUpdated: {
+ text: "Last updated",
+ },
+
+ search: {
+ provider: "local",
+ },
+ },
+})
diff --git a/docs/vitepress.theme.css b/docs/vitepress.theme.css
new file mode 100644
index 00000000..7bd694f9
--- /dev/null
+++ b/docs/vitepress.theme.css
@@ -0,0 +1,126 @@
+/**
+ * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
+ */
+
+.VPNavBar .VPNavBarTitle span {
+ font-size: 1.2em;
+ font-weight: bold;
+ background: linear-gradient(120deg, var(--vp-c-brand-3), var(--vp-c-brand-1));
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ color: transparent;
+}
+
+:root {
+ --vp-c-gray-1: #dddde3;
+ --vp-c-gray-2: #e4e4e9;
+ --vp-c-gray-3: #ebebef;
+ --vp-c-gray-soft: rgba(142, 150, 170, 0.14);
+
+ --vp-c-indigo-1: #3451b2;
+ --vp-c-indigo-2: #3a5ccc;
+ --vp-c-indigo-3: #5672cd;
+ --vp-c-indigo-soft: rgba(100, 108, 255, 0.14);
+
+ --vp-c-purple-1: #6f42c1;
+ --vp-c-purple-2: #7e4cc9;
+ --vp-c-purple-3: #8e5cd9;
+ --vp-c-purple-soft: rgba(159, 122, 234, 0.14);
+
+ --vp-c-green-1: #18794e;
+ --vp-c-green-2: #299764;
+ --vp-c-green-3: #30a46c;
+ --vp-c-green-soft: rgba(16, 185, 129, 0.14);
+
+ --vp-c-yellow-1: #915930;
+ --vp-c-yellow-2: #946300;
+ --vp-c-yellow-3: #9f6a00;
+ --vp-c-yellow-soft: rgba(234, 179, 8, 0.14);
+
+ --vp-c-red-1: #b8272c;
+ --vp-c-red-2: #d5393e;
+ --vp-c-red-3: #e0575b;
+ --vp-c-red-soft: rgba(244, 63, 94, 0.14);
+
+ --vp-c-sponsor: #db2777;
+}
+
+.dark {
+ --vp-c-gray-1: #515151;
+ --vp-c-gray-2: #464646;
+ --vp-c-gray-3: #323232;
+ --vp-c-gray-soft: hsla(0, 0%, 36%, 0.16);
+
+ --vp-c-indigo-1: hsl(207, 76%, 61%);
+ --vp-c-indigo-2: hsl(207, 86%, 51%);
+ --vp-c-indigo-3: hsl(207, 96%, 41%);
+ --vp-c-indigo-soft: hsla(207, 76%, 61%, .18);
+
+ --vp-c-purple-1: #c8abfa;
+ --vp-c-purple-2: #a879e6;
+ --vp-c-purple-3: #8e5cd9;
+ --vp-c-purple-soft: rgba(159, 122, 234, 0.16);
+
+ --vp-c-green-1: hsl(158, 100%, 42%);
+ --vp-c-green-2: hsl(158, 95%, 37%);
+ --vp-c-green-3: hsl(158, 90%, 35%);
+ --vp-c-green-soft: hsla(158, 100%, 42%, 0.16);
+
+ --vp-c-yellow-1: #f9b44e;
+ --vp-c-yellow-2: #da8b17;
+ --vp-c-yellow-3: #a46a0a;
+ --vp-c-yellow-soft: rgba(234, 179, 8, 0.16);
+
+ --vp-c-red-1: #f66f81;
+ --vp-c-red-2: #f14158;
+ --vp-c-red-3: #b62a3c;
+ --vp-c-red-soft: rgba(244, 63, 94, 0.16);
+}
+
+/* ---------- *
+ * Background *
+ * ---------- */
+
+:root {
+ --vp-c-bg: #ffffff;
+ --vp-c-bg-alt: #f6f6f7;
+ --vp-c-bg-elv: #ffffff;
+ --vp-c-bg-soft: #f6f6f7;
+}
+
+.dark {
+ --vp-c-bg: #111111;
+ --vp-c-bg-alt: #181818;
+ --vp-c-bg-elv: #202122;
+ --vp-c-bg-soft: #202122;
+}
+
+/** Borders */
+:root {
+ --vp-c-border: #c2c2c4;
+ --vp-c-divider: #e2e2e3;
+ --vp-c-gutter: #e2e2e3;
+}
+
+.dark {
+ --vp-c-border: #3c3d3e;
+ --vp-c-divider: #2e2e2e;
+ --vp-c-gutter: #000000;
+}
+
+/* ---- *
+ * Text *
+ * ---- */
+
+:root {
+ --vp-c-text-1: rgba(60, 60, 67);
+ --vp-c-text-2: rgba(60, 60, 67, 0.78);
+ --vp-c-text-3: rgba(60, 60, 67, 0.56);
+}
+
+.dark {
+ --vp-c-text-1: rgba(255, 255, 245, 0.86);
+ --vp-c-text-2: rgba(235, 235, 245, 0.6);
+ --vp-c-text-3: rgba(235, 235, 245, 0.38);
+}
diff --git a/example/applauncher/README.md b/example/applauncher/README.md
deleted file mode 100644
index 88791dc9..00000000
--- a/example/applauncher/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Application Launcher
-
-setup
-
-```bash
-mkdir -p ~/.config/ags
-git clone https://github.com/Aylur/ags.git /tmp/ags
-cp -r /tmp/ags/example/applauncher/* ~/.config/ags
-
-# optionally setup types
-ags --init -c ~/.config/ags/config.js
-```
-
-running
-
-```bash
-ags -c ~/.config/ags/config.js &
-ags -t applauncher
-```
diff --git a/example/applauncher/applauncher.js b/example/applauncher/applauncher.js
deleted file mode 100644
index 23dfa400..00000000
--- a/example/applauncher/applauncher.js
+++ /dev/null
@@ -1,107 +0,0 @@
-const { query } = await Service.import("applications")
-const WINDOW_NAME = "applauncher"
-
-/** @param {import('resource:///com/github/Aylur/ags/service/applications.js').Application} app */
-const AppItem = app => Widget.Button({
- on_clicked: () => {
- App.closeWindow(WINDOW_NAME)
- app.launch()
- },
- attribute: { app },
- child: Widget.Box({
- children: [
- Widget.Icon({
- icon: app.icon_name || "",
- size: 42,
- }),
- Widget.Label({
- class_name: "title",
- label: app.name,
- xalign: 0,
- vpack: "center",
- truncate: "end",
- }),
- ],
- }),
-})
-
-const Applauncher = ({ width = 500, height = 500, spacing = 12 }) => {
- // list of application buttons
- let applications = query("").map(AppItem)
-
- // container holding the buttons
- const list = Widget.Box({
- vertical: true,
- children: applications,
- spacing,
- })
-
- // repopulate the box, so the most frequent apps are on top of the list
- function repopulate() {
- applications = query("").map(AppItem)
- list.children = applications
- }
-
- // search entry
- const entry = Widget.Entry({
- hexpand: true,
- css: `margin-bottom: ${spacing}px;`,
-
- // to launch the first item on Enter
- on_accept: () => {
- // make sure we only consider visible (searched for) applications
- const results = applications.filter((item) => item.visible);
- if (results[0]) {
- App.toggleWindow(WINDOW_NAME)
- results[0].attribute.app.launch()
- }
- },
-
- // filter out the list
- on_change: ({ text }) => applications.forEach(item => {
- item.visible = item.attribute.app.match(text ?? "")
- }),
- })
-
- return Widget.Box({
- vertical: true,
- css: `margin: ${spacing * 2}px;`,
- children: [
- entry,
-
- // wrap the list in a scrollable
- Widget.Scrollable({
- hscroll: "never",
- css: `min-width: ${width}px;`
- + `min-height: ${height}px;`,
- child: list,
- }),
- ],
- setup: self => self.hook(App, (_, windowName, visible) => {
- if (windowName !== WINDOW_NAME)
- return
-
- // when the applauncher shows up
- if (visible) {
- repopulate()
- entry.text = ""
- entry.grab_focus()
- }
- }),
- })
-}
-
-// there needs to be only one instance
-export const applauncher = Widget.Window({
- name: WINDOW_NAME,
- setup: self => self.keybind("Escape", () => {
- App.closeWindow(WINDOW_NAME)
- }),
- visible: false,
- keymode: "exclusive",
- child: Applauncher({
- width: 500,
- height: 500,
- spacing: 12,
- }),
-})
diff --git a/example/applauncher/config.js b/example/applauncher/config.js
deleted file mode 100644
index 61842eed..00000000
--- a/example/applauncher/config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import { applauncher } from "./applauncher.js"
-
-App.config({
- windows: [applauncher],
-})
diff --git a/example/icon-browser/README.md b/example/icon-browser/README.md
deleted file mode 100644
index 2657f693..00000000
--- a/example/icon-browser/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Icon Browser
-
-```bash
-chmod +x icon-browser.js
-./icon-browser.js
-```
diff --git a/example/icon-browser/icon-browser.js b/example/icon-browser/icon-browser.js
deleted file mode 100755
index f4187afb..00000000
--- a/example/icon-browser/icon-browser.js
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env -S ags -b icon-browser -c
-
-import Gtk from "gi://Gtk?version=3.0"
-
-const IconPicker = () => {
- const selected = Widget.Label({
- css: "font-size: 1.2em;",
- label: "Click on an icon te get its name",
- selectable: true,
- })
-
- const flowbox = Widget.FlowBox({
- min_children_per_line: 7,
- row_spacing: 12,
- column_spacing: 12,
- vpack: "start",
- hpack: "start",
- setup: self => {
- self.connect("child-activated", (_, child) => {
- selected.label = child.get_child()?.iconName || ""
- })
-
- Gtk.IconTheme.get_default().list_icons(null).sort().map(icon => {
- !icon.endsWith(".symbolic") && self.insert(Widget.Icon({
- icon,
- size: 38,
- }), -1)
- })
-
- self.show_all()
- },
- })
-
- const entry = Widget.Entry({
- placeholder_text: "Type to seach...",
- primary_icon_name: "system-search-symbolic",
- on_change: ({ text }) => flowbox.get_children().forEach(child => {
- child.visible = child.get_child().iconName.includes(text)
- }),
- })
-
- return Widget.Box({
- css: "padding: 30px;",
- spacing: 20,
- vertical: true,
- children: [
- entry,
- Widget.Scrollable({
- hscroll: "never",
- vscroll: "always",
- hexpand: true,
- vexpand: true,
- css: "min-width: 400px;"
- + "min-height: 500px;",
- child: flowbox,
- }),
- selected,
- ],
- })
-}
-
-const win = new Gtk.Window({
- name: "icon-browser",
- child: IconPicker(),
-})
-
-win.show_all()
-win.connect("delete-event", () => {
- App.quit()
- return true
-})
-
-export default { windows: [win] }
diff --git a/example/media-widget/Media.js b/example/media-widget/Media.js
deleted file mode 100644
index 337656db..00000000
--- a/example/media-widget/Media.js
+++ /dev/null
@@ -1,153 +0,0 @@
-const mpris = await Service.import("mpris")
-const players = mpris.bind("players")
-
-const FALLBACK_ICON = "audio-x-generic-symbolic"
-const PLAY_ICON = "media-playback-start-symbolic"
-const PAUSE_ICON = "media-playback-pause-symbolic"
-const PREV_ICON = "media-skip-backward-symbolic"
-const NEXT_ICON = "media-skip-forward-symbolic"
-
-/** @param {number} length */
-function lengthStr(length) {
- const min = Math.floor(length / 60)
- const sec = Math.floor(length % 60)
- const sec0 = sec < 10 ? "0" : ""
- return `${min}:${sec0}${sec}`
-}
-
-/** @param {import('types/service/mpris').MprisPlayer} player */
-function Player(player) {
- const img = Widget.Box({
- class_name: "img",
- vpack: "start",
- css: player.bind("cover_path").transform(p => `
- background-image: url('${p}');
- `),
- })
-
- const title = Widget.Label({
- class_name: "title",
- wrap: true,
- hpack: "start",
- label: player.bind("track_title"),
- })
-
- const artist = Widget.Label({
- class_name: "artist",
- wrap: true,
- hpack: "start",
- label: player.bind("track_artists").transform(a => a.join(", ")),
- })
-
- const positionSlider = Widget.Slider({
- class_name: "position",
- draw_value: false,
- on_change: ({ value }) => player.position = value * player.length,
- visible: player.bind("length").as(l => l > 0),
- setup: self => {
- function update() {
- const value = player.position / player.length
- self.value = value > 0 ? value : 0
- }
- self.hook(player, update)
- self.hook(player, update, "position")
- self.poll(1000, update)
- },
- })
-
- const positionLabel = Widget.Label({
- class_name: "position",
- hpack: "start",
- setup: self => {
- const update = (_, time) => {
- self.label = lengthStr(time || player.position)
- self.visible = player.length > 0
- }
-
- self.hook(player, update, "position")
- self.poll(1000, update)
- },
- })
-
- const lengthLabel = Widget.Label({
- class_name: "length",
- hpack: "end",
- visible: player.bind("length").transform(l => l > 0),
- label: player.bind("length").transform(lengthStr),
- })
-
- const icon = Widget.Icon({
- class_name: "icon",
- hexpand: true,
- hpack: "end",
- vpack: "start",
- tooltip_text: player.identity || "",
- icon: player.bind("entry").transform(entry => {
- const name = `${entry}-symbolic`
- return Utils.lookUpIcon(name) ? name : FALLBACK_ICON
- }),
- })
-
- const playPause = Widget.Button({
- class_name: "play-pause",
- on_clicked: () => player.playPause(),
- visible: player.bind("can_play"),
- child: Widget.Icon({
- icon: player.bind("play_back_status").transform(s => {
- switch (s) {
- case "Playing": return PAUSE_ICON
- case "Paused":
- case "Stopped": return PLAY_ICON
- }
- }),
- }),
- })
-
- const prev = Widget.Button({
- on_clicked: () => player.previous(),
- visible: player.bind("can_go_prev"),
- child: Widget.Icon(PREV_ICON),
- })
-
- const next = Widget.Button({
- on_clicked: () => player.next(),
- visible: player.bind("can_go_next"),
- child: Widget.Icon(NEXT_ICON),
- })
-
- return Widget.Box(
- { class_name: "player" },
- img,
- Widget.Box(
- {
- vertical: true,
- hexpand: true,
- },
- Widget.Box([
- title,
- icon,
- ]),
- artist,
- Widget.Box({ vexpand: true }),
- positionSlider,
- Widget.CenterBox({
- start_widget: positionLabel,
- center_widget: Widget.Box([
- prev,
- playPause,
- next,
- ]),
- end_widget: lengthLabel,
- }),
- ),
- )
-}
-
-export function Media() {
- return Widget.Box({
- vertical: true,
- css: "min-height: 2px; min-width: 2px;", // small hack to make it visible
- visible: players.as(p => p.length > 0),
- children: players.as(p => p.map(Player)),
- })
-}
diff --git a/example/media-widget/README.md b/example/media-widget/README.md
deleted file mode 100644
index 0db707c3..00000000
--- a/example/media-widget/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Media Widget
-
-setup
-
-```bash
-mkdir -p ~/.config/ags
-git clone https://github.com/Aylur/ags.git /tmp/ags
-cp -r /tmp/ags/example/media-widget/* ~/.config/ags
-
-# optionally setup types
-ags --init -c ~/.config/ags/config.js
-```
-
-running
-
-```bash
-ags -c ~/.config/ags/config.js &
-```
diff --git a/example/media-widget/config.js b/example/media-widget/config.js
deleted file mode 100644
index d8f5c86f..00000000
--- a/example/media-widget/config.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Media } from "./Media.js"
-
-const win = Widget.Window({
- name: "mpris",
- anchor: ["top", "right"],
- child: Media(),
-})
-
-App.config({
- style: "./style.css",
- windows: [win],
-})
diff --git a/example/media-widget/style.css b/example/media-widget/style.css
deleted file mode 100644
index 8488ac86..00000000
--- a/example/media-widget/style.css
+++ /dev/null
@@ -1,49 +0,0 @@
-.player {
- padding: 10px;
- min-width: 350px;
-}
-
-.player .img {
- min-width: 100px;
- min-height: 100px;
- background-size: cover;
- background-position: center;
- border-radius: 13px;
- margin-right: 1em;
-}
-
-.player .title {
- font-size: 1.2em;
-}
-
-.player .artist {
- font-size: 1.1em;
- color: @insensitive_fg_color;
-}
-
-.player scale.position {
- padding: 0;
- margin-bottom: .3em;
-}
-
-.player scale.position trough {
- min-height: 8px;
-}
-
-.player scale.position highlight {
- background-color: @theme_fg_color;
-}
-
-.player scale.position slider {
- all: unset;
-}
-
-.player button {
- min-height: 1em;
- min-width: 1em;
- padding: .3em;
-}
-
-.player button.play-pause {
- margin: 0 .3em;
-}
diff --git a/example/notification-popups/README.md b/example/notification-popups/README.md
deleted file mode 100644
index 7ca2c7f8..00000000
--- a/example/notification-popups/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Notification Popups
-
-setup
-
-```bash
-mkdir -p ~/.config/ags
-git clone https://github.com/Aylur/ags.git /tmp/ags
-cp -r /tmp/ags/example/notification-popups/* ~/.config/ags
-
-# optionally setup types
-ags --init -c ~/.config/ags/config.js
-```
-
-running
-
-```bash
-ags -c ~/.config/ags/config.js &
-```
diff --git a/example/notification-popups/config.js b/example/notification-popups/config.js
deleted file mode 100644
index bcb678b0..00000000
--- a/example/notification-popups/config.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NotificationPopups } from "./notificationPopups.js"
-
-Utils.timeout(100, () => Utils.notify({
- summary: "Notification Popup Example",
- iconName: "info-symbolic",
- body: "Lorem ipsum dolor sit amet, qui minim labore adipisicing "
- + "minim sint cillum sint consectetur cupidatat.",
- actions: {
- "Cool": () => print("pressed Cool"),
- },
-}))
-
-App.config({
- style: App.configDir + "/style.css",
- windows: [
- NotificationPopups(),
- ],
-})
diff --git a/example/notification-popups/notificationPopups.js b/example/notification-popups/notificationPopups.js
deleted file mode 100644
index f360d3cd..00000000
--- a/example/notification-popups/notificationPopups.js
+++ /dev/null
@@ -1,130 +0,0 @@
-const notifications = await Service.import("notifications")
-
-/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
-function NotificationIcon({ app_entry, app_icon, image }) {
- if (image) {
- return Widget.Box({
- css: `background-image: url("${image}");`
- + "background-size: contain;"
- + "background-repeat: no-repeat;"
- + "background-position: center;",
- })
- }
-
- let icon = "dialog-information-symbolic"
- if (Utils.lookUpIcon(app_icon))
- icon = app_icon
-
- if (app_entry && Utils.lookUpIcon(app_entry))
- icon = app_entry
-
- return Widget.Box({
- child: Widget.Icon(icon),
- })
-}
-
-/** @param {import('resource:///com/github/Aylur/ags/service/notifications.js').Notification} n */
-function Notification(n) {
- const icon = Widget.Box({
- vpack: "start",
- class_name: "icon",
- child: NotificationIcon(n),
- })
-
- const title = Widget.Label({
- class_name: "title",
- xalign: 0,
- justification: "left",
- hexpand: true,
- max_width_chars: 24,
- truncate: "end",
- wrap: true,
- label: n.summary,
- use_markup: true,
- })
-
- const body = Widget.Label({
- class_name: "body",
- hexpand: true,
- use_markup: true,
- xalign: 0,
- justification: "left",
- label: n.body,
- wrap: true,
- })
-
- const actions = Widget.Box({
- class_name: "actions",
- children: n.actions.map(({ id, label }) => Widget.Button({
- class_name: "action-button",
- on_clicked: () => {
- n.invoke(id)
- n.dismiss()
- },
- hexpand: true,
- child: Widget.Label(label),
- })),
- })
-
- return Widget.EventBox(
- {
- attribute: { id: n.id },
- on_primary_click: n.dismiss,
- },
- Widget.Box(
- {
- class_name: `notification ${n.urgency}`,
- vertical: true,
- },
- Widget.Box([
- icon,
- Widget.Box(
- { vertical: true },
- title,
- body,
- ),
- ]),
- actions,
- ),
- )
-}
-
-export function NotificationPopups(monitor = 0) {
- const list = Widget.Box({
- vertical: true,
- children: notifications.popups.map(Notification),
- })
-
- function onNotified(_, /** @type {number} */ id) {
- const n = notifications.getNotification(id)
- if (n)
- list.children = [Notification(n), ...list.children]
- }
-
- function onDismissed(_, /** @type {number} */ id) {
- list.children.find(n => n.attribute.id === id)?.destroy()
- }
-
- list.hook(notifications, onNotified, "notified")
- .hook(notifications, onDismissed, "dismissed")
-
- return Widget.Window({
- monitor,
- name: `notifications${monitor}`,
- class_name: "notification-popups",
- anchor: ["top", "right"],
- child: Widget.Box({
- css: "min-width: 2px; min-height: 2px;",
- class_name: "notifications",
- vertical: true,
- child: list,
-
- /** this is a simple one liner that could be used instead of
- hooking into the 'notified' and 'dismissed' signals.
- but its not very optimized becuase it will recreate
- the whole list everytime a notification is added or dismissed */
- // children: notifications.bind('popups')
- // .as(popups => popups.map(Notification))
- }),
- })
-}
diff --git a/example/notification-popups/style.css b/example/notification-popups/style.css
deleted file mode 100644
index 2d2883b5..00000000
--- a/example/notification-popups/style.css
+++ /dev/null
@@ -1,57 +0,0 @@
-window.notification-popups box.notifications {
- padding: .5em;
-}
-
-.icon {
- min-width: 68px;
- min-height: 68px;
- margin-right: 1em;
-}
-
-.icon image {
- font-size: 58px;
- /* to center the icon */
- margin: 5px;
- color: @theme_fg_color;
-}
-
-.icon box {
- min-width: 68px;
- min-height: 68px;
- border-radius: 7px;
-}
-
-.notification {
- min-width: 350px;
- border-radius: 11px;
- padding: 1em;
- margin: .5em;
- border: 1px solid @wm_borders_edge;
- background-color: @theme_bg_color;
-}
-
-.notification.critical {
- border: 1px solid lightcoral;
-}
-
-.title {
- color: @theme_fg_color;
- font-size: 1.4em;
-}
-
-.body {
- color: @theme_unfocused_fg_color;
-}
-
-.actions .action-button {
- margin: 0 .4em;
- margin-top: .8em;
-}
-
-.actions .action-button:first-child {
- margin-left: 0;
-}
-
-.actions .action-button:last-child {
- margin-right: 0;
-}
diff --git a/example/simple-bar/README.md b/example/simple-bar/README.md
deleted file mode 100644
index 054a467d..00000000
--- a/example/simple-bar/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Simple Bar
-
-setup
-
-```bash
-mkdir -p ~/.config/ags
-git clone https://github.com/Aylur/ags.git /tmp/ags
-cp -r /tmp/ags/example/simple-bar/* ~/.config/ags
-
-# optionally setup types
-ags --init -c ~/.config/ags/config.js
-```
-
-running
-
-```bash
-ags -c ~/.config/ags/config.js &
-```
diff --git a/example/simple-bar/config.js b/example/simple-bar/config.js
deleted file mode 100644
index 4c0a30bb..00000000
--- a/example/simple-bar/config.js
+++ /dev/null
@@ -1,219 +0,0 @@
-const hyprland = await Service.import("hyprland")
-const notifications = await Service.import("notifications")
-const mpris = await Service.import("mpris")
-const audio = await Service.import("audio")
-const battery = await Service.import("battery")
-const systemtray = await Service.import("systemtray")
-
-const date = Variable("", {
- poll: [1000, 'date "+%H:%M:%S %b %e."'],
-})
-
-// widgets can be only assigned as a child in one container
-// so to make a reuseable widget, make it a function
-// then you can simply instantiate one by calling it
-
-function Workspaces() {
- const activeId = hyprland.active.workspace.bind("id")
- const workspaces = hyprland.bind("workspaces")
- .as(ws => ws.map(({ id }) => Widget.Button({
- on_clicked: () => hyprland.messageAsync(`dispatch workspace ${id}`),
- child: Widget.Label(`${id}`),
- class_name: activeId.as(i => `${i === id ? "focused" : ""}`),
- })))
-
- return Widget.Box({
- class_name: "workspaces",
- children: workspaces,
- })
-}
-
-
-function ClientTitle() {
- return Widget.Label({
- class_name: "client-title",
- label: hyprland.active.client.bind("title"),
- })
-}
-
-
-function Clock() {
- return Widget.Label({
- class_name: "clock",
- label: date.bind(),
- })
-}
-
-
-// we don't need dunst or any other notification daemon
-// because the Notifications module is a notification daemon itself
-function Notification() {
- const popups = notifications.bind("popups")
- return Widget.Box({
- class_name: "notification",
- visible: popups.as(p => p.length > 0),
- children: [
- Widget.Icon({
- icon: "preferences-system-notifications-symbolic",
- }),
- Widget.Label({
- label: popups.as(p => p[0]?.summary || ""),
- }),
- ],
- })
-}
-
-
-function Media() {
- const label = Utils.watch("", mpris, "player-changed", () => {
- if (mpris.players[0]) {
- const { track_artists, track_title } = mpris.players[0]
- return `${track_artists.join(", ")} - ${track_title}`
- } else {
- return "Nothing is playing"
- }
- })
-
- return Widget.Button({
- class_name: "media",
- on_primary_click: () => mpris.getPlayer("")?.playPause(),
- on_scroll_up: () => mpris.getPlayer("")?.next(),
- on_scroll_down: () => mpris.getPlayer("")?.previous(),
- child: Widget.Label({ label }),
- })
-}
-
-
-function Volume() {
- const icons = {
- 101: "overamplified",
- 67: "high",
- 34: "medium",
- 1: "low",
- 0: "muted",
- }
-
- function getIcon() {
- const icon = audio.speaker.is_muted ? 0 : [101, 67, 34, 1, 0].find(
- threshold => threshold <= audio.speaker.volume * 100)
-
- return `audio-volume-${icons[icon]}-symbolic`
- }
-
- const icon = Widget.Icon({
- icon: Utils.watch(getIcon(), audio.speaker, getIcon),
- })
-
- const slider = Widget.Slider({
- hexpand: true,
- draw_value: false,
- on_change: ({ value }) => audio.speaker.volume = value,
- setup: self => self.hook(audio.speaker, () => {
- self.value = audio.speaker.volume || 0
- }),
- })
-
- return Widget.Box({
- class_name: "volume",
- css: "min-width: 180px",
- children: [icon, slider],
- })
-}
-
-
-function BatteryLabel() {
- const value = battery.bind("percent").as(p => p > 0 ? p / 100 : 0)
- const icon = battery.bind("percent").as(p =>
- `battery-level-${Math.floor(p / 10) * 10}-symbolic`)
-
- return Widget.Box({
- class_name: "battery",
- visible: battery.bind("available"),
- children: [
- Widget.Icon({ icon }),
- Widget.LevelBar({
- widthRequest: 140,
- vpack: "center",
- value,
- }),
- ],
- })
-}
-
-
-function SysTray() {
- const items = systemtray.bind("items")
- .as(items => items.map(item => Widget.Button({
- child: Widget.Icon({ icon: item.bind("icon") }),
- on_primary_click: (_, event) => item.activate(event),
- on_secondary_click: (_, event) => item.openMenu(event),
- tooltip_markup: item.bind("tooltip_markup"),
- })))
-
- return Widget.Box({
- children: items,
- })
-}
-
-
-// layout of the bar
-function Left() {
- return Widget.Box({
- spacing: 8,
- children: [
- Workspaces(),
- ClientTitle(),
- ],
- })
-}
-
-function Center() {
- return Widget.Box({
- spacing: 8,
- children: [
- Media(),
- Notification(),
- ],
- })
-}
-
-function Right() {
- return Widget.Box({
- hpack: "end",
- spacing: 8,
- children: [
- Volume(),
- BatteryLabel(),
- Clock(),
- SysTray(),
- ],
- })
-}
-
-function Bar(monitor = 0) {
- return Widget.Window({
- name: `bar-${monitor}`, // name has to be unique
- class_name: "bar",
- monitor,
- anchor: ["top", "left", "right"],
- exclusivity: "exclusive",
- child: Widget.CenterBox({
- start_widget: Left(),
- center_widget: Center(),
- end_widget: Right(),
- }),
- })
-}
-
-App.config({
- style: "./style.css",
- windows: [
- Bar(),
-
- // you can call it, for each monitor
- // Bar(0),
- // Bar(1)
- ],
-})
-
-export { }
diff --git a/example/simple-bar/style.css b/example/simple-bar/style.css
deleted file mode 100644
index 9ac7355b..00000000
--- a/example/simple-bar/style.css
+++ /dev/null
@@ -1,40 +0,0 @@
-window.bar {
- background-color: @theme_bg_color;
- color: @theme_fg_color;
-}
-
-button {
- min-width: 0;
- padding-top: 0;
- padding-bottom: 0;
- background-color: transparent;
-}
-
-button:active {
- background-color: @theme_selected_bg_color;
-}
-
-button:hover {
- border-bottom: 3px solid @theme_fg_color;
-}
-
-label {
- font-weight: bold;
-}
-
-.workspaces button.focused {
- border-bottom: 3px solid @theme_selected_bg_color;
-}
-
-.client-title {
- color: @theme_selected_bg_color;
-}
-
-.notification {
- color: yellow;
-}
-
-levelbar block,
-highlight {
- min-height: 10px;
-}
diff --git a/example/ts-starter-config/README.md b/example/ts-starter-config/README.md
deleted file mode 100644
index 25696e12..00000000
--- a/example/ts-starter-config/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# TypeScript Starter Config
-
-Dependency: `bun`
-
-```bash
-mkdir -p ~/.config/ags
-git clone https://github.com/Aylur/ags.git /tmp/ags
-cp -r /tmp/ags/example/ts-starter-config/* ~/.config/ags
-```
-
-optionally setup types
-
-```bash
-ags --init -c ~/.config/ags/config.js
-```
-
-running
-
-```bash
-ags -c ~/.config/ags/config.js &
-```
diff --git a/example/ts-starter-config/config.js b/example/ts-starter-config/config.js
deleted file mode 100644
index d8d6444b..00000000
--- a/example/ts-starter-config/config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const main = '/tmp/ags/main.js';
-
-try {
- await Utils.execAsync([
- 'bun', 'build', `${App.configDir}/main.ts`,
- '--outfile', main,
- '--external', 'resource://*',
- '--external', 'gi://*',
- '--external', 'file://*',
- ]);
- await import(`file://${main}`);
-} catch (error) {
- console.error(error);
- App.quit();
-}
diff --git a/example/ts-starter-config/main.ts b/example/ts-starter-config/main.ts
deleted file mode 100644
index f5a29a43..00000000
--- a/example/ts-starter-config/main.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-const time = Variable('', {
- poll: [1000, function() {
- return Date().toString();
- }],
-});
-
-const Bar = (monitor: number) => Widget.Window({
- monitor,
- name: `bar${monitor}`,
- anchor: ['top', 'left', 'right'],
- exclusivity: 'exclusive',
- child: Widget.CenterBox({
- start_widget: Widget.Label({
- hpack: 'center',
- label: 'Welcome to AGS!',
- }),
- end_widget: Widget.Label({
- hpack: 'center',
- label: time.bind(),
- }),
- }),
-});
-
-App.config({
- windows: [Bar(0)],
-});
diff --git a/flake.lock b/flake.lock
index bb5d5cd8..38259974 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,16 +1,36 @@
{
"nodes": {
+ "astal": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1730839135,
+ "narHash": "sha256-qAOABzoZxVokih2t/Tfn+DFdEZPzmjSwDUvlrBAJ6/4=",
+ "owner": "aylur",
+ "repo": "astal",
+ "rev": "684dd1c7313c40777bc3c63391d7e27659793af6",
+ "type": "github"
+ },
+ "original": {
+ "owner": "aylur",
+ "repo": "astal",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
- "lastModified": 1718714799,
- "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=",
- "owner": "NixOS",
+ "lastModified": 1730531603,
+ "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
+ "owner": "nixos",
"repo": "nixpkgs",
- "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e",
+ "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
"type": "github"
},
"original": {
- "owner": "NixOS",
+ "owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
@@ -18,6 +38,7 @@
},
"root": {
"inputs": {
+ "astal": "astal",
"nixpkgs": "nixpkgs"
}
}
diff --git a/flake.nix b/flake.nix
index aaca0c42..9dd4fc2b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,31 +1,57 @@
{
- description = "A customizable and extensible shell";
-
inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ astal = {
+ url = "github:aylur/astal";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
outputs = {
- nixpkgs,
self,
+ nixpkgs,
+ astal,
}: let
- version = builtins.replaceStrings ["\n"] [""] (builtins.readFile ./version);
- genSystems = nixpkgs.lib.genAttrs [
- "aarch64-linux"
- "x86_64-linux"
- ];
- pkgs = genSystems (system: import nixpkgs {inherit system;});
- in {
- packages = genSystems (system: rec {
- default = pkgs.${system}.callPackage ./nix {inherit version;};
- ags = default;
- agsWithTypes = default; # for backwards compatibility
- agsNoTypes = pkgs.${system}.callPackage ./nix {
- inherit version;
- buildTypes = false;
+ inherit (astal.packages.${system}) astal3 astal4 io gjs;
+
+ system = "x86_64-linux"; # TODO: other architectures
+ pkgs = nixpkgs.legacyPackages.x86_64-linux;
+
+ astal-io = io;
+ astal-gjs = "${gjs}/share/astal/gjs";
+
+ agsPackages = {
+ default = self.packages.${system}.ags;
+ ags = pkgs.callPackage ./nix {
+ inherit astal3 astal4 astal-io astal-gjs;
+ };
+ agsFull = pkgs.callPackage ./nix {
+ inherit astal3 astal4 astal-io astal-gjs;
+ extraPackages = builtins.attrValues (
+ builtins.removeAttrs astal.packages.${system} ["docs"]
+ );
};
- });
+ };
+ in {
+ lib.bundle = import ./nix/bundle.nix {inherit self pkgs;};
+
+ packages.${system} = astal.packages.${system} // agsPackages;
+
+ templates.default = {
+ path = ./nix/template;
+ description = "Example flake.nix that shows how to package a project.";
+ welcomeText = ''
+ # Getting Started
+ - run `nix develop` to enter the development environment
+ - run `ags init . -f` to setup an initial ags project
+ - run `ags run .` to run the project
+ '';
+ };
- homeManagerModules.default = import ./nix/hm-module.nix self;
+ homeManagerModules = {
+ default = self.homeManagerModules.ags;
+ ags = import ./nix/hm-module.nix self;
+ };
};
}
diff --git a/go.mod b/go.mod
new file mode 100644
index 00000000..ed25d418
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,15 @@
+module ags
+
+go 1.22.2
+
+require (
+ github.com/evanw/esbuild v0.24.0
+ github.com/spf13/cobra v1.8.1
+)
+
+require (
+ github.com/inconshreveable/mousetrap v1.1.0 // indirect
+ github.com/spf13/pflag v1.0.5 // indirect
+ github.com/titanous/json5 v1.0.0 // indirect
+ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 00000000..96075725
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,16 @@
+github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/evanw/esbuild v0.24.0 h1:GZ78naTLp7FKr+K7eNuM/SLs5maeiHYRPsTg6kmdsSE=
+github.com/evanw/esbuild v0.24.0/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
+github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/titanous/json5 v1.0.0 h1:hJf8Su1d9NuI/ffpxgxQfxh/UiBFZX7bMPid0rIL/7s=
+github.com/titanous/json5 v1.0.0/go.mod h1:7JH1M8/LHKc6cyP5o5g3CSaRj+mBrIimTxzpvmckH8c=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/lib/array.go b/lib/array.go
new file mode 100644
index 00000000..096d09d8
--- /dev/null
+++ b/lib/array.go
@@ -0,0 +1,18 @@
+package lib
+
+func Map[T any, R any](input []T, fn func(T) R) []R {
+ result := make([]R, len(input))
+ for i, v := range input {
+ result[i] = fn(v)
+ }
+ return result
+}
+
+func Some[T any](input []T, fn func(T) bool) bool {
+ for _, v := range input {
+ if fn(v) {
+ return true
+ }
+ }
+ return false
+}
diff --git a/lib/astal.go b/lib/astal.go
new file mode 100644
index 00000000..475b18c2
--- /dev/null
+++ b/lib/astal.go
@@ -0,0 +1,23 @@
+package lib
+
+import (
+ "os"
+
+ "github.com/spf13/cobra"
+)
+
+// TODO: reimplement using DBus directly
+func Astal(args ...string) {
+ cmd := Exec("astal", args...)
+ cmd.Stderr = os.Stderr
+ cmd.Stdout = os.Stdout
+ if err := cmd.Run(); err != nil {
+ os.Exit(1)
+ }
+}
+
+var instance string
+
+func AddInstanceFlag(cmd *cobra.Command) {
+ cmd.Flags().StringVarP(&instance, "instance", "i", "astal", "name of the instance")
+}
diff --git a/lib/esbuild.go b/lib/esbuild.go
new file mode 100644
index 00000000..379c59fc
--- /dev/null
+++ b/lib/esbuild.go
@@ -0,0 +1,202 @@
+package lib
+
+import (
+ "fmt"
+ "os"
+ "path"
+ "path/filepath"
+ "strings"
+
+ "github.com/evanw/esbuild/pkg/api"
+)
+
+var inlinePlugin api.Plugin = api.Plugin{
+ Name: "inline",
+ Setup: func(build api.PluginBuild) {
+ build.OnResolve(api.OnResolveOptions{Filter: "^inline:"},
+ func(args api.OnResolveArgs) (api.OnResolveResult, error) {
+ resolved := path.Join(
+ args.ResolveDir,
+ strings.Replace(args.Path, "inline:", "", 1),
+ )
+
+ return api.OnResolveResult{
+ Path: resolved,
+ Namespace: "inline",
+ }, nil
+ },
+ )
+
+ build.OnLoad(api.OnLoadOptions{Filter: ".*", Namespace: "inline"},
+ func(args api.OnLoadArgs) (api.OnLoadResult, error) {
+ data, err := os.ReadFile(args.Path)
+ if err != nil {
+ return api.OnLoadResult{}, err
+ }
+
+ content := string(data)
+
+ return api.OnLoadResult{
+ Contents: &content,
+ WatchFiles: []string{args.Path},
+ Loader: api.LoaderText,
+ }, nil
+ })
+ },
+}
+
+var sassPlugin api.Plugin = api.Plugin{
+ Name: "sass",
+ Setup: func(build api.PluginBuild) {
+ build.OnResolve(api.OnResolveOptions{Filter: `.*\.scss$`},
+ func(args api.OnResolveArgs) (api.OnResolveResult, error) {
+ return api.OnResolveResult{
+ Path: path.Join(
+ args.ResolveDir,
+ args.Path,
+ ),
+ Namespace: "sass",
+ }, nil
+ },
+ )
+
+ build.OnLoad(api.OnLoadOptions{Filter: `.*\.scss$`, Namespace: "sass"},
+ func(args api.OnLoadArgs) (api.OnLoadResult, error) {
+ sass := Exec("sass", args.Path, "-I", filepath.Dir(args.Path))
+ // if cwd is the path of the currently loaded file sass warns about it
+ // in order to avoid the deprecation warning we explicitly set it to something else
+ sass.Dir = "/"
+ sass.Stderr = os.Stderr
+
+ data, err := sass.Output()
+ if err != nil {
+ return api.OnLoadResult{}, err
+ }
+
+ content := strings.TrimSpace(string(data))
+ return api.OnLoadResult{
+ Contents: &content,
+ WatchFiles: []string{args.Path},
+ Loader: api.LoaderText,
+ }, nil
+ })
+ },
+}
+
+var blpPlugin api.Plugin = api.Plugin{
+ Name: "blueprint",
+ Setup: func(build api.PluginBuild) {
+ build.OnResolve(api.OnResolveOptions{Filter: `.*\.blp$`},
+ func(args api.OnResolveArgs) (api.OnResolveResult, error) {
+ return api.OnResolveResult{
+ Path: path.Join(
+ args.ResolveDir,
+ args.Path,
+ ),
+ Namespace: "blueprint",
+ }, nil
+ },
+ )
+
+ build.OnLoad(api.OnLoadOptions{Filter: `.*\.blp$`, Namespace: "blueprint"},
+ func(args api.OnLoadArgs) (api.OnLoadResult, error) {
+ blp := Exec("blueprint-compiler", "compile", args.Path)
+ blp.Stderr = os.Stderr
+
+ data, err := blp.Output()
+ if err != nil {
+ return api.OnLoadResult{}, err
+ }
+
+ content := strings.TrimSpace(string(data))
+ return api.OnLoadResult{
+ Contents: &content,
+ WatchFiles: []string{args.Path},
+ Loader: api.LoaderText,
+ }, nil
+ })
+ },
+}
+
+// TODO: bundle plugins
+// svg loader
+// other css preproceccors
+// http plugin with caching
+func Bundle(infile, outfile, tsconfig, cwd string) {
+ srcdir := filepath.Dir(infile)
+
+ if cwd == "" {
+ cwd = srcdir
+ } else {
+ var err error
+ cwd, err = filepath.Abs(cwd)
+ if err != nil {
+ Err(err)
+ }
+ }
+
+ if tsconfig != "" {
+ // if a tsconfig file is specified use that
+ path, err := filepath.Abs(tsconfig)
+ if err != nil {
+ Err(err)
+ }
+
+ data, err := os.ReadFile(path)
+ if err != nil {
+ Err(err)
+ }
+
+ tsconfig = string(data)
+ } else if FileExists("tsconfig.json") {
+ // check cwd for tsconfig
+ cwd, err := os.Getwd()
+ if err != nil {
+ Err(err)
+ }
+
+ tsconfig = GetTsconfig(cwd)
+ } else {
+ // fallback to default
+ tsconfig = GetTsconfig(srcdir)
+ }
+
+ result := api.Build(api.BuildOptions{
+ Color: api.ColorAlways,
+ LogLevel: api.LogLevelWarning,
+ EntryPoints: []string{infile},
+ Bundle: true,
+ Outfile: outfile,
+ Format: api.FormatESModule,
+ Platform: api.PlatformNeutral,
+ AbsWorkingDir: cwd,
+ TsconfigRaw: tsconfig,
+ Write: true,
+ Define: map[string]string{
+ "SRC": fmt.Sprintf(`"%s"`, srcdir),
+ },
+ Loader: map[string]api.Loader{
+ ".js": api.LoaderJSX,
+ ".css": api.LoaderText,
+ },
+ External: []string{
+ "console",
+ "system",
+ "cairo",
+ "gettext",
+ "file://*",
+ "gi://*",
+ "resource://*",
+ },
+ Plugins: []api.Plugin{
+ inlinePlugin,
+ sassPlugin,
+ blpPlugin,
+ },
+ })
+
+ // TODO: custom error logs
+ if len(result.Errors) > 0 {
+ os.Exit(1)
+ }
+}
diff --git a/lib/os.go b/lib/os.go
new file mode 100644
index 00000000..706b98ee
--- /dev/null
+++ b/lib/os.go
@@ -0,0 +1,77 @@
+package lib
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+)
+
+var r = "\x1b[0m"
+
+func Mkdir(path string) {
+ _, err := os.Stat(path)
+ if os.IsNotExist(err) {
+ err := os.MkdirAll(path, os.ModePerm)
+ if err != nil {
+ Err(err)
+ }
+ }
+}
+
+func FileExists(filename string) bool {
+ _, err := os.Stat(filename)
+ return !os.IsNotExist(err)
+}
+
+func WriteFile(path string, content string) {
+ err := os.WriteFile(path, []byte(content), 0644)
+ if err != nil {
+ Err(err)
+ }
+}
+
+func Exec(cmd string, args ...string) *exec.Cmd {
+ _, err := exec.LookPath(cmd)
+ if err != nil {
+ Err(`executable "` + Magenta(cmd) + `" not found in $PATH`)
+ }
+ return exec.Command(cmd, args...)
+}
+
+func Invert(str string) string {
+ return "\x1b[7m" + str + r
+}
+
+func Red(str string) string {
+ return "\x1b[31m" + str + r
+}
+
+func Green(str string) string {
+ return "\x1b[32m" + str + r
+}
+
+func Yellow(str string) string {
+ return "\x1b[33m" + str + r
+}
+
+func Blue(str string) string {
+ return "\x1b[34m" + str + r
+}
+
+func Magenta(str string) string {
+ return "\x1b[35m" + str + r
+}
+
+func Cyan(str string) string {
+ return "\x1b[36m" + str + r
+}
+
+func Err(err any) {
+ switch v := err.(type) {
+ case string:
+ fmt.Fprintln(os.Stderr, Red("error: ")+v)
+ case error:
+ fmt.Fprintln(os.Stderr, Red("error: ")+v.Error())
+ }
+ os.Exit(1)
+}
diff --git a/lib/tsconfig.go b/lib/tsconfig.go
new file mode 100644
index 00000000..5909e1a1
--- /dev/null
+++ b/lib/tsconfig.go
@@ -0,0 +1,102 @@
+package lib
+
+import (
+ "encoding/json"
+ "os"
+ "strings"
+
+ "github.com/titanous/json5"
+)
+
+var (
+ astalGjs string
+ defaultGtkVersion = "gtk3"
+)
+
+func Initialize(_astalGjs string) {
+ astalGjs = _astalGjs
+}
+
+func defaultTsconfig() map[string]interface{} {
+ return map[string]interface{}{
+ "compilerOptions": map[string]interface{}{
+ "experimentalDecorators": true,
+ "module": "ES2022",
+ "target": "ES2022",
+ "moduleResolution": "Bundler",
+ "jsx": "react-jsx",
+ "jsxImportSource": astalGjs + "/" + defaultGtkVersion,
+ "paths": map[string][]string{
+ "astal": {astalGjs},
+ "astal/*": {astalGjs + "/*"},
+ },
+ },
+ }
+}
+
+func updateTsconfig(tsconfig map[string]interface{}) {
+ opts, ok := tsconfig["compilerOptions"].(map[string]interface{})
+ if !ok {
+ opts = map[string]interface{}{}
+ }
+
+ src, ok := opts["jsxImportSource"].(string)
+ if !ok {
+ src = "/gtk3"
+ }
+
+ var gtk string
+ if strings.HasSuffix(src, "gtk4") {
+ gtk = "/gtk4"
+ } else {
+ gtk = "/gtk3"
+ }
+
+ opts["experimentalDecorators"] = true
+ opts["module"] = "ES2022"
+ opts["target"] = "ES2022"
+ opts["moduleResolution"] = "Bundler"
+ opts["jsx"] = "react-jsx"
+ opts["jsxImportSource"] = astalGjs + gtk
+
+ paths, ok := opts["paths"].(map[string]interface{})
+ if !ok {
+ paths = map[string]interface{}{
+ "astal": []string{astalGjs},
+ "astal/*": []string{astalGjs + "/*"},
+ }
+ }
+
+ paths["astal"] = []string{astalGjs}
+ paths["astal/*"] = []string{astalGjs + "/*"}
+}
+
+// if tsconfig.json exists in srcdir returns an updated config
+// otherwise returns a default config
+func GetTsconfig(srcdir string) string {
+ path := srcdir + "/tsconfig.json"
+
+ var tsconfig map[string]interface{}
+ if FileExists(path) {
+ data, err := os.ReadFile(path)
+ if err != nil {
+ Err(err)
+ }
+
+ err = json5.Unmarshal(data, &tsconfig)
+ if err != nil {
+ Err(err)
+ }
+
+ updateTsconfig(tsconfig)
+ } else {
+ tsconfig = defaultTsconfig()
+ }
+
+ conf, err := json.MarshalIndent(tsconfig, "", " ")
+ if err != nil {
+ Err(err)
+ }
+
+ return string(conf)
+}
diff --git a/main.go b/main.go
new file mode 100644
index 00000000..83ee1fb1
--- /dev/null
+++ b/main.go
@@ -0,0 +1,32 @@
+package main
+
+import (
+ "ags/cmd"
+ "ags/lib"
+ "embed"
+)
+
+var (
+ //go:embed version
+ version string
+
+ //go:embed data
+ data embed.FS
+
+ // should be overriden with -ldflags
+ gtk4LayerShell = "/usr/lib/libgtk4-layer-shell.so"
+ astalGjs = "/usr/share/astal/gjs"
+ tsForGir = "@ts-for-gir/cli@4.0.0-beta.15"
+)
+
+func main() {
+ lib.Initialize(astalGjs)
+ cmd.Initialize(cmd.Variables{
+ Version: version,
+ Data: data,
+ Gtk4LayerShell: gtk4LayerShell,
+ AstalGjs: astalGjs,
+ TsForGir: tsForGir,
+ })
+ cmd.Execute()
+}
diff --git a/meson.build b/meson.build
deleted file mode 100644
index d5ad6f2e..00000000
--- a/meson.build
+++ /dev/null
@@ -1,50 +0,0 @@
-project('ags', 'c',
- version: run_command('cat', join_paths(meson.project_source_root(), 'version')).stdout().strip(),
- meson_version: '>= 0.62.0',
- license: ['GPL-3.0-or-later'],
- default_options: [ 'warning_level=2', 'werror=false', ],
-)
-
-app_id = 'com.github.Aylur.ags'
-prefix = get_option('prefix')
-libdir = join_paths(prefix, get_option('libdir'))
-extensiondir = join_paths(libdir, meson.project_name())
-datadir = join_paths(prefix, get_option('datadir'))
-pkgdatadir = join_paths(datadir, app_id)
-bindir = join_paths(prefix, get_option('bindir'))
-
-dependency('glib-2.0')
-dependency('gobject-introspection-1.0', version: '>= 1.49.1')
-dependency('gio-2.0', version: '>= 2.56.0')
-dependency('gjs-1.0', version: '>= 1.73.1')
-dependency('gtk+-3.0', version: '>= 3.0')
-
-subproject('gvc',
- default_options: [
- 'package_name=' + app_id,
- 'pkgdatadir=' + pkgdatadir,
- 'pkglibdir=' + libdir,
- 'static=false',
- 'introspection=true',
- 'alsa=false'
- ]
-)
-
-subproject('gutils',
- default_options: [
- 'pkgdatadir=' + pkgdatadir,
- 'pkglibdir=' + libdir,
- ]
-)
-
-subdir('src')
-
-meson.add_install_script(
- 'post_install.sh',
- datadir,
- pkgdatadir,
- bindir,
- app_id,
- get_option('build_types').to_string(),
- meson.project_source_root()
-)
diff --git a/meson_options.txt b/meson_options.txt
deleted file mode 100644
index b691359e..00000000
--- a/meson_options.txt
+++ /dev/null
@@ -1 +0,0 @@
-option('build_types', type: 'boolean', value: true)
diff --git a/nix/bundle.nix b/nix/bundle.nix
new file mode 100644
index 00000000..15e02069
--- /dev/null
+++ b/nix/bundle.nix
@@ -0,0 +1,58 @@
+{
+ self,
+ pkgs,
+}: {
+ pkgs ? pkgs,
+ entry ? "app.ts",
+ src,
+ name,
+ extraPackages ? [],
+}:
+pkgs.stdenvNoCC.mkDerivation {
+ inherit src name;
+
+ nativeBuildInputs = with pkgs; [
+ wrapGAppsHook
+ gobject-introspection
+ gnused
+ self.packages.${system}.ags
+ ];
+
+ buildInputs =
+ extraPackages
+ ++ [
+ pkgs.gjs
+ self.packages.${pkgs.system}.astal4
+ self.packages.${pkgs.system}.astal3
+ self.packages.${pkgs.system}.io
+ ];
+
+ preFixup = ''
+ gappsWrapperArgs+=(
+ --prefix PATH : ${with pkgs;
+ lib.makeBinPath (extraPackages
+ ++ [
+ dart-sass
+ fzf
+ gtk3
+ ])}
+ )
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/bin
+ mkdir -p $out/share
+ cp -r * $out/share
+ ags bundle ${entry} $out/bin/${name} --src $out/share
+
+ chmod +x $out/bin/${name}
+
+ if ! head -n 1 "$out/bin/${name}" | grep -q "^#!"; then
+ sed -i '1i #!/${pkgs.gjs}/bin/gjs -m' "$out/bin/${name}"
+ fi
+
+ runHook postInstall
+ '';
+}
diff --git a/nix/default.nix b/nix/default.nix
index f20f04d7..dd47d32f 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -1,104 +1,75 @@
-{ lib
-, stdenv
-, buildNpmPackage
-, fetchFromGitLab
-, nodePackages
-, meson
-, pkg-config
-, ninja
-, gobject-introspection
-, gtk3
-, libpulseaudio
-, gjs
-, wrapGAppsHook
-, upower
-, gnome
-, gtk-layer-shell
-, glib-networking
-, networkmanager
-, libdbusmenu-gtk3
-, gvfs
-, libsoup_3
-, libnotify
-, pam
-, extraPackages ? [ ]
-, version ? "git"
-, buildTypes ? true
-}:
+{
+ astal3,
+ astal4,
+ gtk4-layer-shell,
+ astal-io,
+ astal-gjs,
+ lib,
+ writers,
+ buildGoModule,
+ wrapGAppsHook,
+ gobject-introspection,
+ glib,
+ gjs,
+ nodejs,
+ dart-sass,
+ blueprint-compiler,
+ extraPackages ? [],
+}: let
+ inherit (builtins) replaceStrings readFile;
-let
- gvc-src = fetchFromGitLab {
- domain = "gitlab.gnome.org";
- owner = "GNOME";
- repo = "libgnome-volume-control";
- rev = "8e7a5a4c3e51007ce6579292642517e3d3eb9c50";
- sha256 = "sha256-FosJwgTCp6/EI6WVbJhPisokRBA6oT0eo7d+Ya7fFX8=";
- };
-in
-stdenv.mkDerivation rec {
- pname = "ags";
- inherit version;
-
- src = buildNpmPackage {
- name = pname;
- src = lib.cleanSource ../.;
-
- dontBuild = true;
-
- npmDepsHash = "sha256-ucWdADdMqAdLXQYKGOXHNRNM9bhjKX4vkMcQ8q/GZ20=";
-
- installPhase = ''
- mkdir $out
- cp -r * $out
- '';
- };
+ datadirs = writers.writeNu "datadirs" ''
+ $env.XDG_DATA_DIRS
+ | split row ":"
+ | filter { $"($in)/gir-1.0" | path exists }
+ | str join ":"
+ '';
- mesonFlags = [
- "-Dbuild_types=${if buildTypes then "true" else "false"}"
+ bins = [
+ gjs
+ nodejs
+ dart-sass
+ blueprint-compiler
+ astal-io # FIXME: should not be needed after the astal commends are properly implemented using dbus in astal.go
];
- prePatch = ''
- mkdir -p ./subprojects/gvc
- cp -r ${gvc-src}/* ./subprojects/gvc
- '';
+ version = replaceStrings ["\n"] [""] (readFile ../version);
+ pname = "ags";
+in
+ buildGoModule {
+ inherit pname version;
- postPatch = ''
- chmod +x post_install.sh
- patchShebangs post_install.sh
- '';
+ src = builtins.path {
+ name = "${pname}-${version}";
+ path = lib.cleanSource ../.;
+ };
- nativeBuildInputs = [
- pkg-config
- meson
- ninja
- nodePackages.typescript
- wrapGAppsHook
- gobject-introspection
- ];
+ vendorHash = "sha256-Pw6UNT5YkDVz4HcH7b5LfOg+K3ohrBGPGB9wYGAQ9F4=";
+ proxyVendor = true;
- buildInputs = [
- gjs
- gtk3
- libpulseaudio
- upower
- gnome.gnome-bluetooth
- gtk-layer-shell
- glib-networking
- networkmanager
- libdbusmenu-gtk3
- gvfs
- libsoup_3
- libnotify
- pam
- ] ++ extraPackages;
+ nativeBuildInputs = [
+ wrapGAppsHook
+ gobject-introspection
+ ];
- outputs = [ "out" "lib" ];
+ buildInputs =
+ extraPackages
+ ++ [
+ glib
+ astal-io
+ astal3
+ astal4
+ ];
+
+ preFixup = ''
+ gappsWrapperArgs+=(
+ --prefix NIX_GI_DIRS : "$(${datadirs})"
+ --prefix PATH : "${lib.makeBinPath (bins ++ extraPackages)}"
+ )
+ '';
- meta = with lib; {
- description = "A customizable and extensible shell";
- homepage = "https://github.com/Aylur/ags";
- platforms = [ "x86_64-linux" "aarch64-linux" ];
- license = licenses.gpl3;
- meta.maintainers = [ lib.maintainers.Aylur ];
- };
-}
+ ldflags = [
+ "-X main.astalGjs=${astal-gjs}"
+ "-X main.gtk4LayerShell=${gtk4-layer-shell}/lib/libgtk4-layer-shell.so"
+ ];
+ }
diff --git a/nix/hm-module.nix b/nix/hm-module.nix
index c319f448..90934be3 100644
--- a/nix/hm-module.nix
+++ b/nix/hm-module.nix
@@ -8,15 +8,20 @@ self: {
inherit (lib.modules) mkIf;
inherit (lib.options) mkOption mkEnableOption literalExpression;
- defaultAgsPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
cfg = config.programs.ags;
+ default = {
+ agsPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
+ gtk3Package = self.packages.${pkgs.stdenv.hostPlatform.system}.astal3;
+ ioPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.io;
+ gjsPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.gjs;
+ };
in {
options.programs.ags = {
enable = mkEnableOption "ags";
package = mkOption {
- type = with types; nullOr package;
- default = defaultAgsPackage;
+ type = types.package;
+ default = default.agsPackage;
defaultText = literalExpression "inputs.ags.packages.${pkgs.stdenv.hostPlatform.system}.default";
description = ''
The Ags package to use.
@@ -25,6 +30,38 @@ in {
'';
};
+ astal.gtk3Package = mkOption {
+ type = types.package;
+ default = default.gtk3Package;
+ defaultText = literalExpression "inputs.ags.packages.${pkgs.stdenv.hostPlatform.system}.astal3";
+ description = ''
+ The GTK3 Astal package to use.
+
+ By default, this option will use the `packages.astal3` as exposed by this flake.
+ '';
+ };
+
+ astal.ioPackage = mkOption {
+ type = types.package;
+ default = default.ioPackage;
+ defaultText = literalExpression "inputs.ags.packages.${pkgs.stdenv.hostPlatform.system}.io";
+ description = ''
+ The core Astal package to use.
+
+ By default, this option will use the `packages.io` as exposed by this flake.
+ '';
+ };
+
+ astal.gjsPackage = mkOption {
+ type = types.package;
+ default = default.gjsPackage;
+ description = ''
+ The Astal Gjs package to use.
+
+ By default, this option will use the `packages.gjs` as exposed by this flake.
+ '';
+ };
+
finalPackage = mkOption {
type = types.package;
readOnly = true;
@@ -51,22 +88,52 @@ in {
'';
example = literalExpression "[ pkgs.libsoup_3 ]";
};
+
+ systemd.enable = mkOption {
+ type = types.bool;
+ default = false;
+ example = true;
+ description = ''
+ Enable systemd integration.
+ '';
+ };
};
config = mkIf cfg.enable (mkMerge [
(mkIf (cfg.configDir != null) {
xdg.configFile."ags".source = cfg.configDir;
})
- (mkIf (cfg.package != null) (let
- path = "/share/com.github.Aylur.ags/types";
+ (let
pkg = cfg.package.override {
extraPackages = cfg.extraPackages;
- buildTypes = true;
+ astal3 = cfg.astal.gtk3Package;
+ astal-io = cfg.astal.ioPackage;
+ astal-gjs = "${config.home.homeDirectory}/.local/share/ags";
};
in {
programs.ags.finalPackage = pkg;
home.packages = [pkg];
- home.file.".local/${path}".source = "${pkg}/${path}";
- }))
+ home.file.".local/share/ags".source = "${cfg.astal.gjsPackage}/share/astal/gjs";
+ })
+ (mkIf cfg.systemd.enable {
+ systemd.user.services.ags = {
+ Unit = {
+ Description = "AGS - Tool for scaffolding Astal+TypeScript projects.";
+ Documentation = "https://github.com/Aylur/ags";
+ PartOf = ["graphical-session.target"];
+ After = ["graphical-session-pre.target"];
+ };
+
+ Service = {
+ ExecStart = "${cfg.finalPackage}/bin/ags";
+ Restart = "on-failure";
+ KillMode = "mixed";
+ };
+
+ Install = {
+ WantedBy = ["graphical-session.target"];
+ };
+ };
+ })
]);
}
diff --git a/nix/template/flake.nix b/nix/template/flake.nix
new file mode 100644
index 00000000..eb8b6638
--- /dev/null
+++ b/nix/template/flake.nix
@@ -0,0 +1,52 @@
+{
+ description = "My Awesome Desktop Shell";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
+
+ ags = {
+ url = "github:aylur/ags";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ ags,
+ }: let
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ packages.${system} = {
+ default = ags.lib.bundle {
+ inherit pkgs;
+ src = ./.;
+ name = "my-shell";
+ entry = "app.ts";
+
+ # additional libraries and executables to add to gjs' runtime
+ extraPackages = [
+ # ags.packages.${system}.battery
+ # pkgs.fzf
+ ];
+ };
+ };
+
+ devShells.${system} = {
+ default = pkgs.mkShell {
+ buildInputs = [
+ # includes all Astal libraries
+ # ags.packages.${system}.agsFull
+
+ # includes astal3 astal4 astal-io by default
+ (ags.packages.${system}.default.overrideAttrs {
+ extraPackages = [
+ # cherry pick packages
+ ];
+ })
+ ];
+ };
+ };
+ };
+}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index c5c818b6..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,2027 +0,0 @@
-{
- "name": "ags",
- "version": "1.0.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "ags",
- "version": "1.0.0",
- "license": "GPL",
- "dependencies": {
- "typescript": "^5.1.0"
- },
- "devDependencies": {
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/dbusmenugtk3-0.4": "^0.4.0-3.2.0",
- "@girs/gjs": "^3.2.7",
- "@girs/gtk-3.0": "^3.24.39-3.2.2",
- "@girs/gvc-1.0": "^1.0.0-3.1.0",
- "@girs/nm-1.0": "^1.43.1-3.1.0",
- "@girs/notify-0.7": "^0.8.3-3.2.7",
- "@girs/soup-3.0": "^3.4.4-3.2.6",
- "@typescript-eslint/eslint-plugin": "^5.33.0",
- "@typescript-eslint/parser": "^5.33.0",
- "eslint": "^8.42.0"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
- "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@girs/atk-1.0": {
- "version": "2.50.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/atk-1.0/-/atk-1.0-2.50.0-3.2.7.tgz",
- "integrity": "sha512-4HBiLdINigopQksxhZCToRHPh2oUjL32ogZ/JzHqrxB+SMF3wSNS2nuyRI/RRhx0wDIrq+8H9PgQ1gzsbhxdWg==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/cairo-1.0": {
- "version": "1.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/cairo-1.0/-/cairo-1.0-1.0.0-3.2.7.tgz",
- "integrity": "sha512-WeAyTY8tUoVe8W1IDbxOYDczWyUotg/7sjzWPv5TXQJJAe3vZ6TfkYPSIlnQHkQ43XfWhSa0JA2s5Oitttdu0g==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/dbusmenu-0.4": {
- "version": "0.4.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/dbusmenu-0.4/-/dbusmenu-0.4-0.4.0-3.2.7.tgz",
- "integrity": "sha512-an1dfWFolB7hLvjiiaS0P9z2FcjylCiGrn3KpAr/h3AKX64ayVjYCiuVpGv/VYBrO8XjfruYKVah2jRM8qrIEQ==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/dbusmenugtk3-0.4": {
- "version": "0.4.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/dbusmenugtk3-0.4/-/dbusmenugtk3-0.4-0.4.0-3.2.7.tgz",
- "integrity": "sha512-0R2j3/nyaZmzV2IF5T0jZZFiiFGiZhS24To3ameYv2w3Ez75pcuCg2JlNbO+V3CdOsCUNmAZMowCN5HL8zavMw==",
- "dev": true,
- "dependencies": {
- "@girs/atk-1.0": "^2.50.0-3.2.7",
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/dbusmenu-0.4": "^0.4.0-3.2.7",
- "@girs/freetype2-2.0": "^2.0.0-3.2.7",
- "@girs/gdk-3.0": "^3.24.38-3.2.7",
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.7",
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gmodule-2.0": "^2.0.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7",
- "@girs/gtk-3.0": "^3.24.38-3.2.7",
- "@girs/harfbuzz-0.0": "^8.2.1-3.2.7",
- "@girs/pango-1.0": "^1.51.0-3.2.7",
- "@girs/xlib-2.0": "^2.0.0-3.2.7"
- }
- },
- "node_modules/@girs/dbusmenugtk3-0.4/node_modules/@girs/gtk-3.0": {
- "version": "3.24.38-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gtk-3.0/-/gtk-3.0-3.24.38-3.2.7.tgz",
- "integrity": "sha512-30abOOkD9YzURYgcKLlMs4auNgYbp8SxH5JdKfOmV0v8P5jEO+0rV8riJZn7bAQKIrl8Y5fGvqwx/yl/UVpVig==",
- "dev": true,
- "dependencies": {
- "@girs/atk-1.0": "^2.50.0-3.2.7",
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/freetype2-2.0": "^2.0.0-3.2.7",
- "@girs/gdk-3.0": "^3.24.38-3.2.7",
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.7",
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gmodule-2.0": "^2.0.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7",
- "@girs/harfbuzz-0.0": "^8.2.1-3.2.7",
- "@girs/pango-1.0": "^1.51.0-3.2.7",
- "@girs/xlib-2.0": "^2.0.0-3.2.7"
- }
- },
- "node_modules/@girs/freetype2-2.0": {
- "version": "2.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/freetype2-2.0/-/freetype2-2.0-2.0.0-3.2.7.tgz",
- "integrity": "sha512-oapcm7uCVWyL9N7VHuBOxbCWTa9QoF1EX6DFAwpGK4gwVrkjedZ4kZuxtza1gsZrkmYlWNK66H7YShFHgUWdPw==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gdk-3.0": {
- "version": "3.24.38-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gdk-3.0/-/gdk-3.0-3.24.38-3.2.7.tgz",
- "integrity": "sha512-WEQji730jgaNbQh3g0Vhuq6TvZz16ysgt+FAuNHB2I+9lKVbb8xBNg5VOe2uqRFSKQ4/Rt+RN0U36rFFyo8M6A==",
- "dev": true,
- "dependencies": {
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/freetype2-2.0": "^2.0.0-3.2.7",
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.7",
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gmodule-2.0": "^2.0.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7",
- "@girs/harfbuzz-0.0": "^8.2.1-3.2.7",
- "@girs/pango-1.0": "^1.51.0-3.2.7"
- }
- },
- "node_modules/@girs/gdkpixbuf-2.0": {
- "version": "2.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gdkpixbuf-2.0/-/gdkpixbuf-2.0-2.0.0-3.2.7.tgz",
- "integrity": "sha512-/POHLvRlJ6QYO8Wkrj2PDQT2lYh1vJFOHcfWd/yhtr7P3WWKGqOEG5NJAg81bMG8UIZOrc00HALXfCgbAalKGg==",
- "dev": true,
- "dependencies": {
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gmodule-2.0": "^2.0.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gio-2.0": {
- "version": "2.78.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gio-2.0/-/gio-2.0-2.78.0-3.2.7.tgz",
- "integrity": "sha512-88GNniBwxAsXrfA+T1wNUxoQk8HivDZUVq1KF3ZsomrQyRDcwCgQLcLyC6c5ZAkg6xwnHZmTIWoYgITiee/lLA==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gjs": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gjs/-/gjs-3.2.7.tgz",
- "integrity": "sha512-gaZLkffVm2e5zvyyGNcDgFgyL5WaHZWUr0XBLtuKEM17/qA4udZQRif7HkW//PG8T2AQpuOfSdRj7uJrItykNw==",
- "dev": true,
- "dependencies": {
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/glib-2.0": {
- "version": "2.78.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/glib-2.0/-/glib-2.0-2.78.0-3.2.7.tgz",
- "integrity": "sha512-h1zGUd58VnQn93Xws91E0mwio8weBWdqDn6sm5Q0xzPmhGGH8+9h/z9JGc7YKj32PnlWrPJ8r9lxeyvO57zT6A==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gmodule-2.0": {
- "version": "2.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gmodule-2.0/-/gmodule-2.0-2.0.0-3.2.7.tgz",
- "integrity": "sha512-7B+rAZ6grSYwSOz2p4h8hSKoK5QIuSVHEM7qGUTC6qpPiLvREcaBNGJSGgAMgxtRhyXPYVsUyLhMgUokrFUC+g==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gobject-2.0": {
- "version": "2.78.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gobject-2.0/-/gobject-2.0-2.78.0-3.2.7.tgz",
- "integrity": "sha512-BSYxXv4NHZS7ANo0up8N9Dfl3FysIxqsUXmHAMmVkUNdNPfaRyiXnSBiFYzkFdkHQFDoQhM5+RsXz4R94ZLlsw==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/gtk-3.0": {
- "version": "3.24.39-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/gtk-3.0/-/gtk-3.0-3.24.39-3.2.2.tgz",
- "integrity": "sha512-s12hGKHGM+aHD6ESOP0RhWaCV17ls6gIHLdtIMxFkHqV/2G146jowfl92c5IAzOgD7mS5ZvUmVRNrW4idY1BUQ==",
- "dev": true,
- "dependencies": {
- "@girs/atk-1.0": "^2.45.1-3.2.2",
- "@girs/cairo-1.0": "^1.0.0-3.2.2",
- "@girs/freetype2-2.0": "^2.0.0-3.2.2",
- "@girs/gdk-3.0": "^3.24.39-3.2.2",
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.2",
- "@girs/gio-2.0": "^2.77.0-3.2.2",
- "@girs/gjs": "^3.2.2",
- "@girs/glib-2.0": "^2.77.0-3.2.2",
- "@girs/gmodule-2.0": "^2.0.0-3.2.2",
- "@girs/gobject-2.0": "^2.77.0-3.2.2",
- "@girs/harfbuzz-0.0": "^7.1.0-3.2.2",
- "@girs/pango-1.0": "^1.51.0-3.2.2",
- "@girs/xlib-2.0": "^2.0.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/atk-1.0": {
- "version": "2.45.1-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/atk-1.0/-/atk-1.0-2.45.1-3.2.2.tgz",
- "integrity": "sha512-+ba+w8s3CuIHBXNtfUtqbMy+lpa+SxY+ksu5i9QSINvKod6RHXSglXYiRAjKsP3nVyTc+FaF7ymYvqGbM42HHw==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.2",
- "@girs/glib-2.0": "^2.77.0-3.2.2",
- "@girs/gobject-2.0": "^2.77.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/gdk-3.0": {
- "version": "3.24.39-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/gdk-3.0/-/gdk-3.0-3.24.39-3.2.2.tgz",
- "integrity": "sha512-nZ6DUQ/UfcW2y3ZtE1pfhBgerUkacXYpCuHJB2cp2moWHt82/w5H7zsUSr43rSzQqkFZCPQOsjUSX0VAJQfYTw==",
- "dev": true,
- "dependencies": {
- "@girs/cairo-1.0": "^1.0.0-3.2.2",
- "@girs/freetype2-2.0": "^2.0.0-3.2.2",
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.2",
- "@girs/gio-2.0": "^2.77.0-3.2.2",
- "@girs/gjs": "^3.2.2",
- "@girs/glib-2.0": "^2.77.0-3.2.2",
- "@girs/gmodule-2.0": "^2.0.0-3.2.2",
- "@girs/gobject-2.0": "^2.77.0-3.2.2",
- "@girs/harfbuzz-0.0": "^7.1.0-3.2.2",
- "@girs/pango-1.0": "^1.51.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/gio-2.0": {
- "version": "2.77.0-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/gio-2.0/-/gio-2.0-2.77.0-3.2.2.tgz",
- "integrity": "sha512-AwxseNiPYXcPo5piyBc3Vb/+7ednxZgj2fcqOgys6Hmp40FrhNJphr4et87UBT1MOTA4sb4fyJNsSdQ2y9dfYQ==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.2",
- "@girs/glib-2.0": "^2.77.0-3.2.2",
- "@girs/gobject-2.0": "^2.77.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/glib-2.0": {
- "version": "2.77.0-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/glib-2.0/-/glib-2.0-2.77.0-3.2.2.tgz",
- "integrity": "sha512-cFWgYKKBR58+er7MOYTFcws5MHEQUD74VaGUEBLUTjFh9EsyIXOOcaU+Z6cteObGDo9ZYdlr8RBAdKI8H18sqQ==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.2",
- "@girs/gobject-2.0": "^2.77.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/gobject-2.0": {
- "version": "2.77.0-3.2.2",
- "resolved": "https://registry.npmjs.org/@girs/gobject-2.0/-/gobject-2.0-2.77.0-3.2.2.tgz",
- "integrity": "sha512-psnnFhNY+49SXzdTDpHwnySMTDtHYDP9rxMx1Xb1UVE1JaxwuI0YLrylt+Zv0boGczmwol8afxZw2Z9TnSSocg==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.2",
- "@girs/glib-2.0": "^2.77.0-3.2.2"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/harfbuzz-0.0": {
- "version": "7.1.0-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/harfbuzz-0.0/-/harfbuzz-0.0-7.1.0-3.2.3.tgz",
- "integrity": "sha512-z9fpiJBni97ioU2f1BIrfHCoTD2HDt0h2kaa0EL9n6DvzhntRXUc56cRRRohhXMyIwfUJmMOPuiqMFTI8kt4OQ==",
- "dev": true,
- "dependencies": {
- "@girs/freetype2-2.0": "^2.0.0-3.2.3",
- "@girs/gjs": "^3.2.3",
- "@girs/glib-2.0": "^2.76.1-3.2.3",
- "@girs/gobject-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/harfbuzz-0.0/node_modules/@girs/glib-2.0": {
- "version": "2.76.1-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/glib-2.0/-/glib-2.0-2.76.1-3.2.3.tgz",
- "integrity": "sha512-pY/ZE2WPco9E8Cz5+wTqxEOdVpipEQBRDJXVd/KQCoRjTSvgoMLLEE8B84W0LgOgR8ns99XtGZrf0U0y4qFqyA==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.3",
- "@girs/gobject-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/gtk-3.0/node_modules/@girs/harfbuzz-0.0/node_modules/@girs/gobject-2.0": {
- "version": "2.76.1-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/gobject-2.0/-/gobject-2.0-2.76.1-3.2.3.tgz",
- "integrity": "sha512-9X35d1ZRO4xY9b0iOm51MwjfbgvOGQtNs2A9IWcSlaoI4LB5mCRlPlQ1UFhpqcbbmdrL+Cce/0p3F36x5rn/dg==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.3",
- "@girs/glib-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/gvc-1.0": {
- "version": "1.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/gvc-1.0/-/gvc-1.0-1.0.0-3.2.7.tgz",
- "integrity": "sha512-5B6YxXRzqo6JbZg4B8KtEOEsUhfEZYo9yESgf95lhWeUXpS6JjJFg/lQ85E/KFDQmKtAJ/UYglmLa8omVvH5DA==",
- "dev": true,
- "dependencies": {
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/harfbuzz-0.0": {
- "version": "8.2.1-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/harfbuzz-0.0/-/harfbuzz-0.0-8.2.1-3.2.7.tgz",
- "integrity": "sha512-2ISw/O1eW90P2jeeFuTZRBE6+z/VWCWCaYZOMTTDaF498PGljKtuexm0e5BEzVrbayU7EgSHhqxfnfpsgI2+eQ==",
- "dev": true,
- "dependencies": {
- "@girs/freetype2-2.0": "^2.0.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/nm-1.0": {
- "version": "1.43.1-3.1.0",
- "resolved": "https://registry.npmjs.org/@girs/nm-1.0/-/nm-1.0-1.43.1-3.1.0.tgz",
- "integrity": "sha512-2jawCPFAFlBmlsQ0334+SIYZJ1zXiHClU0PRiPZPAuOx+NzIpvAjEjprynrwFHwZ2azjmSjFp5AQ/wTTiDLJ/g==",
- "dev": true,
- "dependencies": {
- "@girs/gio-2.0": "^2.76.1-3.1.0",
- "@girs/gjs": "^3.1.0",
- "@girs/glib-2.0": "^2.76.1-3.1.0",
- "@girs/gobject-2.0": "^2.76.1-3.1.0"
- }
- },
- "node_modules/@girs/nm-1.0/node_modules/@girs/gio-2.0": {
- "version": "2.76.1-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/gio-2.0/-/gio-2.0-2.76.1-3.2.3.tgz",
- "integrity": "sha512-6SK2z2YsZrxdoumXW7taI1S2HIBvWcFoKWAot0A5coMskJOnt6HnNxIMTBbN5YhkOs855YHqfaLYeNNU3Y3M2A==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.3",
- "@girs/glib-2.0": "^2.76.1-3.2.3",
- "@girs/gobject-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/nm-1.0/node_modules/@girs/glib-2.0": {
- "version": "2.76.1-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/glib-2.0/-/glib-2.0-2.76.1-3.2.3.tgz",
- "integrity": "sha512-pY/ZE2WPco9E8Cz5+wTqxEOdVpipEQBRDJXVd/KQCoRjTSvgoMLLEE8B84W0LgOgR8ns99XtGZrf0U0y4qFqyA==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.3",
- "@girs/gobject-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/nm-1.0/node_modules/@girs/gobject-2.0": {
- "version": "2.76.1-3.2.3",
- "resolved": "https://registry.npmjs.org/@girs/gobject-2.0/-/gobject-2.0-2.76.1-3.2.3.tgz",
- "integrity": "sha512-9X35d1ZRO4xY9b0iOm51MwjfbgvOGQtNs2A9IWcSlaoI4LB5mCRlPlQ1UFhpqcbbmdrL+Cce/0p3F36x5rn/dg==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.3",
- "@girs/glib-2.0": "^2.76.1-3.2.3"
- }
- },
- "node_modules/@girs/notify-0.7": {
- "version": "0.8.3-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/notify-0.7/-/notify-0.7-0.8.3-3.2.7.tgz",
- "integrity": "sha512-ngdi3gNKgog/DLOIpUFaHxWGUZoRxB5JqHj6beWAlHKFlMuuPdBnArLVy0JzuotEGXMrfC0Oask8a64DEMU7Sw==",
- "dev": true,
- "dependencies": {
- "@girs/gdkpixbuf-2.0": "^2.0.0-3.2.7",
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gmodule-2.0": "^2.0.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/pango-1.0": {
- "version": "1.51.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/pango-1.0/-/pango-1.0-1.51.0-3.2.7.tgz",
- "integrity": "sha512-wxVVMrZnaWkgBmvTM4rWE20whh0CTRiXINgmK9V2NOdJHUUD3HqIvRxChG6YJmXQcb9h4Gcgpr+OyP34IgP2Sg==",
- "dev": true,
- "dependencies": {
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/freetype2-2.0": "^2.0.0-3.2.7",
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7",
- "@girs/harfbuzz-0.0": "^8.2.1-3.2.7"
- }
- },
- "node_modules/@girs/soup-3.0": {
- "version": "3.4.4-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/soup-3.0/-/soup-3.0-3.4.4-3.2.7.tgz",
- "integrity": "sha512-g0wZX/xPgINy4gv9BsoOytjQjdUfUWmSvvOaL8l+3apWwUHGnBvA99oEye5PHh2xCEaZHhM4564DGy51TZC0/g==",
- "dev": true,
- "dependencies": {
- "@girs/gio-2.0": "^2.78.0-3.2.7",
- "@girs/gjs": "^3.2.7",
- "@girs/glib-2.0": "^2.78.0-3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@girs/xlib-2.0": {
- "version": "2.0.0-3.2.7",
- "resolved": "https://registry.npmjs.org/@girs/xlib-2.0/-/xlib-2.0-2.0.0-3.2.7.tgz",
- "integrity": "sha512-c4+y9V1BN7u0o2ijVuvT9WzEt7IvSJW/Dt4N7qQdTWfLnsQABPMnLuKQsZ6GRqPWBt+JBH0sOSR0tHBMLATC0g==",
- "dev": true,
- "dependencies": {
- "@girs/gjs": "^3.2.7",
- "@girs/gobject-2.0": "^2.78.0-3.2.7"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
- "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
- "dev": true
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.6",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
- "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
- "dev": true
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
- "dev": true,
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
- "node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
- "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.56.0",
- "@humanwhocodes/config-array": "^0.11.13",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
- "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
- "dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 92a69d57..00000000
--- a/package.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "name": "ags",
- "version": "1.0.0",
- "repository": "https://github.com/Aylur/ags",
- "author": "Aylur",
- "license": "GPL",
- "dependencies": {
- "typescript": "^5.1.0"
- },
- "devDependencies": {
- "@girs/cairo-1.0": "^1.0.0-3.2.7",
- "@girs/dbusmenugtk3-0.4": "^0.4.0-3.2.0",
- "@girs/gjs": "^3.2.7",
- "@girs/gtk-3.0": "^3.24.39-3.2.2",
- "@girs/gvc-1.0": "^1.0.0-3.1.0",
- "@girs/nm-1.0": "^1.43.1-3.1.0",
- "@girs/notify-0.7": "^0.8.3-3.2.7",
- "@girs/soup-3.0": "^3.4.4-3.2.6",
- "@typescript-eslint/eslint-plugin": "^5.33.0",
- "@typescript-eslint/parser": "^5.33.0",
- "eslint": "^8.42.0"
- },
- "scripts": {
- "test": "eslint ."
- }
-}
diff --git a/post_install.sh b/post_install.sh
deleted file mode 100644
index bb7c2f4f..00000000
--- a/post_install.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env bash
-
-DATA_DIR="$DESTDIR/$1"
-PKGDATA_DIR="$DESTDIR/$2"
-BIN_DIR="$DESTDIR/$3"
-APP_ID=$4
-
-mkdir -p $BIN_DIR
-
-BIN_SRC="$PKGDATA_DIR/$APP_ID"
-BIN_DEST="$BIN_DIR/ags"
-ln -s -f $BIN_SRC $BIN_DEST
-
-if [[ "$5" == "false" ]]; then
- exit 0
-fi
-
-SRC=$6
-TYPES="$PKGDATA_DIR/types"
-
-mkdir -p $TYPES
-
-tsc -p $SRC/tsconfig.json -d --declarationDir $TYPES --emitDeclarationOnly
-
-function fixPaths {
- sed -i 's/node_modules/types/g' $1
- sed -i 's/import("@girs/import("types\/@girs/g' $1
-}
-
-export -f fixPaths
-find $TYPES -type f | xargs -I % bash -c "fixPaths %"
-cp -r "$SRC/node_modules/@girs" "$TYPES/@girs"
-
-# gen ags.d.ts
-function mod {
- echo "declare module '$1' {
- const exports: typeof import('$2')
- export = exports
-}"
-}
-
-function resource {
- mod "resource:///com/github/Aylur/ags/$1.js" "./$1"
-}
-
-dts="$TYPES/ags.d.ts"
-
-echo "declare function print(...args: any[]): void;
-declare const Widget: typeof import('./widget').default
-declare const Service: typeof import('./service').default
-declare const Variable: typeof import('./variable').default
-declare const Utils: typeof import('./utils').default
-declare const App: typeof import('./app').default
-" >$dts
-
-for file in $SRC/src/*.ts; do
- f=$(basename -s .ts $file)
- if [[ "$f" != "main" && "$f" != "client" ]]; then
- resource "$(basename -s .ts $file)" >>$dts
- fi
-done
-
-for file in $SRC/src/service/*.ts; do
- resource "service/$(basename -s .ts $file)" >>$dts
-done
-
-for file in $SRC/src/widgets/*.ts; do
- resource "widgets/$(basename -s .ts $file)" >>$dts
-done
-
-for file in $SRC/src/utils/*.ts; do
- resource "utils/$(basename -s .ts $file)" >>$dts
-done
diff --git a/src/app.ts b/src/app.ts
deleted file mode 100644
index 5849e7ee..00000000
--- a/src/app.ts
+++ /dev/null
@@ -1,414 +0,0 @@
-import Gtk from 'gi://Gtk?version=3.0';
-import Gdk from 'gi://Gdk?version=3.0';
-import Gio from 'gi://Gio';
-import GLib from 'gi://GLib';
-import Service from './service.js';
-import Variable from './variable.js';
-import Widget from './widget.js';
-import Utils from './utils.js';
-import { timeout, readFileAsync } from './utils.js';
-import { loadInterfaceXML } from './utils.js';
-
-function deprecated(config: Config) {
- console.warn('passing the config object with default export is DEPRECATED. '
- + 'use App.config() instead');
-
- const warning = (from: string, to: string) => console.warn(
- `${from} config option has been removed: use ${to} instead`);
-
- if (config.notificationPopupTimeout !== undefined)
- warning('notificationPopupTimeout', 'Notifications.popupTimeout');
-
- if (config.notificationForceTimeout !== undefined)
- warning('notificationForceTimeout', 'Notifications.forceTimeout');
-
- if (config.cacheNotificationActions !== undefined)
- warning('cacheNotificationActions', 'Notifications.cacheActions');
-
- if (config.cacheCoverArt !== undefined)
- warning('cacheCoverArt', 'Mpris.cacheCoverArt');
-
- if (config.maxStreamVolume !== undefined)
- warning('cacheCoverArt', 'Audio.maxStreamVolume');
-}
-
-const AgsIFace = (bus: string) =>
- loadInterfaceXML('com.github.Aylur.ags')?.replace('@BUS@', bus);
-
-export interface Config {
- windows?: Gtk.Window[] | (() => Gtk.Window[])
- style?: string
- icons?: string
- gtkTheme?: string
- iconTheme?: string
- cursorTheme?: string
- closeWindowDelay?: { [key: string]: number }
-
- onWindowToggled?: (windowName: string, visible: boolean) => void
- onConfigParsed?: (app: App) => void
-
- // FIXME: deprecated
- notificationPopupTimeout?: number
- notificationForceTimeout?: boolean
- cacheNotificationActions?: boolean
- cacheCoverArt?: boolean
- maxStreamVolume?: number
-}
-
-export class App extends Gtk.Application {
- static {
- Service.register(this, {
- 'window-toggled': ['string', 'boolean'],
- 'config-parsed': [],
- });
- }
-
- private _dbus!: Gio.DBusExportedObject;
- private _cssProviders: Gtk.CssProvider[] = [];
- private _objectPath!: string;
- private _windows: Map>(): Binding >(prop?: P): Binding >(prop: P = 'value' as P) {
- return new Binding(this, prop);
- }
-}
-
-export default