From f67db9464f4634497ae300940bd8c147d8b639be Mon Sep 17 00:00:00 2001 From: Johnny Huynh <27847622+johnnyhuy@users.noreply.github.com> Date: Tue, 18 Aug 2026 22:39:05 +1000 Subject: [PATCH 1/4] chore(deps): add electron-liquid-glass (optional, darwin only) Adds the native macOS liquid glass addon used by the main window to apply system window vibrancy under the transparent pane. Declared in optionalDependencies because the package has "os": ["darwin"] and would otherwise fail `npm ci` on Linux/Windows CI runners. The runtime use is dynamic-imported (see src/main/index.ts) so the package is only loaded on macOS. --- package-lock.json | 1015 +++------------------------------------------ package.json | 3 + 2 files changed, 65 insertions(+), 953 deletions(-) diff --git a/package-lock.json b/package-lock.json index 193df1b..ec8be85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,12 +28,13 @@ "eslint": "^8.57.1", "typescript": "^5.8.3", "vite": "^6.3.2" + }, + "optionalDependencies": { + "electron-liquid-glass": "^1.1.1" } }, "node_modules/@babel/code-frame": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "license": "MIT", "dependencies": { @@ -47,8 +48,6 @@ }, "node_modules/@babel/compat-data": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", - "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "license": "MIT", "engines": { @@ -57,8 +56,6 @@ }, "node_modules/@babel/core": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", "dependencies": { @@ -88,8 +85,6 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -98,8 +93,6 @@ }, "node_modules/@babel/generator": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -115,8 +108,6 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", "dependencies": { @@ -132,8 +123,6 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -142,8 +131,6 @@ }, "node_modules/@babel/helper-globals": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", - "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", "engines": { @@ -152,8 +139,6 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", - "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", "dependencies": { @@ -166,8 +151,6 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", "dependencies": { @@ -184,8 +167,6 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", - "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", "engines": { @@ -194,8 +175,6 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -204,8 +183,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -214,8 +191,6 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", "engines": { @@ -224,8 +199,6 @@ }, "node_modules/@babel/helpers": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", "dependencies": { @@ -238,8 +211,6 @@ }, "node_modules/@babel/parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { @@ -254,8 +225,6 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", - "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", "dev": true, "license": "MIT", "dependencies": { @@ -270,8 +239,6 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", - "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -286,8 +253,6 @@ }, "node_modules/@babel/template": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { @@ -301,8 +266,6 @@ }, "node_modules/@babel/traverse": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "dev": true, "license": "MIT", "dependencies": { @@ -320,8 +283,6 @@ }, "node_modules/@babel/types": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { @@ -334,8 +295,6 @@ }, "node_modules/@electron-internal/extract-zip": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron-internal/extract-zip/-/extract-zip-1.0.5.tgz", - "integrity": "sha512-+bqFCP98pLI0Tt0XQo1TmlXtwjWchISndDOxCkEcIuUgXWpBnLyRI+2DU+mesvnMMX6L1XDqYNA0lXNDHd/yiA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -344,8 +303,6 @@ }, "node_modules/@electron/asar": { "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", - "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", "dev": true, "license": "MIT", "dependencies": { @@ -362,8 +319,6 @@ }, "node_modules/@electron/asar/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -373,8 +328,6 @@ }, "node_modules/@electron/asar/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -386,8 +339,6 @@ }, "node_modules/@electron/fuses": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", - "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", "dev": true, "license": "MIT", "dependencies": { @@ -401,8 +352,6 @@ }, "node_modules/@electron/fuses/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -417,8 +366,6 @@ }, "node_modules/@electron/fuses/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -430,8 +377,6 @@ }, "node_modules/@electron/fuses/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -440,8 +385,6 @@ }, "node_modules/@electron/get": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-5.1.0.tgz", - "integrity": "sha512-3kSBtG8ObcTVfXanm5vVJ6UnBLEVmVsRk1M+vGqCuMBV+XLCbJYuWQful+yIy0GQDsSlK0kHEriEHn7SPk4EnA==", "dev": true, "license": "MIT", "dependencies": { @@ -461,8 +404,6 @@ }, "node_modules/@electron/get/node_modules/env-paths": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", "dev": true, "license": "MIT", "engines": { @@ -474,8 +415,6 @@ }, "node_modules/@electron/get/node_modules/undici": { "version": "7.29.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", - "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", "dev": true, "license": "MIT", "optional": true, @@ -485,8 +424,6 @@ }, "node_modules/@electron/notarize": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", - "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", "dev": true, "license": "MIT", "dependencies": { @@ -500,8 +437,6 @@ }, "node_modules/@electron/notarize/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -516,8 +451,6 @@ }, "node_modules/@electron/notarize/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -529,8 +462,6 @@ }, "node_modules/@electron/notarize/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -539,8 +470,6 @@ }, "node_modules/@electron/osx-sign": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", - "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -561,8 +490,6 @@ }, "node_modules/@electron/osx-sign/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -576,8 +503,6 @@ }, "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, "license": "MIT", "engines": { @@ -589,8 +514,6 @@ }, "node_modules/@electron/osx-sign/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -602,8 +525,6 @@ }, "node_modules/@electron/osx-sign/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -612,8 +533,6 @@ }, "node_modules/@electron/rebuild": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-4.2.0.tgz", - "integrity": "sha512-RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -633,8 +552,6 @@ }, "node_modules/@electron/universal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", - "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==", "dev": true, "license": "MIT", "dependencies": { @@ -652,8 +569,6 @@ }, "node_modules/@electron/universal/node_modules/fs-extra": { "version": "11.4.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", - "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", "dev": true, "license": "MIT", "dependencies": { @@ -667,8 +582,6 @@ }, "node_modules/@electron/universal/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -680,8 +593,6 @@ }, "node_modules/@electron/universal/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -690,8 +601,6 @@ }, "node_modules/@electron/windows-sign": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", - "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", "dev": true, "license": "BSD-2-Clause", "optional": true, @@ -712,8 +621,6 @@ }, "node_modules/@electron/windows-sign/node_modules/fs-extra": { "version": "11.4.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", - "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", "dev": true, "license": "MIT", "optional": true, @@ -729,8 +636,6 @@ }, "node_modules/@electron/windows-sign/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "optional": true, @@ -744,8 +649,6 @@ }, "node_modules/@electron/windows-sign/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "optional": true, @@ -824,8 +727,6 @@ }, "node_modules/@esbuild/darwin-arm64": { "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -1198,8 +1099,6 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1217,8 +1116,6 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -1227,8 +1124,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -1251,8 +1146,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -1262,8 +1155,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1275,8 +1166,6 @@ }, "node_modules/@eslint/js": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { @@ -1285,9 +1174,6 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1301,8 +1187,6 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -1312,8 +1196,6 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1325,8 +1207,6 @@ }, "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, "license": "Apache-2.0", "engines": { @@ -1339,16 +1219,11 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1360,8 +1235,6 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { @@ -1371,8 +1244,6 @@ }, "node_modules/@jridgewell/remapping": { "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1382,8 +1253,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -1392,15 +1261,11 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1410,8 +1275,6 @@ }, "node_modules/@malept/cross-spawn-promise": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", "dev": true, "funding": [ { @@ -1433,8 +1296,6 @@ }, "node_modules/@malept/flatpak-bundler": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1449,8 +1310,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1465,8 +1324,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1478,8 +1335,6 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -1488,8 +1343,6 @@ }, "node_modules/@noble/hashes": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.3.0.tgz", - "integrity": "sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==", "dev": true, "license": "MIT", "engines": { @@ -1501,8 +1354,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -1515,8 +1366,6 @@ }, "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, "license": "MIT", "engines": { @@ -1525,8 +1374,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -1539,8 +1386,6 @@ }, "node_modules/@peculiar/asn1-schema": { "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz", - "integrity": "sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1551,8 +1396,6 @@ }, "node_modules/@peculiar/json-schema": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", - "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", "dev": true, "license": "MIT", "dependencies": { @@ -1564,8 +1407,6 @@ }, "node_modules/@peculiar/utils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", - "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1574,8 +1415,6 @@ }, "node_modules/@peculiar/webcrypto": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.7.1.tgz", - "integrity": "sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1591,8 +1430,6 @@ }, "node_modules/@rolldown/pluginutils": { "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", "dev": true, "license": "MIT" }, @@ -1626,8 +1463,6 @@ }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", - "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", "cpu": [ "arm64" ], @@ -1987,8 +1822,6 @@ }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "license": "MIT", "engines": { @@ -2000,8 +1833,6 @@ }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, "license": "MIT", "dependencies": { @@ -2013,8 +1844,6 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { @@ -2027,8 +1856,6 @@ }, "node_modules/@types/babel__generator": { "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2037,8 +1864,6 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { @@ -2048,8 +1873,6 @@ }, "node_modules/@types/babel__traverse": { "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2058,8 +1881,6 @@ }, "node_modules/@types/cacheable-request": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, "license": "MIT", "dependencies": { @@ -2071,8 +1892,6 @@ }, "node_modules/@types/debug": { "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", - "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "dev": true, "license": "MIT", "dependencies": { @@ -2081,15 +1900,11 @@ }, "node_modules/@types/estree": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, "node_modules/@types/fs-extra": { "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, "license": "MIT", "dependencies": { @@ -2098,15 +1913,11 @@ }, "node_modules/@types/http-cache-semantics": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", "dev": true, "license": "MIT" }, "node_modules/@types/keyv": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dev": true, "license": "MIT", "dependencies": { @@ -2115,15 +1926,11 @@ }, "node_modules/@types/ms": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "22.20.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz", - "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2132,8 +1939,6 @@ }, "node_modules/@types/react": { "version": "19.2.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", - "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", "dev": true, "license": "MIT", "dependencies": { @@ -2142,8 +1947,6 @@ }, "node_modules/@types/react-dom": { "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -2152,8 +1955,6 @@ }, "node_modules/@types/responselike": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "license": "MIT", "dependencies": { @@ -2162,15 +1963,11 @@ }, "node_modules/@types/which": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.4.tgz", - "integrity": "sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -2203,8 +2000,6 @@ }, "node_modules/@typescript-eslint/parser": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2232,8 +2027,6 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", "dev": true, "license": "MIT", "dependencies": { @@ -2250,8 +2043,6 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", "dev": true, "license": "MIT", "dependencies": { @@ -2278,8 +2069,6 @@ }, "node_modules/@typescript-eslint/types": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", "dev": true, "license": "MIT", "engines": { @@ -2292,8 +2081,6 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2321,8 +2108,6 @@ }, "node_modules/@typescript-eslint/utils": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", "dev": true, "license": "MIT", "dependencies": { @@ -2344,8 +2129,6 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", "dev": true, "license": "MIT", "dependencies": { @@ -2362,15 +2145,11 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", - "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", "dev": true, "license": "ISC" }, "node_modules/@vitejs/plugin-react": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", "dev": true, "license": "MIT", "dependencies": { @@ -2390,8 +2169,6 @@ }, "node_modules/@xmldom/xmldom": { "version": "0.8.13", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", - "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", "dev": true, "license": "MIT", "engines": { @@ -2400,8 +2177,6 @@ }, "node_modules/abbrev": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", - "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, "license": "ISC", "engines": { @@ -2410,8 +2185,6 @@ }, "node_modules/acorn": { "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", "dev": true, "license": "MIT", "bin": { @@ -2423,8 +2196,6 @@ }, "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, "license": "MIT", "peerDependencies": { @@ -2433,8 +2204,6 @@ }, "node_modules/agent-base": { "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -2443,8 +2212,6 @@ }, "node_modules/ajv": { "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2460,8 +2227,6 @@ }, "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, "license": "MIT", "engines": { @@ -2470,8 +2235,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -2486,8 +2249,6 @@ }, "node_modules/app-builder-lib": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.15.3.tgz", - "integrity": "sha512-2VnyWkqsP5v5XbBhL3tD5Syx8iNPBYsoU7kY4S2fz7wg8Rj/nztWKCUzGKaFRTv0Xwf3/H058CR1Kvtd/3lRow==", "dev": true, "license": "MIT", "dependencies": { @@ -2543,8 +2304,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", - "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2565,8 +2324,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2580,8 +2337,6 @@ }, "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -2590,8 +2345,6 @@ }, "node_modules/app-builder-lib/node_modules/ajv": { "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "dev": true, "license": "MIT", "dependencies": { @@ -2607,8 +2360,6 @@ }, "node_modules/app-builder-lib/node_modules/balanced-match": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { @@ -2617,8 +2368,6 @@ }, "node_modules/app-builder-lib/node_modules/brace-expansion": { "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { @@ -2630,8 +2379,6 @@ }, "node_modules/app-builder-lib/node_modules/ci-info": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, "funding": [ { @@ -2646,8 +2393,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2661,8 +2406,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2674,8 +2417,6 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -2684,15 +2425,11 @@ }, "node_modules/app-builder-lib/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/app-builder-lib/node_modules/minimatch": { "version": "10.2.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", - "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -2707,8 +2444,6 @@ }, "node_modules/app-builder-lib/node_modules/semver": { "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -2720,15 +2455,11 @@ }, "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, "license": "Python-2.0" }, "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, "license": "MIT", "engines": { @@ -2737,8 +2468,6 @@ }, "node_modules/asn1js": { "version": "3.0.10", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", - "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2752,15 +2481,11 @@ }, "node_modules/async": { "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, "node_modules/async-exit-hook": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", "engines": { @@ -2769,15 +2494,11 @@ }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", "engines": { @@ -2786,22 +2507,16 @@ }, "node_modules/aws4": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", "dev": true, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, "funding": [ { @@ -2821,8 +2536,6 @@ }, "node_modules/baseline-browser-mapping": { "version": "2.10.43", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz", - "integrity": "sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2832,26 +2545,29 @@ "node": ">=6.0.0" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true, "license": "MIT" }, "node_modules/boolean": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "optional": true }, "node_modules/brace-expansion": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -2860,8 +2576,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { @@ -2873,8 +2587,6 @@ }, "node_modules/browserslist": { "version": "4.28.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.6.tgz", - "integrity": "sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==", "dev": true, "funding": [ { @@ -2907,15 +2619,11 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/builder-util": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.15.3.tgz", - "integrity": "sha512-q2hn7Mbo2nFNkVekPiHFx6Nfo3hURmES3tfBn+k5Pqxl2RkmP3QGqZUhH/q9Pch/4G05NRhPjDlVj1O8q4Txvw==", "dev": true, "license": "MIT", "dependencies": { @@ -2940,8 +2648,6 @@ }, "node_modules/builder-util-runtime": { "version": "9.7.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.7.0.tgz", - "integrity": "sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw==", "dev": true, "license": "MIT", "dependencies": { @@ -2954,8 +2660,6 @@ }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2969,8 +2673,6 @@ }, "node_modules/builder-util/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2982,8 +2684,6 @@ }, "node_modules/builder-util/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -2992,8 +2692,6 @@ }, "node_modules/bytestreamjs": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", - "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3002,8 +2700,6 @@ }, "node_modules/cacheable-lookup": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true, "license": "MIT", "engines": { @@ -3012,8 +2708,6 @@ }, "node_modules/cacheable-request": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "license": "MIT", "dependencies": { @@ -3031,8 +2725,6 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3045,8 +2737,6 @@ }, "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, "license": "MIT", "engines": { @@ -3055,8 +2745,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001806", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", - "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", "dev": true, "funding": [ { @@ -3076,8 +2764,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, "license": "MIT", "dependencies": { @@ -3093,8 +2779,6 @@ }, "node_modules/chalk/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, "license": "MIT", "dependencies": { @@ -3106,8 +2790,6 @@ }, "node_modules/chownr": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -3116,15 +2798,11 @@ }, "node_modules/chromium-pickle-js": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", "dev": true, "license": "MIT" }, "node_modules/ci-info": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -3139,8 +2817,6 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3154,8 +2830,6 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, "license": "MIT", "dependencies": { @@ -3167,8 +2841,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -3180,15 +2852,11 @@ }, "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, "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -3200,8 +2868,6 @@ }, "node_modules/commander": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, "license": "MIT", "engines": { @@ -3210,8 +2876,6 @@ }, "node_modules/compare-version": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, "license": "MIT", "engines": { @@ -3220,15 +2884,11 @@ }, "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, "license": "MIT" }, "node_modules/concurrently": { "version": "9.2.4", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.4.tgz", - "integrity": "sha512-TZ0CEhyzvFjgtAvHTusDMgj7wNdihCh7LLLrzdUOXIhdlnL2JBBGA9eJxR24rtqgmdjh3OA3hrN1rCHj6HM8qA==", "dev": true, "license": "MIT", "dependencies": { @@ -3252,22 +2912,16 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, "license": "MIT" }, "node_modules/cross-dirname": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", - "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", "dev": true, "license": "MIT", "optional": true, @@ -3275,8 +2929,6 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -3290,15 +2942,11 @@ }, "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/cross-spawn/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, "license": "ISC", "dependencies": { @@ -3313,15 +2961,11 @@ }, "node_modules/csstype": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -3338,8 +2982,6 @@ }, "node_modules/decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3354,8 +2996,6 @@ }, "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", "engines": { @@ -3367,15 +3007,11 @@ }, "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, "license": "MIT" }, "node_modules/defer-to-connect": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "license": "MIT", "engines": { @@ -3384,8 +3020,6 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", "optional": true, @@ -3403,8 +3037,6 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "optional": true, @@ -3422,8 +3054,6 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -3432,16 +3062,12 @@ }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true, "license": "MIT", "optional": true }, "node_modules/dir-compare": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", - "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3451,8 +3077,6 @@ }, "node_modules/dir-compare/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -3462,8 +3086,6 @@ }, "node_modules/dir-compare/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -3475,8 +3097,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -3488,8 +3108,6 @@ }, "node_modules/dmg-builder": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.15.3.tgz", - "integrity": "sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3501,8 +3119,6 @@ }, "node_modules/dmg-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3516,8 +3132,6 @@ }, "node_modules/dmg-builder/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3529,8 +3143,6 @@ }, "node_modules/dmg-builder/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3539,8 +3151,6 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3552,8 +3162,6 @@ }, "node_modules/dotenv": { "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -3565,8 +3173,6 @@ }, "node_modules/dotenv-expand": { "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3581,8 +3187,6 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { @@ -3596,8 +3200,6 @@ }, "node_modules/duplexer2": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3606,8 +3208,6 @@ }, "node_modules/ejs": { "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3622,8 +3222,6 @@ }, "node_modules/electron": { "version": "41.10.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-41.10.3.tgz", - "integrity": "sha512-MJuSODPw8siv/I8JjhctW/cS/XNldwI4gLRyyWZx6QkoZJUDgbEvitp7IVOnGrHENTQb6Udo+zMpKhFnhlIhdg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3641,8 +3239,6 @@ }, "node_modules/electron-builder": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.15.3.tgz", - "integrity": "sha512-a1KM5heqS3gQCZzizXEI8RjJy3QVogULPdeSknt76uLDpBIW/HDGsMg/XgP0riP6PI9COsRvFITKKGDqA8fJxA==", "dev": true, "license": "MIT", "dependencies": { @@ -3667,8 +3263,6 @@ }, "node_modules/electron-builder-squirrel-windows": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.15.3.tgz", - "integrity": "sha512-Jc19XPV9y9+2bAdZPkXuVNGNIEFBq9poHC61l8Kv6FdK7DRG3+Ic0rerC0DXOaeHNz8yW0fg/JnF8GQROOF5MA==", "dev": true, "license": "MIT", "peer": true, @@ -3680,8 +3274,6 @@ }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3695,8 +3287,6 @@ }, "node_modules/electron-builder/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3708,18 +3298,34 @@ }, "node_modules/electron-builder/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, + "node_modules/electron-liquid-glass": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/electron-liquid-glass/-/electron-liquid-glass-1.1.1.tgz", + "integrity": "sha512-AfPxcu6RJYxlsW2sjgjDEON0rVOjhh5QYM6ur5hsfILQmfY5ewHCWJZJZoDsQxhjeW1DAhbRbvB79IvgW4ansA==", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^8.4.0" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "node-gyp-build": "^4" + } + }, "node_modules/electron-publish": { "version": "26.15.3", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", - "integrity": "sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3736,8 +3342,6 @@ }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3751,8 +3355,6 @@ }, "node_modules/electron-publish/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3764,8 +3366,6 @@ }, "node_modules/electron-publish/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3774,15 +3374,11 @@ }, "node_modules/electron-to-chromium": { "version": "1.5.393", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.393.tgz", - "integrity": "sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg==", "dev": true, "license": "ISC" }, "node_modules/electron-winstaller": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", - "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3803,8 +3399,6 @@ }, "node_modules/electron-winstaller/node_modules/fs-extra": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", "peer": true, @@ -3819,8 +3413,6 @@ }, "node_modules/electron/node_modules/@types/node": { "version": "24.13.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", - "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3829,22 +3421,16 @@ }, "node_modules/electron/node_modules/undici-types": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { @@ -3853,8 +3439,6 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", "engines": { @@ -3863,15 +3447,11 @@ }, "node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "license": "MIT" }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { @@ -3880,8 +3460,6 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", "engines": { @@ -3890,8 +3468,6 @@ }, "node_modules/es-object-atoms": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "dev": true, "license": "MIT", "dependencies": { @@ -3903,8 +3479,6 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { @@ -3919,16 +3493,12 @@ }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true, "license": "MIT", "optional": true }, "node_modules/esbuild": { "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3969,8 +3539,6 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -3979,8 +3547,6 @@ }, "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, "license": "MIT", "engines": { @@ -3992,9 +3558,6 @@ }, "node_modules/eslint": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { @@ -4049,8 +3612,6 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -4066,8 +3627,6 @@ }, "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, "license": "Apache-2.0", "engines": { @@ -4079,8 +3638,6 @@ }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -4090,8 +3647,6 @@ }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -4103,8 +3658,6 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -4121,8 +3674,6 @@ }, "node_modules/esquery": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4134,8 +3685,6 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -4147,8 +3696,6 @@ }, "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, "license": "BSD-2-Clause", "engines": { @@ -4157,8 +3704,6 @@ }, "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, "license": "BSD-2-Clause", "engines": { @@ -4167,22 +3712,16 @@ }, "node_modules/exponential-backoff": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "dev": true, "license": "Apache-2.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, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -4198,8 +3737,6 @@ }, "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, "license": "ISC", "dependencies": { @@ -4211,22 +3748,16 @@ }, "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, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", - "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "dev": true, "funding": [ { @@ -4242,8 +3773,6 @@ }, "node_modules/fastq": { "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { @@ -4252,8 +3781,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -4263,10 +3790,15 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true + }, "node_modules/filelist": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4275,8 +3807,6 @@ }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -4288,8 +3818,6 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -4301,8 +3829,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -4318,8 +3844,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -4333,15 +3857,11 @@ }, "node_modules/flatted": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/form-data": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4357,17 +3877,12 @@ }, "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, "license": "ISC" }, "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": [ @@ -4379,8 +3894,6 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -4389,8 +3902,6 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -4399,8 +3910,6 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -4409,8 +3918,6 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4434,8 +3941,6 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -4448,8 +3953,6 @@ }, "node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", "dependencies": { @@ -4464,9 +3967,6 @@ }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -4486,8 +3986,6 @@ }, "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, "license": "ISC", "dependencies": { @@ -4499,8 +3997,6 @@ }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -4510,8 +4006,6 @@ }, "node_modules/glob/node_modules/minimatch": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -4523,8 +4017,6 @@ }, "node_modules/global-agent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", "dev": true, "license": "BSD-3-Clause", "optional": true, @@ -4542,8 +4034,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -4558,8 +4048,6 @@ }, "node_modules/globalthis": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "optional": true, @@ -4576,8 +4064,6 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -4597,8 +4083,6 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { @@ -4610,8 +4094,6 @@ }, "node_modules/got": { "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "license": "MIT", "dependencies": { @@ -4636,22 +4118,16 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "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, "license": "MIT", "engines": { @@ -4660,8 +4136,6 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "optional": true, @@ -4674,8 +4148,6 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -4687,8 +4159,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { @@ -4703,8 +4173,6 @@ }, "node_modules/hasown": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "dev": true, "license": "MIT", "dependencies": { @@ -4716,8 +4184,6 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "license": "ISC", "dependencies": { @@ -4729,8 +4195,6 @@ }, "node_modules/hosted-git-info/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, "license": "ISC", "dependencies": { @@ -4742,22 +4206,16 @@ }, "node_modules/hosted-git-info/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, "license": "ISC" }, "node_modules/http-cache-semantics": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { @@ -4770,8 +4228,6 @@ }, "node_modules/http2-wrapper": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, "license": "MIT", "dependencies": { @@ -4784,8 +4240,6 @@ }, "node_modules/https-proxy-agent": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { @@ -4798,8 +4252,6 @@ }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -4808,8 +4260,6 @@ }, "node_modules/import-fresh": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4825,8 +4275,6 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -4835,9 +4283,6 @@ }, "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -4847,15 +4292,11 @@ }, "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, "license": "ISC" }, "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, "license": "MIT", "engines": { @@ -4864,8 +4305,6 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -4874,8 +4313,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -4887,8 +4324,6 @@ }, "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, "license": "MIT", "engines": { @@ -4897,8 +4332,6 @@ }, "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, "license": "MIT", "engines": { @@ -4907,15 +4340,11 @@ }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, "license": "MIT" }, "node_modules/isbinaryfile": { "version": "5.0.7", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", - "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", "dev": true, "license": "MIT", "engines": { @@ -4927,8 +4356,6 @@ }, "node_modules/isexe": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", - "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", "license": "BlueOak-1.0.0", "engines": { "node": ">=18" @@ -4936,8 +4363,6 @@ }, "node_modules/jake": { "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4954,8 +4379,6 @@ }, "node_modules/jiti": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", "dev": true, "license": "MIT", "bin": { @@ -4964,15 +4387,11 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", - "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -4994,8 +4413,6 @@ }, "node_modules/jsesc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -5007,37 +4424,27 @@ }, "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, "license": "MIT" }, "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, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, "license": "ISC", "optional": true }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -5049,8 +4456,6 @@ }, "node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", "optionalDependencies": { @@ -5059,8 +4464,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -5069,15 +4472,11 @@ }, "node_modules/lazy-val": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", "dev": true, "license": "MIT" }, "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, "license": "MIT", "dependencies": { @@ -5090,8 +4489,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -5106,22 +4503,16 @@ }, "node_modules/lodash": { "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/lowercase-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, "license": "MIT", "engines": { @@ -5130,8 +4521,6 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -5140,8 +4529,6 @@ }, "node_modules/lucide-react": { "version": "1.28.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.28.0.tgz", - "integrity": "sha512-fARAFJULsGuDDydjp6+6blekG/sBIM29TerzLjc9bQUKAcEfrSc4ZQKb25KRz4OMKd87cZTb5dgq0w/T6KufVg==", "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -5149,8 +4536,6 @@ }, "node_modules/matcher": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, "license": "MIT", "optional": true, @@ -5163,8 +4548,6 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -5173,8 +4556,6 @@ }, "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, "license": "MIT", "engines": { @@ -5183,8 +4564,6 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -5197,8 +4576,6 @@ }, "node_modules/mime": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", "bin": { @@ -5210,8 +4587,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -5220,8 +4595,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -5233,8 +4606,6 @@ }, "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, "license": "MIT", "engines": { @@ -5243,8 +4614,6 @@ }, "node_modules/minimatch": { "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { @@ -5259,8 +4628,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -5269,8 +4636,6 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -5279,8 +4644,6 @@ }, "node_modules/minizlib": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "dev": true, "license": "MIT", "dependencies": { @@ -5292,8 +4655,6 @@ }, "node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", "peer": true, @@ -5306,15 +4667,11 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.18", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", - "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "dev": true, "funding": [ { @@ -5332,15 +4689,11 @@ }, "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, "license": "MIT" }, "node_modules/node-abi": { "version": "4.33.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-4.33.0.tgz", - "integrity": "sha512-vLBWCKb+7LWsX+TbfzWOkw0W81m377tyx3hOweBTjO43CXZnRGS1/JPWs20fr0PgZyDXk6ROYrylsEycK8raDA==", "dev": true, "license": "MIT", "dependencies": { @@ -5350,10 +4703,18 @@ "node": ">=22.12.0" } }, + "node_modules/node-addon-api": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.9.2.tgz", + "integrity": "sha512-VijLXbi3UACN69I0JVXJsX4tjACjNoQDgv2gTF6sx2wWEi8tkSg2eX8p5gSIFi8z2+DL3oHmY6OyKce38SDolg==", + "license": "MIT", + "optional": true, + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, "node_modules/node-api-version": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", - "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5362,8 +4723,6 @@ }, "node_modules/node-gyp": { "version": "12.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.4.0.tgz", - "integrity": "sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==", "dev": true, "license": "MIT", "dependencies": { @@ -5385,10 +4744,20 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-gyp/node_modules/isexe": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -5397,8 +4766,6 @@ }, "node_modules/node-gyp/node_modules/which": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { @@ -5413,15 +4780,11 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", "dev": true, "license": "MIT", "engines": { @@ -5430,8 +4793,6 @@ }, "node_modules/nopt": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", - "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", "dev": true, "license": "ISC", "dependencies": { @@ -5446,8 +4807,6 @@ }, "node_modules/normalize-url": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, "license": "MIT", "engines": { @@ -5459,8 +4818,6 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", "optional": true, @@ -5470,8 +4827,6 @@ }, "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, "license": "ISC", "dependencies": { @@ -5480,8 +4835,6 @@ }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -5498,8 +4851,6 @@ }, "node_modules/p-cancelable": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "license": "MIT", "engines": { @@ -5508,8 +4859,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -5524,8 +4873,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -5540,8 +4887,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -5553,8 +4898,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, "license": "MIT", "engines": { @@ -5563,8 +4906,6 @@ }, "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, "license": "MIT", "engines": { @@ -5573,8 +4914,6 @@ }, "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, "license": "MIT", "engines": { @@ -5583,8 +4922,6 @@ }, "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, "license": "MIT", "engines": { @@ -5593,8 +4930,6 @@ }, "node_modules/pe-library": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", - "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", "dev": true, "license": "MIT", "engines": { @@ -5608,15 +4943,11 @@ }, "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/picomatch": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -5628,8 +4959,6 @@ }, "node_modules/pkijs": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.0.tgz", - "integrity": "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5646,8 +4975,6 @@ }, "node_modules/pkijs/node_modules/@noble/hashes": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, "license": "MIT", "engines": { @@ -5659,8 +4986,6 @@ }, "node_modules/plist": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5674,8 +4999,6 @@ }, "node_modules/postcss": { "version": "8.5.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", - "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", "dev": true, "funding": [ { @@ -5703,8 +5026,6 @@ }, "node_modules/postject": { "version": "1.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", - "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", "dev": true, "license": "MIT", "optional": true, @@ -5721,8 +5042,6 @@ }, "node_modules/postject/node_modules/commander": { "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "license": "MIT", "optional": true, @@ -5733,8 +5052,6 @@ }, "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, "license": "MIT", "engines": { @@ -5743,8 +5060,6 @@ }, "node_modules/proc-log": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", - "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "dev": true, "license": "ISC", "engines": { @@ -5753,15 +5068,11 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, "license": "MIT", "engines": { @@ -5770,8 +5081,6 @@ }, "node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "license": "MIT", "dependencies": { @@ -5784,8 +5093,6 @@ }, "node_modules/proper-lockfile": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "dev": true, "license": "MIT", "dependencies": { @@ -5796,8 +5103,6 @@ }, "node_modules/pump": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", "dev": true, "license": "MIT", "dependencies": { @@ -5807,8 +5112,6 @@ }, "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, "license": "MIT", "engines": { @@ -5817,8 +5120,6 @@ }, "node_modules/pvtsutils": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", - "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "dev": true, "license": "MIT", "dependencies": { @@ -5827,8 +5128,6 @@ }, "node_modules/pvutils": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz", - "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==", "dev": true, "license": "MIT", "engines": { @@ -5837,8 +5136,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": [ { @@ -5858,8 +5155,6 @@ }, "node_modules/quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "license": "MIT", "engines": { @@ -5871,8 +5166,6 @@ }, "node_modules/react": { "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", - "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5880,8 +5173,6 @@ }, "node_modules/react-dom": { "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", - "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" @@ -5892,8 +5183,6 @@ }, "node_modules/react-refresh": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "dev": true, "license": "MIT", "engines": { @@ -5902,8 +5191,6 @@ }, "node_modules/read-binary-file-arch": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", - "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5915,8 +5202,6 @@ }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -5931,8 +5216,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -5941,8 +5224,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { @@ -5951,8 +5232,6 @@ }, "node_modules/resedit": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", - "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", "dev": true, "license": "MIT", "dependencies": { @@ -5969,15 +5248,11 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true, "license": "MIT" }, "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, "license": "MIT", "engines": { @@ -5986,8 +5261,6 @@ }, "node_modules/responselike": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "license": "MIT", "dependencies": { @@ -5999,8 +5272,6 @@ }, "node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "license": "MIT", "engines": { @@ -6009,8 +5280,6 @@ }, "node_modules/reusify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -6020,9 +5289,6 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -6037,8 +5303,6 @@ }, "node_modules/roarr": { "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, "license": "BSD-3-Clause", "optional": true, @@ -6056,8 +5320,6 @@ }, "node_modules/rollup": { "version": "4.62.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", - "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", "dev": true, "license": "MIT", "dependencies": { @@ -6101,8 +5363,6 @@ }, "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": [ { @@ -6125,8 +5385,6 @@ }, "node_modules/rxjs": { "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6135,15 +5393,11 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/sanitize-filename": { "version": "1.6.4", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.4.tgz", - "integrity": "sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==", "dev": true, "license": "WTFPL OR ISC", "dependencies": { @@ -6152,8 +5406,6 @@ }, "node_modules/sax": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", - "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6162,14 +5414,10 @@ }, "node_modules/scheduler": { "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/semver": { "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -6181,16 +5429,12 @@ }, "node_modules/semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true, "license": "MIT", "optional": true }, "node_modules/serialize-error": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, "license": "MIT", "optional": true, @@ -6206,8 +5450,6 @@ }, "node_modules/serialize-error/node_modules/type-fest": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, "license": "(MIT OR CC0-1.0)", "optional": true, @@ -6220,8 +5462,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -6233,8 +5473,6 @@ }, "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, "license": "MIT", "engines": { @@ -6243,8 +5481,6 @@ }, "node_modules/shell-quote": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz", - "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==", "dev": true, "license": "MIT", "engines": { @@ -6256,15 +5492,11 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/simple-update-notifier": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "license": "MIT", "dependencies": { @@ -6276,8 +5508,6 @@ }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -6286,8 +5516,6 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -6296,8 +5524,6 @@ }, "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": { @@ -6306,8 +5532,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -6317,16 +5541,12 @@ }, "node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true, "license": "BSD-3-Clause", "optional": true }, "node_modules/stat-mode": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true, "license": "MIT", "engines": { @@ -6335,8 +5555,6 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { @@ -6345,8 +5563,6 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6360,8 +5576,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -6373,8 +5587,6 @@ }, "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, "license": "MIT", "engines": { @@ -6386,8 +5598,6 @@ }, "node_modules/sumchecker": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6399,8 +5609,6 @@ }, "node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6415,8 +5623,6 @@ }, "node_modules/tar": { "version": "7.5.22", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", - "integrity": "sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6432,8 +5638,6 @@ }, "node_modules/tar/node_modules/yallist": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6442,8 +5646,6 @@ }, "node_modules/temp": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", "dev": true, "license": "MIT", "peer": true, @@ -6457,8 +5659,6 @@ }, "node_modules/temp-file": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, "license": "MIT", "dependencies": { @@ -6468,8 +5668,6 @@ }, "node_modules/temp-file/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6483,8 +5681,6 @@ }, "node_modules/temp-file/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6496,8 +5692,6 @@ }, "node_modules/temp-file/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -6506,9 +5700,6 @@ }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "peer": true, @@ -6521,15 +5712,11 @@ }, "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, "license": "MIT" }, "node_modules/tiny-async-pool": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", - "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", "dev": true, "license": "MIT", "dependencies": { @@ -6538,8 +5725,6 @@ }, "node_modules/tiny-async-pool/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -6548,8 +5733,6 @@ }, "node_modules/tinyglobby": { "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { @@ -6565,8 +5748,6 @@ }, "node_modules/tinyglobby/node_modules/fdir": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -6583,8 +5764,6 @@ }, "node_modules/tinyglobby/node_modules/picomatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -6596,8 +5775,6 @@ }, "node_modules/tmp": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "dev": true, "license": "MIT", "engines": { @@ -6606,8 +5783,6 @@ }, "node_modules/tmp-promise": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6616,8 +5791,6 @@ }, "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, "license": "MIT", "dependencies": { @@ -6629,8 +5802,6 @@ }, "node_modules/tree-kill": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -6639,8 +5810,6 @@ }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, "license": "WTFPL", "dependencies": { @@ -6649,8 +5818,6 @@ }, "node_modules/ts-api-utils": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -6662,15 +5829,11 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, "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, "license": "MIT", "dependencies": { @@ -6682,8 +5845,6 @@ }, "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, "license": "(MIT OR CC0-1.0)", "engines": { @@ -6695,8 +5856,6 @@ }, "node_modules/typescript": { "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6709,8 +5868,6 @@ }, "node_modules/undici": { "version": "6.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz", - "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==", "dev": true, "license": "MIT", "engines": { @@ -6719,15 +5876,11 @@ }, "node_modules/undici-types": { "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, "node_modules/universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", "engines": { @@ -6736,8 +5889,6 @@ }, "node_modules/unzipper": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.5.tgz", - "integrity": "sha512-tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A==", "dev": true, "license": "MIT", "dependencies": { @@ -6750,8 +5901,6 @@ }, "node_modules/unzipper/node_modules/fs-extra": { "version": "11.3.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", - "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", "dev": true, "license": "MIT", "dependencies": { @@ -6765,8 +5914,6 @@ }, "node_modules/unzipper/node_modules/jsonfile": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6778,8 +5925,6 @@ }, "node_modules/unzipper/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -6788,8 +5933,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -6819,8 +5962,6 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -6829,22 +5970,16 @@ }, "node_modules/utf8-byte-length": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", "dev": true, "license": "(WTFPL OR MIT)" }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, "node_modules/vite": { "version": "6.4.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", - "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", "dev": true, "license": "MIT", "dependencies": { @@ -6918,8 +6053,6 @@ }, "node_modules/vite/node_modules/fdir": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -6936,8 +6069,6 @@ }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -6949,8 +6080,6 @@ }, "node_modules/webcrypto-core": { "version": "1.9.2", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz", - "integrity": "sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6963,8 +6092,6 @@ }, "node_modules/which": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "license": "ISC", "dependencies": { "isexe": "^3.1.1" @@ -6978,8 +6105,6 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -6988,8 +6113,6 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -7006,15 +6129,11 @@ }, "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, "license": "ISC" }, "node_modules/xmlbuilder": { "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "dev": true, "license": "MIT", "engines": { @@ -7023,8 +6142,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -7033,15 +6150,11 @@ }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -7059,8 +6172,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -7069,8 +6180,6 @@ }, "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, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 73afcbb..cf816af 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,9 @@ "react-dom": "^19.1.0", "which": "^5.0.0" }, + "optionalDependencies": { + "electron-liquid-glass": "^1.1.1" + }, "devDependencies": { "@types/node": "^22.10.0", "@types/react": "^19.1.0", From 6b39639f71308a45b54c3a20e9125287d1f065e2 Mon Sep 17 00:00:00 2001 From: Johnny Huynh <27847622+johnnyhuy@users.noreply.github.com> Date: Tue, 18 Aug 2026 22:39:16 +1000 Subject: [PATCH 2/4] feat(brand): Hoist mark, app icons, and Rigging Yard theme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Adds the Hoist hook + housing mark (SVG, icns, ico, PNGs at all sizes electron-builder needs for mac/win/linux bundle packaging) under build/. - Adds docs/brand/ — reference mark, design tokens, and a sandbox HTML page for visual review of the brand at rest. - Points src/renderer/public/icon.svg at the legacy rounded variant so the in-renderer chrome still resolves when no app icon is loaded. - Replaces the 1Password-inspired 'Knox' palette with 'Rigging Yard': warm cream on graphite, safety-orange signal accent, mint/sky/danger status colors. Swaps Inter for Manrope. - Adds a small dev-only theme picker that flips the accent through nine colorways (data-theme on ) so reviewers can compare variants without rebuilding. - Wires icon paths into electron-builder.yml for all three platforms. --- build/icon-rounded.svg | 22 + build/icon.icns | Bin 0 -> 45819 bytes build/icon.ico | Bin 0 -> 372526 bytes build/icon.icon/Assets/hoist-hook.png | Bin 0 -> 17750 bytes build/icon.icon/Assets/hoist-housing.png | Bin 0 -> 11992 bytes build/icon.icon/icon.json | 69 +++ build/icon.png | Bin 0 -> 34271 bytes build/icon.svg | 22 + build/icons/1024x1024.png | Bin 0 -> 34271 bytes build/icons/128x128.png | Bin 0 -> 3758 bytes build/icons/16x16.png | Bin 0 -> 557 bytes build/icons/24x24.png | Bin 0 -> 787 bytes build/icons/256x256.png | Bin 0 -> 7483 bytes build/icons/32x32.png | Bin 0 -> 1028 bytes build/icons/48x48.png | Bin 0 -> 1443 bytes build/icons/512x512.png | Bin 0 -> 16068 bytes build/icons/64x64.png | Bin 0 -> 1908 bytes build/layers/hook.svg | 15 + build/layers/housing.svg | 6 + docs/brand/index.html | 557 +++++++++++++++++++++++ docs/brand/mark.svg | 5 + docs/brand/tokens.css | 27 ++ electron-builder.yml | 5 + src/renderer/index.html | 7 +- src/renderer/public/icon.svg | 22 + src/renderer/styles/components.css | 19 +- src/renderer/styles/layout.css | 31 +- src/renderer/styles/tokens.css | 84 ++-- src/renderer/vite-env.d.ts | 1 + 29 files changed, 851 insertions(+), 41 deletions(-) create mode 100644 build/icon-rounded.svg create mode 100644 build/icon.icns create mode 100644 build/icon.ico create mode 100644 build/icon.icon/Assets/hoist-hook.png create mode 100644 build/icon.icon/Assets/hoist-housing.png create mode 100644 build/icon.icon/icon.json create mode 100644 build/icon.png create mode 100644 build/icon.svg create mode 100644 build/icons/1024x1024.png create mode 100644 build/icons/128x128.png create mode 100644 build/icons/16x16.png create mode 100644 build/icons/24x24.png create mode 100644 build/icons/256x256.png create mode 100644 build/icons/32x32.png create mode 100644 build/icons/48x48.png create mode 100644 build/icons/512x512.png create mode 100644 build/icons/64x64.png create mode 100644 build/layers/hook.svg create mode 100644 build/layers/housing.svg create mode 100644 docs/brand/index.html create mode 100644 docs/brand/mark.svg create mode 100644 docs/brand/tokens.css create mode 100644 src/renderer/public/icon.svg create mode 100644 src/renderer/vite-env.d.ts diff --git a/build/icon-rounded.svg b/build/icon-rounded.svg new file mode 100644 index 0000000..7e437ac --- /dev/null +++ b/build/icon-rounded.svg @@ -0,0 +1,22 @@ + + Hoist app icon (legacy rounded) + Pre-masked variant for legacy icns/png fallbacks where the platform does not apply the icon mask. + + + + + + diff --git a/build/icon.icns b/build/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..4a4d87442f52ad9783bbdaf3ebec6f92190ba77f GIT binary patch literal 45819 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 literal 0 HcmV?d00001 diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1dea32f83bb31f06fb9552683f87ec893330c29e GIT binary patch literal 372526 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 E|1?Lt1poj5 literal 0 HcmV?d00001 diff --git a/build/icon.icon/Assets/hoist-hook.png b/build/icon.icon/Assets/hoist-hook.png new file mode 100644 index 0000000000000000000000000000000000000000..f25ca7e9402dcb16bc3ff2d508f225431b78311b GIT binary patch literal 17750 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 TxT3LuhCS|*;V%Uj?H>FurAGdk literal 0 HcmV?d00001 diff --git a/build/icon.icon/Assets/hoist-housing.png b/build/icon.icon/Assets/hoist-housing.png new file mode 100644 index 0000000000000000000000000000000000000000..9e91a793291d6c3a1696e8641e48b6111f215be3 GIT binary patch literal 11992 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 QtP;WAQoNaQ{lU}!2a$GdLI3~& literal 0 HcmV?d00001 diff --git a/build/icon.svg b/build/icon.svg new file mode 100644 index 0000000..3d0b036 --- /dev/null +++ b/build/icon.svg @@ -0,0 +1,22 @@ + + Hoist app icon + A minimal safety-orange pulley housing suspended above a warm-white hook on a midnight field. Full-bleed square; the platform applies the icon mask. + + + + + + diff --git a/build/icons/1024x1024.png b/build/icons/1024x1024.png new file mode 100644 index 0000000000000000000000000000000000000000..401ad95b72c0e2cb2061e42c08c39fc6baae79fc GIT binary patch literal 34271 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 QtP;WAQoNaQ{lU}!2a$GdLI3~& literal 0 HcmV?d00001 diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8c23a98f37f6622f190b3c5f1671ef3b60bc91 GIT binary patch literal 3758 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 Y2M?P-t6awtasU7T07*qoM6N<$g541BO#lD@ literal 0 HcmV?d00001 diff --git a/build/icons/16x16.png b/build/icons/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..068f940a0bb14dd8b777976bf6999add15d642d3 GIT binary patch literal 557 zcmV+|0@D47P)Dk@OeP7=9+#{+=i+iF^ z#UBA8KrID&E_4I%;o~AjctBj#j3w8Ru3xq# z*h6JVLT)%)9DA3;hgw*PF96UUInS@(Nt=b|6pID8-*J%R4Gwj|0GY|>01USW_|(|I z+r)NR9SON%-8~(vcUZXS+T#LGm;dl`WwYeY6dxR;?8l?dCOVo9R5qwaJmrzt%vCnn z$SNt%w~7;6dG0N3ko8MbmdpSkV1!`J&bPL<9${wk6?60Nc{uhA-_o$Gf(Zn9JUYy_ z3g3RNGx*>MH}BjcSXXaNR%Rd~+`TF9i=1TkrL+b$^*wdSja v;i^flCFVp;KM*U_sfGu{L`{Ec^~dyIUs8^`T6-O+00000NkvXXu0mjfD?axu literal 0 HcmV?d00001 diff --git a/build/icons/24x24.png b/build/icons/24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..00d7b009f1e3da9738eefccace60932517b096dc GIT binary patch literal 787 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 t|uoCoLT z3Z_nP4LZ6cNdlN6!M9dTPDawU1|2BPmDVW}6&c#AMls@)e$UXGokdQ=F{~zHDJnWKYX-1s zr{Eehq@~&`Q^&vdIS6;h`T!tZhprwirmF-m!d>B$7G=X%X~Si{H#RUl$!zp?TG z=(qK7yAxI~%N=~HtFqy;q-nc>NS~6jf)xfh3SQJ(h}E6|O}8d9hG89qQ&6`fcgba* zXfhwZk3UZPnV83;R%?`!piF|?5b@ahIc8sTOAMV3&PdXE${VZSTKUdJX-z$uUWJRaz+-lRZ>KrQYPg{!1#_b- zNL@-Ls{wL=1?rNs-S&`zA{HB%1Qa1!3ONRlr%W2`luh~w2X$>v_sege!>o<^2zu@@ YiUxgE!ZEnMfGGqh$g0XzNSOxzAAUv#pa1{> literal 0 HcmV?d00001 diff --git a/build/icons/32x32.png b/build/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..32f13f96010dcc161e4388934044676cc0f38f22 GIT binary patch literal 1028 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 Mb7h&rr$!(DKcP1gLI3~& literal 0 HcmV?d00001 diff --git a/build/icons/64x64.png b/build/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..54d77051869eb6f4748040b47ade896bae0f75f2 GIT binary patch literal 1908 zcmV-)2aEWLP)DJ%J=j?gT|NM9Nyxn_5DaCk*h&a>cFDI-vim25BZUvb@(zq2P;GFdUjhCwc z@Z^7v?%O>^(gE}d+)&^{sS`@G9qMjwIIALbP{t}35t%*DQ>H|{3bMecy3Y~?1M~=W zD$K6#md47ljL=3EmztaBa_3Yl;XpJxZyAa_5q|G-d#aqN3r6jS&VbqJ^Vev$@JUe1 zqp#31iZxrP%H_^|;st6F`2^H(^qZ!eEMy5e4J^(rsVZ!X2x;^&_iFIgo8ffjMOJ;#B^tY|Pb zHHGsZyobZ#7_~eQ2(VR>%Q3rh&?^sYgcGdE zV#t7`IN`4)^T;*r`iaFjBg4I888%`9qPCYDEL-Y8_jn@ zrsOkZz$ZO}rihpfKdkBGO#6Uo`3xEGr|bQE(lcb1mWaGr*UQ_DeWvC#WI!;a*!F>+ znhx{6kTYJQi^YX z?+2VZeMVO{Hzk?<6+b85ZjZW-XhJHT zZ0k-=e|Sz;w&R88h>J6}-;adp2CVQF^6NdjdE?cW$;wQhP@Vq%eztCZk@k*}qkLvY z8pX?(nk{hzrW&w#Q9g$%_wm)zjcotM7LNS!EfNwECRDf8-_BcazoU!i=6KAMsKZnP zo?O2c`;7md(`9C)v9h>u!u3D?SDh~A$&T*Rds7Vv2K7thjEuAi*H27{*Tn*X=q|EM zHNe;6*TssLFP?CHZ_zSctl8IUNK+(CHQ;o$ek6bT$#tZrMt=R!?M~&X4PVs7t47Ib zCZ-xtSKmNgeZz=YQc@xn%(_s1DeY)5e z9$m@dclPs0ex9zZ;E{*;^TFS+=JP9bWuxUX8`Jj!Hk*y(?;d1P!9rb`Qi_`MA9MLi zEdcooA7a^(0%Vj&Z09drqGWv;p^!NTA7dddcXp52?+HDamBG=!RFX1h_LS;(c6C#- zzKpAl*UXeP8n-n>n$6C7?fOkNZQVg@YulvjwzT+pX3ICN=sXH;X((<*Bl+2y3p~EA zl)wMu-SJ^ntAuX~nrA6<-wBpm|HHb;^(7m=vED%;cBN97+5Q&oKqhr>ZuMml!; z$S1nJy?q>c?-<{IWj8@3`=!xvI~t$v!C zt`i)H?rLvLG*u{oxY9gVQ0V8V|8Hu$e2oulN-3qn?3!*hR-=%Yl~PKSQizDS+@30+ zc)EpIfk0KKuW_YPN@)OUm@-h4pSNOTGU2_UWK*Gt_ab;Y2uOTLtKkYGV|EDiscS zyL?SYb!FpSo_4x(N=4LbF+4@qD&&=J-_?U-U7jA(fO{Vh5og+ig`(ukAgdLm31ngL u`g|1VQ*d3N891Rdb*TGRQ%$7n^Zy2MhD=P^Cw@c#0000 + + + + diff --git a/build/layers/housing.svg b/build/layers/housing.svg new file mode 100644 index 0000000..501ef81 --- /dev/null +++ b/build/layers/housing.svg @@ -0,0 +1,6 @@ + + + diff --git a/docs/brand/index.html b/docs/brand/index.html new file mode 100644 index 0000000..020b9d0 --- /dev/null +++ b/docs/brand/index.html @@ -0,0 +1,557 @@ + + + + + + + Hoist Brand Yard + + + + + + + + +
+
hoistbrand yard 01
+ +
+ +
+
+
+
Identity system / 2026
+

