diff --git a/.env.development b/.env.development index 549e274..0ae9885 100644 --- a/.env.development +++ b/.env.development @@ -1,23 +1,23 @@ -# 开发环境配置 -VITE_NODE_ENV='development' - -# 开发环境 -VITE_APP_BASE_API='/api' - -# 页面 title 前缀 -VITE_APP_TITLE=开发环境 - -# 网络请求公用地址 -VITE_API_BASE_URL='http://127.0.0.1:3000' -#VITE_API_BASE_URL='http://1.95.0.111:4000' - -VITE_TITLE_NAME='五味子云存储' - -# token key -VITE_APP_TOKEN_KEY='schisandra' - -# the upload url -VITE_UPLOAD_URL='http://127.0.0.1:3000' - -# the websocket url -VITE_WEB_SOCKET_URL='ws://127.0.0.1:3010/wx/socket' +# 开发环境配置 +VITE_NODE_ENV='development' + +# 开发环境 +VITE_APP_BASE_API='/api' + +# 页面 title 前缀 +VITE_APP_TITLE=开发环境 + +# 网络请求公用地址 +VITE_API_BASE_URL='http://127.0.0.1:5050' +#VITE_API_BASE_URL='http://1.95.0.111:4000' + +VITE_TITLE_NAME='五味子云存储' + +# token key +VITE_APP_TOKEN_KEY='schisandra' + +# the upload url +VITE_UPLOAD_URL='http://127.0.0.1:3000' + +# the websocket url +VITE_WEB_SOCKET_URL='ws://127.0.0.1:3010/wx/socket' diff --git a/.eslintignore b/.eslintignore index adde2d8..a8bbb59 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ node_modules .eslintrc.cjs dist +/src/components/Main/Home/index.tsx diff --git a/package.json b/package.json index 551ffca..62015ff 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@ant-design/charts": "^2.1.1", "@ant-design/icons": "^5.3.7", "@ant-design/pro-components": "^2.7.10", "@ant-design/pro-provider": "^2.14.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e72bee..60d96fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@ant-design/charts': + specifier: ^2.1.1 + version: 2.1.1(lodash-es@4.17.21)(react-dom@18.3.1)(react@18.3.1) '@ant-design/icons': specifier: ^5.3.7 version: 5.3.7(react-dom@18.3.1)(react@18.3.1) @@ -182,6 +185,29 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + /@ant-design/charts-util@0.0.1-alpha.5(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-EwTUjRPhU2CUyI2e11pAi9aOQg9oEWdFEWxv1f4j+Ta4doYXd1yTl94Zy9JvigiEj4qv8dPGl0PUd3r+qMVrAg==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + + /@ant-design/charts@2.1.1(lodash-es@4.17.21)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-db/Dcc8HdftcmiN6QXePzTw3MeGZD/6XeBrefY+Isjm55jUrvSE+zFf5GEFFrSi4C06LP4ioEEcqUXxblGKwHA==} + peerDependencies: + lodash-es: ^4.17.21 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/plots': 2.2.5(lodash-es@4.17.21)(react-dom@18.3.1)(react@18.3.1) + lodash-es: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + /@ant-design/colors@7.0.2: resolution: {integrity: sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==} dependencies: @@ -231,6 +257,23 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false + /@ant-design/plots@2.2.5(lodash-es@4.17.21)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-SyF4p7xJJCB8c6z96OYMWlBg14GD9BYCpfHY5aaXbC/WpETN9ErJH9w2TCGA+bkwpoufjyvnN5CQp+PkYlsO8w==} + peerDependencies: + lodash-es: ^4.17.21 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/charts-util': 0.0.1-alpha.5(react-dom@18.3.1)(react@18.3.1) + '@antv/event-emitter': 0.1.3 + '@antv/g': 6.0.10 + '@antv/g2': 5.2.1 + '@antv/g2-extension-plot': 0.2.1 + lodash-es: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false + /@ant-design/pro-card@2.8.4(antd@5.19.1)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-V+8D10YDsO1FnQK2OKOkB8KkpbjgN7OSLzsJhpkv0l4c4FYV0HzWwEmqIhscgse1j587QcuK3jKwnCWEsxSP1Q==} peerDependencies: @@ -514,6 +557,226 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: false + /@antv/component@2.0.1: + resolution: {integrity: sha512-VldsSv2O/JNjZYenFIzmtLeC+KD2RcpNARsCLKpi04Iz26joQ3uMtnwxM5W4bd/SCJYKp+eeQeMHMAbwaNR1pw==} + dependencies: + '@antv/g': 6.0.10 + '@antv/scale': 0.4.16 + '@antv/util': 3.3.7 + svg-path-parser: 1.1.0 + dev: false + + /@antv/coord@0.4.7: + resolution: {integrity: sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==} + dependencies: + '@antv/scale': 0.4.16 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/event-emitter@0.1.3: + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + dev: false + + /@antv/g-camera-api@2.0.9: + resolution: {integrity: sha512-ixeF5lypyNqZ6Btua6FC7w3YvGi+WnmtDIAalByaM8lGDlYroZNYQTsOeVE4JsS15kjQwEe+GYs+e0jWgdXpeg==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-canvas@2.0.8: + resolution: {integrity: sha512-XyzFGq3xqIRxEnIIU310FyOyuNAuUKyh93plgkRkF2dOCpS3RAVQRRxD1vnG47NShwjfo3Pn0qiIKTSyxGXQZg==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/g-plugin-canvas-path-generator': 2.0.6 + '@antv/g-plugin-canvas-picker': 2.0.7 + '@antv/g-plugin-canvas-renderer': 2.0.7 + '@antv/g-plugin-dom-interaction': 2.0.6 + '@antv/g-plugin-html-renderer': 2.0.7 + '@antv/g-plugin-image-loader': 2.0.6 + '@antv/util': 3.3.7 + tslib: 2.6.2 + dev: false + + /@antv/g-dom-mutation-observer-api@2.0.6: + resolution: {integrity: sha512-VIdXYxaIa82oqxLu2si+zaMq+UCU4CZS1sdtE4oROEe9uhA4vlZsynfnoOD+nw5RcTwKWx9nu1IxI/xsjFXUvw==} + dependencies: + '@antv/g-lite': 2.0.6 + dev: false + + /@antv/g-lite@2.0.6: + resolution: {integrity: sha512-7lYAtxrNHqtQIsBYCub6HLrMNm0828dzBed9Kge1hZtLbTL0weCmZBq/te/0lpdNDVeP/XqwYmT6toIi3sc0Ew==} + dependencies: + '@antv/g-math': 3.0.0 + '@antv/util': 3.3.7 + d3-color: 3.1.0 + eventemitter3: 5.0.1 + gl-matrix: 3.4.3 + rbush: 3.0.1 + tslib: 2.6.2 + dev: false + + /@antv/g-math@3.0.0: + resolution: {integrity: sha512-AkmiNIEL1vgqTPeGY2wtsMdBBqKFwF7SKSgs+D1iOS/rqYMsXdhp/HvtuQ5tx/HdawE/ZzTiicIYopc520ADZw==} + dependencies: + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-canvas-path-generator@2.0.6: + resolution: {integrity: sha512-wMRUPowlyp1t7u3aalBZM0gQXCrOVNqNpodOOwFPqe+M0qBpHmh9gUF1AtXyg3m84i4HCUFgmupJ9YZVCnZ2lg==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/g-math': 3.0.0 + '@antv/util': 3.3.7 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-canvas-picker@2.0.7: + resolution: {integrity: sha512-c1igCBXG4ZBvzxrTQ9DNxhYdA1gkzNv6JbTmT2ZDIBMxkLi1sD9jjEF00vc1+d2OHS3bpqmfpLkIniZCtAN3kA==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/g-math': 3.0.0 + '@antv/g-plugin-canvas-path-generator': 2.0.6 + '@antv/g-plugin-canvas-renderer': 2.0.7 + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-canvas-renderer@2.0.7: + resolution: {integrity: sha512-GcfAyCXrsBCOUWPx8MnyMN3TJ/ocb9APg6gO1LeN5F8YN0fpkKqxuhfHTtc5D1dCG0+8VQWSyI3HdkbOOhA3vA==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/g-math': 3.0.0 + '@antv/g-plugin-canvas-path-generator': 2.0.6 + '@antv/g-plugin-image-loader': 2.0.6 + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-dom-interaction@2.0.6: + resolution: {integrity: sha512-tu9+PNPSc7JOO+rZ/Q7tTuPMbMXRsXg9AVVaB+PzwGuYYQmCfRuudtPa5+lVWzXaFc6wlThb4v9qeA2AerqeNw==} + dependencies: + '@antv/g-lite': 2.0.6 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-dragndrop@2.0.6: + resolution: {integrity: sha512-qMrDbrGEnM66Qg/vwI+zNdhFNoN+pjzyZtO3MD+CjNQnEGpQqy1W9PNLpWcFE43BU5Z/JkoUtu6Oy5C/WKHBbQ==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/util': 3.3.7 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-html-renderer@2.0.7: + resolution: {integrity: sha512-j5zuVJ3cBm0VfJBTAtMa5GB159HSInBBXO3Nup4UVaKjl7JSL0Qkz5vZCvRX6rv6UD19+vH483v7JtQ+JXcgHA==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-plugin-image-loader@2.0.6: + resolution: {integrity: sha512-lyJ157fDqH0iFBYwFGUxZNUOxN0vRV5hF7e0iK9ElvSEc2ovqpLi0UVwjAbA67eJwpd5Y771Go1sRfx0XJo87Q==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/util': 3.3.7 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-web-animations-api@2.0.7: + resolution: {integrity: sha512-BpP86sTRAgNAWHDNajOhoM0YC2eL95iUFGcRftulrZ/8sqnTXF/M/I319vcznylwKNS37tzVmEppn76vS35UmQ==} + dependencies: + '@antv/g-lite': 2.0.6 + '@antv/util': 3.3.7 + tslib: 2.6.2 + dev: false + + /@antv/g2-extension-plot@0.2.1: + resolution: {integrity: sha512-WNv/LIUNJLwlfG8XXmKUbje9PbImtJqh36UDvuOk/uu+kmP/uMyHAXsBuu0yCOWdQgBVTVwoxszxJOCnY4mVfg==} + dependencies: + '@antv/g2': 5.2.1 + '@antv/util': 3.3.7 + d3-array: 3.2.4 + d3-hierarchy: 3.1.2 + dev: false + + /@antv/g2@5.2.1: + resolution: {integrity: sha512-Kb3e1ohkLxGEd0+yjc/2ff2hAzIUzUoSR+PP0riI1Pp+c6CobLiK68ji6aoCmfndQMDknvLYAZHSOL8OXc7ChA==} + dependencies: + '@antv/component': 2.0.1 + '@antv/coord': 0.4.7 + '@antv/event-emitter': 0.1.3 + '@antv/g': 6.0.10 + '@antv/g-canvas': 2.0.8 + '@antv/g-plugin-dragndrop': 2.0.6 + '@antv/path-util': 3.0.1 + '@antv/scale': 0.4.16 + '@antv/util': 3.3.7 + 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 + d3-voronoi: 1.1.4 + flru: 1.0.2 + fmin: 0.0.2 + pdfast: 0.2.0 + dev: false + + /@antv/g@6.0.10: + resolution: {integrity: sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w==} + dependencies: + '@antv/g-camera-api': 2.0.9 + '@antv/g-dom-mutation-observer-api': 2.0.6 + '@antv/g-lite': 2.0.6 + '@antv/g-web-animations-api': 2.0.7 + dev: false + + /@antv/path-util@3.0.1: + resolution: {integrity: sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==} + dependencies: + gl-matrix: 3.4.3 + lodash-es: 4.17.21 + tslib: 2.6.2 + dev: false + + /@antv/scale@0.4.16: + resolution: {integrity: sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==} + dependencies: + '@antv/util': 3.3.7 + color-string: 1.9.1 + fecha: 4.2.3 + dev: false + + /@antv/util@2.0.17: + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + dependencies: + csstype: 3.1.3 + tslib: 2.6.2 + dev: false + + /@antv/util@3.3.7: + resolution: {integrity: sha512-qqPg7rIPCsJyl7N56jAC25v/99mJ3ApVkgBsGijhiWrEeKvzXBPk1r5P77Pm9nCljpnn+hH8Z3t5AivbEoTJMg==} + dependencies: + fast-deep-equal: 3.1.3 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + /@babel/code-frame@7.24.6: resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} engines: {node: '>=6.9.0'} @@ -2825,6 +3088,20 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + /@ljharb/resumer@0.0.1: + resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} + engines: {node: '>= 0.4'} + dependencies: + '@ljharb/through': 2.3.13 + dev: false + + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4048,6 +4325,25 @@ packages: uri-js: 4.4.1 dev: true + /align-text@0.1.4: + resolution: {integrity: sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + longest: 1.0.1 + repeat-string: 1.6.1 + dev: false + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: false + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4058,6 +4354,11 @@ packages: engines: {node: '>=12'} dev: true + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: false + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -4141,7 +4442,6 @@ packages: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true /array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} @@ -4228,7 +4528,6 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true /asn1.js@4.10.1: resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} @@ -4285,7 +4584,6 @@ packages: engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 - dev: true /axios@1.7.2: resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} @@ -4508,7 +4806,6 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.2 - dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -4521,6 +4818,11 @@ packages: tslib: 2.6.2 dev: false + /camelcase@1.2.1: + resolution: {integrity: sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==} + engines: {node: '>=0.10.0'} + dev: false + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -4533,6 +4835,25 @@ packages: resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==} dev: true + /center-align@0.1.3: + resolution: {integrity: sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + lazy-cache: 1.0.4 + dev: false + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: false + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4570,6 +4891,14 @@ packages: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false + /cliui@2.1.0: + resolution: {integrity: sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==} + dependencies: + center-align: 0.1.3 + right-align: 0.1.3 + wordwrap: 0.0.2 + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -4587,6 +4916,13 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + /colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} dev: true @@ -4605,6 +4941,11 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -4634,6 +4975,10 @@ packages: resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} dev: true + /contour_plot@0.0.1: + resolution: {integrity: sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==} + dev: false + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: false @@ -4857,6 +5202,100 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false + + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: false + + /d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: false + + /d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + + /d3-voronoi@1.1.4: + resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} + dev: false + /data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -4864,7 +5303,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /data-view-byte-length@1.0.1: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} @@ -4873,7 +5311,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /data-view-byte-offset@1.0.0: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} @@ -4882,7 +5319,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true /dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} @@ -4899,6 +5335,23 @@ packages: dependencies: ms: 2.1.2 + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + 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 + dev: false + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -4910,7 +5363,6 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -4919,7 +5371,10 @@ packages: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true + + /defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: false /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -5044,6 +5499,13 @@ packages: engines: {node: '>=12'} dev: false + /dotignore@0.1.2: + resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} + hasBin: true + dependencies: + minimatch: 3.1.2 + dev: false + /echarts-for-react@3.0.2(echarts@5.5.1)(react@18.3.1): resolution: {integrity: sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==} peerDependencies: @@ -5175,19 +5637,16 @@ packages: typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - dev: true /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: true /es-iterator-helpers@1.0.19: resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} @@ -5214,7 +5673,6 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - dev: true /es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} @@ -5223,7 +5681,6 @@ packages: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -5238,7 +5695,6 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true /esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} @@ -5460,6 +5916,10 @@ packages: engines: {node: '>=6'} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -5507,6 +5967,10 @@ packages: dependencies: reusify: 1.0.4 + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -5566,6 +6030,21 @@ packages: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true + /flru@1.0.2: + resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} + engines: {node: '>=6'} + dev: false + + /fmin@0.0.2: + resolution: {integrity: sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==} + dependencies: + contour_plot: 0.0.1 + json2module: 0.0.3 + rollup: 0.25.8 + tape: 4.17.0 + uglify-js: 2.8.29 + dev: false + /follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -5580,7 +6059,6 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} @@ -5606,7 +6084,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} requiresBuild: true - dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -5626,11 +6103,9 @@ packages: define-properties: 1.2.1 es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -5645,7 +6120,6 @@ packages: has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.2 - dev: true /get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} @@ -5654,7 +6128,10 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true + + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -5680,7 +6157,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-modules@2.0.0: resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} @@ -5715,7 +6191,6 @@ packages: dependencies: define-properties: 1.2.1 gopd: 1.0.1 - dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -5737,7 +6212,6 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 - dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5746,9 +6220,15 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -5762,24 +6242,25 @@ packages: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - dev: true /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: false /hash-base@3.0.4: resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} @@ -5864,7 +6345,6 @@ packages: requiresBuild: true dependencies: safer-buffer: 2.1.2 - optional: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5905,11 +6385,9 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -5922,7 +6400,11 @@ packages: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -5930,7 +6412,6 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} @@ -5938,11 +6419,14 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -5954,7 +6438,6 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -5962,12 +6445,14 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -5979,14 +6464,12 @@ packages: engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -6032,14 +6515,12 @@ packages: /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -6061,7 +6542,6 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true /is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} @@ -6073,28 +6553,24 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.15 - dev: true /is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} @@ -6105,7 +6581,6 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 - dev: true /is-weakset@2.0.3: resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} @@ -6124,7 +6599,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -6212,6 +6686,13 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json2module@0.0.3: + resolution: {integrity: sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==} + hasBin: true + dependencies: + rw: 1.3.3 + dev: false + /json2mq@0.2.0: resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} dependencies: @@ -6247,6 +6728,13 @@ packages: json-buffer: 3.0.1 dev: true + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -6256,6 +6744,11 @@ packages: resolution: {integrity: sha512-sBPIUGTNF0czz0mwGGUoKKJC8Q7On1GPbCSFPfyEsfHb2DyBG0Y4QtV+EVWpINSaiGKZblDNuF5AezxSgOhesQ==} dev: true + /lazy-cache@1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + dev: false + /less@4.2.0: resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} engines: {node: '>=6'} @@ -6319,6 +6812,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false @@ -6338,6 +6835,11 @@ packages: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false + /longest@1.0.1: + resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==} + engines: {node: '>=0.10.0'} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -6504,6 +7006,10 @@ packages: brace-expansion: 2.0.1 dev: true + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + /mobx-persist-store@1.1.5(mobx@6.13.0): resolution: {integrity: sha512-STVTfYErC4Vw58zbAiz/Em4bmwi2sa+zXudxHwRtJvwiEejrJ6W1FcFDRskZyjrGLNOcrT0dDK2VDplV2cgQig==} peerDependencies: @@ -6554,6 +7060,18 @@ packages: resolution: {integrity: sha512-1laWODrBWmB7mDJ8EClCjUQTyLwJ0ydJgE4FtK7t9r3JnjXgc9OhmYs2P4RtHrY1co5+4T6cKP2UswX2SU29mA==} dev: false + /mock-property@1.0.3: + resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} + engines: {node: '>= 0.4'} + 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 + dev: false + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -6651,9 +7169,12 @@ 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==} + dev: false + /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true /object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} @@ -6661,12 +7182,10 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -6676,7 +7195,6 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.entries@1.1.8: resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} @@ -6724,7 +7242,6 @@ packages: requiresBuild: true dependencies: wrappy: 1.0.2 - dev: true /optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -6822,7 +7339,6 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} requiresBuild: true - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -6855,6 +7371,10 @@ packages: sha.js: 2.4.11 dev: true + /pdfast@0.2.0: + resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} + dev: false + /picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -6878,7 +7398,6 @@ packages: /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - dev: true /postcss-attribute-case-insensitive@6.0.3(postcss@8.4.39): resolution: {integrity: sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==} @@ -7500,6 +8019,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -7513,6 +8036,12 @@ packages: safe-buffer: 5.2.1 dev: true + /rbush@3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + dependencies: + quickselect: 2.0.0 + dev: false + /rc-cascader@3.27.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-z5uq8VvQadFUBiuZJ7YF5UAUGNkZtdEtcEYiIA94N/Kc2MIKr6lEbN5HyVddvYSgwWlKqnL6pH5bFXFuIK3MNg==} peerDependencies: @@ -8226,7 +8755,6 @@ packages: define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -8252,6 +8780,11 @@ packages: engines: {node: '>= 0.10'} dev: false + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: false + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -8291,6 +8824,13 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + /right-align@0.1.3: + resolution: {integrity: sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + dev: false + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -8306,6 +8846,15 @@ packages: inherits: 2.0.4 dev: true + /rollup@0.25.8: + resolution: {integrity: sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==} + hasBin: true + dependencies: + chalk: 1.1.3 + minimist: 1.2.8 + source-map-support: 0.3.3 + dev: false + /rollup@4.18.0: resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8340,6 +8889,10 @@ packages: dependencies: queue-microtask: 1.2.3 + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + /safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -8348,7 +8901,6 @@ packages: get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -8365,7 +8917,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} @@ -8375,7 +8926,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} requiresBuild: true - optional: true /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8420,7 +8970,6 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: true /set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} @@ -8430,7 +8979,6 @@ packages: es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -8468,13 +9016,18 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: true /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /size-sensor@1.0.2: resolution: {integrity: sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==} dev: false @@ -8504,12 +9057,25 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + /source-map-support@0.3.3: + resolution: {integrity: sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==} + dependencies: + source-map: 0.1.32 + dev: false + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + /source-map@0.1.32: + resolution: {integrity: sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==} + engines: {node: '>=0.8.0'} + dependencies: + amdefine: 1.0.1 + dev: false + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} @@ -8574,7 +9140,6 @@ packages: define-properties: 1.2.1 es-abstract: 1.23.3 es-object-atoms: 1.0.0 - dev: true /string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} @@ -8582,7 +9147,6 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true /string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} @@ -8591,7 +9155,6 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -8605,6 +9168,13 @@ packages: safe-buffer: 5.2.1 dev: true + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -8762,6 +9332,11 @@ packages: resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} dev: false + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8790,6 +9365,10 @@ packages: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} dev: true + /svg-path-parser@1.1.0: + resolution: {integrity: sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==} + dev: false + /svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} dev: true @@ -8827,6 +9406,28 @@ packages: strip-ansi: 6.0.1 dev: true + /tape@4.17.0: + resolution: {integrity: sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==} + hasBin: true + 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 + dev: false + /task-queue-lib@1.5.0: resolution: {integrity: sha512-olJ7+AgYKL0rWQBIy0p+2P2P9GSylginODcyDK2OxBIszswTcCEJno9j+QCrwkUye+e/rPOESlYPs7rmEE+KSQ==} dependencies: @@ -8945,7 +9546,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true /typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} @@ -8956,7 +9556,6 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true /typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} @@ -8968,7 +9567,6 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true /typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} @@ -8980,7 +9578,6 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true /typescript@5.5.3: resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} @@ -8996,6 +9593,23 @@ packages: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} dev: false + /uglify-js@2.8.29: + resolution: {integrity: sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + source-map: 0.5.7 + yargs: 3.10.0 + optionalDependencies: + uglify-to-browserify: 1.0.2 + dev: false + + /uglify-to-browserify@1.0.2: + resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} + requiresBuild: true + dev: false + optional: true + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -9003,7 +9617,6 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -9231,7 +9844,6 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-builtin-type@1.1.3: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} @@ -9270,7 +9882,6 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -9287,15 +9898,24 @@ packages: isexe: 2.0.0 dev: true + /window-size@0.1.0: + resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} + engines: {node: '>= 0.8.0'} + dev: false + /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} dev: true + /wordwrap@0.0.2: + resolution: {integrity: sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==} + engines: {node: '>=0.4.0'} + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} requiresBuild: true - dev: true /write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} @@ -9318,6 +9938,15 @@ packages: engines: {node: '>= 6'} dev: false + /yargs@3.10.0: + resolution: {integrity: sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==} + dependencies: + camelcase: 1.2.1 + cliui: 2.1.0 + decamelize: 1.2.0 + window-size: 0.1.0 + dev: false + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} diff --git a/src/App.tsx b/src/App.tsx index a81ab19..4d9ad9b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,17 +1,17 @@ -/** @format */ - -import { BrowserRouter } from "react-router-dom"; -import GetRouter from "@/router/getRouter.tsx"; -import AuthRoute from "@/router/useAuth.tsx"; - -const App = () => { - return ( - - - - - - ); -}; - -export default App; +/** @format */ + +import { BrowserRouter } from "react-router-dom"; +import GetRouter from "@/router/getRouter.tsx"; +import AuthRoute from "@/router/useAuth.tsx"; + +const App = () => { + return ( + + + + + + ); +}; + +export default App; diff --git a/src/api/oss/ali/index.ts b/src/api/oss/ali/index.ts new file mode 100644 index 0000000..0d1de92 --- /dev/null +++ b/src/api/oss/ali/index.ts @@ -0,0 +1,61 @@ +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 初始化ali oss + * @param data 用户id + */ +export const initAliOSS = (data: any) => { + return web.request({ + url: "/oss/oss/ali/init", + method: "post", + params: { + userId: data, + }, + }); +}; +/** + * 获取文件目录信息 + * @param userId 用户id + * @param dirName 目录名称 + * @param bucket 桶名称 + */ +export const getDirAndFileList = (userId: any, dirName: any, bucket: any) => { + return web.request({ + url: "/oss/oss/ali/listDir", + method: "get", + params: { + userId: userId, + dirName: dirName, + bucket: bucket, + }, + }); +}; +/** + * 查询Ali OSS所有桶 + * @param userId + */ +export const getAllAliOSsBucket = (userId: any) => { + return web.request({ + url: `/oss/oss/ali/seleteBucket`, + method: "post", + params: { + userId: userId, + }, + }); +}; + +/** + * 获取所有阿里云oss配置 + * @param userId + */ +export const getAllAliOSSConfig = (userId: any) => { + return web.request({ + url: `/oss/oss/ali/return_online`, + method: "get", + params: { + userId: userId, + }, + }); +}; diff --git a/src/api/oss/index.ts b/src/api/oss/index.ts new file mode 100644 index 0000000..75f8f79 --- /dev/null +++ b/src/api/oss/index.ts @@ -0,0 +1,169 @@ +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 获取用户存储商 + * @param data 用户id + */ +export const getAllStorage = (data: any) => { + return web.request({ + url: "/oss/oss/user/selectUserOSSType", + method: "get", + params: { + userId: data, + }, + }); +}; + +/** + * 获取存储商所有存储桶 + * @param data 用户id + * @param type + */ +export const getStorageBuckets = (data: any, type: any) => { + return web.request({ + url: "/oss/oss/" + type + "/seleteBucket", + method: "post", + params: { + userId: data, + }, + }); +}; +/** + * 获取存储桶所有文件 + * @param userId + * @param type + * @param bucket + * @param dirName + */ +export const getBucketFiles = (userId: any, bucket: any, dirName: any, type: any) => { + return web.request({ + url: "/oss/oss/" + type + "/listDir", + method: "get", + params: { + userId: userId, + bucket: bucket, + dirName: dirName, + }, + }); +}; +/** + * 获取存储商所有存储桶个数 + * @param userId + */ +export const getStorageAndBuckets = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectUserOSSType", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户文件热力图 + * @param userId + */ +export const getUserFileHeatMap = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectUserFileHeat", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户文件流量 + * @param userId + */ +export const getUserFileFlow = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectFileFlow", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户文件个数 + * @param userId + */ +export const getUserFileCount = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectFileCount", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户每月上传文件个数 + * @param userId + */ +export const getUserUploadFileDiagramPerMonth = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectUploadFileDiagramPerMonth", + method: "get", + params: { + userId: userId, + }, + }); +}; + +/** + * 获取用户每月下载文件个数 + * @param userId + */ +export const getUserDownloadFileDiagramPerMonth = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectDownloadFileDiagramPerMonth", + method: "get", + params: { + userId: userId, + }, + }); +}; + +/** + * 获取用户最近下载文件 + * @param userId + */ +export const getUserRecentDownloadFile = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectRecentDownloadFile", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户最近上传文件 + * @param userId + */ +export const getUserRecentUploadFile = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectRecentUploadFile", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户最近预览文件 + * @param userId + */ +export const getUserRecentPreviewFile = (userId: any) => { + return web.request({ + url: "/oss/oss/user/selectPreviewFile", + method: "get", + params: { + userId: userId, + }, + }); +}; diff --git a/src/api/oss/minio/index.ts b/src/api/oss/minio/index.ts index b224962..5a11d88 100644 --- a/src/api/oss/minio/index.ts +++ b/src/api/oss/minio/index.ts @@ -6,7 +6,7 @@ import web from "@/utils/axios/web.ts"; * 初始化minio * @param data 用户id */ -export const initMinio = (data: any) => { +export const initMinioOSS = (data: any) => { return web.request({ url: "/oss/oss/minio/init", method: "post", @@ -33,12 +33,25 @@ export const getDirAndFileList = (userId: any, dirName: any, bucket: any) => { }); }; /** - * 获取用户拥有的厂商 + * 查询MinIO所有桶 * @param userId */ -export const getBrandsList = (userId: any) => { +export const getAllMinioBucket = (userId: any) => { return web.request({ - url: "/oss/oss/minio/userId", + url: `/oss/oss/minio/seleteBucket`, + method: "post", + params: { + userId: userId, + }, + }); +}; +/** + * 获取MinIO配置信息 + * @param userId + */ +export const getAllMinioConfig = (userId: any) => { + return web.request({ + url: `/oss/oss/minio/return_online`, method: "get", params: { userId: userId, diff --git a/src/api/oss/qiniu/index.ts b/src/api/oss/qiniu/index.ts new file mode 100644 index 0000000..ff88cb6 --- /dev/null +++ b/src/api/oss/qiniu/index.ts @@ -0,0 +1,57 @@ +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 初始化qiniu + * @param data 用户id + */ +export const initQiniuOSS = (data: any) => { + return web.request({ + url: "/oss/oss/qiniu/init", + method: "post", + params: { + userId: data, + }, + }); +}; +/** + * 获取文件目录信息 + * @param userId 用户id + * @param dirName 目录名称 + * @param bucket 桶名称 + */ +export const getDirAndFileList = (userId: any, dirName: any, bucket: any) => { + return web.request({ + url: "/oss/oss/qiniu/listMinioDir", + method: "get", + params: { + userId: userId, + dirName: dirName, + bucket: bucket, + }, + }); +}; +/** + * 查询qiniu所有桶 + * @param userId + */ +export const getAllQiniuBucket = (userId: any) => { + return web.request({ + url: `/oss/oss/qiniu/seleteBucket`, + method: "post", + params: { + userId: userId, + }, + }); +}; + +export const getAllQiniuConfigs = (userId: any) => { + return web.request({ + url: `/oss/oss/qiniu/return_online`, + method: "get", + params: { + userId: userId, + }, + }); +}; diff --git a/src/api/oss/tencent/index.ts b/src/api/oss/tencent/index.ts new file mode 100644 index 0000000..3060062 --- /dev/null +++ b/src/api/oss/tencent/index.ts @@ -0,0 +1,60 @@ +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 初始化Tencent oss + * @param data 用户id + */ +export const initTencentOSS = (data: any) => { + return web.request({ + url: "/oss/oss/ali/tencent", + method: "post", + params: { + userId: data, + }, + }); +}; +/** + * 获取文件目录信息 + * @param userId 用户id + * @param dirName 目录名称 + * @param bucket 桶名称 + */ +export const getDirAndFileList = (userId: any, dirName: any, bucket: any) => { + return web.request({ + url: "/oss/oss/tencent/listDir", + method: "get", + params: { + userId: userId, + dirName: dirName, + bucket: bucket, + }, + }); +}; +/** + * 查询Tencent OSS所有桶 + * @param userId + */ +export const getAllTencentOSsBucket = (userId: any) => { + return web.request({ + url: `/oss/oss/tencent/seleteBucket`, + method: "post", + params: { + userId: userId, + }, + }); +}; +/** + * 查询Tencent OSS所有配置 + * @param userId + */ +export const getAllTencentOSsConfig = (userId: any) => { + return web.request({ + url: `/oss/oss/tencent/return_online`, + method: "get", + params: { + userId: userId, + }, + }); +}; diff --git a/src/api/oss/up/index.ts b/src/api/oss/up/index.ts new file mode 100644 index 0000000..91c3b32 --- /dev/null +++ b/src/api/oss/up/index.ts @@ -0,0 +1,47 @@ +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 初始化Up oss + * @param data 用户id + */ +export const initUpOSS = (data: any) => { + return web.request({ + url: "/oss/oss/up/tencent", + method: "post", + params: { + userId: data, + }, + }); +}; +/** + * 获取文件目录信息 + * @param userId 用户id + * @param dirName 目录名称 + * @param bucket 桶名称 + */ +export const getDirAndFileList = (userId: any, dirName: any, bucket: any) => { + return web.request({ + url: "/oss/oss/up/listDir", + method: "get", + params: { + userId: userId, + dirName: dirName, + bucket: bucket, + }, + }); +}; +/** + * 查询Tencent OSS所有桶 + * @param userId + */ +export const getAllUpOSsBucket = (userId: any) => { + return web.request({ + url: `/oss/oss/up/seleteBucket`, + method: "post", + params: { + userId: userId, + }, + }); +}; diff --git a/src/api/user/index.ts b/src/api/user/index.ts index 3fd70b8..01e2d04 100644 --- a/src/api/user/index.ts +++ b/src/api/user/index.ts @@ -1,137 +1,150 @@ -/** @format */ - -import web from "@/utils/axios/web.ts"; - -/** - * 第三方登录 - * @param type - */ -export const oauthLogin = (type: string) => { - return web.request({ - url: "/auth/oauth/render/" + type, - method: "get", - }); -}; - -/** - * 获取短信验证码 - * @param data - */ -export const getSms = (data: any) => { - return web.request({ - url: "/auth/sms/sendByTemplate/", - method: "post", - headers: { - "Content-Type": "application/json;charset=UTF-8", - }, - data: data, - }); -}; - -/** - * 注册 - * @param data - */ -export const register = (data: API.PhoneRegisterRequest) => { - return web.request({ - url: "/auth/auth/user/register", - method: "post", - data: data, - }); -}; - -/** - * 登录 - * @param data - */ -export const login = (data: API.LoginRequest) => { - return web.request({ - url: "/auth/auth/user/login", - method: "post", - data: data, - }); -}; - -/** - * 手机号登录 - * @param data - */ -export const loginByPhone = (data: API.LoginByPhoneRequest) => { - return web.request({ - url: "/auth/auth/user/loginByPhone", - method: "post", - data: data, - }); -}; -/** - * 找回密码 - * @param data - */ -export const findPassword = (data: API.findPasswordRequest) => { - return web.request({ - url: "/auth/auth/user/findPassword", - method: "post", - data: data, - }); -}; -/** - * 生成客户端id - */ -export const createClientId = () => { - return web.request({ - url: "/auth/auth/user/createClientId", - method: "get", - }); -}; -/** - * 获取客户端id - * @param clientId - */ -export const getClientId = (clientId: string) => { - return web.request({ - url: "/auth/auth/user/getClientId", - method: "post", - data: { - clientId: clientId, - }, - }); -}; -/** - * 获取客户端token - * @param clientId - */ -export const getClientToken = (clientId: string) => { - return web.request({ - url: "/auth/auth/user/getClientToken", - method: "post", - params: { - clientId: clientId, - }, - }); -}; -/** - * 生成微信登录二维码 - * @param clientId - */ -export const generateQRCode = (clientId: string) => { - return web.request({ - url: "/wechat/wx/generateQRCode", - method: "get", - params: { - clientId: clientId, - }, - }); -}; -/** - * 获取用户操蛋权限 - * @param userId - */ -export const getUserMenuPermission = (userId: string): any => { - return web.request({ - url: "/auth/permission/selectUserPermission", - method: "get", - params: { - userId: userId, - }, - }); -}; +/** @format */ + +import web from "@/utils/axios/web.ts"; + +/** + * 第三方登录 + * @param type + */ +export const oauthLogin = (type: string) => { + return web.request({ + url: "/auth/auth/oauth/render/" + type, + method: "get", + }); +}; + +/** + * 获取短信验证码 + * @param data + */ +export const getSms = (data: any) => { + return web.request({ + url: "/auth/sms/sendByTemplate/", + method: "post", + headers: { + "Content-Type": "application/json;charset=UTF-8", + }, + data: data, + }); +}; + +/** + * 注册 + * @param data + */ +export const register = (data: API.PhoneRegisterRequest) => { + return web.request({ + url: "/auth/auth/user/register", + method: "post", + data: data, + }); +}; + +/** + * 登录 + * @param data + */ +export const login = (data: API.LoginRequest) => { + return web.request({ + url: "/auth/auth/user/login", + method: "post", + data: data, + }); +}; + +/** + * 手机号登录 + * @param data + */ +export const loginByPhone = (data: API.LoginByPhoneRequest) => { + return web.request({ + url: "/auth/auth/user/loginByPhone", + method: "post", + data: data, + }); +}; +/** + * 找回密码 + * @param data + */ +export const findPassword = (data: API.findPasswordRequest) => { + return web.request({ + url: "/auth/auth/user/findPassword", + method: "post", + data: data, + }); +}; +/** + * 生成客户端id + */ +export const createClientId = () => { + return web.request({ + url: "/auth/auth/user/createClientId", + method: "get", + }); +}; +/** + * 获取客户端id + * @param clientId + */ +export const getClientId = (clientId: string) => { + return web.request({ + url: "/auth/auth/user/getClientId", + method: "post", + data: { + clientId: clientId, + }, + }); +}; +/** + * 获取客户端token + * @param clientId + */ +export const getClientToken = (clientId: string) => { + return web.request({ + url: "/auth/auth/user/getClientToken", + method: "post", + params: { + clientId: clientId, + }, + }); +}; +/** + * 生成微信登录二维码 + * @param clientId + */ +export const generateQRCode = (clientId: string) => { + return web.request({ + url: "/wechat/wx/generateQRCode", + method: "get", + params: { + clientId: clientId, + }, + }); +}; +/** + * 获取用户菜单权限 + * @param userId + */ +export const getUserMenuPermission = (userId: string): any => { + return web.request({ + url: "/auth/auth/permission/selectUserPermission", + method: "get", + params: { + userId: userId, + }, + }); +}; +/** + * 获取用户信息 + * @param userId + */ +export const getUserInfoApi = (userId: string): any => { + return web.request({ + url: "/auth/auth/user/getUserInfo", + method: "get", + params: { + userId: userId, + }, + }); +}; diff --git a/src/assets/icons/download.svg b/src/assets/icons/download.svg new file mode 100644 index 0000000..2f8ffc7 --- /dev/null +++ b/src/assets/icons/download.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/upload.svg b/src/assets/icons/upload.svg new file mode 100644 index 0000000..77c87ba --- /dev/null +++ b/src/assets/icons/upload.svg @@ -0,0 +1 @@ + diff --git a/src/components/Main/Bucket/components/AliDrawer.tsx b/src/components/Main/Bucket/components/AliDrawer.tsx index b6e209f..bb6bb10 100644 --- a/src/components/Main/Bucket/components/AliDrawer.tsx +++ b/src/components/Main/Bucket/components/AliDrawer.tsx @@ -1,16 +1,12 @@ /** @format */ -import { Avatar, Button, message } from "antd"; -import { - DrawerForm, - ProCard, - ProForm, - ProFormText, -} from "@ant-design/pro-components"; -import React, { createContext, useContext, useState } from "react"; -import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons"; -import bucket from "../../../../assets/icons/bucket.svg"; +import { Avatar, Button, message, Skeleton } from "antd"; +import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components"; +import React, { createContext, useContext, useEffect, useState } from "react"; import styles from "./index.module.less"; +import bucket from "@/assets/icons/bucket.svg"; +import { getAllAliOSsBucket } from "@/api/oss/ali"; +import { EditOutlined, EllipsisOutlined, ReloadOutlined, SettingOutlined } from "@ant-design/icons"; const DrawerContext = createContext<{ drawerVisit: boolean; @@ -26,58 +22,77 @@ const AliDrawer = () => { }; const ProCardComponent = () => { const { drawerVisit, setDrawerVisit } = useContext(DrawerContext); - const list = [ - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test3", - "test1", - "test2", - "test3", - ]; + const [buckets, setBuckets] = useState([]); + const [loading, setLoading] = useState(true); + async function getAllBucket() { + getAllAliOSsBucket("2").then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setLoading(false); + } + }); + } + + useEffect(() => { + getAllBucket().then(); + }, []); const bucketList = () => { return ( setDrawerVisit(true)}> - 创建存储桶 - + <> + + + }>
- {list.map((item, index) => { - return ( - 名字:{item}} - style={{ - width: "180px", - borderWidth: "1px", - }} - actions={[ - , - , - , - ]}> - - size - - ); - })} + + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( + <> +
+ {item.name}} + style={{ + width: "180px", + height: 150, + borderWidth: "1px", + marginLeft: 10, + }} + actions={[ + , + , + , + ]}> + + {item.size} + +
+ + ); + })} +
); diff --git a/src/components/Main/Bucket/components/MinioDrawer.tsx b/src/components/Main/Bucket/components/MinioDrawer.tsx index 72c8988..553aa9e 100644 --- a/src/components/Main/Bucket/components/MinioDrawer.tsx +++ b/src/components/Main/Bucket/components/MinioDrawer.tsx @@ -1,11 +1,12 @@ /** @format */ -import { Avatar, Button, message } from "antd"; +import { Avatar, Button, message, Skeleton } from "antd"; import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components"; -import React, { createContext, useContext, useState } from "react"; -import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons"; -import bucket from "../../../../assets/icons/bucket.svg"; +import React, { createContext, useContext, useEffect, useState } from "react"; +import { EditOutlined, EllipsisOutlined, ReloadOutlined, SettingOutlined } from "@ant-design/icons"; +import bucket from "@/assets/icons/bucket.svg"; import styles from "./index.module.less"; +import { getAllMinioBucket } from "@/api/oss/minio"; const DrawerContext = createContext<{ drawerVisit: boolean; @@ -21,58 +22,74 @@ const MinioDrawer = () => { }; const ProCardComponent = () => { const { drawerVisit, setDrawerVisit } = useContext(DrawerContext); - const list = [ - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test3", - "test1", - "test2", - "test3", - ]; + const [buckets, setBuckets] = useState([]); + const [loading, setLoading] = useState(true); + + async function getAllBucket() { + getAllMinioBucket("1").then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setLoading(false); + } + }); + } + useEffect(() => { + getAllBucket().then(); + }, []); const bucketList = () => { return ( setDrawerVisit(true)}> - 创建存储桶 - + <> + + + }>
- {list.map((item, index) => { - return ( - 名字:{item}} - style={{ - width: "180px", - borderWidth: "1px", - }} - actions={[ - , - , - , - ]}> - - size - - ); - })} + + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( +
+ {item.name}} + style={{ + width: "180px", + height: "150px", + marginLeft: 10, + }} + actions={[ + , + , + , + ]}> + + {item.size} + +
+ ); + })} +
); diff --git a/src/components/Main/Bucket/components/QingyunDrawer.tsx b/src/components/Main/Bucket/components/QingyunDrawer.tsx index a220b30..eae71f3 100644 --- a/src/components/Main/Bucket/components/QingyunDrawer.tsx +++ b/src/components/Main/Bucket/components/QingyunDrawer.tsx @@ -1,16 +1,13 @@ /** @format */ -import { Avatar, Button, message } from "antd"; -import { - DrawerForm, - ProCard, - ProForm, - ProFormText, -} from "@ant-design/pro-components"; -import React, { createContext, useContext, useState } from "react"; -import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons"; -import bucket from "../../../../assets/icons/bucket.svg"; +import { Avatar, Button, message, Skeleton } from "antd"; +import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components"; +import React, { createContext, useContext, useEffect, useState } from "react"; +import { EditOutlined, EllipsisOutlined, ReloadOutlined, SettingOutlined } from "@ant-design/icons"; +import bucket from "@/assets/icons/bucket.svg"; import styles from "./index.module.less"; +import { getAllMinioBucket } from "@/api/oss/minio"; +import { getAllQiniuBucket } from "@/api/oss/qiniu"; const DrawerContext = createContext<{ drawerVisit: boolean; @@ -26,24 +23,20 @@ const QingyunDrawer = () => { }; const ProCardComponent = () => { const { drawerVisit, setDrawerVisit } = useContext(DrawerContext); - const list = [ - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test3", - "test1", - "test2", - "test3", - ]; + const [buckets, setBuckets] = useState([]); + const [loading, setLoading] = useState(true); + + async function getAllBucket() { + getAllQiniuBucket("1").then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setLoading(false); + } + }); + } + useEffect(() => { + getAllBucket().then(); + }, []); const bucketList = () => { return ( @@ -51,33 +44,53 @@ const ProCardComponent = () => { title={"存储桶列表"} headerBordered extra={ - + <> + + + }>
- {list.map((item, index) => { - return ( - 名字:{item}} - style={{ - width: "180px", - borderWidth: "1px", - }} - actions={[ - , - , - , - ]}> - - size - - ); - })} + + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( +
+ {item.name}} + style={{ + width: "180px", + height: "150px", + marginLeft: 10, + }} + actions={[ + , + , + , + ]}> + + {item.size} + +
+ ); + })} +
); diff --git a/src/components/Main/Bucket/components/TencentDrawer.tsx b/src/components/Main/Bucket/components/TencentDrawer.tsx index 5858acc..18685eb 100644 --- a/src/components/Main/Bucket/components/TencentDrawer.tsx +++ b/src/components/Main/Bucket/components/TencentDrawer.tsx @@ -1,16 +1,12 @@ /** @format */ -import { Avatar, Button, message } from "antd"; -import { - DrawerForm, - ProCard, - ProForm, - ProFormText, -} from "@ant-design/pro-components"; -import React, { createContext, useContext, useState } from "react"; +import { Avatar, Button, message, Skeleton } from "antd"; +import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components"; +import React, { createContext, useContext, useEffect, useState } from "react"; import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons"; import bucket from "../../../../assets/icons/bucket.svg"; import styles from "./index.module.less"; +import { getAllTencentOSsBucket } from "@/api/oss/tencent"; const DrawerContext = createContext<{ drawerVisit: boolean; @@ -26,29 +22,26 @@ const TencentDrawer = () => { }; const ProCardComponent = () => { const { drawerVisit, setDrawerVisit } = useContext(DrawerContext); - const list = [ - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test3", - "test1", - "test2", - "test3", - ]; + const [buckets, setBuckets] = useState([]); + const [loading, setLoading] = useState(true); + + async function getAllBucket() { + getAllTencentOSsBucket("1").then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setLoading(false); + } + }); + } + + useEffect(() => { + getAllBucket().then(); + }, []); const bucketList = () => { return ( setDrawerVisit(true)}> @@ -56,28 +49,37 @@ const ProCardComponent = () => { }>
- {list.map((item, index) => { - return ( - 名字:{item}} - style={{ - width: "180px", - borderWidth: "1px", - }} - actions={[ - , - , - , - ]}> - - size - - ); - })} + + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( +
+ {item.name}} + style={{ + width: "180px", + height: "150px", + marginLeft: 10, + }} + actions={[ + , + , + , + ]}> + + {item.size} + +
+ ); + })} +
); diff --git a/src/components/Main/Bucket/components/UpDrawer.tsx b/src/components/Main/Bucket/components/UpDrawer.tsx index 0d5c19f..b2f59d0 100644 --- a/src/components/Main/Bucket/components/UpDrawer.tsx +++ b/src/components/Main/Bucket/components/UpDrawer.tsx @@ -1,11 +1,12 @@ /** @format */ -import { Avatar, Button, message } from "antd"; +import { Avatar, Button, message, Skeleton } from "antd"; import { DrawerForm, ProCard, ProForm, ProFormText } from "@ant-design/pro-components"; -import React, { createContext, useContext, useState } from "react"; -import { EditOutlined, EllipsisOutlined, SettingOutlined } from "@ant-design/icons"; +import React, { createContext, useContext, useEffect, useState } from "react"; +import { EditOutlined, EllipsisOutlined, ReloadOutlined, SettingOutlined } from "@ant-design/icons"; import bucket from "../../../../assets/icons/bucket.svg"; import styles from "./index.module.less"; +import { getAllQiniuBucket } from "@/api/oss/qiniu"; const DrawerContext = createContext<{ drawerVisit: boolean; @@ -21,24 +22,20 @@ const UpDrawer = () => { }; const ProCardComponent = () => { const { drawerVisit, setDrawerVisit } = useContext(DrawerContext); - const list = [ - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test1", - "test2", - "test3", - "test3", - "test1", - "test2", - "test3", - ]; + const [buckets, setBuckets] = useState([]); + const [loading, setLoading] = useState(true); + + async function getAllBucket() { + getAllQiniuBucket("1").then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setLoading(false); + } + }); + } + useEffect(() => { + getAllBucket().then(); + }, []); const bucketList = () => { return ( @@ -46,33 +43,53 @@ const ProCardComponent = () => { title={"存储桶列表"} headerBordered extra={ - + <> + + + }>
- {list.map((item, index) => { - return ( - 名字:{item}} - style={{ - width: "180px", - borderWidth: "1px", - }} - actions={[ - , - , - , - ]}> - - size - - ); - })} + + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( +
+ {item.name}} + style={{ + width: "180px", + height: "150px", + marginLeft: 10, + }} + actions={[ + , + , + , + ]}> + + {item.size} + +
+ ); + })} +
); diff --git a/src/components/Main/Bucket/components/index.module.less b/src/components/Main/Bucket/components/index.module.less index 98a4024..0106579 100644 --- a/src/components/Main/Bucket/components/index.module.less +++ b/src/components/Main/Bucket/components/index.module.less @@ -1,19 +1,12 @@ .div_proCard{ - height: 62vh; - max-height: 62vh; - gap: 20px; - width: 105%; + width: 100%; + min-height: 62vh; display: flex; flex-wrap: wrap; flex-direction: row; overflow-y:scroll; overflow-x: hidden; - justify-content: space-around; + justify-content: flex-start; } -.proCard{ - height: 75vh; - max-height: 75vh; - width: 105%; -} diff --git a/src/components/Main/Bucket/index.module.less b/src/components/Main/Bucket/index.module.less index 85e986e..8abdf07 100644 --- a/src/components/Main/Bucket/index.module.less +++ b/src/components/Main/Bucket/index.module.less @@ -1,6 +1,6 @@ .proCard{ max-width: 30%; - + min-height: 84vh; } .proCardBucket{ @@ -14,8 +14,6 @@ } .div_checkCardArea{ - height: 68vh; - max-height: 68vh; overflow-y:scroll; overflow-x: hidden; } diff --git a/src/components/Main/Bucket/index.tsx b/src/components/Main/Bucket/index.tsx index 82c4929..4c20212 100644 --- a/src/components/Main/Bucket/index.tsx +++ b/src/components/Main/Bucket/index.tsx @@ -1,45 +1,66 @@ /** @format */ -import { FunctionComponent, Suspense } from "react"; +import { FunctionComponent, Suspense, useEffect, useState } from "react"; import { CheckCard, ProCard } from "@ant-design/pro-components"; import styles from "./index.module.less"; import { Outlet, useNavigate } from "react-router-dom"; -import { Button, Empty } from "antd"; +import { Button, Empty, Skeleton } from "antd"; import StorageIcon from "@/constant/stroage-icon.ts"; import { ReloadOutlined } from "@ant-design/icons"; +import { getAllStorage } from "@/api/oss"; const Bucket: FunctionComponent = () => { const navigate = useNavigate(); - const checkList = ["minio", "ali", "tencent", "huawei", "baidu", "jd"]; + const [userStorage, setUserStorage] = useState([]); + const [loading, setLoading] = useState(true); + async function getUserStorage() { + getAllStorage("1").then((res: any) => { + if (res && res.success) { + setUserStorage(res.data); + setLoading(false); + } + }); + } + useEffect(() => { + getUserStorage().then(); + }, []); return (
}>} + extra={ + + } title="存储商" headerBordered className={styles.proCard} boxShadow={true} colSpan={"100%"} bordered> - -
- {checkList.map((item) => { + + + {userStorage.map((item: any, index: number) => { return ( { - navigate(`/main/bucket/${item}`); + navigate(`/main/bucket/${item.ossType}`); }} /> ); })} -
-
+ +
{location.pathname === "/main/bucket" || location.pathname === "/main/bucket/" ? ( diff --git a/src/components/Main/File/index.tsx b/src/components/Main/File/index.tsx index b5824fd..9fa328c 100644 --- a/src/components/Main/File/index.tsx +++ b/src/components/Main/File/index.tsx @@ -1,5 +1,5 @@ /** @format */ -import { FunctionComponent, useEffect, useState } from "react"; +import React, { FunctionComponent, useEffect, useState } from "react"; import { CheckCard, ProCard } from "@ant-design/pro-components"; import styles from "./index.module.less"; import { @@ -8,6 +8,7 @@ import { Card, Divider, Dropdown, + Empty, Flex, FloatButton, Input, @@ -16,9 +17,7 @@ import { Select, Tooltip, } from "antd"; -import ali from "@/assets/icons/aliyun.svg"; import bucket from "@/assets/icons/bucket.svg"; -import tencent from "@/assets/icons/tencent.svg"; import { CloudUploadOutlined, CopyOutlined, @@ -29,6 +28,7 @@ import { LeftOutlined, QrcodeOutlined, RedoOutlined, + ReloadOutlined, ScissorOutlined, SearchOutlined, SnippetsOutlined, @@ -39,46 +39,8 @@ import { observer } from "mobx-react"; import FileIcon from "@/constant/file-icon.ts"; import file_icon from "@/assets/icons/files/file.svg"; import FileUpload from "@/components/Main/File/components/FileUpload.tsx"; -const dataList: any = [ - { - name: "demo01.java", - isDir: false, - path: "demo0.java", - length: "346", - createTime: "2024-06-26T08:22:13.244Z", - }, - { - name: "测试.pdf", - isDir: false, - path: "测试.pdf", - length: "346", - createTime: "2024-06-26T08:22:13.244Z", - }, - { - name: "test.jpg", - isDir: false, - path: "test.jpg", - length: "2057535", - createTime: "2024-06-27T02:27:05.472Z", - }, - { - name: "test1.png", - isDir: false, - path: "test1.png", - length: "1766511", - createTime: "2024-06-29T10:28:03.224Z", - }, - { - name: "schisandra", - isDir: true, - path: "schisandra/", - }, - { - name: "测试文件夹", - isDir: true, - path: "测试文件夹/", - }, -]; +import { getAllStorage, getBucketFiles, getStorageBuckets } from "@/api/oss"; +import StorageIcon from "@/constant/stroage-icon.ts"; const fileList: any = [ { name: "test1.png", @@ -98,148 +60,197 @@ const File: FunctionComponent = () => { const store = useStore("file"); const [files, setFiles] = useState([]); const [loading, setLoading] = useState(true); + const [bucketLoading, setBucketLoading] = useState(true); const [open, setOpen] = useState(false); - async function getFile() { - setFiles(dataList); + const [userStorage, setUserStorage] = useState([]); + const [buckets, setBuckets] = useState([]); + const [currentStorage, setCurrentStorage] = useState(null); + const [currentBucket, setCurrentBucket] = useState(null); + + async function getUserStorage() { + getAllStorage("1").then((res: any) => { + if (res && res.success) { + setUserStorage(res.data); + setLoading(false); + } + }); + } + async function getFiles(bucket: any, dirName: any, type: any) { + return getBucketFiles("1", bucket, dirName, type).then((res: any) => { + if (res && res.success) { + setFiles(res.data); + } + }); } function getFileExtension(filename: any): string { const dotIndex = filename.lastIndexOf("."); return dotIndex !== -1 ? filename.slice(dotIndex + 1) : ""; } + async function getBuckets(type: any) { + getStorageBuckets("1", type).then((res: any) => { + if (res && res.success) { + setBuckets(res.data); + setBucketLoading(false); + } + }); + } useEffect(() => { - getFile().then(); - setTimeout(() => { - setLoading(false); - }, 2000); + getUserStorage().then(); }, []); return ( <>
- - + + + + +
{ + store.clearAllFilePath(); + store.setFilePath(`/${value}`); + setCurrentBucket(value); + console.log(value); + if (value !== undefined) { + getFiles(value, "", currentStorage).then(); + } + }} style={{ width: "100%" }}> - { - domEvent.stopPropagation(); - message.info("menu click"); - }, - items: [ - { - label: "删除", - key: "1", - }, - { - label: "编辑", - key: "2", - }, - ], - }}> - e.stopPropagation()} - /> - - } - /> - { - domEvent.stopPropagation(); - message.info("menu click"); - }, - items: [ - { - label: "删除", - key: "1", - }, - { - label: "编辑", - key: "2", - }, - ], - }}> - e.stopPropagation()} - /> - - } - /> + {buckets.length === 0 ? ( + <> + + + ) : ( + <> + {buckets && + Array.from(buckets).map((item: any, index: number) => { + return ( + <> +
+ { + domEvent.stopPropagation(); + message.info( + "menu click", + ); + }, + items: [ + { + label: "删除", + key: "1", + }, + { + label: "查看", + key: "2", + }, + ], + }}> + + e.stopPropagation() + } + /> + + } + /> +
+ + ); + })} + + )}
- +
@@ -247,8 +258,13 @@ const File: FunctionComponent = () => { shape="circle" icon={} onClick={() => { - setFiles(dataList); - store.clearFilePath(); + getFiles( + currentBucket, + store.getMiddlePath(), + currentStorage, + ).then(() => { + store.clearFilePath(); + }); }} />