Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

webui: migrate from apollo to tanstack reactquery

+4073 -2720
webui/rockbox/bun.lockb

This is a binary file and will not be displayed.

+9 -5
webui/rockbox/codegen.ts
··· 1 1 import type { CodegenConfig } from "@graphql-codegen/cli"; 2 2 3 3 const config: CodegenConfig = { 4 - schema: "http://127.0.0.1:6062/graphql", 4 + schema: "./graphql.schema.json", 5 5 documents: ["src/**/*.tsx", "src/**/*.ts"], 6 - ignoreNoDocuments: true, // for better experience with the watcher 6 + ignoreNoDocuments: true, 7 7 generates: { 8 8 "src/Hooks/GraphQL.tsx": { 9 9 plugins: [ 10 10 "typescript", 11 11 "typescript-operations", 12 - "typescript-react-apollo", 12 + "typescript-react-query", 13 13 ], 14 14 config: { 15 - withHooks: true, 16 - withHOC: false, 15 + fetcher: "../lib/graphql-client#fetchData", 16 + exposeDocument: true, 17 + exposeQueryKeys: true, 18 + exposeMutationKeys: true, 19 + reactQueryVersion: 5, 17 20 }, 18 21 }, 19 22 "./graphql.schema.json": { 23 + schema: "http://127.0.0.1:6062/graphql", 20 24 plugins: ["introspection"], 21 25 }, 22 26 },
+436 -266
webui/rockbox/deno.lock
··· 1 1 { 2 - "version": "4", 2 + "version": "5", 3 3 "specifiers": { 4 4 "npm:@apollo/client@^3.11.8": "3.11.8_graphql@15.7.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_subscriptions-transport-ws@0.11.0__graphql@15.7.2_@types+react@18.3.11", 5 5 "npm:@apollo/react-components@4": "4.0.0_graphql@15.7.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_subscriptions-transport-ws@0.11.0__graphql@15.7.2_@types+react@18.3.11", ··· 33 33 "npm:@styled-icons/remix-fill@^10.46.0": "10.46.0_react@18.3.1_styled-components@6.1.13__react@18.3.1__react-dom@18.3.1___react@18.3.1_react-dom@18.3.1__react@18.3.1", 34 34 "npm:@styled-icons/simple-icons@^10.46.0": "10.46.0_react@18.3.1_styled-components@6.1.13__react@18.3.1__react-dom@18.3.1___react@18.3.1_react-dom@18.3.1__react@18.3.1", 35 35 "npm:@styled-icons/zondicons@^10.46.0": "10.46.0_react@18.3.1_styled-components@6.1.13__react@18.3.1__react-dom@18.3.1___react@18.3.1_react-dom@18.3.1__react@18.3.1", 36 - "npm:@tanstack/react-query@^5.59.0": "5.59.8_react@18.3.1", 36 + "npm:@tanstack/react-query@^5.100.5": "5.100.5_react@18.3.1", 37 37 "npm:@tanstack/react-table@^8.20.5": "8.20.5_react@18.3.1_react-dom@18.3.1__react@18.3.1", 38 38 "npm:@tanstack/react-virtual@^3.10.8": "3.10.8_react@18.3.1_react-dom@18.3.1__react@18.3.1", 39 39 "npm:@testing-library/jest-dom@^6.5.0": "6.5.0", ··· 47 47 "npm:@types/react@^18.3.11": "18.3.11", 48 48 "npm:@types/wicg-file-system-access@^2023.10.5": "2023.10.5", 49 49 "npm:@vitejs/plugin-react@^4.3.1": "4.3.2_vite@5.4.8__@types+node@22.7.5_@babel+core@7.25.8_@types+node@22.7.5", 50 - "npm:@vitest/ui@^2.1.2": "2.1.2_vitest@2.1.2__@types+node@22.7.5__@vitest+ui@2.1.2__jsdom@25.0.1__@vitest+spy@2.1.2__vite@5.4.8___@types+node@22.7.5_@types+node@22.7.5_jsdom@25.0.1", 50 + "npm:@vitest/ui@^2.1.2": "2.1.2_vitest@2.1.2_@types+node@22.7.5_jsdom@25.0.1", 51 51 "npm:baseui@12.2.0": "12.2.0_react@18.3.1_react-dom@18.3.1__react@18.3.1_styletron-react@6.1.1__react@18.3.1_date-fns@2.30.0_@types+react@18.3.11", 52 52 "npm:bignumber.js@^9.1.2": "9.1.2", 53 53 "npm:cross-env@^7.0.3": "7.0.3", 54 54 "npm:dayjs@^1.11.13": "1.11.13", 55 - "npm:electron-builder@^24.13.3": "24.13.3_dmg-builder@24.13.3", 55 + "npm:electron-builder@^24.13.3": "24.13.3_dmg-builder@24.13.3__electron-builder-squirrel-windows@24.13.3", 56 56 "npm:electron-updater@^6.1.8": "6.3.9", 57 57 "npm:electron@30.0.8": "30.0.8", 58 58 "npm:eslint-plugin-react-hooks@^5.1.0-rc.0": "5.1.0-rc-fb9a90fa48-20240614_eslint@9.12.0", ··· 81 81 "npm:typescript-eslint@^8.0.1": "8.8.1_@typescript-eslint+parser@8.8.1__eslint@9.12.0__typescript@5.6.3_eslint@9.12.0_typescript@5.6.3", 82 82 "npm:typescript@^5.5.3": "5.6.3", 83 83 "npm:vite-plugin-electron-renderer@~0.14.6": "0.14.6", 84 - "npm:vite-plugin-electron@~0.28.8": "0.28.8", 84 + "npm:vite-plugin-electron@~0.28.8": "0.28.8_vite-plugin-electron-renderer@0.14.6", 85 85 "npm:vite@^5.4.1": "5.4.8_@types+node@22.7.5", 86 - "npm:vitest@^2.1.2": "2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2__vitest@2.1.2__@types+node@22.7.5__jsdom@25.0.1_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5" 86 + "npm:vitest@^2.1.2": "2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5" 87 87 }, 88 88 "npm": { 89 89 "7zip-bin@5.2.0": { ··· 120 120 "ts-invariant", 121 121 "tslib@2.7.0", 122 122 "zen-observable-ts" 123 + ], 124 + "optionalPeers": [ 125 + "react@18.3.1", 126 + "react-dom@18.3.1_react@18.3.1", 127 + "subscriptions-transport-ws" 123 128 ] 124 129 }, 125 130 "@apollo/react-components@4.0.0_graphql@15.7.2_react@18.3.1_react-dom@18.3.1__react@18.3.1_subscriptions-transport-ws@0.11.0__graphql@15.7.2_@types+react@18.3.11": { ··· 149 154 "relay-runtime", 150 155 "signedsource", 151 156 "yargs@15.4.1" 152 - ] 157 + ], 158 + "bin": true 153 159 }, 154 160 "@ardatan/sync-fetch@0.0.1": { 155 161 "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", ··· 310 316 "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", 311 317 "dependencies": [ 312 318 "@babel/types" 313 - ] 319 + ], 320 + "bin": true 314 321 }, 315 322 "@babel/plugin-proposal-class-properties@7.18.6_@babel+core@7.25.8": { 316 323 "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", ··· 318 325 "@babel/core", 319 326 "@babel/helper-create-class-features-plugin", 320 327 "@babel/helper-plugin-utils" 321 - ] 328 + ], 329 + "deprecated": true 322 330 }, 323 331 "@babel/plugin-proposal-object-rest-spread@7.20.7_@babel+core@7.25.8": { 324 332 "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", ··· 329 337 "@babel/helper-plugin-utils", 330 338 "@babel/plugin-syntax-object-rest-spread", 331 339 "@babel/plugin-transform-parameters" 332 - ] 340 + ], 341 + "deprecated": true 333 342 }, 334 343 "@babel/plugin-syntax-class-properties@7.12.13_@babel+core@7.25.8": { 335 344 "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", ··· 593 602 "dependencies": [ 594 603 "@date-io/core", 595 604 "date-fns" 596 - ] 597 - }, 598 - "@develar/schema-utils@2.6.5": { 599 - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", 600 - "dependencies": [ 601 - "ajv", 602 - "ajv-keywords@3.5.2" 605 + ], 606 + "optionalPeers": [ 607 + "date-fns" 603 608 ] 604 609 }, 605 610 "@develar/schema-utils@2.6.5_ajv@6.12.6": { 606 611 "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", 607 612 "dependencies": [ 608 613 "ajv", 609 - "ajv-keywords@3.5.2_ajv@6.12.6" 614 + "ajv-keywords" 610 615 ] 611 616 }, 612 617 "@electron/asar@3.2.16": { ··· 615 620 "commander@5.1.0", 616 621 "glob@7.2.3", 617 622 "minimatch@3.1.2" 618 - ] 623 + ], 624 + "bin": true 619 625 }, 620 626 "@electron/get@2.0.3": { 621 627 "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", ··· 623 629 "debug@4.3.7", 624 630 "env-paths", 625 631 "fs-extra@8.1.0", 626 - "global-agent", 627 632 "got", 628 633 "progress", 629 634 "semver@6.3.1", 630 635 "sumchecker" 636 + ], 637 + "optionalDependencies": [ 638 + "global-agent" 631 639 ] 632 640 }, 633 641 "@electron/notarize@2.2.1": { ··· 647 655 "isbinaryfile@4.0.10", 648 656 "minimist", 649 657 "plist" 650 - ] 658 + ], 659 + "bin": true 651 660 }, 652 661 "@electron/universal@1.5.1": { 653 662 "integrity": "sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==", ··· 767 776 "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" 768 777 }, 769 778 "@esbuild/aix-ppc64@0.21.5": { 770 - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==" 779 + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 780 + "os": ["aix"], 781 + "cpu": ["ppc64"] 771 782 }, 772 783 "@esbuild/android-arm64@0.21.5": { 773 - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==" 784 + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 785 + "os": ["android"], 786 + "cpu": ["arm64"] 774 787 }, 775 788 "@esbuild/android-arm@0.21.5": { 776 - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==" 789 + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 790 + "os": ["android"], 791 + "cpu": ["arm"] 777 792 }, 778 793 "@esbuild/android-x64@0.21.5": { 779 - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==" 794 + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 795 + "os": ["android"], 796 + "cpu": ["x64"] 780 797 }, 781 798 "@esbuild/darwin-arm64@0.21.5": { 782 - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==" 799 + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 800 + "os": ["darwin"], 801 + "cpu": ["arm64"] 783 802 }, 784 803 "@esbuild/darwin-x64@0.21.5": { 785 - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==" 804 + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 805 + "os": ["darwin"], 806 + "cpu": ["x64"] 786 807 }, 787 808 "@esbuild/freebsd-arm64@0.21.5": { 788 - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==" 809 + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 810 + "os": ["freebsd"], 811 + "cpu": ["arm64"] 789 812 }, 790 813 "@esbuild/freebsd-x64@0.21.5": { 791 - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==" 814 + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 815 + "os": ["freebsd"], 816 + "cpu": ["x64"] 792 817 }, 793 818 "@esbuild/linux-arm64@0.21.5": { 794 - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==" 819 + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 820 + "os": ["linux"], 821 + "cpu": ["arm64"] 795 822 }, 796 823 "@esbuild/linux-arm@0.21.5": { 797 - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==" 824 + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 825 + "os": ["linux"], 826 + "cpu": ["arm"] 798 827 }, 799 828 "@esbuild/linux-ia32@0.21.5": { 800 - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==" 829 + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 830 + "os": ["linux"], 831 + "cpu": ["ia32"] 801 832 }, 802 833 "@esbuild/linux-loong64@0.21.5": { 803 - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==" 834 + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 835 + "os": ["linux"], 836 + "cpu": ["loong64"] 804 837 }, 805 838 "@esbuild/linux-mips64el@0.21.5": { 806 - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==" 839 + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 840 + "os": ["linux"], 841 + "cpu": ["mips64el"] 807 842 }, 808 843 "@esbuild/linux-ppc64@0.21.5": { 809 - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==" 844 + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 845 + "os": ["linux"], 846 + "cpu": ["ppc64"] 810 847 }, 811 848 "@esbuild/linux-riscv64@0.21.5": { 812 - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==" 849 + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 850 + "os": ["linux"], 851 + "cpu": ["riscv64"] 813 852 }, 814 853 "@esbuild/linux-s390x@0.21.5": { 815 - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==" 854 + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 855 + "os": ["linux"], 856 + "cpu": ["s390x"] 816 857 }, 817 858 "@esbuild/linux-x64@0.21.5": { 818 - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==" 859 + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 860 + "os": ["linux"], 861 + "cpu": ["x64"] 819 862 }, 820 863 "@esbuild/netbsd-x64@0.21.5": { 821 - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==" 864 + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 865 + "os": ["netbsd"], 866 + "cpu": ["x64"] 822 867 }, 823 868 "@esbuild/openbsd-x64@0.21.5": { 824 - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==" 869 + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 870 + "os": ["openbsd"], 871 + "cpu": ["x64"] 825 872 }, 826 873 "@esbuild/sunos-x64@0.21.5": { 827 - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==" 874 + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 875 + "os": ["sunos"], 876 + "cpu": ["x64"] 828 877 }, 829 878 "@esbuild/win32-arm64@0.21.5": { 830 - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==" 879 + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 880 + "os": ["win32"], 881 + "cpu": ["arm64"] 831 882 }, 832 883 "@esbuild/win32-ia32@0.21.5": { 833 - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==" 884 + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 885 + "os": ["win32"], 886 + "cpu": ["ia32"] 834 887 }, 835 888 "@esbuild/win32-x64@0.21.5": { 836 - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==" 889 + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 890 + "os": ["win32"], 891 + "cpu": ["x64"] 837 892 }, 838 893 "@eslint-community/eslint-utils@4.4.0_eslint@8.57.1": { 839 894 "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 840 895 "dependencies": [ 841 - "eslint@8.57.1", 842 896 "eslint-visitor-keys@3.4.3" 843 897 ] 844 898 }, ··· 953 1007 "tslib@2.7.0", 954 1008 "yaml@2.5.1", 955 1009 "yargs@17.7.2" 956 - ] 1010 + ], 1011 + "bin": true 957 1012 }, 958 1013 "@graphql-codegen/client-preset@4.4.0_graphql@15.7.2": { 959 1014 "integrity": "sha512-Q0NHFK7KXLhEaRC/k82ge0dHDfeHJEvvDeV0vV3+oSurHNa/lpxQtbK2BqknZe+JDfZ1YOOvYT93XsAkYD+SQg==", ··· 1344 1399 "scuid", 1345 1400 "tslib@2.7.0", 1346 1401 "yaml-ast-parser" 1347 - ] 1402 + ], 1403 + "deprecated": true 1348 1404 }, 1349 1405 "@graphql-tools/relay-operation-optimizer@6.5.18_graphql@15.7.2": { 1350 1406 "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", ··· 1451 1507 "@humanwhocodes/object-schema", 1452 1508 "debug@4.3.7", 1453 1509 "minimatch@3.1.2" 1454 - ] 1510 + ], 1511 + "deprecated": true 1455 1512 }, 1456 1513 "@humanwhocodes/module-importer@1.0.1": { 1457 1514 "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" 1458 1515 }, 1459 1516 "@humanwhocodes/object-schema@2.0.3": { 1460 - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" 1517 + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 1518 + "deprecated": true 1461 1519 }, 1462 1520 "@humanwhocodes/retry@0.3.1": { 1463 1521 "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" ··· 1491 1549 "@jest/schemas", 1492 1550 "@types/istanbul-lib-coverage", 1493 1551 "@types/istanbul-reports", 1494 - "@types/node@22.5.4", 1552 + "@types/node@22.7.5", 1495 1553 "@types/yargs", 1496 1554 "chalk@4.1.2" 1497 1555 ] ··· 1505 1563 "react-docgen-typescript", 1506 1564 "typescript", 1507 1565 "vite" 1566 + ], 1567 + "optionalPeers": [ 1568 + "typescript" 1508 1569 ] 1509 1570 }, 1510 1571 "@jridgewell/gen-mapping@0.3.5": { ··· 1580 1641 "react-dom@18.3.1_react@18.3.1", 1581 1642 "react-is@18.3.1", 1582 1643 "react-transition-group" 1644 + ], 1645 + "optionalPeers": [ 1646 + "@emotion/react", 1647 + "@emotion/styled", 1648 + "@types/react" 1583 1649 ] 1584 1650 }, 1585 1651 "@mui/private-theming@6.1.5_@types+react@18.3.11_react@18.3.1": { ··· 1590 1656 "@types/react", 1591 1657 "prop-types", 1592 1658 "react@18.3.1" 1659 + ], 1660 + "optionalPeers": [ 1661 + "@types/react" 1593 1662 ] 1594 1663 }, 1595 1664 "@mui/styled-engine@6.1.5_@emotion+react@11.13.3__react@18.3.1_@emotion+styled@11.13.0__@emotion+react@11.13.3___react@18.3.1__react@18.3.1_react@18.3.1": { ··· 1604 1673 "csstype", 1605 1674 "prop-types", 1606 1675 "react@18.3.1" 1676 + ], 1677 + "optionalPeers": [ 1678 + "@emotion/react", 1679 + "@emotion/styled" 1607 1680 ] 1608 1681 }, 1609 1682 "@mui/system@6.1.5_@emotion+react@11.13.3__react@18.3.1_@emotion+styled@11.13.0__@emotion+react@11.13.3___react@18.3.1__react@18.3.1_@types+react@18.3.11_react@18.3.1": { ··· 1621 1694 "csstype", 1622 1695 "prop-types", 1623 1696 "react@18.3.1" 1697 + ], 1698 + "optionalPeers": [ 1699 + "@emotion/react", 1700 + "@emotion/styled", 1701 + "@types/react" 1624 1702 ] 1625 1703 }, 1626 1704 "@mui/types@7.2.18_@types+react@18.3.11": { 1627 1705 "integrity": "sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==", 1628 1706 "dependencies": [ 1707 + "@types/react" 1708 + ], 1709 + "optionalPeers": [ 1629 1710 "@types/react" 1630 1711 ] 1631 1712 }, ··· 1640 1721 "prop-types", 1641 1722 "react@18.3.1", 1642 1723 "react-is@18.3.1" 1724 + ], 1725 + "optionalPeers": [ 1726 + "@types/react" 1643 1727 ] 1644 1728 }, 1645 1729 "@nodelib/fs.scandir@2.1.5": { ··· 1683 1767 ] 1684 1768 }, 1685 1769 "@rollup/rollup-android-arm-eabi@4.24.0": { 1686 - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==" 1770 + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", 1771 + "os": ["android"], 1772 + "cpu": ["arm"] 1687 1773 }, 1688 1774 "@rollup/rollup-android-arm64@4.24.0": { 1689 - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==" 1775 + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", 1776 + "os": ["android"], 1777 + "cpu": ["arm64"] 1690 1778 }, 1691 1779 "@rollup/rollup-darwin-arm64@4.24.0": { 1692 - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==" 1780 + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", 1781 + "os": ["darwin"], 1782 + "cpu": ["arm64"] 1693 1783 }, 1694 1784 "@rollup/rollup-darwin-x64@4.24.0": { 1695 - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==" 1785 + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", 1786 + "os": ["darwin"], 1787 + "cpu": ["x64"] 1696 1788 }, 1697 1789 "@rollup/rollup-linux-arm-gnueabihf@4.24.0": { 1698 - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==" 1790 + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", 1791 + "os": ["linux"], 1792 + "cpu": ["arm"] 1699 1793 }, 1700 1794 "@rollup/rollup-linux-arm-musleabihf@4.24.0": { 1701 - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==" 1795 + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", 1796 + "os": ["linux"], 1797 + "cpu": ["arm"] 1702 1798 }, 1703 1799 "@rollup/rollup-linux-arm64-gnu@4.24.0": { 1704 - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==" 1800 + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", 1801 + "os": ["linux"], 1802 + "cpu": ["arm64"] 1705 1803 }, 1706 1804 "@rollup/rollup-linux-arm64-musl@4.24.0": { 1707 - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==" 1805 + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", 1806 + "os": ["linux"], 1807 + "cpu": ["arm64"] 1708 1808 }, 1709 1809 "@rollup/rollup-linux-powerpc64le-gnu@4.24.0": { 1710 - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==" 1810 + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", 1811 + "os": ["linux"], 1812 + "cpu": ["ppc64"] 1711 1813 }, 1712 1814 "@rollup/rollup-linux-riscv64-gnu@4.24.0": { 1713 - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==" 1815 + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", 1816 + "os": ["linux"], 1817 + "cpu": ["riscv64"] 1714 1818 }, 1715 1819 "@rollup/rollup-linux-s390x-gnu@4.24.0": { 1716 - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==" 1820 + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", 1821 + "os": ["linux"], 1822 + "cpu": ["s390x"] 1717 1823 }, 1718 1824 "@rollup/rollup-linux-x64-gnu@4.24.0": { 1719 - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==" 1825 + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", 1826 + "os": ["linux"], 1827 + "cpu": ["x64"] 1720 1828 }, 1721 1829 "@rollup/rollup-linux-x64-musl@4.24.0": { 1722 - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==" 1830 + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", 1831 + "os": ["linux"], 1832 + "cpu": ["x64"] 1723 1833 }, 1724 1834 "@rollup/rollup-win32-arm64-msvc@4.24.0": { 1725 - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==" 1835 + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", 1836 + "os": ["win32"], 1837 + "cpu": ["arm64"] 1726 1838 }, 1727 1839 "@rollup/rollup-win32-ia32-msvc@4.24.0": { 1728 - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==" 1840 + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", 1841 + "os": ["win32"], 1842 + "cpu": ["ia32"] 1729 1843 }, 1730 1844 "@rollup/rollup-win32-x64-msvc@4.24.0": { 1731 - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==" 1845 + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", 1846 + "os": ["win32"], 1847 + "cpu": ["x64"] 1732 1848 }, 1733 1849 "@rtsao/csstype@2.6.5-forked.0": { 1734 1850 "integrity": "sha512-0HwnY8uPWcCloTgdbbaJG3MbDUfNf6yKWZfCKxFv9yj2Sbp4mSKaIjC7Cr/5L4hMxvrrk85CU3wlAg7EtBBJ1Q==" ··· 1829 1945 "react@18.3.1", 1830 1946 "storybook", 1831 1947 "ts-dedent" 1948 + ], 1949 + "optionalPeers": [ 1950 + "react@18.3.1" 1832 1951 ] 1833 1952 }, 1834 1953 "@storybook/addon-measure@8.3.5_storybook@8.3.5": { ··· 1873 1992 "@storybook/csf@0.1.11", 1874 1993 "@storybook/global", 1875 1994 "@storybook/icons", 1876 - "@types/lodash@4.17.10", 1995 + "@types/lodash", 1877 1996 "color-convert@2.0.1", 1878 1997 "dequal", 1879 1998 "lodash", ··· 1887 2006 "telejson", 1888 2007 "ts-dedent", 1889 2008 "util-deprecate" 2009 + ], 2010 + "optionalPeers": [ 2011 + "react@18.3.1", 2012 + "react-dom@18.3.1_react@18.3.1" 1890 2013 ] 1891 2014 }, 1892 2015 "@storybook/builder-vite@8.3.5_storybook@8.3.5_typescript@5.6.3_vite@5.4.8__@types+node@22.7.5_@types+node@22.7.5": { ··· 1904 2027 "ts-dedent", 1905 2028 "typescript", 1906 2029 "vite" 2030 + ], 2031 + "optionalPeers": [ 2032 + "typescript" 1907 2033 ] 1908 2034 }, 1909 2035 "@storybook/components@8.3.5_storybook@8.3.5": { ··· 2034 2160 "type-fest@2.19.0", 2035 2161 "typescript", 2036 2162 "util-deprecate" 2163 + ], 2164 + "optionalPeers": [ 2165 + "@storybook/test", 2166 + "typescript" 2037 2167 ] 2038 2168 }, 2039 2169 "@storybook/test@8.3.5_storybook@8.3.5_@testing-library+dom@10.4.0": { ··· 2179 2309 "defer-to-connect" 2180 2310 ] 2181 2311 }, 2182 - "@tanstack/query-core@5.59.6": { 2183 - "integrity": "sha512-g58YTHe4ClRrjJ50GY9fas/0zARJVozY0Hs+hcSBOmwZaeKY+to0/LX8wKnnH/EJiLYcC1sHmE11CAS3ncfZBg==" 2312 + "@tanstack/query-core@5.100.5": { 2313 + "integrity": "sha512-t20KrhKkf0HXzqQkPbJ5erhFesup68BAbwFgYmTrS7bxMF7O5MdmL8jUkik4thsG7Hg00fblz30h6yF1d5TxGg==" 2184 2314 }, 2185 - "@tanstack/react-query@5.59.8_react@18.3.1": { 2186 - "integrity": "sha512-jkvObpbjBL6P/PHFIjvNGG19XyhI8sjP6/Mw7CbmgT6SAps/5fZY5pxDicRwAt1YGCiEQvwrJQ6IdbZ8j5CVfw==", 2315 + "@tanstack/react-query@5.100.5_react@18.3.1": { 2316 + "integrity": "sha512-aNwj1mi2v2bQ9IxkyR1grLOUkv3BYWoykHy9KDyLNbjC3tsahbOHJibK+Wjtr1wRhG59/AvJhiJG5OlthaCgJA==", 2187 2317 "dependencies": [ 2188 2318 "@tanstack/query-core", 2189 2319 "react@18.3.1" ··· 2217 2347 "@babel/code-frame", 2218 2348 "@babel/runtime", 2219 2349 "@types/aria-query", 2220 - "aria-query@5.3.0", 2350 + "aria-query", 2221 2351 "chalk@4.1.2", 2222 2352 "dom-accessibility-api@0.5.16", 2223 2353 "lz-string", ··· 2228 2358 "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", 2229 2359 "dependencies": [ 2230 2360 "@adobe/css-tools", 2231 - "aria-query@5.3.2", 2361 + "aria-query", 2232 2362 "chalk@3.0.0", 2233 2363 "css.escape", 2234 2364 "dom-accessibility-api@0.6.3", ··· 2245 2375 "@types/react-dom", 2246 2376 "react@18.3.1", 2247 2377 "react-dom@18.3.1_react@18.3.1" 2378 + ], 2379 + "optionalPeers": [ 2380 + "@types/react", 2381 + "@types/react-dom" 2248 2382 ] 2249 2383 }, 2250 2384 "@testing-library/user-event@14.5.2_@testing-library+dom@10.4.0": { ··· 2292 2426 "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", 2293 2427 "dependencies": [ 2294 2428 "@types/connect", 2295 - "@types/node@22.5.4" 2429 + "@types/node@22.7.5" 2296 2430 ] 2297 2431 }, 2298 2432 "@types/cacheable-request@6.0.3": { ··· 2300 2434 "dependencies": [ 2301 2435 "@types/http-cache-semantics", 2302 2436 "@types/keyv", 2303 - "@types/node@22.5.4", 2437 + "@types/node@22.7.5", 2304 2438 "@types/responselike" 2305 2439 ] 2306 2440 }, 2307 2441 "@types/connect@3.4.38": { 2308 2442 "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 2309 2443 "dependencies": [ 2310 - "@types/node@22.5.4" 2444 + "@types/node@22.7.5" 2311 2445 ] 2312 2446 }, 2313 2447 "@types/debug@4.1.12": { ··· 2331 2465 "@types/express-serve-static-core@4.19.6": { 2332 2466 "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", 2333 2467 "dependencies": [ 2334 - "@types/node@22.5.4", 2468 + "@types/node@22.7.5", 2335 2469 "@types/qs", 2336 2470 "@types/range-parser", 2337 2471 "@types/send" ··· 2352 2486 "@types/fs-extra@9.0.13": { 2353 2487 "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", 2354 2488 "dependencies": [ 2355 - "@types/node@22.5.4" 2489 + "@types/node@22.7.5" 2356 2490 ] 2357 2491 }, 2358 2492 "@types/glob@7.2.0": { 2359 2493 "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 2360 2494 "dependencies": [ 2361 2495 "@types/minimatch", 2362 - "@types/node@22.5.4" 2496 + "@types/node@22.7.5" 2363 2497 ] 2364 2498 }, 2365 2499 "@types/hast@3.0.4": { ··· 2405 2539 "@types/keyv@3.1.4": { 2406 2540 "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", 2407 2541 "dependencies": [ 2408 - "@types/node@22.5.4" 2542 + "@types/node@22.7.5" 2409 2543 ] 2410 - }, 2411 - "@types/lodash@4.17.10": { 2412 - "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==" 2413 2544 }, 2414 2545 "@types/lodash@4.17.13": { 2415 2546 "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==" ··· 2432 2563 "undici-types" 2433 2564 ] 2434 2565 }, 2435 - "@types/node@22.5.4": { 2436 - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", 2437 - "dependencies": [ 2438 - "undici-types" 2439 - ] 2440 - }, 2441 2566 "@types/node@22.7.5": { 2442 2567 "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", 2443 2568 "dependencies": [ ··· 2450 2575 "@types/plist@3.0.5": { 2451 2576 "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", 2452 2577 "dependencies": [ 2453 - "@types/node@22.5.4", 2578 + "@types/node@22.7.5", 2454 2579 "xmlbuilder" 2455 2580 ] 2456 2581 }, ··· 2507 2632 "@types/responselike@1.0.3": { 2508 2633 "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", 2509 2634 "dependencies": [ 2510 - "@types/node@22.5.4" 2635 + "@types/node@22.7.5" 2511 2636 ] 2512 2637 }, 2513 2638 "@types/semver@7.5.8": { ··· 2517 2642 "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", 2518 2643 "dependencies": [ 2519 2644 "@types/mime", 2520 - "@types/node@22.5.4" 2645 + "@types/node@22.7.5" 2521 2646 ] 2522 2647 }, 2523 2648 "@types/serve-static@1.15.7": { 2524 2649 "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", 2525 2650 "dependencies": [ 2526 2651 "@types/http-errors", 2527 - "@types/node@22.5.4", 2652 + "@types/node@22.7.5", 2528 2653 "@types/send" 2529 2654 ] 2530 2655 }, ··· 2549 2674 "@types/ws@8.5.12": { 2550 2675 "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", 2551 2676 "dependencies": [ 2552 - "@types/node@22.5.4" 2677 + "@types/node@22.7.5" 2553 2678 ] 2554 2679 }, 2555 2680 "@types/yargs-parser@21.0.3": { ··· 2564 2689 "@types/yauzl@2.10.3": { 2565 2690 "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", 2566 2691 "dependencies": [ 2567 - "@types/node@22.5.4" 2692 + "@types/node@22.7.5" 2568 2693 ] 2569 2694 }, 2570 2695 "@typescript-eslint/eslint-plugin@8.8.1_@typescript-eslint+parser@8.8.1__eslint@9.12.0__typescript@5.6.3_eslint@9.12.0_typescript@5.6.3": { ··· 2725 2850 "estree-walker@3.0.3", 2726 2851 "magic-string@0.30.11", 2727 2852 "vite" 2853 + ], 2854 + "optionalPeers": [ 2855 + "vite" 2728 2856 ] 2729 2857 }, 2730 2858 "@vitest/pretty-format@2.0.5": { ··· 2766 2894 "tinyspy" 2767 2895 ] 2768 2896 }, 2769 - "@vitest/ui@2.1.2_vitest@2.1.2__@types+node@22.7.5__@vitest+ui@2.1.2___vitest@2.1.2___@types+node@22.7.5___jsdom@25.0.1__jsdom@25.0.1__@vitest+spy@2.1.2__vite@5.4.8___@types+node@22.7.5_@types+node@22.7.5": { 2897 + "@vitest/ui@2.1.2_vitest@2.1.2_@types+node@22.7.5_jsdom@25.0.1": { 2770 2898 "integrity": "sha512-92gcNzkDnmxOxyHzQrQYRsoV9Q0Aay0r4QMLnV+B+lbqlUWa8nDg9ivyLV5mMVTtGirHsYUGGh/zbIA55gBZqA==", 2771 2899 "dependencies": [ 2772 2900 "@vitest/utils@2.1.2", ··· 2776 2904 "sirv", 2777 2905 "tinyglobby", 2778 2906 "tinyrainbow", 2779 - "vitest@2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2__vitest@2.1.2__@types+node@22.7.5__jsdom@25.0.1_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5" 2780 - ] 2781 - }, 2782 - "@vitest/ui@2.1.2_vitest@2.1.2__@types+node@22.7.5__@vitest+ui@2.1.2__jsdom@25.0.1__@vitest+spy@2.1.2__vite@5.4.8___@types+node@22.7.5_@types+node@22.7.5_jsdom@25.0.1": { 2783 - "integrity": "sha512-92gcNzkDnmxOxyHzQrQYRsoV9Q0Aay0r4QMLnV+B+lbqlUWa8nDg9ivyLV5mMVTtGirHsYUGGh/zbIA55gBZqA==", 2784 - "dependencies": [ 2785 - "@vitest/utils@2.1.2", 2786 - "fflate", 2787 - "flatted", 2788 - "pathe", 2789 - "sirv", 2790 - "tinyglobby", 2791 - "tinyrainbow", 2792 - "vitest@2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2__vitest@2.1.2___@types+node@22.7.5___@vitest+ui@2.1.2___jsdom@25.0.1___@vitest+spy@2.1.2___vite@5.4.8____@types+node@22.7.5__@types+node@22.7.5__jsdom@25.0.1_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5" 2907 + "vitest" 2793 2908 ] 2794 2909 }, 2795 2910 "@vitest/utils@2.0.5": { ··· 2856 2971 ] 2857 2972 }, 2858 2973 "@xmldom/xmldom@0.8.10": { 2859 - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" 2974 + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 2975 + "deprecated": true 2860 2976 }, 2861 2977 "accepts@1.3.8": { 2862 2978 "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", ··· 2881 2997 "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 2882 2998 }, 2883 2999 "acorn@7.4.1": { 2884 - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 3000 + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 3001 + "bin": true 2885 3002 }, 2886 3003 "acorn@8.12.1": { 2887 - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==" 3004 + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", 3005 + "bin": true 2888 3006 }, 2889 3007 "agent-base@6.0.2": { 2890 3008 "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", ··· 2904 3022 "clean-stack", 2905 3023 "indent-string" 2906 3024 ] 2907 - }, 2908 - "ajv-keywords@3.5.2": { 2909 - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" 2910 3025 }, 2911 3026 "ajv-keywords@3.5.2_ajv@6.12.6": { 2912 3027 "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", ··· 2956 3071 "app-builder-bin@4.0.0": { 2957 3072 "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==" 2958 3073 }, 2959 - "app-builder-lib@24.13.3": { 2960 - "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", 2961 - "dependencies": [ 2962 - "@develar/schema-utils@2.6.5", 2963 - "@electron/notarize", 2964 - "@electron/osx-sign", 2965 - "@electron/universal", 2966 - "@malept/flatpak-bundler", 2967 - "@types/fs-extra", 2968 - "async-exit-hook", 2969 - "bluebird-lst", 2970 - "builder-util", 2971 - "builder-util-runtime@9.2.4", 2972 - "chromium-pickle-js", 2973 - "debug@4.3.7" 2974 - ] 2975 - }, 2976 - "app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3": { 3074 + "app-builder-lib@24.13.3_dmg-builder@24.13.3__electron-builder-squirrel-windows@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3": { 2977 3075 "integrity": "sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==", 2978 3076 "dependencies": [ 2979 - "@develar/schema-utils@2.6.5_ajv@6.12.6", 3077 + "@develar/schema-utils", 2980 3078 "@electron/notarize", 2981 3079 "@electron/osx-sign", 2982 3080 "@electron/universal", ··· 2988 3086 "builder-util-runtime@9.2.4", 2989 3087 "chromium-pickle-js", 2990 3088 "debug@4.3.7", 2991 - "dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3", 3089 + "dmg-builder", 2992 3090 "ejs", 2993 3091 "electron-builder-squirrel-windows", 2994 3092 "electron-publish", ··· 3057 3155 "dependencies": [ 3058 3156 "dequal" 3059 3157 ] 3060 - }, 3061 - "aria-query@5.3.2": { 3062 - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" 3063 3158 }, 3064 3159 "array-flatten@1.1.1": { 3065 3160 "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" ··· 3196 3291 "react-window", 3197 3292 "resize-observer-polyfill", 3198 3293 "styletron-react" 3199 - ] 3294 + ], 3295 + "scripts": true 3200 3296 }, 3201 3297 "better-opn@3.0.2": { 3202 3298 "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", ··· 3242 3338 ] 3243 3339 }, 3244 3340 "boolean@3.2.0": { 3245 - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" 3341 + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", 3342 + "deprecated": true 3246 3343 }, 3247 3344 "brace-expansion@1.1.11": { 3248 3345 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", ··· 3273 3370 "electron-to-chromium", 3274 3371 "node-releases", 3275 3372 "update-browserslist-db" 3276 - ] 3373 + ], 3374 + "bin": true 3277 3375 }, 3278 3376 "bser@2.1.1": { 3279 3377 "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", ··· 3491 3589 "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 3492 3590 }, 3493 3591 "chromatic@11.12.5": { 3494 - "integrity": "sha512-5z+BXQy3TMyXIzCdCDO9Psc8aMs9kIrCFHhMgYbwA6dTXxAL0oUjHZbICn5h4Ay/fM9cZQPaCH9T7a3myPA8Sw==" 3592 + "integrity": "sha512-5z+BXQy3TMyXIzCdCDO9Psc8aMs9kIrCFHhMgYbwA6dTXxAL0oUjHZbICn5h4Ay/fM9cZQPaCH9T7a3myPA8Sw==", 3593 + "bin": true 3495 3594 }, 3496 3595 "chromium-pickle-js@0.2.0": { 3497 3596 "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==" ··· 3643 3742 "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" 3644 3743 }, 3645 3744 "core-js@2.6.12": { 3646 - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" 3745 + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", 3746 + "deprecated": true, 3747 + "scripts": true 3647 3748 }, 3648 3749 "core-util-is@1.0.2": { 3649 3750 "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" ··· 3666 3767 "parse-json", 3667 3768 "path-type", 3668 3769 "typescript" 3770 + ], 3771 + "optionalPeers": [ 3772 + "typescript" 3669 3773 ] 3670 3774 }, 3671 3775 "crc-32@1.2.2": { 3672 - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" 3776 + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", 3777 + "bin": true 3673 3778 }, 3674 3779 "crc32-stream@4.0.3": { 3675 3780 "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", ··· 3691 3796 "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", 3692 3797 "dependencies": [ 3693 3798 "cross-spawn" 3694 - ] 3799 + ], 3800 + "bin": true 3695 3801 }, 3696 3802 "cross-fetch@3.1.8": { 3697 3803 "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", ··· 3799 3905 "commander@2.20.3", 3800 3906 "iconv-lite@0.4.24", 3801 3907 "rw" 3802 - ] 3908 + ], 3909 + "bin": true 3803 3910 }, 3804 3911 "d3-ease@2.0.0": { 3805 3912 "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" ··· 4074 4181 "path-type" 4075 4182 ] 4076 4183 }, 4077 - "dmg-builder@24.13.3": { 4184 + "dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3": { 4078 4185 "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", 4079 4186 "dependencies": [ 4080 - "app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3", 4187 + "app-builder-lib", 4081 4188 "builder-util", 4082 4189 "builder-util-runtime@9.2.4", 4083 - "dmg-license", 4084 4190 "fs-extra@10.1.0", 4085 4191 "iconv-lite@0.6.3", 4086 4192 "js-yaml" 4087 - ] 4088 - }, 4089 - "dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3": { 4090 - "integrity": "sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==", 4091 - "dependencies": [ 4092 - "app-builder-lib@24.13.3", 4093 - "builder-util", 4094 - "builder-util-runtime@9.2.4", 4095 - "dmg-license", 4096 - "fs-extra@10.1.0", 4097 - "iconv-lite@0.6.3", 4098 - "js-yaml" 4193 + ], 4194 + "optionalDependencies": [ 4195 + "dmg-license" 4099 4196 ] 4100 4197 }, 4101 4198 "dmg-license@1.0.11": { ··· 4109 4206 "plist", 4110 4207 "smart-buffer", 4111 4208 "verror" 4112 - ] 4209 + ], 4210 + "os": ["darwin"], 4211 + "bin": true 4113 4212 }, 4114 4213 "doctrine@3.0.0": { 4115 4214 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", ··· 4159 4258 "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", 4160 4259 "dependencies": [ 4161 4260 "jake" 4162 - ] 4261 + ], 4262 + "bin": true 4163 4263 }, 4164 4264 "electron-builder-squirrel-windows@24.13.3_dmg-builder@24.13.3": { 4165 4265 "integrity": "sha512-oHkV0iogWfyK+ah9ZIvMDpei1m9ZRpdXcvde1wTpra2U8AFDNNpqJdnin5z+PM1GbQ5BoaKCWas2HSjtR0HwMg==", 4166 4266 "dependencies": [ 4167 - "app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3", 4267 + "app-builder-lib", 4168 4268 "archiver", 4169 4269 "builder-util", 4170 4270 "fs-extra@10.1.0" 4171 4271 ] 4172 4272 }, 4173 - "electron-builder@24.13.3_dmg-builder@24.13.3": { 4273 + "electron-builder@24.13.3_dmg-builder@24.13.3__electron-builder-squirrel-windows@24.13.3": { 4174 4274 "integrity": "sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==", 4175 4275 "dependencies": [ 4176 - "app-builder-lib@24.13.3_dmg-builder@24.13.3_electron-builder-squirrel-windows@24.13.3__dmg-builder@24.13.3", 4276 + "app-builder-lib", 4177 4277 "builder-util", 4178 4278 "builder-util-runtime@9.2.4", 4179 4279 "chalk@4.1.2", 4180 - "dmg-builder@24.13.3", 4280 + "dmg-builder", 4181 4281 "fs-extra@10.1.0", 4182 4282 "is-ci", 4183 4283 "lazy-val", 4184 4284 "read-config-file", 4185 4285 "simple-update-notifier", 4186 4286 "yargs@17.7.2" 4187 - ] 4287 + ], 4288 + "bin": true 4188 4289 }, 4189 4290 "electron-publish@24.13.1": { 4190 4291 "integrity": "sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==", ··· 4220 4321 "@electron/get", 4221 4322 "@types/node@20.17.6", 4222 4323 "extract-zip" 4223 - ] 4324 + ], 4325 + "scripts": true, 4326 + "bin": true 4224 4327 }, 4225 4328 "emoji-regex@8.0.0": { 4226 4329 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" ··· 4279 4382 }, 4280 4383 "esbuild@0.21.5": { 4281 4384 "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 4282 - "dependencies": [ 4385 + "optionalDependencies": [ 4283 4386 "@esbuild/aix-ppc64", 4284 4387 "@esbuild/android-arm", 4285 4388 "@esbuild/android-arm64", ··· 4303 4406 "@esbuild/win32-arm64", 4304 4407 "@esbuild/win32-ia32", 4305 4408 "@esbuild/win32-x64" 4306 - ] 4409 + ], 4410 + "scripts": true, 4411 + "bin": true 4307 4412 }, 4308 4413 "escalade@3.2.0": { 4309 4414 "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" ··· 4325 4430 "dependencies": [ 4326 4431 "esprima", 4327 4432 "estraverse@5.3.0", 4328 - "esutils", 4433 + "esutils" 4434 + ], 4435 + "optionalDependencies": [ 4329 4436 "source-map@0.6.1" 4330 - ] 4437 + ], 4438 + "bin": true 4331 4439 }, 4332 4440 "eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614_eslint@9.12.0": { 4333 4441 "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", ··· 4419 4527 "optionator", 4420 4528 "strip-ansi@6.0.1", 4421 4529 "text-table" 4422 - ] 4530 + ], 4531 + "deprecated": true, 4532 + "bin": true 4423 4533 }, 4424 4534 "eslint@9.12.0": { 4425 4535 "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", ··· 4459 4569 "natural-compare", 4460 4570 "optionator", 4461 4571 "text-table" 4462 - ] 4572 + ], 4573 + "bin": true 4463 4574 }, 4464 4575 "espree@10.2.0_acorn@8.12.1": { 4465 4576 "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", ··· 4478 4589 ] 4479 4590 }, 4480 4591 "esprima@4.0.1": { 4481 - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 4592 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 4593 + "bin": true 4482 4594 }, 4483 4595 "esquery@1.6.0": { 4484 4596 "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", ··· 4576 4688 "extract-zip@2.0.1": { 4577 4689 "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 4578 4690 "dependencies": [ 4579 - "@types/yauzl", 4580 4691 "debug@4.3.7", 4581 4692 "get-stream", 4582 4693 "yauzl" 4583 - ] 4694 + ], 4695 + "optionalDependencies": [ 4696 + "@types/yauzl" 4697 + ], 4698 + "bin": true 4584 4699 }, 4585 4700 "extsprintf@1.4.1": { 4586 4701 "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==" ··· 4649 4764 "fdir@6.4.0_picomatch@4.0.2": { 4650 4765 "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==", 4651 4766 "dependencies": [ 4767 + "picomatch@4.0.2" 4768 + ], 4769 + "optionalPeers": [ 4652 4770 "picomatch@4.0.2" 4653 4771 ] 4654 4772 }, ··· 4828 4946 "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 4829 4947 }, 4830 4948 "fsevents@2.3.3": { 4831 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" 4949 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 4950 + "os": ["darwin"], 4951 + "scripts": true 4832 4952 }, 4833 4953 "function-bind@1.1.2": { 4834 4954 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" ··· 4886 5006 "minipass@7.1.2", 4887 5007 "package-json-from-dist", 4888 5008 "path-scurry" 4889 - ] 5009 + ], 5010 + "deprecated": true, 5011 + "bin": true 4890 5012 }, 4891 5013 "glob@7.2.3": { 4892 5014 "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", ··· 4897 5019 "minimatch@3.1.2", 4898 5020 "once", 4899 5021 "path-is-absolute" 4900 - ] 5022 + ], 5023 + "deprecated": true 4901 5024 }, 4902 5025 "global-agent@3.0.0": { 4903 5026 "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", ··· 5148 5271 "dependencies": [ 5149 5272 "cli-truncate", 5150 5273 "node-addon-api" 5151 - ] 5274 + ], 5275 + "os": ["darwin"] 5152 5276 }, 5153 5277 "iconv-lite@0.4.24": { 5154 5278 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", ··· 5192 5316 "dependencies": [ 5193 5317 "once", 5194 5318 "wrappy" 5195 - ] 5319 + ], 5320 + "deprecated": true 5196 5321 }, 5197 5322 "inherits@2.0.4": { 5198 5323 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" ··· 5262 5387 "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", 5263 5388 "dependencies": [ 5264 5389 "ci-info" 5265 - ] 5390 + ], 5391 + "bin": true 5266 5392 }, 5267 5393 "is-core-module@2.15.1": { 5268 5394 "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", ··· 5271 5397 ] 5272 5398 }, 5273 5399 "is-docker@2.2.1": { 5274 - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" 5400 + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", 5401 + "bin": true 5275 5402 }, 5276 5403 "is-extglob@2.1.1": { 5277 5404 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" ··· 5375 5502 "jackspeak@3.4.3": { 5376 5503 "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 5377 5504 "dependencies": [ 5378 - "@isaacs/cliui", 5505 + "@isaacs/cliui" 5506 + ], 5507 + "optionalDependencies": [ 5379 5508 "@pkgjs/parseargs" 5380 5509 ] 5381 5510 }, ··· 5386 5515 "chalk@4.1.2", 5387 5516 "filelist", 5388 5517 "minimatch@3.1.2" 5389 - ] 5518 + ], 5519 + "bin": true 5390 5520 }, 5391 5521 "jest-diff@29.7.0": { 5392 5522 "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", ··· 5427 5557 "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", 5428 5558 "dependencies": [ 5429 5559 "@jest/types", 5430 - "@types/node@22.5.4", 5560 + "@types/node@22.7.5", 5431 5561 "chalk@4.1.2", 5432 5562 "ci-info", 5433 5563 "graceful-fs", ··· 5435 5565 ] 5436 5566 }, 5437 5567 "jiti@1.21.6": { 5438 - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==" 5568 + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", 5569 + "bin": true 5439 5570 }, 5440 5571 "jiti@2.3.3": { 5441 - "integrity": "sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==" 5572 + "integrity": "sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==", 5573 + "bin": true 5442 5574 }, 5443 5575 "jose@5.9.3": { 5444 5576 "integrity": "sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==" ··· 5450 5582 "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 5451 5583 "dependencies": [ 5452 5584 "argparse" 5453 - ] 5585 + ], 5586 + "bin": true 5454 5587 }, 5455 5588 "jsdoc-type-pratt-parser@4.1.0": { 5456 5589 "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==" ··· 5482 5615 ] 5483 5616 }, 5484 5617 "jsesc@3.0.2": { 5485 - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" 5618 + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", 5619 + "bin": true 5486 5620 }, 5487 5621 "json-buffer@3.0.1": { 5488 5622 "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" ··· 5507 5641 ] 5508 5642 }, 5509 5643 "json5@2.2.3": { 5510 - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" 5644 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 5645 + "bin": true 5511 5646 }, 5512 5647 "jsonfile@4.0.0": { 5513 5648 "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 5514 - "dependencies": [ 5649 + "optionalDependencies": [ 5515 5650 "graceful-fs" 5516 5651 ] 5517 5652 }, 5518 5653 "jsonfile@6.1.0": { 5519 5654 "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 5520 5655 "dependencies": [ 5521 - "graceful-fs", 5522 5656 "universalify@2.0.1" 5657 + ], 5658 + "optionalDependencies": [ 5659 + "graceful-fs" 5523 5660 ] 5524 5661 }, 5525 5662 "just-extend@4.2.1": { ··· 5591 5728 "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" 5592 5729 }, 5593 5730 "lodash.isequal@4.5.0": { 5594 - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" 5731 + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", 5732 + "deprecated": true 5595 5733 }, 5596 5734 "lodash.isplainobject@4.0.6": { 5597 5735 "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" ··· 5631 5769 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 5632 5770 "dependencies": [ 5633 5771 "js-tokens" 5634 - ] 5772 + ], 5773 + "bin": true 5635 5774 }, 5636 5775 "loupe@3.1.2": { 5637 5776 "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==" ··· 5667 5806 ] 5668 5807 }, 5669 5808 "lz-string@1.5.0": { 5670 - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" 5809 + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", 5810 + "bin": true 5671 5811 }, 5672 5812 "magic-string@0.27.0": { 5673 5813 "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", ··· 5727 5867 "integrity": "sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==", 5728 5868 "dependencies": [ 5729 5869 "@types/node@22.7.5" 5870 + ], 5871 + "optionalPeers": [ 5872 + "@types/node@22.7.5" 5730 5873 ] 5731 5874 }, 5732 5875 "methods@1.1.2": { ··· 5749 5892 ] 5750 5893 }, 5751 5894 "mime@1.6.0": { 5752 - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 5895 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 5896 + "bin": true 5753 5897 }, 5754 5898 "mime@2.6.0": { 5755 - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" 5899 + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", 5900 + "bin": true 5756 5901 }, 5757 5902 "mimic-fn@2.1.0": { 5758 5903 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" ··· 5807 5952 ] 5808 5953 }, 5809 5954 "mkdirp@1.0.4": { 5810 - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 5955 + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 5956 + "bin": true 5811 5957 }, 5812 5958 "mockdate@3.0.5": { 5813 5959 "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==" ··· 5825 5971 "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 5826 5972 }, 5827 5973 "nanoid@3.3.7": { 5828 - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" 5974 + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 5975 + "bin": true 5829 5976 }, 5830 5977 "natural-compare@1.4.0": { 5831 5978 "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" ··· 6116 6263 ] 6117 6264 }, 6118 6265 "popper.js@1.16.1": { 6119 - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" 6266 + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", 6267 + "deprecated": true 6120 6268 }, 6121 6269 "possible-typed-array-names@1.0.0": { 6122 6270 "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" ··· 6156 6304 "dependencies": [ 6157 6305 "@jest/schemas", 6158 6306 "ansi-styles@5.2.0", 6159 - "react-is@18.1.0" 6307 + "react-is@18.3.1" 6160 6308 ] 6161 6309 }, 6162 6310 "process-nextick-args@2.0.1": { ··· 6328 6476 "react-clientside-effect", 6329 6477 "use-callback-ref", 6330 6478 "use-sidecar" 6479 + ], 6480 + "optionalPeers": [ 6481 + "@types/react" 6331 6482 ] 6332 6483 }, 6333 6484 "react-hook-form@7.53.0_react@18.3.1": { ··· 6431 6582 "@types/react", 6432 6583 "react@18.3.1", 6433 6584 "tslib@2.7.0" 6585 + ], 6586 + "optionalPeers": [ 6587 + "@types/react" 6434 6588 ] 6435 6589 }, 6436 6590 "react-virtualized-auto-sizer@1.0.24_react@18.3.1_react-dom@18.3.1__react@18.3.1": { ··· 6501 6655 "isarray", 6502 6656 "process-nextick-args", 6503 6657 "safe-buffer@5.1.2", 6504 - "string_decoder@1.1.1", 6658 + "string_decoder", 6505 6659 "util-deprecate" 6506 6660 ] 6507 6661 }, ··· 6509 6663 "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 6510 6664 "dependencies": [ 6511 6665 "inherits", 6512 - "string_decoder@1.3.0", 6666 + "string_decoder", 6513 6667 "util-deprecate" 6514 6668 ] 6515 6669 }, ··· 6551 6705 "dependencies": [ 6552 6706 "@types/react", 6553 6707 "react@18.3.1" 6708 + ], 6709 + "optionalPeers": [ 6710 + "@types/react", 6711 + "react@18.3.1" 6554 6712 ] 6555 6713 }, 6556 6714 "rehype-external-links@3.0.0": { ··· 6618 6776 "is-core-module", 6619 6777 "path-parse", 6620 6778 "supports-preserve-symlinks-flag" 6621 - ] 6779 + ], 6780 + "bin": true 6622 6781 }, 6623 6782 "response-iterator@0.2.6": { 6624 6783 "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" ··· 6649 6808 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 6650 6809 "dependencies": [ 6651 6810 "glob@7.2.3" 6652 - ] 6811 + ], 6812 + "deprecated": true, 6813 + "bin": true 6653 6814 }, 6654 6815 "roarr@2.15.4": { 6655 6816 "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", ··· 6665 6826 "rollup@4.24.0": { 6666 6827 "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", 6667 6828 "dependencies": [ 6829 + "@types/estree@1.0.6" 6830 + ], 6831 + "optionalDependencies": [ 6668 6832 "@rollup/rollup-android-arm-eabi", 6669 6833 "@rollup/rollup-android-arm64", 6670 6834 "@rollup/rollup-darwin-arm64", ··· 6681 6845 "@rollup/rollup-win32-arm64-msvc", 6682 6846 "@rollup/rollup-win32-ia32-msvc", 6683 6847 "@rollup/rollup-win32-x64-msvc", 6684 - "@types/estree@1.0.6", 6685 6848 "fsevents" 6686 - ] 6849 + ], 6850 + "bin": true 6687 6851 }, 6688 6852 "rrweb-cssom@0.7.1": { 6689 6853 "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" ··· 6750 6914 "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" 6751 6915 }, 6752 6916 "semver@6.3.1": { 6753 - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" 6917 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 6918 + "bin": true 6754 6919 }, 6755 6920 "semver@7.6.3": { 6756 - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" 6921 + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 6922 + "bin": true 6757 6923 }, 6758 6924 "send@0.19.0": { 6759 6925 "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", ··· 6945 7111 "integrity": "sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==", 6946 7112 "dependencies": [ 6947 7113 "@storybook/core" 6948 - ] 7114 + ], 7115 + "bin": true 6949 7116 }, 6950 7117 "streamsearch@1.1.0": { 6951 7118 "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" ··· 6973 7140 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 6974 7141 "dependencies": [ 6975 7142 "safe-buffer@5.1.2" 6976 - ] 6977 - }, 6978 - "string_decoder@1.3.0": { 6979 - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 6980 - "dependencies": [ 6981 - "safe-buffer@5.2.1" 6982 7143 ] 6983 7144 }, 6984 7145 "strip-ansi@6.0.1": { ··· 7065 7226 "iterall", 7066 7227 "symbol-observable@1.2.0", 7067 7228 "ws@7.5.10" 7068 - ] 7229 + ], 7230 + "deprecated": true 7069 7231 }, 7070 7232 "sumchecker@3.0.1": { 7071 7233 "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", ··· 7122 7284 "minizlib", 7123 7285 "mkdirp", 7124 7286 "yallist@4.0.0" 7125 - ] 7287 + ], 7288 + "deprecated": true 7126 7289 }, 7127 7290 "telejson@7.2.0": { 7128 7291 "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", ··· 7187 7350 "integrity": "sha512-q9GOap6q3KCsLMdOjXhWU5jVZ8/1dIib898JBRLsN+tBhENpBDcAVQbE0epADOjw11FhQQy9AcbqKGBQPUfTQA==", 7188 7351 "dependencies": [ 7189 7352 "tldts-core" 7190 - ] 7353 + ], 7354 + "bin": true 7191 7355 }, 7192 7356 "tmp-promise@3.0.3": { 7193 7357 "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", ··· 7325 7489 ] 7326 7490 }, 7327 7491 "typescript@5.6.3": { 7328 - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==" 7492 + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", 7493 + "bin": true 7329 7494 }, 7330 7495 "ua-parser-js@1.0.39": { 7331 - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==" 7496 + "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", 7497 + "bin": true 7332 7498 }, 7333 7499 "unc-path-regex@0.1.2": { 7334 7500 "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" ··· 7385 7551 "browserslist", 7386 7552 "escalade", 7387 7553 "picocolors" 7388 - ] 7554 + ], 7555 + "bin": true 7389 7556 }, 7390 7557 "upper-case-first@2.0.2": { 7391 7558 "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", ··· 7414 7581 "@types/react", 7415 7582 "react@18.3.1", 7416 7583 "tslib@2.7.0" 7584 + ], 7585 + "optionalPeers": [ 7586 + "@types/react" 7417 7587 ] 7418 7588 }, 7419 7589 "use-sidecar@1.1.2_@types+react@18.3.11_react@18.3.1": { ··· 7423 7593 "detect-node-es", 7424 7594 "react@18.3.1", 7425 7595 "tslib@2.7.0" 7596 + ], 7597 + "optionalPeers": [ 7598 + "@types/react" 7426 7599 ] 7427 7600 }, 7428 7601 "utf8-byte-length@1.0.5": { ··· 7445 7618 "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 7446 7619 }, 7447 7620 "uuid@9.0.1": { 7448 - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" 7621 + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", 7622 + "bin": true 7449 7623 }, 7450 7624 "value-or-promise@1.0.12": { 7451 7625 "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==" ··· 7468 7642 "debug@4.3.7", 7469 7643 "pathe", 7470 7644 "vite" 7471 - ] 7645 + ], 7646 + "bin": true 7472 7647 }, 7473 7648 "vite-plugin-electron-renderer@0.14.6": { 7474 7649 "integrity": "sha512-oqkWFa7kQIkvHXG7+Mnl1RTroA4sP0yesKatmAy0gjZC4VwUqlvF9IvOpHd1fpLWsqYX/eZlVxlhULNtaQ78Jw==" 7475 7650 }, 7476 - "vite-plugin-electron@0.28.8": { 7477 - "integrity": "sha512-ir+B21oSGK9j23OEvt4EXyco9xDCaF6OGFe0V/8Zc0yL2+HMyQ6mmNQEIhXsEsZCSfIowBpwQBeHH4wVsfraeg==" 7651 + "vite-plugin-electron@0.28.8_vite-plugin-electron-renderer@0.14.6": { 7652 + "integrity": "sha512-ir+B21oSGK9j23OEvt4EXyco9xDCaF6OGFe0V/8Zc0yL2+HMyQ6mmNQEIhXsEsZCSfIowBpwQBeHH4wVsfraeg==", 7653 + "dependencies": [ 7654 + "vite-plugin-electron-renderer" 7655 + ], 7656 + "optionalPeers": [ 7657 + "vite-plugin-electron-renderer" 7658 + ] 7478 7659 }, 7479 7660 "vite@5.4.8_@types+node@22.7.5": { 7480 7661 "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", 7481 7662 "dependencies": [ 7482 7663 "@types/node@22.7.5", 7483 7664 "esbuild", 7484 - "fsevents", 7485 7665 "postcss@8.4.47", 7486 7666 "rollup" 7487 - ] 7667 + ], 7668 + "optionalDependencies": [ 7669 + "fsevents" 7670 + ], 7671 + "optionalPeers": [ 7672 + "@types/node@22.7.5" 7673 + ], 7674 + "bin": true 7488 7675 }, 7489 - "vitest@2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2__vitest@2.1.2__@types+node@22.7.5__jsdom@25.0.1_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5": { 7676 + "vitest@2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5": { 7490 7677 "integrity": "sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==", 7491 7678 "dependencies": [ 7492 7679 "@types/node@22.7.5", ··· 7496 7683 "@vitest/runner", 7497 7684 "@vitest/snapshot", 7498 7685 "@vitest/spy@2.1.2", 7499 - "@vitest/ui@2.1.2_vitest@2.1.2__@types+node@22.7.5__@vitest+ui@2.1.2___vitest@2.1.2___@types+node@22.7.5___jsdom@25.0.1__jsdom@25.0.1__@vitest+spy@2.1.2__vite@5.4.8___@types+node@22.7.5_@types+node@22.7.5", 7686 + "@vitest/ui", 7500 7687 "@vitest/utils@2.1.2", 7501 7688 "chai", 7502 7689 "debug@4.3.7", ··· 7511 7698 "vite", 7512 7699 "vite-node", 7513 7700 "why-is-node-running" 7514 - ] 7515 - }, 7516 - "vitest@2.1.2_@types+node@22.7.5_@vitest+ui@2.1.2__vitest@2.1.2___@types+node@22.7.5___@vitest+ui@2.1.2___jsdom@25.0.1___@vitest+spy@2.1.2___vite@5.4.8____@types+node@22.7.5__@types+node@22.7.5__jsdom@25.0.1_jsdom@25.0.1_@vitest+spy@2.1.2_vite@5.4.8__@types+node@22.7.5": { 7517 - "integrity": "sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==", 7518 - "dependencies": [ 7701 + ], 7702 + "optionalPeers": [ 7519 7703 "@types/node@22.7.5", 7520 - "@vitest/expect@2.1.2", 7521 - "@vitest/mocker", 7522 - "@vitest/pretty-format@2.1.2", 7523 - "@vitest/runner", 7524 - "@vitest/snapshot", 7525 - "@vitest/spy@2.1.2", 7526 - "@vitest/ui@2.1.2_vitest@2.1.2__@types+node@22.7.5__@vitest+ui@2.1.2__jsdom@25.0.1__@vitest+spy@2.1.2__vite@5.4.8___@types+node@22.7.5_@types+node@22.7.5_jsdom@25.0.1", 7527 - "@vitest/utils@2.1.2", 7528 - "chai", 7529 - "debug@4.3.7", 7530 - "jsdom", 7531 - "magic-string@0.30.11", 7532 - "pathe", 7533 - "std-env", 7534 - "tinybench", 7535 - "tinyexec", 7536 - "tinypool", 7537 - "tinyrainbow", 7538 - "vite", 7539 - "vite-node", 7540 - "why-is-node-running" 7541 - ] 7704 + "@vitest/ui", 7705 + "jsdom" 7706 + ], 7707 + "bin": true 7542 7708 }, 7543 7709 "w3c-xmlserializer@5.0.0": { 7544 7710 "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", ··· 7571 7737 "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", 7572 7738 "dependencies": [ 7573 7739 "iconv-lite@0.6.3" 7574 - ] 7740 + ], 7741 + "deprecated": true 7575 7742 }, 7576 7743 "whatwg-mimetype@4.0.0": { 7577 7744 "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==" ··· 7607 7774 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 7608 7775 "dependencies": [ 7609 7776 "isexe" 7610 - ] 7777 + ], 7778 + "bin": true 7611 7779 }, 7612 7780 "why-is-node-running@2.3.0": { 7613 7781 "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", 7614 7782 "dependencies": [ 7615 7783 "siginfo", 7616 7784 "stackback" 7617 - ] 7785 + ], 7786 + "bin": true 7618 7787 }, 7619 7788 "word-wrap@1.2.5": { 7620 7789 "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" ··· 7680 7849 "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 7681 7850 }, 7682 7851 "yaml@2.5.1": { 7683 - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==" 7852 + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", 7853 + "bin": true 7684 7854 }, 7685 7855 "yargs-parser@18.1.3": { 7686 7856 "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", ··· 7783 7953 "npm:@styled-icons/remix-fill@^10.46.0", 7784 7954 "npm:@styled-icons/simple-icons@^10.46.0", 7785 7955 "npm:@styled-icons/zondicons@^10.46.0", 7786 - "npm:@tanstack/react-query@^5.59.0", 7956 + "npm:@tanstack/react-query@^5.100.5", 7787 7957 "npm:@tanstack/react-table@^8.20.5", 7788 7958 "npm:@tanstack/react-virtual@^3.10.8", 7789 7959 "npm:@testing-library/jest-dom@^6.5.0",
+1633 -24
webui/rockbox/graphql.schema.json
··· 429 429 "possibleTypes": null 430 430 }, 431 431 { 432 + "kind": "INPUT_OBJECT", 433 + "name": "CompressorSettingsInput", 434 + "description": null, 435 + "fields": null, 436 + "inputFields": [ 437 + { 438 + "name": "attackTime", 439 + "description": null, 440 + "type": { 441 + "kind": "NON_NULL", 442 + "name": null, 443 + "ofType": { 444 + "kind": "SCALAR", 445 + "name": "Int", 446 + "ofType": null 447 + } 448 + }, 449 + "defaultValue": null, 450 + "isDeprecated": false, 451 + "deprecationReason": null 452 + }, 453 + { 454 + "name": "knee", 455 + "description": null, 456 + "type": { 457 + "kind": "NON_NULL", 458 + "name": null, 459 + "ofType": { 460 + "kind": "SCALAR", 461 + "name": "Int", 462 + "ofType": null 463 + } 464 + }, 465 + "defaultValue": null, 466 + "isDeprecated": false, 467 + "deprecationReason": null 468 + }, 469 + { 470 + "name": "makeupGain", 471 + "description": null, 472 + "type": { 473 + "kind": "NON_NULL", 474 + "name": null, 475 + "ofType": { 476 + "kind": "SCALAR", 477 + "name": "Int", 478 + "ofType": null 479 + } 480 + }, 481 + "defaultValue": null, 482 + "isDeprecated": false, 483 + "deprecationReason": null 484 + }, 485 + { 486 + "name": "ratio", 487 + "description": null, 488 + "type": { 489 + "kind": "NON_NULL", 490 + "name": null, 491 + "ofType": { 492 + "kind": "SCALAR", 493 + "name": "Int", 494 + "ofType": null 495 + } 496 + }, 497 + "defaultValue": null, 498 + "isDeprecated": false, 499 + "deprecationReason": null 500 + }, 501 + { 502 + "name": "releaseTime", 503 + "description": null, 504 + "type": { 505 + "kind": "NON_NULL", 506 + "name": null, 507 + "ofType": { 508 + "kind": "SCALAR", 509 + "name": "Int", 510 + "ofType": null 511 + } 512 + }, 513 + "defaultValue": null, 514 + "isDeprecated": false, 515 + "deprecationReason": null 516 + }, 517 + { 518 + "name": "threshold", 519 + "description": null, 520 + "type": { 521 + "kind": "NON_NULL", 522 + "name": null, 523 + "ofType": { 524 + "kind": "SCALAR", 525 + "name": "Int", 526 + "ofType": null 527 + } 528 + }, 529 + "defaultValue": null, 530 + "isDeprecated": false, 531 + "deprecationReason": null 532 + } 533 + ], 534 + "interfaces": null, 535 + "enumValues": null, 536 + "possibleTypes": null 537 + }, 538 + { 432 539 "kind": "OBJECT", 433 540 "name": "Device", 434 541 "description": null, ··· 822 929 }, 823 930 { 824 931 "kind": "SCALAR", 825 - "name": "Float", 826 - "description": "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).", 827 - "fields": null, 828 - "inputFields": null, 829 - "interfaces": null, 830 - "enumValues": null, 831 - "possibleTypes": null 832 - }, 833 - { 834 - "kind": "SCALAR", 835 - "name": "ID", 836 - "description": "The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.", 837 - "fields": null, 838 - "inputFields": null, 839 - "interfaces": null, 840 - "enumValues": null, 841 - "possibleTypes": null 842 - }, 843 - { 844 - "kind": "SCALAR", 845 932 "name": "Int", 846 933 "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", 847 934 "fields": null, ··· 856 943 "description": null, 857 944 "fields": [ 858 945 { 946 + "name": "addTracksToSavedPlaylist", 947 + "description": null, 948 + "args": [ 949 + { 950 + "name": "playlistId", 951 + "description": null, 952 + "type": { 953 + "kind": "NON_NULL", 954 + "name": null, 955 + "ofType": { 956 + "kind": "SCALAR", 957 + "name": "String", 958 + "ofType": null 959 + } 960 + }, 961 + "defaultValue": null, 962 + "isDeprecated": false, 963 + "deprecationReason": null 964 + }, 965 + { 966 + "name": "trackIds", 967 + "description": null, 968 + "type": { 969 + "kind": "NON_NULL", 970 + "name": null, 971 + "ofType": { 972 + "kind": "LIST", 973 + "name": null, 974 + "ofType": { 975 + "kind": "NON_NULL", 976 + "name": null, 977 + "ofType": { 978 + "kind": "SCALAR", 979 + "name": "String", 980 + "ofType": null 981 + } 982 + } 983 + } 984 + }, 985 + "defaultValue": null, 986 + "isDeprecated": false, 987 + "deprecationReason": null 988 + } 989 + ], 990 + "type": { 991 + "kind": "NON_NULL", 992 + "name": null, 993 + "ofType": { 994 + "kind": "SCALAR", 995 + "name": "Boolean", 996 + "ofType": null 997 + } 998 + }, 999 + "isDeprecated": false, 1000 + "deprecationReason": null 1001 + }, 1002 + { 859 1003 "name": "adjustVolume", 860 1004 "description": null, 861 1005 "args": [ ··· 938 1082 "deprecationReason": null 939 1083 }, 940 1084 { 1085 + "name": "createPlaylistFolder", 1086 + "description": null, 1087 + "args": [ 1088 + { 1089 + "name": "name", 1090 + "description": null, 1091 + "type": { 1092 + "kind": "NON_NULL", 1093 + "name": null, 1094 + "ofType": { 1095 + "kind": "SCALAR", 1096 + "name": "String", 1097 + "ofType": null 1098 + } 1099 + }, 1100 + "defaultValue": null, 1101 + "isDeprecated": false, 1102 + "deprecationReason": null 1103 + } 1104 + ], 1105 + "type": { 1106 + "kind": "NON_NULL", 1107 + "name": null, 1108 + "ofType": { 1109 + "kind": "OBJECT", 1110 + "name": "SavedPlaylistFolder", 1111 + "ofType": null 1112 + } 1113 + }, 1114 + "isDeprecated": false, 1115 + "deprecationReason": null 1116 + }, 1117 + { 1118 + "name": "createSavedPlaylist", 1119 + "description": null, 1120 + "args": [ 1121 + { 1122 + "name": "description", 1123 + "description": null, 1124 + "type": { 1125 + "kind": "SCALAR", 1126 + "name": "String", 1127 + "ofType": null 1128 + }, 1129 + "defaultValue": null, 1130 + "isDeprecated": false, 1131 + "deprecationReason": null 1132 + }, 1133 + { 1134 + "name": "folderId", 1135 + "description": null, 1136 + "type": { 1137 + "kind": "SCALAR", 1138 + "name": "String", 1139 + "ofType": null 1140 + }, 1141 + "defaultValue": null, 1142 + "isDeprecated": false, 1143 + "deprecationReason": null 1144 + }, 1145 + { 1146 + "name": "image", 1147 + "description": null, 1148 + "type": { 1149 + "kind": "SCALAR", 1150 + "name": "String", 1151 + "ofType": null 1152 + }, 1153 + "defaultValue": null, 1154 + "isDeprecated": false, 1155 + "deprecationReason": null 1156 + }, 1157 + { 1158 + "name": "name", 1159 + "description": null, 1160 + "type": { 1161 + "kind": "NON_NULL", 1162 + "name": null, 1163 + "ofType": { 1164 + "kind": "SCALAR", 1165 + "name": "String", 1166 + "ofType": null 1167 + } 1168 + }, 1169 + "defaultValue": null, 1170 + "isDeprecated": false, 1171 + "deprecationReason": null 1172 + }, 1173 + { 1174 + "name": "trackIds", 1175 + "description": null, 1176 + "type": { 1177 + "kind": "LIST", 1178 + "name": null, 1179 + "ofType": { 1180 + "kind": "NON_NULL", 1181 + "name": null, 1182 + "ofType": { 1183 + "kind": "SCALAR", 1184 + "name": "String", 1185 + "ofType": null 1186 + } 1187 + } 1188 + }, 1189 + "defaultValue": null, 1190 + "isDeprecated": false, 1191 + "deprecationReason": null 1192 + } 1193 + ], 1194 + "type": { 1195 + "kind": "NON_NULL", 1196 + "name": null, 1197 + "ofType": { 1198 + "kind": "OBJECT", 1199 + "name": "SavedPlaylist", 1200 + "ofType": null 1201 + } 1202 + }, 1203 + "isDeprecated": false, 1204 + "deprecationReason": null 1205 + }, 1206 + { 1207 + "name": "createSmartPlaylist", 1208 + "description": null, 1209 + "args": [ 1210 + { 1211 + "name": "description", 1212 + "description": null, 1213 + "type": { 1214 + "kind": "SCALAR", 1215 + "name": "String", 1216 + "ofType": null 1217 + }, 1218 + "defaultValue": null, 1219 + "isDeprecated": false, 1220 + "deprecationReason": null 1221 + }, 1222 + { 1223 + "name": "folderId", 1224 + "description": null, 1225 + "type": { 1226 + "kind": "SCALAR", 1227 + "name": "String", 1228 + "ofType": null 1229 + }, 1230 + "defaultValue": null, 1231 + "isDeprecated": false, 1232 + "deprecationReason": null 1233 + }, 1234 + { 1235 + "name": "image", 1236 + "description": null, 1237 + "type": { 1238 + "kind": "SCALAR", 1239 + "name": "String", 1240 + "ofType": null 1241 + }, 1242 + "defaultValue": null, 1243 + "isDeprecated": false, 1244 + "deprecationReason": null 1245 + }, 1246 + { 1247 + "name": "name", 1248 + "description": null, 1249 + "type": { 1250 + "kind": "NON_NULL", 1251 + "name": null, 1252 + "ofType": { 1253 + "kind": "SCALAR", 1254 + "name": "String", 1255 + "ofType": null 1256 + } 1257 + }, 1258 + "defaultValue": null, 1259 + "isDeprecated": false, 1260 + "deprecationReason": null 1261 + }, 1262 + { 1263 + "name": "rules", 1264 + "description": null, 1265 + "type": { 1266 + "kind": "NON_NULL", 1267 + "name": null, 1268 + "ofType": { 1269 + "kind": "SCALAR", 1270 + "name": "String", 1271 + "ofType": null 1272 + } 1273 + }, 1274 + "defaultValue": null, 1275 + "isDeprecated": false, 1276 + "deprecationReason": null 1277 + } 1278 + ], 1279 + "type": { 1280 + "kind": "NON_NULL", 1281 + "name": null, 1282 + "ofType": { 1283 + "kind": "OBJECT", 1284 + "name": "SmartPlaylist", 1285 + "ofType": null 1286 + } 1287 + }, 1288 + "isDeprecated": false, 1289 + "deprecationReason": null 1290 + }, 1291 + { 1292 + "name": "deletePlaylistFolder", 1293 + "description": null, 1294 + "args": [ 1295 + { 1296 + "name": "id", 1297 + "description": null, 1298 + "type": { 1299 + "kind": "NON_NULL", 1300 + "name": null, 1301 + "ofType": { 1302 + "kind": "SCALAR", 1303 + "name": "String", 1304 + "ofType": null 1305 + } 1306 + }, 1307 + "defaultValue": null, 1308 + "isDeprecated": false, 1309 + "deprecationReason": null 1310 + } 1311 + ], 1312 + "type": { 1313 + "kind": "NON_NULL", 1314 + "name": null, 1315 + "ofType": { 1316 + "kind": "SCALAR", 1317 + "name": "Boolean", 1318 + "ofType": null 1319 + } 1320 + }, 1321 + "isDeprecated": false, 1322 + "deprecationReason": null 1323 + }, 1324 + { 1325 + "name": "deleteSavedPlaylist", 1326 + "description": null, 1327 + "args": [ 1328 + { 1329 + "name": "id", 1330 + "description": null, 1331 + "type": { 1332 + "kind": "NON_NULL", 1333 + "name": null, 1334 + "ofType": { 1335 + "kind": "SCALAR", 1336 + "name": "String", 1337 + "ofType": null 1338 + } 1339 + }, 1340 + "defaultValue": null, 1341 + "isDeprecated": false, 1342 + "deprecationReason": null 1343 + } 1344 + ], 1345 + "type": { 1346 + "kind": "NON_NULL", 1347 + "name": null, 1348 + "ofType": { 1349 + "kind": "SCALAR", 1350 + "name": "Boolean", 1351 + "ofType": null 1352 + } 1353 + }, 1354 + "isDeprecated": false, 1355 + "deprecationReason": null 1356 + }, 1357 + { 1358 + "name": "deleteSmartPlaylist", 1359 + "description": null, 1360 + "args": [ 1361 + { 1362 + "name": "id", 1363 + "description": null, 1364 + "type": { 1365 + "kind": "NON_NULL", 1366 + "name": null, 1367 + "ofType": { 1368 + "kind": "SCALAR", 1369 + "name": "String", 1370 + "ofType": null 1371 + } 1372 + }, 1373 + "defaultValue": null, 1374 + "isDeprecated": false, 1375 + "deprecationReason": null 1376 + } 1377 + ], 1378 + "type": { 1379 + "kind": "NON_NULL", 1380 + "name": null, 1381 + "ofType": { 1382 + "kind": "SCALAR", 1383 + "name": "Boolean", 1384 + "ofType": null 1385 + } 1386 + }, 1387 + "isDeprecated": false, 1388 + "deprecationReason": null 1389 + }, 1390 + { 941 1391 "name": "disconnect", 942 1392 "description": null, 943 1393 "args": [ ··· 1821 2271 "deprecationReason": null 1822 2272 }, 1823 2273 { 2274 + "name": "playSavedPlaylist", 2275 + "description": null, 2276 + "args": [ 2277 + { 2278 + "name": "playlistId", 2279 + "description": null, 2280 + "type": { 2281 + "kind": "NON_NULL", 2282 + "name": null, 2283 + "ofType": { 2284 + "kind": "SCALAR", 2285 + "name": "String", 2286 + "ofType": null 2287 + } 2288 + }, 2289 + "defaultValue": null, 2290 + "isDeprecated": false, 2291 + "deprecationReason": null 2292 + } 2293 + ], 2294 + "type": { 2295 + "kind": "NON_NULL", 2296 + "name": null, 2297 + "ofType": { 2298 + "kind": "SCALAR", 2299 + "name": "Boolean", 2300 + "ofType": null 2301 + } 2302 + }, 2303 + "isDeprecated": false, 2304 + "deprecationReason": null 2305 + }, 2306 + { 2307 + "name": "playSmartPlaylist", 2308 + "description": null, 2309 + "args": [ 2310 + { 2311 + "name": "id", 2312 + "description": null, 2313 + "type": { 2314 + "kind": "NON_NULL", 2315 + "name": null, 2316 + "ofType": { 2317 + "kind": "SCALAR", 2318 + "name": "String", 2319 + "ofType": null 2320 + } 2321 + }, 2322 + "defaultValue": null, 2323 + "isDeprecated": false, 2324 + "deprecationReason": null 2325 + } 2326 + ], 2327 + "type": { 2328 + "kind": "NON_NULL", 2329 + "name": null, 2330 + "ofType": { 2331 + "kind": "SCALAR", 2332 + "name": "Boolean", 2333 + "ofType": null 2334 + } 2335 + }, 2336 + "isDeprecated": false, 2337 + "deprecationReason": null 2338 + }, 2339 + { 1824 2340 "name": "playTrack", 1825 2341 "description": null, 1826 2342 "args": [ ··· 2077 2593 "deprecationReason": null 2078 2594 }, 2079 2595 { 2596 + "name": "recordTrackPlayed", 2597 + "description": null, 2598 + "args": [ 2599 + { 2600 + "name": "trackId", 2601 + "description": null, 2602 + "type": { 2603 + "kind": "NON_NULL", 2604 + "name": null, 2605 + "ofType": { 2606 + "kind": "SCALAR", 2607 + "name": "String", 2608 + "ofType": null 2609 + } 2610 + }, 2611 + "defaultValue": null, 2612 + "isDeprecated": false, 2613 + "deprecationReason": null 2614 + } 2615 + ], 2616 + "type": { 2617 + "kind": "NON_NULL", 2618 + "name": null, 2619 + "ofType": { 2620 + "kind": "SCALAR", 2621 + "name": "Boolean", 2622 + "ofType": null 2623 + } 2624 + }, 2625 + "isDeprecated": false, 2626 + "deprecationReason": null 2627 + }, 2628 + { 2629 + "name": "recordTrackSkipped", 2630 + "description": null, 2631 + "args": [ 2632 + { 2633 + "name": "trackId", 2634 + "description": null, 2635 + "type": { 2636 + "kind": "NON_NULL", 2637 + "name": null, 2638 + "ofType": { 2639 + "kind": "SCALAR", 2640 + "name": "String", 2641 + "ofType": null 2642 + } 2643 + }, 2644 + "defaultValue": null, 2645 + "isDeprecated": false, 2646 + "deprecationReason": null 2647 + } 2648 + ], 2649 + "type": { 2650 + "kind": "NON_NULL", 2651 + "name": null, 2652 + "ofType": { 2653 + "kind": "SCALAR", 2654 + "name": "Boolean", 2655 + "ofType": null 2656 + } 2657 + }, 2658 + "isDeprecated": false, 2659 + "deprecationReason": null 2660 + }, 2661 + { 2662 + "name": "removeTrackFromSavedPlaylist", 2663 + "description": null, 2664 + "args": [ 2665 + { 2666 + "name": "playlistId", 2667 + "description": null, 2668 + "type": { 2669 + "kind": "NON_NULL", 2670 + "name": null, 2671 + "ofType": { 2672 + "kind": "SCALAR", 2673 + "name": "String", 2674 + "ofType": null 2675 + } 2676 + }, 2677 + "defaultValue": null, 2678 + "isDeprecated": false, 2679 + "deprecationReason": null 2680 + }, 2681 + { 2682 + "name": "trackId", 2683 + "description": null, 2684 + "type": { 2685 + "kind": "NON_NULL", 2686 + "name": null, 2687 + "ofType": { 2688 + "kind": "SCALAR", 2689 + "name": "String", 2690 + "ofType": null 2691 + } 2692 + }, 2693 + "defaultValue": null, 2694 + "isDeprecated": false, 2695 + "deprecationReason": null 2696 + } 2697 + ], 2698 + "type": { 2699 + "kind": "NON_NULL", 2700 + "name": null, 2701 + "ofType": { 2702 + "kind": "SCALAR", 2703 + "name": "Boolean", 2704 + "ofType": null 2705 + } 2706 + }, 2707 + "isDeprecated": false, 2708 + "deprecationReason": null 2709 + }, 2710 + { 2080 2711 "name": "resume", 2081 2712 "description": null, 2082 2713 "args": [], ··· 2334 2965 }, 2335 2966 "isDeprecated": false, 2336 2967 "deprecationReason": null 2968 + }, 2969 + { 2970 + "name": "updateSavedPlaylist", 2971 + "description": null, 2972 + "args": [ 2973 + { 2974 + "name": "description", 2975 + "description": null, 2976 + "type": { 2977 + "kind": "SCALAR", 2978 + "name": "String", 2979 + "ofType": null 2980 + }, 2981 + "defaultValue": null, 2982 + "isDeprecated": false, 2983 + "deprecationReason": null 2984 + }, 2985 + { 2986 + "name": "folderId", 2987 + "description": null, 2988 + "type": { 2989 + "kind": "SCALAR", 2990 + "name": "String", 2991 + "ofType": null 2992 + }, 2993 + "defaultValue": null, 2994 + "isDeprecated": false, 2995 + "deprecationReason": null 2996 + }, 2997 + { 2998 + "name": "id", 2999 + "description": null, 3000 + "type": { 3001 + "kind": "NON_NULL", 3002 + "name": null, 3003 + "ofType": { 3004 + "kind": "SCALAR", 3005 + "name": "String", 3006 + "ofType": null 3007 + } 3008 + }, 3009 + "defaultValue": null, 3010 + "isDeprecated": false, 3011 + "deprecationReason": null 3012 + }, 3013 + { 3014 + "name": "image", 3015 + "description": null, 3016 + "type": { 3017 + "kind": "SCALAR", 3018 + "name": "String", 3019 + "ofType": null 3020 + }, 3021 + "defaultValue": null, 3022 + "isDeprecated": false, 3023 + "deprecationReason": null 3024 + }, 3025 + { 3026 + "name": "name", 3027 + "description": null, 3028 + "type": { 3029 + "kind": "NON_NULL", 3030 + "name": null, 3031 + "ofType": { 3032 + "kind": "SCALAR", 3033 + "name": "String", 3034 + "ofType": null 3035 + } 3036 + }, 3037 + "defaultValue": null, 3038 + "isDeprecated": false, 3039 + "deprecationReason": null 3040 + } 3041 + ], 3042 + "type": { 3043 + "kind": "NON_NULL", 3044 + "name": null, 3045 + "ofType": { 3046 + "kind": "SCALAR", 3047 + "name": "Boolean", 3048 + "ofType": null 3049 + } 3050 + }, 3051 + "isDeprecated": false, 3052 + "deprecationReason": null 3053 + }, 3054 + { 3055 + "name": "updateSmartPlaylist", 3056 + "description": null, 3057 + "args": [ 3058 + { 3059 + "name": "description", 3060 + "description": null, 3061 + "type": { 3062 + "kind": "SCALAR", 3063 + "name": "String", 3064 + "ofType": null 3065 + }, 3066 + "defaultValue": null, 3067 + "isDeprecated": false, 3068 + "deprecationReason": null 3069 + }, 3070 + { 3071 + "name": "folderId", 3072 + "description": null, 3073 + "type": { 3074 + "kind": "SCALAR", 3075 + "name": "String", 3076 + "ofType": null 3077 + }, 3078 + "defaultValue": null, 3079 + "isDeprecated": false, 3080 + "deprecationReason": null 3081 + }, 3082 + { 3083 + "name": "id", 3084 + "description": null, 3085 + "type": { 3086 + "kind": "NON_NULL", 3087 + "name": null, 3088 + "ofType": { 3089 + "kind": "SCALAR", 3090 + "name": "String", 3091 + "ofType": null 3092 + } 3093 + }, 3094 + "defaultValue": null, 3095 + "isDeprecated": false, 3096 + "deprecationReason": null 3097 + }, 3098 + { 3099 + "name": "image", 3100 + "description": null, 3101 + "type": { 3102 + "kind": "SCALAR", 3103 + "name": "String", 3104 + "ofType": null 3105 + }, 3106 + "defaultValue": null, 3107 + "isDeprecated": false, 3108 + "deprecationReason": null 3109 + }, 3110 + { 3111 + "name": "name", 3112 + "description": null, 3113 + "type": { 3114 + "kind": "NON_NULL", 3115 + "name": null, 3116 + "ofType": { 3117 + "kind": "SCALAR", 3118 + "name": "String", 3119 + "ofType": null 3120 + } 3121 + }, 3122 + "defaultValue": null, 3123 + "isDeprecated": false, 3124 + "deprecationReason": null 3125 + }, 3126 + { 3127 + "name": "rules", 3128 + "description": null, 3129 + "type": { 3130 + "kind": "NON_NULL", 3131 + "name": null, 3132 + "ofType": { 3133 + "kind": "SCALAR", 3134 + "name": "String", 3135 + "ofType": null 3136 + } 3137 + }, 3138 + "defaultValue": null, 3139 + "isDeprecated": false, 3140 + "deprecationReason": null 3141 + } 3142 + ], 3143 + "type": { 3144 + "kind": "NON_NULL", 3145 + "name": null, 3146 + "ofType": { 3147 + "kind": "SCALAR", 3148 + "name": "Boolean", 3149 + "ofType": null 3150 + } 3151 + }, 3152 + "isDeprecated": false, 3153 + "deprecationReason": null 2337 3154 } 2338 3155 ], 2339 3156 "inputFields": null, ··· 2389 3206 "type": { 2390 3207 "kind": "SCALAR", 2391 3208 "name": "Int", 3209 + "ofType": null 3210 + }, 3211 + "defaultValue": null, 3212 + "isDeprecated": false, 3213 + "deprecationReason": null 3214 + }, 3215 + { 3216 + "name": "compressorSettings", 3217 + "description": null, 3218 + "type": { 3219 + "kind": "INPUT_OBJECT", 3220 + "name": "CompressorSettingsInput", 2392 3221 "ofType": null 2393 3222 }, 2394 3223 "defaultValue": null, ··· 3212 4041 "deprecationReason": null 3213 4042 }, 3214 4043 { 4044 + "name": "playlistFolders", 4045 + "description": null, 4046 + "args": [], 4047 + "type": { 4048 + "kind": "NON_NULL", 4049 + "name": null, 4050 + "ofType": { 4051 + "kind": "LIST", 4052 + "name": null, 4053 + "ofType": { 4054 + "kind": "NON_NULL", 4055 + "name": null, 4056 + "ofType": { 4057 + "kind": "OBJECT", 4058 + "name": "SavedPlaylistFolder", 4059 + "ofType": null 4060 + } 4061 + } 4062 + } 4063 + }, 4064 + "isDeprecated": false, 4065 + "deprecationReason": null 4066 + }, 4067 + { 3215 4068 "name": "playlistGetCurrent", 3216 4069 "description": null, 3217 4070 "args": [], ··· 3244 4097 "deprecationReason": null 3245 4098 }, 3246 4099 { 4100 + "name": "savedPlaylist", 4101 + "description": null, 4102 + "args": [ 4103 + { 4104 + "name": "id", 4105 + "description": null, 4106 + "type": { 4107 + "kind": "NON_NULL", 4108 + "name": null, 4109 + "ofType": { 4110 + "kind": "SCALAR", 4111 + "name": "String", 4112 + "ofType": null 4113 + } 4114 + }, 4115 + "defaultValue": null, 4116 + "isDeprecated": false, 4117 + "deprecationReason": null 4118 + } 4119 + ], 4120 + "type": { 4121 + "kind": "OBJECT", 4122 + "name": "SavedPlaylist", 4123 + "ofType": null 4124 + }, 4125 + "isDeprecated": false, 4126 + "deprecationReason": null 4127 + }, 4128 + { 4129 + "name": "savedPlaylistTrackIds", 4130 + "description": null, 4131 + "args": [ 4132 + { 4133 + "name": "playlistId", 4134 + "description": null, 4135 + "type": { 4136 + "kind": "NON_NULL", 4137 + "name": null, 4138 + "ofType": { 4139 + "kind": "SCALAR", 4140 + "name": "String", 4141 + "ofType": null 4142 + } 4143 + }, 4144 + "defaultValue": null, 4145 + "isDeprecated": false, 4146 + "deprecationReason": null 4147 + } 4148 + ], 4149 + "type": { 4150 + "kind": "NON_NULL", 4151 + "name": null, 4152 + "ofType": { 4153 + "kind": "LIST", 4154 + "name": null, 4155 + "ofType": { 4156 + "kind": "NON_NULL", 4157 + "name": null, 4158 + "ofType": { 4159 + "kind": "SCALAR", 4160 + "name": "String", 4161 + "ofType": null 4162 + } 4163 + } 4164 + } 4165 + }, 4166 + "isDeprecated": false, 4167 + "deprecationReason": null 4168 + }, 4169 + { 4170 + "name": "savedPlaylistTracks", 4171 + "description": null, 4172 + "args": [ 4173 + { 4174 + "name": "playlistId", 4175 + "description": null, 4176 + "type": { 4177 + "kind": "NON_NULL", 4178 + "name": null, 4179 + "ofType": { 4180 + "kind": "SCALAR", 4181 + "name": "String", 4182 + "ofType": null 4183 + } 4184 + }, 4185 + "defaultValue": null, 4186 + "isDeprecated": false, 4187 + "deprecationReason": null 4188 + } 4189 + ], 4190 + "type": { 4191 + "kind": "NON_NULL", 4192 + "name": null, 4193 + "ofType": { 4194 + "kind": "LIST", 4195 + "name": null, 4196 + "ofType": { 4197 + "kind": "NON_NULL", 4198 + "name": null, 4199 + "ofType": { 4200 + "kind": "OBJECT", 4201 + "name": "Track", 4202 + "ofType": null 4203 + } 4204 + } 4205 + } 4206 + }, 4207 + "isDeprecated": false, 4208 + "deprecationReason": null 4209 + }, 4210 + { 4211 + "name": "savedPlaylists", 4212 + "description": null, 4213 + "args": [ 4214 + { 4215 + "name": "folderId", 4216 + "description": null, 4217 + "type": { 4218 + "kind": "SCALAR", 4219 + "name": "String", 4220 + "ofType": null 4221 + }, 4222 + "defaultValue": null, 4223 + "isDeprecated": false, 4224 + "deprecationReason": null 4225 + } 4226 + ], 4227 + "type": { 4228 + "kind": "NON_NULL", 4229 + "name": null, 4230 + "ofType": { 4231 + "kind": "LIST", 4232 + "name": null, 4233 + "ofType": { 4234 + "kind": "NON_NULL", 4235 + "name": null, 4236 + "ofType": { 4237 + "kind": "OBJECT", 4238 + "name": "SavedPlaylist", 4239 + "ofType": null 4240 + } 4241 + } 4242 + } 4243 + }, 4244 + "isDeprecated": false, 4245 + "deprecationReason": null 4246 + }, 4247 + { 3247 4248 "name": "search", 3248 4249 "description": null, 3249 4250 "args": [ ··· 3277 4278 "deprecationReason": null 3278 4279 }, 3279 4280 { 4281 + "name": "smartPlaylist", 4282 + "description": null, 4283 + "args": [ 4284 + { 4285 + "name": "id", 4286 + "description": null, 4287 + "type": { 4288 + "kind": "NON_NULL", 4289 + "name": null, 4290 + "ofType": { 4291 + "kind": "SCALAR", 4292 + "name": "String", 4293 + "ofType": null 4294 + } 4295 + }, 4296 + "defaultValue": null, 4297 + "isDeprecated": false, 4298 + "deprecationReason": null 4299 + } 4300 + ], 4301 + "type": { 4302 + "kind": "OBJECT", 4303 + "name": "SmartPlaylist", 4304 + "ofType": null 4305 + }, 4306 + "isDeprecated": false, 4307 + "deprecationReason": null 4308 + }, 4309 + { 4310 + "name": "smartPlaylistTrackIds", 4311 + "description": null, 4312 + "args": [ 4313 + { 4314 + "name": "id", 4315 + "description": null, 4316 + "type": { 4317 + "kind": "NON_NULL", 4318 + "name": null, 4319 + "ofType": { 4320 + "kind": "SCALAR", 4321 + "name": "String", 4322 + "ofType": null 4323 + } 4324 + }, 4325 + "defaultValue": null, 4326 + "isDeprecated": false, 4327 + "deprecationReason": null 4328 + } 4329 + ], 4330 + "type": { 4331 + "kind": "NON_NULL", 4332 + "name": null, 4333 + "ofType": { 4334 + "kind": "LIST", 4335 + "name": null, 4336 + "ofType": { 4337 + "kind": "NON_NULL", 4338 + "name": null, 4339 + "ofType": { 4340 + "kind": "SCALAR", 4341 + "name": "String", 4342 + "ofType": null 4343 + } 4344 + } 4345 + } 4346 + }, 4347 + "isDeprecated": false, 4348 + "deprecationReason": null 4349 + }, 4350 + { 4351 + "name": "smartPlaylistTracks", 4352 + "description": null, 4353 + "args": [ 4354 + { 4355 + "name": "id", 4356 + "description": null, 4357 + "type": { 4358 + "kind": "NON_NULL", 4359 + "name": null, 4360 + "ofType": { 4361 + "kind": "SCALAR", 4362 + "name": "String", 4363 + "ofType": null 4364 + } 4365 + }, 4366 + "defaultValue": null, 4367 + "isDeprecated": false, 4368 + "deprecationReason": null 4369 + } 4370 + ], 4371 + "type": { 4372 + "kind": "NON_NULL", 4373 + "name": null, 4374 + "ofType": { 4375 + "kind": "LIST", 4376 + "name": null, 4377 + "ofType": { 4378 + "kind": "NON_NULL", 4379 + "name": null, 4380 + "ofType": { 4381 + "kind": "OBJECT", 4382 + "name": "Track", 4383 + "ofType": null 4384 + } 4385 + } 4386 + } 4387 + }, 4388 + "isDeprecated": false, 4389 + "deprecationReason": null 4390 + }, 4391 + { 4392 + "name": "smartPlaylists", 4393 + "description": null, 4394 + "args": [], 4395 + "type": { 4396 + "kind": "NON_NULL", 4397 + "name": null, 4398 + "ofType": { 4399 + "kind": "LIST", 4400 + "name": null, 4401 + "ofType": { 4402 + "kind": "NON_NULL", 4403 + "name": null, 4404 + "ofType": { 4405 + "kind": "OBJECT", 4406 + "name": "SmartPlaylist", 4407 + "ofType": null 4408 + } 4409 + } 4410 + } 4411 + }, 4412 + "isDeprecated": false, 4413 + "deprecationReason": null 4414 + }, 4415 + { 3280 4416 "name": "soundCurrent", 3281 4417 "description": null, 3282 4418 "args": [], ··· 3364 4500 "type": { 3365 4501 "kind": "OBJECT", 3366 4502 "name": "Track", 4503 + "ofType": null 4504 + }, 4505 + "isDeprecated": false, 4506 + "deprecationReason": null 4507 + }, 4508 + { 4509 + "name": "trackStats", 4510 + "description": null, 4511 + "args": [ 4512 + { 4513 + "name": "trackId", 4514 + "description": null, 4515 + "type": { 4516 + "kind": "NON_NULL", 4517 + "name": null, 4518 + "ofType": { 4519 + "kind": "SCALAR", 4520 + "name": "String", 4521 + "ofType": null 4522 + } 4523 + }, 4524 + "defaultValue": null, 4525 + "isDeprecated": false, 4526 + "deprecationReason": null 4527 + } 4528 + ], 4529 + "type": { 4530 + "kind": "OBJECT", 4531 + "name": "TrackStats", 3367 4532 "ofType": null 3368 4533 }, 3369 4534 "isDeprecated": false, ··· 3556 4721 }, 3557 4722 { 3558 4723 "kind": "OBJECT", 4724 + "name": "SavedPlaylist", 4725 + "description": null, 4726 + "fields": [ 4727 + { 4728 + "name": "createdAt", 4729 + "description": null, 4730 + "args": [], 4731 + "type": { 4732 + "kind": "NON_NULL", 4733 + "name": null, 4734 + "ofType": { 4735 + "kind": "SCALAR", 4736 + "name": "Int", 4737 + "ofType": null 4738 + } 4739 + }, 4740 + "isDeprecated": false, 4741 + "deprecationReason": null 4742 + }, 4743 + { 4744 + "name": "description", 4745 + "description": null, 4746 + "args": [], 4747 + "type": { 4748 + "kind": "SCALAR", 4749 + "name": "String", 4750 + "ofType": null 4751 + }, 4752 + "isDeprecated": false, 4753 + "deprecationReason": null 4754 + }, 4755 + { 4756 + "name": "folderId", 4757 + "description": null, 4758 + "args": [], 4759 + "type": { 4760 + "kind": "SCALAR", 4761 + "name": "String", 4762 + "ofType": null 4763 + }, 4764 + "isDeprecated": false, 4765 + "deprecationReason": null 4766 + }, 4767 + { 4768 + "name": "id", 4769 + "description": null, 4770 + "args": [], 4771 + "type": { 4772 + "kind": "NON_NULL", 4773 + "name": null, 4774 + "ofType": { 4775 + "kind": "SCALAR", 4776 + "name": "String", 4777 + "ofType": null 4778 + } 4779 + }, 4780 + "isDeprecated": false, 4781 + "deprecationReason": null 4782 + }, 4783 + { 4784 + "name": "image", 4785 + "description": null, 4786 + "args": [], 4787 + "type": { 4788 + "kind": "SCALAR", 4789 + "name": "String", 4790 + "ofType": null 4791 + }, 4792 + "isDeprecated": false, 4793 + "deprecationReason": null 4794 + }, 4795 + { 4796 + "name": "name", 4797 + "description": null, 4798 + "args": [], 4799 + "type": { 4800 + "kind": "NON_NULL", 4801 + "name": null, 4802 + "ofType": { 4803 + "kind": "SCALAR", 4804 + "name": "String", 4805 + "ofType": null 4806 + } 4807 + }, 4808 + "isDeprecated": false, 4809 + "deprecationReason": null 4810 + }, 4811 + { 4812 + "name": "trackCount", 4813 + "description": null, 4814 + "args": [], 4815 + "type": { 4816 + "kind": "NON_NULL", 4817 + "name": null, 4818 + "ofType": { 4819 + "kind": "SCALAR", 4820 + "name": "Int", 4821 + "ofType": null 4822 + } 4823 + }, 4824 + "isDeprecated": false, 4825 + "deprecationReason": null 4826 + }, 4827 + { 4828 + "name": "updatedAt", 4829 + "description": null, 4830 + "args": [], 4831 + "type": { 4832 + "kind": "NON_NULL", 4833 + "name": null, 4834 + "ofType": { 4835 + "kind": "SCALAR", 4836 + "name": "Int", 4837 + "ofType": null 4838 + } 4839 + }, 4840 + "isDeprecated": false, 4841 + "deprecationReason": null 4842 + } 4843 + ], 4844 + "inputFields": null, 4845 + "interfaces": [], 4846 + "enumValues": null, 4847 + "possibleTypes": null 4848 + }, 4849 + { 4850 + "kind": "OBJECT", 4851 + "name": "SavedPlaylistFolder", 4852 + "description": null, 4853 + "fields": [ 4854 + { 4855 + "name": "createdAt", 4856 + "description": null, 4857 + "args": [], 4858 + "type": { 4859 + "kind": "NON_NULL", 4860 + "name": null, 4861 + "ofType": { 4862 + "kind": "SCALAR", 4863 + "name": "Int", 4864 + "ofType": null 4865 + } 4866 + }, 4867 + "isDeprecated": false, 4868 + "deprecationReason": null 4869 + }, 4870 + { 4871 + "name": "id", 4872 + "description": null, 4873 + "args": [], 4874 + "type": { 4875 + "kind": "NON_NULL", 4876 + "name": null, 4877 + "ofType": { 4878 + "kind": "SCALAR", 4879 + "name": "String", 4880 + "ofType": null 4881 + } 4882 + }, 4883 + "isDeprecated": false, 4884 + "deprecationReason": null 4885 + }, 4886 + { 4887 + "name": "name", 4888 + "description": null, 4889 + "args": [], 4890 + "type": { 4891 + "kind": "NON_NULL", 4892 + "name": null, 4893 + "ofType": { 4894 + "kind": "SCALAR", 4895 + "name": "String", 4896 + "ofType": null 4897 + } 4898 + }, 4899 + "isDeprecated": false, 4900 + "deprecationReason": null 4901 + }, 4902 + { 4903 + "name": "updatedAt", 4904 + "description": null, 4905 + "args": [], 4906 + "type": { 4907 + "kind": "NON_NULL", 4908 + "name": null, 4909 + "ofType": { 4910 + "kind": "SCALAR", 4911 + "name": "Int", 4912 + "ofType": null 4913 + } 4914 + }, 4915 + "isDeprecated": false, 4916 + "deprecationReason": null 4917 + } 4918 + ], 4919 + "inputFields": null, 4920 + "interfaces": [], 4921 + "enumValues": null, 4922 + "possibleTypes": null 4923 + }, 4924 + { 4925 + "kind": "OBJECT", 3559 4926 "name": "SearchResults", 3560 4927 "description": null, 3561 4928 "fields": [ ··· 3674 5041 "ofType": null 3675 5042 } 3676 5043 } 5044 + } 5045 + }, 5046 + "isDeprecated": false, 5047 + "deprecationReason": null 5048 + } 5049 + ], 5050 + "inputFields": null, 5051 + "interfaces": [], 5052 + "enumValues": null, 5053 + "possibleTypes": null 5054 + }, 5055 + { 5056 + "kind": "OBJECT", 5057 + "name": "SmartPlaylist", 5058 + "description": null, 5059 + "fields": [ 5060 + { 5061 + "name": "createdAt", 5062 + "description": null, 5063 + "args": [], 5064 + "type": { 5065 + "kind": "NON_NULL", 5066 + "name": null, 5067 + "ofType": { 5068 + "kind": "SCALAR", 5069 + "name": "Int", 5070 + "ofType": null 5071 + } 5072 + }, 5073 + "isDeprecated": false, 5074 + "deprecationReason": null 5075 + }, 5076 + { 5077 + "name": "description", 5078 + "description": null, 5079 + "args": [], 5080 + "type": { 5081 + "kind": "SCALAR", 5082 + "name": "String", 5083 + "ofType": null 5084 + }, 5085 + "isDeprecated": false, 5086 + "deprecationReason": null 5087 + }, 5088 + { 5089 + "name": "folderId", 5090 + "description": null, 5091 + "args": [], 5092 + "type": { 5093 + "kind": "SCALAR", 5094 + "name": "String", 5095 + "ofType": null 5096 + }, 5097 + "isDeprecated": false, 5098 + "deprecationReason": null 5099 + }, 5100 + { 5101 + "name": "id", 5102 + "description": null, 5103 + "args": [], 5104 + "type": { 5105 + "kind": "NON_NULL", 5106 + "name": null, 5107 + "ofType": { 5108 + "kind": "SCALAR", 5109 + "name": "String", 5110 + "ofType": null 5111 + } 5112 + }, 5113 + "isDeprecated": false, 5114 + "deprecationReason": null 5115 + }, 5116 + { 5117 + "name": "image", 5118 + "description": null, 5119 + "args": [], 5120 + "type": { 5121 + "kind": "SCALAR", 5122 + "name": "String", 5123 + "ofType": null 5124 + }, 5125 + "isDeprecated": false, 5126 + "deprecationReason": null 5127 + }, 5128 + { 5129 + "name": "isSystem", 5130 + "description": null, 5131 + "args": [], 5132 + "type": { 5133 + "kind": "NON_NULL", 5134 + "name": null, 5135 + "ofType": { 5136 + "kind": "SCALAR", 5137 + "name": "Boolean", 5138 + "ofType": null 5139 + } 5140 + }, 5141 + "isDeprecated": false, 5142 + "deprecationReason": null 5143 + }, 5144 + { 5145 + "name": "name", 5146 + "description": null, 5147 + "args": [], 5148 + "type": { 5149 + "kind": "NON_NULL", 5150 + "name": null, 5151 + "ofType": { 5152 + "kind": "SCALAR", 5153 + "name": "String", 5154 + "ofType": null 5155 + } 5156 + }, 5157 + "isDeprecated": false, 5158 + "deprecationReason": null 5159 + }, 5160 + { 5161 + "name": "rules", 5162 + "description": null, 5163 + "args": [], 5164 + "type": { 5165 + "kind": "NON_NULL", 5166 + "name": null, 5167 + "ofType": { 5168 + "kind": "SCALAR", 5169 + "name": "String", 5170 + "ofType": null 5171 + } 5172 + }, 5173 + "isDeprecated": false, 5174 + "deprecationReason": null 5175 + }, 5176 + { 5177 + "name": "updatedAt", 5178 + "description": null, 5179 + "args": [], 5180 + "type": { 5181 + "kind": "NON_NULL", 5182 + "name": null, 5183 + "ofType": { 5184 + "kind": "SCALAR", 5185 + "name": "Int", 5186 + "ofType": null 3677 5187 } 3678 5188 }, 3679 5189 "isDeprecated": false, ··· 4320 5830 "ofType": { 4321 5831 "kind": "SCALAR", 4322 5832 "name": "String", 5833 + "ofType": null 5834 + } 5835 + }, 5836 + "isDeprecated": false, 5837 + "deprecationReason": null 5838 + } 5839 + ], 5840 + "inputFields": null, 5841 + "interfaces": [], 5842 + "enumValues": null, 5843 + "possibleTypes": null 5844 + }, 5845 + { 5846 + "kind": "OBJECT", 5847 + "name": "TrackStats", 5848 + "description": null, 5849 + "fields": [ 5850 + { 5851 + "name": "lastPlayed", 5852 + "description": null, 5853 + "args": [], 5854 + "type": { 5855 + "kind": "SCALAR", 5856 + "name": "Int", 5857 + "ofType": null 5858 + }, 5859 + "isDeprecated": false, 5860 + "deprecationReason": null 5861 + }, 5862 + { 5863 + "name": "lastSkipped", 5864 + "description": null, 5865 + "args": [], 5866 + "type": { 5867 + "kind": "SCALAR", 5868 + "name": "Int", 5869 + "ofType": null 5870 + }, 5871 + "isDeprecated": false, 5872 + "deprecationReason": null 5873 + }, 5874 + { 5875 + "name": "playCount", 5876 + "description": null, 5877 + "args": [], 5878 + "type": { 5879 + "kind": "NON_NULL", 5880 + "name": null, 5881 + "ofType": { 5882 + "kind": "SCALAR", 5883 + "name": "Int", 5884 + "ofType": null 5885 + } 5886 + }, 5887 + "isDeprecated": false, 5888 + "deprecationReason": null 5889 + }, 5890 + { 5891 + "name": "skipCount", 5892 + "description": null, 5893 + "args": [], 5894 + "type": { 5895 + "kind": "NON_NULL", 5896 + "name": null, 5897 + "ofType": { 5898 + "kind": "SCALAR", 5899 + "name": "Int", 5900 + "ofType": null 5901 + } 5902 + }, 5903 + "isDeprecated": false, 5904 + "deprecationReason": null 5905 + }, 5906 + { 5907 + "name": "trackId", 5908 + "description": null, 5909 + "args": [], 5910 + "type": { 5911 + "kind": "NON_NULL", 5912 + "name": null, 5913 + "ofType": { 5914 + "kind": "SCALAR", 5915 + "name": "String", 5916 + "ofType": null 5917 + } 5918 + }, 5919 + "isDeprecated": false, 5920 + "deprecationReason": null 5921 + }, 5922 + { 5923 + "name": "updatedAt", 5924 + "description": null, 5925 + "args": [], 5926 + "type": { 5927 + "kind": "NON_NULL", 5928 + "name": null, 5929 + "ofType": { 5930 + "kind": "SCALAR", 5931 + "name": "Int", 4323 5932 "ofType": null 4324 5933 } 4325 5934 }, ··· 8441 10050 "args": [ 8442 10051 { 8443 10052 "name": "reason", 8444 - "description": "A reason for why it is deprecated, formatted using Markdown syntax", 10053 + "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).", 8445 10054 "type": { 8446 10055 "kind": "SCALAR", 8447 10056 "name": "String", ··· 8483 10092 }, 8484 10093 { 8485 10094 "name": "oneOf", 8486 - "description": "Indicates that an Input Object is a OneOf Input Object (and thus requires\n exactly one of its field be provided)", 10095 + "description": "Indicates that an Input Object is a OneOf Input Object (and thus requires exactly one of its field be provided)", 8487 10096 "isRepeatable": false, 8488 10097 "locations": [ 8489 10098 "INPUT_OBJECT" ··· 8520 10129 }, 8521 10130 { 8522 10131 "name": "specifiedBy", 8523 - "description": "Provides a scalar specification URL for specifying the behavior of custom scalar types.", 10132 + "description": "Exposes a URL that specifies the behaviour of this scalar.", 8524 10133 "isRepeatable": false, 8525 10134 "locations": [ 8526 10135 "SCALAR" ··· 8528 10137 "args": [ 8529 10138 { 8530 10139 "name": "url", 8531 - "description": "URL that specifies the behavior of this scalar.", 10140 + "description": "The URL that specifies the behaviour of this scalar.", 8532 10141 "type": { 8533 10142 "kind": "NON_NULL", 8534 10143 "name": null,
+5 -4
webui/rockbox/package.json
··· 25 25 "graphql:generate": "graphql-codegen" 26 26 }, 27 27 "dependencies": { 28 - "@apollo/client": "^3.11.8", 29 - "@apollo/react-components": "^4.0.0", 30 28 "@emotion/react": "^11.13.3", 31 29 "@emotion/styled": "^11.13.0", 32 30 "@graphql-codegen/cli": "5.0.3", 33 31 "@graphql-codegen/introspection": "4.0.3", 34 32 "@graphql-codegen/typescript": "4.1.0", 35 33 "@graphql-codegen/typescript-operations": "4.3.0", 36 - "@graphql-codegen/typescript-react-apollo": "4.3.2", 34 + "@graphql-codegen/typescript-react-query": "^7.0.1", 37 35 "@mui/material": "^6.1.4", 38 36 "@styled-icons/bootstrap": "^10.47.0", 39 37 "@styled-icons/boxicons-regular": "^10.47.0", ··· 47 45 "@styled-icons/remix-fill": "^10.46.0", 48 46 "@styled-icons/simple-icons": "^10.46.0", 49 47 "@styled-icons/zondicons": "^10.46.0", 50 - "@tanstack/react-query": "^5.59.0", 48 + "@tanstack/react-query": "^5.100.5", 51 49 "@tanstack/react-table": "^8.20.5", 52 50 "@tanstack/react-virtual": "^3.10.8", 53 51 "@testing-library/jest-dom": "^6.5.0", ··· 62 60 "dayjs": "^1.11.13", 63 61 "electron-updater": "^6.1.8", 64 62 "graphql": "15.7.2", 63 + "graphql-request": "^7.4.0", 64 + "graphql-tag": "^2.12.6", 65 + "graphql-ws": "^6.0.8", 65 66 "jsdom": "^25.0.1", 66 67 "lodash": "^4.17.21", 67 68 "react": "^18.3.1",
+2 -4
webui/rockbox/src/Components/Album/Album.test.tsx
··· 4 4 import { albums } from "../Albums/mocks"; 5 5 import Providers from "../../Providers"; 6 6 import { MemoryRouter } from "react-router-dom"; 7 - import { MockedProvider } from "@apollo/client/testing"; 8 - import { mocks } from "../../mocks"; 9 7 10 8 describe("Album", () => { 11 9 it("should render", () => { ··· 14 12 const onLike = vi.fn(); 15 13 const { container } = render( 16 14 <MemoryRouter initialEntries={["/"]}> 17 - <MockedProvider mocks={mocks}> 15 + 18 16 <Providers> 19 17 <Album 20 18 album={albums[0]} ··· 23 21 onLike={onLike} 24 22 /> 25 23 </Providers> 26 - </MockedProvider> 24 + 27 25 </MemoryRouter> 28 26 ); 29 27 expect(container).toMatchSnapshot();
+8 -26
webui/rockbox/src/Components/Album/AlbumWithData.tsx
··· 15 15 16 16 const AlbumWithData: FC<AlbumWithDataProps> = ({ album }) => { 17 17 const [likes, setLikes] = useRecoilState(likesState); 18 - const [playAlbum] = usePlayAlbumMutation(); 19 - const [likeAlbum] = useLikeAlbumMutation(); 20 - const [unlikeAlbum] = useUnlikeAlbumMutation(); 18 + const { mutate: playAlbum } = usePlayAlbumMutation(); 19 + const { mutate: likeAlbum } = useLikeAlbumMutation(); 20 + const { mutate: unlikeAlbum } = useUnlikeAlbumMutation(); 21 21 22 22 const onPlay = ({ id: albumId }: any) => { 23 - playAlbum({ 24 - variables: { 25 - albumId, 26 - }, 27 - }); 23 + playAlbum({ albumId }); 28 24 }; 29 25 30 26 const onLike = ({ id: albumId }: any) => { 31 - setLikes({ 32 - ...likes, 33 - [albumId]: true, 34 - }); 35 - likeAlbum({ 36 - variables: { 37 - albumId, 38 - }, 39 - }); 27 + setLikes({ ...likes, [albumId]: true }); 28 + likeAlbum({ albumId }); 40 29 }; 41 30 42 31 const onUnlike = ({ id: albumId }: any) => { 43 - setLikes({ 44 - ...likes, 45 - [albumId]: false, 46 - }); 47 - unlikeAlbum({ 48 - variables: { 49 - albumId, 50 - }, 51 - }); 32 + setLikes({ ...likes, [albumId]: false }); 33 + unlikeAlbum({ albumId }); 52 34 }; 53 35 54 36 return (
+10 -37
webui/rockbox/src/Components/Album/ContextMenu/ContextMenuWithData.tsx
··· 3 3 import { 4 4 useInsertAlbumMutation, 5 5 usePlayAlbumMutation, 6 - useGetSavedPlaylistsQuery, 7 - useAddTracksToSavedPlaylistMutation, 8 - useCreateSavedPlaylistMutation, 9 - useGetAlbumLazyQuery, 10 6 } from "../../../Hooks/GraphQL"; 11 7 import { 12 8 PLAYLIST_INSERT_FIRST, ··· 21 17 }; 22 18 23 19 const ContextMenuWithData: FC<ContextMenuWithDataProps> = ({ item }) => { 24 - const [playAlbum] = usePlayAlbumMutation(); 25 - const [insertAlbum] = useInsertAlbumMutation(); 26 - const [addTracksToPlaylist] = useAddTracksToSavedPlaylistMutation(); 27 - const [createPlaylist] = useCreateSavedPlaylistMutation(); 28 - const [getAlbum] = useGetAlbumLazyQuery(); 29 - const { data: playlistsData } = useGetSavedPlaylistsQuery({ 30 - fetchPolicy: "cache-and-network", 31 - }); 20 + const { mutate: playAlbum } = usePlayAlbumMutation(); 21 + const { mutate: insertAlbum } = useInsertAlbumMutation(); 32 22 33 23 const onPlayShuffled = (albumId: string) => { 34 - playAlbum({ variables: { albumId, shuffle: true } }); 24 + playAlbum({ albumId, shuffle: true }); 35 25 }; 36 26 37 27 const onPlayNext = (albumId: string) => { 38 - insertAlbum({ variables: { albumId, position: PLAYLIST_INSERT_FIRST } }); 28 + insertAlbum({ albumId, position: PLAYLIST_INSERT_FIRST }); 39 29 }; 40 30 41 31 const onPlayLast = (albumId: string) => { 42 - insertAlbum({ variables: { albumId, position: PLAYLIST_INSERT_LAST } }); 32 + insertAlbum({ albumId, position: PLAYLIST_INSERT_LAST }); 43 33 }; 44 34 45 35 const onAddShuffled = (albumId: string) => { 46 - insertAlbum({ variables: { albumId, position: PLAYLIST_INSERT_SHUFFLED } }); 36 + insertAlbum({ albumId, position: PLAYLIST_INSERT_SHUFFLED }); 47 37 }; 48 38 49 39 const onPlayLastShuffled = (albumId: string) => { 50 - insertAlbum({ variables: { albumId, position: PLAYLIST_INSERT_LAST_SHUFFLED } }); 51 - }; 52 - 53 - const getAlbumTrackPaths = async (albumId: string): Promise<string[]> => { 54 - const result = await getAlbum({ variables: { id: albumId } }); 55 - return (result.data?.album?.tracks ?? []).map((t) => t.path).filter(Boolean) as string[]; 56 - }; 57 - 58 - const onAddAlbumToPlaylist = async (playlistId: string, albumId: string) => { 59 - const paths = await getAlbumTrackPaths(albumId); 60 - if (paths.length > 0) { 61 - addTracksToPlaylist({ variables: { playlistId, trackIds: paths } }); 62 - } 63 - }; 64 - 65 - const onCreatePlaylist = async (name: string, albumId: string, description?: string) => { 66 - const paths = await getAlbumTrackPaths(albumId); 67 - await createPlaylist({ variables: { name, description, trackIds: paths } }); 40 + insertAlbum({ albumId, position: PLAYLIST_INSERT_LAST_SHUFFLED }); 68 41 }; 69 42 70 43 return ( 71 44 <ContextMenu 72 45 album={item} 73 46 onPlayNext={onPlayNext} 74 - onCreatePlaylist={onCreatePlaylist} 75 - onAddAlbumToPlaylist={onAddAlbumToPlaylist} 76 47 onPlayLast={onPlayLast} 77 48 onAddShuffled={onAddShuffled} 78 49 onPlayLastShuffled={onPlayLastShuffled} 79 50 onPlayShuffled={onPlayShuffled} 80 - recentPlaylists={playlistsData?.savedPlaylists ?? []} 51 + recentPlaylists={[]} 52 + onCreatePlaylist={() => {}} 53 + onAddAlbumToPlaylist={() => {}} 81 54 /> 82 55 ); 83 56 };
+2 -4
webui/rockbox/src/Components/AlbumDetails/AlbumDetails.test.tsx
··· 3 3 import AlbumDetails from "./AlbumDetails"; 4 4 import { tracks } from "./mocks"; 5 5 import { MemoryRouter } from "react-router-dom"; 6 - import { MockedProvider } from "@apollo/client/testing"; 7 - import { mocks } from "../../mocks"; 8 6 import { RecoilRoot } from "recoil"; 9 7 import Providers from "../../Providers"; 10 8 ··· 15 13 const onShuffleAll = vi.fn(); 16 14 const { container } = render( 17 15 <MemoryRouter initialEntries={["/"]}> 18 - <MockedProvider mocks={mocks}> 16 + 19 17 <Providers> 20 18 <RecoilRoot> 21 19 <AlbumDetails ··· 40 38 /> 41 39 </RecoilRoot> 42 40 </Providers> 43 - </MockedProvider> 41 + 44 42 </MemoryRouter> 45 43 ); 46 44 expect(container).toMatchSnapshot();
+4 -18
webui/rockbox/src/Components/AlbumDetails/AlbumDetailsWithData.tsx
··· 14 14 const { formatTime } = useTimeFormat(); 15 15 const navigate = useNavigate(); 16 16 const { id } = useParams<{ id: string }>(); 17 - const { data, refetch } = useGetAlbumQuery({ 18 - variables: { 19 - id: id!, 20 - }, 21 - }); 22 - const [playAlbum] = usePlayAlbumMutation(); 17 + const { data, refetch } = useGetAlbumQuery({ id: id! }); 18 + const { mutate: playAlbum } = usePlayAlbumMutation(); 23 19 24 20 const album = useMemo( 25 21 () => ··· 83 79 } 84 80 85 81 function onPlayAll(shuffle: boolean) { 86 - playAlbum({ 87 - variables: { 88 - albumId: id!, 89 - shuffle, 90 - }, 91 - }); 82 + playAlbum({ albumId: id!, shuffle }); 92 83 } 93 84 94 85 function onPlayTrack(position: number, disc: number) { ··· 102 93 } 103 94 realPosition += position; 104 95 } 105 - playAlbum({ 106 - variables: { 107 - albumId: id!, 108 - position: disc > 1 ? realPosition : position, 109 - }, 110 - }); 96 + playAlbum({ albumId: id!, position: disc > 1 ? realPosition : position }); 111 97 } 112 98 113 99 return (
+2 -4
webui/rockbox/src/Components/Albums/Albums.test.tsx
··· 4 4 import { albums } from "./mocks"; 5 5 import Providers from "../../Providers"; 6 6 import { MemoryRouter } from "react-router-dom"; 7 - import { MockedProvider } from "@apollo/client/testing"; 8 - import { mocks } from "../../mocks"; 9 7 10 8 describe("Albums", () => { 11 9 it("should render", () => { ··· 14 12 const onLike = vi.fn(); 15 13 const { container } = render( 16 14 <MemoryRouter initialEntries={["/"]}> 17 - <MockedProvider mocks={mocks}> 15 + 18 16 <Providers> 19 17 <Albums 20 18 albums={albums} ··· 23 21 onLike={onLike} 24 22 /> 25 23 </Providers> 26 - </MockedProvider> 24 + 27 25 </MemoryRouter> 28 26 ); 29 27 expect(container).toMatchSnapshot();
+2 -2
webui/rockbox/src/Components/Albums/AlbumsWithData.tsx
··· 8 8 const filter = useRecoilValue(filterState); 9 9 // eslint-disable-next-line @typescript-eslint/no-explicit-any 10 10 const [albums, setAlbums] = useState<any[]>([]); 11 - const { data, loading } = useGetAlbumsQuery(); 11 + const { data, isLoading } = useGetAlbumsQuery(); 12 12 13 13 useEffect(() => { 14 14 if (filter.term.length > 0 && filter.results) { ··· 66 66 onLike={() => {}} 67 67 onUnLike={() => {}} 68 68 keyword={filter.term} 69 - loading={loading} 69 + loading={isLoading} 70 70 /> 71 71 ); 72 72 };
+2 -4
webui/rockbox/src/Components/ArtistDetails/ArtistDetails.test.tsx
··· 4 4 import { albums, tracks } from "./mocks"; 5 5 import Providers from "../../Providers"; 6 6 import { MemoryRouter } from "react-router-dom"; 7 - import { MockedProvider } from "@apollo/client/testing"; 8 - import { mocks } from "../../mocks"; 9 7 10 8 describe("ArtistDetails", () => { 11 9 it("should render", () => { 12 10 const { container } = render( 13 11 <MemoryRouter initialEntries={["/"]}> 14 - <MockedProvider mocks={mocks}> 12 + 15 13 <Providers> 16 14 <ArtistDetails 17 15 name="Daft Punk" ··· 28 26 onPlayTrack={vi.fn()} 29 27 /> 30 28 </Providers> 31 - </MockedProvider> 29 + 32 30 </MemoryRouter> 33 31 ); 34 32 expect(container).toMatchSnapshot();
+4 -18
webui/rockbox/src/Components/ArtistDetails/ArtistDetailsWithData.tsx
··· 10 10 const ArtistDetailsWithData: FC = () => { 11 11 const navigate = useNavigate(); 12 12 const { id } = useParams<{ id: string }>(); 13 - const { data } = useGetArtistQuery({ 14 - variables: { 15 - id: id!, 16 - }, 17 - }); 18 - const [playArtistTracks] = usePlayArtistTracksMutation(); 13 + const { data } = useGetArtistQuery({ id: id! }); 14 + const { mutate: playArtistTracks } = usePlayArtistTracksMutation(); 19 15 const { formatTime } = useTimeFormat(); 20 16 const tracks = 21 17 data?.artist?.tracks.map((x) => ({ ··· 34 30 })) || []; 35 31 36 32 const onPlayAll = (shuffle: boolean) => { 37 - playArtistTracks({ 38 - variables: { 39 - artistId: id!, 40 - shuffle, 41 - }, 42 - }); 33 + playArtistTracks({ artistId: id!, shuffle }); 43 34 }; 44 35 45 36 const onPlayTrack = (position: number) => { 46 - playArtistTracks({ 47 - variables: { 48 - artistId: id!, 49 - position, 50 - }, 51 - }); 37 + playArtistTracks({ artistId: id!, position }); 52 38 }; 53 39 54 40 return (
+2 -4
webui/rockbox/src/Components/Artists/Artists.test.tsx
··· 4 4 import { artists } from "./mocks"; 5 5 import Providers from "../../Providers"; 6 6 import { MemoryRouter } from "react-router-dom"; 7 - import { MockedProvider } from "@apollo/client/testing"; 8 - import { mocks } from "../../mocks"; 9 7 10 8 describe("Artists", () => { 11 9 it("should render", () => { 12 10 const { container } = render( 13 11 <MemoryRouter initialEntries={["/"]}> 14 - <MockedProvider mocks={mocks}> 12 + 15 13 <Providers> 16 14 <Artists 17 15 artists={artists} ··· 19 17 onFilter={vi.fn()} 20 18 /> 21 19 </Providers> 22 - </MockedProvider> 20 + 23 21 </MemoryRouter> 24 22 ); 25 23 expect(container).toMatchSnapshot();
+2 -2
webui/rockbox/src/Components/Artists/ArtistsWithData.tsx
··· 6 6 7 7 const ArtistsWithData: FC = () => { 8 8 const filter = useRecoilValue(filterState); 9 - const { data, loading } = useGetArtistsQuery(); 9 + const { data, isLoading } = useGetArtistsQuery(); 10 10 const artists = useMemo(() => { 11 11 if (filter.term.length > 0 && filter.results) { 12 12 return (filter.results?.artists || []).map((x) => ({ ··· 28 28 onClickArtist={() => {}} 29 29 artists={artists} 30 30 keyword={filter.term} 31 - loading={loading} 31 + loading={isLoading} 32 32 /> 33 33 ); 34 34 };
+14 -72
webui/rockbox/src/Components/ContextMenu/ContextMenuWithData.tsx
··· 2 2 import ContextMenu from "./ContextMenu"; 3 3 import { 4 4 useGetLikedTracksQuery, 5 - useGetSavedPlaylistsQuery, 6 5 useInsertTracksMutation, 7 6 useLikeTrackMutation, 8 7 useUnlikeTrackMutation, 9 - useAddTracksToSavedPlaylistMutation, 10 - useCreateSavedPlaylistMutation, 11 8 } from "../../Hooks/GraphQL"; 12 9 import { 13 10 PLAYLIST_INSERT_FIRST, ··· 24 21 25 22 const ContextMenuWithData: FC<ContextMenuWithDataProps> = ({ track }) => { 26 23 const [likes, setLikes] = useRecoilState(likesState); 27 - const { refetch } = useGetLikedTracksQuery({ 28 - fetchPolicy: "network-only", 29 - }); 30 - const { data: playlistsData } = useGetSavedPlaylistsQuery({ 31 - fetchPolicy: "cache-and-network", 32 - }); 33 - const [insertTracks] = useInsertTracksMutation(); 34 - const [likeTrack] = useLikeTrackMutation(); 35 - const [unlikeTrack] = useUnlikeTrackMutation(); 36 - const [addTracksToPlaylist] = useAddTracksToSavedPlaylistMutation(); 37 - const [createPlaylist] = useCreateSavedPlaylistMutation(); 24 + const { refetch } = useGetLikedTracksQuery(); 25 + const { mutate: insertTracks } = useInsertTracksMutation(); 26 + const { mutateAsync: likeTrackAsync } = useLikeTrackMutation(); 27 + const { mutateAsync: unlikeTrackAsync } = useUnlikeTrackMutation(); 38 28 39 29 const onPlayNext = (path: string) => { 40 - insertTracks({ 41 - variables: { 42 - position: PLAYLIST_INSERT_FIRST, 43 - tracks: [path], 44 - }, 45 - }); 30 + insertTracks({ position: PLAYLIST_INSERT_FIRST, tracks: [path] }); 46 31 }; 47 32 48 33 const onPlayLast = (path: string) => { 49 - insertTracks({ 50 - variables: { 51 - position: PLAYLIST_INSERT_LAST, 52 - tracks: [path], 53 - }, 54 - }); 34 + insertTracks({ position: PLAYLIST_INSERT_LAST, tracks: [path] }); 55 35 }; 56 36 57 37 const onAddShuffled = (path: string) => { 58 - insertTracks({ 59 - variables: { 60 - position: PLAYLIST_INSERT_SHUFFLED, 61 - tracks: [path], 62 - }, 63 - }); 38 + insertTracks({ position: PLAYLIST_INSERT_SHUFFLED, tracks: [path] }); 64 39 }; 65 40 66 41 const onLike = async (trackId: string) => { 67 - setLikes({ 68 - ...likes, 69 - [trackId]: true, 70 - }); 71 - await likeTrack({ 72 - variables: { 73 - trackId, 74 - }, 75 - }); 42 + setLikes({ ...likes, [trackId]: true }); 43 + await likeTrackAsync({ trackId }); 76 44 await refetch(); 77 45 }; 78 46 79 47 const onUnlike = async (trackId: string) => { 80 - setLikes({ 81 - ...likes, 82 - [trackId]: false, 83 - }); 84 - await unlikeTrack({ 85 - variables: { 86 - trackId, 87 - }, 88 - }); 48 + setLikes({ ...likes, [trackId]: false }); 49 + await unlikeTrackAsync({ trackId }); 89 50 await refetch(); 90 51 }; 91 52 92 - const onAddTrackToPlaylist = (playlistId: string, trackId: string) => { 93 - addTracksToPlaylist({ 94 - variables: { 95 - playlistId, 96 - trackIds: [trackId], 97 - }, 98 - }); 99 - }; 100 - 101 - const onCreatePlaylist = async (name: string, trackId: string, description?: string) => { 102 - await createPlaylist({ 103 - variables: { 104 - name, 105 - description, 106 - trackIds: [trackId], 107 - }, 108 - }); 109 - }; 110 - 111 53 return ( 112 54 <ContextMenu 113 55 track={track} 114 56 onPlayNext={onPlayNext} 115 - onCreatePlaylist={onCreatePlaylist} 116 - onAddTrackToPlaylist={onAddTrackToPlaylist} 117 57 onPlayLast={onPlayLast} 118 58 onAddShuffled={onAddShuffled} 119 59 onLike={onLike} 120 60 onUnlike={onUnlike} 121 - recentPlaylists={playlistsData?.savedPlaylists ?? []} 61 + recentPlaylists={[]} 122 62 liked={likes[track.id]} 63 + onCreatePlaylist={() => {}} 64 + onAddTrackToPlaylist={() => {}} 123 65 /> 124 66 ); 125 67 };
+2 -4
webui/rockbox/src/Components/ControlBar/ControlBar.test.tsx
··· 2 2 import { vi } from "vitest"; 3 3 import ControlBar from "./ControlBar"; 4 4 import Providers from "../../Providers"; 5 - import { MockedProvider } from "@apollo/client/testing"; 6 - import { mocks } from "../../mocks"; 7 5 import { MemoryRouter } from "react-router-dom"; 8 6 9 7 describe("ControlBar", () => { ··· 11 9 const { container } = render( 12 10 <Providers> 13 11 <MemoryRouter initialEntries={["/"]}> 14 - <MockedProvider mocks={mocks}> 12 + 15 13 <ControlBar 16 14 nowPlaying={{ 17 15 album: "Forgotten Shapes", ··· 34 32 onUnlike={vi.fn()} 35 33 onSeek={vi.fn()} 36 34 /> 37 - </MockedProvider> 35 + 38 36 </MemoryRouter> 39 37 </Providers> 40 38 );
+30 -53
webui/rockbox/src/Components/ControlBar/ControlBarWithData.tsx
··· 30 30 const ControlBarWithData: FC = () => { 31 31 const [{ nowPlaying, locked, resumeIndex }, setControlBarState] = 32 32 useRecoilState(controlBarState); 33 - const { data, loading } = useGetCurrentTrackQuery(); 34 - const { data: playback } = useGetPlaybackStatusQuery({ 35 - fetchPolicy: "network-only", 36 - }); 37 - const [pause] = usePauseMutation(); 38 - const [resume] = useResumeMutation(); 39 - const [previous] = usePreviousMutation(); 40 - const [next] = useNextMutation(); 33 + const { data, isLoading } = useGetCurrentTrackQuery(); 34 + const { data: playback } = useGetPlaybackStatusQuery(); 35 + const { mutate: pause } = usePauseMutation(); 36 + const { mutate: resume } = useResumeMutation(); 37 + const { mutate: previous } = usePreviousMutation(); 38 + const { mutate: next } = useNextMutation(); 41 39 const { data: playbackSubscription } = useCurrentlyPlayingSongSubscription(); 42 40 const { data: playbackStatus } = usePlaybackStatusSubscription(); 43 41 const { previousTracks, nextTracks } = usePlayQueue(); 44 42 const { resumePlaylistTrack } = useResumePlaylist(); 45 - const [likeTrack] = useLikeTrackMutation(); 46 - const [unlikeTrack] = useUnlikeTrackMutation(); 47 - const [seek] = useSeekMutation(); 48 - const [saveSettings] = useSaveSettingsMutation(); 43 + const { mutateAsync: likeTrackAsync } = useLikeTrackMutation(); 44 + const { mutateAsync: unlikeTrackAsync } = useUnlikeTrackMutation(); 45 + const { mutate: seek } = useSeekMutation(); 46 + const { mutateAsync: saveSettingsAsync } = useSaveSettingsMutation(); 49 47 const { refetch: refetchSettings } = useGetGlobalSettingsQuery(); 50 48 const [settings] = useRecoilState(settingsState); 51 49 52 50 const [likes, setLikes] = useRecoilState(likesState); 53 - const { data: likedTracksData, loading: likedTracksLoading } = 54 - useGetLikedTracksQuery({ 55 - fetchPolicy: "network-only", 56 - }); 57 - const { data: likedAlbumsData, loading: likedAlbumsLoading } = 58 - useGetLikedAlbumsQuery({ 59 - fetchPolicy: "network-only", 60 - }); 51 + const { data: likedTracksData, isLoading: likedTracksLoading } = 52 + useGetLikedTracksQuery(); 53 + const { data: likedAlbumsData, isLoading: likedAlbumsLoading } = 54 + useGetLikedAlbumsQuery(); 61 55 62 56 useSettings(); 63 57 ··· 134 128 }, [playbackSubscription, playbackStatus]); 135 129 136 130 useEffect(() => { 137 - if (loading || !data) { 131 + if (isLoading || !data) { 138 132 return; 139 133 } 140 134 ··· 158 152 albumId: data.currentTrack?.albumId, 159 153 }); 160 154 // eslint-disable-next-line react-hooks/exhaustive-deps 161 - }, [data, loading, playback]); 155 + }, [data, isLoading, playback]); 162 156 163 157 const onPlay = async () => { 164 158 setControlBarState((state) => ({ ··· 172 166 173 167 if (resumeIndex > -1) { 174 168 try { 175 - await resumePlaylistTrack(); 169 + await resumePlaylistTrack({}); 176 170 } catch (e) { 177 171 console.error(e); 178 172 } ··· 191 185 }, 3000); 192 186 return; 193 187 } 194 - resume(); 188 + resume({}); 195 189 196 190 setTimeout(() => { 197 191 setControlBarState((state) => ({ ··· 210 204 }, 211 205 locked: true, 212 206 })); 213 - pause(); 207 + pause({}); 214 208 setTimeout(() => { 215 209 setControlBarState((state) => ({ 216 210 ...state, ··· 230 224 })); 231 225 232 226 try { 233 - await likeTrack({ 234 - variables: { 235 - trackId, 236 - }, 237 - }); 227 + await likeTrackAsync({ trackId }); 238 228 } catch (e) { 239 229 console.error(e); 240 230 } ··· 251 241 })); 252 242 253 243 try { 254 - await unlikeTrack({ 255 - variables: { 256 - trackId, 257 - }, 258 - }); 244 + await unlikeTrackAsync({ trackId }); 259 245 } catch (e) { 260 246 console.error(e); 261 247 } ··· 266 252 return; 267 253 } 268 254 269 - seek({ 270 - variables: { 271 - elapsed, 272 - offset: 0, 273 - }, 274 - }); 255 + seek({ elapsed, offset: 0 }); 275 256 }; 276 257 277 258 const onShuffle = async () => { 278 - await saveSettings({ 279 - variables: { 280 - settings: { 281 - playlistShuffle: !settings.playlistShuffle, 282 - }, 259 + await saveSettingsAsync({ 260 + settings: { 261 + playlistShuffle: !settings.playlistShuffle, 283 262 }, 284 263 }); 285 264 await refetchSettings(); 286 265 }; 287 266 288 267 const onRepeat = async () => { 289 - await saveSettings({ 290 - variables: { 291 - settings: { 292 - repeatMode: settings.repeatMode === 0 ? 1 : 0, 293 - }, 268 + await saveSettingsAsync({ 269 + settings: { 270 + repeatMode: settings.repeatMode === 0 ? 1 : 0, 294 271 }, 295 272 }); 296 273 await refetchSettings(); ··· 301 278 nowPlaying={nowPlaying} 302 279 onPlay={onPlay} 303 280 onPause={onPause} 304 - onNext={() => next()} 305 - onPrevious={() => previous()} 281 + onNext={() => next({})} 282 + onPrevious={() => previous({})} 306 283 onShuffle={onShuffle} 307 284 onRepeat={onRepeat} 308 285 shuffle={settings.playlistShuffle}
+7
webui/rockbox/src/Components/ControlBar/DeviceList/DeviceList.tsx
··· 38 38 builtin: "#28fce3", 39 39 fifo: "#9090ff", 40 40 squeezelite: "#ffa028", 41 + snapcast: "#a0e040", 42 + Snapcast: "#a0e040", 41 43 xbmc: "#28cbfc", 42 44 AirPlay: "#ff00c3", 43 45 airplay: "#ff00c3", ··· 51 53 builtin: "rgba(40, 252, 227, 0.09)", 52 54 fifo: "rgba(144, 144, 255, 0.10)", 53 55 squeezelite: "rgba(255, 160, 40, 0.10)", 56 + snapcast: "rgba(160, 224, 64, 0.10)", 57 + Snapcast: "rgba(160, 224, 64, 0.10)", 54 58 xbmc: "rgba(40, 203, 252, 0.08)", 55 59 AirPlay: "rgba(255, 0, 195, 0.06)", 56 60 airplay: "rgba(255, 0, 195, 0.06)", ··· 68 72 {icon === "builtin" && <HardDrive size={18} color={c} />} 69 73 {icon === "fifo" && <Radio size={18} color={c} />} 70 74 {icon === "squeezelite" && <Cast size={18} color={c} />} 75 + {(icon === "snapcast" || icon === "Snapcast") && ( 76 + <Radio size={18} color={c} /> 77 + )} 71 78 {icon === "xbmc" && <Kodi size={18} color={c} />} 72 79 {(icon === "AirPlay" || icon === "airplay") && ( 73 80 <Airplayaudio size={18} color={c} />
+9 -14
webui/rockbox/src/Components/ControlBar/DeviceList/DeviceListWithData.tsx
··· 17 17 const DeviceListWithData: FC<DeviceListWithDataProps> = ({ close }) => { 18 18 const [, setControlBarState] = useRecoilState(controlBarState); 19 19 const [device, setDeviceState] = useRecoilState(deviceState); 20 - const { data: currentDevice, refetch: refetchCurrentDevice } = useGetDeviceQuery({ 21 - variables: { id: "current" }, 22 - fetchPolicy: "network-only", 23 - }); 24 - const { data, loading, refetch: refetchDevices } = useGetDevicesQuery({ 25 - fetchPolicy: "network-only", 26 - }); 27 - const [connect] = useConnectToDeviceMutation(); 28 - const [disconnect] = useDisconnectFromDeviceMutation(); 20 + const { data: currentDevice, refetch: refetchCurrentDevice } = useGetDeviceQuery({ id: "current" }); 21 + const { data, isLoading, refetch: refetchDevices } = useGetDevicesQuery(); 22 + const { mutateAsync: connectAsync } = useConnectToDeviceMutation(); 23 + const { mutateAsync: disconnectAsync } = useDisconnectFromDeviceMutation(); 29 24 const devices = useMemo(() => { 30 - if (loading || !data) { 25 + if (isLoading || !data) { 31 26 return []; 32 27 } 33 28 return (data.devices || []).map((x) => ({ ··· 37 32 isConnected: x.isConnected, 38 33 isCurrentDevice: x.isCurrentDevice ?? false, 39 34 })); 40 - }, [data, loading]); 35 + }, [data, isLoading]); 41 36 42 37 useEffect(() => { 43 38 if (currentDevice) { ··· 61 56 }, [currentDevice]); 62 57 63 58 const connectToCastDevice = async (id: string) => { 64 - await connect({ variables: { id } }); 59 + await connectAsync({ id }); 65 60 await Promise.all([refetchCurrentDevice(), refetchDevices()]); 66 61 setControlBarState((state) => ({ 67 62 ...state, ··· 70 65 }; 71 66 72 67 const disconnectDevice = async () => { 73 - await disconnect({ variables: { id: currentDevice?.device?.id || "" } }); 68 + await disconnectAsync({ id: currentDevice?.device?.id || "" }); 74 69 // reload page to reset the state 75 70 window.location.reload(); 76 71 }; ··· 79 74 <> 80 75 { 81 76 <DeviceList 82 - loading={loading} 77 + loading={isLoading} 83 78 castDevices={devices} 84 79 connectToCastDevice={connectToCastDevice} 85 80 disconnectFromCastDevice={disconnectDevice}
+2 -4
webui/rockbox/src/Components/ControlBar/PlayQueue/PlayQueue.test.tsx
··· 2 2 import { vi } from "vitest"; 3 3 import PlayQueue from "./PlayQueue"; 4 4 import Providers from "../../../Providers"; 5 - import { MockedProvider } from "@apollo/client/testing"; 6 - import { mocks } from "../../../mocks"; 7 5 import { MemoryRouter } from "react-router-dom"; 8 6 import { nextTracks, previousTracks } from "./mocks"; 9 7 ··· 12 10 const { container } = render( 13 11 <Providers> 14 12 <MemoryRouter initialEntries={["/"]}> 15 - <MockedProvider mocks={mocks}> 13 + 16 14 <PlayQueue 17 15 previousTracks={previousTracks} 18 16 nextTracks={nextTracks} ··· 20 18 onPlayTrackAt={vi.fn()} 21 19 onRemoveTrackAt={vi.fn()} 22 20 /> 23 - </MockedProvider> 21 + 24 22 </MemoryRouter> 25 23 </Providers> 26 24 );
+4 -12
webui/rockbox/src/Components/ControlBar/PlayQueue/PlayQueueWithData.tsx
··· 8 8 9 9 const PlayQueueWithData: FC = () => { 10 10 const { nextTracks, previousTracks } = usePlayQueue(); 11 - const [removeTrack] = usePlaylistRemoveTrackMutation(); 12 - const [startPlaylist] = useStartPlaylistMutation(); 11 + const { mutate: removeTrack } = usePlaylistRemoveTrackMutation(); 12 + const { mutate: startPlaylist } = useStartPlaylistMutation(); 13 13 14 14 const onPlayTrackAt = (startIndex: number) => { 15 - startPlaylist({ 16 - variables: { 17 - startIndex, 18 - }, 19 - }); 15 + startPlaylist({ startIndex }); 20 16 }; 21 17 22 18 const onRemoveTrackAt = (index: number) => { 23 - removeTrack({ 24 - variables: { 25 - index, 26 - }, 27 - }); 19 + removeTrack({ index }); 28 20 }; 29 21 30 22 return (
+2 -6
webui/rockbox/src/Components/ControlBar/RightMenu/Volume/VolumeWithData.tsx
··· 7 7 8 8 const VolumeWithData: FC = () => { 9 9 const { data, refetch } = useGetGlobalSettingsQuery(); 10 - const [adjustVolume] = useAdjustVolumeMutation(); 10 + const { mutateAsync: adjustVolumeAsync } = useAdjustVolumeMutation(); 11 11 const volume = useMemo(() => { 12 12 return Math.min((data?.globalSettings.volume || 0) + 80, 80); 13 13 }, [data]); 14 14 15 15 const onVolumeChange = async (newVolume: number) => { 16 16 const steps = Math.min(newVolume, 80) - Math.min(volume, 80); 17 - await adjustVolume({ 18 - variables: { 19 - steps, 20 - }, 21 - }); 17 + await adjustVolumeAsync({ steps }); 22 18 await refetch(); 23 19 }; 24 20
+14 -30
webui/rockbox/src/Components/Files/ContextMenu/ContextMenuWithData.tsx
··· 4 4 useInsertDirectoryMutation, 5 5 useInsertTracksMutation, 6 6 usePlayDirectoryMutation, 7 - useGetSavedPlaylistsQuery, 8 - useAddTracksToSavedPlaylistMutation, 9 - useCreateSavedPlaylistMutation, 10 7 } from "../../../Hooks/GraphQL"; 11 8 import { 12 9 PLAYLIST_INSERT_FIRST, ··· 21 18 }; 22 19 23 20 const ContextMenuWithData: FC<ContextMenuWithDataProps> = ({ entry }) => { 24 - const [insertTracks] = useInsertTracksMutation(); 25 - const [playDirectory] = usePlayDirectoryMutation(); 26 - const [insertDirectory] = useInsertDirectoryMutation(); 27 - const [addTracksToPlaylist] = useAddTracksToSavedPlaylistMutation(); 28 - const [createPlaylist] = useCreateSavedPlaylistMutation(); 29 - const { data: playlistsData } = useGetSavedPlaylistsQuery({ 30 - fetchPolicy: "cache-and-network", 31 - }); 21 + const { mutate: insertTracks } = useInsertTracksMutation(); 22 + const { mutate: playDirectory } = usePlayDirectoryMutation(); 23 + const { mutate: insertDirectory } = useInsertDirectoryMutation(); 32 24 33 25 const onPlayNext = (path: string) => { 34 26 if (!entry.isDirectory) { 35 - insertTracks({ variables: { tracks: [path], position: PLAYLIST_INSERT_FIRST } }); 27 + insertTracks({ tracks: [path], position: PLAYLIST_INSERT_FIRST }); 36 28 return; 37 29 } 38 - insertDirectory({ variables: { position: PLAYLIST_INSERT_FIRST, directory: path } }); 30 + insertDirectory({ position: PLAYLIST_INSERT_FIRST, directory: path }); 39 31 }; 40 32 41 33 const onPlayLast = (path: string) => { 42 34 if (!entry.isDirectory) { 43 - insertTracks({ variables: { tracks: [path], position: PLAYLIST_INSERT_LAST } }); 35 + insertTracks({ tracks: [path], position: PLAYLIST_INSERT_LAST }); 44 36 return; 45 37 } 46 - insertDirectory({ variables: { position: PLAYLIST_INSERT_LAST, directory: path } }); 38 + insertDirectory({ position: PLAYLIST_INSERT_LAST, directory: path }); 47 39 }; 48 40 49 41 const onAddShuffled = (path: string) => { 50 42 if (!entry.isDirectory) { 51 - insertTracks({ variables: { tracks: [path], position: PLAYLIST_INSERT_SHUFFLED } }); 43 + insertTracks({ tracks: [path], position: PLAYLIST_INSERT_SHUFFLED }); 52 44 return; 53 45 } 54 - insertDirectory({ variables: { position: PLAYLIST_INSERT_SHUFFLED, directory: path } }); 46 + insertDirectory({ position: PLAYLIST_INSERT_SHUFFLED, directory: path }); 55 47 }; 56 48 57 49 const onPlayShuffled = (path: string) => { 58 - playDirectory({ variables: { path, shuffle: true, recurse: true } }); 50 + playDirectory({ path, shuffle: true, recurse: true }); 59 51 }; 60 52 61 53 const onPlayLastShuffled = (path: string) => { 62 - insertDirectory({ variables: { position: PLAYLIST_INSERT_LAST_SHUFFLED, directory: path } }); 63 - }; 64 - 65 - const onAddTrackToPlaylist = (playlistId: string, trackPath: string) => { 66 - addTracksToPlaylist({ variables: { playlistId, trackIds: [trackPath] } }); 67 - }; 68 - 69 - const onCreatePlaylist = async (name: string, trackPath: string, description?: string) => { 70 - await createPlaylist({ variables: { name, description, trackIds: [trackPath] } }); 54 + insertDirectory({ position: PLAYLIST_INSERT_LAST_SHUFFLED, directory: path }); 71 55 }; 72 56 73 57 return ( 74 58 <ContextMenu 75 59 entry={entry} 76 60 onPlayNext={onPlayNext} 77 - onCreatePlaylist={onCreatePlaylist} 78 - onAddTrackToPlaylist={onAddTrackToPlaylist} 79 61 onPlayLast={onPlayLast} 80 62 onAddShuffled={onAddShuffled} 81 63 onPlayShuffled={onPlayShuffled} 82 64 onPlayLastShuffled={onPlayLastShuffled} 83 - recentPlaylists={playlistsData?.savedPlaylists ?? []} 65 + recentPlaylists={[]} 66 + onCreatePlaylist={() => {}} 67 + onAddTrackToPlaylist={() => {}} 84 68 /> 85 69 ); 86 70 };
+2 -4
webui/rockbox/src/Components/Files/Files.test.tsx
··· 4 4 import { files } from "./mocks"; 5 5 import { MemoryRouter } from "react-router-dom"; 6 6 import { vi } from "vitest"; 7 - import { MockedProvider } from "@apollo/client/testing"; 8 - import { mocks } from "../../mocks"; 9 7 10 8 describe("Files", () => { 11 9 it("should render", () => { 12 10 const { container } = render( 13 11 <MemoryRouter initialEntries={["/"]}> 14 - <MockedProvider mocks={mocks}> 12 + 15 13 <Providers> 16 14 <Files 17 15 files={files} ··· 21 19 onPlayTrack={vi.fn()} 22 20 /> 23 21 </Providers> 24 - </MockedProvider> 22 + 25 23 </MemoryRouter> 26 24 ); 27 25 expect(container).toMatchSnapshot();
+5 -17
webui/rockbox/src/Components/Files/FilesWithData.tsx
··· 9 9 const FilesWithData: FC = () => { 10 10 const navigate = useNavigate(); 11 11 const [refetching, setRefetching] = useState(false); 12 - const { data, refetch } = useGetEntriesQuery(); 13 12 const [params] = useSearchParams(); 14 13 const path = params.get("q"); 14 + const { data, refetch } = useGetEntriesQuery(path !== null ? { path } : undefined); 15 15 const canGoBack = !!path; 16 - const [playDirectory] = usePlayDirectoryMutation(); 16 + const { mutate: playDirectory } = usePlayDirectoryMutation(); 17 17 18 18 const files = 19 19 data?.treeGetEntries.map((x) => ({ ··· 25 25 const onGoBack = () => navigate(-1); 26 26 27 27 const onPlayDirectory = (path: string) => { 28 - playDirectory({ 29 - variables: { 30 - path, 31 - recurse: true, 32 - }, 33 - }); 28 + playDirectory({ path, recurse: true }); 34 29 }; 35 30 36 31 const onPlayTrack = (path: string, position: number) => { 37 - playDirectory({ 38 - variables: { 39 - path, 40 - position, 41 - }, 42 - }); 32 + playDirectory({ path, position }); 43 33 }; 44 34 45 35 useEffect(() => { 46 36 setRefetching(true); 47 - refetch({ 48 - path, 49 - }) 37 + refetch() 50 38 .then(() => setRefetching(false)) 51 39 .catch(() => setRefetching(false)); 52 40 // eslint-disable-next-line react-hooks/exhaustive-deps
+11 -3
webui/rockbox/src/Components/Filter/FilterWithData.tsx
··· 1 1 import { FC } from "react"; 2 2 import Filter from "./Filter"; 3 - import { useSearchLazyQuery } from "../../Hooks/GraphQL"; 3 + import { 4 + SearchDocument, 5 + SearchQuery, 6 + SearchQueryVariables, 7 + } from "../../Hooks/GraphQL"; 8 + import { fetchData } from "../../lib/graphql-client"; 4 9 import { useRecoilState } from "recoil"; 5 10 import { filterState } from "./FilterState"; 6 11 import _ from "lodash"; 7 12 8 13 const FilterWithData: FC<{ placeholder?: string }> = (props) => { 9 14 const [, setFilterState] = useRecoilState(filterState); 10 - const [search] = useSearchLazyQuery(); 15 + 11 16 const onSearch = async (term: string) => { 12 17 setFilterState((state) => ({ ...state, term })); 13 18 if (term.length > 2) { 14 19 _.debounce(async () => { 15 - const { data } = await search({ variables: { term } }); 20 + const data = await fetchData<SearchQuery, SearchQueryVariables>( 21 + SearchDocument.toString(), 22 + { term } 23 + )(); 16 24 // eslint-disable-next-line @typescript-eslint/no-explicit-any 17 25 setFilterState((state) => ({ ...state, results: data?.search as any })); 18 26 }, 500)();
+8 -18
webui/rockbox/src/Components/Likes/LikesWithData.tsx
··· 12 12 const LikesWithData: FC = () => { 13 13 const filter = useRecoilValue(filterState); 14 14 const [likes, setLikes] = useRecoilState(likesState); 15 - const { data, loading } = useGetLikedTracksQuery({ 16 - fetchPolicy: "network-only", 17 - }); 15 + const { data, isLoading } = useGetLikedTracksQuery(); 18 16 const [tracks, setTracks] = useRecoilState(likedTracks); 19 - const [playLikedTracks] = usePlayLikedTracksMutation(); 17 + const { mutate: playLikedTracks } = usePlayLikedTracksMutation(); 20 18 const { formatTime } = useTimeFormat(); 21 19 22 20 useEffect(() => { ··· 61 59 }, [filter, data]); 62 60 63 61 useEffect(() => { 64 - if (!data || loading) { 62 + if (!data || isLoading) { 65 63 return; 66 64 } 67 65 ··· 90 88 })) 91 89 ); 92 90 // eslint-disable-next-line react-hooks/exhaustive-deps 93 - }, [data, loading]); 91 + }, [data, isLoading]); 94 92 95 93 const onPlayTrack = (position: number) => { 96 - playLikedTracks({ 97 - variables: { 98 - position, 99 - }, 100 - }); 94 + playLikedTracks({ position }); 101 95 }; 102 96 103 97 const onPlayAll = () => { 104 - playLikedTracks(); 98 + playLikedTracks({}); 105 99 }; 106 100 107 101 const onShuffleAll = () => { 108 - playLikedTracks({ 109 - variables: { 110 - shuffle: true, 111 - }, 112 - }); 102 + playLikedTracks({ shuffle: true }); 113 103 }; 114 104 115 105 return ( ··· 119 109 onPlayAll={onPlayAll} 120 110 onShuffleAll={onShuffleAll} 121 111 keyword={filter.term} 122 - loading={loading} 112 + loading={isLoading} 123 113 /> 124 114 ); 125 115 };
+70 -78
webui/rockbox/src/Components/PlaylistDetails/PlaylistDetailsWithData.tsx
··· 1 - import { FC, useEffect, useMemo, useState } from "react"; 1 + import { FC, useMemo } from "react"; 2 2 import { useNavigate, useParams } from "react-router-dom"; 3 + import { useQueryClient } from "@tanstack/react-query"; 4 + import PlaylistDetails from "./PlaylistDetails"; 3 5 import { 4 6 useGetSavedPlaylistQuery, 5 7 useGetSavedPlaylistTracksQuery, ··· 7 9 useGetSmartPlaylistTracksQuery, 8 10 usePlaySavedPlaylistMutation, 9 11 usePlaySmartPlaylistMutation, 12 + useShufflePlaylistMutation, 13 + useStartPlaylistMutation, 10 14 useRemoveTrackFromSavedPlaylistMutation, 11 - useInsertTracksMutation, 12 15 } from "../../Hooks/GraphQL"; 13 16 import { useTimeFormat } from "../../Hooks/useFormat"; 14 17 import { Track } from "../../Types/track"; 15 - import { PLAYLIST_INSERT_FIRST } from "../../Types/playlist"; 16 - import PlaylistDetails from "./PlaylistDetails"; 17 18 18 19 type Props = { isSmart?: boolean }; 19 20 20 21 const PlaylistDetailsWithData: FC<Props> = ({ isSmart = false }) => { 22 + const navigate = useNavigate(); 21 23 const { id } = useParams<{ id: string }>(); 22 - const navigate = useNavigate(); 23 24 const { formatTime } = useTimeFormat(); 24 - const [tracks, setTracks] = useState<Track[]>([]); 25 + const queryClient = useQueryClient(); 25 26 26 - const { data: savedData } = useGetSavedPlaylistQuery({ 27 - variables: { id: id! }, 28 - skip: isSmart, 29 - }); 30 - const { data: savedTracksData, refetch: refetchTracks } = 31 - useGetSavedPlaylistTracksQuery({ 32 - variables: { playlistId: id! }, 33 - skip: isSmart, 34 - }); 27 + const { data: savedPlaylistData } = useGetSavedPlaylistQuery( 28 + { id: id! }, 29 + { enabled: !isSmart } 30 + ); 31 + const { data: savedTracksData, refetch: refetchSavedTracks } = 32 + useGetSavedPlaylistTracksQuery( 33 + { playlistId: id! }, 34 + { enabled: !isSmart } 35 + ); 35 36 36 - const { data: smartData } = useGetSmartPlaylistQuery({ 37 - variables: { id: id! }, 38 - skip: !isSmart, 39 - }); 40 - const { data: smartTracksData } = useGetSmartPlaylistTracksQuery({ 41 - variables: { id: id! }, 42 - skip: !isSmart, 43 - }); 37 + const { data: smartPlaylistData } = useGetSmartPlaylistQuery( 38 + { id: id! }, 39 + { enabled: isSmart } 40 + ); 41 + const { data: smartTracksData } = useGetSmartPlaylistTracksQuery( 42 + { id: id! }, 43 + { enabled: isSmart } 44 + ); 44 45 45 - const [playSaved] = usePlaySavedPlaylistMutation(); 46 - const [playSmart] = usePlaySmartPlaylistMutation(); 47 - const [removeTrack] = useRemoveTrackFromSavedPlaylistMutation(); 48 - const [insertTracks] = useInsertTracksMutation(); 46 + const { mutate: playSavedPlaylist } = usePlaySavedPlaylistMutation(); 47 + const { mutate: playSmartPlaylist } = usePlaySmartPlaylistMutation(); 48 + const { mutate: shufflePlaylist } = useShufflePlaylistMutation(); 49 + const { mutate: startPlaylist } = useStartPlaylistMutation(); 50 + const { mutateAsync: removeTrack } = useRemoveTrackFromSavedPlaylistMutation(); 49 51 50 - const playlist = useMemo( 51 - () => (isSmart ? smartData?.smartPlaylist : savedData?.savedPlaylist), 52 - [isSmart, savedData, smartData] 53 - ); 52 + const playlist = isSmart 53 + ? smartPlaylistData?.smartPlaylist 54 + : savedPlaylistData?.savedPlaylist; 54 55 55 - const rawTracks = useMemo( 56 - () => 57 - isSmart 58 - ? smartTracksData?.smartPlaylistTracks 59 - : savedTracksData?.savedPlaylistTracks, 60 - [isSmart, savedTracksData, smartTracksData] 61 - ); 56 + const rawTracks = isSmart 57 + ? (smartTracksData?.smartPlaylistTracks ?? []) 58 + : (savedTracksData?.savedPlaylistTracks ?? []); 62 59 63 - useEffect(() => { 64 - if (!rawTracks) return; 65 - setTracks( 60 + const tracks: Track[] = useMemo( 61 + () => 66 62 rawTracks.map((t, i) => ({ 67 63 id: t.id ?? "", 68 64 trackNumber: i + 1, 69 65 title: t.title, 70 66 artist: t.artist, 71 - artistId: t.artistId ?? undefined, 72 - albumId: t.albumId ?? undefined, 67 + artistId: t.artistId ?? "", 68 + albumId: t.albumId ?? "", 69 + album: t.album, 73 70 time: formatTime(t.length), 74 - albumArt: t.albumArt 75 - ? `${location.protocol}//${location.host}/covers/${t.albumArt}` 76 - : undefined, 71 + albumArt: t.albumArt ?? undefined, 77 72 path: t.path, 78 - })) 79 - ); 73 + })), 80 74 // eslint-disable-next-line react-hooks/exhaustive-deps 81 - }, [rawTracks]); 75 + [rawTracks] 76 + ); 82 77 83 - function onPlayAll(shuffle = false) { 78 + const onPlayAll = () => { 84 79 if (isSmart) { 85 - playSmart({ variables: { id: id! } }); 80 + playSmartPlaylist({ id: id! }); 86 81 } else { 87 - if (shuffle) { 88 - const paths = tracks.map((t) => t.path).filter((p): p is string => !!p); 89 - const shuffled = [...paths].sort(() => Math.random() - 0.5); 90 - insertTracks({ 91 - variables: { position: PLAYLIST_INSERT_FIRST, tracks: shuffled }, 92 - }); 93 - } else { 94 - playSaved({ variables: { playlistId: id! } }); 95 - } 82 + playSavedPlaylist({ playlistId: id! }); 96 83 } 97 - } 84 + }; 98 85 99 - function onPlayTrack(position: number) { 86 + const onShuffleAll = () => { 87 + onPlayAll(); 88 + shufflePlaylist({}); 89 + }; 90 + 91 + const onPlayTrack = (position: number) => { 100 92 if (isSmart) { 101 - playSmart({ variables: { id: id! } }); 93 + playSmartPlaylist({ id: id! }); 102 94 } else { 103 - const paths = tracks.map((t) => t.path).filter((p): p is string => !!p); 104 - const ordered = [...paths.slice(position), ...paths.slice(0, position)]; 105 - insertTracks({ 106 - variables: { position: PLAYLIST_INSERT_FIRST, tracks: ordered }, 107 - }); 95 + playSavedPlaylist({ playlistId: id! }); 108 96 } 109 - } 97 + startPlaylist({ startIndex: position }); 98 + }; 110 99 111 - async function onRemoveTrack(trackId: string) { 112 - await removeTrack({ 113 - variables: { playlistId: id!, trackId }, 114 - }); 115 - await refetchTracks(); 116 - } 100 + const onRemoveTrack = isSmart 101 + ? undefined 102 + : async (trackId: string) => { 103 + await removeTrack({ playlistId: id!, trackId }); 104 + refetchSavedTracks(); 105 + queryClient.invalidateQueries({ 106 + queryKey: useGetSavedPlaylistTracksQuery.getKey({ playlistId: id! }), 107 + }); 108 + }; 117 109 118 110 return ( 119 111 <PlaylistDetails ··· 121 113 tracks={tracks} 122 114 isSmart={isSmart} 123 115 onGoBack={() => navigate(-1)} 124 - onPlayAll={() => onPlayAll(false)} 125 - onShuffleAll={() => onPlayAll(true)} 116 + onPlayAll={onPlayAll} 117 + onShuffleAll={onShuffleAll} 126 118 onPlayTrack={onPlayTrack} 127 - onRemoveTrack={!isSmart ? onRemoveTrack : undefined} 119 + onRemoveTrack={onRemoveTrack} 128 120 /> 129 121 ); 130 122 };
+38 -32
webui/rockbox/src/Components/Playlists/PlaylistsWithData.tsx
··· 1 1 import { FC } from "react"; 2 + import { useQueryClient } from "@tanstack/react-query"; 2 3 import Playlists from "./Playlists"; 3 4 import { 4 5 useGetSavedPlaylistsQuery, ··· 11 12 } from "../../Hooks/GraphQL"; 12 13 13 14 const PlaylistsWithData: FC = () => { 14 - const { data: savedData, refetch: refetchSaved } = useGetSavedPlaylistsQuery({ 15 - fetchPolicy: "cache-and-network", 16 - }); 17 - const { data: smartData } = useGetSmartPlaylistsQuery({ 18 - fetchPolicy: "cache-and-network", 19 - }); 15 + const queryClient = useQueryClient(); 16 + const { data: savedData } = useGetSavedPlaylistsQuery(); 17 + const { data: smartData } = useGetSmartPlaylistsQuery(); 18 + const { mutateAsync: createSavedPlaylist } = useCreateSavedPlaylistMutation(); 19 + const { mutateAsync: updateSavedPlaylist } = useUpdateSavedPlaylistMutation(); 20 + const { mutateAsync: deleteSavedPlaylist } = useDeleteSavedPlaylistMutation(); 21 + const { mutate: playSavedPlaylist } = usePlaySavedPlaylistMutation(); 22 + const { mutate: playSmartPlaylist } = usePlaySmartPlaylistMutation(); 20 23 21 - const [createPlaylist] = useCreateSavedPlaylistMutation(); 22 - const [updatePlaylist] = useUpdateSavedPlaylistMutation(); 23 - const [deletePlaylist] = useDeleteSavedPlaylistMutation(); 24 - const [playSaved] = usePlaySavedPlaylistMutation(); 25 - const [playSmart] = usePlaySmartPlaylistMutation(); 26 - 27 - async function onCreate(name: string, description?: string) { 28 - await createPlaylist({ variables: { name, description } }); 29 - await refetchSaved(); 30 - } 31 - 32 - async function onUpdate(id: string, name: string, description?: string) { 33 - await updatePlaylist({ variables: { id, name, description } }); 34 - await refetchSaved(); 35 - } 36 - 37 - async function onDelete(id: string) { 38 - await deletePlaylist({ variables: { id } }); 39 - await refetchSaved(); 40 - } 24 + const savedPlaylists = savedData?.savedPlaylists ?? []; 25 + const smartPlaylists = smartData?.smartPlaylists ?? []; 41 26 42 - function onPlay(id: string, isSmart: boolean) { 27 + const onPlay = (id: string, isSmart: boolean) => { 43 28 if (isSmart) { 44 - playSmart({ variables: { id } }); 29 + playSmartPlaylist({ id }); 45 30 } else { 46 - playSaved({ variables: { playlistId: id } }); 31 + playSavedPlaylist({ playlistId: id }); 47 32 } 48 - } 33 + }; 34 + 35 + const onCreate = async (name: string, description?: string) => { 36 + await createSavedPlaylist({ name, description }); 37 + queryClient.invalidateQueries({ 38 + queryKey: useGetSavedPlaylistsQuery.getKey(), 39 + }); 40 + }; 41 + 42 + const onUpdate = async (id: string, name: string, description?: string) => { 43 + await updateSavedPlaylist({ id, name, description }); 44 + queryClient.invalidateQueries({ 45 + queryKey: useGetSavedPlaylistsQuery.getKey(), 46 + }); 47 + }; 48 + 49 + const onDelete = async (id: string) => { 50 + await deleteSavedPlaylist({ id }); 51 + queryClient.invalidateQueries({ 52 + queryKey: useGetSavedPlaylistsQuery.getKey(), 53 + }); 54 + }; 49 55 50 56 return ( 51 57 <Playlists 52 - savedPlaylists={savedData?.savedPlaylists ?? []} 53 - smartPlaylists={smartData?.smartPlaylists ?? []} 58 + savedPlaylists={savedPlaylists} 59 + smartPlaylists={smartPlaylists} 54 60 onPlay={onPlay} 55 61 onEdit={() => {}} 56 62 onDelete={onDelete}
+2 -8
webui/rockbox/src/Components/Settings/Library/LibraryWithData.tsx
··· 7 7 8 8 const LibraryWithData: FC = () => { 9 9 const { data } = useGetGlobalSettingsQuery(); 10 - const [saveSettings] = useSaveSettingsMutation(); 10 + const { mutate: saveSettings } = useSaveSettingsMutation(); 11 11 12 12 const onSaveMusicDirectoryPath = (musicDir: string) => 13 - saveSettings({ 14 - variables: { 15 - settings: { 16 - musicDir, 17 - }, 18 - }, 19 - }); 13 + saveSettings({ settings: { musicDir } }); 20 14 21 15 return ( 22 16 <Library
+15 -71
webui/rockbox/src/Components/Settings/Playback/PlaybackWithData.tsx
··· 10 10 const PlaybackWithData: FC = () => { 11 11 const { refetch: refetchSettings } = useGetGlobalSettingsQuery(); 12 12 const [settings] = useRecoilState(settingsState); 13 - const [saveSettings] = useSaveSettingsMutation(); 13 + const { mutate: saveSettings, mutateAsync: saveSettingsAsync } = useSaveSettingsMutation(); 14 14 15 15 const onShuffleChange = async (playlistShuffle: boolean) => { 16 - await saveSettings({ 17 - variables: { 18 - settings: { 19 - playlistShuffle, 20 - }, 21 - }, 22 - }); 16 + await saveSettingsAsync({ settings: { playlistShuffle } }); 23 17 await refetchSettings(); 24 18 }; 25 19 26 20 const onRepeatChange = async (repeatMode: number) => { 27 - await saveSettings({ 28 - variables: { 29 - settings: { 30 - repeatMode, 31 - }, 32 - }, 33 - }); 21 + await saveSettingsAsync({ settings: { repeatMode } }); 34 22 await refetchSettings(); 35 23 }; 36 24 37 25 const onCrossfadeChange = (crossfade: number) => { 38 - saveSettings({ 39 - variables: { 40 - settings: { 41 - crossfade, 42 - }, 43 - }, 44 - }); 26 + saveSettings({ settings: { crossfade } }); 45 27 }; 46 28 47 29 const onFadeOnStopPauseChange = (fadeOnStop: boolean) => { 48 - saveSettings({ 49 - variables: { 50 - settings: { 51 - fadeOnStop, 52 - }, 53 - }, 54 - }); 30 + saveSettings({ settings: { fadeOnStop } }); 55 31 }; 56 32 57 33 const onReplaygainChange = (replaygain: number) => { 58 34 saveSettings({ 59 - variables: { 60 - settings: { 61 - replaygainSettings: { 62 - type: replaygain, 63 - preamp: settings.replaygainSettings.preamp, 64 - noclip: settings.replaygainSettings.noclip, 65 - }, 35 + settings: { 36 + replaygainSettings: { 37 + type: replaygain, 38 + preamp: settings.replaygainSettings.preamp, 39 + noclip: settings.replaygainSettings.noclip, 66 40 }, 67 41 }, 68 42 }); 69 43 }; 70 44 71 45 const onFadeInDelayChange = (fadeInDelay: number) => { 72 - saveSettings({ 73 - variables: { 74 - settings: { 75 - fadeInDelay, 76 - }, 77 - }, 78 - }); 46 + saveSettings({ settings: { fadeInDelay } }); 79 47 }; 80 48 81 49 const onFadeInDurationChange = (fadeInDuration: number) => { 82 - saveSettings({ 83 - variables: { 84 - settings: { 85 - fadeInDuration, 86 - }, 87 - }, 88 - }); 50 + saveSettings({ settings: { fadeInDuration } }); 89 51 }; 90 52 91 53 const onFadeOutDelayChange = (fadeOutDelay: number) => { 92 - saveSettings({ 93 - variables: { 94 - settings: { 95 - fadeOutDelay, 96 - }, 97 - }, 98 - }); 54 + saveSettings({ settings: { fadeOutDelay } }); 99 55 }; 100 56 101 57 const onFadeOutDurationChange = (fadeOutDuration: number) => { 102 - saveSettings({ 103 - variables: { 104 - settings: { 105 - fadeOutDuration, 106 - }, 107 - }, 108 - }); 58 + saveSettings({ settings: { fadeOutDuration } }); 109 59 }; 110 60 111 61 const onFadeOutModeChange = (fadeOutMixmode: number) => { 112 - saveSettings({ 113 - variables: { 114 - settings: { 115 - fadeOutMixmode, 116 - }, 117 - }, 118 - }); 62 + saveSettings({ settings: { fadeOutMixmode } }); 119 63 }; 120 64 121 65 return (
+3 -15
webui/rockbox/src/Components/Settings/Sound/Equalizer/EqualizerWithData.tsx
··· 6 6 7 7 const EqualizerWithData: FC = () => { 8 8 const [settings] = useRecoilState(settingsState); 9 - const [saveSettings] = useSaveSettingsMutation(); 9 + const { mutate: saveSettings } = useSaveSettingsMutation(); 10 10 11 11 const onEnableEq = (eqEnabled: boolean) => { 12 - saveSettings({ 13 - variables: { 14 - settings: { 15 - eqEnabled, 16 - }, 17 - }, 18 - }); 12 + saveSettings({ settings: { eqEnabled } }); 19 13 }; 20 14 21 15 const onEqBandSettingsChange = ( ··· 25 19 cutoff: number; 26 20 }[] 27 21 ) => { 28 - saveSettings({ 29 - variables: { 30 - settings: { 31 - eqBandSettings, 32 - }, 33 - }, 34 - }); 22 + saveSettings({ settings: { eqBandSettings } }); 35 23 }; 36 24 37 25 return (
+5 -22
webui/rockbox/src/Components/Settings/Sound/SoundWithData.tsx
··· 6 6 7 7 const SoundWithData: FC = () => { 8 8 const [settings] = useRecoilState(settingsState); 9 - const [saveSettings] = useSaveSettingsMutation(); 9 + const { mutate: saveSettings } = useSaveSettingsMutation(); 10 10 11 11 const onBalanceChange = (balance: number) => { 12 - saveSettings({ 13 - variables: { 14 - settings: { 15 - balance, 16 - }, 17 - }, 18 - }); 12 + saveSettings({ settings: { balance } }); 19 13 }; 20 14 21 15 const onBassChange = (bass: number) => { 22 - saveSettings({ 23 - variables: { 24 - settings: { 25 - bass, 26 - }, 27 - }, 28 - }); 16 + saveSettings({ settings: { bass } }); 29 17 }; 18 + 30 19 const onTrebleChange = (treble: number) => { 31 - saveSettings({ 32 - variables: { 33 - settings: { 34 - treble, 35 - }, 36 - }, 37 - }); 20 + saveSettings({ settings: { treble } }); 38 21 }; 39 22 return ( 40 23 <Sound
+2 -4
webui/rockbox/src/Components/Tracks/Tracks.test.tsx
··· 3 3 import Providers from "../../Providers"; 4 4 import { tracks } from "./mocks"; 5 5 import { MemoryRouter } from "react-router-dom"; 6 - import { MockedProvider } from "@apollo/client/testing"; 7 - import { mocks } from "../../mocks"; 8 6 import { vi } from "vitest"; 9 7 10 8 describe("Tracks", () => { 11 9 it("should render", () => { 12 10 const { container } = render( 13 11 <MemoryRouter initialEntries={["/"]}> 14 - <MockedProvider mocks={mocks} addTypename={false}> 12 + 15 13 <Providers> 16 14 <Tracks tracks={tracks} onPlayTrack={vi.fn()} /> 17 15 </Providers> 18 - </MockedProvider> 16 + 19 17 </MemoryRouter> 20 18 ); 21 19 expect(container).toMatchSnapshot();
+6 -10
webui/rockbox/src/Components/Tracks/TracksWithData.tsx
··· 8 8 9 9 const TracksWithData: FC = () => { 10 10 const filter = useRecoilValue(filterState); 11 - const { data, loading } = useTracksQuery(); 11 + const { data, isLoading } = useTracksQuery(); 12 12 const [tracks, setTracks] = useState<Track[]>([]); 13 13 const { formatTime } = useTimeFormat(); 14 - const [playAllTracks] = usePlayAllTracksMutation(); 14 + const { mutate: playAllTracks } = usePlayAllTracksMutation(); 15 15 16 16 useEffect(() => { 17 17 if (filter.term.length > 0 && filter.results) { ··· 55 55 }, [filter, data]); 56 56 57 57 useEffect(() => { 58 - if (!data || loading) { 58 + if (!data || isLoading) { 59 59 return; 60 60 } 61 61 ··· 76 76 })) 77 77 ); 78 78 // eslint-disable-next-line react-hooks/exhaustive-deps 79 - }, [data, loading]); 79 + }, [data, isLoading]); 80 80 81 81 const onPlayTrack = (position: number) => { 82 - playAllTracks({ 83 - variables: { 84 - position, 85 - }, 86 - }); 82 + playAllTracks({ position }); 87 83 }; 88 84 89 85 return ( ··· 91 87 tracks={tracks} 92 88 onPlayTrack={onPlayTrack} 93 89 keyword={filter.term} 94 - loading={loading} 90 + loading={isLoading} 95 91 /> 96 92 ); 97 93 };
+1 -1
webui/rockbox/src/GraphQL/Browse/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_ENTRIES = gql` 4 4 query GetEntries($path: String) {
+1 -1
webui/rockbox/src/GraphQL/Device/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const CONNECT_TO_DEVICE = gql` 4 4 mutation ConnectToDevice($id: String!) {
+1 -1
webui/rockbox/src/GraphQL/Device/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_DEVICES = gql` 4 4 query GetDevices {
+1 -1
webui/rockbox/src/GraphQL/Library/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const LIKE_TRACK = gql` 4 4 mutation LikeTrack($trackId: String!) {
+3 -1
webui/rockbox/src/GraphQL/Library/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_ALBUMS = gql` 4 4 query GetAlbums { ··· 31 31 artists { 32 32 id 33 33 name 34 + image 34 35 } 35 36 } 36 37 `; ··· 40 41 artist(id: $id) { 41 42 id 42 43 name 44 + image 43 45 albums { 44 46 id 45 47 title
+1 -1
webui/rockbox/src/GraphQL/Playback/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const PLAY = gql` 4 4 mutation Play($elapsed: Int!, $offset: Int!) {
+1 -1
webui/rockbox/src/GraphQL/Playback/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_CURRENT_TRACK = gql` 4 4 query GetCurrentTrack {
+1 -1
webui/rockbox/src/GraphQL/Playback/Subscription.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const CURRENTLY_PLAYING_SONG = gql` 4 4 subscription CurrentlyPlayingSong {
+7 -1
webui/rockbox/src/GraphQL/Playlist/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const RESUME_PLAYLIST = gql` 4 4 mutation ResumePlaylist { ··· 53 53 insertAlbum(albumId: $albumId, position: $position) 54 54 } 55 55 `; 56 + 57 + export const SHUFFLE_PLAYLIST = gql` 58 + mutation ShufflePlaylist { 59 + shufflePlaylist 60 + } 61 + `;
+1 -1
webui/rockbox/src/GraphQL/Playlist/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_CURRENT_PLAYLIST = gql` 4 4 query GetCurrentPlaylist {
+1 -1
webui/rockbox/src/GraphQL/Playlist/Subscription.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const PLAYLIST_CHANGED = gql` 4 4 subscription PlaylistChanged {
+1 -1
webui/rockbox/src/GraphQL/SavedPlaylist/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const CREATE_SAVED_PLAYLIST = gql` 4 4 mutation CreateSavedPlaylist(
+1 -1
webui/rockbox/src/GraphQL/SavedPlaylist/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_SAVED_PLAYLISTS = gql` 4 4 query GetSavedPlaylists {
+1 -1
webui/rockbox/src/GraphQL/Settings/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const SAVE_SETTINGS = gql` 4 4 mutation SaveSettings($settings: NewGlobalSettings!) {
+1 -1
webui/rockbox/src/GraphQL/Settings/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_GLOBAL_SETTINGS = gql` 4 4 query GetGlobalSettings {
+1 -1
webui/rockbox/src/GraphQL/SmartPlaylist/Mutation.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const PLAY_SMART_PLAYLIST = gql` 4 4 mutation PlaySmartPlaylist($id: String!) {
+1 -1
webui/rockbox/src/GraphQL/SmartPlaylist/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_SMART_PLAYLISTS = gql` 4 4 query GetSmartPlaylists {
+1 -1
webui/rockbox/src/GraphQL/Sound/Mutation.tsx
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const ADJUST_VOLUME = gql` 4 4 mutation AdjustVolume($steps: Int!) {
+1 -1
webui/rockbox/src/GraphQL/System/Query.ts
··· 1 - import { gql } from "@apollo/client"; 1 + import { gql } from "graphql-tag"; 2 2 3 3 export const GET_ROCKBOX_VERSION = gql` 4 4 query GetRockboxVersion {
+1511 -1653
webui/rockbox/src/Hooks/GraphQL.tsx
··· 1 - import { gql } from '@apollo/client'; 2 - import * as Apollo from '@apollo/client'; 1 + import { useQuery, useMutation, UseQueryOptions, UseMutationOptions } from '@tanstack/react-query'; 2 + import { fetchData, TypedDocumentString } from '../lib/graphql-client'; 3 + import { useSubscription } from '../lib/subscription-client'; 3 4 export type Maybe<T> = T | null; 4 5 export type InputMaybe<T> = Maybe<T>; 5 6 export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }; ··· 7 8 export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> }; 8 9 export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never }; 9 10 export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; 10 - const defaultOptions = {} as const; 11 11 /** All built-in and custom scalars, mapped to their actual values */ 12 12 export type Scalars = { 13 13 ID: { input: string; output: string; } ··· 55 55 threshold: Scalars['Int']['output']; 56 56 }; 57 57 58 + export type CompressorSettingsInput = { 59 + attackTime: Scalars['Int']['input']; 60 + knee: Scalars['Int']['input']; 61 + makeupGain: Scalars['Int']['input']; 62 + ratio: Scalars['Int']['input']; 63 + releaseTime: Scalars['Int']['input']; 64 + threshold: Scalars['Int']['input']; 65 + }; 66 + 58 67 export type Device = { 59 68 __typename?: 'Device'; 60 69 app: Scalars['String']['output']; ··· 94 103 95 104 export type Mutation = { 96 105 __typename?: 'Mutation'; 106 + addTracksToSavedPlaylist: Scalars['Boolean']['output']; 97 107 adjustVolume: Scalars['Int']['output']; 98 108 beepPlay: Scalars['String']['output']; 99 109 connect: Scalars['Boolean']['output']; 110 + createPlaylistFolder: SavedPlaylistFolder; 111 + createSavedPlaylist: SavedPlaylist; 112 + createSmartPlaylist: SmartPlaylist; 113 + deletePlaylistFolder: Scalars['Boolean']['output']; 114 + deleteSavedPlaylist: Scalars['Boolean']['output']; 115 + deleteSmartPlaylist: Scalars['Boolean']['output']; 100 116 disconnect: Scalars['Boolean']['output']; 101 117 fastForwardRewind: Scalars['Int']['output']; 102 118 flushAndReloadTracks: Scalars['Int']['output']; ··· 120 136 playDirectory: Scalars['Int']['output']; 121 137 playLikedTracks: Scalars['Int']['output']; 122 138 playPlaylist: Scalars['Int']['output']; 139 + playSavedPlaylist: Scalars['Boolean']['output']; 140 + playSmartPlaylist: Scalars['Boolean']['output']; 123 141 playTrack: Scalars['Int']['output']; 124 142 playlistCreate: Scalars['Int']['output']; 125 143 playlistRemoveAllTracks: Scalars['Int']['output']; ··· 129 147 playlistStart: Scalars['Int']['output']; 130 148 playlistSync: Scalars['String']['output']; 131 149 previous: Scalars['Int']['output']; 150 + recordTrackPlayed: Scalars['Boolean']['output']; 151 + recordTrackSkipped: Scalars['Boolean']['output']; 152 + removeTrackFromSavedPlaylist: Scalars['Boolean']['output']; 132 153 resume: Scalars['Int']['output']; 133 154 resumeTrack: Scalars['String']['output']; 134 155 saveSettings: Scalars['Boolean']['output']; ··· 142 163 systemSoundPlay: Scalars['String']['output']; 143 164 unlikeAlbum: Scalars['Int']['output']; 144 165 unlikeTrack: Scalars['Int']['output']; 166 + updateSavedPlaylist: Scalars['Boolean']['output']; 167 + updateSmartPlaylist: Scalars['Boolean']['output']; 168 + }; 169 + 170 + 171 + export type MutationAddTracksToSavedPlaylistArgs = { 172 + playlistId: Scalars['String']['input']; 173 + trackIds: Array<Scalars['String']['input']>; 145 174 }; 146 175 147 176 ··· 155 184 }; 156 185 157 186 187 + export type MutationCreatePlaylistFolderArgs = { 188 + name: Scalars['String']['input']; 189 + }; 190 + 191 + 192 + export type MutationCreateSavedPlaylistArgs = { 193 + description?: InputMaybe<Scalars['String']['input']>; 194 + folderId?: InputMaybe<Scalars['String']['input']>; 195 + image?: InputMaybe<Scalars['String']['input']>; 196 + name: Scalars['String']['input']; 197 + trackIds?: InputMaybe<Array<Scalars['String']['input']>>; 198 + }; 199 + 200 + 201 + export type MutationCreateSmartPlaylistArgs = { 202 + description?: InputMaybe<Scalars['String']['input']>; 203 + folderId?: InputMaybe<Scalars['String']['input']>; 204 + image?: InputMaybe<Scalars['String']['input']>; 205 + name: Scalars['String']['input']; 206 + rules: Scalars['String']['input']; 207 + }; 208 + 209 + 210 + export type MutationDeletePlaylistFolderArgs = { 211 + id: Scalars['String']['input']; 212 + }; 213 + 214 + 215 + export type MutationDeleteSavedPlaylistArgs = { 216 + id: Scalars['String']['input']; 217 + }; 218 + 219 + 220 + export type MutationDeleteSmartPlaylistArgs = { 221 + id: Scalars['String']['input']; 222 + }; 223 + 224 + 158 225 export type MutationDisconnectArgs = { 159 226 id: Scalars['String']['input']; 160 227 }; ··· 250 317 }; 251 318 252 319 320 + export type MutationPlaySavedPlaylistArgs = { 321 + playlistId: Scalars['String']['input']; 322 + }; 323 + 324 + 325 + export type MutationPlaySmartPlaylistArgs = { 326 + id: Scalars['String']['input']; 327 + }; 328 + 329 + 253 330 export type MutationPlayTrackArgs = { 254 331 path: Scalars['String']['input']; 255 332 }; ··· 270 347 elapsed?: InputMaybe<Scalars['Int']['input']>; 271 348 offset?: InputMaybe<Scalars['Int']['input']>; 272 349 startIndex?: InputMaybe<Scalars['Int']['input']>; 350 + }; 351 + 352 + 353 + export type MutationRecordTrackPlayedArgs = { 354 + trackId: Scalars['String']['input']; 355 + }; 356 + 357 + 358 + export type MutationRecordTrackSkippedArgs = { 359 + trackId: Scalars['String']['input']; 360 + }; 361 + 362 + 363 + export type MutationRemoveTrackFromSavedPlaylistArgs = { 364 + playlistId: Scalars['String']['input']; 365 + trackId: Scalars['String']['input']; 273 366 }; 274 367 275 368 ··· 287 380 id: Scalars['String']['input']; 288 381 }; 289 382 383 + 384 + export type MutationUpdateSavedPlaylistArgs = { 385 + description?: InputMaybe<Scalars['String']['input']>; 386 + folderId?: InputMaybe<Scalars['String']['input']>; 387 + id: Scalars['String']['input']; 388 + image?: InputMaybe<Scalars['String']['input']>; 389 + name: Scalars['String']['input']; 390 + }; 391 + 392 + 393 + export type MutationUpdateSmartPlaylistArgs = { 394 + description?: InputMaybe<Scalars['String']['input']>; 395 + folderId?: InputMaybe<Scalars['String']['input']>; 396 + id: Scalars['String']['input']; 397 + image?: InputMaybe<Scalars['String']['input']>; 398 + name: Scalars['String']['input']; 399 + rules: Scalars['String']['input']; 400 + }; 401 + 290 402 export type NewGlobalSettings = { 291 403 balance?: InputMaybe<Scalars['Int']['input']>; 292 404 bass?: InputMaybe<Scalars['Int']['input']>; 293 405 bassCutoff?: InputMaybe<Scalars['Int']['input']>; 294 406 channelConfig?: InputMaybe<Scalars['Int']['input']>; 407 + compressorSettings?: InputMaybe<CompressorSettingsInput>; 295 408 crossfade?: InputMaybe<Scalars['Int']['input']>; 296 409 eqBandSettings?: InputMaybe<Array<EqBandSettingInput>>; 297 410 eqEnabled?: InputMaybe<Scalars['Boolean']['input']>; ··· 350 463 likedTracks: Array<Track>; 351 464 nextTrack?: Maybe<Track>; 352 465 playlistAmount: Scalars['Int']['output']; 466 + playlistFolders: Array<SavedPlaylistFolder>; 353 467 playlistGetCurrent: Playlist; 354 468 rockboxVersion: Scalars['String']['output']; 469 + savedPlaylist?: Maybe<SavedPlaylist>; 470 + savedPlaylistTrackIds: Array<Scalars['String']['output']>; 471 + savedPlaylistTracks: Array<Track>; 472 + savedPlaylists: Array<SavedPlaylist>; 355 473 search: SearchResults; 474 + smartPlaylist?: Maybe<SmartPlaylist>; 475 + smartPlaylistTrackIds: Array<Scalars['String']['output']>; 476 + smartPlaylistTracks: Array<Track>; 477 + smartPlaylists: Array<SmartPlaylist>; 356 478 soundCurrent: Scalars['String']['output']; 357 479 soundDefault: Scalars['String']['output']; 358 480 soundVal2Phys: Scalars['String']['output']; 359 481 status: Scalars['Int']['output']; 360 482 track?: Maybe<Track>; 483 + trackStats?: Maybe<TrackStats>; 361 484 tracks: Array<Track>; 362 485 treeGetEntries: Array<Entry>; 363 486 }; ··· 375 498 376 499 export type QueryDeviceArgs = { 377 500 id: Scalars['String']['input']; 501 + }; 502 + 503 + 504 + export type QuerySavedPlaylistArgs = { 505 + id: Scalars['String']['input']; 506 + }; 507 + 508 + 509 + export type QuerySavedPlaylistTrackIdsArgs = { 510 + playlistId: Scalars['String']['input']; 511 + }; 512 + 513 + 514 + export type QuerySavedPlaylistTracksArgs = { 515 + playlistId: Scalars['String']['input']; 516 + }; 517 + 518 + 519 + export type QuerySavedPlaylistsArgs = { 520 + folderId?: InputMaybe<Scalars['String']['input']>; 378 521 }; 379 522 380 523 ··· 383 526 }; 384 527 385 528 529 + export type QuerySmartPlaylistArgs = { 530 + id: Scalars['String']['input']; 531 + }; 532 + 533 + 534 + export type QuerySmartPlaylistTrackIdsArgs = { 535 + id: Scalars['String']['input']; 536 + }; 537 + 538 + 539 + export type QuerySmartPlaylistTracksArgs = { 540 + id: Scalars['String']['input']; 541 + }; 542 + 543 + 386 544 export type QueryTrackArgs = { 387 545 id: Scalars['String']['input']; 546 + }; 547 + 548 + 549 + export type QueryTrackStatsArgs = { 550 + trackId: Scalars['String']['input']; 388 551 }; 389 552 390 553 ··· 405 568 type: Scalars['Int']['input']; 406 569 }; 407 570 571 + export type SavedPlaylist = { 572 + __typename?: 'SavedPlaylist'; 573 + createdAt: Scalars['Int']['output']; 574 + description?: Maybe<Scalars['String']['output']>; 575 + folderId?: Maybe<Scalars['String']['output']>; 576 + id: Scalars['String']['output']; 577 + image?: Maybe<Scalars['String']['output']>; 578 + name: Scalars['String']['output']; 579 + trackCount: Scalars['Int']['output']; 580 + updatedAt: Scalars['Int']['output']; 581 + }; 582 + 583 + export type SavedPlaylistFolder = { 584 + __typename?: 'SavedPlaylistFolder'; 585 + createdAt: Scalars['Int']['output']; 586 + id: Scalars['String']['output']; 587 + name: Scalars['String']['output']; 588 + updatedAt: Scalars['Int']['output']; 589 + }; 590 + 408 591 export type SearchResults = { 409 592 __typename?: 'SearchResults'; 410 593 albums: Array<Album>; ··· 414 597 tracks: Array<Track>; 415 598 }; 416 599 600 + export type SmartPlaylist = { 601 + __typename?: 'SmartPlaylist'; 602 + createdAt: Scalars['Int']['output']; 603 + description?: Maybe<Scalars['String']['output']>; 604 + folderId?: Maybe<Scalars['String']['output']>; 605 + id: Scalars['String']['output']; 606 + image?: Maybe<Scalars['String']['output']>; 607 + isSystem: Scalars['Boolean']['output']; 608 + name: Scalars['String']['output']; 609 + rules: Scalars['String']['output']; 610 + updatedAt: Scalars['Int']['output']; 611 + }; 612 + 417 613 export type Subscription = { 418 614 __typename?: 'Subscription'; 419 615 currentlyPlayingSong: Track; ··· 463 659 tracknum: Scalars['Int']['output']; 464 660 year: Scalars['Int']['output']; 465 661 yearString: Scalars['String']['output']; 662 + }; 663 + 664 + export type TrackStats = { 665 + __typename?: 'TrackStats'; 666 + lastPlayed?: Maybe<Scalars['Int']['output']>; 667 + lastSkipped?: Maybe<Scalars['Int']['output']>; 668 + playCount: Scalars['Int']['output']; 669 + skipCount: Scalars['Int']['output']; 670 + trackId: Scalars['String']['output']; 671 + updatedAt: Scalars['Int']['output']; 466 672 }; 467 673 468 674 export type UserSettings = { ··· 938 1144 939 1145 export type InsertAlbumMutation = { __typename?: 'Mutation', insertAlbum: number }; 940 1146 1147 + export type ShufflePlaylistMutationVariables = Exact<{ [key: string]: never; }>; 1148 + 1149 + 1150 + export type ShufflePlaylistMutation = { __typename?: 'Mutation', shufflePlaylist: number }; 1151 + 941 1152 export type GetCurrentPlaylistQueryVariables = Exact<{ [key: string]: never; }>; 942 1153 943 1154 ··· 948 1159 949 1160 export type PlaylistChangedSubscription = { __typename?: 'Subscription', playlistChanged: { __typename?: 'Playlist', index: number, amount: number, maxPlaylistSize: number, tracks: Array<{ __typename?: 'Track', id?: string | null, title: string, artist: string, albumArt?: string | null, artistId?: string | null, albumId?: string | null, path: string }> } }; 950 1161 1162 + export type CreateSavedPlaylistMutationVariables = Exact<{ 1163 + name: Scalars['String']['input']; 1164 + description?: InputMaybe<Scalars['String']['input']>; 1165 + trackIds?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>; 1166 + }>; 1167 + 1168 + 1169 + export type CreateSavedPlaylistMutation = { __typename?: 'Mutation', createSavedPlaylist: { __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, trackCount: number } }; 1170 + 1171 + export type UpdateSavedPlaylistMutationVariables = Exact<{ 1172 + id: Scalars['String']['input']; 1173 + name: Scalars['String']['input']; 1174 + description?: InputMaybe<Scalars['String']['input']>; 1175 + }>; 1176 + 1177 + 1178 + export type UpdateSavedPlaylistMutation = { __typename?: 'Mutation', updateSavedPlaylist: boolean }; 1179 + 1180 + export type DeleteSavedPlaylistMutationVariables = Exact<{ 1181 + id: Scalars['String']['input']; 1182 + }>; 1183 + 1184 + 1185 + export type DeleteSavedPlaylistMutation = { __typename?: 'Mutation', deleteSavedPlaylist: boolean }; 1186 + 1187 + export type AddTracksToSavedPlaylistMutationVariables = Exact<{ 1188 + playlistId: Scalars['String']['input']; 1189 + trackIds: Array<Scalars['String']['input']> | Scalars['String']['input']; 1190 + }>; 1191 + 1192 + 1193 + export type AddTracksToSavedPlaylistMutation = { __typename?: 'Mutation', addTracksToSavedPlaylist: boolean }; 1194 + 1195 + export type RemoveTrackFromSavedPlaylistMutationVariables = Exact<{ 1196 + playlistId: Scalars['String']['input']; 1197 + trackId: Scalars['String']['input']; 1198 + }>; 1199 + 1200 + 1201 + export type RemoveTrackFromSavedPlaylistMutation = { __typename?: 'Mutation', removeTrackFromSavedPlaylist: boolean }; 1202 + 1203 + export type PlaySavedPlaylistMutationVariables = Exact<{ 1204 + playlistId: Scalars['String']['input']; 1205 + }>; 1206 + 1207 + 1208 + export type PlaySavedPlaylistMutation = { __typename?: 'Mutation', playSavedPlaylist: boolean }; 1209 + 1210 + export type GetSavedPlaylistsQueryVariables = Exact<{ [key: string]: never; }>; 1211 + 1212 + 1213 + export type GetSavedPlaylistsQuery = { __typename?: 'Query', savedPlaylists: Array<{ __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, image?: string | null, trackCount: number, createdAt: number, updatedAt: number }> }; 1214 + 1215 + export type GetSavedPlaylistQueryVariables = Exact<{ 1216 + id: Scalars['String']['input']; 1217 + }>; 1218 + 1219 + 1220 + export type GetSavedPlaylistQuery = { __typename?: 'Query', savedPlaylist?: { __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, image?: string | null, trackCount: number, createdAt: number, updatedAt: number } | null }; 1221 + 1222 + export type GetSavedPlaylistTracksQueryVariables = Exact<{ 1223 + playlistId: Scalars['String']['input']; 1224 + }>; 1225 + 1226 + 1227 + export type GetSavedPlaylistTracksQuery = { __typename?: 'Query', savedPlaylistTracks: Array<{ __typename?: 'Track', id?: string | null, title: string, artist: string, album: string, albumArt?: string | null, artistId?: string | null, albumId?: string | null, path: string, length: number, tracknum: number }> }; 1228 + 951 1229 export type SaveSettingsMutationVariables = Exact<{ 952 1230 settings: NewGlobalSettings; 953 1231 }>; ··· 960 1238 961 1239 export type GetGlobalSettingsQuery = { __typename?: 'Query', globalSettings: { __typename?: 'UserSettings', musicDir: string, volume: number, playlistShuffle: boolean, repeatMode: number, bass: number, bassCutoff: number, treble: number, trebleCutoff: number, crossfade: number, fadeOnStop: boolean, crossfadeFadeInDelay: number, crossfadeFadeInDuration: number, crossfadeFadeOutDelay: number, crossfadeFadeOutDuration: number, crossfadeFadeOutMixmode: number, balance: number, stereoWidth: number, stereoswMode: number, surroundEnabled: number, surroundBalance: number, surroundFx1: number, surroundFx2: number, partyMode: boolean, ditheringEnabled: boolean, channelConfig: number, playerName: string, eqEnabled: boolean, eqBandSettings: Array<{ __typename?: 'EqBandSetting', q: number, cutoff: number, gain: number }>, replaygainSettings: { __typename?: 'ReplaygainSettings', noclip: boolean, type: number, preamp: number } } }; 962 1240 1241 + export type PlaySmartPlaylistMutationVariables = Exact<{ 1242 + id: Scalars['String']['input']; 1243 + }>; 1244 + 1245 + 1246 + export type PlaySmartPlaylistMutation = { __typename?: 'Mutation', playSmartPlaylist: boolean }; 1247 + 1248 + export type GetSmartPlaylistsQueryVariables = Exact<{ [key: string]: never; }>; 1249 + 1250 + 1251 + export type GetSmartPlaylistsQuery = { __typename?: 'Query', smartPlaylists: Array<{ __typename?: 'SmartPlaylist', id: string, name: string, description?: string | null, image?: string | null, isSystem: boolean, createdAt: number, updatedAt: number }> }; 1252 + 1253 + export type GetSmartPlaylistQueryVariables = Exact<{ 1254 + id: Scalars['String']['input']; 1255 + }>; 1256 + 1257 + 1258 + export type GetSmartPlaylistQuery = { __typename?: 'Query', smartPlaylist?: { __typename?: 'SmartPlaylist', id: string, name: string, description?: string | null, image?: string | null, isSystem: boolean, createdAt: number, updatedAt: number } | null }; 1259 + 1260 + export type GetSmartPlaylistTracksQueryVariables = Exact<{ 1261 + id: Scalars['String']['input']; 1262 + }>; 1263 + 1264 + 1265 + export type GetSmartPlaylistTracksQuery = { __typename?: 'Query', smartPlaylistTracks: Array<{ __typename?: 'Track', id?: string | null, title: string, artist: string, album: string, albumArt?: string | null, artistId?: string | null, albumId?: string | null, path: string, length: number, tracknum: number }> }; 1266 + 963 1267 export type AdjustVolumeMutationVariables = Exact<{ 964 1268 steps: Scalars['Int']['input']; 965 1269 }>; ··· 978 1282 export type GetGlobalStatusQuery = { __typename?: 'Query', globalStatus: { __typename?: 'SystemStatus', resumeIndex: number, resumeCrc32: number, resumeOffset: number, resumeElapsed: number } }; 979 1283 980 1284 981 - export const GetEntriesDocument = gql` 1285 + 1286 + export const GetEntriesDocument = new TypedDocumentString(` 982 1287 query GetEntries($path: String) { 983 1288 treeGetEntries(path: $path) { 984 1289 name ··· 986 1291 timeWrite 987 1292 } 988 1293 } 989 - `; 1294 + `); 990 1295 991 - /** 992 - * __useGetEntriesQuery__ 993 - * 994 - * To run a query within a React component, call `useGetEntriesQuery` and pass it any options that fit your needs. 995 - * When your component renders, `useGetEntriesQuery` returns an object from Apollo Client that contains loading, error, and data properties 996 - * you can use to render your UI. 997 - * 998 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 999 - * 1000 - * @example 1001 - * const { data, loading, error } = useGetEntriesQuery({ 1002 - * variables: { 1003 - * path: // value for 'path' 1004 - * }, 1005 - * }); 1006 - */ 1007 - export function useGetEntriesQuery(baseOptions?: Apollo.QueryHookOptions<GetEntriesQuery, GetEntriesQueryVariables>) { 1008 - const options = {...defaultOptions, ...baseOptions} 1009 - return Apollo.useQuery<GetEntriesQuery, GetEntriesQueryVariables>(GetEntriesDocument, options); 1010 - } 1011 - export function useGetEntriesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetEntriesQuery, GetEntriesQueryVariables>) { 1012 - const options = {...defaultOptions, ...baseOptions} 1013 - return Apollo.useLazyQuery<GetEntriesQuery, GetEntriesQueryVariables>(GetEntriesDocument, options); 1014 - } 1015 - export function useGetEntriesSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetEntriesQuery, GetEntriesQueryVariables>) { 1016 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1017 - return Apollo.useSuspenseQuery<GetEntriesQuery, GetEntriesQueryVariables>(GetEntriesDocument, options); 1018 - } 1019 - export type GetEntriesQueryHookResult = ReturnType<typeof useGetEntriesQuery>; 1020 - export type GetEntriesLazyQueryHookResult = ReturnType<typeof useGetEntriesLazyQuery>; 1021 - export type GetEntriesSuspenseQueryHookResult = ReturnType<typeof useGetEntriesSuspenseQuery>; 1022 - export type GetEntriesQueryResult = Apollo.QueryResult<GetEntriesQuery, GetEntriesQueryVariables>; 1023 - export const ConnectToDeviceDocument = gql` 1296 + export const useGetEntriesQuery = < 1297 + TData = GetEntriesQuery, 1298 + TError = unknown 1299 + >( 1300 + variables?: GetEntriesQueryVariables, 1301 + options?: Omit<UseQueryOptions<GetEntriesQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetEntriesQuery, TError, TData>['queryKey'] } 1302 + ) => { 1303 + 1304 + return useQuery<GetEntriesQuery, TError, TData>( 1305 + { 1306 + queryKey: variables === undefined ? ['GetEntries'] : ['GetEntries', variables], 1307 + queryFn: fetchData<GetEntriesQuery, GetEntriesQueryVariables>(GetEntriesDocument, variables), 1308 + ...options 1309 + } 1310 + )}; 1311 + 1312 + useGetEntriesQuery.document = GetEntriesDocument; 1313 + 1314 + useGetEntriesQuery.getKey = (variables?: GetEntriesQueryVariables) => variables === undefined ? ['GetEntries'] : ['GetEntries', variables]; 1315 + 1316 + export const ConnectToDeviceDocument = new TypedDocumentString(` 1024 1317 mutation ConnectToDevice($id: String!) { 1025 1318 connect(id: $id) 1026 1319 } 1027 - `; 1028 - export type ConnectToDeviceMutationFn = Apollo.MutationFunction<ConnectToDeviceMutation, ConnectToDeviceMutationVariables>; 1320 + `); 1029 1321 1030 - /** 1031 - * __useConnectToDeviceMutation__ 1032 - * 1033 - * To run a mutation, you first call `useConnectToDeviceMutation` within a React component and pass it any options that fit your needs. 1034 - * When your component renders, `useConnectToDeviceMutation` returns a tuple that includes: 1035 - * - A mutate function that you can call at any time to execute the mutation 1036 - * - An object with fields that represent the current status of the mutation's execution 1037 - * 1038 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1039 - * 1040 - * @example 1041 - * const [connectToDeviceMutation, { data, loading, error }] = useConnectToDeviceMutation({ 1042 - * variables: { 1043 - * id: // value for 'id' 1044 - * }, 1045 - * }); 1046 - */ 1047 - export function useConnectToDeviceMutation(baseOptions?: Apollo.MutationHookOptions<ConnectToDeviceMutation, ConnectToDeviceMutationVariables>) { 1048 - const options = {...defaultOptions, ...baseOptions} 1049 - return Apollo.useMutation<ConnectToDeviceMutation, ConnectToDeviceMutationVariables>(ConnectToDeviceDocument, options); 1050 - } 1051 - export type ConnectToDeviceMutationHookResult = ReturnType<typeof useConnectToDeviceMutation>; 1052 - export type ConnectToDeviceMutationResult = Apollo.MutationResult<ConnectToDeviceMutation>; 1053 - export type ConnectToDeviceMutationOptions = Apollo.BaseMutationOptions<ConnectToDeviceMutation, ConnectToDeviceMutationVariables>; 1054 - export const DisconnectFromDeviceDocument = gql` 1322 + export const useConnectToDeviceMutation = < 1323 + TError = unknown, 1324 + TContext = unknown 1325 + >(options?: UseMutationOptions<ConnectToDeviceMutation, TError, ConnectToDeviceMutationVariables, TContext>) => { 1326 + 1327 + return useMutation<ConnectToDeviceMutation, TError, ConnectToDeviceMutationVariables, TContext>( 1328 + { 1329 + mutationKey: ['ConnectToDevice'], 1330 + mutationFn: (variables?: ConnectToDeviceMutationVariables) => fetchData<ConnectToDeviceMutation, ConnectToDeviceMutationVariables>(ConnectToDeviceDocument, variables)(), 1331 + ...options 1332 + } 1333 + )}; 1334 + 1335 + useConnectToDeviceMutation.getKey = () => ['ConnectToDevice']; 1336 + 1337 + export const DisconnectFromDeviceDocument = new TypedDocumentString(` 1055 1338 mutation DisconnectFromDevice($id: String!) { 1056 1339 disconnect(id: $id) 1057 1340 } 1058 - `; 1059 - export type DisconnectFromDeviceMutationFn = Apollo.MutationFunction<DisconnectFromDeviceMutation, DisconnectFromDeviceMutationVariables>; 1341 + `); 1060 1342 1061 - /** 1062 - * __useDisconnectFromDeviceMutation__ 1063 - * 1064 - * To run a mutation, you first call `useDisconnectFromDeviceMutation` within a React component and pass it any options that fit your needs. 1065 - * When your component renders, `useDisconnectFromDeviceMutation` returns a tuple that includes: 1066 - * - A mutate function that you can call at any time to execute the mutation 1067 - * - An object with fields that represent the current status of the mutation's execution 1068 - * 1069 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1070 - * 1071 - * @example 1072 - * const [disconnectFromDeviceMutation, { data, loading, error }] = useDisconnectFromDeviceMutation({ 1073 - * variables: { 1074 - * id: // value for 'id' 1075 - * }, 1076 - * }); 1077 - */ 1078 - export function useDisconnectFromDeviceMutation(baseOptions?: Apollo.MutationHookOptions<DisconnectFromDeviceMutation, DisconnectFromDeviceMutationVariables>) { 1079 - const options = {...defaultOptions, ...baseOptions} 1080 - return Apollo.useMutation<DisconnectFromDeviceMutation, DisconnectFromDeviceMutationVariables>(DisconnectFromDeviceDocument, options); 1081 - } 1082 - export type DisconnectFromDeviceMutationHookResult = ReturnType<typeof useDisconnectFromDeviceMutation>; 1083 - export type DisconnectFromDeviceMutationResult = Apollo.MutationResult<DisconnectFromDeviceMutation>; 1084 - export type DisconnectFromDeviceMutationOptions = Apollo.BaseMutationOptions<DisconnectFromDeviceMutation, DisconnectFromDeviceMutationVariables>; 1085 - export const GetDevicesDocument = gql` 1343 + export const useDisconnectFromDeviceMutation = < 1344 + TError = unknown, 1345 + TContext = unknown 1346 + >(options?: UseMutationOptions<DisconnectFromDeviceMutation, TError, DisconnectFromDeviceMutationVariables, TContext>) => { 1347 + 1348 + return useMutation<DisconnectFromDeviceMutation, TError, DisconnectFromDeviceMutationVariables, TContext>( 1349 + { 1350 + mutationKey: ['DisconnectFromDevice'], 1351 + mutationFn: (variables?: DisconnectFromDeviceMutationVariables) => fetchData<DisconnectFromDeviceMutation, DisconnectFromDeviceMutationVariables>(DisconnectFromDeviceDocument, variables)(), 1352 + ...options 1353 + } 1354 + )}; 1355 + 1356 + useDisconnectFromDeviceMutation.getKey = () => ['DisconnectFromDevice']; 1357 + 1358 + export const GetDevicesDocument = new TypedDocumentString(` 1086 1359 query GetDevices { 1087 1360 devices { 1088 1361 id ··· 1097 1370 isCurrentDevice 1098 1371 } 1099 1372 } 1100 - `; 1373 + `); 1101 1374 1102 - /** 1103 - * __useGetDevicesQuery__ 1104 - * 1105 - * To run a query within a React component, call `useGetDevicesQuery` and pass it any options that fit your needs. 1106 - * When your component renders, `useGetDevicesQuery` returns an object from Apollo Client that contains loading, error, and data properties 1107 - * you can use to render your UI. 1108 - * 1109 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1110 - * 1111 - * @example 1112 - * const { data, loading, error } = useGetDevicesQuery({ 1113 - * variables: { 1114 - * }, 1115 - * }); 1116 - */ 1117 - export function useGetDevicesQuery(baseOptions?: Apollo.QueryHookOptions<GetDevicesQuery, GetDevicesQueryVariables>) { 1118 - const options = {...defaultOptions, ...baseOptions} 1119 - return Apollo.useQuery<GetDevicesQuery, GetDevicesQueryVariables>(GetDevicesDocument, options); 1120 - } 1121 - export function useGetDevicesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetDevicesQuery, GetDevicesQueryVariables>) { 1122 - const options = {...defaultOptions, ...baseOptions} 1123 - return Apollo.useLazyQuery<GetDevicesQuery, GetDevicesQueryVariables>(GetDevicesDocument, options); 1124 - } 1125 - export function useGetDevicesSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetDevicesQuery, GetDevicesQueryVariables>) { 1126 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1127 - return Apollo.useSuspenseQuery<GetDevicesQuery, GetDevicesQueryVariables>(GetDevicesDocument, options); 1128 - } 1129 - export type GetDevicesQueryHookResult = ReturnType<typeof useGetDevicesQuery>; 1130 - export type GetDevicesLazyQueryHookResult = ReturnType<typeof useGetDevicesLazyQuery>; 1131 - export type GetDevicesSuspenseQueryHookResult = ReturnType<typeof useGetDevicesSuspenseQuery>; 1132 - export type GetDevicesQueryResult = Apollo.QueryResult<GetDevicesQuery, GetDevicesQueryVariables>; 1133 - export const GetDeviceDocument = gql` 1375 + export const useGetDevicesQuery = < 1376 + TData = GetDevicesQuery, 1377 + TError = unknown 1378 + >( 1379 + variables?: GetDevicesQueryVariables, 1380 + options?: Omit<UseQueryOptions<GetDevicesQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetDevicesQuery, TError, TData>['queryKey'] } 1381 + ) => { 1382 + 1383 + return useQuery<GetDevicesQuery, TError, TData>( 1384 + { 1385 + queryKey: variables === undefined ? ['GetDevices'] : ['GetDevices', variables], 1386 + queryFn: fetchData<GetDevicesQuery, GetDevicesQueryVariables>(GetDevicesDocument, variables), 1387 + ...options 1388 + } 1389 + )}; 1390 + 1391 + useGetDevicesQuery.document = GetDevicesDocument; 1392 + 1393 + useGetDevicesQuery.getKey = (variables?: GetDevicesQueryVariables) => variables === undefined ? ['GetDevices'] : ['GetDevices', variables]; 1394 + 1395 + export const GetDeviceDocument = new TypedDocumentString(` 1134 1396 query GetDevice($id: String!) { 1135 1397 device(id: $id) { 1136 1398 id ··· 1145 1407 isCurrentDevice 1146 1408 } 1147 1409 } 1148 - `; 1410 + `); 1149 1411 1150 - /** 1151 - * __useGetDeviceQuery__ 1152 - * 1153 - * To run a query within a React component, call `useGetDeviceQuery` and pass it any options that fit your needs. 1154 - * When your component renders, `useGetDeviceQuery` returns an object from Apollo Client that contains loading, error, and data properties 1155 - * you can use to render your UI. 1156 - * 1157 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1158 - * 1159 - * @example 1160 - * const { data, loading, error } = useGetDeviceQuery({ 1161 - * variables: { 1162 - * id: // value for 'id' 1163 - * }, 1164 - * }); 1165 - */ 1166 - export function useGetDeviceQuery(baseOptions: Apollo.QueryHookOptions<GetDeviceQuery, GetDeviceQueryVariables> & ({ variables: GetDeviceQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { 1167 - const options = {...defaultOptions, ...baseOptions} 1168 - return Apollo.useQuery<GetDeviceQuery, GetDeviceQueryVariables>(GetDeviceDocument, options); 1169 - } 1170 - export function useGetDeviceLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetDeviceQuery, GetDeviceQueryVariables>) { 1171 - const options = {...defaultOptions, ...baseOptions} 1172 - return Apollo.useLazyQuery<GetDeviceQuery, GetDeviceQueryVariables>(GetDeviceDocument, options); 1173 - } 1174 - export function useGetDeviceSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetDeviceQuery, GetDeviceQueryVariables>) { 1175 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1176 - return Apollo.useSuspenseQuery<GetDeviceQuery, GetDeviceQueryVariables>(GetDeviceDocument, options); 1177 - } 1178 - export type GetDeviceQueryHookResult = ReturnType<typeof useGetDeviceQuery>; 1179 - export type GetDeviceLazyQueryHookResult = ReturnType<typeof useGetDeviceLazyQuery>; 1180 - export type GetDeviceSuspenseQueryHookResult = ReturnType<typeof useGetDeviceSuspenseQuery>; 1181 - export type GetDeviceQueryResult = Apollo.QueryResult<GetDeviceQuery, GetDeviceQueryVariables>; 1182 - export const LikeTrackDocument = gql` 1412 + export const useGetDeviceQuery = < 1413 + TData = GetDeviceQuery, 1414 + TError = unknown 1415 + >( 1416 + variables: GetDeviceQueryVariables, 1417 + options?: Omit<UseQueryOptions<GetDeviceQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetDeviceQuery, TError, TData>['queryKey'] } 1418 + ) => { 1419 + 1420 + return useQuery<GetDeviceQuery, TError, TData>( 1421 + { 1422 + queryKey: ['GetDevice', variables], 1423 + queryFn: fetchData<GetDeviceQuery, GetDeviceQueryVariables>(GetDeviceDocument, variables), 1424 + ...options 1425 + } 1426 + )}; 1427 + 1428 + useGetDeviceQuery.document = GetDeviceDocument; 1429 + 1430 + useGetDeviceQuery.getKey = (variables: GetDeviceQueryVariables) => ['GetDevice', variables]; 1431 + 1432 + export const LikeTrackDocument = new TypedDocumentString(` 1183 1433 mutation LikeTrack($trackId: String!) { 1184 1434 likeTrack(id: $trackId) 1185 1435 } 1186 - `; 1187 - export type LikeTrackMutationFn = Apollo.MutationFunction<LikeTrackMutation, LikeTrackMutationVariables>; 1436 + `); 1437 + 1438 + export const useLikeTrackMutation = < 1439 + TError = unknown, 1440 + TContext = unknown 1441 + >(options?: UseMutationOptions<LikeTrackMutation, TError, LikeTrackMutationVariables, TContext>) => { 1442 + 1443 + return useMutation<LikeTrackMutation, TError, LikeTrackMutationVariables, TContext>( 1444 + { 1445 + mutationKey: ['LikeTrack'], 1446 + mutationFn: (variables?: LikeTrackMutationVariables) => fetchData<LikeTrackMutation, LikeTrackMutationVariables>(LikeTrackDocument, variables)(), 1447 + ...options 1448 + } 1449 + )}; 1188 1450 1189 - /** 1190 - * __useLikeTrackMutation__ 1191 - * 1192 - * To run a mutation, you first call `useLikeTrackMutation` within a React component and pass it any options that fit your needs. 1193 - * When your component renders, `useLikeTrackMutation` returns a tuple that includes: 1194 - * - A mutate function that you can call at any time to execute the mutation 1195 - * - An object with fields that represent the current status of the mutation's execution 1196 - * 1197 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1198 - * 1199 - * @example 1200 - * const [likeTrackMutation, { data, loading, error }] = useLikeTrackMutation({ 1201 - * variables: { 1202 - * trackId: // value for 'trackId' 1203 - * }, 1204 - * }); 1205 - */ 1206 - export function useLikeTrackMutation(baseOptions?: Apollo.MutationHookOptions<LikeTrackMutation, LikeTrackMutationVariables>) { 1207 - const options = {...defaultOptions, ...baseOptions} 1208 - return Apollo.useMutation<LikeTrackMutation, LikeTrackMutationVariables>(LikeTrackDocument, options); 1209 - } 1210 - export type LikeTrackMutationHookResult = ReturnType<typeof useLikeTrackMutation>; 1211 - export type LikeTrackMutationResult = Apollo.MutationResult<LikeTrackMutation>; 1212 - export type LikeTrackMutationOptions = Apollo.BaseMutationOptions<LikeTrackMutation, LikeTrackMutationVariables>; 1213 - export const UnlikeTrackDocument = gql` 1451 + useLikeTrackMutation.getKey = () => ['LikeTrack']; 1452 + 1453 + export const UnlikeTrackDocument = new TypedDocumentString(` 1214 1454 mutation UnlikeTrack($trackId: String!) { 1215 1455 unlikeTrack(id: $trackId) 1216 1456 } 1217 - `; 1218 - export type UnlikeTrackMutationFn = Apollo.MutationFunction<UnlikeTrackMutation, UnlikeTrackMutationVariables>; 1457 + `); 1219 1458 1220 - /** 1221 - * __useUnlikeTrackMutation__ 1222 - * 1223 - * To run a mutation, you first call `useUnlikeTrackMutation` within a React component and pass it any options that fit your needs. 1224 - * When your component renders, `useUnlikeTrackMutation` returns a tuple that includes: 1225 - * - A mutate function that you can call at any time to execute the mutation 1226 - * - An object with fields that represent the current status of the mutation's execution 1227 - * 1228 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1229 - * 1230 - * @example 1231 - * const [unlikeTrackMutation, { data, loading, error }] = useUnlikeTrackMutation({ 1232 - * variables: { 1233 - * trackId: // value for 'trackId' 1234 - * }, 1235 - * }); 1236 - */ 1237 - export function useUnlikeTrackMutation(baseOptions?: Apollo.MutationHookOptions<UnlikeTrackMutation, UnlikeTrackMutationVariables>) { 1238 - const options = {...defaultOptions, ...baseOptions} 1239 - return Apollo.useMutation<UnlikeTrackMutation, UnlikeTrackMutationVariables>(UnlikeTrackDocument, options); 1240 - } 1241 - export type UnlikeTrackMutationHookResult = ReturnType<typeof useUnlikeTrackMutation>; 1242 - export type UnlikeTrackMutationResult = Apollo.MutationResult<UnlikeTrackMutation>; 1243 - export type UnlikeTrackMutationOptions = Apollo.BaseMutationOptions<UnlikeTrackMutation, UnlikeTrackMutationVariables>; 1244 - export const LikeAlbumDocument = gql` 1459 + export const useUnlikeTrackMutation = < 1460 + TError = unknown, 1461 + TContext = unknown 1462 + >(options?: UseMutationOptions<UnlikeTrackMutation, TError, UnlikeTrackMutationVariables, TContext>) => { 1463 + 1464 + return useMutation<UnlikeTrackMutation, TError, UnlikeTrackMutationVariables, TContext>( 1465 + { 1466 + mutationKey: ['UnlikeTrack'], 1467 + mutationFn: (variables?: UnlikeTrackMutationVariables) => fetchData<UnlikeTrackMutation, UnlikeTrackMutationVariables>(UnlikeTrackDocument, variables)(), 1468 + ...options 1469 + } 1470 + )}; 1471 + 1472 + useUnlikeTrackMutation.getKey = () => ['UnlikeTrack']; 1473 + 1474 + export const LikeAlbumDocument = new TypedDocumentString(` 1245 1475 mutation LikeAlbum($albumId: String!) { 1246 1476 likeAlbum(id: $albumId) 1247 1477 } 1248 - `; 1249 - export type LikeAlbumMutationFn = Apollo.MutationFunction<LikeAlbumMutation, LikeAlbumMutationVariables>; 1478 + `); 1479 + 1480 + export const useLikeAlbumMutation = < 1481 + TError = unknown, 1482 + TContext = unknown 1483 + >(options?: UseMutationOptions<LikeAlbumMutation, TError, LikeAlbumMutationVariables, TContext>) => { 1484 + 1485 + return useMutation<LikeAlbumMutation, TError, LikeAlbumMutationVariables, TContext>( 1486 + { 1487 + mutationKey: ['LikeAlbum'], 1488 + mutationFn: (variables?: LikeAlbumMutationVariables) => fetchData<LikeAlbumMutation, LikeAlbumMutationVariables>(LikeAlbumDocument, variables)(), 1489 + ...options 1490 + } 1491 + )}; 1250 1492 1251 - /** 1252 - * __useLikeAlbumMutation__ 1253 - * 1254 - * To run a mutation, you first call `useLikeAlbumMutation` within a React component and pass it any options that fit your needs. 1255 - * When your component renders, `useLikeAlbumMutation` returns a tuple that includes: 1256 - * - A mutate function that you can call at any time to execute the mutation 1257 - * - An object with fields that represent the current status of the mutation's execution 1258 - * 1259 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1260 - * 1261 - * @example 1262 - * const [likeAlbumMutation, { data, loading, error }] = useLikeAlbumMutation({ 1263 - * variables: { 1264 - * albumId: // value for 'albumId' 1265 - * }, 1266 - * }); 1267 - */ 1268 - export function useLikeAlbumMutation(baseOptions?: Apollo.MutationHookOptions<LikeAlbumMutation, LikeAlbumMutationVariables>) { 1269 - const options = {...defaultOptions, ...baseOptions} 1270 - return Apollo.useMutation<LikeAlbumMutation, LikeAlbumMutationVariables>(LikeAlbumDocument, options); 1271 - } 1272 - export type LikeAlbumMutationHookResult = ReturnType<typeof useLikeAlbumMutation>; 1273 - export type LikeAlbumMutationResult = Apollo.MutationResult<LikeAlbumMutation>; 1274 - export type LikeAlbumMutationOptions = Apollo.BaseMutationOptions<LikeAlbumMutation, LikeAlbumMutationVariables>; 1275 - export const UnlikeAlbumDocument = gql` 1493 + useLikeAlbumMutation.getKey = () => ['LikeAlbum']; 1494 + 1495 + export const UnlikeAlbumDocument = new TypedDocumentString(` 1276 1496 mutation UnlikeAlbum($albumId: String!) { 1277 1497 unlikeAlbum(id: $albumId) 1278 1498 } 1279 - `; 1280 - export type UnlikeAlbumMutationFn = Apollo.MutationFunction<UnlikeAlbumMutation, UnlikeAlbumMutationVariables>; 1499 + `); 1500 + 1501 + export const useUnlikeAlbumMutation = < 1502 + TError = unknown, 1503 + TContext = unknown 1504 + >(options?: UseMutationOptions<UnlikeAlbumMutation, TError, UnlikeAlbumMutationVariables, TContext>) => { 1505 + 1506 + return useMutation<UnlikeAlbumMutation, TError, UnlikeAlbumMutationVariables, TContext>( 1507 + { 1508 + mutationKey: ['UnlikeAlbum'], 1509 + mutationFn: (variables?: UnlikeAlbumMutationVariables) => fetchData<UnlikeAlbumMutation, UnlikeAlbumMutationVariables>(UnlikeAlbumDocument, variables)(), 1510 + ...options 1511 + } 1512 + )}; 1281 1513 1282 - /** 1283 - * __useUnlikeAlbumMutation__ 1284 - * 1285 - * To run a mutation, you first call `useUnlikeAlbumMutation` within a React component and pass it any options that fit your needs. 1286 - * When your component renders, `useUnlikeAlbumMutation` returns a tuple that includes: 1287 - * - A mutate function that you can call at any time to execute the mutation 1288 - * - An object with fields that represent the current status of the mutation's execution 1289 - * 1290 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1291 - * 1292 - * @example 1293 - * const [unlikeAlbumMutation, { data, loading, error }] = useUnlikeAlbumMutation({ 1294 - * variables: { 1295 - * albumId: // value for 'albumId' 1296 - * }, 1297 - * }); 1298 - */ 1299 - export function useUnlikeAlbumMutation(baseOptions?: Apollo.MutationHookOptions<UnlikeAlbumMutation, UnlikeAlbumMutationVariables>) { 1300 - const options = {...defaultOptions, ...baseOptions} 1301 - return Apollo.useMutation<UnlikeAlbumMutation, UnlikeAlbumMutationVariables>(UnlikeAlbumDocument, options); 1302 - } 1303 - export type UnlikeAlbumMutationHookResult = ReturnType<typeof useUnlikeAlbumMutation>; 1304 - export type UnlikeAlbumMutationResult = Apollo.MutationResult<UnlikeAlbumMutation>; 1305 - export type UnlikeAlbumMutationOptions = Apollo.BaseMutationOptions<UnlikeAlbumMutation, UnlikeAlbumMutationVariables>; 1306 - export const GetAlbumsDocument = gql` 1514 + useUnlikeAlbumMutation.getKey = () => ['UnlikeAlbum']; 1515 + 1516 + export const GetAlbumsDocument = new TypedDocumentString(` 1307 1517 query GetAlbums { 1308 1518 albums { 1309 1519 id ··· 1327 1537 } 1328 1538 } 1329 1539 } 1330 - `; 1540 + `); 1331 1541 1332 - /** 1333 - * __useGetAlbumsQuery__ 1334 - * 1335 - * To run a query within a React component, call `useGetAlbumsQuery` and pass it any options that fit your needs. 1336 - * When your component renders, `useGetAlbumsQuery` returns an object from Apollo Client that contains loading, error, and data properties 1337 - * you can use to render your UI. 1338 - * 1339 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1340 - * 1341 - * @example 1342 - * const { data, loading, error } = useGetAlbumsQuery({ 1343 - * variables: { 1344 - * }, 1345 - * }); 1346 - */ 1347 - export function useGetAlbumsQuery(baseOptions?: Apollo.QueryHookOptions<GetAlbumsQuery, GetAlbumsQueryVariables>) { 1348 - const options = {...defaultOptions, ...baseOptions} 1349 - return Apollo.useQuery<GetAlbumsQuery, GetAlbumsQueryVariables>(GetAlbumsDocument, options); 1350 - } 1351 - export function useGetAlbumsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetAlbumsQuery, GetAlbumsQueryVariables>) { 1352 - const options = {...defaultOptions, ...baseOptions} 1353 - return Apollo.useLazyQuery<GetAlbumsQuery, GetAlbumsQueryVariables>(GetAlbumsDocument, options); 1354 - } 1355 - export function useGetAlbumsSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetAlbumsQuery, GetAlbumsQueryVariables>) { 1356 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1357 - return Apollo.useSuspenseQuery<GetAlbumsQuery, GetAlbumsQueryVariables>(GetAlbumsDocument, options); 1358 - } 1359 - export type GetAlbumsQueryHookResult = ReturnType<typeof useGetAlbumsQuery>; 1360 - export type GetAlbumsLazyQueryHookResult = ReturnType<typeof useGetAlbumsLazyQuery>; 1361 - export type GetAlbumsSuspenseQueryHookResult = ReturnType<typeof useGetAlbumsSuspenseQuery>; 1362 - export type GetAlbumsQueryResult = Apollo.QueryResult<GetAlbumsQuery, GetAlbumsQueryVariables>; 1363 - export const GetArtistsDocument = gql` 1542 + export const useGetAlbumsQuery = < 1543 + TData = GetAlbumsQuery, 1544 + TError = unknown 1545 + >( 1546 + variables?: GetAlbumsQueryVariables, 1547 + options?: Omit<UseQueryOptions<GetAlbumsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetAlbumsQuery, TError, TData>['queryKey'] } 1548 + ) => { 1549 + 1550 + return useQuery<GetAlbumsQuery, TError, TData>( 1551 + { 1552 + queryKey: variables === undefined ? ['GetAlbums'] : ['GetAlbums', variables], 1553 + queryFn: fetchData<GetAlbumsQuery, GetAlbumsQueryVariables>(GetAlbumsDocument, variables), 1554 + ...options 1555 + } 1556 + )}; 1557 + 1558 + useGetAlbumsQuery.document = GetAlbumsDocument; 1559 + 1560 + useGetAlbumsQuery.getKey = (variables?: GetAlbumsQueryVariables) => variables === undefined ? ['GetAlbums'] : ['GetAlbums', variables]; 1561 + 1562 + export const GetArtistsDocument = new TypedDocumentString(` 1364 1563 query GetArtists { 1365 1564 artists { 1366 1565 id ··· 1368 1567 image 1369 1568 } 1370 1569 } 1371 - `; 1570 + `); 1372 1571 1373 - /** 1374 - * __useGetArtistsQuery__ 1375 - * 1376 - * To run a query within a React component, call `useGetArtistsQuery` and pass it any options that fit your needs. 1377 - * When your component renders, `useGetArtistsQuery` returns an object from Apollo Client that contains loading, error, and data properties 1378 - * you can use to render your UI. 1379 - * 1380 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1381 - * 1382 - * @example 1383 - * const { data, loading, error } = useGetArtistsQuery({ 1384 - * variables: { 1385 - * }, 1386 - * }); 1387 - */ 1388 - export function useGetArtistsQuery(baseOptions?: Apollo.QueryHookOptions<GetArtistsQuery, GetArtistsQueryVariables>) { 1389 - const options = {...defaultOptions, ...baseOptions} 1390 - return Apollo.useQuery<GetArtistsQuery, GetArtistsQueryVariables>(GetArtistsDocument, options); 1391 - } 1392 - export function useGetArtistsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetArtistsQuery, GetArtistsQueryVariables>) { 1393 - const options = {...defaultOptions, ...baseOptions} 1394 - return Apollo.useLazyQuery<GetArtistsQuery, GetArtistsQueryVariables>(GetArtistsDocument, options); 1395 - } 1396 - export function useGetArtistsSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetArtistsQuery, GetArtistsQueryVariables>) { 1397 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1398 - return Apollo.useSuspenseQuery<GetArtistsQuery, GetArtistsQueryVariables>(GetArtistsDocument, options); 1399 - } 1400 - export type GetArtistsQueryHookResult = ReturnType<typeof useGetArtistsQuery>; 1401 - export type GetArtistsLazyQueryHookResult = ReturnType<typeof useGetArtistsLazyQuery>; 1402 - export type GetArtistsSuspenseQueryHookResult = ReturnType<typeof useGetArtistsSuspenseQuery>; 1403 - export type GetArtistsQueryResult = Apollo.QueryResult<GetArtistsQuery, GetArtistsQueryVariables>; 1404 - export const GetArtistDocument = gql` 1572 + export const useGetArtistsQuery = < 1573 + TData = GetArtistsQuery, 1574 + TError = unknown 1575 + >( 1576 + variables?: GetArtistsQueryVariables, 1577 + options?: Omit<UseQueryOptions<GetArtistsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetArtistsQuery, TError, TData>['queryKey'] } 1578 + ) => { 1579 + 1580 + return useQuery<GetArtistsQuery, TError, TData>( 1581 + { 1582 + queryKey: variables === undefined ? ['GetArtists'] : ['GetArtists', variables], 1583 + queryFn: fetchData<GetArtistsQuery, GetArtistsQueryVariables>(GetArtistsDocument, variables), 1584 + ...options 1585 + } 1586 + )}; 1587 + 1588 + useGetArtistsQuery.document = GetArtistsDocument; 1589 + 1590 + useGetArtistsQuery.getKey = (variables?: GetArtistsQueryVariables) => variables === undefined ? ['GetArtists'] : ['GetArtists', variables]; 1591 + 1592 + export const GetArtistDocument = new TypedDocumentString(` 1405 1593 query GetArtist($id: String!) { 1406 1594 artist(id: $id) { 1407 1595 id ··· 1431 1619 } 1432 1620 } 1433 1621 } 1434 - `; 1622 + `); 1435 1623 1436 - /** 1437 - * __useGetArtistQuery__ 1438 - * 1439 - * To run a query within a React component, call `useGetArtistQuery` and pass it any options that fit your needs. 1440 - * When your component renders, `useGetArtistQuery` returns an object from Apollo Client that contains loading, error, and data properties 1441 - * you can use to render your UI. 1442 - * 1443 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1444 - * 1445 - * @example 1446 - * const { data, loading, error } = useGetArtistQuery({ 1447 - * variables: { 1448 - * id: // value for 'id' 1449 - * }, 1450 - * }); 1451 - */ 1452 - export function useGetArtistQuery(baseOptions: Apollo.QueryHookOptions<GetArtistQuery, GetArtistQueryVariables> & ({ variables: GetArtistQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { 1453 - const options = {...defaultOptions, ...baseOptions} 1454 - return Apollo.useQuery<GetArtistQuery, GetArtistQueryVariables>(GetArtistDocument, options); 1455 - } 1456 - export function useGetArtistLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetArtistQuery, GetArtistQueryVariables>) { 1457 - const options = {...defaultOptions, ...baseOptions} 1458 - return Apollo.useLazyQuery<GetArtistQuery, GetArtistQueryVariables>(GetArtistDocument, options); 1459 - } 1460 - export function useGetArtistSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetArtistQuery, GetArtistQueryVariables>) { 1461 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1462 - return Apollo.useSuspenseQuery<GetArtistQuery, GetArtistQueryVariables>(GetArtistDocument, options); 1463 - } 1464 - export type GetArtistQueryHookResult = ReturnType<typeof useGetArtistQuery>; 1465 - export type GetArtistLazyQueryHookResult = ReturnType<typeof useGetArtistLazyQuery>; 1466 - export type GetArtistSuspenseQueryHookResult = ReturnType<typeof useGetArtistSuspenseQuery>; 1467 - export type GetArtistQueryResult = Apollo.QueryResult<GetArtistQuery, GetArtistQueryVariables>; 1468 - export const TracksDocument = gql` 1624 + export const useGetArtistQuery = < 1625 + TData = GetArtistQuery, 1626 + TError = unknown 1627 + >( 1628 + variables: GetArtistQueryVariables, 1629 + options?: Omit<UseQueryOptions<GetArtistQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetArtistQuery, TError, TData>['queryKey'] } 1630 + ) => { 1631 + 1632 + return useQuery<GetArtistQuery, TError, TData>( 1633 + { 1634 + queryKey: ['GetArtist', variables], 1635 + queryFn: fetchData<GetArtistQuery, GetArtistQueryVariables>(GetArtistDocument, variables), 1636 + ...options 1637 + } 1638 + )}; 1639 + 1640 + useGetArtistQuery.document = GetArtistDocument; 1641 + 1642 + useGetArtistQuery.getKey = (variables: GetArtistQueryVariables) => ['GetArtist', variables]; 1643 + 1644 + export const TracksDocument = new TypedDocumentString(` 1469 1645 query Tracks { 1470 1646 tracks { 1471 1647 id ··· 1482 1658 length 1483 1659 } 1484 1660 } 1485 - `; 1661 + `); 1486 1662 1487 - /** 1488 - * __useTracksQuery__ 1489 - * 1490 - * To run a query within a React component, call `useTracksQuery` and pass it any options that fit your needs. 1491 - * When your component renders, `useTracksQuery` returns an object from Apollo Client that contains loading, error, and data properties 1492 - * you can use to render your UI. 1493 - * 1494 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1495 - * 1496 - * @example 1497 - * const { data, loading, error } = useTracksQuery({ 1498 - * variables: { 1499 - * }, 1500 - * }); 1501 - */ 1502 - export function useTracksQuery(baseOptions?: Apollo.QueryHookOptions<TracksQuery, TracksQueryVariables>) { 1503 - const options = {...defaultOptions, ...baseOptions} 1504 - return Apollo.useQuery<TracksQuery, TracksQueryVariables>(TracksDocument, options); 1505 - } 1506 - export function useTracksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<TracksQuery, TracksQueryVariables>) { 1507 - const options = {...defaultOptions, ...baseOptions} 1508 - return Apollo.useLazyQuery<TracksQuery, TracksQueryVariables>(TracksDocument, options); 1509 - } 1510 - export function useTracksSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<TracksQuery, TracksQueryVariables>) { 1511 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1512 - return Apollo.useSuspenseQuery<TracksQuery, TracksQueryVariables>(TracksDocument, options); 1513 - } 1514 - export type TracksQueryHookResult = ReturnType<typeof useTracksQuery>; 1515 - export type TracksLazyQueryHookResult = ReturnType<typeof useTracksLazyQuery>; 1516 - export type TracksSuspenseQueryHookResult = ReturnType<typeof useTracksSuspenseQuery>; 1517 - export type TracksQueryResult = Apollo.QueryResult<TracksQuery, TracksQueryVariables>; 1518 - export const GetAlbumDocument = gql` 1663 + export const useTracksQuery = < 1664 + TData = TracksQuery, 1665 + TError = unknown 1666 + >( 1667 + variables?: TracksQueryVariables, 1668 + options?: Omit<UseQueryOptions<TracksQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<TracksQuery, TError, TData>['queryKey'] } 1669 + ) => { 1670 + 1671 + return useQuery<TracksQuery, TError, TData>( 1672 + { 1673 + queryKey: variables === undefined ? ['Tracks'] : ['Tracks', variables], 1674 + queryFn: fetchData<TracksQuery, TracksQueryVariables>(TracksDocument, variables), 1675 + ...options 1676 + } 1677 + )}; 1678 + 1679 + useTracksQuery.document = TracksDocument; 1680 + 1681 + useTracksQuery.getKey = (variables?: TracksQueryVariables) => variables === undefined ? ['Tracks'] : ['Tracks', variables]; 1682 + 1683 + export const GetAlbumDocument = new TypedDocumentString(` 1519 1684 query GetAlbum($id: String!) { 1520 1685 album(id: $id) { 1521 1686 id ··· 1541 1706 } 1542 1707 } 1543 1708 } 1544 - `; 1709 + `); 1545 1710 1546 - /** 1547 - * __useGetAlbumQuery__ 1548 - * 1549 - * To run a query within a React component, call `useGetAlbumQuery` and pass it any options that fit your needs. 1550 - * When your component renders, `useGetAlbumQuery` returns an object from Apollo Client that contains loading, error, and data properties 1551 - * you can use to render your UI. 1552 - * 1553 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1554 - * 1555 - * @example 1556 - * const { data, loading, error } = useGetAlbumQuery({ 1557 - * variables: { 1558 - * id: // value for 'id' 1559 - * }, 1560 - * }); 1561 - */ 1562 - export function useGetAlbumQuery(baseOptions: Apollo.QueryHookOptions<GetAlbumQuery, GetAlbumQueryVariables> & ({ variables: GetAlbumQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { 1563 - const options = {...defaultOptions, ...baseOptions} 1564 - return Apollo.useQuery<GetAlbumQuery, GetAlbumQueryVariables>(GetAlbumDocument, options); 1565 - } 1566 - export function useGetAlbumLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetAlbumQuery, GetAlbumQueryVariables>) { 1567 - const options = {...defaultOptions, ...baseOptions} 1568 - return Apollo.useLazyQuery<GetAlbumQuery, GetAlbumQueryVariables>(GetAlbumDocument, options); 1569 - } 1570 - export function useGetAlbumSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetAlbumQuery, GetAlbumQueryVariables>) { 1571 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1572 - return Apollo.useSuspenseQuery<GetAlbumQuery, GetAlbumQueryVariables>(GetAlbumDocument, options); 1573 - } 1574 - export type GetAlbumQueryHookResult = ReturnType<typeof useGetAlbumQuery>; 1575 - export type GetAlbumLazyQueryHookResult = ReturnType<typeof useGetAlbumLazyQuery>; 1576 - export type GetAlbumSuspenseQueryHookResult = ReturnType<typeof useGetAlbumSuspenseQuery>; 1577 - export type GetAlbumQueryResult = Apollo.QueryResult<GetAlbumQuery, GetAlbumQueryVariables>; 1578 - export const GetLikedTracksDocument = gql` 1711 + export const useGetAlbumQuery = < 1712 + TData = GetAlbumQuery, 1713 + TError = unknown 1714 + >( 1715 + variables: GetAlbumQueryVariables, 1716 + options?: Omit<UseQueryOptions<GetAlbumQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetAlbumQuery, TError, TData>['queryKey'] } 1717 + ) => { 1718 + 1719 + return useQuery<GetAlbumQuery, TError, TData>( 1720 + { 1721 + queryKey: ['GetAlbum', variables], 1722 + queryFn: fetchData<GetAlbumQuery, GetAlbumQueryVariables>(GetAlbumDocument, variables), 1723 + ...options 1724 + } 1725 + )}; 1726 + 1727 + useGetAlbumQuery.document = GetAlbumDocument; 1728 + 1729 + useGetAlbumQuery.getKey = (variables: GetAlbumQueryVariables) => ['GetAlbum', variables]; 1730 + 1731 + export const GetLikedTracksDocument = new TypedDocumentString(` 1579 1732 query GetLikedTracks { 1580 1733 likedTracks { 1581 1734 id ··· 1592 1745 length 1593 1746 } 1594 1747 } 1595 - `; 1748 + `); 1749 + 1750 + export const useGetLikedTracksQuery = < 1751 + TData = GetLikedTracksQuery, 1752 + TError = unknown 1753 + >( 1754 + variables?: GetLikedTracksQueryVariables, 1755 + options?: Omit<UseQueryOptions<GetLikedTracksQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetLikedTracksQuery, TError, TData>['queryKey'] } 1756 + ) => { 1757 + 1758 + return useQuery<GetLikedTracksQuery, TError, TData>( 1759 + { 1760 + queryKey: variables === undefined ? ['GetLikedTracks'] : ['GetLikedTracks', variables], 1761 + queryFn: fetchData<GetLikedTracksQuery, GetLikedTracksQueryVariables>(GetLikedTracksDocument, variables), 1762 + ...options 1763 + } 1764 + )}; 1765 + 1766 + useGetLikedTracksQuery.document = GetLikedTracksDocument; 1767 + 1768 + useGetLikedTracksQuery.getKey = (variables?: GetLikedTracksQueryVariables) => variables === undefined ? ['GetLikedTracks'] : ['GetLikedTracks', variables]; 1596 1769 1597 - /** 1598 - * __useGetLikedTracksQuery__ 1599 - * 1600 - * To run a query within a React component, call `useGetLikedTracksQuery` and pass it any options that fit your needs. 1601 - * When your component renders, `useGetLikedTracksQuery` returns an object from Apollo Client that contains loading, error, and data properties 1602 - * you can use to render your UI. 1603 - * 1604 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1605 - * 1606 - * @example 1607 - * const { data, loading, error } = useGetLikedTracksQuery({ 1608 - * variables: { 1609 - * }, 1610 - * }); 1611 - */ 1612 - export function useGetLikedTracksQuery(baseOptions?: Apollo.QueryHookOptions<GetLikedTracksQuery, GetLikedTracksQueryVariables>) { 1613 - const options = {...defaultOptions, ...baseOptions} 1614 - return Apollo.useQuery<GetLikedTracksQuery, GetLikedTracksQueryVariables>(GetLikedTracksDocument, options); 1615 - } 1616 - export function useGetLikedTracksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetLikedTracksQuery, GetLikedTracksQueryVariables>) { 1617 - const options = {...defaultOptions, ...baseOptions} 1618 - return Apollo.useLazyQuery<GetLikedTracksQuery, GetLikedTracksQueryVariables>(GetLikedTracksDocument, options); 1619 - } 1620 - export function useGetLikedTracksSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetLikedTracksQuery, GetLikedTracksQueryVariables>) { 1621 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1622 - return Apollo.useSuspenseQuery<GetLikedTracksQuery, GetLikedTracksQueryVariables>(GetLikedTracksDocument, options); 1623 - } 1624 - export type GetLikedTracksQueryHookResult = ReturnType<typeof useGetLikedTracksQuery>; 1625 - export type GetLikedTracksLazyQueryHookResult = ReturnType<typeof useGetLikedTracksLazyQuery>; 1626 - export type GetLikedTracksSuspenseQueryHookResult = ReturnType<typeof useGetLikedTracksSuspenseQuery>; 1627 - export type GetLikedTracksQueryResult = Apollo.QueryResult<GetLikedTracksQuery, GetLikedTracksQueryVariables>; 1628 - export const GetLikedAlbumsDocument = gql` 1770 + export const GetLikedAlbumsDocument = new TypedDocumentString(` 1629 1771 query GetLikedAlbums { 1630 1772 likedAlbums { 1631 1773 id ··· 1649 1791 } 1650 1792 } 1651 1793 } 1652 - `; 1794 + `); 1653 1795 1654 - /** 1655 - * __useGetLikedAlbumsQuery__ 1656 - * 1657 - * To run a query within a React component, call `useGetLikedAlbumsQuery` and pass it any options that fit your needs. 1658 - * When your component renders, `useGetLikedAlbumsQuery` returns an object from Apollo Client that contains loading, error, and data properties 1659 - * you can use to render your UI. 1660 - * 1661 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1662 - * 1663 - * @example 1664 - * const { data, loading, error } = useGetLikedAlbumsQuery({ 1665 - * variables: { 1666 - * }, 1667 - * }); 1668 - */ 1669 - export function useGetLikedAlbumsQuery(baseOptions?: Apollo.QueryHookOptions<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>) { 1670 - const options = {...defaultOptions, ...baseOptions} 1671 - return Apollo.useQuery<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>(GetLikedAlbumsDocument, options); 1672 - } 1673 - export function useGetLikedAlbumsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>) { 1674 - const options = {...defaultOptions, ...baseOptions} 1675 - return Apollo.useLazyQuery<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>(GetLikedAlbumsDocument, options); 1676 - } 1677 - export function useGetLikedAlbumsSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>) { 1678 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1679 - return Apollo.useSuspenseQuery<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>(GetLikedAlbumsDocument, options); 1680 - } 1681 - export type GetLikedAlbumsQueryHookResult = ReturnType<typeof useGetLikedAlbumsQuery>; 1682 - export type GetLikedAlbumsLazyQueryHookResult = ReturnType<typeof useGetLikedAlbumsLazyQuery>; 1683 - export type GetLikedAlbumsSuspenseQueryHookResult = ReturnType<typeof useGetLikedAlbumsSuspenseQuery>; 1684 - export type GetLikedAlbumsQueryResult = Apollo.QueryResult<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>; 1685 - export const SearchDocument = gql` 1796 + export const useGetLikedAlbumsQuery = < 1797 + TData = GetLikedAlbumsQuery, 1798 + TError = unknown 1799 + >( 1800 + variables?: GetLikedAlbumsQueryVariables, 1801 + options?: Omit<UseQueryOptions<GetLikedAlbumsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetLikedAlbumsQuery, TError, TData>['queryKey'] } 1802 + ) => { 1803 + 1804 + return useQuery<GetLikedAlbumsQuery, TError, TData>( 1805 + { 1806 + queryKey: variables === undefined ? ['GetLikedAlbums'] : ['GetLikedAlbums', variables], 1807 + queryFn: fetchData<GetLikedAlbumsQuery, GetLikedAlbumsQueryVariables>(GetLikedAlbumsDocument, variables), 1808 + ...options 1809 + } 1810 + )}; 1811 + 1812 + useGetLikedAlbumsQuery.document = GetLikedAlbumsDocument; 1813 + 1814 + useGetLikedAlbumsQuery.getKey = (variables?: GetLikedAlbumsQueryVariables) => variables === undefined ? ['GetLikedAlbums'] : ['GetLikedAlbums', variables]; 1815 + 1816 + export const SearchDocument = new TypedDocumentString(` 1686 1817 query Search($term: String!) { 1687 1818 search(term: $term) { 1688 1819 tracks { ··· 1737 1868 } 1738 1869 } 1739 1870 } 1740 - `; 1871 + `); 1872 + 1873 + export const useSearchQuery = < 1874 + TData = SearchQuery, 1875 + TError = unknown 1876 + >( 1877 + variables: SearchQueryVariables, 1878 + options?: Omit<UseQueryOptions<SearchQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<SearchQuery, TError, TData>['queryKey'] } 1879 + ) => { 1880 + 1881 + return useQuery<SearchQuery, TError, TData>( 1882 + { 1883 + queryKey: ['Search', variables], 1884 + queryFn: fetchData<SearchQuery, SearchQueryVariables>(SearchDocument, variables), 1885 + ...options 1886 + } 1887 + )}; 1888 + 1889 + useSearchQuery.document = SearchDocument; 1890 + 1891 + useSearchQuery.getKey = (variables: SearchQueryVariables) => ['Search', variables]; 1741 1892 1742 - /** 1743 - * __useSearchQuery__ 1744 - * 1745 - * To run a query within a React component, call `useSearchQuery` and pass it any options that fit your needs. 1746 - * When your component renders, `useSearchQuery` returns an object from Apollo Client that contains loading, error, and data properties 1747 - * you can use to render your UI. 1748 - * 1749 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 1750 - * 1751 - * @example 1752 - * const { data, loading, error } = useSearchQuery({ 1753 - * variables: { 1754 - * term: // value for 'term' 1755 - * }, 1756 - * }); 1757 - */ 1758 - export function useSearchQuery(baseOptions: Apollo.QueryHookOptions<SearchQuery, SearchQueryVariables> & ({ variables: SearchQueryVariables; skip?: boolean; } | { skip: boolean; }) ) { 1759 - const options = {...defaultOptions, ...baseOptions} 1760 - return Apollo.useQuery<SearchQuery, SearchQueryVariables>(SearchDocument, options); 1761 - } 1762 - export function useSearchLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<SearchQuery, SearchQueryVariables>) { 1763 - const options = {...defaultOptions, ...baseOptions} 1764 - return Apollo.useLazyQuery<SearchQuery, SearchQueryVariables>(SearchDocument, options); 1765 - } 1766 - export function useSearchSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<SearchQuery, SearchQueryVariables>) { 1767 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 1768 - return Apollo.useSuspenseQuery<SearchQuery, SearchQueryVariables>(SearchDocument, options); 1769 - } 1770 - export type SearchQueryHookResult = ReturnType<typeof useSearchQuery>; 1771 - export type SearchLazyQueryHookResult = ReturnType<typeof useSearchLazyQuery>; 1772 - export type SearchSuspenseQueryHookResult = ReturnType<typeof useSearchSuspenseQuery>; 1773 - export type SearchQueryResult = Apollo.QueryResult<SearchQuery, SearchQueryVariables>; 1774 - export const PlayDocument = gql` 1893 + export const PlayDocument = new TypedDocumentString(` 1775 1894 mutation Play($elapsed: Int!, $offset: Int!) { 1776 1895 play(elapsed: $elapsed, offset: $offset) 1777 1896 } 1778 - `; 1779 - export type PlayMutationFn = Apollo.MutationFunction<PlayMutation, PlayMutationVariables>; 1897 + `); 1780 1898 1781 - /** 1782 - * __usePlayMutation__ 1783 - * 1784 - * To run a mutation, you first call `usePlayMutation` within a React component and pass it any options that fit your needs. 1785 - * When your component renders, `usePlayMutation` returns a tuple that includes: 1786 - * - A mutate function that you can call at any time to execute the mutation 1787 - * - An object with fields that represent the current status of the mutation's execution 1788 - * 1789 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1790 - * 1791 - * @example 1792 - * const [playMutation, { data, loading, error }] = usePlayMutation({ 1793 - * variables: { 1794 - * elapsed: // value for 'elapsed' 1795 - * offset: // value for 'offset' 1796 - * }, 1797 - * }); 1798 - */ 1799 - export function usePlayMutation(baseOptions?: Apollo.MutationHookOptions<PlayMutation, PlayMutationVariables>) { 1800 - const options = {...defaultOptions, ...baseOptions} 1801 - return Apollo.useMutation<PlayMutation, PlayMutationVariables>(PlayDocument, options); 1802 - } 1803 - export type PlayMutationHookResult = ReturnType<typeof usePlayMutation>; 1804 - export type PlayMutationResult = Apollo.MutationResult<PlayMutation>; 1805 - export type PlayMutationOptions = Apollo.BaseMutationOptions<PlayMutation, PlayMutationVariables>; 1806 - export const PauseDocument = gql` 1899 + export const usePlayMutation = < 1900 + TError = unknown, 1901 + TContext = unknown 1902 + >(options?: UseMutationOptions<PlayMutation, TError, PlayMutationVariables, TContext>) => { 1903 + 1904 + return useMutation<PlayMutation, TError, PlayMutationVariables, TContext>( 1905 + { 1906 + mutationKey: ['Play'], 1907 + mutationFn: (variables?: PlayMutationVariables) => fetchData<PlayMutation, PlayMutationVariables>(PlayDocument, variables)(), 1908 + ...options 1909 + } 1910 + )}; 1911 + 1912 + usePlayMutation.getKey = () => ['Play']; 1913 + 1914 + export const PauseDocument = new TypedDocumentString(` 1807 1915 mutation Pause { 1808 1916 pause 1809 1917 } 1810 - `; 1811 - export type PauseMutationFn = Apollo.MutationFunction<PauseMutation, PauseMutationVariables>; 1918 + `); 1919 + 1920 + export const usePauseMutation = < 1921 + TError = unknown, 1922 + TContext = unknown 1923 + >(options?: UseMutationOptions<PauseMutation, TError, PauseMutationVariables, TContext>) => { 1924 + 1925 + return useMutation<PauseMutation, TError, PauseMutationVariables, TContext>( 1926 + { 1927 + mutationKey: ['Pause'], 1928 + mutationFn: (variables?: PauseMutationVariables) => fetchData<PauseMutation, PauseMutationVariables>(PauseDocument, variables)(), 1929 + ...options 1930 + } 1931 + )}; 1932 + 1933 + usePauseMutation.getKey = () => ['Pause']; 1812 1934 1813 - /** 1814 - * __usePauseMutation__ 1815 - * 1816 - * To run a mutation, you first call `usePauseMutation` within a React component and pass it any options that fit your needs. 1817 - * When your component renders, `usePauseMutation` returns a tuple that includes: 1818 - * - A mutate function that you can call at any time to execute the mutation 1819 - * - An object with fields that represent the current status of the mutation's execution 1820 - * 1821 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1822 - * 1823 - * @example 1824 - * const [pauseMutation, { data, loading, error }] = usePauseMutation({ 1825 - * variables: { 1826 - * }, 1827 - * }); 1828 - */ 1829 - export function usePauseMutation(baseOptions?: Apollo.MutationHookOptions<PauseMutation, PauseMutationVariables>) { 1830 - const options = {...defaultOptions, ...baseOptions} 1831 - return Apollo.useMutation<PauseMutation, PauseMutationVariables>(PauseDocument, options); 1832 - } 1833 - export type PauseMutationHookResult = ReturnType<typeof usePauseMutation>; 1834 - export type PauseMutationResult = Apollo.MutationResult<PauseMutation>; 1835 - export type PauseMutationOptions = Apollo.BaseMutationOptions<PauseMutation, PauseMutationVariables>; 1836 - export const ResumeDocument = gql` 1935 + export const ResumeDocument = new TypedDocumentString(` 1837 1936 mutation Resume { 1838 1937 resume 1839 1938 } 1840 - `; 1841 - export type ResumeMutationFn = Apollo.MutationFunction<ResumeMutation, ResumeMutationVariables>; 1939 + `); 1842 1940 1843 - /** 1844 - * __useResumeMutation__ 1845 - * 1846 - * To run a mutation, you first call `useResumeMutation` within a React component and pass it any options that fit your needs. 1847 - * When your component renders, `useResumeMutation` returns a tuple that includes: 1848 - * - A mutate function that you can call at any time to execute the mutation 1849 - * - An object with fields that represent the current status of the mutation's execution 1850 - * 1851 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1852 - * 1853 - * @example 1854 - * const [resumeMutation, { data, loading, error }] = useResumeMutation({ 1855 - * variables: { 1856 - * }, 1857 - * }); 1858 - */ 1859 - export function useResumeMutation(baseOptions?: Apollo.MutationHookOptions<ResumeMutation, ResumeMutationVariables>) { 1860 - const options = {...defaultOptions, ...baseOptions} 1861 - return Apollo.useMutation<ResumeMutation, ResumeMutationVariables>(ResumeDocument, options); 1862 - } 1863 - export type ResumeMutationHookResult = ReturnType<typeof useResumeMutation>; 1864 - export type ResumeMutationResult = Apollo.MutationResult<ResumeMutation>; 1865 - export type ResumeMutationOptions = Apollo.BaseMutationOptions<ResumeMutation, ResumeMutationVariables>; 1866 - export const PreviousDocument = gql` 1941 + export const useResumeMutation = < 1942 + TError = unknown, 1943 + TContext = unknown 1944 + >(options?: UseMutationOptions<ResumeMutation, TError, ResumeMutationVariables, TContext>) => { 1945 + 1946 + return useMutation<ResumeMutation, TError, ResumeMutationVariables, TContext>( 1947 + { 1948 + mutationKey: ['Resume'], 1949 + mutationFn: (variables?: ResumeMutationVariables) => fetchData<ResumeMutation, ResumeMutationVariables>(ResumeDocument, variables)(), 1950 + ...options 1951 + } 1952 + )}; 1953 + 1954 + useResumeMutation.getKey = () => ['Resume']; 1955 + 1956 + export const PreviousDocument = new TypedDocumentString(` 1867 1957 mutation Previous { 1868 1958 previous 1869 1959 } 1870 - `; 1871 - export type PreviousMutationFn = Apollo.MutationFunction<PreviousMutation, PreviousMutationVariables>; 1960 + `); 1961 + 1962 + export const usePreviousMutation = < 1963 + TError = unknown, 1964 + TContext = unknown 1965 + >(options?: UseMutationOptions<PreviousMutation, TError, PreviousMutationVariables, TContext>) => { 1966 + 1967 + return useMutation<PreviousMutation, TError, PreviousMutationVariables, TContext>( 1968 + { 1969 + mutationKey: ['Previous'], 1970 + mutationFn: (variables?: PreviousMutationVariables) => fetchData<PreviousMutation, PreviousMutationVariables>(PreviousDocument, variables)(), 1971 + ...options 1972 + } 1973 + )}; 1974 + 1975 + usePreviousMutation.getKey = () => ['Previous']; 1872 1976 1873 - /** 1874 - * __usePreviousMutation__ 1875 - * 1876 - * To run a mutation, you first call `usePreviousMutation` within a React component and pass it any options that fit your needs. 1877 - * When your component renders, `usePreviousMutation` returns a tuple that includes: 1878 - * - A mutate function that you can call at any time to execute the mutation 1879 - * - An object with fields that represent the current status of the mutation's execution 1880 - * 1881 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1882 - * 1883 - * @example 1884 - * const [previousMutation, { data, loading, error }] = usePreviousMutation({ 1885 - * variables: { 1886 - * }, 1887 - * }); 1888 - */ 1889 - export function usePreviousMutation(baseOptions?: Apollo.MutationHookOptions<PreviousMutation, PreviousMutationVariables>) { 1890 - const options = {...defaultOptions, ...baseOptions} 1891 - return Apollo.useMutation<PreviousMutation, PreviousMutationVariables>(PreviousDocument, options); 1892 - } 1893 - export type PreviousMutationHookResult = ReturnType<typeof usePreviousMutation>; 1894 - export type PreviousMutationResult = Apollo.MutationResult<PreviousMutation>; 1895 - export type PreviousMutationOptions = Apollo.BaseMutationOptions<PreviousMutation, PreviousMutationVariables>; 1896 - export const NextDocument = gql` 1977 + export const NextDocument = new TypedDocumentString(` 1897 1978 mutation Next { 1898 1979 next 1899 1980 } 1900 - `; 1901 - export type NextMutationFn = Apollo.MutationFunction<NextMutation, NextMutationVariables>; 1981 + `); 1902 1982 1903 - /** 1904 - * __useNextMutation__ 1905 - * 1906 - * To run a mutation, you first call `useNextMutation` within a React component and pass it any options that fit your needs. 1907 - * When your component renders, `useNextMutation` returns a tuple that includes: 1908 - * - A mutate function that you can call at any time to execute the mutation 1909 - * - An object with fields that represent the current status of the mutation's execution 1910 - * 1911 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1912 - * 1913 - * @example 1914 - * const [nextMutation, { data, loading, error }] = useNextMutation({ 1915 - * variables: { 1916 - * }, 1917 - * }); 1918 - */ 1919 - export function useNextMutation(baseOptions?: Apollo.MutationHookOptions<NextMutation, NextMutationVariables>) { 1920 - const options = {...defaultOptions, ...baseOptions} 1921 - return Apollo.useMutation<NextMutation, NextMutationVariables>(NextDocument, options); 1922 - } 1923 - export type NextMutationHookResult = ReturnType<typeof useNextMutation>; 1924 - export type NextMutationResult = Apollo.MutationResult<NextMutation>; 1925 - export type NextMutationOptions = Apollo.BaseMutationOptions<NextMutation, NextMutationVariables>; 1926 - export const PlayAlbumDocument = gql` 1983 + export const useNextMutation = < 1984 + TError = unknown, 1985 + TContext = unknown 1986 + >(options?: UseMutationOptions<NextMutation, TError, NextMutationVariables, TContext>) => { 1987 + 1988 + return useMutation<NextMutation, TError, NextMutationVariables, TContext>( 1989 + { 1990 + mutationKey: ['Next'], 1991 + mutationFn: (variables?: NextMutationVariables) => fetchData<NextMutation, NextMutationVariables>(NextDocument, variables)(), 1992 + ...options 1993 + } 1994 + )}; 1995 + 1996 + useNextMutation.getKey = () => ['Next']; 1997 + 1998 + export const PlayAlbumDocument = new TypedDocumentString(` 1927 1999 mutation PlayAlbum($albumId: String!, $shuffle: Boolean, $position: Int) { 1928 2000 playAlbum(albumId: $albumId, shuffle: $shuffle, position: $position) 1929 2001 } 1930 - `; 1931 - export type PlayAlbumMutationFn = Apollo.MutationFunction<PlayAlbumMutation, PlayAlbumMutationVariables>; 2002 + `); 1932 2003 1933 - /** 1934 - * __usePlayAlbumMutation__ 1935 - * 1936 - * To run a mutation, you first call `usePlayAlbumMutation` within a React component and pass it any options that fit your needs. 1937 - * When your component renders, `usePlayAlbumMutation` returns a tuple that includes: 1938 - * - A mutate function that you can call at any time to execute the mutation 1939 - * - An object with fields that represent the current status of the mutation's execution 1940 - * 1941 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1942 - * 1943 - * @example 1944 - * const [playAlbumMutation, { data, loading, error }] = usePlayAlbumMutation({ 1945 - * variables: { 1946 - * albumId: // value for 'albumId' 1947 - * shuffle: // value for 'shuffle' 1948 - * position: // value for 'position' 1949 - * }, 1950 - * }); 1951 - */ 1952 - export function usePlayAlbumMutation(baseOptions?: Apollo.MutationHookOptions<PlayAlbumMutation, PlayAlbumMutationVariables>) { 1953 - const options = {...defaultOptions, ...baseOptions} 1954 - return Apollo.useMutation<PlayAlbumMutation, PlayAlbumMutationVariables>(PlayAlbumDocument, options); 1955 - } 1956 - export type PlayAlbumMutationHookResult = ReturnType<typeof usePlayAlbumMutation>; 1957 - export type PlayAlbumMutationResult = Apollo.MutationResult<PlayAlbumMutation>; 1958 - export type PlayAlbumMutationOptions = Apollo.BaseMutationOptions<PlayAlbumMutation, PlayAlbumMutationVariables>; 1959 - export const PlayArtistTracksDocument = gql` 2004 + export const usePlayAlbumMutation = < 2005 + TError = unknown, 2006 + TContext = unknown 2007 + >(options?: UseMutationOptions<PlayAlbumMutation, TError, PlayAlbumMutationVariables, TContext>) => { 2008 + 2009 + return useMutation<PlayAlbumMutation, TError, PlayAlbumMutationVariables, TContext>( 2010 + { 2011 + mutationKey: ['PlayAlbum'], 2012 + mutationFn: (variables?: PlayAlbumMutationVariables) => fetchData<PlayAlbumMutation, PlayAlbumMutationVariables>(PlayAlbumDocument, variables)(), 2013 + ...options 2014 + } 2015 + )}; 2016 + 2017 + usePlayAlbumMutation.getKey = () => ['PlayAlbum']; 2018 + 2019 + export const PlayArtistTracksDocument = new TypedDocumentString(` 1960 2020 mutation PlayArtistTracks($artistId: String!, $shuffle: Boolean, $position: Int) { 1961 2021 playArtistTracks(artistId: $artistId, shuffle: $shuffle, position: $position) 1962 2022 } 1963 - `; 1964 - export type PlayArtistTracksMutationFn = Apollo.MutationFunction<PlayArtistTracksMutation, PlayArtistTracksMutationVariables>; 2023 + `); 2024 + 2025 + export const usePlayArtistTracksMutation = < 2026 + TError = unknown, 2027 + TContext = unknown 2028 + >(options?: UseMutationOptions<PlayArtistTracksMutation, TError, PlayArtistTracksMutationVariables, TContext>) => { 2029 + 2030 + return useMutation<PlayArtistTracksMutation, TError, PlayArtistTracksMutationVariables, TContext>( 2031 + { 2032 + mutationKey: ['PlayArtistTracks'], 2033 + mutationFn: (variables?: PlayArtistTracksMutationVariables) => fetchData<PlayArtistTracksMutation, PlayArtistTracksMutationVariables>(PlayArtistTracksDocument, variables)(), 2034 + ...options 2035 + } 2036 + )}; 1965 2037 1966 - /** 1967 - * __usePlayArtistTracksMutation__ 1968 - * 1969 - * To run a mutation, you first call `usePlayArtistTracksMutation` within a React component and pass it any options that fit your needs. 1970 - * When your component renders, `usePlayArtistTracksMutation` returns a tuple that includes: 1971 - * - A mutate function that you can call at any time to execute the mutation 1972 - * - An object with fields that represent the current status of the mutation's execution 1973 - * 1974 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 1975 - * 1976 - * @example 1977 - * const [playArtistTracksMutation, { data, loading, error }] = usePlayArtistTracksMutation({ 1978 - * variables: { 1979 - * artistId: // value for 'artistId' 1980 - * shuffle: // value for 'shuffle' 1981 - * position: // value for 'position' 1982 - * }, 1983 - * }); 1984 - */ 1985 - export function usePlayArtistTracksMutation(baseOptions?: Apollo.MutationHookOptions<PlayArtistTracksMutation, PlayArtistTracksMutationVariables>) { 1986 - const options = {...defaultOptions, ...baseOptions} 1987 - return Apollo.useMutation<PlayArtistTracksMutation, PlayArtistTracksMutationVariables>(PlayArtistTracksDocument, options); 1988 - } 1989 - export type PlayArtistTracksMutationHookResult = ReturnType<typeof usePlayArtistTracksMutation>; 1990 - export type PlayArtistTracksMutationResult = Apollo.MutationResult<PlayArtistTracksMutation>; 1991 - export type PlayArtistTracksMutationOptions = Apollo.BaseMutationOptions<PlayArtistTracksMutation, PlayArtistTracksMutationVariables>; 1992 - export const PlayDirectoryDocument = gql` 2038 + usePlayArtistTracksMutation.getKey = () => ['PlayArtistTracks']; 2039 + 2040 + export const PlayDirectoryDocument = new TypedDocumentString(` 1993 2041 mutation PlayDirectory($path: String!, $recurse: Boolean, $shuffle: Boolean, $position: Int) { 1994 2042 playDirectory( 1995 2043 path: $path ··· 1998 2046 position: $position 1999 2047 ) 2000 2048 } 2001 - `; 2002 - export type PlayDirectoryMutationFn = Apollo.MutationFunction<PlayDirectoryMutation, PlayDirectoryMutationVariables>; 2049 + `); 2003 2050 2004 - /** 2005 - * __usePlayDirectoryMutation__ 2006 - * 2007 - * To run a mutation, you first call `usePlayDirectoryMutation` within a React component and pass it any options that fit your needs. 2008 - * When your component renders, `usePlayDirectoryMutation` returns a tuple that includes: 2009 - * - A mutate function that you can call at any time to execute the mutation 2010 - * - An object with fields that represent the current status of the mutation's execution 2011 - * 2012 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2013 - * 2014 - * @example 2015 - * const [playDirectoryMutation, { data, loading, error }] = usePlayDirectoryMutation({ 2016 - * variables: { 2017 - * path: // value for 'path' 2018 - * recurse: // value for 'recurse' 2019 - * shuffle: // value for 'shuffle' 2020 - * position: // value for 'position' 2021 - * }, 2022 - * }); 2023 - */ 2024 - export function usePlayDirectoryMutation(baseOptions?: Apollo.MutationHookOptions<PlayDirectoryMutation, PlayDirectoryMutationVariables>) { 2025 - const options = {...defaultOptions, ...baseOptions} 2026 - return Apollo.useMutation<PlayDirectoryMutation, PlayDirectoryMutationVariables>(PlayDirectoryDocument, options); 2027 - } 2028 - export type PlayDirectoryMutationHookResult = ReturnType<typeof usePlayDirectoryMutation>; 2029 - export type PlayDirectoryMutationResult = Apollo.MutationResult<PlayDirectoryMutation>; 2030 - export type PlayDirectoryMutationOptions = Apollo.BaseMutationOptions<PlayDirectoryMutation, PlayDirectoryMutationVariables>; 2031 - export const PlayTrackDocument = gql` 2051 + export const usePlayDirectoryMutation = < 2052 + TError = unknown, 2053 + TContext = unknown 2054 + >(options?: UseMutationOptions<PlayDirectoryMutation, TError, PlayDirectoryMutationVariables, TContext>) => { 2055 + 2056 + return useMutation<PlayDirectoryMutation, TError, PlayDirectoryMutationVariables, TContext>( 2057 + { 2058 + mutationKey: ['PlayDirectory'], 2059 + mutationFn: (variables?: PlayDirectoryMutationVariables) => fetchData<PlayDirectoryMutation, PlayDirectoryMutationVariables>(PlayDirectoryDocument, variables)(), 2060 + ...options 2061 + } 2062 + )}; 2063 + 2064 + usePlayDirectoryMutation.getKey = () => ['PlayDirectory']; 2065 + 2066 + export const PlayTrackDocument = new TypedDocumentString(` 2032 2067 mutation PlayTrack($path: String!) { 2033 2068 playTrack(path: $path) 2034 2069 } 2035 - `; 2036 - export type PlayTrackMutationFn = Apollo.MutationFunction<PlayTrackMutation, PlayTrackMutationVariables>; 2070 + `); 2037 2071 2038 - /** 2039 - * __usePlayTrackMutation__ 2040 - * 2041 - * To run a mutation, you first call `usePlayTrackMutation` within a React component and pass it any options that fit your needs. 2042 - * When your component renders, `usePlayTrackMutation` returns a tuple that includes: 2043 - * - A mutate function that you can call at any time to execute the mutation 2044 - * - An object with fields that represent the current status of the mutation's execution 2045 - * 2046 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2047 - * 2048 - * @example 2049 - * const [playTrackMutation, { data, loading, error }] = usePlayTrackMutation({ 2050 - * variables: { 2051 - * path: // value for 'path' 2052 - * }, 2053 - * }); 2054 - */ 2055 - export function usePlayTrackMutation(baseOptions?: Apollo.MutationHookOptions<PlayTrackMutation, PlayTrackMutationVariables>) { 2056 - const options = {...defaultOptions, ...baseOptions} 2057 - return Apollo.useMutation<PlayTrackMutation, PlayTrackMutationVariables>(PlayTrackDocument, options); 2058 - } 2059 - export type PlayTrackMutationHookResult = ReturnType<typeof usePlayTrackMutation>; 2060 - export type PlayTrackMutationResult = Apollo.MutationResult<PlayTrackMutation>; 2061 - export type PlayTrackMutationOptions = Apollo.BaseMutationOptions<PlayTrackMutation, PlayTrackMutationVariables>; 2062 - export const PlayLikedTracksDocument = gql` 2072 + export const usePlayTrackMutation = < 2073 + TError = unknown, 2074 + TContext = unknown 2075 + >(options?: UseMutationOptions<PlayTrackMutation, TError, PlayTrackMutationVariables, TContext>) => { 2076 + 2077 + return useMutation<PlayTrackMutation, TError, PlayTrackMutationVariables, TContext>( 2078 + { 2079 + mutationKey: ['PlayTrack'], 2080 + mutationFn: (variables?: PlayTrackMutationVariables) => fetchData<PlayTrackMutation, PlayTrackMutationVariables>(PlayTrackDocument, variables)(), 2081 + ...options 2082 + } 2083 + )}; 2084 + 2085 + usePlayTrackMutation.getKey = () => ['PlayTrack']; 2086 + 2087 + export const PlayLikedTracksDocument = new TypedDocumentString(` 2063 2088 mutation PlayLikedTracks($shuffle: Boolean, $position: Int) { 2064 2089 playLikedTracks(shuffle: $shuffle, position: $position) 2065 2090 } 2066 - `; 2067 - export type PlayLikedTracksMutationFn = Apollo.MutationFunction<PlayLikedTracksMutation, PlayLikedTracksMutationVariables>; 2091 + `); 2068 2092 2069 - /** 2070 - * __usePlayLikedTracksMutation__ 2071 - * 2072 - * To run a mutation, you first call `usePlayLikedTracksMutation` within a React component and pass it any options that fit your needs. 2073 - * When your component renders, `usePlayLikedTracksMutation` returns a tuple that includes: 2074 - * - A mutate function that you can call at any time to execute the mutation 2075 - * - An object with fields that represent the current status of the mutation's execution 2076 - * 2077 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2078 - * 2079 - * @example 2080 - * const [playLikedTracksMutation, { data, loading, error }] = usePlayLikedTracksMutation({ 2081 - * variables: { 2082 - * shuffle: // value for 'shuffle' 2083 - * position: // value for 'position' 2084 - * }, 2085 - * }); 2086 - */ 2087 - export function usePlayLikedTracksMutation(baseOptions?: Apollo.MutationHookOptions<PlayLikedTracksMutation, PlayLikedTracksMutationVariables>) { 2088 - const options = {...defaultOptions, ...baseOptions} 2089 - return Apollo.useMutation<PlayLikedTracksMutation, PlayLikedTracksMutationVariables>(PlayLikedTracksDocument, options); 2090 - } 2091 - export type PlayLikedTracksMutationHookResult = ReturnType<typeof usePlayLikedTracksMutation>; 2092 - export type PlayLikedTracksMutationResult = Apollo.MutationResult<PlayLikedTracksMutation>; 2093 - export type PlayLikedTracksMutationOptions = Apollo.BaseMutationOptions<PlayLikedTracksMutation, PlayLikedTracksMutationVariables>; 2094 - export const PlayAllTracksDocument = gql` 2093 + export const usePlayLikedTracksMutation = < 2094 + TError = unknown, 2095 + TContext = unknown 2096 + >(options?: UseMutationOptions<PlayLikedTracksMutation, TError, PlayLikedTracksMutationVariables, TContext>) => { 2097 + 2098 + return useMutation<PlayLikedTracksMutation, TError, PlayLikedTracksMutationVariables, TContext>( 2099 + { 2100 + mutationKey: ['PlayLikedTracks'], 2101 + mutationFn: (variables?: PlayLikedTracksMutationVariables) => fetchData<PlayLikedTracksMutation, PlayLikedTracksMutationVariables>(PlayLikedTracksDocument, variables)(), 2102 + ...options 2103 + } 2104 + )}; 2105 + 2106 + usePlayLikedTracksMutation.getKey = () => ['PlayLikedTracks']; 2107 + 2108 + export const PlayAllTracksDocument = new TypedDocumentString(` 2095 2109 mutation PlayAllTracks($shuffle: Boolean, $position: Int) { 2096 2110 playAllTracks(shuffle: $shuffle, position: $position) 2097 2111 } 2098 - `; 2099 - export type PlayAllTracksMutationFn = Apollo.MutationFunction<PlayAllTracksMutation, PlayAllTracksMutationVariables>; 2112 + `); 2113 + 2114 + export const usePlayAllTracksMutation = < 2115 + TError = unknown, 2116 + TContext = unknown 2117 + >(options?: UseMutationOptions<PlayAllTracksMutation, TError, PlayAllTracksMutationVariables, TContext>) => { 2118 + 2119 + return useMutation<PlayAllTracksMutation, TError, PlayAllTracksMutationVariables, TContext>( 2120 + { 2121 + mutationKey: ['PlayAllTracks'], 2122 + mutationFn: (variables?: PlayAllTracksMutationVariables) => fetchData<PlayAllTracksMutation, PlayAllTracksMutationVariables>(PlayAllTracksDocument, variables)(), 2123 + ...options 2124 + } 2125 + )}; 2100 2126 2101 - /** 2102 - * __usePlayAllTracksMutation__ 2103 - * 2104 - * To run a mutation, you first call `usePlayAllTracksMutation` within a React component and pass it any options that fit your needs. 2105 - * When your component renders, `usePlayAllTracksMutation` returns a tuple that includes: 2106 - * - A mutate function that you can call at any time to execute the mutation 2107 - * - An object with fields that represent the current status of the mutation's execution 2108 - * 2109 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2110 - * 2111 - * @example 2112 - * const [playAllTracksMutation, { data, loading, error }] = usePlayAllTracksMutation({ 2113 - * variables: { 2114 - * shuffle: // value for 'shuffle' 2115 - * position: // value for 'position' 2116 - * }, 2117 - * }); 2118 - */ 2119 - export function usePlayAllTracksMutation(baseOptions?: Apollo.MutationHookOptions<PlayAllTracksMutation, PlayAllTracksMutationVariables>) { 2120 - const options = {...defaultOptions, ...baseOptions} 2121 - return Apollo.useMutation<PlayAllTracksMutation, PlayAllTracksMutationVariables>(PlayAllTracksDocument, options); 2122 - } 2123 - export type PlayAllTracksMutationHookResult = ReturnType<typeof usePlayAllTracksMutation>; 2124 - export type PlayAllTracksMutationResult = Apollo.MutationResult<PlayAllTracksMutation>; 2125 - export type PlayAllTracksMutationOptions = Apollo.BaseMutationOptions<PlayAllTracksMutation, PlayAllTracksMutationVariables>; 2126 - export const SeekDocument = gql` 2127 + usePlayAllTracksMutation.getKey = () => ['PlayAllTracks']; 2128 + 2129 + export const SeekDocument = new TypedDocumentString(` 2127 2130 mutation Seek($elapsed: Int!, $offset: Int!) { 2128 2131 play(elapsed: $elapsed, offset: $offset) 2129 2132 } 2130 - `; 2131 - export type SeekMutationFn = Apollo.MutationFunction<SeekMutation, SeekMutationVariables>; 2133 + `); 2132 2134 2133 - /** 2134 - * __useSeekMutation__ 2135 - * 2136 - * To run a mutation, you first call `useSeekMutation` within a React component and pass it any options that fit your needs. 2137 - * When your component renders, `useSeekMutation` returns a tuple that includes: 2138 - * - A mutate function that you can call at any time to execute the mutation 2139 - * - An object with fields that represent the current status of the mutation's execution 2140 - * 2141 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2142 - * 2143 - * @example 2144 - * const [seekMutation, { data, loading, error }] = useSeekMutation({ 2145 - * variables: { 2146 - * elapsed: // value for 'elapsed' 2147 - * offset: // value for 'offset' 2148 - * }, 2149 - * }); 2150 - */ 2151 - export function useSeekMutation(baseOptions?: Apollo.MutationHookOptions<SeekMutation, SeekMutationVariables>) { 2152 - const options = {...defaultOptions, ...baseOptions} 2153 - return Apollo.useMutation<SeekMutation, SeekMutationVariables>(SeekDocument, options); 2154 - } 2155 - export type SeekMutationHookResult = ReturnType<typeof useSeekMutation>; 2156 - export type SeekMutationResult = Apollo.MutationResult<SeekMutation>; 2157 - export type SeekMutationOptions = Apollo.BaseMutationOptions<SeekMutation, SeekMutationVariables>; 2158 - export const GetCurrentTrackDocument = gql` 2135 + export const useSeekMutation = < 2136 + TError = unknown, 2137 + TContext = unknown 2138 + >(options?: UseMutationOptions<SeekMutation, TError, SeekMutationVariables, TContext>) => { 2139 + 2140 + return useMutation<SeekMutation, TError, SeekMutationVariables, TContext>( 2141 + { 2142 + mutationKey: ['Seek'], 2143 + mutationFn: (variables?: SeekMutationVariables) => fetchData<SeekMutation, SeekMutationVariables>(SeekDocument, variables)(), 2144 + ...options 2145 + } 2146 + )}; 2147 + 2148 + useSeekMutation.getKey = () => ['Seek']; 2149 + 2150 + export const GetCurrentTrackDocument = new TypedDocumentString(` 2159 2151 query GetCurrentTrack { 2160 2152 currentTrack { 2161 2153 id ··· 2171 2163 yearString 2172 2164 } 2173 2165 } 2174 - `; 2166 + `); 2167 + 2168 + export const useGetCurrentTrackQuery = < 2169 + TData = GetCurrentTrackQuery, 2170 + TError = unknown 2171 + >( 2172 + variables?: GetCurrentTrackQueryVariables, 2173 + options?: Omit<UseQueryOptions<GetCurrentTrackQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetCurrentTrackQuery, TError, TData>['queryKey'] } 2174 + ) => { 2175 + 2176 + return useQuery<GetCurrentTrackQuery, TError, TData>( 2177 + { 2178 + queryKey: variables === undefined ? ['GetCurrentTrack'] : ['GetCurrentTrack', variables], 2179 + queryFn: fetchData<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>(GetCurrentTrackDocument, variables), 2180 + ...options 2181 + } 2182 + )}; 2183 + 2184 + useGetCurrentTrackQuery.document = GetCurrentTrackDocument; 2185 + 2186 + useGetCurrentTrackQuery.getKey = (variables?: GetCurrentTrackQueryVariables) => variables === undefined ? ['GetCurrentTrack'] : ['GetCurrentTrack', variables]; 2175 2187 2176 - /** 2177 - * __useGetCurrentTrackQuery__ 2178 - * 2179 - * To run a query within a React component, call `useGetCurrentTrackQuery` and pass it any options that fit your needs. 2180 - * When your component renders, `useGetCurrentTrackQuery` returns an object from Apollo Client that contains loading, error, and data properties 2181 - * you can use to render your UI. 2182 - * 2183 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2184 - * 2185 - * @example 2186 - * const { data, loading, error } = useGetCurrentTrackQuery({ 2187 - * variables: { 2188 - * }, 2189 - * }); 2190 - */ 2191 - export function useGetCurrentTrackQuery(baseOptions?: Apollo.QueryHookOptions<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>) { 2192 - const options = {...defaultOptions, ...baseOptions} 2193 - return Apollo.useQuery<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>(GetCurrentTrackDocument, options); 2194 - } 2195 - export function useGetCurrentTrackLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>) { 2196 - const options = {...defaultOptions, ...baseOptions} 2197 - return Apollo.useLazyQuery<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>(GetCurrentTrackDocument, options); 2198 - } 2199 - export function useGetCurrentTrackSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>) { 2200 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2201 - return Apollo.useSuspenseQuery<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>(GetCurrentTrackDocument, options); 2202 - } 2203 - export type GetCurrentTrackQueryHookResult = ReturnType<typeof useGetCurrentTrackQuery>; 2204 - export type GetCurrentTrackLazyQueryHookResult = ReturnType<typeof useGetCurrentTrackLazyQuery>; 2205 - export type GetCurrentTrackSuspenseQueryHookResult = ReturnType<typeof useGetCurrentTrackSuspenseQuery>; 2206 - export type GetCurrentTrackQueryResult = Apollo.QueryResult<GetCurrentTrackQuery, GetCurrentTrackQueryVariables>; 2207 - export const GetNextTrackDocument = gql` 2188 + export const GetNextTrackDocument = new TypedDocumentString(` 2208 2189 query GetNextTrack { 2209 2190 nextTrack { 2210 2191 id ··· 2219 2200 yearString 2220 2201 } 2221 2202 } 2222 - `; 2203 + `); 2223 2204 2224 - /** 2225 - * __useGetNextTrackQuery__ 2226 - * 2227 - * To run a query within a React component, call `useGetNextTrackQuery` and pass it any options that fit your needs. 2228 - * When your component renders, `useGetNextTrackQuery` returns an object from Apollo Client that contains loading, error, and data properties 2229 - * you can use to render your UI. 2230 - * 2231 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2232 - * 2233 - * @example 2234 - * const { data, loading, error } = useGetNextTrackQuery({ 2235 - * variables: { 2236 - * }, 2237 - * }); 2238 - */ 2239 - export function useGetNextTrackQuery(baseOptions?: Apollo.QueryHookOptions<GetNextTrackQuery, GetNextTrackQueryVariables>) { 2240 - const options = {...defaultOptions, ...baseOptions} 2241 - return Apollo.useQuery<GetNextTrackQuery, GetNextTrackQueryVariables>(GetNextTrackDocument, options); 2242 - } 2243 - export function useGetNextTrackLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetNextTrackQuery, GetNextTrackQueryVariables>) { 2244 - const options = {...defaultOptions, ...baseOptions} 2245 - return Apollo.useLazyQuery<GetNextTrackQuery, GetNextTrackQueryVariables>(GetNextTrackDocument, options); 2246 - } 2247 - export function useGetNextTrackSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetNextTrackQuery, GetNextTrackQueryVariables>) { 2248 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2249 - return Apollo.useSuspenseQuery<GetNextTrackQuery, GetNextTrackQueryVariables>(GetNextTrackDocument, options); 2250 - } 2251 - export type GetNextTrackQueryHookResult = ReturnType<typeof useGetNextTrackQuery>; 2252 - export type GetNextTrackLazyQueryHookResult = ReturnType<typeof useGetNextTrackLazyQuery>; 2253 - export type GetNextTrackSuspenseQueryHookResult = ReturnType<typeof useGetNextTrackSuspenseQuery>; 2254 - export type GetNextTrackQueryResult = Apollo.QueryResult<GetNextTrackQuery, GetNextTrackQueryVariables>; 2255 - export const GetPlaybackStatusDocument = gql` 2205 + export const useGetNextTrackQuery = < 2206 + TData = GetNextTrackQuery, 2207 + TError = unknown 2208 + >( 2209 + variables?: GetNextTrackQueryVariables, 2210 + options?: Omit<UseQueryOptions<GetNextTrackQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetNextTrackQuery, TError, TData>['queryKey'] } 2211 + ) => { 2212 + 2213 + return useQuery<GetNextTrackQuery, TError, TData>( 2214 + { 2215 + queryKey: variables === undefined ? ['GetNextTrack'] : ['GetNextTrack', variables], 2216 + queryFn: fetchData<GetNextTrackQuery, GetNextTrackQueryVariables>(GetNextTrackDocument, variables), 2217 + ...options 2218 + } 2219 + )}; 2220 + 2221 + useGetNextTrackQuery.document = GetNextTrackDocument; 2222 + 2223 + useGetNextTrackQuery.getKey = (variables?: GetNextTrackQueryVariables) => variables === undefined ? ['GetNextTrack'] : ['GetNextTrack', variables]; 2224 + 2225 + export const GetPlaybackStatusDocument = new TypedDocumentString(` 2256 2226 query GetPlaybackStatus { 2257 2227 status 2258 2228 } 2259 - `; 2229 + `); 2260 2230 2261 - /** 2262 - * __useGetPlaybackStatusQuery__ 2263 - * 2264 - * To run a query within a React component, call `useGetPlaybackStatusQuery` and pass it any options that fit your needs. 2265 - * When your component renders, `useGetPlaybackStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties 2266 - * you can use to render your UI. 2267 - * 2268 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2269 - * 2270 - * @example 2271 - * const { data, loading, error } = useGetPlaybackStatusQuery({ 2272 - * variables: { 2273 - * }, 2274 - * }); 2275 - */ 2276 - export function useGetPlaybackStatusQuery(baseOptions?: Apollo.QueryHookOptions<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>) { 2277 - const options = {...defaultOptions, ...baseOptions} 2278 - return Apollo.useQuery<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>(GetPlaybackStatusDocument, options); 2279 - } 2280 - export function useGetPlaybackStatusLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>) { 2281 - const options = {...defaultOptions, ...baseOptions} 2282 - return Apollo.useLazyQuery<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>(GetPlaybackStatusDocument, options); 2283 - } 2284 - export function useGetPlaybackStatusSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>) { 2285 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2286 - return Apollo.useSuspenseQuery<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>(GetPlaybackStatusDocument, options); 2287 - } 2288 - export type GetPlaybackStatusQueryHookResult = ReturnType<typeof useGetPlaybackStatusQuery>; 2289 - export type GetPlaybackStatusLazyQueryHookResult = ReturnType<typeof useGetPlaybackStatusLazyQuery>; 2290 - export type GetPlaybackStatusSuspenseQueryHookResult = ReturnType<typeof useGetPlaybackStatusSuspenseQuery>; 2291 - export type GetPlaybackStatusQueryResult = Apollo.QueryResult<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>; 2292 - export const CurrentlyPlayingSongDocument = gql` 2231 + export const useGetPlaybackStatusQuery = < 2232 + TData = GetPlaybackStatusQuery, 2233 + TError = unknown 2234 + >( 2235 + variables?: GetPlaybackStatusQueryVariables, 2236 + options?: Omit<UseQueryOptions<GetPlaybackStatusQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetPlaybackStatusQuery, TError, TData>['queryKey'] } 2237 + ) => { 2238 + 2239 + return useQuery<GetPlaybackStatusQuery, TError, TData>( 2240 + { 2241 + queryKey: variables === undefined ? ['GetPlaybackStatus'] : ['GetPlaybackStatus', variables], 2242 + queryFn: fetchData<GetPlaybackStatusQuery, GetPlaybackStatusQueryVariables>(GetPlaybackStatusDocument, variables), 2243 + ...options 2244 + } 2245 + )}; 2246 + 2247 + useGetPlaybackStatusQuery.document = GetPlaybackStatusDocument; 2248 + 2249 + useGetPlaybackStatusQuery.getKey = (variables?: GetPlaybackStatusQueryVariables) => variables === undefined ? ['GetPlaybackStatus'] : ['GetPlaybackStatus', variables]; 2250 + 2251 + export const CurrentlyPlayingSongDocument = new TypedDocumentString(` 2293 2252 subscription CurrentlyPlayingSong { 2294 2253 currentlyPlayingSong { 2295 2254 id ··· 2305 2264 yearString 2306 2265 } 2307 2266 } 2308 - `; 2309 - 2310 - /** 2311 - * __useCurrentlyPlayingSongSubscription__ 2312 - * 2313 - * To run a query within a React component, call `useCurrentlyPlayingSongSubscription` and pass it any options that fit your needs. 2314 - * When your component renders, `useCurrentlyPlayingSongSubscription` returns an object from Apollo Client that contains loading, error, and data properties 2315 - * you can use to render your UI. 2316 - * 2317 - * @param baseOptions options that will be passed into the subscription, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2318 - * 2319 - * @example 2320 - * const { data, loading, error } = useCurrentlyPlayingSongSubscription({ 2321 - * variables: { 2322 - * }, 2323 - * }); 2324 - */ 2325 - export function useCurrentlyPlayingSongSubscription(baseOptions?: Apollo.SubscriptionHookOptions<CurrentlyPlayingSongSubscription, CurrentlyPlayingSongSubscriptionVariables>) { 2326 - const options = {...defaultOptions, ...baseOptions} 2327 - return Apollo.useSubscription<CurrentlyPlayingSongSubscription, CurrentlyPlayingSongSubscriptionVariables>(CurrentlyPlayingSongDocument, options); 2328 - } 2329 - export type CurrentlyPlayingSongSubscriptionHookResult = ReturnType<typeof useCurrentlyPlayingSongSubscription>; 2330 - export type CurrentlyPlayingSongSubscriptionResult = Apollo.SubscriptionResult<CurrentlyPlayingSongSubscription>; 2331 - export const PlaybackStatusDocument = gql` 2267 + `); 2268 + export const PlaybackStatusDocument = new TypedDocumentString(` 2332 2269 subscription PlaybackStatus { 2333 2270 playbackStatus { 2334 2271 status 2335 2272 } 2336 2273 } 2337 - `; 2338 - 2339 - /** 2340 - * __usePlaybackStatusSubscription__ 2341 - * 2342 - * To run a query within a React component, call `usePlaybackStatusSubscription` and pass it any options that fit your needs. 2343 - * When your component renders, `usePlaybackStatusSubscription` returns an object from Apollo Client that contains loading, error, and data properties 2344 - * you can use to render your UI. 2345 - * 2346 - * @param baseOptions options that will be passed into the subscription, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2347 - * 2348 - * @example 2349 - * const { data, loading, error } = usePlaybackStatusSubscription({ 2350 - * variables: { 2351 - * }, 2352 - * }); 2353 - */ 2354 - export function usePlaybackStatusSubscription(baseOptions?: Apollo.SubscriptionHookOptions<PlaybackStatusSubscription, PlaybackStatusSubscriptionVariables>) { 2355 - const options = {...defaultOptions, ...baseOptions} 2356 - return Apollo.useSubscription<PlaybackStatusSubscription, PlaybackStatusSubscriptionVariables>(PlaybackStatusDocument, options); 2357 - } 2358 - export type PlaybackStatusSubscriptionHookResult = ReturnType<typeof usePlaybackStatusSubscription>; 2359 - export type PlaybackStatusSubscriptionResult = Apollo.SubscriptionResult<PlaybackStatusSubscription>; 2360 - export const ResumePlaylistDocument = gql` 2274 + `); 2275 + export const ResumePlaylistDocument = new TypedDocumentString(` 2361 2276 mutation ResumePlaylist { 2362 2277 playlistResume 2363 2278 } 2364 - `; 2365 - export type ResumePlaylistMutationFn = Apollo.MutationFunction<ResumePlaylistMutation, ResumePlaylistMutationVariables>; 2279 + `); 2280 + 2281 + export const useResumePlaylistMutation = < 2282 + TError = unknown, 2283 + TContext = unknown 2284 + >(options?: UseMutationOptions<ResumePlaylistMutation, TError, ResumePlaylistMutationVariables, TContext>) => { 2285 + 2286 + return useMutation<ResumePlaylistMutation, TError, ResumePlaylistMutationVariables, TContext>( 2287 + { 2288 + mutationKey: ['ResumePlaylist'], 2289 + mutationFn: (variables?: ResumePlaylistMutationVariables) => fetchData<ResumePlaylistMutation, ResumePlaylistMutationVariables>(ResumePlaylistDocument, variables)(), 2290 + ...options 2291 + } 2292 + )}; 2293 + 2294 + useResumePlaylistMutation.getKey = () => ['ResumePlaylist']; 2366 2295 2367 - /** 2368 - * __useResumePlaylistMutation__ 2369 - * 2370 - * To run a mutation, you first call `useResumePlaylistMutation` within a React component and pass it any options that fit your needs. 2371 - * When your component renders, `useResumePlaylistMutation` returns a tuple that includes: 2372 - * - A mutate function that you can call at any time to execute the mutation 2373 - * - An object with fields that represent the current status of the mutation's execution 2374 - * 2375 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2376 - * 2377 - * @example 2378 - * const [resumePlaylistMutation, { data, loading, error }] = useResumePlaylistMutation({ 2379 - * variables: { 2380 - * }, 2381 - * }); 2382 - */ 2383 - export function useResumePlaylistMutation(baseOptions?: Apollo.MutationHookOptions<ResumePlaylistMutation, ResumePlaylistMutationVariables>) { 2384 - const options = {...defaultOptions, ...baseOptions} 2385 - return Apollo.useMutation<ResumePlaylistMutation, ResumePlaylistMutationVariables>(ResumePlaylistDocument, options); 2386 - } 2387 - export type ResumePlaylistMutationHookResult = ReturnType<typeof useResumePlaylistMutation>; 2388 - export type ResumePlaylistMutationResult = Apollo.MutationResult<ResumePlaylistMutation>; 2389 - export type ResumePlaylistMutationOptions = Apollo.BaseMutationOptions<ResumePlaylistMutation, ResumePlaylistMutationVariables>; 2390 - export const ResumePlaylistTrackDocument = gql` 2296 + export const ResumePlaylistTrackDocument = new TypedDocumentString(` 2391 2297 mutation ResumePlaylistTrack { 2392 2298 resumeTrack 2393 2299 } 2394 - `; 2395 - export type ResumePlaylistTrackMutationFn = Apollo.MutationFunction<ResumePlaylistTrackMutation, ResumePlaylistTrackMutationVariables>; 2300 + `); 2396 2301 2397 - /** 2398 - * __useResumePlaylistTrackMutation__ 2399 - * 2400 - * To run a mutation, you first call `useResumePlaylistTrackMutation` within a React component and pass it any options that fit your needs. 2401 - * When your component renders, `useResumePlaylistTrackMutation` returns a tuple that includes: 2402 - * - A mutate function that you can call at any time to execute the mutation 2403 - * - An object with fields that represent the current status of the mutation's execution 2404 - * 2405 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2406 - * 2407 - * @example 2408 - * const [resumePlaylistTrackMutation, { data, loading, error }] = useResumePlaylistTrackMutation({ 2409 - * variables: { 2410 - * }, 2411 - * }); 2412 - */ 2413 - export function useResumePlaylistTrackMutation(baseOptions?: Apollo.MutationHookOptions<ResumePlaylistTrackMutation, ResumePlaylistTrackMutationVariables>) { 2414 - const options = {...defaultOptions, ...baseOptions} 2415 - return Apollo.useMutation<ResumePlaylistTrackMutation, ResumePlaylistTrackMutationVariables>(ResumePlaylistTrackDocument, options); 2416 - } 2417 - export type ResumePlaylistTrackMutationHookResult = ReturnType<typeof useResumePlaylistTrackMutation>; 2418 - export type ResumePlaylistTrackMutationResult = Apollo.MutationResult<ResumePlaylistTrackMutation>; 2419 - export type ResumePlaylistTrackMutationOptions = Apollo.BaseMutationOptions<ResumePlaylistTrackMutation, ResumePlaylistTrackMutationVariables>; 2420 - export const PlaylistRemoveTrackDocument = gql` 2302 + export const useResumePlaylistTrackMutation = < 2303 + TError = unknown, 2304 + TContext = unknown 2305 + >(options?: UseMutationOptions<ResumePlaylistTrackMutation, TError, ResumePlaylistTrackMutationVariables, TContext>) => { 2306 + 2307 + return useMutation<ResumePlaylistTrackMutation, TError, ResumePlaylistTrackMutationVariables, TContext>( 2308 + { 2309 + mutationKey: ['ResumePlaylistTrack'], 2310 + mutationFn: (variables?: ResumePlaylistTrackMutationVariables) => fetchData<ResumePlaylistTrackMutation, ResumePlaylistTrackMutationVariables>(ResumePlaylistTrackDocument, variables)(), 2311 + ...options 2312 + } 2313 + )}; 2314 + 2315 + useResumePlaylistTrackMutation.getKey = () => ['ResumePlaylistTrack']; 2316 + 2317 + export const PlaylistRemoveTrackDocument = new TypedDocumentString(` 2421 2318 mutation PlaylistRemoveTrack($index: Int!) { 2422 2319 playlistRemoveTrack(index: $index) 2423 2320 } 2424 - `; 2425 - export type PlaylistRemoveTrackMutationFn = Apollo.MutationFunction<PlaylistRemoveTrackMutation, PlaylistRemoveTrackMutationVariables>; 2321 + `); 2322 + 2323 + export const usePlaylistRemoveTrackMutation = < 2324 + TError = unknown, 2325 + TContext = unknown 2326 + >(options?: UseMutationOptions<PlaylistRemoveTrackMutation, TError, PlaylistRemoveTrackMutationVariables, TContext>) => { 2327 + 2328 + return useMutation<PlaylistRemoveTrackMutation, TError, PlaylistRemoveTrackMutationVariables, TContext>( 2329 + { 2330 + mutationKey: ['PlaylistRemoveTrack'], 2331 + mutationFn: (variables?: PlaylistRemoveTrackMutationVariables) => fetchData<PlaylistRemoveTrackMutation, PlaylistRemoveTrackMutationVariables>(PlaylistRemoveTrackDocument, variables)(), 2332 + ...options 2333 + } 2334 + )}; 2335 + 2336 + usePlaylistRemoveTrackMutation.getKey = () => ['PlaylistRemoveTrack']; 2426 2337 2427 - /** 2428 - * __usePlaylistRemoveTrackMutation__ 2429 - * 2430 - * To run a mutation, you first call `usePlaylistRemoveTrackMutation` within a React component and pass it any options that fit your needs. 2431 - * When your component renders, `usePlaylistRemoveTrackMutation` returns a tuple that includes: 2432 - * - A mutate function that you can call at any time to execute the mutation 2433 - * - An object with fields that represent the current status of the mutation's execution 2434 - * 2435 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2436 - * 2437 - * @example 2438 - * const [playlistRemoveTrackMutation, { data, loading, error }] = usePlaylistRemoveTrackMutation({ 2439 - * variables: { 2440 - * index: // value for 'index' 2441 - * }, 2442 - * }); 2443 - */ 2444 - export function usePlaylistRemoveTrackMutation(baseOptions?: Apollo.MutationHookOptions<PlaylistRemoveTrackMutation, PlaylistRemoveTrackMutationVariables>) { 2445 - const options = {...defaultOptions, ...baseOptions} 2446 - return Apollo.useMutation<PlaylistRemoveTrackMutation, PlaylistRemoveTrackMutationVariables>(PlaylistRemoveTrackDocument, options); 2447 - } 2448 - export type PlaylistRemoveTrackMutationHookResult = ReturnType<typeof usePlaylistRemoveTrackMutation>; 2449 - export type PlaylistRemoveTrackMutationResult = Apollo.MutationResult<PlaylistRemoveTrackMutation>; 2450 - export type PlaylistRemoveTrackMutationOptions = Apollo.BaseMutationOptions<PlaylistRemoveTrackMutation, PlaylistRemoveTrackMutationVariables>; 2451 - export const StartPlaylistDocument = gql` 2338 + export const StartPlaylistDocument = new TypedDocumentString(` 2452 2339 mutation StartPlaylist($startIndex: Int, $elapsed: Int, $offset: Int) { 2453 2340 playlistStart(startIndex: $startIndex, elapsed: $elapsed, offset: $offset) 2454 2341 } 2455 - `; 2456 - export type StartPlaylistMutationFn = Apollo.MutationFunction<StartPlaylistMutation, StartPlaylistMutationVariables>; 2342 + `); 2457 2343 2458 - /** 2459 - * __useStartPlaylistMutation__ 2460 - * 2461 - * To run a mutation, you first call `useStartPlaylistMutation` within a React component and pass it any options that fit your needs. 2462 - * When your component renders, `useStartPlaylistMutation` returns a tuple that includes: 2463 - * - A mutate function that you can call at any time to execute the mutation 2464 - * - An object with fields that represent the current status of the mutation's execution 2465 - * 2466 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2467 - * 2468 - * @example 2469 - * const [startPlaylistMutation, { data, loading, error }] = useStartPlaylistMutation({ 2470 - * variables: { 2471 - * startIndex: // value for 'startIndex' 2472 - * elapsed: // value for 'elapsed' 2473 - * offset: // value for 'offset' 2474 - * }, 2475 - * }); 2476 - */ 2477 - export function useStartPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<StartPlaylistMutation, StartPlaylistMutationVariables>) { 2478 - const options = {...defaultOptions, ...baseOptions} 2479 - return Apollo.useMutation<StartPlaylistMutation, StartPlaylistMutationVariables>(StartPlaylistDocument, options); 2480 - } 2481 - export type StartPlaylistMutationHookResult = ReturnType<typeof useStartPlaylistMutation>; 2482 - export type StartPlaylistMutationResult = Apollo.MutationResult<StartPlaylistMutation>; 2483 - export type StartPlaylistMutationOptions = Apollo.BaseMutationOptions<StartPlaylistMutation, StartPlaylistMutationVariables>; 2484 - export const InsertTracksDocument = gql` 2344 + export const useStartPlaylistMutation = < 2345 + TError = unknown, 2346 + TContext = unknown 2347 + >(options?: UseMutationOptions<StartPlaylistMutation, TError, StartPlaylistMutationVariables, TContext>) => { 2348 + 2349 + return useMutation<StartPlaylistMutation, TError, StartPlaylistMutationVariables, TContext>( 2350 + { 2351 + mutationKey: ['StartPlaylist'], 2352 + mutationFn: (variables?: StartPlaylistMutationVariables) => fetchData<StartPlaylistMutation, StartPlaylistMutationVariables>(StartPlaylistDocument, variables)(), 2353 + ...options 2354 + } 2355 + )}; 2356 + 2357 + useStartPlaylistMutation.getKey = () => ['StartPlaylist']; 2358 + 2359 + export const InsertTracksDocument = new TypedDocumentString(` 2485 2360 mutation InsertTracks($playlistId: String, $position: Int!, $tracks: [String!]!) { 2486 2361 insertTracks(playlistId: $playlistId, position: $position, tracks: $tracks) 2487 2362 } 2488 - `; 2489 - export type InsertTracksMutationFn = Apollo.MutationFunction<InsertTracksMutation, InsertTracksMutationVariables>; 2363 + `); 2364 + 2365 + export const useInsertTracksMutation = < 2366 + TError = unknown, 2367 + TContext = unknown 2368 + >(options?: UseMutationOptions<InsertTracksMutation, TError, InsertTracksMutationVariables, TContext>) => { 2369 + 2370 + return useMutation<InsertTracksMutation, TError, InsertTracksMutationVariables, TContext>( 2371 + { 2372 + mutationKey: ['InsertTracks'], 2373 + mutationFn: (variables?: InsertTracksMutationVariables) => fetchData<InsertTracksMutation, InsertTracksMutationVariables>(InsertTracksDocument, variables)(), 2374 + ...options 2375 + } 2376 + )}; 2377 + 2378 + useInsertTracksMutation.getKey = () => ['InsertTracks']; 2490 2379 2491 - /** 2492 - * __useInsertTracksMutation__ 2493 - * 2494 - * To run a mutation, you first call `useInsertTracksMutation` within a React component and pass it any options that fit your needs. 2495 - * When your component renders, `useInsertTracksMutation` returns a tuple that includes: 2496 - * - A mutate function that you can call at any time to execute the mutation 2497 - * - An object with fields that represent the current status of the mutation's execution 2498 - * 2499 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2500 - * 2501 - * @example 2502 - * const [insertTracksMutation, { data, loading, error }] = useInsertTracksMutation({ 2503 - * variables: { 2504 - * playlistId: // value for 'playlistId' 2505 - * position: // value for 'position' 2506 - * tracks: // value for 'tracks' 2507 - * }, 2508 - * }); 2509 - */ 2510 - export function useInsertTracksMutation(baseOptions?: Apollo.MutationHookOptions<InsertTracksMutation, InsertTracksMutationVariables>) { 2511 - const options = {...defaultOptions, ...baseOptions} 2512 - return Apollo.useMutation<InsertTracksMutation, InsertTracksMutationVariables>(InsertTracksDocument, options); 2513 - } 2514 - export type InsertTracksMutationHookResult = ReturnType<typeof useInsertTracksMutation>; 2515 - export type InsertTracksMutationResult = Apollo.MutationResult<InsertTracksMutation>; 2516 - export type InsertTracksMutationOptions = Apollo.BaseMutationOptions<InsertTracksMutation, InsertTracksMutationVariables>; 2517 - export const InsertDirectoryDocument = gql` 2380 + export const InsertDirectoryDocument = new TypedDocumentString(` 2518 2381 mutation InsertDirectory($playlistId: String, $position: Int!, $directory: String!) { 2519 2382 insertDirectory( 2520 2383 playlistId: $playlistId ··· 2522 2385 directory: $directory 2523 2386 ) 2524 2387 } 2525 - `; 2526 - export type InsertDirectoryMutationFn = Apollo.MutationFunction<InsertDirectoryMutation, InsertDirectoryMutationVariables>; 2388 + `); 2389 + 2390 + export const useInsertDirectoryMutation = < 2391 + TError = unknown, 2392 + TContext = unknown 2393 + >(options?: UseMutationOptions<InsertDirectoryMutation, TError, InsertDirectoryMutationVariables, TContext>) => { 2394 + 2395 + return useMutation<InsertDirectoryMutation, TError, InsertDirectoryMutationVariables, TContext>( 2396 + { 2397 + mutationKey: ['InsertDirectory'], 2398 + mutationFn: (variables?: InsertDirectoryMutationVariables) => fetchData<InsertDirectoryMutation, InsertDirectoryMutationVariables>(InsertDirectoryDocument, variables)(), 2399 + ...options 2400 + } 2401 + )}; 2402 + 2403 + useInsertDirectoryMutation.getKey = () => ['InsertDirectory']; 2527 2404 2528 - /** 2529 - * __useInsertDirectoryMutation__ 2530 - * 2531 - * To run a mutation, you first call `useInsertDirectoryMutation` within a React component and pass it any options that fit your needs. 2532 - * When your component renders, `useInsertDirectoryMutation` returns a tuple that includes: 2533 - * - A mutate function that you can call at any time to execute the mutation 2534 - * - An object with fields that represent the current status of the mutation's execution 2535 - * 2536 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2537 - * 2538 - * @example 2539 - * const [insertDirectoryMutation, { data, loading, error }] = useInsertDirectoryMutation({ 2540 - * variables: { 2541 - * playlistId: // value for 'playlistId' 2542 - * position: // value for 'position' 2543 - * directory: // value for 'directory' 2544 - * }, 2545 - * }); 2546 - */ 2547 - export function useInsertDirectoryMutation(baseOptions?: Apollo.MutationHookOptions<InsertDirectoryMutation, InsertDirectoryMutationVariables>) { 2548 - const options = {...defaultOptions, ...baseOptions} 2549 - return Apollo.useMutation<InsertDirectoryMutation, InsertDirectoryMutationVariables>(InsertDirectoryDocument, options); 2550 - } 2551 - export type InsertDirectoryMutationHookResult = ReturnType<typeof useInsertDirectoryMutation>; 2552 - export type InsertDirectoryMutationResult = Apollo.MutationResult<InsertDirectoryMutation>; 2553 - export type InsertDirectoryMutationOptions = Apollo.BaseMutationOptions<InsertDirectoryMutation, InsertDirectoryMutationVariables>; 2554 - export const InsertAlbumDocument = gql` 2405 + export const InsertAlbumDocument = new TypedDocumentString(` 2555 2406 mutation InsertAlbum($albumId: String!, $position: Int!) { 2556 2407 insertAlbum(albumId: $albumId, position: $position) 2557 2408 } 2558 - `; 2559 - export type InsertAlbumMutationFn = Apollo.MutationFunction<InsertAlbumMutation, InsertAlbumMutationVariables>; 2409 + `); 2410 + 2411 + export const useInsertAlbumMutation = < 2412 + TError = unknown, 2413 + TContext = unknown 2414 + >(options?: UseMutationOptions<InsertAlbumMutation, TError, InsertAlbumMutationVariables, TContext>) => { 2415 + 2416 + return useMutation<InsertAlbumMutation, TError, InsertAlbumMutationVariables, TContext>( 2417 + { 2418 + mutationKey: ['InsertAlbum'], 2419 + mutationFn: (variables?: InsertAlbumMutationVariables) => fetchData<InsertAlbumMutation, InsertAlbumMutationVariables>(InsertAlbumDocument, variables)(), 2420 + ...options 2421 + } 2422 + )}; 2423 + 2424 + useInsertAlbumMutation.getKey = () => ['InsertAlbum']; 2425 + 2426 + export const ShufflePlaylistDocument = new TypedDocumentString(` 2427 + mutation ShufflePlaylist { 2428 + shufflePlaylist 2429 + } 2430 + `); 2431 + 2432 + export const useShufflePlaylistMutation = < 2433 + TError = unknown, 2434 + TContext = unknown 2435 + >(options?: UseMutationOptions<ShufflePlaylistMutation, TError, ShufflePlaylistMutationVariables, TContext>) => { 2436 + 2437 + return useMutation<ShufflePlaylistMutation, TError, ShufflePlaylistMutationVariables, TContext>( 2438 + { 2439 + mutationKey: ['ShufflePlaylist'], 2440 + mutationFn: (variables?: ShufflePlaylistMutationVariables) => fetchData<ShufflePlaylistMutation, ShufflePlaylistMutationVariables>(ShufflePlaylistDocument, variables)(), 2441 + ...options 2442 + } 2443 + )}; 2560 2444 2561 - /** 2562 - * __useInsertAlbumMutation__ 2563 - * 2564 - * To run a mutation, you first call `useInsertAlbumMutation` within a React component and pass it any options that fit your needs. 2565 - * When your component renders, `useInsertAlbumMutation` returns a tuple that includes: 2566 - * - A mutate function that you can call at any time to execute the mutation 2567 - * - An object with fields that represent the current status of the mutation's execution 2568 - * 2569 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2570 - * 2571 - * @example 2572 - * const [insertAlbumMutation, { data, loading, error }] = useInsertAlbumMutation({ 2573 - * variables: { 2574 - * albumId: // value for 'albumId' 2575 - * position: // value for 'position' 2576 - * }, 2577 - * }); 2578 - */ 2579 - export function useInsertAlbumMutation(baseOptions?: Apollo.MutationHookOptions<InsertAlbumMutation, InsertAlbumMutationVariables>) { 2580 - const options = {...defaultOptions, ...baseOptions} 2581 - return Apollo.useMutation<InsertAlbumMutation, InsertAlbumMutationVariables>(InsertAlbumDocument, options); 2582 - } 2583 - export type InsertAlbumMutationHookResult = ReturnType<typeof useInsertAlbumMutation>; 2584 - export type InsertAlbumMutationResult = Apollo.MutationResult<InsertAlbumMutation>; 2585 - export type InsertAlbumMutationOptions = Apollo.BaseMutationOptions<InsertAlbumMutation, InsertAlbumMutationVariables>; 2586 - export const GetCurrentPlaylistDocument = gql` 2445 + useShufflePlaylistMutation.getKey = () => ['ShufflePlaylist']; 2446 + 2447 + export const GetCurrentPlaylistDocument = new TypedDocumentString(` 2587 2448 query GetCurrentPlaylist { 2588 2449 playlistGetCurrent { 2589 2450 index ··· 2602 2463 } 2603 2464 } 2604 2465 } 2605 - `; 2466 + `); 2467 + 2468 + export const useGetCurrentPlaylistQuery = < 2469 + TData = GetCurrentPlaylistQuery, 2470 + TError = unknown 2471 + >( 2472 + variables?: GetCurrentPlaylistQueryVariables, 2473 + options?: Omit<UseQueryOptions<GetCurrentPlaylistQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetCurrentPlaylistQuery, TError, TData>['queryKey'] } 2474 + ) => { 2475 + 2476 + return useQuery<GetCurrentPlaylistQuery, TError, TData>( 2477 + { 2478 + queryKey: variables === undefined ? ['GetCurrentPlaylist'] : ['GetCurrentPlaylist', variables], 2479 + queryFn: fetchData<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>(GetCurrentPlaylistDocument, variables), 2480 + ...options 2481 + } 2482 + )}; 2606 2483 2607 - /** 2608 - * __useGetCurrentPlaylistQuery__ 2609 - * 2610 - * To run a query within a React component, call `useGetCurrentPlaylistQuery` and pass it any options that fit your needs. 2611 - * When your component renders, `useGetCurrentPlaylistQuery` returns an object from Apollo Client that contains loading, error, and data properties 2612 - * you can use to render your UI. 2613 - * 2614 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2615 - * 2616 - * @example 2617 - * const { data, loading, error } = useGetCurrentPlaylistQuery({ 2618 - * variables: { 2619 - * }, 2620 - * }); 2621 - */ 2622 - export function useGetCurrentPlaylistQuery(baseOptions?: Apollo.QueryHookOptions<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>) { 2623 - const options = {...defaultOptions, ...baseOptions} 2624 - return Apollo.useQuery<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>(GetCurrentPlaylistDocument, options); 2625 - } 2626 - export function useGetCurrentPlaylistLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>) { 2627 - const options = {...defaultOptions, ...baseOptions} 2628 - return Apollo.useLazyQuery<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>(GetCurrentPlaylistDocument, options); 2629 - } 2630 - export function useGetCurrentPlaylistSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>) { 2631 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2632 - return Apollo.useSuspenseQuery<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>(GetCurrentPlaylistDocument, options); 2633 - } 2634 - export type GetCurrentPlaylistQueryHookResult = ReturnType<typeof useGetCurrentPlaylistQuery>; 2635 - export type GetCurrentPlaylistLazyQueryHookResult = ReturnType<typeof useGetCurrentPlaylistLazyQuery>; 2636 - export type GetCurrentPlaylistSuspenseQueryHookResult = ReturnType<typeof useGetCurrentPlaylistSuspenseQuery>; 2637 - export type GetCurrentPlaylistQueryResult = Apollo.QueryResult<GetCurrentPlaylistQuery, GetCurrentPlaylistQueryVariables>; 2638 - export const PlaylistChangedDocument = gql` 2484 + useGetCurrentPlaylistQuery.document = GetCurrentPlaylistDocument; 2485 + 2486 + useGetCurrentPlaylistQuery.getKey = (variables?: GetCurrentPlaylistQueryVariables) => variables === undefined ? ['GetCurrentPlaylist'] : ['GetCurrentPlaylist', variables]; 2487 + 2488 + export const PlaylistChangedDocument = new TypedDocumentString(` 2639 2489 subscription PlaylistChanged { 2640 2490 playlistChanged { 2641 2491 index ··· 2652 2502 } 2653 2503 } 2654 2504 } 2655 - `; 2656 - 2657 - /** 2658 - * __usePlaylistChangedSubscription__ 2659 - * 2660 - * To run a query within a React component, call `usePlaylistChangedSubscription` and pass it any options that fit your needs. 2661 - * When your component renders, `usePlaylistChangedSubscription` returns an object from Apollo Client that contains loading, error, and data properties 2662 - * you can use to render your UI. 2663 - * 2664 - * @param baseOptions options that will be passed into the subscription, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2665 - * 2666 - * @example 2667 - * const { data, loading, error } = usePlaylistChangedSubscription({ 2668 - * variables: { 2669 - * }, 2670 - * }); 2671 - */ 2672 - export function usePlaylistChangedSubscription(baseOptions?: Apollo.SubscriptionHookOptions<PlaylistChangedSubscription, PlaylistChangedSubscriptionVariables>) { 2673 - const options = {...defaultOptions, ...baseOptions} 2674 - return Apollo.useSubscription<PlaylistChangedSubscription, PlaylistChangedSubscriptionVariables>(PlaylistChangedDocument, options); 2675 - } 2676 - export type PlaylistChangedSubscriptionHookResult = ReturnType<typeof usePlaylistChangedSubscription>; 2677 - export type PlaylistChangedSubscriptionResult = Apollo.SubscriptionResult<PlaylistChangedSubscription>; 2678 - export const SaveSettingsDocument = gql` 2679 - mutation SaveSettings($settings: NewGlobalSettings!) { 2680 - saveSettings(settings: $settings) 2505 + `); 2506 + export const CreateSavedPlaylistDocument = new TypedDocumentString(` 2507 + mutation CreateSavedPlaylist($name: String!, $description: String, $trackIds: [String!]) { 2508 + createSavedPlaylist(name: $name, description: $description, trackIds: $trackIds) { 2509 + id 2510 + name 2511 + description 2512 + trackCount 2513 + } 2681 2514 } 2682 - `; 2683 - export type SaveSettingsMutationFn = Apollo.MutationFunction<SaveSettingsMutation, SaveSettingsMutationVariables>; 2515 + `); 2684 2516 2685 - /** 2686 - * __useSaveSettingsMutation__ 2687 - * 2688 - * To run a mutation, you first call `useSaveSettingsMutation` within a React component and pass it any options that fit your needs. 2689 - * When your component renders, `useSaveSettingsMutation` returns a tuple that includes: 2690 - * - A mutate function that you can call at any time to execute the mutation 2691 - * - An object with fields that represent the current status of the mutation's execution 2692 - * 2693 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2694 - * 2695 - * @example 2696 - * const [saveSettingsMutation, { data, loading, error }] = useSaveSettingsMutation({ 2697 - * variables: { 2698 - * settings: // value for 'settings' 2699 - * }, 2700 - * }); 2701 - */ 2702 - export function useSaveSettingsMutation(baseOptions?: Apollo.MutationHookOptions<SaveSettingsMutation, SaveSettingsMutationVariables>) { 2703 - const options = {...defaultOptions, ...baseOptions} 2704 - return Apollo.useMutation<SaveSettingsMutation, SaveSettingsMutationVariables>(SaveSettingsDocument, options); 2705 - } 2706 - export type SaveSettingsMutationHookResult = ReturnType<typeof useSaveSettingsMutation>; 2707 - export type SaveSettingsMutationResult = Apollo.MutationResult<SaveSettingsMutation>; 2708 - export type SaveSettingsMutationOptions = Apollo.BaseMutationOptions<SaveSettingsMutation, SaveSettingsMutationVariables>; 2709 - export const GetGlobalSettingsDocument = gql` 2710 - query GetGlobalSettings { 2711 - globalSettings { 2712 - musicDir 2713 - volume 2714 - playlistShuffle 2715 - repeatMode 2716 - bass 2717 - bassCutoff 2718 - treble 2719 - trebleCutoff 2720 - crossfade 2721 - fadeOnStop 2722 - crossfadeFadeInDelay 2723 - crossfadeFadeInDuration 2724 - crossfadeFadeOutDelay 2725 - crossfadeFadeOutDuration 2726 - crossfadeFadeOutMixmode 2727 - balance 2728 - stereoWidth 2729 - stereoswMode 2730 - surroundEnabled 2731 - surroundBalance 2732 - surroundFx1 2733 - surroundFx2 2734 - partyMode 2735 - ditheringEnabled 2736 - channelConfig 2737 - playerName 2738 - eqEnabled 2739 - eqBandSettings { 2740 - q 2741 - cutoff 2742 - gain 2743 - } 2744 - replaygainSettings { 2745 - noclip 2746 - type 2747 - preamp 2748 - } 2517 + export const useCreateSavedPlaylistMutation = < 2518 + TError = unknown, 2519 + TContext = unknown 2520 + >(options?: UseMutationOptions<CreateSavedPlaylistMutation, TError, CreateSavedPlaylistMutationVariables, TContext>) => { 2521 + 2522 + return useMutation<CreateSavedPlaylistMutation, TError, CreateSavedPlaylistMutationVariables, TContext>( 2523 + { 2524 + mutationKey: ['CreateSavedPlaylist'], 2525 + mutationFn: (variables?: CreateSavedPlaylistMutationVariables) => fetchData<CreateSavedPlaylistMutation, CreateSavedPlaylistMutationVariables>(CreateSavedPlaylistDocument, variables)(), 2526 + ...options 2749 2527 } 2750 - } 2751 - `; 2528 + )}; 2752 2529 2753 - /** 2754 - * __useGetGlobalSettingsQuery__ 2755 - * 2756 - * To run a query within a React component, call `useGetGlobalSettingsQuery` and pass it any options that fit your needs. 2757 - * When your component renders, `useGetGlobalSettingsQuery` returns an object from Apollo Client that contains loading, error, and data properties 2758 - * you can use to render your UI. 2759 - * 2760 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2761 - * 2762 - * @example 2763 - * const { data, loading, error } = useGetGlobalSettingsQuery({ 2764 - * variables: { 2765 - * }, 2766 - * }); 2767 - */ 2768 - export function useGetGlobalSettingsQuery(baseOptions?: Apollo.QueryHookOptions<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>) { 2769 - const options = {...defaultOptions, ...baseOptions} 2770 - return Apollo.useQuery<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>(GetGlobalSettingsDocument, options); 2771 - } 2772 - export function useGetGlobalSettingsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>) { 2773 - const options = {...defaultOptions, ...baseOptions} 2774 - return Apollo.useLazyQuery<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>(GetGlobalSettingsDocument, options); 2775 - } 2776 - export function useGetGlobalSettingsSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>) { 2777 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2778 - return Apollo.useSuspenseQuery<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>(GetGlobalSettingsDocument, options); 2779 - } 2780 - export type GetGlobalSettingsQueryHookResult = ReturnType<typeof useGetGlobalSettingsQuery>; 2781 - export type GetGlobalSettingsLazyQueryHookResult = ReturnType<typeof useGetGlobalSettingsLazyQuery>; 2782 - export type GetGlobalSettingsSuspenseQueryHookResult = ReturnType<typeof useGetGlobalSettingsSuspenseQuery>; 2783 - export type GetGlobalSettingsQueryResult = Apollo.QueryResult<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>; 2784 - export const AdjustVolumeDocument = gql` 2785 - mutation AdjustVolume($steps: Int!) { 2786 - adjustVolume(steps: $steps) 2530 + useCreateSavedPlaylistMutation.getKey = () => ['CreateSavedPlaylist']; 2531 + 2532 + export const UpdateSavedPlaylistDocument = new TypedDocumentString(` 2533 + mutation UpdateSavedPlaylist($id: String!, $name: String!, $description: String) { 2534 + updateSavedPlaylist(id: $id, name: $name, description: $description) 2787 2535 } 2788 - `; 2789 - export type AdjustVolumeMutationFn = Apollo.MutationFunction<AdjustVolumeMutation, AdjustVolumeMutationVariables>; 2536 + `); 2790 2537 2791 - /** 2792 - * __useAdjustVolumeMutation__ 2793 - * 2794 - * To run a mutation, you first call `useAdjustVolumeMutation` within a React component and pass it any options that fit your needs. 2795 - * When your component renders, `useAdjustVolumeMutation` returns a tuple that includes: 2796 - * - A mutate function that you can call at any time to execute the mutation 2797 - * - An object with fields that represent the current status of the mutation's execution 2798 - * 2799 - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; 2800 - * 2801 - * @example 2802 - * const [adjustVolumeMutation, { data, loading, error }] = useAdjustVolumeMutation({ 2803 - * variables: { 2804 - * steps: // value for 'steps' 2805 - * }, 2806 - * }); 2807 - */ 2808 - export function useAdjustVolumeMutation(baseOptions?: Apollo.MutationHookOptions<AdjustVolumeMutation, AdjustVolumeMutationVariables>) { 2809 - const options = {...defaultOptions, ...baseOptions} 2810 - return Apollo.useMutation<AdjustVolumeMutation, AdjustVolumeMutationVariables>(AdjustVolumeDocument, options); 2811 - } 2812 - export type AdjustVolumeMutationHookResult = ReturnType<typeof useAdjustVolumeMutation>; 2813 - export type AdjustVolumeMutationResult = Apollo.MutationResult<AdjustVolumeMutation>; 2814 - export type AdjustVolumeMutationOptions = Apollo.BaseMutationOptions<AdjustVolumeMutation, AdjustVolumeMutationVariables>; 2815 - export const GetRockboxVersionDocument = gql` 2816 - query GetRockboxVersion { 2817 - rockboxVersion 2538 + export const useUpdateSavedPlaylistMutation = < 2539 + TError = unknown, 2540 + TContext = unknown 2541 + >(options?: UseMutationOptions<UpdateSavedPlaylistMutation, TError, UpdateSavedPlaylistMutationVariables, TContext>) => { 2542 + 2543 + return useMutation<UpdateSavedPlaylistMutation, TError, UpdateSavedPlaylistMutationVariables, TContext>( 2544 + { 2545 + mutationKey: ['UpdateSavedPlaylist'], 2546 + mutationFn: (variables?: UpdateSavedPlaylistMutationVariables) => fetchData<UpdateSavedPlaylistMutation, UpdateSavedPlaylistMutationVariables>(UpdateSavedPlaylistDocument, variables)(), 2547 + ...options 2548 + } 2549 + )}; 2550 + 2551 + useUpdateSavedPlaylistMutation.getKey = () => ['UpdateSavedPlaylist']; 2552 + 2553 + export const DeleteSavedPlaylistDocument = new TypedDocumentString(` 2554 + mutation DeleteSavedPlaylist($id: String!) { 2555 + deleteSavedPlaylist(id: $id) 2818 2556 } 2819 - `; 2557 + `); 2820 2558 2821 - /** 2822 - * __useGetRockboxVersionQuery__ 2823 - * 2824 - * To run a query within a React component, call `useGetRockboxVersionQuery` and pass it any options that fit your needs. 2825 - * When your component renders, `useGetRockboxVersionQuery` returns an object from Apollo Client that contains loading, error, and data properties 2826 - * you can use to render your UI. 2827 - * 2828 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2829 - * 2830 - * @example 2831 - * const { data, loading, error } = useGetRockboxVersionQuery({ 2832 - * variables: { 2833 - * }, 2834 - * }); 2835 - */ 2836 - export function useGetRockboxVersionQuery(baseOptions?: Apollo.QueryHookOptions<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>) { 2837 - const options = {...defaultOptions, ...baseOptions} 2838 - return Apollo.useQuery<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>(GetRockboxVersionDocument, options); 2839 - } 2840 - export function useGetRockboxVersionLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>) { 2841 - const options = {...defaultOptions, ...baseOptions} 2842 - return Apollo.useLazyQuery<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>(GetRockboxVersionDocument, options); 2843 - } 2844 - export function useGetRockboxVersionSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>) { 2845 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2846 - return Apollo.useSuspenseQuery<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>(GetRockboxVersionDocument, options); 2847 - } 2848 - export type GetRockboxVersionQueryHookResult = ReturnType<typeof useGetRockboxVersionQuery>; 2849 - export type GetRockboxVersionLazyQueryHookResult = ReturnType<typeof useGetRockboxVersionLazyQuery>; 2850 - export type GetRockboxVersionSuspenseQueryHookResult = ReturnType<typeof useGetRockboxVersionSuspenseQuery>; 2851 - export type GetRockboxVersionQueryResult = Apollo.QueryResult<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>; 2852 - export const GetGlobalStatusDocument = gql` 2853 - query GetGlobalStatus { 2854 - globalStatus { 2855 - resumeIndex 2856 - resumeCrc32 2857 - resumeOffset 2858 - resumeElapsed 2559 + export const useDeleteSavedPlaylistMutation = < 2560 + TError = unknown, 2561 + TContext = unknown 2562 + >(options?: UseMutationOptions<DeleteSavedPlaylistMutation, TError, DeleteSavedPlaylistMutationVariables, TContext>) => { 2563 + 2564 + return useMutation<DeleteSavedPlaylistMutation, TError, DeleteSavedPlaylistMutationVariables, TContext>( 2565 + { 2566 + mutationKey: ['DeleteSavedPlaylist'], 2567 + mutationFn: (variables?: DeleteSavedPlaylistMutationVariables) => fetchData<DeleteSavedPlaylistMutation, DeleteSavedPlaylistMutationVariables>(DeleteSavedPlaylistDocument, variables)(), 2568 + ...options 2859 2569 } 2570 + )}; 2571 + 2572 + useDeleteSavedPlaylistMutation.getKey = () => ['DeleteSavedPlaylist']; 2573 + 2574 + export const AddTracksToSavedPlaylistDocument = new TypedDocumentString(` 2575 + mutation AddTracksToSavedPlaylist($playlistId: String!, $trackIds: [String!]!) { 2576 + addTracksToSavedPlaylist(playlistId: $playlistId, trackIds: $trackIds) 2860 2577 } 2861 - `; 2578 + `); 2862 2579 2863 - /** 2864 - * __useGetGlobalStatusQuery__ 2865 - * 2866 - * To run a query within a React component, call `useGetGlobalStatusQuery` and pass it any options that fit your needs. 2867 - * When your component renders, `useGetGlobalStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties 2868 - * you can use to render your UI. 2869 - * 2870 - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; 2871 - * 2872 - * @example 2873 - * const { data, loading, error } = useGetGlobalStatusQuery({ 2874 - * variables: { 2875 - * }, 2876 - * }); 2877 - */ 2878 - export function useGetGlobalStatusQuery(baseOptions?: Apollo.QueryHookOptions<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>) { 2879 - const options = {...defaultOptions, ...baseOptions} 2880 - return Apollo.useQuery<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>(GetGlobalStatusDocument, options); 2881 - } 2882 - export function useGetGlobalStatusLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>) { 2883 - const options = {...defaultOptions, ...baseOptions} 2884 - return Apollo.useLazyQuery<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>(GetGlobalStatusDocument, options); 2885 - } 2886 - export function useGetGlobalStatusSuspenseQuery(baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>) { 2887 - const options = baseOptions === Apollo.skipToken ? baseOptions : {...defaultOptions, ...baseOptions} 2888 - return Apollo.useSuspenseQuery<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>(GetGlobalStatusDocument, options); 2889 - } 2890 - export type GetGlobalStatusQueryHookResult = ReturnType<typeof useGetGlobalStatusQuery>; 2891 - export type GetGlobalStatusLazyQueryHookResult = ReturnType<typeof useGetGlobalStatusLazyQuery>; 2892 - export type GetGlobalStatusSuspenseQueryHookResult = ReturnType<typeof useGetGlobalStatusSuspenseQuery>; 2893 - export type GetGlobalStatusQueryResult = Apollo.QueryResult<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>; 2580 + export const useAddTracksToSavedPlaylistMutation = < 2581 + TError = unknown, 2582 + TContext = unknown 2583 + >(options?: UseMutationOptions<AddTracksToSavedPlaylistMutation, TError, AddTracksToSavedPlaylistMutationVariables, TContext>) => { 2584 + 2585 + return useMutation<AddTracksToSavedPlaylistMutation, TError, AddTracksToSavedPlaylistMutationVariables, TContext>( 2586 + { 2587 + mutationKey: ['AddTracksToSavedPlaylist'], 2588 + mutationFn: (variables?: AddTracksToSavedPlaylistMutationVariables) => fetchData<AddTracksToSavedPlaylistMutation, AddTracksToSavedPlaylistMutationVariables>(AddTracksToSavedPlaylistDocument, variables)(), 2589 + ...options 2590 + } 2591 + )}; 2894 2592 2895 - // ── SavedPlaylist types ────────────────────────────────────────────────────── 2593 + useAddTracksToSavedPlaylistMutation.getKey = () => ['AddTracksToSavedPlaylist']; 2896 2594 2897 - export type SavedPlaylist = { 2898 - __typename?: 'SavedPlaylist'; 2899 - id: string; 2900 - name: string; 2901 - description?: string | null; 2902 - image?: string | null; 2903 - trackCount: number; 2904 - createdAt: number; 2905 - updatedAt: number; 2906 - }; 2595 + export const RemoveTrackFromSavedPlaylistDocument = new TypedDocumentString(` 2596 + mutation RemoveTrackFromSavedPlaylist($playlistId: String!, $trackId: String!) { 2597 + removeTrackFromSavedPlaylist(playlistId: $playlistId, trackId: $trackId) 2598 + } 2599 + `); 2907 2600 2908 - export type SmartPlaylist = { 2909 - __typename?: 'SmartPlaylist'; 2910 - id: string; 2911 - name: string; 2912 - description?: string | null; 2913 - image?: string | null; 2914 - isSystem: boolean; 2915 - createdAt: number; 2916 - updatedAt: number; 2917 - }; 2601 + export const useRemoveTrackFromSavedPlaylistMutation = < 2602 + TError = unknown, 2603 + TContext = unknown 2604 + >(options?: UseMutationOptions<RemoveTrackFromSavedPlaylistMutation, TError, RemoveTrackFromSavedPlaylistMutationVariables, TContext>) => { 2605 + 2606 + return useMutation<RemoveTrackFromSavedPlaylistMutation, TError, RemoveTrackFromSavedPlaylistMutationVariables, TContext>( 2607 + { 2608 + mutationKey: ['RemoveTrackFromSavedPlaylist'], 2609 + mutationFn: (variables?: RemoveTrackFromSavedPlaylistMutationVariables) => fetchData<RemoveTrackFromSavedPlaylistMutation, RemoveTrackFromSavedPlaylistMutationVariables>(RemoveTrackFromSavedPlaylistDocument, variables)(), 2610 + ...options 2611 + } 2612 + )}; 2918 2613 2919 - // ── Saved Playlist Queries ─────────────────────────────────────────────────── 2614 + useRemoveTrackFromSavedPlaylistMutation.getKey = () => ['RemoveTrackFromSavedPlaylist']; 2615 + 2616 + export const PlaySavedPlaylistDocument = new TypedDocumentString(` 2617 + mutation PlaySavedPlaylist($playlistId: String!) { 2618 + playSavedPlaylist(playlistId: $playlistId) 2619 + } 2620 + `); 2920 2621 2921 - export type GetSavedPlaylistsQueryVariables = Exact<{ [key: string]: never; }>; 2922 - export type GetSavedPlaylistsQuery = { __typename?: 'Query', savedPlaylists: Array<{ __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, image?: string | null, trackCount: number, createdAt: number, updatedAt: number }> }; 2622 + export const usePlaySavedPlaylistMutation = < 2623 + TError = unknown, 2624 + TContext = unknown 2625 + >(options?: UseMutationOptions<PlaySavedPlaylistMutation, TError, PlaySavedPlaylistMutationVariables, TContext>) => { 2626 + 2627 + return useMutation<PlaySavedPlaylistMutation, TError, PlaySavedPlaylistMutationVariables, TContext>( 2628 + { 2629 + mutationKey: ['PlaySavedPlaylist'], 2630 + mutationFn: (variables?: PlaySavedPlaylistMutationVariables) => fetchData<PlaySavedPlaylistMutation, PlaySavedPlaylistMutationVariables>(PlaySavedPlaylistDocument, variables)(), 2631 + ...options 2632 + } 2633 + )}; 2923 2634 2924 - export const GetSavedPlaylistsDocument = gql` 2635 + usePlaySavedPlaylistMutation.getKey = () => ['PlaySavedPlaylist']; 2636 + 2637 + export const GetSavedPlaylistsDocument = new TypedDocumentString(` 2925 2638 query GetSavedPlaylists { 2926 2639 savedPlaylists { 2927 2640 id ··· 2933 2646 updatedAt 2934 2647 } 2935 2648 } 2936 - `; 2937 - export function useGetSavedPlaylistsQuery(baseOptions?: Apollo.QueryHookOptions<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>) { 2938 - const options = {...defaultOptions, ...baseOptions} 2939 - return Apollo.useQuery<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>(GetSavedPlaylistsDocument, options); 2940 - } 2941 - export function useGetSavedPlaylistsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>) { 2942 - const options = {...defaultOptions, ...baseOptions} 2943 - return Apollo.useLazyQuery<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>(GetSavedPlaylistsDocument, options); 2944 - } 2945 - export type GetSavedPlaylistsQueryResult = Apollo.QueryResult<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>; 2649 + `); 2650 + 2651 + export const useGetSavedPlaylistsQuery = < 2652 + TData = GetSavedPlaylistsQuery, 2653 + TError = unknown 2654 + >( 2655 + variables?: GetSavedPlaylistsQueryVariables, 2656 + options?: Omit<UseQueryOptions<GetSavedPlaylistsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSavedPlaylistsQuery, TError, TData>['queryKey'] } 2657 + ) => { 2658 + 2659 + return useQuery<GetSavedPlaylistsQuery, TError, TData>( 2660 + { 2661 + queryKey: variables === undefined ? ['GetSavedPlaylists'] : ['GetSavedPlaylists', variables], 2662 + queryFn: fetchData<GetSavedPlaylistsQuery, GetSavedPlaylistsQueryVariables>(GetSavedPlaylistsDocument, variables), 2663 + ...options 2664 + } 2665 + )}; 2666 + 2667 + useGetSavedPlaylistsQuery.document = GetSavedPlaylistsDocument; 2946 2668 2947 - export type GetSavedPlaylistQueryVariables = Exact<{ id: string; }>; 2948 - export type GetSavedPlaylistQuery = { __typename?: 'Query', savedPlaylist?: { __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, image?: string | null, trackCount: number, createdAt: number, updatedAt: number } | null }; 2669 + useGetSavedPlaylistsQuery.getKey = (variables?: GetSavedPlaylistsQueryVariables) => variables === undefined ? ['GetSavedPlaylists'] : ['GetSavedPlaylists', variables]; 2949 2670 2950 - export const GetSavedPlaylistDocument = gql` 2671 + export const GetSavedPlaylistDocument = new TypedDocumentString(` 2951 2672 query GetSavedPlaylist($id: String!) { 2952 2673 savedPlaylist(id: $id) { 2953 2674 id ··· 2959 2680 updatedAt 2960 2681 } 2961 2682 } 2962 - `; 2963 - export function useGetSavedPlaylistQuery(baseOptions: Apollo.QueryHookOptions<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables> & ({ variables: GetSavedPlaylistQueryVariables; skip?: boolean; } | { skip: boolean; })) { 2964 - const options = {...defaultOptions, ...baseOptions} 2965 - return Apollo.useQuery<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables>(GetSavedPlaylistDocument, options); 2966 - } 2967 - export function useGetSavedPlaylistLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables>) { 2968 - const options = {...defaultOptions, ...baseOptions} 2969 - return Apollo.useLazyQuery<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables>(GetSavedPlaylistDocument, options); 2970 - } 2971 - export type GetSavedPlaylistQueryResult = Apollo.QueryResult<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables>; 2683 + `); 2684 + 2685 + export const useGetSavedPlaylistQuery = < 2686 + TData = GetSavedPlaylistQuery, 2687 + TError = unknown 2688 + >( 2689 + variables: GetSavedPlaylistQueryVariables, 2690 + options?: Omit<UseQueryOptions<GetSavedPlaylistQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSavedPlaylistQuery, TError, TData>['queryKey'] } 2691 + ) => { 2692 + 2693 + return useQuery<GetSavedPlaylistQuery, TError, TData>( 2694 + { 2695 + queryKey: ['GetSavedPlaylist', variables], 2696 + queryFn: fetchData<GetSavedPlaylistQuery, GetSavedPlaylistQueryVariables>(GetSavedPlaylistDocument, variables), 2697 + ...options 2698 + } 2699 + )}; 2972 2700 2973 - export type GetSavedPlaylistTracksQueryVariables = Exact<{ playlistId: string; }>; 2974 - export type GetSavedPlaylistTracksQuery = { __typename?: 'Query', savedPlaylistTracks: Array<{ __typename?: 'Track', id?: string | null, title: string, artist: string, album: string, albumArt?: string | null, artistId?: string | null, albumId?: string | null, path: string, length: number, tracknum: number }> }; 2701 + useGetSavedPlaylistQuery.document = GetSavedPlaylistDocument; 2975 2702 2976 - export const GetSavedPlaylistTracksDocument = gql` 2703 + useGetSavedPlaylistQuery.getKey = (variables: GetSavedPlaylistQueryVariables) => ['GetSavedPlaylist', variables]; 2704 + 2705 + export const GetSavedPlaylistTracksDocument = new TypedDocumentString(` 2977 2706 query GetSavedPlaylistTracks($playlistId: String!) { 2978 2707 savedPlaylistTracks(playlistId: $playlistId) { 2979 2708 id ··· 2988 2717 tracknum 2989 2718 } 2990 2719 } 2991 - `; 2992 - export function useGetSavedPlaylistTracksQuery(baseOptions: Apollo.QueryHookOptions<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables> & ({ variables: GetSavedPlaylistTracksQueryVariables; skip?: boolean; } | { skip: boolean; })) { 2993 - const options = {...defaultOptions, ...baseOptions} 2994 - return Apollo.useQuery<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables>(GetSavedPlaylistTracksDocument, options); 2995 - } 2996 - export function useGetSavedPlaylistTracksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables>) { 2997 - const options = {...defaultOptions, ...baseOptions} 2998 - return Apollo.useLazyQuery<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables>(GetSavedPlaylistTracksDocument, options); 2999 - } 3000 - export type GetSavedPlaylistTracksQueryResult = Apollo.QueryResult<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables>; 2720 + `); 2721 + 2722 + export const useGetSavedPlaylistTracksQuery = < 2723 + TData = GetSavedPlaylistTracksQuery, 2724 + TError = unknown 2725 + >( 2726 + variables: GetSavedPlaylistTracksQueryVariables, 2727 + options?: Omit<UseQueryOptions<GetSavedPlaylistTracksQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSavedPlaylistTracksQuery, TError, TData>['queryKey'] } 2728 + ) => { 2729 + 2730 + return useQuery<GetSavedPlaylistTracksQuery, TError, TData>( 2731 + { 2732 + queryKey: ['GetSavedPlaylistTracks', variables], 2733 + queryFn: fetchData<GetSavedPlaylistTracksQuery, GetSavedPlaylistTracksQueryVariables>(GetSavedPlaylistTracksDocument, variables), 2734 + ...options 2735 + } 2736 + )}; 3001 2737 3002 - // ── Smart Playlist Queries ─────────────────────────────────────────────────── 2738 + useGetSavedPlaylistTracksQuery.document = GetSavedPlaylistTracksDocument; 3003 2739 3004 - export type GetSmartPlaylistsQueryVariables = Exact<{ [key: string]: never; }>; 3005 - export type GetSmartPlaylistsQuery = { __typename?: 'Query', smartPlaylists: Array<{ __typename?: 'SmartPlaylist', id: string, name: string, description?: string | null, image?: string | null, isSystem: boolean, createdAt: number, updatedAt: number }> }; 2740 + useGetSavedPlaylistTracksQuery.getKey = (variables: GetSavedPlaylistTracksQueryVariables) => ['GetSavedPlaylistTracks', variables]; 2741 + 2742 + export const SaveSettingsDocument = new TypedDocumentString(` 2743 + mutation SaveSettings($settings: NewGlobalSettings!) { 2744 + saveSettings(settings: $settings) 2745 + } 2746 + `); 2747 + 2748 + export const useSaveSettingsMutation = < 2749 + TError = unknown, 2750 + TContext = unknown 2751 + >(options?: UseMutationOptions<SaveSettingsMutation, TError, SaveSettingsMutationVariables, TContext>) => { 2752 + 2753 + return useMutation<SaveSettingsMutation, TError, SaveSettingsMutationVariables, TContext>( 2754 + { 2755 + mutationKey: ['SaveSettings'], 2756 + mutationFn: (variables?: SaveSettingsMutationVariables) => fetchData<SaveSettingsMutation, SaveSettingsMutationVariables>(SaveSettingsDocument, variables)(), 2757 + ...options 2758 + } 2759 + )}; 2760 + 2761 + useSaveSettingsMutation.getKey = () => ['SaveSettings']; 2762 + 2763 + export const GetGlobalSettingsDocument = new TypedDocumentString(` 2764 + query GetGlobalSettings { 2765 + globalSettings { 2766 + musicDir 2767 + volume 2768 + playlistShuffle 2769 + repeatMode 2770 + bass 2771 + bassCutoff 2772 + treble 2773 + trebleCutoff 2774 + crossfade 2775 + fadeOnStop 2776 + crossfadeFadeInDelay 2777 + crossfadeFadeInDuration 2778 + crossfadeFadeOutDelay 2779 + crossfadeFadeOutDuration 2780 + crossfadeFadeOutMixmode 2781 + balance 2782 + stereoWidth 2783 + stereoswMode 2784 + surroundEnabled 2785 + surroundBalance 2786 + surroundFx1 2787 + surroundFx2 2788 + partyMode 2789 + ditheringEnabled 2790 + channelConfig 2791 + playerName 2792 + eqEnabled 2793 + eqBandSettings { 2794 + q 2795 + cutoff 2796 + gain 2797 + } 2798 + replaygainSettings { 2799 + noclip 2800 + type 2801 + preamp 2802 + } 2803 + } 2804 + } 2805 + `); 3006 2806 3007 - export const GetSmartPlaylistsDocument = gql` 2807 + export const useGetGlobalSettingsQuery = < 2808 + TData = GetGlobalSettingsQuery, 2809 + TError = unknown 2810 + >( 2811 + variables?: GetGlobalSettingsQueryVariables, 2812 + options?: Omit<UseQueryOptions<GetGlobalSettingsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetGlobalSettingsQuery, TError, TData>['queryKey'] } 2813 + ) => { 2814 + 2815 + return useQuery<GetGlobalSettingsQuery, TError, TData>( 2816 + { 2817 + queryKey: variables === undefined ? ['GetGlobalSettings'] : ['GetGlobalSettings', variables], 2818 + queryFn: fetchData<GetGlobalSettingsQuery, GetGlobalSettingsQueryVariables>(GetGlobalSettingsDocument, variables), 2819 + ...options 2820 + } 2821 + )}; 2822 + 2823 + useGetGlobalSettingsQuery.document = GetGlobalSettingsDocument; 2824 + 2825 + useGetGlobalSettingsQuery.getKey = (variables?: GetGlobalSettingsQueryVariables) => variables === undefined ? ['GetGlobalSettings'] : ['GetGlobalSettings', variables]; 2826 + 2827 + export const PlaySmartPlaylistDocument = new TypedDocumentString(` 2828 + mutation PlaySmartPlaylist($id: String!) { 2829 + playSmartPlaylist(id: $id) 2830 + } 2831 + `); 2832 + 2833 + export const usePlaySmartPlaylistMutation = < 2834 + TError = unknown, 2835 + TContext = unknown 2836 + >(options?: UseMutationOptions<PlaySmartPlaylistMutation, TError, PlaySmartPlaylistMutationVariables, TContext>) => { 2837 + 2838 + return useMutation<PlaySmartPlaylistMutation, TError, PlaySmartPlaylistMutationVariables, TContext>( 2839 + { 2840 + mutationKey: ['PlaySmartPlaylist'], 2841 + mutationFn: (variables?: PlaySmartPlaylistMutationVariables) => fetchData<PlaySmartPlaylistMutation, PlaySmartPlaylistMutationVariables>(PlaySmartPlaylistDocument, variables)(), 2842 + ...options 2843 + } 2844 + )}; 2845 + 2846 + usePlaySmartPlaylistMutation.getKey = () => ['PlaySmartPlaylist']; 2847 + 2848 + export const GetSmartPlaylistsDocument = new TypedDocumentString(` 3008 2849 query GetSmartPlaylists { 3009 2850 smartPlaylists { 3010 2851 id ··· 3016 2857 updatedAt 3017 2858 } 3018 2859 } 3019 - `; 3020 - export function useGetSmartPlaylistsQuery(baseOptions?: Apollo.QueryHookOptions<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>) { 3021 - const options = {...defaultOptions, ...baseOptions} 3022 - return Apollo.useQuery<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>(GetSmartPlaylistsDocument, options); 3023 - } 3024 - export function useGetSmartPlaylistsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>) { 3025 - const options = {...defaultOptions, ...baseOptions} 3026 - return Apollo.useLazyQuery<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>(GetSmartPlaylistsDocument, options); 3027 - } 3028 - export type GetSmartPlaylistsQueryResult = Apollo.QueryResult<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>; 2860 + `); 2861 + 2862 + export const useGetSmartPlaylistsQuery = < 2863 + TData = GetSmartPlaylistsQuery, 2864 + TError = unknown 2865 + >( 2866 + variables?: GetSmartPlaylistsQueryVariables, 2867 + options?: Omit<UseQueryOptions<GetSmartPlaylistsQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSmartPlaylistsQuery, TError, TData>['queryKey'] } 2868 + ) => { 2869 + 2870 + return useQuery<GetSmartPlaylistsQuery, TError, TData>( 2871 + { 2872 + queryKey: variables === undefined ? ['GetSmartPlaylists'] : ['GetSmartPlaylists', variables], 2873 + queryFn: fetchData<GetSmartPlaylistsQuery, GetSmartPlaylistsQueryVariables>(GetSmartPlaylistsDocument, variables), 2874 + ...options 2875 + } 2876 + )}; 2877 + 2878 + useGetSmartPlaylistsQuery.document = GetSmartPlaylistsDocument; 3029 2879 3030 - export type GetSmartPlaylistQueryVariables = Exact<{ id: string; }>; 3031 - export type GetSmartPlaylistQuery = { __typename?: 'Query', smartPlaylist?: { __typename?: 'SmartPlaylist', id: string, name: string, description?: string | null, image?: string | null, isSystem: boolean, createdAt: number, updatedAt: number } | null }; 2880 + useGetSmartPlaylistsQuery.getKey = (variables?: GetSmartPlaylistsQueryVariables) => variables === undefined ? ['GetSmartPlaylists'] : ['GetSmartPlaylists', variables]; 3032 2881 3033 - export const GetSmartPlaylistDocument = gql` 2882 + export const GetSmartPlaylistDocument = new TypedDocumentString(` 3034 2883 query GetSmartPlaylist($id: String!) { 3035 2884 smartPlaylist(id: $id) { 3036 2885 id ··· 3042 2891 updatedAt 3043 2892 } 3044 2893 } 3045 - `; 3046 - export function useGetSmartPlaylistQuery(baseOptions: Apollo.QueryHookOptions<GetSmartPlaylistQuery, GetSmartPlaylistQueryVariables> & ({ variables: GetSmartPlaylistQueryVariables; skip?: boolean; } | { skip: boolean; })) { 3047 - const options = {...defaultOptions, ...baseOptions} 3048 - return Apollo.useQuery<GetSmartPlaylistQuery, GetSmartPlaylistQueryVariables>(GetSmartPlaylistDocument, options); 3049 - } 3050 - export type GetSmartPlaylistQueryResult = Apollo.QueryResult<GetSmartPlaylistQuery, GetSmartPlaylistQueryVariables>; 2894 + `); 2895 + 2896 + export const useGetSmartPlaylistQuery = < 2897 + TData = GetSmartPlaylistQuery, 2898 + TError = unknown 2899 + >( 2900 + variables: GetSmartPlaylistQueryVariables, 2901 + options?: Omit<UseQueryOptions<GetSmartPlaylistQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSmartPlaylistQuery, TError, TData>['queryKey'] } 2902 + ) => { 2903 + 2904 + return useQuery<GetSmartPlaylistQuery, TError, TData>( 2905 + { 2906 + queryKey: ['GetSmartPlaylist', variables], 2907 + queryFn: fetchData<GetSmartPlaylistQuery, GetSmartPlaylistQueryVariables>(GetSmartPlaylistDocument, variables), 2908 + ...options 2909 + } 2910 + )}; 3051 2911 3052 - export type GetSmartPlaylistTracksQueryVariables = Exact<{ id: string; }>; 3053 - export type GetSmartPlaylistTracksQuery = { __typename?: 'Query', smartPlaylistTracks: Array<{ __typename?: 'Track', id?: string | null, title: string, artist: string, album: string, albumArt?: string | null, artistId?: string | null, albumId?: string | null, path: string, length: number, tracknum: number }> }; 2912 + useGetSmartPlaylistQuery.document = GetSmartPlaylistDocument; 2913 + 2914 + useGetSmartPlaylistQuery.getKey = (variables: GetSmartPlaylistQueryVariables) => ['GetSmartPlaylist', variables]; 3054 2915 3055 - export const GetSmartPlaylistTracksDocument = gql` 2916 + export const GetSmartPlaylistTracksDocument = new TypedDocumentString(` 3056 2917 query GetSmartPlaylistTracks($id: String!) { 3057 2918 smartPlaylistTracks(id: $id) { 3058 2919 id ··· 3067 2928 tracknum 3068 2929 } 3069 2930 } 3070 - `; 3071 - export function useGetSmartPlaylistTracksQuery(baseOptions: Apollo.QueryHookOptions<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables> & ({ variables: GetSmartPlaylistTracksQueryVariables; skip?: boolean; } | { skip: boolean; })) { 3072 - const options = {...defaultOptions, ...baseOptions} 3073 - return Apollo.useQuery<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables>(GetSmartPlaylistTracksDocument, options); 3074 - } 3075 - export function useGetSmartPlaylistTracksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables>) { 3076 - const options = {...defaultOptions, ...baseOptions} 3077 - return Apollo.useLazyQuery<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables>(GetSmartPlaylistTracksDocument, options); 3078 - } 3079 - export type GetSmartPlaylistTracksQueryResult = Apollo.QueryResult<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables>; 2931 + `); 3080 2932 3081 - // ── Saved Playlist Mutations ───────────────────────────────────────────────── 2933 + export const useGetSmartPlaylistTracksQuery = < 2934 + TData = GetSmartPlaylistTracksQuery, 2935 + TError = unknown 2936 + >( 2937 + variables: GetSmartPlaylistTracksQueryVariables, 2938 + options?: Omit<UseQueryOptions<GetSmartPlaylistTracksQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetSmartPlaylistTracksQuery, TError, TData>['queryKey'] } 2939 + ) => { 2940 + 2941 + return useQuery<GetSmartPlaylistTracksQuery, TError, TData>( 2942 + { 2943 + queryKey: ['GetSmartPlaylistTracks', variables], 2944 + queryFn: fetchData<GetSmartPlaylistTracksQuery, GetSmartPlaylistTracksQueryVariables>(GetSmartPlaylistTracksDocument, variables), 2945 + ...options 2946 + } 2947 + )}; 3082 2948 3083 - export type CreateSavedPlaylistMutationVariables = Exact<{ name: string; description?: InputMaybe<string>; trackIds?: InputMaybe<Array<string>>; }>; 3084 - export type CreateSavedPlaylistMutation = { __typename?: 'Mutation', createSavedPlaylist: { __typename?: 'SavedPlaylist', id: string, name: string, description?: string | null, trackCount: number } }; 2949 + useGetSmartPlaylistTracksQuery.document = GetSmartPlaylistTracksDocument; 2950 + 2951 + useGetSmartPlaylistTracksQuery.getKey = (variables: GetSmartPlaylistTracksQueryVariables) => ['GetSmartPlaylistTracks', variables]; 2952 + 2953 + export const AdjustVolumeDocument = new TypedDocumentString(` 2954 + mutation AdjustVolume($steps: Int!) { 2955 + adjustVolume(steps: $steps) 2956 + } 2957 + `); 3085 2958 3086 - export const CreateSavedPlaylistDocument = gql` 3087 - mutation CreateSavedPlaylist($name: String!, $description: String, $trackIds: [String!]) { 3088 - createSavedPlaylist(name: $name, description: $description, trackIds: $trackIds) { 3089 - id 3090 - name 3091 - description 3092 - trackCount 2959 + export const useAdjustVolumeMutation = < 2960 + TError = unknown, 2961 + TContext = unknown 2962 + >(options?: UseMutationOptions<AdjustVolumeMutation, TError, AdjustVolumeMutationVariables, TContext>) => { 2963 + 2964 + return useMutation<AdjustVolumeMutation, TError, AdjustVolumeMutationVariables, TContext>( 2965 + { 2966 + mutationKey: ['AdjustVolume'], 2967 + mutationFn: (variables?: AdjustVolumeMutationVariables) => fetchData<AdjustVolumeMutation, AdjustVolumeMutationVariables>(AdjustVolumeDocument, variables)(), 2968 + ...options 3093 2969 } 3094 - } 3095 - `; 3096 - export function useCreateSavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<CreateSavedPlaylistMutation, CreateSavedPlaylistMutationVariables>) { 3097 - const options = {...defaultOptions, ...baseOptions} 3098 - return Apollo.useMutation<CreateSavedPlaylistMutation, CreateSavedPlaylistMutationVariables>(CreateSavedPlaylistDocument, options); 3099 - } 3100 - export type CreateSavedPlaylistMutationResult = Apollo.MutationResult<CreateSavedPlaylistMutation>; 2970 + )}; 3101 2971 3102 - export type UpdateSavedPlaylistMutationVariables = Exact<{ id: string; name: string; description?: InputMaybe<string>; }>; 3103 - export type UpdateSavedPlaylistMutation = { __typename?: 'Mutation', updateSavedPlaylist: boolean }; 2972 + useAdjustVolumeMutation.getKey = () => ['AdjustVolume']; 3104 2973 3105 - export const UpdateSavedPlaylistDocument = gql` 3106 - mutation UpdateSavedPlaylist($id: String!, $name: String!, $description: String) { 3107 - updateSavedPlaylist(id: $id, name: $name, description: $description) 2974 + export const GetRockboxVersionDocument = new TypedDocumentString(` 2975 + query GetRockboxVersion { 2976 + rockboxVersion 3108 2977 } 3109 - `; 3110 - export function useUpdateSavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<UpdateSavedPlaylistMutation, UpdateSavedPlaylistMutationVariables>) { 3111 - const options = {...defaultOptions, ...baseOptions} 3112 - return Apollo.useMutation<UpdateSavedPlaylistMutation, UpdateSavedPlaylistMutationVariables>(UpdateSavedPlaylistDocument, options); 3113 - } 3114 - export type UpdateSavedPlaylistMutationResult = Apollo.MutationResult<UpdateSavedPlaylistMutation>; 2978 + `); 3115 2979 3116 - export type DeleteSavedPlaylistMutationVariables = Exact<{ id: string; }>; 3117 - export type DeleteSavedPlaylistMutation = { __typename?: 'Mutation', deleteSavedPlaylist: boolean }; 2980 + export const useGetRockboxVersionQuery = < 2981 + TData = GetRockboxVersionQuery, 2982 + TError = unknown 2983 + >( 2984 + variables?: GetRockboxVersionQueryVariables, 2985 + options?: Omit<UseQueryOptions<GetRockboxVersionQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetRockboxVersionQuery, TError, TData>['queryKey'] } 2986 + ) => { 2987 + 2988 + return useQuery<GetRockboxVersionQuery, TError, TData>( 2989 + { 2990 + queryKey: variables === undefined ? ['GetRockboxVersion'] : ['GetRockboxVersion', variables], 2991 + queryFn: fetchData<GetRockboxVersionQuery, GetRockboxVersionQueryVariables>(GetRockboxVersionDocument, variables), 2992 + ...options 2993 + } 2994 + )}; 3118 2995 3119 - export const DeleteSavedPlaylistDocument = gql` 3120 - mutation DeleteSavedPlaylist($id: String!) { 3121 - deleteSavedPlaylist(id: $id) 3122 - } 3123 - `; 3124 - export function useDeleteSavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<DeleteSavedPlaylistMutation, DeleteSavedPlaylistMutationVariables>) { 3125 - const options = {...defaultOptions, ...baseOptions} 3126 - return Apollo.useMutation<DeleteSavedPlaylistMutation, DeleteSavedPlaylistMutationVariables>(DeleteSavedPlaylistDocument, options); 3127 - } 3128 - export type DeleteSavedPlaylistMutationResult = Apollo.MutationResult<DeleteSavedPlaylistMutation>; 2996 + useGetRockboxVersionQuery.document = GetRockboxVersionDocument; 3129 2997 3130 - export type AddTracksToSavedPlaylistMutationVariables = Exact<{ playlistId: string; trackIds: Array<string>; }>; 3131 - export type AddTracksToSavedPlaylistMutation = { __typename?: 'Mutation', addTracksToSavedPlaylist: boolean }; 2998 + useGetRockboxVersionQuery.getKey = (variables?: GetRockboxVersionQueryVariables) => variables === undefined ? ['GetRockboxVersion'] : ['GetRockboxVersion', variables]; 3132 2999 3133 - export const AddTracksToSavedPlaylistDocument = gql` 3134 - mutation AddTracksToSavedPlaylist($playlistId: String!, $trackIds: [String!]!) { 3135 - addTracksToSavedPlaylist(playlistId: $playlistId, trackIds: $trackIds) 3000 + export const GetGlobalStatusDocument = new TypedDocumentString(` 3001 + query GetGlobalStatus { 3002 + globalStatus { 3003 + resumeIndex 3004 + resumeCrc32 3005 + resumeOffset 3006 + resumeElapsed 3007 + } 3136 3008 } 3137 - `; 3138 - export function useAddTracksToSavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<AddTracksToSavedPlaylistMutation, AddTracksToSavedPlaylistMutationVariables>) { 3139 - const options = {...defaultOptions, ...baseOptions} 3140 - return Apollo.useMutation<AddTracksToSavedPlaylistMutation, AddTracksToSavedPlaylistMutationVariables>(AddTracksToSavedPlaylistDocument, options); 3141 - } 3142 - export type AddTracksToSavedPlaylistMutationResult = Apollo.MutationResult<AddTracksToSavedPlaylistMutation>; 3009 + `); 3143 3010 3144 - export type RemoveTrackFromSavedPlaylistMutationVariables = Exact<{ playlistId: string; trackId: string; }>; 3145 - export type RemoveTrackFromSavedPlaylistMutation = { __typename?: 'Mutation', removeTrackFromSavedPlaylist: boolean }; 3146 - 3147 - export const RemoveTrackFromSavedPlaylistDocument = gql` 3148 - mutation RemoveTrackFromSavedPlaylist($playlistId: String!, $trackId: String!) { 3149 - removeTrackFromSavedPlaylist(playlistId: $playlistId, trackId: $trackId) 3150 - } 3151 - `; 3152 - export function useRemoveTrackFromSavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<RemoveTrackFromSavedPlaylistMutation, RemoveTrackFromSavedPlaylistMutationVariables>) { 3153 - const options = {...defaultOptions, ...baseOptions} 3154 - return Apollo.useMutation<RemoveTrackFromSavedPlaylistMutation, RemoveTrackFromSavedPlaylistMutationVariables>(RemoveTrackFromSavedPlaylistDocument, options); 3155 - } 3156 - export type RemoveTrackFromSavedPlaylistMutationResult = Apollo.MutationResult<RemoveTrackFromSavedPlaylistMutation>; 3011 + export const useGetGlobalStatusQuery = < 3012 + TData = GetGlobalStatusQuery, 3013 + TError = unknown 3014 + >( 3015 + variables?: GetGlobalStatusQueryVariables, 3016 + options?: Omit<UseQueryOptions<GetGlobalStatusQuery, TError, TData>, 'queryKey'> & { queryKey?: UseQueryOptions<GetGlobalStatusQuery, TError, TData>['queryKey'] } 3017 + ) => { 3018 + 3019 + return useQuery<GetGlobalStatusQuery, TError, TData>( 3020 + { 3021 + queryKey: variables === undefined ? ['GetGlobalStatus'] : ['GetGlobalStatus', variables], 3022 + queryFn: fetchData<GetGlobalStatusQuery, GetGlobalStatusQueryVariables>(GetGlobalStatusDocument, variables), 3023 + ...options 3024 + } 3025 + )}; 3157 3026 3158 - export type PlaySavedPlaylistMutationVariables = Exact<{ playlistId: string; }>; 3159 - export type PlaySavedPlaylistMutation = { __typename?: 'Mutation', playSavedPlaylist: boolean }; 3027 + useGetGlobalStatusQuery.document = GetGlobalStatusDocument; 3160 3028 3161 - export const PlaySavedPlaylistDocument = gql` 3162 - mutation PlaySavedPlaylist($playlistId: String!) { 3163 - playSavedPlaylist(playlistId: $playlistId) 3164 - } 3165 - `; 3166 - export function usePlaySavedPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<PlaySavedPlaylistMutation, PlaySavedPlaylistMutationVariables>) { 3167 - const options = {...defaultOptions, ...baseOptions} 3168 - return Apollo.useMutation<PlaySavedPlaylistMutation, PlaySavedPlaylistMutationVariables>(PlaySavedPlaylistDocument, options); 3169 - } 3170 - export type PlaySavedPlaylistMutationResult = Apollo.MutationResult<PlaySavedPlaylistMutation>; 3029 + useGetGlobalStatusQuery.getKey = (variables?: GetGlobalStatusQueryVariables) => variables === undefined ? ['GetGlobalStatus'] : ['GetGlobalStatus', variables]; 3171 3030 3172 - // ── Smart Playlist Mutations ───────────────────────────────────────────────── 3031 + export const useCurrentlyPlayingSongSubscription = () => 3032 + useSubscription<CurrentlyPlayingSongSubscription>( 3033 + CurrentlyPlayingSongDocument.toString() 3034 + ); 3173 3035 3174 - export type PlaySmartPlaylistMutationVariables = Exact<{ id: string; }>; 3175 - export type PlaySmartPlaylistMutation = { __typename?: 'Mutation', playSmartPlaylist: boolean }; 3036 + export const usePlaybackStatusSubscription = () => 3037 + useSubscription<PlaybackStatusSubscription>( 3038 + PlaybackStatusDocument.toString() 3039 + ); 3176 3040 3177 - export const PlaySmartPlaylistDocument = gql` 3178 - mutation PlaySmartPlaylist($id: String!) { 3179 - playSmartPlaylist(id: $id) 3180 - } 3181 - `; 3182 - export function usePlaySmartPlaylistMutation(baseOptions?: Apollo.MutationHookOptions<PlaySmartPlaylistMutation, PlaySmartPlaylistMutationVariables>) { 3183 - const options = {...defaultOptions, ...baseOptions} 3184 - return Apollo.useMutation<PlaySmartPlaylistMutation, PlaySmartPlaylistMutationVariables>(PlaySmartPlaylistDocument, options); 3185 - } 3186 - export type PlaySmartPlaylistMutationResult = Apollo.MutationResult<PlaySmartPlaylistMutation>; 3041 + export const usePlaylistChangedSubscription = () => 3042 + useSubscription<PlaylistChangedSubscription>( 3043 + PlaylistChangedDocument.toString() 3044 + );
+11 -10
webui/rockbox/src/Hooks/usePlayQueue.tsx
··· 11 11 export const usePlayQueue = () => { 12 12 const { currentDevice } = useRecoilValue(deviceState); 13 13 const { resumeIndex } = useRecoilValue(controlBarState); 14 - const { data: playlistSubscription } = usePlaylistChangedSubscription({ 15 - fetchPolicy: "network-only", 16 - }); 17 - const { data } = useGetCurrentPlaylistQuery({ 18 - fetchPolicy: "cache-and-network", 19 - }); 14 + const { data: playlistSubscription } = usePlaylistChangedSubscription(); 15 + const { data } = useGetCurrentPlaylistQuery(); 16 + 20 17 const previousTracks = useMemo(() => { 21 18 if (playlistSubscription?.playlistChanged) { 22 19 const currentTrackIndex = ··· 24 21 ? resumeIndex 25 22 : _.get(playlistSubscription, "playlistChanged.index", 0); 26 23 const tracks = _.get(playlistSubscription, "playlistChanged.tracks", []); 27 - return tracks.slice(0, currentTrackIndex + 1).map((x, index) => ({ 24 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 25 + return tracks.slice(0, currentTrackIndex + 1).map((x: any, index: number) => ({ 28 26 ...x, 29 27 id: index.toString(), 30 28 cover: x.albumArt ··· 39 37 ? resumeIndex 40 38 : _.get(data, "playlistGetCurrent.index", 0); 41 39 const tracks = _.get(data, "playlistGetCurrent.tracks", []); 42 - return tracks.slice(0, currentTrackIndex + 1).map((x, index) => ({ 40 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 41 + return tracks.slice(0, currentTrackIndex + 1).map((x: any, index: number) => ({ 43 42 ...x, 44 43 id: index.toString(), 45 44 cover: x.albumArt ··· 58 57 ? resumeIndex 59 58 : _.get(playlistSubscription, "playlistChanged.index", 0); 60 59 const tracks = _.get(playlistSubscription, "playlistChanged.tracks", []); 61 - return tracks.slice(currentTrackIndex + 1).map((x, index) => ({ 60 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 61 + return tracks.slice(currentTrackIndex + 1).map((x: any, index: number) => ({ 62 62 ...x, 63 63 id: index.toString(), 64 64 cover: x.albumArt ··· 73 73 ? resumeIndex 74 74 : _.get(data, "playlistGetCurrent.index", 0); 75 75 const tracks = _.get(data, "playlistGetCurrent.tracks", []); 76 - return tracks.slice(currentTrackIndex + 1).map((x, index) => ({ 76 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 77 + return tracks.slice(currentTrackIndex + 1).map((x: any, index: number) => ({ 77 78 ...x, 78 79 id: index.toString(), 79 80 cover: x.albumArt
+11 -9
webui/rockbox/src/Hooks/useResumePlaylist.tsx
··· 15 15 const { data: globalStatusData } = useGetGlobalStatusQuery(); 16 16 const { 17 17 data: currentPlaylistData, 18 - loading, 18 + isLoading, 19 19 refetch: refetchCurrentPlaylist, 20 20 } = useGetCurrentPlaylistQuery(); 21 - const [resumePlaylist] = useResumePlaylistMutation(); 22 - const [resumePlaylistTrack] = useResumePlaylistTrackMutation(); 23 - const { data: getPlaybackStatusData, loading: getPlaybackStatusLoading } = 24 - useGetPlaybackStatusQuery(); 21 + const { mutateAsync: resumePlaylist } = useResumePlaylistMutation(); 22 + const { mutateAsync: resumePlaylistTrack } = useResumePlaylistTrackMutation(); 23 + const { 24 + data: getPlaybackStatusData, 25 + isLoading: getPlaybackStatusLoading, 26 + } = useGetPlaybackStatusQuery(); 25 27 26 28 useEffect(() => { 27 29 if ( 28 - loading || 30 + isLoading || 29 31 !currentPlaylistData || 30 32 !globalStatusData || 31 33 getPlaybackStatusLoading ··· 37 39 globalStatusData.globalStatus.resumeIndex > -1 && 38 40 getPlaybackStatusData?.status !== 1 39 41 ) { 40 - resumePlaylist() 42 + resumePlaylist({}) 41 43 .then((res) => { 42 - if (res.data?.playlistResume === 0) { 44 + if (res.playlistResume === 0) { 43 45 return refetchCurrentPlaylist(); 44 46 } 45 47 }) ··· 100 102 } 101 103 // eslint-disable-next-line react-hooks/exhaustive-deps 102 104 }, [ 103 - loading, 105 + isLoading, 104 106 currentPlaylistData, 105 107 globalStatusData, 106 108 getPlaybackStatusLoading,
+3 -3
webui/rockbox/src/Hooks/useSettings.tsx
··· 5 5 6 6 export const useSettings = () => { 7 7 const [, setSettings] = useRecoilState(settingsState); 8 - const { data, loading } = useGetGlobalSettingsQuery(); 8 + const { data, isLoading } = useGetGlobalSettingsQuery(); 9 9 10 10 useEffect(() => { 11 - if (!data || loading) { 11 + if (!data || isLoading) { 12 12 return; 13 13 } 14 14 setSettings((state) => ({ ··· 43 43 surroundFx2: data.globalSettings.surroundFx2, 44 44 })); 45 45 // eslint-disable-next-line react-hooks/exhaustive-deps 46 - }, [data, loading]); 46 + }, [data, isLoading]); 47 47 };
+10 -43
webui/rockbox/src/Providers/GraphQLProvider.tsx
··· 1 - import { 2 - ApolloClient, 3 - createHttpLink, 4 - InMemoryCache, 5 - ApolloProvider, 6 - split, 7 - from, 8 - } from "@apollo/client"; 9 - import { removeTypenameFromVariables } from "@apollo/client/link/remove-typename"; 10 - import { WebSocketLink } from "@apollo/client/link/ws"; 11 - import { getMainDefinition } from "@apollo/client/utilities"; 12 - import { SubscriptionClient } from "subscriptions-transport-ws"; 1 + import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; 13 2 import { FC, ReactNode } from "react"; 14 3 15 - const uri = 16 - process.env.NODE_ENV === "development" 17 - ? import.meta.env.VITE_APP_API_URL || "http://localhost:6062/graphql" 18 - : `${origin}/graphql`; 19 - 20 - const removeTypenameLink = removeTypenameFromVariables(); 21 - 22 - const httpLink = createHttpLink({ 23 - uri, 24 - }); 25 - 26 - const wsLink = new WebSocketLink( 27 - new SubscriptionClient(uri.replace("http", "ws")) 28 - ); 29 - 30 - const splitLink = split( 31 - ({ query }) => { 32 - const definition = getMainDefinition(query); 33 - return ( 34 - definition.kind === "OperationDefinition" && 35 - definition.operation === "subscription" 36 - ); 4 + const queryClient = new QueryClient({ 5 + defaultOptions: { 6 + queries: { 7 + staleTime: 0, 8 + refetchOnWindowFocus: false, 9 + }, 37 10 }, 38 - wsLink, 39 - from([removeTypenameLink, httpLink]) 40 - ); 41 - const link = splitLink; 42 - 43 - const client = new ApolloClient({ 44 - link, 45 - cache: new InMemoryCache(), 46 11 }); 47 12 48 13 const GraphQLProvider: FC<{ 49 14 children: ReactNode; 50 15 }> = ({ children }) => { 51 - return <ApolloProvider client={client}>{children}</ApolloProvider>; 16 + return ( 17 + <QueryClientProvider client={queryClient}>{children}</QueryClientProvider> 18 + ); 52 19 }; 53 20 54 21 export default GraphQLProvider;
+6 -3
webui/rockbox/src/Providers/index.tsx
··· 3 3 import { Provider as StyletronProvider } from "styletron-react"; 4 4 import { Client as Styletron } from "styletron-engine-atomic"; 5 5 import { RecoilRoot } from "recoil"; 6 + import GraphQLProvider from "./GraphQLProvider"; 6 7 7 8 const engine = new Styletron(); 8 9 ··· 13 14 const Providers: FC<ProvidersProps> = ({ children }) => { 14 15 return ( 15 16 <RecoilRoot> 16 - <StyletronProvider value={engine}> 17 - <ThemeProvider>{children}</ThemeProvider> 18 - </StyletronProvider> 17 + <GraphQLProvider> 18 + <StyletronProvider value={engine}> 19 + <ThemeProvider>{children}</ThemeProvider> 20 + </StyletronProvider> 21 + </GraphQLProvider> 19 22 </RecoilRoot> 20 23 ); 21 24 };
+35
webui/rockbox/src/lib/graphql-client.ts
··· 1 + import { GraphQLClient } from "graphql-request"; 2 + 3 + const endpoint = 4 + process.env.NODE_ENV === "development" 5 + ? import.meta.env.VITE_APP_API_URL || "http://localhost:6062/graphql" 6 + : `${origin}/graphql`; 7 + 8 + export const graphqlClient = new GraphQLClient(endpoint); 9 + 10 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 11 + export class TypedDocumentString<TResult, TVariables extends Record<string, unknown> = Record<string, never>> extends String { 12 + __apiType?: TResult; 13 + __variablesType?: TVariables; 14 + constructor( 15 + private value: string, 16 + public __meta__?: Record<string, unknown> 17 + ) { 18 + super(value); 19 + } 20 + toString(): string { 21 + return this.value; 22 + } 23 + } 24 + 25 + export function fetchData<TData, TVariables>( 26 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 27 + query: string | TypedDocumentString<any, any>, 28 + variables?: TVariables 29 + ): () => Promise<TData> { 30 + return async () => 31 + graphqlClient.request<TData>( 32 + query.toString(), 33 + variables as Record<string, unknown> 34 + ); 35 + }
+35
webui/rockbox/src/lib/subscription-client.ts
··· 1 + import { useEffect, useState } from "react"; 2 + import { SubscriptionClient } from "subscriptions-transport-ws"; 3 + 4 + const wsEndpoint = ( 5 + process.env.NODE_ENV === "development" 6 + ? import.meta.env.VITE_APP_API_URL || "http://localhost:6062/graphql" 7 + : `${origin}/graphql` 8 + ).replace(/^http/, "ws"); 9 + 10 + export const subscriptionClient = new SubscriptionClient(wsEndpoint, { 11 + reconnect: true, 12 + }); 13 + 14 + export function useSubscription<TData>( 15 + query: string, 16 + variables?: Record<string, unknown> 17 + ): { data: TData | null } { 18 + const [data, setData] = useState<TData | null>(null); 19 + 20 + useEffect(() => { 21 + const sub = subscriptionClient 22 + .request({ query, variables }) 23 + .subscribe({ 24 + next: (result) => { 25 + if (result.data) { 26 + setData(result.data as TData); 27 + } 28 + }, 29 + }); 30 + return () => sub.unsubscribe(); 31 + // eslint-disable-next-line react-hooks/exhaustive-deps 32 + }, []); 33 + 34 + return { data }; 35 + }
+49 -80
webui/rockbox/src/mocks.ts
··· 2 2 nextTracks, 3 3 previousTracks, 4 4 } from "./Components/ControlBar/PlayQueue/mocks"; 5 - import { GET_TRACKS } from "./GraphQL/Library/Query"; 6 - import { 7 - GET_CURRENT_TRACK, 8 - GET_PLAYBACK_STATUS, 9 - } from "./GraphQL/Playback/Query"; 10 - import { GET_CURRENT_PLAYLIST } from "./GraphQL/Playlist/Query"; 11 5 12 - export const mocks = [ 13 - { 14 - request: { 15 - query: GET_CURRENT_TRACK, 16 - }, 17 - result: { 18 - data: { 19 - currentTrack: { 20 - id: "cm272oeon00esm9634q1lw5ae", 21 - title: "Set It Off", 22 - artist: "Boosie Badazz", 23 - album: "Bad Azz", 24 - albumArt: 25 - "https://resources.tidal.com/images/31ce8fc7/b10c/47ee/991d/6fab3e15dbe4/320x320.jpg", 26 - artistId: "cm272ocoi003km963fy45i7cn", 27 - albumId: "cm272ocoi003lm963xo1d7wb2", 28 - elapsed: 153762, 29 - length: 284633, 30 - year: 2006, 31 - yearString: "2006-09-19", 32 - }, 33 - }, 34 - }, 6 + export const mockCurrentTrack = { 7 + currentTrack: { 8 + id: "cm272oeon00esm9634q1lw5ae", 9 + title: "Set It Off", 10 + artist: "Boosie Badazz", 11 + album: "Bad Azz", 12 + albumArt: 13 + "https://resources.tidal.com/images/31ce8fc7/b10c/47ee/991d/6fab3e15dbe4/320x320.jpg", 14 + artistId: "cm272ocoi003km963fy45i7cn", 15 + albumId: "cm272ocoi003lm963xo1d7wb2", 16 + elapsed: 153762, 17 + length: 284633, 18 + year: 2006, 19 + yearString: "2006-09-19", 35 20 }, 36 - { 37 - request: { 38 - query: GET_PLAYBACK_STATUS, 39 - }, 40 - result: { data: { status: 1 } }, 21 + }; 22 + 23 + export const mockPlaybackStatus = { status: 1 }; 24 + 25 + export const mockCurrentPlaylist = { 26 + playlistGetCurrent: { 27 + index: 2, 28 + amount: previousTracks.length + nextTracks.length, 29 + maxPlaylistSize: 10000, 30 + tracks: [...previousTracks, ...nextTracks].map((x) => ({ 31 + id: x.id, 32 + title: x.title, 33 + artist: x.artist, 34 + albumArt: x.cover, 35 + artistId: null, 36 + albumId: null, 37 + })), 41 38 }, 42 - { 43 - request: { 44 - query: GET_CURRENT_PLAYLIST, 45 - }, 46 - result: { 47 - data: { 48 - playlistGetCurrent: { 49 - index: 2, 50 - amount: previousTracks.length + nextTracks.length, 51 - maxPlaylistSize: 10000, 52 - tracks: [...previousTracks, ...nextTracks].map((x) => ({ 53 - id: x.id, 54 - title: x.title, 55 - artist: x.artist, 56 - albumArt: x.cover, 57 - artistId: null, 58 - albumId: null, 59 - })), 60 - }, 61 - }, 62 - }, 63 - }, 64 - { 65 - request: { 66 - query: GET_TRACKS, 67 - }, 68 - result: { 69 - data: { 70 - tracks: [ 71 - { 72 - id: "cm272oeon00esm9634q1lw5ae", 73 - tracknum: 1, 74 - title: "Set It Off", 75 - artist: "Boosie Badazz", 76 - album: "Bad Azz", 77 - discnum: 1, 78 - albumArtist: "Boosie Badazz", 79 - artistId: "cm272ocoi003km963fy45i7cn", 80 - albumId: "cm272ocoi003lm963xo1d7wb2", 81 - albumArt: 82 - "https://resources.tidal.com/images/31ce8fc7/b10c/47ee/991d/6fab3e15dbe4/320x320.jpg", 83 - }, 84 - ], 85 - }, 39 + }; 40 + 41 + export const mockTracks = { 42 + tracks: [ 43 + { 44 + id: "cm272oeon00esm9634q1lw5ae", 45 + tracknum: 1, 46 + title: "Set It Off", 47 + artist: "Boosie Badazz", 48 + album: "Bad Azz", 49 + discnum: 1, 50 + albumArtist: "Boosie Badazz", 51 + artistId: "cm272ocoi003km963fy45i7cn", 52 + albumId: "cm272ocoi003lm963xo1d7wb2", 53 + albumArt: 54 + "https://resources.tidal.com/images/31ce8fc7/b10c/47ee/991d/6fab3e15dbe4/320x320.jpg", 86 55 }, 87 - }, 88 - ]; 56 + ], 57 + };
+1 -1
webui/rockbox/tsconfig.app.tsbuildinfo
··· 1 - {"root":["./src/app.tsx","./src/theme.ts","./src/constants.ts","./src/emotion.d.ts","./src/main.tsx","./src/mocks.ts","./src/vite-env.d.ts","./src/components/album/album.stories.tsx","./src/components/album/album.test.tsx","./src/components/album/album.tsx","./src/components/album/albumwithdata.tsx","./src/components/album/index.tsx","./src/components/album/styles.tsx","./src/components/album/contextmenu/childmenu.tsx","./src/components/album/contextmenu/contextmenu.stories.tsx","./src/components/album/contextmenu/contextmenu.test.tsx","./src/components/album/contextmenu/contextmenu.tsx","./src/components/album/contextmenu/contextmenuwithdata.tsx","./src/components/album/contextmenu/index.tsx","./src/components/album/contextmenu/styles.tsx","./src/components/albumdetails/albumdetails.stories.tsx","./src/components/albumdetails/albumdetails.test.tsx","./src/components/albumdetails/albumdetails.tsx","./src/components/albumdetails/albumdetailswithdata.tsx","./src/components/albumdetails/index.tsx","./src/components/albumdetails/mocks.tsx","./src/components/albumdetails/styles.tsx","./src/components/albums/albums.stories.tsx","./src/components/albums/albums.test.tsx","./src/components/albums/albums.tsx","./src/components/albums/albumswithdata.tsx","./src/components/albums/index.tsx","./src/components/albums/mocks.tsx","./src/components/albums/styles.tsx","./src/components/artistdetails/artistdetails.stories.tsx","./src/components/artistdetails/artistdetails.test.tsx","./src/components/artistdetails/artistdetails.tsx","./src/components/artistdetails/artistdetailswithdata.tsx","./src/components/artistdetails/index.tsx","./src/components/artistdetails/mocks.tsx","./src/components/artistdetails/styles.tsx","./src/components/artists/artists.stories.tsx","./src/components/artists/artists.test.tsx","./src/components/artists/artists.tsx","./src/components/artists/artistswithdata.tsx","./src/components/artists/index.tsx","./src/components/artists/mocks.tsx","./src/components/artists/styles.tsx","./src/components/button/button.test.tsx","./src/components/button/button.tsx","./src/components/button/index.tsx","./src/components/contextmenu/childmenu.tsx","./src/components/contextmenu/contextmenu.stories.tsx","./src/components/contextmenu/contextmenu.test.tsx","./src/components/contextmenu/contextmenu.tsx","./src/components/contextmenu/contextmenuwithdata.tsx","./src/components/contextmenu/index.tsx","./src/components/contextmenu/styles.tsx","./src/components/controlbar/controlbar.stories.tsx","./src/components/controlbar/controlbar.test.tsx","./src/components/controlbar/controlbar.tsx","./src/components/controlbar/controlbarstate.tsx","./src/components/controlbar/controlbarwithdata.tsx","./src/components/controlbar/index.tsx","./src/components/controlbar/styles.tsx","./src/components/controlbar/currenttrack/currenttrack.tsx","./src/components/controlbar/currenttrack/index.tsx","./src/components/controlbar/currenttrack/styles.ts","./src/components/controlbar/devicelist/devicelist.tsx","./src/components/controlbar/devicelist/devicelistwithdata.tsx","./src/components/controlbar/devicelist/devicestate.tsx","./src/components/controlbar/devicelist/index.tsx","./src/components/controlbar/devicelist/styles.ts","./src/components/controlbar/playqueue/playqueue.stories.tsx","./src/components/controlbar/playqueue/playqueue.test.tsx","./src/components/controlbar/playqueue/playqueue.tsx","./src/components/controlbar/playqueue/playqueuewithdata.tsx","./src/components/controlbar/playqueue/index.tsx","./src/components/controlbar/playqueue/mocks.tsx","./src/components/controlbar/playqueue/styles.tsx","./src/components/controlbar/rightmenu/rightmenu.tsx","./src/components/controlbar/rightmenu/index.tsx","./src/components/controlbar/rightmenu/styles.tsx","./src/components/controlbar/rightmenu/volume/volume.stories.tsx","./src/components/controlbar/rightmenu/volume/volume.test.tsx","./src/components/controlbar/rightmenu/volume/volume.tsx","./src/components/controlbar/rightmenu/volume/volumewithdata.tsx","./src/components/controlbar/rightmenu/volume/index.tsx","./src/components/controlbar/rightmenu/volume/styles.tsx","./src/components/extensions/extensions.stories.tsx","./src/components/extensions/extensions.tsx","./src/components/extensions/index.tsx","./src/components/files/files.stories.tsx","./src/components/files/files.test.tsx","./src/components/files/files.tsx","./src/components/files/fileswithdata.tsx","./src/components/files/index.tsx","./src/components/files/mocks.tsx","./src/components/files/styles.tsx","./src/components/files/contextmenu/childmenu.tsx","./src/components/files/contextmenu/contextmenu.stories.tsx","./src/components/files/contextmenu/contextmenu.test.tsx","./src/components/files/contextmenu/contextmenu.tsx","./src/components/files/contextmenu/contextmenuwithdata.tsx","./src/components/files/contextmenu/index.tsx","./src/components/files/contextmenu/styles.tsx","./src/components/filter/filter.test.tsx","./src/components/filter/filter.tsx","./src/components/filter/filterstate.tsx","./src/components/filter/filterwithdata.tsx","./src/components/filter/index.tsx","./src/components/folder/folder.stories.tsx","./src/components/folder/folder.tsx","./src/components/folder/index.tsx","./src/components/icons/add.tsx","./src/components/icons/albumcover.tsx","./src/components/icons/arrowback.tsx","./src/components/icons/artist.tsx","./src/components/icons/heart.tsx","./src/components/icons/heartoutline.tsx","./src/components/icons/next.tsx","./src/components/icons/pause.tsx","./src/components/icons/play.tsx","./src/components/icons/previous.tsx","./src/components/icons/repeat.tsx","./src/components/icons/search.tsx","./src/components/icons/shuffle.tsx","./src/components/icons/speaker.tsx","./src/components/icons/track.tsx","./src/components/likes/likes.tsx","./src/components/likes/likesstate.ts","./src/components/likes/likeswithdata.tsx","./src/components/likes/index.tsx","./src/components/likes/styles.tsx","./src/components/mainview/mainview.tsx","./src/components/mainview/mainviewwithdata.tsx","./src/components/mainview/index.tsx","./src/components/mainview/styles.tsx","./src/components/playlistdetails/playlistdetails.stories.tsx","./src/components/playlistdetails/playlistdetails.tsx","./src/components/playlistdetails/playlistdetailswithdata.tsx","./src/components/playlistdetails/index.tsx","./src/components/playlistdetails/styles.tsx","./src/components/playlists/playlistmodal.tsx","./src/components/playlists/playlists.stories.tsx","./src/components/playlists/playlists.tsx","./src/components/playlists/playlistswithdata.tsx","./src/components/playlists/index.tsx","./src/components/playlists/styles.tsx","./src/components/settings/settings.tsx","./src/components/settings/settingsstate.ts","./src/components/settings/settingswithdata.tsx","./src/components/settings/index.tsx","./src/components/settings/styles.tsx","./src/components/settings/library/library.tsx","./src/components/settings/library/librarywithdata.tsx","./src/components/settings/library/index.tsx","./src/components/settings/library/styles.tsx","./src/components/settings/playback/playback.tsx","./src/components/settings/playback/playbackwithdata.tsx","./src/components/settings/playback/consts.ts","./src/components/settings/playback/index.tsx","./src/components/settings/playback/styles.tsx","./src/components/settings/sound/sound.tsx","./src/components/settings/sound/soundwithdata.tsx","./src/components/settings/sound/index.tsx","./src/components/settings/sound/styles.tsx","./src/components/settings/sound/equalizer/equalizer.tsx","./src/components/settings/sound/equalizer/equalizerwithdata.tsx","./src/components/settings/sound/equalizer/index.tsx","./src/components/settings/sound/equalizer/styles.tsx","./src/components/sidebar/sidebar.test.tsx","./src/components/sidebar/sidebar.tsx","./src/components/sidebar/sidebarwithdata.tsx","./src/components/sidebar/stidebar.stories.tsx","./src/components/sidebar/index.tsx","./src/components/sidebar/styles.tsx","./src/components/switch/switch.tsx","./src/components/switch/index.tsx","./src/components/table/table.tsx","./src/components/table/index.tsx","./src/components/tracks/tracks.stories.tsx","./src/components/tracks/tracks.test.tsx","./src/components/tracks/tracks.tsx","./src/components/tracks/trackswithdata.tsx","./src/components/tracks/index.tsx","./src/components/tracks/mocks.tsx","./src/components/tracks/styles.tsx","./src/components/virtualizedtable/virtualizedtable.tsx","./src/components/virtualizedtable/index.tsx","./src/containers/albumdetails/albumdetailspage.tsx","./src/containers/albumdetails/index.tsx","./src/containers/albums/albumspage.tsx","./src/containers/albums/index.tsx","./src/containers/artistdetails/artistdetailspage.tsx","./src/containers/artistdetails/index.tsx","./src/containers/artists/artistspage.tsx","./src/containers/artists/index.tsx","./src/containers/extensions/extensionspage.tsx","./src/containers/extensions/index.tsx","./src/containers/files/filespage.tsx","./src/containers/files/index.tsx","./src/containers/likes/likespage.tsx","./src/containers/likes/index.tsx","./src/containers/playlistdetails/smartplaylistdetailspage.tsx","./src/containers/playlistdetails/index.tsx","./src/containers/playlists/playlistspage.tsx","./src/containers/playlists/index.tsx","./src/containers/settings/settingspage.tsx","./src/containers/settings/index.tsx","./src/containers/tracks/trackspage.tsx","./src/containers/tracks/index.tsx","./src/graphql/browse/query.ts","./src/graphql/device/mutation.ts","./src/graphql/device/query.ts","./src/graphql/library/mutation.ts","./src/graphql/library/query.ts","./src/graphql/playback/mutation.ts","./src/graphql/playback/query.ts","./src/graphql/playback/subscription.ts","./src/graphql/playlist/mutation.ts","./src/graphql/playlist/query.ts","./src/graphql/playlist/subscription.ts","./src/graphql/savedplaylist/mutation.ts","./src/graphql/savedplaylist/query.ts","./src/graphql/settings/mutation.ts","./src/graphql/settings/query.ts","./src/graphql/smartplaylist/mutation.ts","./src/graphql/smartplaylist/query.ts","./src/graphql/sound/mutation.tsx","./src/graphql/system/query.ts","./src/hooks/graphql.tsx","./src/hooks/useformat.tsx","./src/hooks/useplayqueue.tsx","./src/hooks/useresumeplaylist.tsx","./src/hooks/usesettings.tsx","./src/providers/graphqlprovider.tsx","./src/providers/themeprovider.tsx","./src/providers/index.tsx","./src/types/file.ts","./src/types/playlist.ts","./src/types/track.ts","./src/stories/button.stories.ts","./src/stories/button.tsx","./src/stories/header.stories.ts","./src/stories/header.tsx","./src/stories/page.stories.ts","./src/stories/page.tsx"],"version":"5.6.2"} 1 + {"root":["./src/app.tsx","./src/theme.ts","./src/constants.ts","./src/emotion.d.ts","./src/main.tsx","./src/mocks.ts","./src/vite-env.d.ts","./src/components/album/album.stories.tsx","./src/components/album/album.test.tsx","./src/components/album/album.tsx","./src/components/album/albumwithdata.tsx","./src/components/album/index.tsx","./src/components/album/styles.tsx","./src/components/album/contextmenu/childmenu.tsx","./src/components/album/contextmenu/contextmenu.stories.tsx","./src/components/album/contextmenu/contextmenu.test.tsx","./src/components/album/contextmenu/contextmenu.tsx","./src/components/album/contextmenu/contextmenuwithdata.tsx","./src/components/album/contextmenu/index.tsx","./src/components/album/contextmenu/styles.tsx","./src/components/albumdetails/albumdetails.stories.tsx","./src/components/albumdetails/albumdetails.test.tsx","./src/components/albumdetails/albumdetails.tsx","./src/components/albumdetails/albumdetailswithdata.tsx","./src/components/albumdetails/index.tsx","./src/components/albumdetails/mocks.tsx","./src/components/albumdetails/styles.tsx","./src/components/albums/albums.stories.tsx","./src/components/albums/albums.test.tsx","./src/components/albums/albums.tsx","./src/components/albums/albumswithdata.tsx","./src/components/albums/index.tsx","./src/components/albums/mocks.tsx","./src/components/albums/styles.tsx","./src/components/artistdetails/artistdetails.stories.tsx","./src/components/artistdetails/artistdetails.test.tsx","./src/components/artistdetails/artistdetails.tsx","./src/components/artistdetails/artistdetailswithdata.tsx","./src/components/artistdetails/index.tsx","./src/components/artistdetails/mocks.tsx","./src/components/artistdetails/styles.tsx","./src/components/artists/artists.stories.tsx","./src/components/artists/artists.test.tsx","./src/components/artists/artists.tsx","./src/components/artists/artistswithdata.tsx","./src/components/artists/index.tsx","./src/components/artists/mocks.tsx","./src/components/artists/styles.tsx","./src/components/button/button.test.tsx","./src/components/button/button.tsx","./src/components/button/index.tsx","./src/components/contextmenu/childmenu.tsx","./src/components/contextmenu/contextmenu.stories.tsx","./src/components/contextmenu/contextmenu.test.tsx","./src/components/contextmenu/contextmenu.tsx","./src/components/contextmenu/contextmenuwithdata.tsx","./src/components/contextmenu/index.tsx","./src/components/contextmenu/styles.tsx","./src/components/controlbar/controlbar.stories.tsx","./src/components/controlbar/controlbar.test.tsx","./src/components/controlbar/controlbar.tsx","./src/components/controlbar/controlbarstate.tsx","./src/components/controlbar/controlbarwithdata.tsx","./src/components/controlbar/index.tsx","./src/components/controlbar/styles.tsx","./src/components/controlbar/currenttrack/currenttrack.tsx","./src/components/controlbar/currenttrack/index.tsx","./src/components/controlbar/currenttrack/styles.ts","./src/components/controlbar/devicelist/devicelist.tsx","./src/components/controlbar/devicelist/devicelistwithdata.tsx","./src/components/controlbar/devicelist/devicestate.tsx","./src/components/controlbar/devicelist/index.tsx","./src/components/controlbar/devicelist/styles.ts","./src/components/controlbar/playqueue/playqueue.stories.tsx","./src/components/controlbar/playqueue/playqueue.test.tsx","./src/components/controlbar/playqueue/playqueue.tsx","./src/components/controlbar/playqueue/playqueuewithdata.tsx","./src/components/controlbar/playqueue/index.tsx","./src/components/controlbar/playqueue/mocks.tsx","./src/components/controlbar/playqueue/styles.tsx","./src/components/controlbar/rightmenu/rightmenu.tsx","./src/components/controlbar/rightmenu/index.tsx","./src/components/controlbar/rightmenu/styles.tsx","./src/components/controlbar/rightmenu/volume/volume.stories.tsx","./src/components/controlbar/rightmenu/volume/volume.test.tsx","./src/components/controlbar/rightmenu/volume/volume.tsx","./src/components/controlbar/rightmenu/volume/volumewithdata.tsx","./src/components/controlbar/rightmenu/volume/index.tsx","./src/components/controlbar/rightmenu/volume/styles.tsx","./src/components/extensions/extensions.stories.tsx","./src/components/extensions/extensions.tsx","./src/components/extensions/index.tsx","./src/components/files/files.stories.tsx","./src/components/files/files.test.tsx","./src/components/files/files.tsx","./src/components/files/fileswithdata.tsx","./src/components/files/index.tsx","./src/components/files/mocks.tsx","./src/components/files/styles.tsx","./src/components/files/contextmenu/childmenu.tsx","./src/components/files/contextmenu/contextmenu.stories.tsx","./src/components/files/contextmenu/contextmenu.test.tsx","./src/components/files/contextmenu/contextmenu.tsx","./src/components/files/contextmenu/contextmenuwithdata.tsx","./src/components/files/contextmenu/index.tsx","./src/components/files/contextmenu/styles.tsx","./src/components/filter/filter.test.tsx","./src/components/filter/filter.tsx","./src/components/filter/filterstate.tsx","./src/components/filter/filterwithdata.tsx","./src/components/filter/index.tsx","./src/components/folder/folder.stories.tsx","./src/components/folder/folder.tsx","./src/components/folder/index.tsx","./src/components/icons/add.tsx","./src/components/icons/albumcover.tsx","./src/components/icons/arrowback.tsx","./src/components/icons/artist.tsx","./src/components/icons/heart.tsx","./src/components/icons/heartoutline.tsx","./src/components/icons/next.tsx","./src/components/icons/pause.tsx","./src/components/icons/play.tsx","./src/components/icons/previous.tsx","./src/components/icons/repeat.tsx","./src/components/icons/search.tsx","./src/components/icons/shuffle.tsx","./src/components/icons/speaker.tsx","./src/components/icons/track.tsx","./src/components/likes/likes.tsx","./src/components/likes/likesstate.ts","./src/components/likes/likeswithdata.tsx","./src/components/likes/index.tsx","./src/components/likes/styles.tsx","./src/components/mainview/mainview.tsx","./src/components/mainview/mainviewwithdata.tsx","./src/components/mainview/index.tsx","./src/components/mainview/styles.tsx","./src/components/playlistdetails/playlistdetails.stories.tsx","./src/components/playlistdetails/playlistdetails.tsx","./src/components/playlistdetails/playlistdetailswithdata.tsx","./src/components/playlistdetails/index.tsx","./src/components/playlistdetails/styles.tsx","./src/components/playlists/playlistmodal.tsx","./src/components/playlists/playlists.stories.tsx","./src/components/playlists/playlists.tsx","./src/components/playlists/playlistswithdata.tsx","./src/components/playlists/index.tsx","./src/components/playlists/styles.tsx","./src/components/settings/settings.tsx","./src/components/settings/settingsstate.ts","./src/components/settings/settingswithdata.tsx","./src/components/settings/index.tsx","./src/components/settings/styles.tsx","./src/components/settings/library/library.tsx","./src/components/settings/library/librarywithdata.tsx","./src/components/settings/library/index.tsx","./src/components/settings/library/styles.tsx","./src/components/settings/playback/playback.tsx","./src/components/settings/playback/playbackwithdata.tsx","./src/components/settings/playback/consts.ts","./src/components/settings/playback/index.tsx","./src/components/settings/playback/styles.tsx","./src/components/settings/sound/sound.tsx","./src/components/settings/sound/soundwithdata.tsx","./src/components/settings/sound/index.tsx","./src/components/settings/sound/styles.tsx","./src/components/settings/sound/equalizer/equalizer.tsx","./src/components/settings/sound/equalizer/equalizerwithdata.tsx","./src/components/settings/sound/equalizer/index.tsx","./src/components/settings/sound/equalizer/styles.tsx","./src/components/sidebar/sidebar.test.tsx","./src/components/sidebar/sidebar.tsx","./src/components/sidebar/sidebarwithdata.tsx","./src/components/sidebar/stidebar.stories.tsx","./src/components/sidebar/index.tsx","./src/components/sidebar/styles.tsx","./src/components/switch/switch.tsx","./src/components/switch/index.tsx","./src/components/table/table.tsx","./src/components/table/index.tsx","./src/components/tracks/tracks.stories.tsx","./src/components/tracks/tracks.test.tsx","./src/components/tracks/tracks.tsx","./src/components/tracks/trackswithdata.tsx","./src/components/tracks/index.tsx","./src/components/tracks/mocks.tsx","./src/components/tracks/styles.tsx","./src/components/virtualizedtable/virtualizedtable.tsx","./src/components/virtualizedtable/index.tsx","./src/containers/albumdetails/albumdetailspage.tsx","./src/containers/albumdetails/index.tsx","./src/containers/albums/albumspage.tsx","./src/containers/albums/index.tsx","./src/containers/artistdetails/artistdetailspage.tsx","./src/containers/artistdetails/index.tsx","./src/containers/artists/artistspage.tsx","./src/containers/artists/index.tsx","./src/containers/extensions/extensionspage.tsx","./src/containers/extensions/index.tsx","./src/containers/files/filespage.tsx","./src/containers/files/index.tsx","./src/containers/likes/likespage.tsx","./src/containers/likes/index.tsx","./src/containers/playlistdetails/smartplaylistdetailspage.tsx","./src/containers/playlistdetails/index.tsx","./src/containers/playlists/playlistspage.tsx","./src/containers/playlists/index.tsx","./src/containers/settings/settingspage.tsx","./src/containers/settings/index.tsx","./src/containers/tracks/trackspage.tsx","./src/containers/tracks/index.tsx","./src/graphql/browse/query.ts","./src/graphql/device/mutation.ts","./src/graphql/device/query.ts","./src/graphql/library/mutation.ts","./src/graphql/library/query.ts","./src/graphql/playback/mutation.ts","./src/graphql/playback/query.ts","./src/graphql/playback/subscription.ts","./src/graphql/playlist/mutation.ts","./src/graphql/playlist/query.ts","./src/graphql/playlist/subscription.ts","./src/graphql/savedplaylist/mutation.ts","./src/graphql/savedplaylist/query.ts","./src/graphql/settings/mutation.ts","./src/graphql/settings/query.ts","./src/graphql/smartplaylist/mutation.ts","./src/graphql/smartplaylist/query.ts","./src/graphql/sound/mutation.tsx","./src/graphql/system/query.ts","./src/hooks/graphql.tsx","./src/hooks/useformat.tsx","./src/hooks/useplayqueue.tsx","./src/hooks/useresumeplaylist.tsx","./src/hooks/usesettings.tsx","./src/providers/graphqlprovider.tsx","./src/providers/themeprovider.tsx","./src/providers/index.tsx","./src/types/file.ts","./src/types/playlist.ts","./src/types/track.ts","./src/lib/graphql-client.ts","./src/lib/subscription-client.ts","./src/stories/button.stories.ts","./src/stories/button.tsx","./src/stories/header.stories.ts","./src/stories/header.tsx","./src/stories/page.stories.ts","./src/stories/page.tsx"],"version":"5.6.2"}