From 21b7f280a4dea6abdf2167e19aa4d7493eb015ad Mon Sep 17 00:00:00 2001 From: Kyujin Cho Date: Mon, 25 Nov 2024 02:37:09 +0000 Subject: [PATCH] feat: support visualizing inference metrics --- package.json | 1 + pnpm-lock.yaml | 1037 ++++++++++++++++- react/data/schema.graphql | 6 +- react/src/components/EndpointMetricsModal.tsx | 186 +++ react/src/pages/EndpointDetailPage.tsx | 22 + resources/i18n/en.json | 3 +- version.json | 2 +- 7 files changed, 1226 insertions(+), 31 deletions(-) create mode 100644 react/src/components/EndpointMetricsModal.tsx diff --git a/package.json b/package.json index 4793134268..24db8d4e7e 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "theme-schema:update": "pnpm dlx typescript-json-schema \"./react/node_modules/antd/es/config-provider/context.d.ts\" ThemeConfig -o ./resources/antdThemeConfig.schema.json --esModuleInterop" }, "dependencies": { + "@ant-design/charts": "^2.2.3", "@iarna/toml": "^2.2.5", "@lit/reactive-element": "^2.0.4", "@material/mwc-button": "^0.27.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48f0dc13bc..f3f302c49b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ant-design/charts': + specifier: ^2.2.3 + version: 2.2.3(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) '@iarna/toml': specifier: ^2.2.5 version: 2.2.5 @@ -188,6 +191,9 @@ importers: patch-package: specifier: ^8.0.0 version: 8.0.0 + react-chartjs-2: + specifier: ^5.2.0 + version: 5.2.0(chart.js@4.4.3) tus-js-client: specifier: ^4.1.0 version: 4.1.0 @@ -287,7 +293,7 @@ importers: version: 10.1.0(eslint@8.57.0) better-docs: specifier: ^2.7.3 - version: 2.7.3(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + version: 2.7.3(prop-types@15.8.1) browserify: specifier: ^17.0.0 version: 17.0.0 @@ -427,6 +433,144 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@ant-design/charts-util@0.0.1-alpha.6': + resolution: {integrity: sha512-roZobGkUJ0WqULPiQkX/2j01r6Cn0W6WTVpszq9u8dZKwyrSDr+UgfA/hDmrwOm9TWD9HAxe7aRHnvC06dux8w==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + + '@ant-design/charts-util@0.0.1-alpha.7': + resolution: {integrity: sha512-Yh0o6EdO6SvdSnStFZMbnUzjyymkVzV+TQ9ymVW9hlVgO/fUkUII3JYSdV+UVcFnYwUF0YiDKuSTLCZNAzg2bQ==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + + '@ant-design/charts@2.2.3': + resolution: {integrity: sha512-gjyOJwAvRH3NztbR4R7bQ+wVfA/jRT+EgtSEQxQtjka4w0srMIftXgaoxoycgCEHgO1eUg20RWXx0mMFKyWIfg==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + + '@ant-design/graphs@2.0.0': + resolution: {integrity: sha512-giwe60AHwcQp5mXKQrsDU2/34cKOJQoc4rYPB9N1CqaGFcEWqOi6Kiz7O9s0QRwPBpzyP/boyP01a9qb03ycKw==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + + '@ant-design/plots@2.3.2': + resolution: {integrity: sha512-shFV2DTQcbQDtzBwpMagG2pnKy3+I4igws6VQvM7m8UIZtWFSwkWpjCnOl7Xefqgnov/M0C9HbaVGCGc9ZfIqA==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + + '@antv/algorithm@0.1.26': + resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==} + + '@antv/component@2.1.1': + resolution: {integrity: sha512-V0UCq3Bekqtjw5WedexT1tHM/9x5BY0UAaU7G/5A2NhRfp9GuaQ8xGWLMSWlCQiJSRZWhPIA7RoOSw4Y/W+7UA==} + + '@antv/coord@0.4.7': + resolution: {integrity: sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==} + + '@antv/event-emitter@0.1.3': + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + + '@antv/g-camera-api@2.0.21': + resolution: {integrity: sha512-cU903cmIBEyVX6hk7bmoltnnORnRd+KnRQsFzWv+Gg8l99bVOEqVa6/YE+Geh9Gt0JVUr+k06KVs8V40IVkz5Q==} + + '@antv/g-canvas@2.0.24': + resolution: {integrity: sha512-wXEU+8opR6pQ/NLbcsx2Mz90vDd44GSgSP4/G9lmda9xzoNNzWVge8aRlDf/bK8r0N7oN8xsdaXE9bN8YQtCUw==} + + '@antv/g-dom-mutation-observer-api@2.0.18': + resolution: {integrity: sha512-LOriTfw9iSJVQv24VpBKnwWTy2Axv1JxnOpfC6siV8M1D+5cfv+fBmWs6cIQKxM9p7RZSkpaYFQWM27+sH0AvA==} + + '@antv/g-lite@2.2.2': + resolution: {integrity: sha512-Ffk7Jar+n6lUA+TEvoEaN30rAWe5l6Ybic7lucA90PKiyCsN0w+qVGJzbvskamuwp3RmcSZDNwQGP8vg374dCA==} + + '@antv/g-math@3.0.0': + resolution: {integrity: sha512-AkmiNIEL1vgqTPeGY2wtsMdBBqKFwF7SKSgs+D1iOS/rqYMsXdhp/HvtuQ5tx/HdawE/ZzTiicIYopc520ADZw==} + + '@antv/g-plugin-canvas-path-generator@2.1.2': + resolution: {integrity: sha512-ILaKEQvbAZNkRhbE3kWxd0EszDAb3TE0HQKNfur7YuVkQMgACDj6jbVUULFPcGpcw/pQbWM8nD1RRf24hfFAlw==} + + '@antv/g-plugin-canvas-picker@2.1.3': + resolution: {integrity: sha512-HGb4DFknjZKDfXThKxEd9rW0DvbuOl7l7z/rybJ75TW2r+tk1EEDMQZepui4mSCKiewd+Zn03kbc5VytRQ1qTA==} + + '@antv/g-plugin-canvas-renderer@2.2.3': + resolution: {integrity: sha512-aTr1hLVGNxu79M4HoBO0ookBJ21PGVk/T/BZK2tqGbohn3vyZtWi90VS3bXMU34m6p6vfIlDa6th1UGFbs48vQ==} + + '@antv/g-plugin-dom-interaction@2.1.7': + resolution: {integrity: sha512-wrlcFlWsXq9Pa6ju5de8V0TzIR2GivBOkRyHQuNba6kpUC1RAT0EHpTpPCJML+Jys8nt8A0ppssSF4E0jZ1MpQ==} + + '@antv/g-plugin-dragndrop@2.0.18': + resolution: {integrity: sha512-kjRj/yoWXh5J0Db/gtB3TFNlR4x3dMWvlRz6+7M3ka/mlrdMS0SGFLZfbWq6xvN+TzyiDXZdzSwA0A0OkA5Jww==} + + '@antv/g-plugin-html-renderer@2.1.7': + resolution: {integrity: sha512-MPquXo9MT9QHUdbvgwcBr9msNv9Qh2slOKpc1fzwWG7/aLpmOAxTAhd3+Sjj8JuVXHYw25Q3seI8lMJSGwTWvw==} + + '@antv/g-plugin-image-loader@2.1.3': + resolution: {integrity: sha512-tHGFVx96DcXo5Q4pwuRnwSe0dZ9I3N+JS1An8zziYUDqHRZ7ukNablzKSsdchjr9v2PdkWtxN5jQ0d3nz7EtJQ==} + + '@antv/g-plugin-svg-picker@2.0.20': + resolution: {integrity: sha512-gML0upmK24Bqr8REsuW8ZZqlKNHSEDtYlycFof36HDcKVNDWIf22ff5N3op1rCHkbny6XXjkIXoKulfQM6GHOA==} + + '@antv/g-plugin-svg-renderer@2.2.2': + resolution: {integrity: sha512-fWQ5gVSxcZr+Ip95wVeHY2WtoWnsyGDqj+lkxK1aAq0uzqI2qIVyawUc86R87Bv4UVY9b0B5KCtig5F5SGGwAg==} + + '@antv/g-svg@2.0.20': + resolution: {integrity: sha512-KMb5VzQ3nZpBBwH+sRIJGh/umfEpv4SmDWwV/Yy4nAn0X91yq++qEiIDCnq9QSXHOESV6Si7XJbo4WtX5G7TPw==} + + '@antv/g-web-animations-api@2.1.7': + resolution: {integrity: sha512-yx7ZwLUgiglCe7sSisloWesO8gwgNwTGeDE0fTHhk1kZmO0BxZ8q6/VxlmLgXTyqdRso+6wfsTo2HukMURJSNw==} + + '@antv/g2-extension-plot@0.2.1': + resolution: {integrity: sha512-WNv/LIUNJLwlfG8XXmKUbje9PbImtJqh36UDvuOk/uu+kmP/uMyHAXsBuu0yCOWdQgBVTVwoxszxJOCnY4mVfg==} + + '@antv/g2@5.2.7': + resolution: {integrity: sha512-bOU7ZJfa735KCqIsWWwlFtn3pc8TwJIckBhy7X8PFcxTuMIXzgqOt7vbMMdF4psBHMyIIOCDAo8zf9rGhgjEzA==} + + '@antv/g6-extension-react@0.1.7': + resolution: {integrity: sha512-fKk1weq2odHSTi5i8iSg9/keDPbufryA2TZ2X2j+qkSAwxJ7WtURagV/7/CUN9r1tMMk1eoiuzQZXdvc72a1GA==} + peerDependencies: + '@antv/g6': ^5.0.22 + react: '>=16.8' + react-dom: '>=16.8' + + '@antv/g6@5.0.30': + resolution: {integrity: sha512-QEpNNAz/DcSnyHMJJ1UNSVjKgbfJ0zhwHcq8I/+f/mZl87oK1GlcRi8FCVcPGBb+W3OH8xfH5GIjPxEPma1kxg==} + + '@antv/g@6.1.7': + resolution: {integrity: sha512-qv8YnBKqX3Yjs85U9OnBa6E92tNAI3cKrBhDrI5EikzjVPqfcVQLx0P5Zo8uzCYt7m9jFpJCi/iaGvWX/fA14Q==} + + '@antv/graphin@3.0.4': + resolution: {integrity: sha512-7ce6RDI5Z6ud93yiyS7b+mmFrHJhlkwwNo53kb7P7KoCsnV7ioMONDE6Gw0ROeMSR6TwHtxGZUhHw9wxnPp82Q==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@antv/graphlib@2.0.3': + resolution: {integrity: sha512-EtQR+DIfsYy28tumTnH560v7yIzXZq0nSgFBZh76mMiV1oHEN1L4p6JKu7IMtILH14mDqzmYYYFetYoAODoQUw==} + + '@antv/hierarchy@0.6.14': + resolution: {integrity: sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==} + + '@antv/layout@1.2.14-beta.9': + resolution: {integrity: sha512-wPlwBFMtq2lWZFc89/7Lzb8fjHnyKVZZ9zBb2h+zZIP0YWmVmHRE8+dqCiPKOyOGUXEdDtn813f1g107dCHZlg==} + + '@antv/react-g@2.0.23': + resolution: {integrity: sha512-Cur5/B6kRRK7kxj5USsEobKcGAGoWG9fDltVJ/3m95kMN95Ayx2rbVFxc5NavTrnmhxO4OUkRIyb0PDBFApfQA==} + peerDependencies: + react: ^16.13.1 + + '@antv/scale@0.4.16': + resolution: {integrity: sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==} + + '@antv/util@2.0.17': + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + + '@antv/util@3.3.10': + resolution: {integrity: sha512-basGML3DFA3O87INnzvDStjzS+n0JLEhRnRsDzP9keiXz8gT1z/fTdmJAZFOzMMWxy+HKbi7NbSt0+8vz/OsBQ==} + '@apideck/better-ajv-errors@0.3.6': resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -1070,6 +1214,10 @@ packages: resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} @@ -1155,6 +1303,15 @@ packages: engines: {node: '>=14.14'} hasBin: true + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -1449,6 +1606,14 @@ packages: '@lit/reactive-element@2.0.4': resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} + '@ljharb/resumer@0.0.1': + resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} + engines: {node: '>= 0.4'} + + '@ljharb/through@2.3.13': + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + '@malept/cross-spawn-promise@1.1.1': resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} engines: {node: '>= 10'} @@ -1700,6 +1865,11 @@ packages: '@mdn/browser-compat-data@4.2.1': resolution: {integrity: sha512-EWUguj2kd7ldmrF9F+vI5hUOralPd+sdsUnYbRy33vZTuZkduC1shE9TtEMEjAQwyfyMb4ole5KtjF8MsnQOlA==} + '@naoak/workerize-transferable@0.1.0': + resolution: {integrity: sha512-fDLfuP71IPNP5+zSfxFb52OHgtjZvauRJWbVnpzQ7G7BjcbLjTny0OW1d3ZO806XKpLWNKmeeW3MhE0sy8iwYQ==} + peerDependencies: + workerize-loader: '*' + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2210,6 +2380,9 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/stylis@4.2.5': + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + '@types/triple-beam@1.3.5': resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} @@ -2845,6 +3018,9 @@ packages: react: ^17.0.2 react-dom: ^17.0.2 + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2873,6 +3049,7 @@ packages: boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -2957,6 +3134,9 @@ packages: btoa-lite@1.0.0: resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==} + bubblesets-js@2.3.4: + resolution: {integrity: sha512-DyMjHmpkS2+xcFNtyN00apJYL3ESdp9fTrkDr5+9Qg/GPqFmcWgGsK1akZnttE1XFxJ/VMy4DNNGMGYtmFp1Sg==} + buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -3045,6 +3225,9 @@ packages: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} @@ -3214,6 +3397,9 @@ packages: combine-source-map@0.8.0: resolution: {integrity: sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==} + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + command-line-args@5.2.1: resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} @@ -3240,6 +3426,10 @@ packages: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -3306,6 +3496,9 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + contour_plot@0.0.1: + resolution: {integrity: sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==} + convert-source-map@1.1.3: resolution: {integrity: sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==} @@ -3379,13 +3572,93 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + custom-error-instance@2.1.1: resolution: {integrity: sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==} + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-binarytree@1.0.2: + resolution: {integrity: sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw==} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-force-3d@3.0.5: + resolution: {integrity: sha512-tdwhAhoTYZY/a6eo9nR7HP3xSW/C6XvJTbeRpR92nlPzH6OiE+4MliN9feuSFd0tPtEUo+191qOhCTWx3NYifg==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-octree@1.0.2: + resolution: {integrity: sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + d@1.0.2: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} + dagre@0.8.5: + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} + dash-ast@1.0.0: resolution: {integrity: sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==} @@ -3468,6 +3741,10 @@ packages: deep-equal@1.0.1: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -3582,6 +3859,10 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + dotignore@0.1.2: + resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} + hasBin: true + drawflow@0.0.59: resolution: {integrity: sha512-HJM/8trYzignViTMzUSpskRclDhE62jM6oxjgqEJQBbkX9QvDG7JJwRlvdjqnjfL192Pdb0aIysrZMUqG8/vyg==} @@ -3653,6 +3934,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} @@ -3854,6 +4139,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true esniff@2.0.1: @@ -4078,6 +4364,13 @@ packages: resolution: {integrity: sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==} engines: {node: '>= 12'} + flru@1.0.2: + resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} + engines: {node: '>=6'} + + fmin@0.0.2: + resolution: {integrity: sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==} + fmix@0.1.0: resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} @@ -4244,6 +4537,9 @@ packages: github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -4305,6 +4601,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphlib@2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + gulp-sort@2.0.0: resolution: {integrity: sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==} @@ -4411,6 +4710,10 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} + hull.js@1.0.6: + resolution: {integrity: sha512-TC7e9sHYOaCVms0sn2hN7buxnaGfcl9h5EPVoVX9DTPoMpqQiS9bf3tmGDgiNaMVHBD91RAvWjCxrJ5Jx8BI5A==} + deprecated: This package is no longer published on npmjs.com, you are using a deprecated and vulnerable version. Do not use it. Check package homepage on GitHub to see how to fetch the latest version. + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -4504,6 +4807,10 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + interpret@3.1.1: resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} engines: {node: '>=10.13.0'} @@ -4520,6 +4827,9 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + is-any-array@2.0.1: + resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} + is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -4969,6 +5279,10 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json2module@0.0.3: + resolution: {integrity: sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==} + hasBin: true + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -5135,6 +5449,10 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -5445,6 +5763,22 @@ packages: engines: {node: '>=10'} hasBin: true + ml-array-max@1.2.4: + resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} + + ml-array-min@1.2.3: + resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==} + + ml-array-rescale@1.3.7: + resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==} + + ml-matrix@6.12.0: + resolution: {integrity: sha512-AGfR+pWaC0GmzjUnB6BfwhndPEUGz0i7QUYdqNuw1zhTov/vSRJ9pP2hs6BoGpaSbtXgrKjZz2zjD1M0xuur6A==} + + mock-property@1.0.3: + resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} + engines: {node: '>= 0.4'} + module-deps@6.2.3: resolution: {integrity: sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==} engines: {node: '>= 0.8.0'} @@ -5484,6 +5818,11 @@ packages: nanocolors@0.2.13: resolution: {integrity: sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==} + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} @@ -5569,10 +5908,17 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -5797,6 +6143,9 @@ packages: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} + pdfast@0.2.0: + resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} + pe-library@1.0.1: resolution: {integrity: sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==} engines: {node: '>=14', npm: '>=7'} @@ -5863,6 +6212,13 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + postject@1.0.0-alpha.6: resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} engines: {node: '>=14.0.0'} @@ -6021,6 +6377,9 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + random-path@0.1.2: resolution: {integrity: sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw==} @@ -6042,6 +6401,9 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + rbush@3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -6052,16 +6414,17 @@ packages: react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 + react-chartjs-2@5.2.0: + resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} + peerDependencies: + chart.js: ^4.1.1 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-docgen@5.4.3: resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==} engines: {node: '>=8.10.0'} hasBin: true - react-dom@17.0.2: - resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} - peerDependencies: - react: 17.0.2 - react-frame-component@5.2.7: resolution: {integrity: sha512-ROjHtSLoSVYUBfTieazj/nL8jIX9rZFmHC0yXEU+dx6Y82OcBEGgU9o7VyHMrBFUN9FuQ849MtIPNNLsb4krbg==} peerDependencies: @@ -6075,9 +6438,11 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react@17.0.2: - resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + react-reconciler@0.26.2: + resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} engines: {node: '>=0.10.0'} + peerDependencies: + react: ^17.0.2 read-only-stream@2.0.0: resolution: {integrity: sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==} @@ -6261,6 +6626,10 @@ packages: rollup-plugin-workbox@8.1.0: resolution: {integrity: sha512-au2HVy+sM/+3PdpHG8hPsPRvNFX6nOp3VHRARopDNnGCMScwsGfM+vwf1CbrHJDeOBV8y0lbtj12HjtEmttIuQ==} + rollup@0.25.8: + resolution: {integrity: sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==} + hasBin: true + rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} @@ -6274,6 +6643,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -6369,6 +6741,9 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + shasum-object@1.0.0: resolution: {integrity: sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==} @@ -6437,12 +6812,23 @@ packages: resolution: {integrity: sha512-gzx7USv55AFRQ7UCWJHHauwD/ptUHF9MLXCGO3f5M9zauDPZ/4a9H6/VVbOXefdpEoI1unwB/bArHIVMbWBHmA==} engines: {node: '>=10'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.3.3: + resolution: {integrity: sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==} + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.1.32: + resolution: {integrity: sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==} + engines: {node: '>=0.8.0'} + source-map@0.1.43: resolution: {integrity: sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==} engines: {node: '>=0.8.0'} @@ -6631,6 +7017,16 @@ packages: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} + styled-components@6.1.13: + resolution: {integrity: sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + + stylis@4.3.2: + resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} + subarg@1.0.0: resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} @@ -6658,6 +7054,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-path-parser@1.1.0: + resolution: {integrity: sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==} + synckit@0.9.1: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6673,6 +7072,10 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tape@4.17.0: + resolution: {integrity: sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==} + hasBin: true + tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -6863,6 +7266,9 @@ packages: ts-map@1.0.3: resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -7327,6 +7733,11 @@ packages: workbox-window@7.1.0: resolution: {integrity: sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g==} + workerize-loader@2.0.2: + resolution: {integrity: sha512-HoZ6XY4sHWxA2w0WpzgBwUiR3dv1oo7bS+oCwIpb6n54MclQ/7KXdXsVIChTCygyuHtVuGBO1+i3HzTt699UJQ==} + peerDependencies: + webpack: '*' + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -7436,6 +7847,312 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@ant-design/charts-util@0.0.1-alpha.6': {} + + '@ant-design/charts-util@0.0.1-alpha.7': + dependencies: + lodash: 4.17.21 + + '@ant-design/charts@2.2.3(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + '@ant-design/graphs': 2.0.0(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + '@ant-design/plots': 2.3.2 + lodash: 4.17.21 + transitivePeerDependencies: + - workerize-loader + + '@ant-design/graphs@2.0.0(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + '@ant-design/charts-util': 0.0.1-alpha.7 + '@antv/g6': 5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + '@antv/g6-extension-react': 0.1.7(@antv/g6@5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))) + '@antv/graphin': 3.0.4(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + lodash: 4.17.21 + styled-components: 6.1.13 + transitivePeerDependencies: + - workerize-loader + + '@ant-design/plots@2.3.2': + dependencies: + '@ant-design/charts-util': 0.0.1-alpha.6 + '@antv/event-emitter': 0.1.3 + '@antv/g': 6.1.7 + '@antv/g2': 5.2.7 + '@antv/g2-extension-plot': 0.2.1 + lodash: 4.17.21 + + '@antv/algorithm@0.1.26': + dependencies: + '@antv/util': 2.0.17 + tslib: 2.6.3 + + '@antv/component@2.1.1': + dependencies: + '@antv/g': 6.1.7 + '@antv/scale': 0.4.16 + '@antv/util': 3.3.10 + svg-path-parser: 1.1.0 + + '@antv/coord@0.4.7': + dependencies: + '@antv/scale': 0.4.16 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + + '@antv/event-emitter@0.1.3': {} + + '@antv/g-camera-api@2.0.21': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-canvas@2.0.24': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-plugin-canvas-path-generator': 2.1.2 + '@antv/g-plugin-canvas-picker': 2.1.3 + '@antv/g-plugin-canvas-renderer': 2.2.3 + '@antv/g-plugin-dom-interaction': 2.1.7 + '@antv/g-plugin-html-renderer': 2.1.7 + '@antv/g-plugin-image-loader': 2.1.3 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-dom-mutation-observer-api@2.0.18': + dependencies: + '@antv/g-lite': 2.2.2 + '@babel/runtime': 7.26.0 + + '@antv/g-lite@2.2.2': + dependencies: + '@antv/g-math': 3.0.0 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + d3-color: 3.1.0 + eventemitter3: 5.0.1 + gl-matrix: 3.4.3 + rbush: 3.0.1 + tslib: 2.6.3 + + '@antv/g-math@3.0.0': + dependencies: + '@antv/util': 3.3.10 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-plugin-canvas-path-generator@2.1.2': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-math': 3.0.0 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-plugin-canvas-picker@2.1.3': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-math': 3.0.0 + '@antv/g-plugin-canvas-path-generator': 2.1.2 + '@antv/g-plugin-canvas-renderer': 2.2.3 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-plugin-canvas-renderer@2.2.3': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-math': 3.0.0 + '@antv/g-plugin-canvas-path-generator': 2.1.2 + '@antv/g-plugin-image-loader': 2.1.3 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-plugin-dom-interaction@2.1.7': + dependencies: + '@antv/g-lite': 2.2.2 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-plugin-dragndrop@2.0.18': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-plugin-html-renderer@2.1.7': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-plugin-image-loader@2.1.3': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-plugin-svg-picker@2.0.20': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-plugin-svg-renderer': 2.2.2 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-plugin-svg-renderer@2.2.2': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + tslib: 2.6.3 + + '@antv/g-svg@2.0.20': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/g-plugin-dom-interaction': 2.1.7 + '@antv/g-plugin-svg-picker': 2.0.20 + '@antv/g-plugin-svg-renderer': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g-web-animations-api@2.1.7': + dependencies: + '@antv/g-lite': 2.2.2 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + tslib: 2.6.3 + + '@antv/g2-extension-plot@0.2.1': + dependencies: + '@antv/g2': 5.2.7 + '@antv/util': 3.3.10 + d3-array: 3.2.4 + d3-hierarchy: 3.1.2 + + '@antv/g2@5.2.7': + dependencies: + '@antv/component': 2.1.1 + '@antv/coord': 0.4.7 + '@antv/event-emitter': 0.1.3 + '@antv/g': 6.1.7 + '@antv/g-canvas': 2.0.24 + '@antv/g-plugin-dragndrop': 2.0.18 + '@antv/scale': 0.4.16 + '@antv/util': 3.3.10 + d3-array: 3.2.4 + d3-dsv: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-path: 3.1.0 + d3-scale-chromatic: 3.1.0 + d3-shape: 3.2.0 + flru: 1.0.2 + fmin: 0.0.2 + pdfast: 0.2.0 + + '@antv/g6-extension-react@0.1.7(@antv/g6@5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))))': + dependencies: + '@antv/g': 6.1.7 + '@antv/g-svg': 2.0.20 + '@antv/g6': 5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + '@antv/react-g': 2.0.23 + + '@antv/g6@5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + '@antv/algorithm': 0.1.26 + '@antv/component': 2.1.1 + '@antv/event-emitter': 0.1.3 + '@antv/g': 6.1.7 + '@antv/g-canvas': 2.0.24 + '@antv/g-plugin-dragndrop': 2.0.18 + '@antv/graphlib': 2.0.3 + '@antv/hierarchy': 0.6.14 + '@antv/layout': 1.2.14-beta.9(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + '@antv/util': 3.3.10 + bubblesets-js: 2.3.4 + hull.js: 1.0.6 + transitivePeerDependencies: + - workerize-loader + + '@antv/g@6.1.7': + dependencies: + '@antv/g-camera-api': 2.0.21 + '@antv/g-dom-mutation-observer-api': 2.0.18 + '@antv/g-lite': 2.2.2 + '@antv/g-web-animations-api': 2.1.7 + '@babel/runtime': 7.26.0 + + '@antv/graphin@3.0.4(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + '@antv/g6': 5.0.30(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + transitivePeerDependencies: + - workerize-loader + + '@antv/graphlib@2.0.3': + dependencies: + '@antv/event-emitter': 0.1.3 + + '@antv/hierarchy@0.6.14': {} + + '@antv/layout@1.2.14-beta.9(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/graphlib': 2.0.3 + '@antv/util': 3.3.10 + '@naoak/workerize-transferable': 0.1.0(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4))) + comlink: 4.4.2 + d3-force: 3.0.0 + d3-force-3d: 3.0.5 + d3-octree: 1.0.2 + d3-quadtree: 3.0.1 + dagre: 0.8.5 + ml-matrix: 6.12.0 + tslib: 2.6.3 + transitivePeerDependencies: + - workerize-loader + + '@antv/react-g@2.0.23': + dependencies: + '@antv/g': 6.1.7 + '@antv/util': 3.3.10 + '@babel/runtime': 7.26.0 + gl-matrix: 3.4.3 + react-reconciler: 0.26.2 + scheduler: 0.20.2 + tslib: 2.6.3 + + '@antv/scale@0.4.16': + dependencies: + '@antv/util': 3.3.10 + color-string: 1.9.1 + fecha: 4.2.3 + + '@antv/util@2.0.17': + dependencies: + csstype: 3.1.3 + tslib: 2.6.3 + + '@antv/util@3.3.10': + dependencies: + fast-deep-equal: 3.1.3 + gl-matrix: 3.4.3 + tslib: 2.6.3 + '@apideck/better-ajv-errors@0.3.6(ajv@8.17.1)': dependencies: ajv: 8.17.1 @@ -8272,6 +8989,10 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 @@ -8452,6 +9173,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@emotion/is-prop-valid@1.2.2': + dependencies: + '@emotion/memoize': 0.8.1 + + '@emotion/memoize@0.8.1': {} + + '@emotion/unitless@0.8.1': {} + '@esbuild/aix-ppc64@0.19.12': optional: true @@ -8789,6 +9518,14 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.1 + '@ljharb/resumer@0.0.1': + dependencies: + '@ljharb/through': 2.3.13 + + '@ljharb/through@2.3.13': + dependencies: + call-bind: 1.0.7 + '@malept/cross-spawn-promise@1.1.1': dependencies: cross-spawn: 7.0.3 @@ -9451,6 +10188,10 @@ snapshots: '@mdn/browser-compat-data@4.2.1': {} + '@naoak/workerize-transferable@0.1.0(workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)))': + dependencies: + workerize-loader: 2.0.2(webpack@5.93.0(webpack-cli@5.1.4)) + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10057,6 +10798,8 @@ snapshots: '@types/stack-utils@2.0.3': {} + '@types/stylis@4.2.5': {} + '@types/triple-beam@1.3.5': {} '@types/trusted-types@2.0.7': {} @@ -11024,14 +11767,12 @@ snapshots: before-after-hook@2.2.3: {} - better-docs@2.7.3(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + better-docs@2.7.3(prop-types@15.8.1): dependencies: brace: 0.11.1 - react: 17.0.2 - react-ace: 9.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-ace: 9.5.0 react-docgen: 5.4.3 - react-dom: 17.0.2(react@17.0.2) - react-frame-component: 5.2.7(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react-frame-component: 5.2.7(prop-types@15.8.1) typescript: 4.9.5 underscore: 1.13.7 vue-docgen-api: 3.26.0 @@ -11040,6 +11781,8 @@ snapshots: - prop-types - supports-color + big.js@5.2.2: {} + binary-extensions@2.3.0: {} bl@4.1.0: @@ -11268,6 +12011,8 @@ snapshots: btoa-lite@1.0.0: {} + bubblesets-js@2.3.4: {} + buffer-crc32@0.2.13: {} buffer-equal-constant-time@1.0.1: {} @@ -11364,6 +12109,8 @@ snapshots: camelcase@7.0.1: {} + camelize@1.0.1: {} + caniuse-lite@1.0.30001651: {} catharsis@0.9.0: @@ -11555,6 +12302,8 @@ snapshots: lodash.memoize: 3.0.4 source-map: 0.5.7 + comlink@4.4.2: {} + command-line-args@5.2.1: dependencies: array-back: 3.1.0 @@ -11579,6 +12328,8 @@ snapshots: commander@5.1.0: {} + commander@7.2.0: {} + commander@9.5.0: {} common-shakeify@1.1.2: @@ -11662,6 +12413,8 @@ snapshots: content-type@1.0.5: {} + contour_plot@0.0.1: {} + convert-source-map@1.1.3: {} convert-source-map@1.9.0: {} @@ -11764,13 +12517,87 @@ snapshots: crypto-random-string@2.0.0: {} + css-color-keywords@1.0.0: {} + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + csstype@3.1.3: {} + custom-error-instance@2.1.1: {} + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-binarytree@1.0.2: {} + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-force-3d@3.0.5: + dependencies: + d3-binarytree: 1.0.2 + d3-dispatch: 3.0.1 + d3-octree: 1.0.2 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-octree@1.0.2: {} + + d3-path@3.1.0: {} + + d3-quadtree@3.0.1: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-timer@3.0.1: {} + d@1.0.2: dependencies: es5-ext: 0.10.64 type: 2.7.3 + dagre@0.8.5: + dependencies: + graphlib: 2.1.8 + lodash: 4.17.21 + dash-ast@1.0.0: {} dash-ast@2.0.1: {} @@ -11829,6 +12656,15 @@ snapshots: deep-equal@1.0.1: {} + deep-equal@1.1.2: + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.6 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.2 + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -11929,6 +12765,10 @@ snapshots: dotenv@16.4.5: {} + dotignore@0.1.2: + dependencies: + minimatch: 3.1.2 + drawflow@0.0.59: {} ds-store@0.1.6: @@ -12034,6 +12874,8 @@ snapshots: emoji-regex@9.2.2: {} + emojis-list@3.0.0: {} + enabled@2.0.0: {} encode-utf8@1.0.3: @@ -12636,6 +13478,16 @@ snapshots: transitivePeerDependencies: - supports-color + flru@1.0.2: {} + + fmin@0.0.2: + dependencies: + contour_plot: 0.0.1 + json2module: 0.0.3 + rollup: 0.25.8 + tape: 4.17.0 + uglify-js: 2.8.29 + fmix@0.1.0: dependencies: imul: 1.0.1 @@ -12814,6 +13666,8 @@ snapshots: github-from-package@0.0.0: {} + gl-matrix@3.4.3: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -12913,6 +13767,10 @@ snapshots: graphemer@1.4.0: {} + graphlib@2.1.8: + dependencies: + lodash: 4.17.21 + gulp-sort@2.0.0: dependencies: through2: 2.0.5 @@ -13028,6 +13886,8 @@ snapshots: transitivePeerDependencies: - supports-color + hull.js@1.0.6: {} + human-signals@2.1.0: {} human-signals@5.0.0: {} @@ -13135,6 +13995,8 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + internmap@2.0.3: {} + interpret@3.1.1: {} into-stream@6.0.0: @@ -13146,6 +14008,8 @@ snapshots: ipaddr.js@1.9.1: {} + is-any-array@2.0.1: {} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -13766,6 +14630,10 @@ snapshots: json-stringify-safe@5.0.1: optional: true + json2module@0.0.3: + dependencies: + rw: 1.3.3 + json5@2.2.3: {} jsonfile@4.0.0: @@ -13996,6 +14864,12 @@ snapshots: loader-runner@4.3.0: {} + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -14288,6 +15162,34 @@ snapshots: mkdirp@1.0.4: {} + ml-array-max@1.2.4: + dependencies: + is-any-array: 2.0.1 + + ml-array-min@1.2.3: + dependencies: + is-any-array: 2.0.1 + + ml-array-rescale@1.3.7: + dependencies: + is-any-array: 2.0.1 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + + ml-matrix@6.12.0: + dependencies: + is-any-array: 2.0.1 + ml-array-rescale: 1.3.7 + + mock-property@1.0.3: + dependencies: + define-data-property: 1.1.4 + functions-have-names: 1.2.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + hasown: 2.0.2 + isarray: 2.0.5 + module-deps@6.2.3: dependencies: JSONStream: 1.3.5 @@ -14346,6 +15248,8 @@ snapshots: nanocolors@0.2.13: {} + nanoid@3.3.7: {} + napi-build-utils@1.0.2: {} natural-compare@1.4.0: {} @@ -14415,8 +15319,15 @@ snapshots: object-assign@4.1.1: {} + object-inspect@1.12.3: {} + object-inspect@1.13.2: {} + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + object-keys@1.1.1: {} object.assign@4.1.5: @@ -14650,6 +15561,8 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 + pdfast@0.2.0: {} + pe-library@1.0.1: {} pend@1.2.0: {} @@ -14726,6 +15639,14 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-value-parser@4.2.0: {} + + postcss@8.4.38: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.1 + postject@1.0.0-alpha.6: dependencies: commander: 9.5.0 @@ -14915,6 +15836,8 @@ snapshots: quick-lru@5.1.1: {} + quickselect@2.0.0: {} + random-path@0.1.2: dependencies: base32-encode: 1.2.0 @@ -14941,6 +15864,10 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + rbush@3.0.1: + dependencies: + quickselect: 2.0.0 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -14948,15 +15875,17 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-ace@9.5.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + react-ace@9.5.0: dependencies: ace-builds: 1.35.4 diff-match-patch: 1.0.5 lodash.get: 4.4.2 lodash.isequal: 4.5.0 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + + react-chartjs-2@5.2.0(chart.js@4.4.3): + dependencies: + chart.js: 4.4.3 react-docgen@5.4.3: dependencies: @@ -14973,27 +15902,19 @@ snapshots: transitivePeerDependencies: - supports-color - react-dom@17.0.2(react@17.0.2): - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react: 17.0.2 - scheduler: 0.20.2 - - react-frame-component@5.2.7(prop-types@15.8.1)(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + react-frame-component@5.2.7(prop-types@15.8.1): dependencies: prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) react-is@16.13.1: {} react-is@18.3.1: {} - react@17.0.2: + react-reconciler@0.26.2: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 + scheduler: 0.20.2 read-only-stream@2.0.0: dependencies: @@ -15192,6 +16113,12 @@ snapshots: - '@types/babel__core' - supports-color + rollup@0.25.8: + dependencies: + chalk: 1.1.3 + minimist: 1.2.8 + source-map-support: 0.3.3 + rollup@2.79.1: optionalDependencies: fsevents: 2.3.3 @@ -15222,6 +16149,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.1: dependencies: tslib: 2.6.3 @@ -15369,6 +16298,8 @@ snapshots: dependencies: kind-of: 6.0.3 + shallowequal@1.1.0: {} + shasum-object@1.0.0: dependencies: fast-safe-stringify: 2.1.1 @@ -15432,6 +16363,12 @@ snapshots: sortobject@4.17.0: {} + source-map-js@1.2.1: {} + + source-map-support@0.3.3: + dependencies: + source-map: 0.1.32 + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 @@ -15442,6 +16379,10 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.1.32: + dependencies: + amdefine: 1.0.1 + source-map@0.1.43: dependencies: amdefine: 1.0.1 @@ -15649,6 +16590,20 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + styled-components@6.1.13: + dependencies: + '@emotion/is-prop-valid': 1.2.2 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.5 + css-to-react-native: 3.2.0 + csstype: 3.1.3 + postcss: 8.4.38 + shallowequal: 1.1.0 + stylis: 4.3.2 + tslib: 2.6.2 + + stylis@4.3.2: {} + subarg@1.0.0: dependencies: minimist: 1.2.8 @@ -15675,6 +16630,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-path-parser@1.1.0: {} + synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 @@ -15691,6 +16648,25 @@ snapshots: tapable@2.2.1: {} + tape@4.17.0: + dependencies: + '@ljharb/resumer': 0.0.1 + '@ljharb/through': 2.3.13 + call-bind: 1.0.7 + deep-equal: 1.1.2 + defined: 1.0.1 + dotignore: 0.1.2 + for-each: 0.3.3 + glob: 7.2.3 + has: 1.0.4 + inherits: 2.0.4 + is-regex: 1.1.4 + minimist: 1.2.8 + mock-property: 1.0.3 + object-inspect: 1.12.3 + resolve: 1.22.8 + string.prototype.trim: 1.2.9 + tar-fs@2.1.1: dependencies: chownr: 1.1.4 @@ -15894,6 +16870,8 @@ snapshots: ts-map@1.0.3: {} + tslib@2.6.2: {} + tslib@2.6.3: {} tsscmp@1.0.6: {} @@ -16487,6 +17465,11 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.1.0 + workerize-loader@2.0.2(webpack@5.93.0(webpack-cli@5.1.4)): + dependencies: + loader-utils: 2.0.4 + webpack: 5.93.0(webpack-cli@5.1.4) + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 diff --git a/react/data/schema.graphql b/react/data/schema.graphql index a1634e2d18..0cd0a7ab9f 100644 --- a/react/data/schema.graphql +++ b/react/data/schema.graphql @@ -411,7 +411,7 @@ type DomainNode implements Node { scaling_groups(filter: String, order: String, offset: Int, before: String, after: String, first: Int, last: Int): ScalinGroupConnection } -"""Added in 24.12.0.""" +"""Added in 24.09.1.""" scalar Bytes """Added in 24.12.0.""" @@ -1373,6 +1373,7 @@ type Endpoint implements Item { status: String lifecycle_stage: String errors: [InferenceSessionError!]! + live_stat: JSONString } """Added in 24.03.5.""" @@ -1390,6 +1391,7 @@ type Routing implements Item { traffic_ratio: Float created_at: DateTime error_data: JSONString + live_stat: JSONString } type InferenceSessionError { @@ -2592,4 +2594,4 @@ type CheckAndTransitStatus { input CheckAndTransitStatusInput { ids: [GlobalIDField]! client_mutation_id: String -} \ No newline at end of file +} diff --git a/react/src/components/EndpointMetricsModal.tsx b/react/src/components/EndpointMetricsModal.tsx new file mode 100644 index 0000000000..57b2498e8c --- /dev/null +++ b/react/src/components/EndpointMetricsModal.tsx @@ -0,0 +1,186 @@ +import BAIModal, { BAIModalProps } from './BAIModal'; +import { EndpointMetricsModalQuery } from './__generated__/EndpointMetricsModalQuery.graphql'; +import { Bar, Line } from '@ant-design/charts'; +import { DownOutlined } from '@ant-design/icons'; +import { Col, Dropdown, Row, Space } from 'antd'; +import graphql from 'babel-plugin-relay/macro'; +import _ from 'lodash'; +import React, { useEffect, useMemo, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + fetchQuery, + useFragment, + useLazyLoadQuery, + useMutation, + useRelayEnvironment, +} from 'react-relay'; + +interface EndpointMetricsModalProps extends BAIModalProps { + endpoint_id: string; +} + +type LineChartData = { + label: string; + data: number; +}; + +const EndpointMetrics: React.FC<{ endpoint_id: string }> = ({ + endpoint_id, +}: { + endpoint_id: string; +}) => { + const relayEvn = useRelayEnvironment(); + + const [dataSeries, setDataSeries] = + useState<{ liveStat: any; lastUpdatedAt: Date }[]>(); + const [selectedMetric, setSelectedMetric] = useState(); + const [chartType, setChartType] = useState(); + + const updateStatInfo = async () => { + const response = await fetchQuery( + relayEvn, + graphql` + query EndpointMetricsModalQuery($endpointId: UUID!) { + endpoint(endpoint_id: $endpointId) { + name + live_stat @since(version: "24.03.11") + } + } + `, + { endpointId: endpoint_id }, + ).toPromise(); + const liveStatJSON = response?.endpoint?.live_stat; + if (liveStatJSON) { + setDataSeries((prev) => + [ + ...(prev || []), + { liveStat: JSON.parse(liveStatJSON), lastUpdatedAt: new Date() }, + ].slice(-30), + ); + } + }; + + useEffect(() => { + const itv = setInterval(updateStatInfo, 1500); + updateStatInfo(); + + return () => clearInterval(itv); + }, []); + + const chartData = useMemo(() => { + if (!dataSeries || !selectedMetric) return; + + const dataPoints = dataSeries.map((data) => data.liveStat[selectedMetric]); + if (dataPoints.length === 0) return; + const dataType = dataPoints[0].__type; + + setChartType(dataType); + switch (dataType) { + case 'HISTOGRAM': + const cdf = dataPoints[dataPoints.length - 1].current; + const max = parseFloat(cdf['+Inf']); + return Array.from(Object.keys(cdf)).map((label) => ({ + label, + data: parseFloat(cdf[label]) / max, + })); + case 'GAUGE': + case 'ACCUMULATION': + return dataPoints.map((point, index) => { + const label = `${_.padStart(dataSeries[index].lastUpdatedAt.getHours().toString(), 2, '0')}:${_.padStart(dataSeries[index].lastUpdatedAt.getMinutes().toString(), 2, '0')}:${_.padStart(dataSeries[index].lastUpdatedAt.getSeconds().toString(), 2, '0')}`; + return { label, data: parseFloat(point.current) }; + }); + default: + return; + } + }, [dataSeries, selectedMetric]); + + const chartStyles = useMemo(() => { + if (!chartType) return; + + switch (chartType) { + case 'HISTOGRAM': + return { + point: { + sizeField: 4, + }, + style: { + lineWidth: 2, + stroke: 'red', + }, + animation: false, + animate: false, + autoFit: true, + }; + case 'GAUGE': + case 'ACCUMULATION': + return { + style: { + lineWidth: 2, + stroke: 'blue', + }, + animation: false, + animate: false, + autoFit: true, + }; + } + }, [chartType]); + + return ( +
+ ({ + key, + label: `${key} (${dataSeries[0].liveStat[key].__type})`, + })) + : [], + onClick: (info) => setSelectedMetric(info.key), + }} + disabled={dataSeries?.length === 0} + > + e.preventDefault()}> + + {selectedMetric + ? `${selectedMetric} (${chartType})` + : 'Select Metric'} + + + + + +
+ {selectedMetric && chartData ? ( + + ) : null} +
+
+ ); +}; + +const EndpointMetricsModal: React.FC = ({ + endpoint_id, + ...modalProps +}) => { + const { t } = useTranslation(); + + return ( + + + + ); +}; + +export default EndpointMetricsModal; diff --git a/react/src/pages/EndpointDetailPage.tsx b/react/src/pages/EndpointDetailPage.tsx index 1cd4ed6507..38767e146c 100644 --- a/react/src/pages/EndpointDetailPage.tsx +++ b/react/src/pages/EndpointDetailPage.tsx @@ -1,4 +1,5 @@ import CopyableCodeText from '../components/CopyableCodeText'; +import EndpointMetricsModal from '../components/EndpointMetricsModal'; import EndpointOwnerInfo from '../components/EndpointOwnerInfo'; import EndpointStatusTag from '../components/EndpointStatusTag'; import EndpointTokenGenerationModal from '../components/EndpointTokenGenerationModal'; @@ -29,6 +30,7 @@ import { CheckOutlined, CloseOutlined, FolderOutlined, + LineChartOutlined, LoadingOutlined, PlusOutlined, QuestionCircleOutlined, @@ -102,6 +104,8 @@ const EndpointDetailPage: React.FC = () => { const [isPendingClearError, startClearErrorTransition] = useTransition(); const [selectedSessionErrorForModal, setSelectedSessionErrorForModal] = useState(null); + const [openEndpointMetricsModal, setOpenEndpointMetricsModal] = + useState(false); const [isOpenTokenGenerationModal, setIsOpenTokenGenerationModal] = useState(false); const [openChatModal, setOpenChatModal] = useState(false); @@ -182,6 +186,7 @@ const EndpointDetailPage: React.FC = () => { status } created_user_email @since(version: "23.09.8") + live_stat @since(version: "23.09.11") ...EndpointOwnerInfoFragment ...EndpointStatusTagFragment ...ChatUIModalFragment @@ -476,6 +481,16 @@ const EndpointDetailPage: React.FC = () => { ) : ( <> )} +