Lift your
tools into
place.

+

Hoist is the setup rig for AI coding tools. Its identity feels engineered, dependable and active: less black-box magic, more visible machinery.

+
Industrial, not heavyWarm, not cuteTechnical, not sterile
+
+
+ Hoist app icon: a cream gantry lifting an orange load + 1024 × 1024 / MASTER SVG +
+
+ +
+
+
01 / THE LIFT GATE

A gantry, an H, and one clear direction.

+
+
+
hoist
+
Primary lockupCanvas on midnight
+
+
+
+
Signal fieldDark mark
+
+
+
+
UtilityOne colour
+
+
+
+
+ +
+
+
01A / FACE LAB

A helpful face, built from lifting machinery.

+
+
+ +
+
+
+ +
+
+
01B / MECHANICAL LAB

One product. Six ways to lift.

+
+
+ + + + + + + + + + + +
+ + +
+
+
+ +
+
+
02 / RIGGING YARD

Warm canvas. Cold steel. A flash of safety orange.

+
+
Midnight 950#101820 / primary field
+
Canvas 100#F5F0E6 / light field
+
Steel 800#24313D / raised
+
Canvas 200#E6DFD1 / border
+
Signal 500#F06A3C / action
+
Mint 500#52C7A5 / healthy
+
Sky 500#60A5FA / information
+
Danger 500#E65353 / blocked
+
+
+
+ +
+
+
03 / VOICE & TYPE

