diff --git a/.prettierignore b/.prettierignore index 2f7896d..564452f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ target/ +pnpm-lock.yaml diff --git a/angular.json b/angular.json index 6d9dfd1..61f1597 100644 --- a/angular.json +++ b/angular.json @@ -3,7 +3,8 @@ "version": 1, "newProjectRoot": "projects", "cli": { - "analytics": false + "analytics": false, + "schematicCollections": ["angular-eslint"] }, "projects": { "moonsound": { @@ -60,6 +61,12 @@ } }, "defaultConfiguration": "development" + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] + } } } } diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..0a15890 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,40 @@ +// @ts-check +const eslint = require("@eslint/js"); +const tseslint = require("typescript-eslint"); +const angular = require("angular-eslint"); + +module.exports = tseslint.config( + { + files: ["**/*.ts"], + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommended, + ...tseslint.configs.stylistic, + ...angular.configs.tsRecommended, + ], + processor: angular.processInlineTemplates, + rules: { + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + varsIgnorePattern: "^_", + ignoreRestSiblings: true, + }, + ], + }, + }, + { + files: ["**/*.html"], + extends: [ + ...angular.configs.templateRecommended, + ...angular.configs.templateAccessibility, + ], + rules: {}, + }, +); diff --git a/package.json b/package.json index 50cd58b..aeda782 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "watch": "ng build --watch --configuration development", "tauri": "tauri", "tauri:dev": "pnpm tauri dev", - "format": "prettier --write ." + "format": "prettier --write .", + "lint": "ng lint" }, "private": true, "dependencies": { @@ -34,11 +35,16 @@ "tslib": "^2.3.0" }, "devDependencies": { + "@angular-eslint/builder": "20.4.0", "@angular/build": "^20.3.7", "@angular/cli": "^20.3.7", "@angular/compiler-cli": "^20.3.7", + "@eslint/js": "^9.37.0", "@tauri-apps/cli": "^2.9.1", + "angular-eslint": "20.4.0", + "eslint": "^9.37.0", "prettier": "^3.6.2", - "typescript": "~5.9.3" + "typescript": "~5.9.3", + "typescript-eslint": "8.46.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19468f3..cdbfef1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,6 +68,9 @@ importers: specifier: ^2.3.0 version: 2.8.1 devDependencies: + "@angular-eslint/builder": + specifier: 20.4.0 + version: 20.4.0(chokidar@4.0.1)(eslint@9.38.0)(typescript@5.9.3) "@angular/build": specifier: ^20.3.7 version: 20.3.7(@angular/compiler-cli@20.3.7(@angular/compiler@20.3.7)(typescript@5.9.3))(@angular/compiler@20.3.7)(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@20.3.7(@angular/animations@20.3.7(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@20.3.7(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.0)))(chokidar@4.0.1)(postcss@8.5.6)(tslib@2.8.1)(typescript@5.9.3)(yaml@2.6.1) @@ -77,15 +80,27 @@ importers: "@angular/compiler-cli": specifier: ^20.3.7 version: 20.3.7(@angular/compiler@20.3.7)(typescript@5.9.3) + "@eslint/js": + specifier: ^9.37.0 + version: 9.38.0 "@tauri-apps/cli": specifier: ^2.9.1 version: 2.9.1 + angular-eslint: + specifier: 20.4.0 + version: 20.4.0(chokidar@4.0.1)(eslint@9.38.0)(typescript-eslint@8.46.0(eslint@9.38.0)(typescript@5.9.3))(typescript@5.9.3) + eslint: + specifier: ^9.37.0 + version: 9.38.0 prettier: specifier: ^3.6.2 version: 3.6.2 typescript: specifier: ~5.9.3 version: 5.9.3 + typescript-eslint: + specifier: 8.46.0 + version: 8.46.0(eslint@9.38.0)(typescript@5.9.3) packages: "@algolia/abtesting@1.1.0": @@ -234,6 +249,68 @@ packages: yarn: ">= 1.13.0", } + "@angular-eslint/builder@20.4.0": + resolution: + { + integrity: sha512-65mekrXZOurc2K6Ft7/aISiW9vsGcSTKvBxQVXarySBh1jzEvYKnG3tmiYP/ApTh6GPKrDo/XgbW85T67s9UXg==, + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + + "@angular-eslint/bundled-angular-compiler@20.4.0": + resolution: + { + integrity: sha512-u3I/yABCm+lda/AdnLKJnjdQp1i4BACgEKY9D6eKIgijcRtlvUc6Jq+43e1oPZLj+3DdrlABNcB8HsA/+RzikA==, + } + + "@angular-eslint/eslint-plugin-template@20.4.0": + resolution: + { + integrity: sha512-AWXtpWfivSE3PIwTPkuACPww5qu8dn3p1nuGuk2M/3LoHJFAMVvH6y2toTqGSUSTKALSdYzGhxbRPyDy6aEzDw==, + } + peerDependencies: + "@angular-eslint/template-parser": 20.4.0 + "@typescript-eslint/types": ^7.11.0 || ^8.0.0 + "@typescript-eslint/utils": ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + + "@angular-eslint/eslint-plugin@20.4.0": + resolution: + { + integrity: sha512-gSQO18QLHt46UFjDcxkGhuFMKl4sPdFDnCZRZDpZC+4OZQ64f+xazPOveSoK1o4ttjSulfyXslE+I9bESmR5Mw==, + } + peerDependencies: + "@typescript-eslint/utils": ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + + "@angular-eslint/schematics@20.4.0": + resolution: + { + integrity: sha512-VIJ1RW4wq4sMf6jVaKiUR0H28Oro7eb9SKVSL7ztef8qGR8BMFKpyJM9W5DZ1Q6RXYpC0E8Q4rKEiTe3K3KsBQ==, + } + + "@angular-eslint/template-parser@20.4.0": + resolution: + { + integrity: sha512-5Vyo/VJ1DrIsAkudFpZj1f7CpCLYuiTzTQksHTiZE18iYsLKRkEC7y9S6+TiHrdD96rhNxL28Pz9FDU4lIBjkw==, + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + + "@angular-eslint/utils@20.4.0": + resolution: + { + integrity: sha512-SkR4fdPc+40W/53JmF6Nz6EIXIxvoRzhOdUiHoBKr/6fWONQwm7Vq55vk11AdK/oKTDUQCJ84HExQw6mzFljtg==, + } + peerDependencies: + "@typescript-eslint/utils": ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + "@angular/animations@20.3.7": resolution: { @@ -799,6 +876,99 @@ packages: cpu: [x64] os: [win32] + "@eslint-community/eslint-utils@4.9.0": + resolution: + { + integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + "@eslint-community/regexpp@4.12.2": + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint/config-array@0.21.1": + resolution: + { + integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/config-helpers@0.4.1": + resolution: + { + integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/core@0.16.0": + resolution: + { + integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/eslintrc@3.3.1": + resolution: + { + integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/js@9.38.0": + resolution: + { + integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/object-schema@2.1.7": + resolution: + { + integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@eslint/plugin-kit@0.4.0": + resolution: + { + integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@humanfs/core@0.19.1": + resolution: + { + integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, + } + engines: { node: ">=18.18.0" } + + "@humanfs/node@0.16.7": + resolution: + { + integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==, + } + engines: { node: ">=18.18.0" } + + "@humanwhocodes/module-importer@1.0.1": + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + + "@humanwhocodes/retry@0.4.3": + resolution: + { + integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, + } + engines: { node: ">=18.18" } + "@inquirer/ansi@1.0.1": resolution: { @@ -1428,6 +1598,27 @@ packages: } engines: { node: ">= 10" } + "@nodelib/fs.scandir@2.1.5": + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + + "@nodelib/fs.stat@2.0.5": + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + "@nodelib/fs.walk@1.2.8": + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + "@npmcli/agent@3.0.0": resolution: { @@ -2079,6 +2270,12 @@ packages: integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, } + "@types/json-schema@7.0.15": + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, + } + "@types/node@16.9.1": resolution: { @@ -2091,6 +2288,153 @@ packages: integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==, } + "@typescript-eslint/eslint-plugin@8.46.0": + resolution: + { + integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + "@typescript-eslint/parser": ^8.46.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/parser@8.46.0": + resolution: + { + integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/project-service@8.46.0": + resolution: + { + integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/project-service@8.46.2": + resolution: + { + integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/scope-manager@8.46.0": + resolution: + { + integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/scope-manager@8.46.2": + resolution: + { + integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/tsconfig-utils@8.46.0": + resolution: + { + integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/tsconfig-utils@8.46.2": + resolution: + { + integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/type-utils@8.46.0": + resolution: + { + integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/types@8.46.0": + resolution: + { + integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/types@8.46.2": + resolution: + { + integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/typescript-estree@8.46.0": + resolution: + { + integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/typescript-estree@8.46.2": + resolution: + { + integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/utils@8.46.0": + resolution: + { + integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/utils@8.46.2": + resolution: + { + integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + + "@typescript-eslint/visitor-keys@8.46.0": + resolution: + { + integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/visitor-keys@8.46.2": + resolution: + { + integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + "@vibrant/color@4.0.0": resolution: { @@ -2193,6 +2537,22 @@ packages: } engines: { node: ">= 0.6" } + acorn-jsx@5.3.2: + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: + { + integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, + } + engines: { node: ">=0.4.0" } + hasBin: true + agent-base@7.1.3: resolution: { @@ -2230,6 +2590,16 @@ packages: } engines: { node: ">= 14.0.0" } + angular-eslint@20.4.0: + resolution: + { + integrity: sha512-kKMiFJF3LRcKEYQaHBPbMw5xH2UY8JWD9fVyEnOwOe18r7MGlY002JqbCYz4NsmSx3lGmQXnUH+Hibx4iQ0JkA==, + } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + typescript-eslint: ^8.0.0 + ansi-escapes@7.0.0: resolution: { @@ -2271,6 +2641,26 @@ packages: integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==, } + argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + + aria-query@5.3.2: + resolution: + { + integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, + } + engines: { node: ">= 0.4" } + + axobject-query@4.1.0: + resolution: + { + integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, + } + engines: { node: ">= 0.4" } + balanced-match@1.0.2: resolution: { @@ -2309,6 +2699,12 @@ packages: integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, } + brace-expansion@1.1.12: + resolution: + { + integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, + } + brace-expansion@2.0.1: resolution: { @@ -2376,12 +2772,26 @@ packages: } engines: { node: ">= 0.4" } + callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: ">=6" } + caniuse-lite@1.0.30001688: resolution: { integrity: sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==, } + chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + chalk@5.4.1: resolution: { @@ -2470,6 +2880,12 @@ packages: integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } + concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + content-disposition@1.0.0: resolution: { @@ -2549,6 +2965,12 @@ packages: supports-color: optional: true + deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + depd@2.0.0: resolution: { @@ -2728,43 +3150,119 @@ packages: integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, } - etag@1.8.1: + escape-string-regexp@4.0.0: resolution: { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, } - engines: { node: ">= 0.6" } + engines: { node: ">=10" } - event-target-shim@5.0.1: + eslint-scope@8.4.0: resolution: { - integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, } - engines: { node: ">=6" } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eventemitter3@5.0.1: + eslint-visitor-keys@3.4.3: resolution: { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - events@3.3.0: + eslint-visitor-keys@4.2.1: resolution: { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, } - engines: { node: ">=0.8.x" } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eventsource-parser@3.0.6: + eslint@9.38.0: resolution: { - integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==, + integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==, } - engines: { node: ">=18.0.0" } - - eventsource@3.0.7: - resolution: - { + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + hasBin: true + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: + { + integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + esquery@1.6.0: + resolution: + { + integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, + } + engines: { node: ">=0.10" } + + esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + + estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } + + etag@1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: ">= 0.6" } + + event-target-shim@5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: ">=6" } + + eventemitter3@5.0.1: + resolution: + { + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + } + + events@3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: ">=0.8.x" } + + eventsource-parser@3.0.6: + resolution: + { + integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==, + } + engines: { node: ">=18.0.0" } + + eventsource@3.0.7: + resolution: + { integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==, } engines: { node: ">=18.0.0" } @@ -2803,18 +3301,37 @@ packages: integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } + fast-glob@3.3.3: + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + } + engines: { node: ">=8.6.0" } + fast-json-stable-stringify@2.1.0: resolution: { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, } + fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + fast-uri@3.0.3: resolution: { integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==, } + fastq@1.19.1: + resolution: + { + integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, + } + fdir@6.5.0: resolution: { @@ -2827,6 +3344,13 @@ packages: picomatch: optional: true + file-entry-cache@8.0.0: + resolution: + { + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, + } + engines: { node: ">=16.0.0" } + file-type@16.5.4: resolution: { @@ -2848,6 +3372,26 @@ packages: } engines: { node: ">= 0.8" } + find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + + flat-cache@4.0.1: + resolution: + { + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, + } + engines: { node: ">=16" } + + flatted@3.3.3: + resolution: + { + integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, + } + foreground-child@3.3.0: resolution: { @@ -2938,6 +3482,20 @@ packages: integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==, } + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + + glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } + glob-to-regexp@0.4.1: resolution: { @@ -2951,6 +3509,13 @@ packages: } hasBin: true + globals@14.0.0: + resolution: + { + integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==, + } + engines: { node: ">=18" } + gopd@1.2.0: resolution: { @@ -2964,6 +3529,19 @@ packages: integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } + graphemer@1.4.0: + resolution: + { + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, + } + + has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + has-symbols@1.1.0: resolution: { @@ -3052,6 +3630,20 @@ packages: } engines: { node: ^20.17.0 || >=22.9.0 } + ignore@5.3.2: + resolution: + { + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, + } + engines: { node: ">= 4" } + + ignore@7.0.5: + resolution: + { + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, + } + engines: { node: ">= 4" } + image-q@4.0.0: resolution: { @@ -3070,6 +3662,13 @@ packages: integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==, } + import-fresh@3.3.1: + resolution: + { + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, + } + engines: { node: ">=6" } + imurmurhash@0.1.4: resolution: { @@ -3231,6 +3830,13 @@ packages: integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } + js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + jsbn@1.1.0: resolution: { @@ -3245,6 +3851,12 @@ packages: engines: { node: ">=6" } hasBin: true + json-buffer@3.0.1: + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + } + json-parse-even-better-errors@4.0.0: resolution: { @@ -3264,6 +3876,12 @@ packages: integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, } + json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + json5@2.2.3: resolution: { @@ -3285,6 +3903,19 @@ packages: } engines: { "0": node >= 0.2.0 } + keyv@4.5.4: + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, + } + + levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } + listr2@9.0.1: resolution: { @@ -3299,6 +3930,19 @@ packages: } hasBin: true + locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + + lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + log-symbols@6.0.0: resolution: { @@ -3366,6 +4010,13 @@ packages: } engines: { node: ">=18" } + merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + micromatch@4.0.8: resolution: { @@ -3401,6 +4052,12 @@ packages: } engines: { node: 20 || >=22 } + minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + minimatch@9.0.5: resolution: { @@ -3543,6 +4200,12 @@ packages: engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true + natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + negotiator@1.0.0: resolution: { @@ -3718,6 +4381,13 @@ packages: } engines: { node: ">=18" } + optionator@0.9.4: + resolution: + { + integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, + } + engines: { node: ">= 0.8.0" } + ora@8.2.0: resolution: { @@ -3731,6 +4401,20 @@ packages: integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==, } + p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + + p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + p-map@7.0.3: resolution: { @@ -3758,6 +4442,13 @@ packages: integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, } + parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: ">=6" } + parse5-html-rewriting-stream@8.0.0: resolution: { @@ -3783,6 +4474,13 @@ packages: } engines: { node: ">= 0.8" } + path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + path-key@3.1.1: resolution: { @@ -3891,6 +4589,13 @@ packages: } engines: { node: ^10 || ^12 || >=14 } + prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } + prettier@3.6.2: resolution: { @@ -3959,6 +4664,12 @@ packages: } engines: { node: ">=0.6" } + queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + range-parser@1.2.1: resolution: { @@ -4033,6 +4744,13 @@ packages: integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==, } + resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: ">=4" } + resolve@1.22.10: resolution: { @@ -4055,6 +4773,13 @@ packages: } engines: { node: ">= 4" } + reusify@1.1.0: + resolution: + { + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + rfdc@1.4.1: resolution: { @@ -4083,6 +4808,12 @@ packages: } engines: { node: ">= 18" } + run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + rxjs@7.8.2: resolution: { @@ -4369,6 +5100,13 @@ packages: } engines: { node: ">=12" } + strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + strtok3@6.3.0: resolution: { @@ -4376,6 +5114,13 @@ packages: } engines: { node: ">=10" } + supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + supports-preserve-symlinks-flag@1.0.0: resolution: { @@ -4450,6 +5195,15 @@ packages: integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, } + ts-api-utils@2.1.0: + resolution: + { + integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==, + } + engines: { node: ">=18.12" } + peerDependencies: + typescript: ">=4.8.4" + tslib@2.8.1: resolution: { @@ -4463,6 +5217,13 @@ packages: } engines: { node: ^18.17.0 || >=20.5.0 } + type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } + type-is@2.0.1: resolution: { @@ -4470,6 +5231,16 @@ packages: } engines: { node: ">= 0.6" } + typescript-eslint@8.46.0: + resolution: + { + integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + typescript@5.9.3: resolution: { @@ -4636,6 +5407,13 @@ packages: engines: { node: ^18.17.0 || >=20.5.0 } hasBin: true + word-wrap@1.2.5: + resolution: + { + integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + } + engines: { node: ">=0.10.0" } + wrap-ansi@6.2.0: resolution: { @@ -4718,6 +5496,13 @@ packages: } engines: { node: ^20.19.0 || ^22.12.0 || >=23 } + yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } + yoctocolors-cjs@2.1.2: resolution: { @@ -4838,30 +5623,93 @@ snapshots: "@angular-devkit/architect@0.2003.7(chokidar@4.0.1)": dependencies: "@angular-devkit/core": 20.3.7(chokidar@4.0.1) - rxjs: 7.8.2 + rxjs: 7.8.2 + transitivePeerDependencies: + - chokidar + + "@angular-devkit/core@20.3.7(chokidar@4.0.1)": + dependencies: + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.3 + rxjs: 7.8.2 + source-map: 0.7.6 + optionalDependencies: + chokidar: 4.0.1 + + "@angular-devkit/schematics@20.3.7(chokidar@4.0.1)": + dependencies: + "@angular-devkit/core": 20.3.7(chokidar@4.0.1) + jsonc-parser: 3.3.1 + magic-string: 0.30.17 + ora: 8.2.0 + rxjs: 7.8.2 + transitivePeerDependencies: + - chokidar + + "@angular-eslint/builder@20.4.0(chokidar@4.0.1)(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@angular-devkit/architect": 0.2003.7(chokidar@4.0.1) + "@angular-devkit/core": 20.3.7(chokidar@4.0.1) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - chokidar + + "@angular-eslint/bundled-angular-compiler@20.4.0": {} + + "@angular-eslint/eslint-plugin-template@20.4.0(@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3))(@typescript-eslint/types@8.46.2)(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@angular-eslint/bundled-angular-compiler": 20.4.0 + "@angular-eslint/template-parser": 20.4.0(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/utils": 20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/types": 8.46.2 + "@typescript-eslint/utils": 8.46.2(eslint@9.38.0)(typescript@5.9.3) + aria-query: 5.3.2 + axobject-query: 4.1.0 + eslint: 9.38.0 + typescript: 5.9.3 + + "@angular-eslint/eslint-plugin@20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@angular-eslint/bundled-angular-compiler": 20.4.0 + "@angular-eslint/utils": 20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.2(eslint@9.38.0)(typescript@5.9.3) + eslint: 9.38.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + + "@angular-eslint/schematics@20.4.0(@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3))(@typescript-eslint/types@8.46.2)(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(chokidar@4.0.1)(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@angular-devkit/core": 20.3.7(chokidar@4.0.1) + "@angular-devkit/schematics": 20.3.7(chokidar@4.0.1) + "@angular-eslint/eslint-plugin": 20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/eslint-plugin-template": 20.4.0(@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3))(@typescript-eslint/types@8.46.2)(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + ignore: 7.0.5 + semver: 7.7.2 + strip-json-comments: 3.1.1 transitivePeerDependencies: + - "@angular-eslint/template-parser" + - "@typescript-eslint/types" + - "@typescript-eslint/utils" - chokidar + - eslint + - typescript - "@angular-devkit/core@20.3.7(chokidar@4.0.1)": + "@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3)": dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.3 - rxjs: 7.8.2 - source-map: 0.7.6 - optionalDependencies: - chokidar: 4.0.1 + "@angular-eslint/bundled-angular-compiler": 20.4.0 + eslint: 9.38.0 + eslint-scope: 8.4.0 + typescript: 5.9.3 - "@angular-devkit/schematics@20.3.7(chokidar@4.0.1)": + "@angular-eslint/utils@20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)": dependencies: - "@angular-devkit/core": 20.3.7(chokidar@4.0.1) - jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 8.2.0 - rxjs: 7.8.2 - transitivePeerDependencies: - - chokidar + "@angular-eslint/bundled-angular-compiler": 20.4.0 + "@typescript-eslint/utils": 8.46.2(eslint@9.38.0)(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 "@angular/animations@20.3.7(@angular/core@20.3.7(@angular/compiler@20.3.7)(rxjs@7.8.2)(zone.js@0.15.0))": dependencies: @@ -5209,6 +6057,63 @@ snapshots: "@esbuild/win32-x64@0.25.9": optional: true + "@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)": + dependencies: + eslint: 9.38.0 + eslint-visitor-keys: 3.4.3 + + "@eslint-community/regexpp@4.12.2": {} + + "@eslint/config-array@0.21.1": + dependencies: + "@eslint/object-schema": 2.1.7 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + "@eslint/config-helpers@0.4.1": + dependencies: + "@eslint/core": 0.16.0 + + "@eslint/core@0.16.0": + dependencies: + "@types/json-schema": 7.0.15 + + "@eslint/eslintrc@3.3.1": + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + "@eslint/js@9.38.0": {} + + "@eslint/object-schema@2.1.7": {} + + "@eslint/plugin-kit@0.4.0": + dependencies: + "@eslint/core": 0.16.0 + levn: 0.4.1 + + "@humanfs/core@0.19.1": {} + + "@humanfs/node@0.16.7": + dependencies: + "@humanfs/core": 0.19.1 + "@humanwhocodes/retry": 0.4.3 + + "@humanwhocodes/module-importer@1.0.1": {} + + "@humanwhocodes/retry@0.4.3": {} + "@inquirer/ansi@1.0.1": {} "@inquirer/checkbox@4.3.0": @@ -5563,6 +6468,18 @@ snapshots: "@napi-rs/nice-win32-x64-msvc": 1.1.1 optional: true + "@nodelib/fs.scandir@2.1.5": + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + "@nodelib/fs.stat@2.0.5": {} + + "@nodelib/fs.walk@1.2.8": + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.19.1 + "@npmcli/agent@3.0.0": dependencies: agent-base: 7.1.3 @@ -5909,12 +6826,159 @@ snapshots: "@types/estree@1.0.8": {} + "@types/json-schema@7.0.15": {} + "@types/node@16.9.1": {} "@types/node@18.19.130": dependencies: undici-types: 5.26.5 + "@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/type-utils": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.46.0 + eslint: 9.38.0 + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/parser@8.46.0(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.46.0 + debug: 4.4.0 + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/project-service@8.46.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/tsconfig-utils": 8.46.2(typescript@5.9.3) + "@typescript-eslint/types": 8.46.2 + debug: 4.4.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/project-service@8.46.2(typescript@5.9.3)": + dependencies: + "@typescript-eslint/tsconfig-utils": 8.46.2(typescript@5.9.3) + "@typescript-eslint/types": 8.46.2 + debug: 4.4.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/scope-manager@8.46.0": + dependencies: + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/visitor-keys": 8.46.0 + + "@typescript-eslint/scope-manager@8.46.2": + dependencies: + "@typescript-eslint/types": 8.46.2 + "@typescript-eslint/visitor-keys": 8.46.2 + + "@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)": + dependencies: + typescript: 5.9.3 + + "@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)": + dependencies: + typescript: 5.9.3 + + "@typescript-eslint/type-utils@8.46.0(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + debug: 4.4.0 + eslint: 9.38.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/types@8.46.0": {} + + "@typescript-eslint/types@8.46.2": {} + + "@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)": + dependencies: + "@typescript-eslint/project-service": 8.46.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.46.0(typescript@5.9.3) + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/visitor-keys": 8.46.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)": + dependencies: + "@typescript-eslint/project-service": 8.46.2(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.46.2(typescript@5.9.3) + "@typescript-eslint/types": 8.46.2 + "@typescript-eslint/visitor-keys": 8.46.2 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/utils@8.46.0(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.38.0) + "@typescript-eslint/scope-manager": 8.46.0 + "@typescript-eslint/types": 8.46.0 + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)": + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.38.0) + "@typescript-eslint/scope-manager": 8.46.2 + "@typescript-eslint/types": 8.46.2 + "@typescript-eslint/typescript-estree": 8.46.2(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + "@typescript-eslint/visitor-keys@8.46.0": + dependencies: + "@typescript-eslint/types": 8.46.0 + eslint-visitor-keys: 4.2.1 + + "@typescript-eslint/visitor-keys@8.46.2": + dependencies: + "@typescript-eslint/types": 8.46.2 + eslint-visitor-keys: 4.2.1 + "@vibrant/color@4.0.0": {} "@vibrant/core@4.0.0": @@ -5987,6 +7051,12 @@ snapshots: mime-types: 3.0.1 negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + agent-base@7.1.3: {} ajv-formats@3.0.1(ajv@8.17.1): @@ -6024,6 +7094,24 @@ snapshots: "@algolia/requester-fetch": 5.35.0 "@algolia/requester-node-http": 5.35.0 + angular-eslint@20.4.0(chokidar@4.0.1)(eslint@9.38.0)(typescript-eslint@8.46.0(eslint@9.38.0)(typescript@5.9.3))(typescript@5.9.3): + dependencies: + "@angular-devkit/core": 20.3.7(chokidar@4.0.1) + "@angular-devkit/schematics": 20.3.7(chokidar@4.0.1) + "@angular-eslint/builder": 20.4.0(chokidar@4.0.1)(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/eslint-plugin": 20.4.0(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/eslint-plugin-template": 20.4.0(@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3))(@typescript-eslint/types@8.46.2)(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/schematics": 20.4.0(@angular-eslint/template-parser@20.4.0(eslint@9.38.0)(typescript@5.9.3))(@typescript-eslint/types@8.46.2)(@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3))(chokidar@4.0.1)(eslint@9.38.0)(typescript@5.9.3) + "@angular-eslint/template-parser": 20.4.0(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/types": 8.46.2 + "@typescript-eslint/utils": 8.46.2(eslint@9.38.0)(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + typescript-eslint: 8.46.0(eslint@9.38.0)(typescript@5.9.3) + transitivePeerDependencies: + - chokidar + - supports-color + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -6040,6 +7128,12 @@ snapshots: any-base@1.1.0: {} + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + axobject-query@4.1.0: {} + balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -6073,6 +7167,11 @@ snapshots: boolbase@1.0.0: {} + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -6080,7 +7179,6 @@ snapshots: braces@3.0.3: dependencies: fill-range: 7.1.1 - optional: true browserslist@4.24.2: dependencies: @@ -6128,8 +7226,15 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + callsites@3.1.0: {} + caniuse-lite@1.0.30001688: {} + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@5.4.1: {} chardet@2.1.0: {} @@ -6169,6 +7274,8 @@ snapshots: colorette@2.0.20: {} + concat-map@0.0.1: {} + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 @@ -6208,6 +7315,8 @@ snapshots: dependencies: ms: 2.1.3 + deep-is@0.1.4: {} + depd@2.0.0: {} detect-libc@1.0.3: @@ -6310,6 +7419,74 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@4.0.0: {} + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.38.0: + dependencies: + "@eslint-community/eslint-utils": 4.9.0(eslint@9.38.0) + "@eslint-community/regexpp": 4.12.2 + "@eslint/config-array": 0.21.1 + "@eslint/config-helpers": 0.4.1 + "@eslint/core": 0.16.0 + "@eslint/eslintrc": 3.3.1 + "@eslint/js": 9.38.0 + "@eslint/plugin-kit": 0.4.0 + "@humanfs/node": 0.16.7 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + etag@1.8.1: {} event-target-shim@5.0.1: {} @@ -6366,14 +7543,32 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-glob@3.3.3: + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} + fast-uri@3.0.3: {} + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-type@16.5.4: dependencies: readable-web-to-node-stream: 3.0.4 @@ -6383,7 +7578,6 @@ snapshots: fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - optional: true finalhandler@2.1.0: dependencies: @@ -6396,6 +7590,18 @@ snapshots: transitivePeerDependencies: - supports-color + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 @@ -6447,6 +7653,14 @@ snapshots: image-q: 4.0.0 omggif: 1.0.10 + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob-to-regexp@0.4.1: {} glob@10.4.5: @@ -6458,10 +7672,16 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + globals@14.0.0: {} + gopd@1.2.0: {} graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + has-symbols@1.1.0: {} hasown@2.0.2: @@ -6521,6 +7741,10 @@ snapshots: dependencies: minimatch: 10.0.3 + ignore@5.3.2: {} + + ignore@7.0.5: {} + image-q@4.0.0: dependencies: "@types/node": 16.9.1 @@ -6529,6 +7753,11 @@ snapshots: immutable@5.0.3: {} + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + imurmurhash@0.1.4: {} inherits@2.0.4: {} @@ -6546,8 +7775,7 @@ snapshots: dependencies: hasown: 2.0.2 - is-extglob@2.1.1: - optional: true + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -6560,12 +7788,10 @@ snapshots: is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - optional: true is-interactive@2.0.0: {} - is-number@7.0.0: - optional: true + is-number@7.0.0: {} is-promise@4.0.0: {} @@ -6606,22 +7832,39 @@ snapshots: js-tokens@4.0.0: {} + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + jsbn@1.1.0: {} jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-even-better-errors@4.0.0: {} json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json5@2.2.3: {} jsonc-parser@3.3.1: {} jsonparse@1.3.1: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + listr2@9.0.1: dependencies: cli-truncate: 4.0.0 @@ -6648,6 +7891,12 @@ snapshots: "@lmdb/lmdb-win32-x64": 3.4.2 optional: true + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + log-symbols@6.0.0: dependencies: chalk: 5.4.1 @@ -6695,11 +7944,12 @@ snapshots: merge-descriptors@2.0.0: {} + merge2@1.4.1: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - optional: true mime-db@1.54.0: {} @@ -6713,6 +7963,10 @@ snapshots: dependencies: "@isaacs/brace-expansion": 5.0.0 + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -6790,6 +8044,8 @@ snapshots: nanoid@3.3.8: {} + natural-compare@1.4.0: {} + negotiator@1.0.0: {} node-addon-api@6.1.0: @@ -6918,6 +8174,15 @@ snapshots: dependencies: mimic-function: 5.0.1 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@8.2.0: dependencies: chalk: 5.4.1 @@ -6933,6 +8198,14 @@ snapshots: ordered-binary@1.5.3: optional: true + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-map@7.0.3: {} package-json-from-dist@1.0.1: {} @@ -6962,6 +8235,10 @@ snapshots: pako@1.0.11: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + parse5-html-rewriting-stream@8.0.0: dependencies: entities: 6.0.1 @@ -6978,6 +8255,8 @@ snapshots: parseurl@1.3.3: {} + path-exists@4.0.0: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -6993,8 +8272,7 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: - optional: true + picomatch@2.3.1: {} picomatch@4.0.3: {} @@ -7026,6 +8304,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prelude-ls@1.2.1: {} + prettier@3.6.2: {} proc-log@5.0.0: {} @@ -7052,6 +8332,8 @@ snapshots: dependencies: side-channel: 1.1.0 + queue-microtask@1.2.3: {} + range-parser@1.2.1: {} raw-body@3.0.1: @@ -7089,6 +8371,8 @@ snapshots: reselect@5.1.1: {} + resolve-from@4.0.0: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -7102,6 +8386,8 @@ snapshots: retry@0.12.0: {} + reusify@1.1.0: {} + rfdc@1.4.1: {} rimraf@5.0.10: @@ -7146,6 +8432,10 @@ snapshots: transitivePeerDependencies: - supports-color + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -7334,11 +8624,17 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-json-comments@3.1.1: {} + strtok3@6.3.0: dependencies: "@tokenizer/token": 0.3.0 peek-readable: 4.1.0 + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} tar@6.2.1: @@ -7376,7 +8672,6 @@ snapshots: to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - optional: true toidentifier@1.0.1: {} @@ -7387,6 +8682,10 @@ snapshots: tr46@0.0.3: {} + ts-api-utils@2.1.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + tslib@2.8.1: {} tuf-js@3.0.1: @@ -7397,12 +8696,27 @@ snapshots: transitivePeerDependencies: - supports-color + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-is@2.0.1: dependencies: content-type: 1.0.5 media-typer: 1.1.0 mime-types: 3.0.1 + typescript-eslint@8.46.0(eslint@9.38.0)(typescript@5.9.3): + dependencies: + "@typescript-eslint/eslint-plugin": 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/parser": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.46.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.46.0(eslint@9.38.0)(typescript@5.9.3) + eslint: 9.38.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} undici-types@5.26.5: {} @@ -7478,6 +8792,8 @@ snapshots: dependencies: isexe: 3.1.1 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -7526,6 +8842,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 22.0.0 + yocto-queue@0.1.0: {} + yoctocolors-cjs@2.1.2: {} zod-to-json-schema@3.24.6(zod@3.25.76): diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 22c707e..91c7bdd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -26,7 +26,7 @@ export class App { // Listen for the server to tell us to sync the music player, like when the song changes or song is paused let unlisten = () => {}; - listen("SERVER_SYNC_EVENT", (event) => { + listen("SERVER_SYNC_EVENT", (_event) => { this.dispatch(musicSync()); }).then((listener) => { unlisten = listener; diff --git a/src/app/components/controls/play-pause.ts b/src/app/components/controls/play-pause.ts index cdc4590..6072f46 100644 --- a/src/app/components/controls/play-pause.ts +++ b/src/app/components/controls/play-pause.ts @@ -14,10 +14,14 @@ import { Metadata } from "../../injectables/metadata"; " > @if (isPaused()) { - + Play } @else { - + Pause } @@ -68,8 +72,8 @@ import { Metadata } from "../../injectables/metadata"; }) export class PlayPauseBtn { metadata = inject(Metadata); - resume = output(); - pause = output(); + resumeit = output(); + pauseit = output(); isPaused = input.required(); } @@ -88,8 +92,8 @@ export class PlayPauseBtn { `, @@ -115,7 +119,7 @@ export class PlayPauseBtn { }) export class PlayPause { metadata = inject(Metadata); - resume = output(); - pause = output(); + resumeit = output(); + pauseit = output(); isPaused = input.required(); } diff --git a/src/app/services/music.ts b/src/app/services/music.ts index 0dd5569..4402de2 100644 --- a/src/app/services/music.ts +++ b/src/app/services/music.ts @@ -7,7 +7,7 @@ export function play(fsPath: string) { } // TODO: Implement this function -export function importSong(fsPath: string) {} +export function importSong(_fsPath: string) {} export function stop() { return invoke("stop"); diff --git a/src/app/store/tauri.ts b/src/app/store/tauri.ts index 65fe1b8..b0378d3 100644 --- a/src/app/store/tauri.ts +++ b/src/app/store/tauri.ts @@ -1,6 +1,5 @@ import { createAsyncThunk, - createSelector, createSlice, PayloadAction, } from "@reduxjs/toolkit"; diff --git a/src/app/views/currently-playing.component.ts b/src/app/views/currently-playing.component.ts index 524d918..9f31f79 100644 --- a/src/app/views/currently-playing.component.ts +++ b/src/app/views/currently-playing.component.ts @@ -5,7 +5,7 @@ import { pause, play, resume, seek } from "../services/music"; import { pickSong } from "../services/fs"; import { Metadata } from "../injectables/metadata"; import { injectMutation } from "@tanstack/angular-query-experimental"; -import { PlayPauseBtn, PlayPause } from "../components/controls/play-pause"; +import { PlayPause } from "../components/controls/play-pause"; import { zeroPad } from "../utils/strings"; import { ControlType } from "../types/currently-playing"; @@ -168,6 +168,8 @@ export class AlbumArt {

{{ currentTimeFormatted() }}

{{ totalTimeFormatted() }}

+ + diff --git a/src/index.html b/src/index.html index 49089b6..9beb79f 100644 --- a/src/index.html +++ b/src/index.html @@ -1,42 +1,52 @@ - - - Tauri + Angular - - - - - + @font-face { + font-family: "Mona Sans"; + src: + url("/assets/Mona-Sans.woff2") format("woff2 supports variations"), + url("/assets/Mona-Sans.woff2") format("woff2-variations"); + font-weight: 200 900; + font-stretch: 75% 125%; + } - - - - + .visually-hidden { + border: 0; + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; + /* Prevents text wrapping */ + } + + html { + font-family: "Mona Sans"; + } + + + + + + + + \ No newline at end of file