diff --git a/eslint.config.mjs b/eslint.config.mjs index c4e8f2b..974af76 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -7,6 +7,7 @@ import tseslint from 'typescript-eslint' import tsEslintParser from '@typescript-eslint/parser' import eslintPluginUnicorn from 'eslint-plugin-unicorn' import reactPlugin from 'eslint-plugin-react' +import pluginQuery from '@tanstack/eslint-plugin-query' export default tseslint.config( { ignores: ['dist', 'node_modules', '.react-router'] }, @@ -17,6 +18,7 @@ export default tseslint.config( jsxA11y.flatConfigs.recommended, importPlugin.flatConfigs.recommended, eslintPluginUnicorn.configs['flat/recommended'], + ...pluginQuery.configs['flat/recommended'], ], files: ['**/*.{ts,tsx}'], languageOptions: { diff --git a/package.json b/package.json index 57fb654..823cc73 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,13 @@ "@react-router/fs-routes": "^7.1.3", "@react-router/node": "^7.1.3", "@react-router/serve": "^7.1.3", + "@tanstack/react-query": "^5.66.9", + "chart.js": "^4.4.8", "class-variance-authority": "^0.7.1", "html-react-parser": "^5.2.2", "isbot": "^5.1.17", "react": "^19.0.0", + "react-chartjs-2": "^5.3.0", "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", "react-router": "^7.1.3", @@ -38,6 +41,7 @@ "@react-router/dev": "^7.1.3", "@tailwindcss/typography": "^0.5.16", "@tailwindcss/vite": "^4.0.0", + "@tanstack/eslint-plugin-query": "^5.66.1", "@types/node": "^20.17.16", "@types/react": "^19.0.1", "@types/react-dom": "^19.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aee30b3..7c984fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,12 @@ importers: '@react-router/serve': specifier: ^7.1.3 version: 7.1.3(react-router@7.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) + '@tanstack/react-query': + specifier: ^5.66.9 + version: 5.66.9(react@19.0.0) + chart.js: + specifier: ^4.4.8 + version: 4.4.8 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -35,6 +41,9 @@ importers: react: specifier: ^19.0.0 version: 19.0.0 + react-chartjs-2: + specifier: ^5.3.0 + version: 5.3.0(chart.js@4.4.8)(react@19.0.0) react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) @@ -75,6 +84,9 @@ importers: '@tailwindcss/vite': specifier: ^4.0.0 version: 4.0.1(vite@5.4.14(@types/node@20.17.16)(lightningcss@1.29.1)) + '@tanstack/eslint-plugin-query': + specifier: ^5.66.1 + version: 5.66.1(eslint@8.57.1)(typescript@5.7.3) '@types/node': specifier: ^20.17.16 version: 20.17.16 @@ -619,6 +631,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + '@mjackson/node-fetch-server@0.2.0': resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} @@ -1331,6 +1346,19 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 + '@tanstack/eslint-plugin-query@5.66.1': + resolution: {integrity: sha512-pYMVTGgJ7yPk9Rm6UWEmbY6TX0EmMmxJqYkthgeDCwEznToy2m+W928nUODFirtZBZlhBsqHy33LO0kyTlgf0w==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@tanstack/query-core@5.66.4': + resolution: {integrity: sha512-skM/gzNX4shPkqmdTCSoHtJAPMTtmIJNS0hE+xwTTUVYwezArCT34NMermABmBVUg5Ls5aiUXEDXfqwR1oVkcA==} + + '@tanstack/react-query@5.66.9': + resolution: {integrity: sha512-NRI02PHJsP5y2gAuWKP+awamTIBFBSKMnO6UVzi03GTclmHHHInH5UzVgzi5tpu4+FmGfsdT7Umqegobtsp23A==} + peerDependencies: + react: ^18 || ^19 + '@tanstack/react-virtual@3.13.0': resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} peerDependencies: @@ -1633,6 +1661,10 @@ packages: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chart.js@4.4.8: + resolution: {integrity: sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==} + engines: {pnpm: '>=8'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -3401,6 +3433,12 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + react-chartjs-2@5.3.0: + resolution: {integrity: sha512-UfZZFnDsERI3c3CZGxzvNJd02SHjaSJ8kgW1djn65H1KK8rehwTjyrRKOG3VTMG8wtHZ5rgAO5oTHtHi9GCCmw==} + peerDependencies: + chart.js: ^4.1.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-d3-tree@3.6.2: resolution: {integrity: sha512-1ExQlmEnv5iOw9XfZ3EcESDjzGXVKPAmyDJTJbvVfiwkplZtP7CcNEY0tKZf4XSW0FzYJf4aFXprGJen+95yuw==} peerDependencies: @@ -4710,6 +4748,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@kurkle/color@0.3.4': {} + '@mjackson/node-fetch-server@0.2.0': {} '@nodelib/fs.scandir@2.1.5': @@ -5395,6 +5435,21 @@ snapshots: tailwindcss: 4.0.1 vite: 5.4.14(@types/node@20.17.16)(lightningcss@1.29.1) + '@tanstack/eslint-plugin-query@5.66.1(eslint@8.57.1)(typescript@5.7.3)': + dependencies: + '@typescript-eslint/utils': 8.22.0(eslint@8.57.1)(typescript@5.7.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@tanstack/query-core@5.66.4': {} + + '@tanstack/react-query@5.66.9(react@19.0.0)': + dependencies: + '@tanstack/query-core': 5.66.4 + react: 19.0.0 + '@tanstack/react-virtual@3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/virtual-core': 3.13.0 @@ -5759,6 +5814,10 @@ snapshots: chalk@5.4.1: {} + chart.js@4.4.8: + dependencies: + '@kurkle/color': 0.3.4 + chokidar@4.0.3: dependencies: readdirp: 4.1.1 @@ -7594,6 +7653,11 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + react-chartjs-2@5.3.0(chart.js@4.4.8)(react@19.0.0): + dependencies: + chart.js: 4.4.8 + react: 19.0.0 + react-d3-tree@3.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@bkrem/react-transition-group': 1.3.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)