Human instructions, machine-readable details.

+
+
Aa
Hoist.
Manrope 800Display / UI / guidance
+
$ hoist
doctor
all clear
DM Mono 500Commands / versions / metadata
+
+
+
+ +
+
+
04 / IN PRODUCT

The brand earns its keep inside the tool.

+
+
+
hoist
LOCAL VAULT / UNLOCKED
+
+ +
+

Your toolchain

Harnesses, runtimes and package managers detected on this machine.

+
C
Claude Code2.1.226 / npm global
installed
+
O
OpenCode1.2.8 / Homebrew
installed
+
›_
Codex0.101.0 / npm global
installed
+
+
+
+
+
+
+ +
+
+
05 / OPERATING RULES

Three checks keep the system recognisably Hoist.

+
+
01

Show the machinery

Name files, paths, versions and consequences. Confidence comes from visible work, not vague automation.

+
02

Signal with purpose

Orange means action. Mint means healthy. Keep chromatic colour scarce enough that every flash carries meaning.

+
03

Use plain verbs

Install. Connect. Check. Repair. Hoist sounds capable and direct, never clever at the user’s expense.

+
+
+
+
+ +
Hoist identity / direction 01Built for echoHello
+ + + diff --git a/docs/brand/mark.svg b/docs/brand/mark.svg new file mode 100644 index 0000000..399627d --- /dev/null +++ b/docs/brand/mark.svg @@ -0,0 +1,5 @@ + + Hoist mark + + + diff --git a/docs/brand/tokens.css b/docs/brand/tokens.css new file mode 100644 index 0000000..3d1f8f5 --- /dev/null +++ b/docs/brand/tokens.css @@ -0,0 +1,27 @@ +:root { + --hoist-midnight-950: #101820; + --hoist-midnight-900: #17212b; + --hoist-midnight-800: #24313d; + --hoist-midnight-700: #354553; + --hoist-canvas-50: #fffdf6; + --hoist-canvas-100: #f5f0e6; + --hoist-canvas-200: #e6dfd1; + --hoist-canvas-300: #cec5b5; + --hoist-signal-500: #f06a3c; + --hoist-signal-400: #ff895a; + --hoist-signal-300: #ffb056; + --hoist-mint-500: #52c7a5; + --hoist-sky-500: #60a5fa; + --hoist-danger-500: #e65353; + + --hoist-bg: var(--hoist-midnight-950); + --hoist-panel: var(--hoist-midnight-900); + --hoist-panel-raised: var(--hoist-midnight-800); + --hoist-text: var(--hoist-canvas-50); + --hoist-text-muted: #aeb7bc; + --hoist-border: rgba(255, 253, 246, 0.12); + --hoist-action: var(--hoist-signal-500); + --hoist-success: var(--hoist-mint-500); + --hoist-info: var(--hoist-sky-500); + --hoist-error: var(--hoist-danger-500); +} diff --git a/electron-builder.yml b/electron-builder.yml index c67570f..1fa23a7 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -5,15 +5,20 @@ directories: files: - dist/**/* mac: + icon: build/icon.icon target: - dmg - zip artifactName: ${name}-${version}-mac-${arch}.${ext} +dmg: + icon: build/icon.icns win: + icon: build/icon.ico target: - nsis artifactName: ${name}-${version}-win-${arch}.${ext} linux: + icon: build/icons target: - AppImage artifactName: ${name}-${version}-linux-${arch}.${ext} diff --git a/src/renderer/index.html b/src/renderer/index.html index 29e742d..d851906 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -3,9 +3,10 @@ - - - + + + + Hoist diff --git a/src/renderer/public/icon.svg b/src/renderer/public/icon.svg new file mode 100644 index 0000000..7e437ac --- /dev/null +++ b/src/renderer/public/icon.svg @@ -0,0 +1,22 @@ + + Hoist app icon (legacy rounded) + Pre-masked variant for legacy icns/png fallbacks where the platform does not apply the icon mask. + + + + + + diff --git a/src/renderer/styles/components.css b/src/renderer/styles/components.css index 9d655e6..331dfbe 100644 --- a/src/renderer/styles/components.css +++ b/src/renderer/styles/components.css @@ -186,4 +186,21 @@ color: currentColor; } .icon svg { display: block; } -.icon-lg { width: 20px; height: 20px; } \ No newline at end of file +.icon-lg { width: 20px; height: 20px; } +/* Usage meters — harness subscription windows + provider credits */ +.hoist-usage-row { margin-bottom: 10px; } +.hoist-usage-row-head { + display: flex; justify-content: space-between; align-items: baseline; + font-size: 12px; margin-bottom: 4px; +} +.hoist-usage-bar { + height: 6px; border-radius: var(--radius-pill); + background: var(--surface-2); overflow: hidden; +} +.hoist-usage-bar-fill { + height: 100%; border-radius: var(--radius-pill); + background: var(--accent); +} +.hoist-usage-bar-fill.is-hot { background: var(--status-bad); } +.hoist-usage-reset { font-size: 11px; color: var(--text-subtle); margin-top: 2px; } +.hoist-usage-note { font-size: 12px; color: var(--text-muted); margin-bottom: 8px; } diff --git a/src/renderer/styles/layout.css b/src/renderer/styles/layout.css index 9afd06b..f7fc96b 100644 --- a/src/renderer/styles/layout.css +++ b/src/renderer/styles/layout.css @@ -12,6 +12,21 @@ color: var(--text); } +.hoist-dev-theme { + position: fixed; + right: 12px; + bottom: 12px; + z-index: 100; + background: var(--surface-2); + color: var(--text-muted); + border: 1px solid var(--border); + border-radius: var(--radius-control); + font: 500 11px var(--font-mono); + padding: 4px 6px; + opacity: 0.5; +} +.hoist-dev-theme:hover { opacity: 1; } + .hoist-body { display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr) var(--detail-width); @@ -85,7 +100,7 @@ body.is-col-resizing * { .hoist-mark { display: inline-flex; align-items: center; justify-content: center; - color: var(--accent); + width: 20px; height: 20px; border-radius: var(--radius-tile); overflow: hidden; } .hoist-brand { font-weight: 700; font-size: 14px; letter-spacing: var(--tracking-display); @@ -172,9 +187,10 @@ body.is-col-resizing * { } .hoist-account-mark { width: 28px; height: 28px; border-radius: var(--radius-control); - background: var(--accent); color: var(--text-on-accent); + background: transparent; color: var(--text-on-accent); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; + overflow: hidden; } .hoist-account-meta { flex: 1; min-width: 0; } .hoist-account-name { font-size: 13px; font-weight: 600; } @@ -775,13 +791,14 @@ body.is-col-resizing * { width: 32px; height: 32px; border-radius: var(--radius-tile); - background: var(--accent); + background: transparent; color: var(--text-on-accent); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; + overflow: hidden; } .hoist-rail-section { @@ -1991,3 +2008,11 @@ select.input { border-radius: var(--radius-control); background: var(--surface-1); } + +/* macOS liquid glass — panes go translucent so the window vibrancy reads through */ +html[data-platform='darwin'] .hoist, +html[data-platform='darwin'] .hoist-main { background: transparent; } +html[data-platform='darwin'] .hoist-topbar { background: rgba(18, 18, 20, 0.55); } +html[data-platform='darwin'] .hoist-sidebar, +html[data-platform='darwin'] .hoist-rail, +html[data-platform='darwin'] .hoist-rail.hoist-rail { background: rgba(26, 26, 29, 0.42); } diff --git a/src/renderer/styles/tokens.css b/src/renderer/styles/tokens.css index 3d98d5f..5008a91 100644 --- a/src/renderer/styles/tokens.css +++ b/src/renderer/styles/tokens.css @@ -1,18 +1,17 @@ -/* Hoist — 1Password-inspired design tokens +/* Hoist — Rigging Yard design tokens * * Single source of color, type, spacing, and shape truth. - * Theme: "Knox-like" — deep-space canvas, hairline borders, one chromatic - * accent (brand blue), pill primary CTAs, sharp cards. + * Theme: midnight steel, warm canvas, and a safety-orange action signal. */ :root { - /* Surface ladder */ - --surface-canvas: #1d1d21; /* page background */ - --surface-recessed: #0f0f12; /* deeper than canvas — rail backdrop, terminal canvas */ - --surface-1: #26262c; /* sidebar / panel backgrounds */ - --surface-2: #2f2f37; /* elevated surface (hovered tile, input) */ - --surface-3: #393943; /* cards / list rows */ - --surface-4: #43434f; /* active row / focused surface */ + /* Surface ladder — neutral graphite, no blue cast */ + --surface-canvas: #121214; /* page background */ + --surface-recessed: #0c0c0e; /* deeper than canvas — rail backdrop, terminal canvas */ + --surface-1: #1a1a1d; /* sidebar / panel backgrounds */ + --surface-2: #232326; /* elevated surface (hovered tile, input) */ + --surface-3: #2c2c30; /* cards / list rows */ + --surface-4: #35353a; /* active row / focused surface */ /* Rail + sidebar widths */ --rail-width: 56px; /* icon-only nav rail (Library, default) */ @@ -20,39 +19,39 @@ --detail-width: 400px; /* right inspector rail (resizable) */ /* Hairlines & dividers */ - --border: #34343a; - --border-strong: #43434f; - --border-soft: rgba(255, 255, 255, 0.04); + --border: #2a2b2e; + --border-strong: #3d3d42; + --border-soft: rgba(255, 253, 246, 0.05); /* Text */ - --text: #f4f4f6; /* headlines, primary */ - --text-muted: #b4b4b8; - --text-subtle: #7e7e84; - --text-on-accent: #ffffff; + --text: #fffdf6; /* headlines, primary */ + --text-muted: #b0aca4; + --text-subtle: #7d7a73; + --text-on-accent: #121214; - /* Single chromatic accent */ - --accent: #157bf3; /* brand blue, used surgically */ - --accent-soft: rgba(21, 123, 243, 0.14); - --accent-strong: #2f8af6; + /* Safety signal — reserved for actions and focus */ + --accent: #f06a3c; + --accent-soft: rgba(240, 106, 60, 0.14); + --accent-strong: #ff895a; /* Status — 5 colors mapped to the design's harness state vocabulary. Mapping: installed → ok, installing → info, available → accent, deprecated → merged, failed → bad. */ - --status-ok: #2da44e; /* installed */ - --status-ok-soft: rgba(45, 164, 78, 0.14); - --status-info: #157bf3; /* installing — reuses accent */ - --status-info-soft: rgba(21, 123, 243, 0.14); - --status-accent: #3ec1f3; /* available — cyan */ - --status-accent-soft: rgba(62, 193, 243, 0.14); + --status-ok: #52c7a5; /* installed */ + --status-ok-soft: rgba(82, 199, 165, 0.14); + --status-info: #60a5fa; /* installing */ + --status-info-soft: rgba(96, 165, 250, 0.14); + --status-accent: #ffb056; /* available */ + --status-accent-soft: rgba(255, 176, 86, 0.14); --status-merged: #a371f7; /* deprecated / merged */ --status-merged-soft: rgba(163, 113, 247, 0.14); - --status-warn: #d97a00; - --status-warn-soft: rgba(217, 122, 0, 0.14); - --status-bad: #cf222e; /* failed */ - --status-bad-soft: rgba(207, 34, 46, 0.14); + --status-warn: #ffb056; + --status-warn-soft: rgba(255, 176, 86, 0.14); + --status-bad: #e65353; /* failed */ + --status-bad-soft: rgba(230, 83, 83, 0.14); - /* Typography — Inter with the ss03 stylistic set */ - --font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, + /* Typography — approachable guidance with machine-readable detail */ + --font-sans: 'Manrope', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-mono: 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace; --tracking-display: -0.04em; @@ -75,6 +74,18 @@ --space-8: 40px; } +/* Colorway exploration — accent swaps from the icon colorway matrix. + Picked via data-theme on (dev theme picker); default stays Rigging Yard orange. */ +[data-theme='signal'] { --accent: #ff7a1a; --accent-strong: #ff9440; --accent-soft: rgba(255, 122, 26, 0.14); --text-on-accent: #121214; } +[data-theme='amber'] { --accent: #e09a3a; --accent-strong: #f0ac54; --accent-soft: rgba(224, 154, 58, 0.14); --text-on-accent: #121214; } +[data-theme='oxide'] { --accent: #c45a32; --accent-strong: #d67450; --accent-soft: rgba(196, 90, 50, 0.16); --text-on-accent: #fffdf6; } +[data-theme='safety'] { --accent: #f5b301; --accent-strong: #ffc62e; --accent-soft: rgba(245, 179, 1, 0.14); --text-on-accent: #121214; } +[data-theme='cobalt'] { --accent: #3b5bdb; --accent-strong: #5b76e8; --accent-soft: rgba(59, 91, 219, 0.16); --text-on-accent: #fffdf6; } +[data-theme='teal'] { --accent: #159a8c; --accent-strong: #2bb3a4; --accent-soft: rgba(21, 154, 140, 0.16); --text-on-accent: #fffdf6; } +[data-theme='plum'] { --accent: #8a5bd6; --accent-strong: #a078e2; --accent-soft: rgba(138, 91, 214, 0.16); --text-on-accent: #fffdf6; } +[data-theme='coral'] { --accent: #ff6b57; --accent-strong: #ff8774; --accent-soft: rgba(255, 107, 87, 0.14); --text-on-accent: #121214; } +[data-theme='lime'] { --accent: #a8c638; --accent-strong: #bdd64f; --accent-soft: rgba(168, 198, 56, 0.14); --text-on-accent: #121214; } + * { box-sizing: border-box; } @@ -94,6 +105,11 @@ html, body, #root { text-rendering: optimizeLegibility; } +/* macOS liquid glass — the window's native vibrancy shows through transparent panes */ +html[data-platform='darwin'], html[data-platform='darwin'] body, html[data-platform='darwin'] #root { + background: transparent; +} + /* Universal focus ring — single brand blue, never the OS default */ *:focus-visible { outline: 2px solid var(--accent); @@ -113,4 +129,4 @@ html, body, #root { button { font-family: inherit; font-feature-settings: inherit; -} \ No newline at end of file +} diff --git a/src/renderer/vite-env.d.ts b/src/renderer/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/renderer/vite-env.d.ts @@ -0,0 +1 @@ +/// From 2ccea02f42c3f79e4e3bfba1bad4eae7da83dbca Mon Sep 17 00:00:00 2001 From: Johnny Huynh <27847622+johnnyhuy@users.noreply.github.com> Date: Tue, 18 Aug 2026 22:39:35 +1000 Subject: [PATCH 3/4] feat(usage): harness and provider usage tracking with UI panels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a usage layer that surfaces subscription-window burn and remaining credits directly in the app, so users can see at a glance whether their harnesses and provider keys still have headroom. Harness side (reads the existing OAuth credentials, never asks for new ones): - Claude Code: resolves credentials from env / Keychain / ~/.claude/.credentials.json; refreshes via Anthropic's token endpoint on expiry; calls /api/oauth/usage and maps the limits[] (and the legacy five_hour / seven_day_* buckets) to session and weekly windows; surfaces extra_usage credits when enabled. - Codex: reads ~/.codex/auth.json, calls chatgpt.com/backend-api/ wham/usage, maps primary_window / secondary_window to a 5h session and a weekly window, surfaces plan_type and credits. Provider side (BYOK keys already in the vault): - OpenRouter: GET /api/v1/auth/key → limit / limit_remaining / usage. - DeepSeek: GET /user/balance → balance_infos[0].total_balance. - Other providers return 'unavailable' cleanly rather than throwing. Wired end-to-end: - src/shared/channels.ts: usageRun channel. - src/main/ipc.ts: usageRun handler pulls API keys from the active secret backend when the source is a provider. - src/preload: typed UsageRequest/UsageResult on window.hoist.usage.run. - src/renderer/App.tsx: HarnessUsageOverview on the Watchtower rail (live, auto-refresh on open), and a UsagePanel on the harness and key detail rails. Each renders window-burn bars (turn red at 90%), reset times, plan badge, and credits line. --- src/main/ipc.ts | 25 ++++ src/main/usage/claudeCode.ts | 233 +++++++++++++++++++++++++++++++++++ src/main/usage/codex.ts | 97 +++++++++++++++ src/main/usage/index.ts | 17 +++ src/main/usage/providers.ts | 86 +++++++++++++ src/main/usage/types.ts | 37 ++++++ src/preload/api.ts | 33 +++++ src/preload/index.ts | 3 + src/renderer/App.tsx | 212 ++++++++++++++++++++++++++++++- src/renderer/main.tsx | 2 + src/shared/channels.ts | 1 + 11 files changed, 743 insertions(+), 3 deletions(-) create mode 100644 src/main/usage/claudeCode.ts create mode 100644 src/main/usage/codex.ts create mode 100644 src/main/usage/index.ts create mode 100644 src/main/usage/providers.ts create mode 100644 src/main/usage/types.ts diff --git a/src/main/ipc.ts b/src/main/ipc.ts index c2da46f..36456e3 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -4,6 +4,7 @@ import { createSafeStorageBackend } from './secrets/safestorage' import { maskSecret } from './secrets/backend' import type { SecretBackend } from './secrets/backend' import { runProbe } from './probes' +import { runHarnessUsage, runProviderUsage } from './usage' import { libraryDiscover } from './library' import { discoverAll, installHarness, uninstallHarness } from './installer' import { changelogForRange, checkHarnessVersions } from './installer/versions' @@ -44,6 +45,10 @@ interface ProbeRequest { baseUrl?: string } +type UsageRequest = + | { source: 'harness'; harnessId: string } + | { source: 'provider'; providerId: string; secretId?: string } + interface GatewayApplyRequest { gatewayId: string | null providerId: string @@ -321,6 +326,26 @@ export function registerIpcHandlers(): void { } }) + ipcMain.handle(CHANNELS.usageRun, async (_evt, req: UsageRequest) => { + try { + if (req.source === 'harness') { + const result = await runHarnessUsage(req.harnessId) + return { ok: true as const, result } + } + let apiKey: string | undefined + if (req.secretId) { + apiKey = (await getBackend().get(req.secretId)) ?? undefined + } + if (!apiKey) { + return { ok: false as const, error: 'No API key available for usage lookup.' } + } + const result = await runProviderUsage(req.providerId, apiKey) + return { ok: true as const, result } + } catch (err) { + return { ok: false as const, error: errMsg(err) } + } + }) + ipcMain.handle(CHANNELS.clipboardRead, () => { try { const text = clipboard.readText().trim() diff --git a/src/main/usage/claudeCode.ts b/src/main/usage/claudeCode.ts new file mode 100644 index 0000000..240f1c6 --- /dev/null +++ b/src/main/usage/claudeCode.ts @@ -0,0 +1,233 @@ +import { execFile } from 'child_process' +import { readFile, writeFile } from 'fs/promises' +import { homedir, userInfo } from 'os' +import { join } from 'path' +import { promisify } from 'util' +import { errorResult, normalizePercent, unavailable, type UsageResult, type UsageWindow } from './types' + +const execFileAsync = promisify(execFile) + +const USAGE_URL = 'https://api.anthropic.com/api/oauth/usage' +const TOKEN_URL = 'https://console.anthropic.com/v1/oauth/token' +const OAUTH_CLIENT_ID = '9d1c250a-e61b-44d9-88ed-5944d1962f5e' +const OAUTH_BETA = 'oauth-2025-04-20' +const KEYCHAIN_SERVICE = 'Claude Code-credentials' +const TIMEOUT_MS = 5000 + +interface ClaudeOauth { + accessToken?: string + refreshToken?: string + expiresAt?: number + refreshTokenExpiresAt?: number + subscriptionType?: string + scopes?: string[] +} + +type CredentialSource = + | { kind: 'env'; oauth: ClaudeOauth } + | { kind: 'keychain'; oauth: ClaudeOauth; raw: Record; account: string } + | { kind: 'file'; oauth: ClaudeOauth; raw: Record; path: string } + +function credentialsPath(): string { + return join(homedir(), '.claude', '.credentials.json') +} + +async function readKeychainCredentials(): Promise { + if (process.platform !== 'darwin') return null + try { + const { stdout } = await execFileAsync('security', ['find-generic-password', '-s', KEYCHAIN_SERVICE, '-w']) + const raw = JSON.parse(stdout.trim()) as Record + const oauth = raw.claudeAiOauth as ClaudeOauth | undefined + if (!oauth?.accessToken) return null + let account = userInfo().username + try { + const meta = await execFileAsync('security', ['find-generic-password', '-s', KEYCHAIN_SERVICE]) + const m = /"acct"="([^"]+)"/.exec(meta.stderr) + if (m) account = m[1] + } catch { /* fall back to username */ } + return { kind: 'keychain', oauth, raw, account } + } catch { + return null + } +} + +async function readFileCredentials(): Promise { + try { + const path = credentialsPath() + const raw = JSON.parse(await readFile(path, 'utf8')) as Record + const oauth = raw.claudeAiOauth as ClaudeOauth | undefined + if (!oauth?.accessToken) return null + return { kind: 'file', oauth, raw, path } + } catch { + return null + } +} + +async function resolveCredentials(): Promise { + const envToken = process.env.CLAUDE_CODE_OAUTH_TOKEN + if (envToken) return { kind: 'env', oauth: { accessToken: envToken } } + return (await readKeychainCredentials()) ?? (await readFileCredentials()) +} + +async function writeBack(source: CredentialSource, oauth: ClaudeOauth): Promise { + const raw = { ...source.kind === 'env' ? {} : source.raw, claudeAiOauth: { ...(source.kind === 'env' ? {} : source.raw.claudeAiOauth as object), ...oauth } } + if (source.kind === 'keychain') { + await execFileAsync('security', [ + 'add-generic-password', '-U', '-s', KEYCHAIN_SERVICE, '-a', source.account, '-w', JSON.stringify(raw), + ]) + } else if (source.kind === 'file') { + await writeFile(source.path, JSON.stringify(raw), { mode: 0o600 }) + } +} + +type RefreshOutcome = + | { status: 'ok'; oauth: ClaudeOauth } + | { status: 'rate_limited' | 'failed' } + +async function refreshTokens(source: CredentialSource): Promise { + if (source.kind === 'env' || !source.oauth.refreshToken) return { status: 'failed' } + const controller = new AbortController() + const timer = setTimeout(() => controller.abort(), TIMEOUT_MS) + try { + const res = await fetch(TOKEN_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + grant_type: 'refresh_token', + refresh_token: source.oauth.refreshToken, + client_id: OAUTH_CLIENT_ID, + }), + signal: controller.signal, + }) + if (res.status === 429) return { status: 'rate_limited' } + if (!res.ok) return { status: 'failed' } + const data = await res.json() as { access_token?: string; refresh_token?: string; expires_in?: number } + if (!data.access_token || !data.refresh_token) return { status: 'failed' } + const next: ClaudeOauth = { + accessToken: data.access_token, + refreshToken: data.refresh_token, + expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000, + } + await writeBack(source, next) + return { status: 'ok', oauth: next } + } catch { + return { status: 'failed' } + } finally { + clearTimeout(timer) + } +} + +function refreshDetail(outcome: RefreshOutcome): string { + return outcome.status === 'rate_limited' + ? 'Token refresh is rate limited by Anthropic — try again in a minute, or run claude once.' + : 'OAuth token expired and refresh failed — run claude once to re-authenticate.' +} + +function windowFrom(label: string, bucket: unknown): UsageWindow | null { + if (!bucket || typeof bucket !== 'object') return null + const b = bucket as Record + const used = normalizePercent(b.utilization ?? b.percent ?? b.used_percentage) + if (used === null) return null + const resetsAt = typeof b.resets_at === 'string' ? b.resets_at : undefined + return { label, usedPercent: used, resetsAt } +} + +function parseWindows(data: Record): UsageWindow[] { + const windows: UsageWindow[] = [] + if (Array.isArray(data.limits)) { + for (const entry of data.limits as Record[]) { + if (!entry || typeof entry !== 'object') continue + const kind = entry.kind + const scope = entry.scope as { model?: { display_name?: string } } | undefined + const label = kind === 'session' ? '5-hour session' + : kind === 'weekly_all' ? 'Weekly · all models' + : kind === 'weekly_scoped' ? `Weekly · ${scope?.model?.display_name ?? 'scoped'}` + : typeof kind === 'string' ? kind : 'Window' + const w = windowFrom(label, entry) + if (w) windows.push(w) + } + } + if (windows.length === 0) { + const legacy: Array<[string, string]> = [ + ['five_hour', '5-hour session'], + ['seven_day', 'Weekly · all models'], + ['seven_day_sonnet', 'Weekly · Sonnet'], + ['seven_day_opus', 'Weekly · Opus'], + ] + for (const [key, label] of legacy) { + const w = windowFrom(label, data[key]) + if (w) windows.push(w) + } + } + return windows +} + +export async function usageClaudeCode(): Promise { + const checkedAt = new Date().toISOString() + + const source = await resolveCredentials() + if (!source) { + return unavailable('No Claude Code credentials found (Keychain or ~/.claude/.credentials.json).', checkedAt) + } + + let oauth = source.oauth + const expired = typeof oauth.expiresAt === 'number' && oauth.expiresAt < Date.now() + if (expired) { + const outcome = await refreshTokens(source) + if (outcome.status !== 'ok') { + return unavailable(refreshDetail(outcome), checkedAt) + } + oauth = outcome.oauth + } + + const controller = new AbortController() + const timer = setTimeout(() => controller.abort(), TIMEOUT_MS) + try { + const res = await fetch(USAGE_URL, { + method: 'GET', + headers: { + Authorization: `Bearer ${oauth.accessToken}`, + 'anthropic-beta': OAUTH_BETA, + 'User-Agent': 'claude-code/2.0', + }, + signal: controller.signal, + }) + if (res.status === 401 || res.status === 403) { + if (!expired) { + const outcome = await refreshTokens(source) + if (outcome.status === 'ok') { + return usageClaudeCode() + } + return unavailable(refreshDetail(outcome), checkedAt) + } + return unavailable(`Usage endpoint rejected the token (${res.status}) — run claude once to re-authenticate.`, checkedAt) + } + if (res.status === 429) { + return unavailable('Usage endpoint is rate limited — try again in a minute.', checkedAt) + } + if (!res.ok) { + return unavailable(`Unexpected HTTP ${res.status} from the usage endpoint.`, checkedAt) + } + + const data = await res.json() as Record + const windows = parseWindows(data) + + let credits: UsageResult['credits'] + const extra = data.extra_usage as Record | null | undefined + if (extra && extra.is_enabled === true && typeof extra.monthly_limit === 'number') { + const used = typeof extra.used_credits === 'number' ? extra.used_credits : 0 + credits = { balance: Math.round((extra.monthly_limit - used) * 100) / 100, limit: extra.monthly_limit } + } + + if (windows.length === 0 && !credits) { + return unavailable('Usage endpoint returned no quota buckets for this plan.', checkedAt) + } + const plan = (source.kind !== 'env' ? (source.raw.claudeAiOauth as ClaudeOauth | undefined)?.subscriptionType : undefined) + ?? oauth.subscriptionType + return { available: true, plan, windows, credits, checkedAt } + } catch (err) { + return errorResult(err, TIMEOUT_MS, checkedAt) + } finally { + clearTimeout(timer) + } +} diff --git a/src/main/usage/codex.ts b/src/main/usage/codex.ts new file mode 100644 index 0000000..3163aed --- /dev/null +++ b/src/main/usage/codex.ts @@ -0,0 +1,97 @@ +import { readFile } from 'fs/promises' +import { homedir } from 'os' +import { join } from 'path' +import { errorResult, normalizePercent, unavailable, type UsageResult, type UsageWindow } from './types' + +const USAGE_URL = 'https://chatgpt.com/backend-api/wham/usage' +const TIMEOUT_MS = 5000 + +interface CodexAuth { + tokens?: { + access_token?: string + account_id?: string + } +} + +function windowLabel(limitWindowSeconds: unknown): string { + if (typeof limitWindowSeconds !== 'number') return 'Window' + if (limitWindowSeconds <= 6 * 3600) return '5-hour session' + if (limitWindowSeconds >= 6 * 86400) return 'Weekly' + return `${Math.round(limitWindowSeconds / 3600)}h window` +} + +function windowFrom(bucket: unknown): UsageWindow | null { + if (!bucket || typeof bucket !== 'object') return null + const b = bucket as Record + const used = normalizePercent(b.used_percent) + if (used === null) return null + const resetsAt = typeof b.reset_at === 'number' + ? new Date(b.reset_at * 1000).toISOString() + : undefined + return { label: windowLabel(b.limit_window_seconds), usedPercent: used, resetsAt } +} + +export async function usageCodex(): Promise { + const checkedAt = new Date().toISOString() + + let auth: CodexAuth + try { + auth = JSON.parse(await readFile(join(homedir(), '.codex', 'auth.json'), 'utf8')) as CodexAuth + } catch { + return unavailable('No Codex credentials found (~/.codex/auth.json).', checkedAt) + } + + const token = auth.tokens?.access_token + if (!token) { + return unavailable('No access token in ~/.codex/auth.json — sign in with the Codex CLI.', checkedAt) + } + + const controller = new AbortController() + const timer = setTimeout(() => controller.abort(), TIMEOUT_MS) + try { + const headers: Record = { + Authorization: `Bearer ${token}`, + 'User-Agent': 'codex-cli', + Accept: 'application/json', + } + if (auth.tokens?.account_id) headers['ChatGPT-Account-Id'] = auth.tokens.account_id + + const res = await fetch(USAGE_URL, { method: 'GET', headers, signal: controller.signal }) + if (res.status === 401 || res.status === 403) { + return unavailable(`Usage endpoint rejected the token (${res.status}) — sign in again with the Codex CLI.`, checkedAt) + } + if (res.status === 429) { + return unavailable('Usage endpoint is rate limited — try again in a minute.', checkedAt) + } + if (!res.ok) { + return unavailable(`Unexpected HTTP ${res.status} from the usage endpoint.`, checkedAt) + } + + const data = await res.json() as Record + const rateLimit = (data.rate_limit ?? data.rate_limits) as Record | undefined + const windows: UsageWindow[] = [] + for (const key of ['primary_window', 'secondary_window']) { + const w = windowFrom(rateLimit?.[key]) + if (w) windows.push(w) + } + + let credits: UsageResult['credits'] + const c = data.credits as Record | undefined + if (c && (c.has_credits === true || typeof c.balance === 'number')) { + credits = { + balance: typeof c.balance === 'number' ? c.balance : undefined, + unlimited: c.unlimited === true, + } + } + + if (windows.length === 0 && !credits) { + return unavailable('Usage endpoint returned no rate-limit windows for this account.', checkedAt) + } + const plan = typeof data.plan_type === 'string' ? data.plan_type : undefined + return { available: true, plan, windows, credits, checkedAt } + } catch (err) { + return errorResult(err, TIMEOUT_MS, checkedAt) + } finally { + clearTimeout(timer) + } +} diff --git a/src/main/usage/index.ts b/src/main/usage/index.ts new file mode 100644 index 0000000..f55602a --- /dev/null +++ b/src/main/usage/index.ts @@ -0,0 +1,17 @@ +import { usageClaudeCode } from './claudeCode' +import { usageCodex } from './codex' +import { unavailable, type UsageResult } from './types' + +export type { UsageCredits, UsageResult, UsageWindow } from './types' +export { runProviderUsage } from './providers' + +export function runHarnessUsage(harnessId: string): Promise { + switch (harnessId) { + case 'claude-code': + return usageClaudeCode() + case 'codex': + return usageCodex() + default: + return Promise.resolve(unavailable(`No usage source known for ${harnessId}.`)) + } +} diff --git a/src/main/usage/providers.ts b/src/main/usage/providers.ts new file mode 100644 index 0000000..c080b0d --- /dev/null +++ b/src/main/usage/providers.ts @@ -0,0 +1,86 @@ +import { errorResult, unavailable, type UsageResult } from './types' + +const TIMEOUT_MS = 5000 + +async function getJson(url: string, headers: Record): Promise<{ status: number; data: unknown }> { + const controller = new AbortController() + const timer = setTimeout(() => controller.abort(), TIMEOUT_MS) + try { + const res = await fetch(url, { method: 'GET', headers, signal: controller.signal }) + const data = res.status === 204 ? null : await res.json().catch(() => null) + return { status: res.status, data } + } finally { + clearTimeout(timer) + } +} + +async function usageOpenRouter(apiKey: string): Promise { + const checkedAt = new Date().toISOString() + try { + const { status, data } = await getJson('https://openrouter.ai/api/v1/auth/key', { + Authorization: `Bearer ${apiKey}`, + }) + if (status === 401 || status === 403) return unavailable(`Key rejected (${status}).`, checkedAt) + if (status !== 200 || !data || typeof data !== 'object') { + return unavailable(`Unexpected HTTP ${status} from OpenRouter.`, checkedAt) + } + const d = (data as Record).data as Record | undefined + if (!d) return unavailable('OpenRouter returned no key metadata.', checkedAt) + const limit = typeof d.limit === 'number' ? d.limit : null + const remaining = typeof d.limit_remaining === 'number' ? d.limit_remaining : null + const usage = typeof d.usage === 'number' ? d.usage : null + return { + available: true, + windows: [], + credits: { + balance: remaining ?? (limit != null && usage != null ? Math.round((limit - usage) * 100) / 100 : undefined), + limit: limit ?? undefined, + unlimited: limit == null, + currency: 'USD', + }, + detail: usage != null ? `$${usage.toFixed(2)} used of ${limit != null ? `$${limit.toFixed(2)}` : 'unlimited'} credits.` : undefined, + checkedAt, + } + } catch (err) { + return errorResult(err, TIMEOUT_MS, checkedAt) + } +} + +async function usageDeepSeek(apiKey: string): Promise { + const checkedAt = new Date().toISOString() + try { + const { status, data } = await getJson('https://api.deepseek.com/user/balance', { + Authorization: `Bearer ${apiKey}`, + }) + if (status === 401 || status === 403) return unavailable(`Key rejected (${status}).`, checkedAt) + if (status !== 200 || !data || typeof data !== 'object') { + return unavailable(`Unexpected HTTP ${status} from DeepSeek.`, checkedAt) + } + const infos = (data as Record).balance_infos + const first = Array.isArray(infos) ? infos[0] as Record | undefined : undefined + const balance = first && typeof first.total_balance === 'string' ? Number.parseFloat(first.total_balance) : NaN + if (!first || !Number.isFinite(balance)) return unavailable('DeepSeek returned no balance info.', checkedAt) + return { + available: true, + windows: [], + credits: { + balance, + currency: typeof first.currency === 'string' ? first.currency : undefined, + }, + checkedAt, + } + } catch (err) { + return errorResult(err, TIMEOUT_MS, checkedAt) + } +} + +export function runProviderUsage(providerId: string, apiKey: string): Promise { + switch (providerId) { + case 'openrouter': + return usageOpenRouter(apiKey) + case 'deepseek': + return usageDeepSeek(apiKey) + default: + return Promise.resolve(unavailable(`No usage endpoint known for ${providerId}.`)) + } +} diff --git a/src/main/usage/types.ts b/src/main/usage/types.ts new file mode 100644 index 0000000..49f3d7f --- /dev/null +++ b/src/main/usage/types.ts @@ -0,0 +1,37 @@ +export interface UsageWindow { + label: string + usedPercent: number + resetsAt?: string +} + +export interface UsageCredits { + balance?: number + limit?: number + unlimited?: boolean + currency?: string +} + +export interface UsageResult { + available: boolean + plan?: string + windows: UsageWindow[] + credits?: UsageCredits + detail?: string + checkedAt: string +} + +export function unavailable(detail: string, checkedAt = new Date().toISOString()): UsageResult { + return { available: false, windows: [], detail, checkedAt } +} + +export function normalizePercent(v: unknown): number | null { + if (typeof v !== 'number' || !Number.isFinite(v)) return null + const pct = v <= 1 ? v * 100 : v + return Math.round(pct * 10) / 10 +} + +export function errorResult(err: unknown, timeoutMs: number, checkedAt: string): UsageResult { + const message = err instanceof Error ? err.message : String(err) + if (message.includes('abort')) return unavailable(`Timed out after ${timeoutMs}ms.`, checkedAt) + return unavailable(message, checkedAt) +} diff --git a/src/preload/api.ts b/src/preload/api.ts index 56cc08f..ca76613 100644 --- a/src/preload/api.ts +++ b/src/preload/api.ts @@ -28,6 +28,9 @@ export interface HoistAPI { probe: { run: (req: ProbeRequest) => Promise } + usage: { + run: (req: UsageRequest) => Promise + } clipboard: { /** Read the current clipboard text. Renderer is the only caller; * the main process never invokes this opportunistically. */ @@ -257,3 +260,33 @@ export interface ProbeResult { expiresAt?: string checkedAt: string } + +export type UsageRequest = + | { source: 'harness'; harnessId: string } + | { source: 'provider'; providerId: string; secretId?: string } + +export interface UsageResponse { + ok: boolean + error?: string + result?: UsageResult +} + +export interface UsageWindow { + label: string + usedPercent: number + resetsAt?: string +} + +export interface UsageResult { + available: boolean + plan?: string + windows: UsageWindow[] + credits?: { + balance?: number + limit?: number + unlimited?: boolean + currency?: string + } + detail?: string + checkedAt: string +} diff --git a/src/preload/index.ts b/src/preload/index.ts index 95b2626..d44caf5 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -30,6 +30,9 @@ const api: HoistAPI = { probe: { run: (req) => ipcRenderer.invoke(CHANNELS.probeRun, req), }, + usage: { + run: (req) => ipcRenderer.invoke(CHANNELS.usageRun, req), + }, clipboard: { read: () => ipcRenderer.invoke(CHANNELS.clipboardRead), }, diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 76de595..929c4df 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -29,6 +29,8 @@ import type { LibraryEntry, ProbeResult, ProviderSummary, + UsageRequest, + UsageResult, VaultEntry, } from '../preload/api' import { @@ -45,6 +47,204 @@ declare global { } } +const USAGE_HARNESSES: Array<{ id: string; name: string }> = [ + { id: 'claude-code', name: 'Claude Code' }, + { id: 'codex', name: 'Codex' }, +] + +function HarnessUsageOverview() { + const [results, setResults] = useState>({}) + const [loading, setLoading] = useState(false) + + const run = useCallback(async () => { + setLoading(true) + const entries = await Promise.all(USAGE_HARNESSES.map(async (h) => { + try { + const res = await window.hoist.usage.run({ source: 'harness', harnessId: h.id }) + return [h.id, res.ok && res.result ? res.result : null] as const + } catch { + return [h.id, null] as const + } + })) + setResults(Object.fromEntries(entries.map(([id, r]) => [id, r ?? undefined]).filter(([, r]) => r))) + setLoading(false) + }, []) + + useEffect(() => { void run() }, [run]) + + return ( +
+
Harness usage
+ {USAGE_HARNESSES.map((h) => { + const r = results[h.id] + return ( +
+
+ {h.name} + {r?.plan && {r.plan}} +
+ {loading && !r &&
Checking…
} + {r && !r.available &&
{r.detail ?? 'Unavailable.'}
} + {r?.windows.map((w) => ( +
+
+ {w.label} + {w.usedPercent}% +
+
+
= 90 ? ' is-hot' : ''}`} + style={{ width: `${Math.min(100, w.usedPercent)}%` }} + /> +
+ {w.resetsAt &&
resets {formatReset(w.resetsAt)}
} +
+ ))} +
+ ) + })} + +
+ ) +} + +function formatReset(resetsAt: string): string { + const t = Date.parse(resetsAt) + if (!Number.isFinite(t)) return '—' + const ms = t - Date.now() + if (ms <= 0) return 'now' + const min = Math.round(ms / 60000) + if (min < 60) return `in ${min}m` + const hr = Math.round(min / 60) + if (hr < 48) return `in ${hr}h` + return `in ${Math.round(hr / 24)}d` +} + +function UsagePanel({ request }: { request: UsageRequest }) { + const requestKey = JSON.stringify(request) + const [loading, setLoading] = useState(false) + const [result, setResult] = useState(null) + const [error, setError] = useState(null) + + const run = useCallback(async () => { + setLoading(true) + setError(null) + try { + const res = await window.hoist.usage.run(JSON.parse(requestKey) as UsageRequest) + if (res.ok && res.result) setResult(res.result) + else setError(res.error ?? 'Usage lookup failed.') + } catch (err) { + setError(err instanceof Error ? err.message : String(err)) + } finally { + setLoading(false) + } + }, [requestKey]) + + useEffect(() => { void run() }, [run]) + + return ( +
+
Usage
+ {loading && !result &&
Checking usage…
} + {error &&
{error}
} + {result && ( + <> + {result.plan && } + {result.windows.map((w) => ( +
+
+ {w.label} + {w.usedPercent}% +
+
+
= 90 ? ' is-hot' : ''}`} + style={{ width: `${Math.min(100, w.usedPercent)}%` }} + /> +
+ {w.resetsAt &&
resets {formatReset(w.resetsAt)}
} +
+ ))} + {result.credits && ( + + )} + {!result.available &&
{result.detail ?? 'Usage unavailable.'}
} + {result.available && result.detail &&
{result.detail}
} + + + )} +
+ ) +} + +function HoistMark() { + return +} + +const THEME_OPTIONS = [ + ['', 'rigging yard (default)'], + ['signal', 'signal orange'], + ['amber', 'amber'], + ['oxide', 'oxide'], + ['safety', 'safety yellow'], + ['cobalt', 'cobalt'], + ['teal', 'teal'], + ['plum', 'plum'], + ['coral', 'coral'], + ['lime', 'lime'], +] as const + +function DevThemePicker() { + const [theme, setTheme] = useState(() => { + try { return localStorage.getItem('hoist.theme') ?? '' } catch { return '' } + }) + + useEffect(() => { + try { localStorage.setItem('hoist.theme', theme) } catch { /* ignore */ } + if (theme) document.documentElement.dataset.theme = theme + else delete document.documentElement.dataset.theme + }, [theme]) + + if (window.location.protocol === 'file:') return null + + return ( + + ) +} + type SurfaceId = 'library' | 'harnesses' | 'keys' | 'gateway' | 'status' | 'doctor' type LibraryFilter = 'all' | 'harnesses' | 'runtimes' | 'package-managers' | 'installed' | 'available' @@ -435,6 +635,7 @@ export function App() { return (
+ setPaletteOpen(true)} surface={surface} @@ -645,7 +846,7 @@ function TopBar({ return (
- + hoist {sectionLabel} @@ -696,7 +897,7 @@ function NavSidebar({ surface, onSurface, statusCounts, expanded, onToggleExpand return (