diff options
author | André Oliveira <oliveira.andrerodrigues95@gmail.com> | 2023-08-31 18:37:46 +0100 |
---|---|---|
committer | André Oliveira <oliveira.andrerodrigues95@gmail.com> | 2023-08-31 18:37:46 +0100 |
commit | c8ae78efe531ace78149dd49b25c4cb02fa31b84 (patch) | |
tree | cec786a50f24df1e5e4be3fd8cb9b08700498b5b | |
parent | 6.5.0-nightly.4 [skip ci] (diff) | |
download | ferdium-app-download-feature.tar.gz ferdium-app-download-feature.tar.zst ferdium-app-download-feature.zip |
feat: initial proof of concept download (breakthrough!)download-feature
-rw-r--r-- | package.json | 3 | ||||
-rw-r--r-- | pnpm-lock.yaml | 103 | ||||
-rw-r--r-- | src/components/layout/Sidebar.tsx | 83 | ||||
-rw-r--r-- | src/index.ts | 21 | ||||
-rw-r--r-- | src/models/Service.ts | 67 |
5 files changed, 257 insertions, 20 deletions
diff --git a/package.json b/package.json index cedef9718..2e272506a 100644 --- a/package.json +++ b/package.json | |||
@@ -14,7 +14,7 @@ | |||
14 | "private": true, | 14 | "private": true, |
15 | "engines": { | 15 | "engines": { |
16 | "node": "18.15.0", | 16 | "node": "18.15.0", |
17 | "pnpm": "8.6.2" | 17 | "pnpm": "8.6.10" |
18 | }, | 18 | }, |
19 | "engine-strict": true, | 19 | "engine-strict": true, |
20 | "volta": { | 20 | "volta": { |
@@ -103,6 +103,7 @@ | |||
103 | "os-name": "4.0.1", | 103 | "os-name": "4.0.1", |
104 | "pretty-bytes": "5.6.0", | 104 | "pretty-bytes": "5.6.0", |
105 | "prop-types": "15.8.1", | 105 | "prop-types": "15.8.1", |
106 | "rc-progress": "3.5.1", | ||
106 | "react": "18.2.0", | 107 | "react": "18.2.0", |
107 | "react-color": "2.19.3", | 108 | "react-color": "2.19.3", |
108 | "react-confetti": "6.1.0", | 109 | "react-confetti": "6.1.0", |
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c002f192..855f0f6c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml | |||
@@ -170,6 +170,9 @@ dependencies: | |||
170 | prop-types: | 170 | prop-types: |
171 | specifier: 15.8.1 | 171 | specifier: 15.8.1 |
172 | version: 15.8.1 | 172 | version: 15.8.1 |
173 | rc-progress: | ||
174 | specifier: 3.5.1 | ||
175 | version: 3.5.1(react-dom@18.2.0)(react@18.2.0) | ||
173 | react: | 176 | react: |
174 | specifier: 18.2.0 | 177 | specifier: 18.2.0 |
175 | version: 18.2.0 | 178 | version: 18.2.0 |
@@ -1746,6 +1749,7 @@ packages: | |||
1746 | 1749 | ||
1747 | /@gar/promisify@1.1.3: | 1750 | /@gar/promisify@1.1.3: |
1748 | resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} | 1751 | resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} |
1752 | requiresBuild: true | ||
1749 | dev: false | 1753 | dev: false |
1750 | optional: true | 1754 | optional: true |
1751 | 1755 | ||
@@ -1820,7 +1824,7 @@ packages: | |||
1820 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} | 1824 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} |
1821 | dependencies: | 1825 | dependencies: |
1822 | '@jest/types': 29.6.1 | 1826 | '@jest/types': 29.6.1 |
1823 | '@types/node': 20.4.7 | 1827 | '@types/node': 18.15.3 |
1824 | chalk: 4.1.2 | 1828 | chalk: 4.1.2 |
1825 | jest-message-util: 29.6.2 | 1829 | jest-message-util: 29.6.2 |
1826 | jest-util: 29.6.2 | 1830 | jest-util: 29.6.2 |
@@ -1876,7 +1880,7 @@ packages: | |||
1876 | dependencies: | 1880 | dependencies: |
1877 | '@jest/fake-timers': 29.6.2 | 1881 | '@jest/fake-timers': 29.6.2 |
1878 | '@jest/types': 29.6.1 | 1882 | '@jest/types': 29.6.1 |
1879 | '@types/node': 20.4.7 | 1883 | '@types/node': 18.15.3 |
1880 | jest-mock: 29.6.2 | 1884 | jest-mock: 29.6.2 |
1881 | dev: true | 1885 | dev: true |
1882 | 1886 | ||
@@ -1910,7 +1914,7 @@ packages: | |||
1910 | dependencies: | 1914 | dependencies: |
1911 | '@jest/types': 29.6.1 | 1915 | '@jest/types': 29.6.1 |
1912 | '@sinonjs/fake-timers': 10.2.0 | 1916 | '@sinonjs/fake-timers': 10.2.0 |
1913 | '@types/node': 20.4.7 | 1917 | '@types/node': 18.15.3 |
1914 | jest-message-util: 29.6.2 | 1918 | jest-message-util: 29.6.2 |
1915 | jest-mock: 29.6.2 | 1919 | jest-mock: 29.6.2 |
1916 | jest-util: 29.6.2 | 1920 | jest-util: 29.6.2 |
@@ -1943,7 +1947,7 @@ packages: | |||
1943 | '@jest/transform': 29.6.2 | 1947 | '@jest/transform': 29.6.2 |
1944 | '@jest/types': 29.6.1 | 1948 | '@jest/types': 29.6.1 |
1945 | '@jridgewell/trace-mapping': 0.3.19 | 1949 | '@jridgewell/trace-mapping': 0.3.19 |
1946 | '@types/node': 20.4.7 | 1950 | '@types/node': 18.15.3 |
1947 | chalk: 4.1.2 | 1951 | chalk: 4.1.2 |
1948 | collect-v8-coverage: 1.0.1 | 1952 | collect-v8-coverage: 1.0.1 |
1949 | exit: 0.1.2 | 1953 | exit: 0.1.2 |
@@ -2204,6 +2208,7 @@ packages: | |||
2204 | 2208 | ||
2205 | /@npmcli/fs@1.1.1: | 2209 | /@npmcli/fs@1.1.1: |
2206 | resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} | 2210 | resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} |
2211 | requiresBuild: true | ||
2207 | dependencies: | 2212 | dependencies: |
2208 | '@gar/promisify': 1.1.3 | 2213 | '@gar/promisify': 1.1.3 |
2209 | semver: 7.5.4 | 2214 | semver: 7.5.4 |
@@ -2221,6 +2226,7 @@ packages: | |||
2221 | resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} | 2226 | resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} |
2222 | engines: {node: '>=10'} | 2227 | engines: {node: '>=10'} |
2223 | deprecated: This functionality has been moved to @npmcli/fs | 2228 | deprecated: This functionality has been moved to @npmcli/fs |
2229 | requiresBuild: true | ||
2224 | dependencies: | 2230 | dependencies: |
2225 | mkdirp: 1.0.4 | 2231 | mkdirp: 1.0.4 |
2226 | rimraf: 3.0.2 | 2232 | rimraf: 3.0.2 |
@@ -2447,6 +2453,7 @@ packages: | |||
2447 | /@tootallnate/once@1.1.2: | 2453 | /@tootallnate/once@1.1.2: |
2448 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} | 2454 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} |
2449 | engines: {node: '>= 6'} | 2455 | engines: {node: '>= 6'} |
2456 | requiresBuild: true | ||
2450 | dev: false | 2457 | dev: false |
2451 | optional: true | 2458 | optional: true |
2452 | 2459 | ||
@@ -2509,7 +2516,7 @@ packages: | |||
2509 | dependencies: | 2516 | dependencies: |
2510 | '@types/http-cache-semantics': 4.0.1 | 2517 | '@types/http-cache-semantics': 4.0.1 |
2511 | '@types/keyv': 3.1.4 | 2518 | '@types/keyv': 3.1.4 |
2512 | '@types/node': 20.4.7 | 2519 | '@types/node': 18.15.3 |
2513 | '@types/responselike': 1.0.0 | 2520 | '@types/responselike': 1.0.0 |
2514 | 2521 | ||
2515 | /@types/color-convert@2.0.0: | 2522 | /@types/color-convert@2.0.0: |
@@ -2550,7 +2557,7 @@ packages: | |||
2550 | /@types/graceful-fs@4.1.5: | 2557 | /@types/graceful-fs@4.1.5: |
2551 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} | 2558 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} |
2552 | dependencies: | 2559 | dependencies: |
2553 | '@types/node': 20.4.7 | 2560 | '@types/node': 18.15.3 |
2554 | dev: true | 2561 | dev: true |
2555 | 2562 | ||
2556 | /@types/hoist-non-react-statics@3.3.1: | 2563 | /@types/hoist-non-react-statics@3.3.1: |
@@ -2603,7 +2610,7 @@ packages: | |||
2603 | /@types/keyv@3.1.4: | 2610 | /@types/keyv@3.1.4: |
2604 | resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} | 2611 | resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} |
2605 | dependencies: | 2612 | dependencies: |
2606 | '@types/node': 20.4.7 | 2613 | '@types/node': 18.15.3 |
2607 | 2614 | ||
2608 | /@types/lodash@4.14.197: | 2615 | /@types/lodash@4.14.197: |
2609 | resolution: {integrity: sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==} | 2616 | resolution: {integrity: sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==} |
@@ -2622,6 +2629,7 @@ packages: | |||
2622 | 2629 | ||
2623 | /@types/node@20.4.7: | 2630 | /@types/node@20.4.7: |
2624 | resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} | 2631 | resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} |
2632 | dev: true | ||
2625 | 2633 | ||
2626 | /@types/normalize-package-data@2.4.1: | 2634 | /@types/normalize-package-data@2.4.1: |
2627 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} | 2635 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} |
@@ -2631,7 +2639,7 @@ packages: | |||
2631 | resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==} | 2639 | resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==} |
2632 | requiresBuild: true | 2640 | requiresBuild: true |
2633 | dependencies: | 2641 | dependencies: |
2634 | '@types/node': 20.4.7 | 2642 | '@types/node': 18.15.3 |
2635 | xmlbuilder: 15.1.1 | 2643 | xmlbuilder: 15.1.1 |
2636 | dev: true | 2644 | dev: true |
2637 | optional: true | 2645 | optional: true |
@@ -2680,7 +2688,7 @@ packages: | |||
2680 | /@types/responselike@1.0.0: | 2688 | /@types/responselike@1.0.0: |
2681 | resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} | 2689 | resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} |
2682 | dependencies: | 2690 | dependencies: |
2683 | '@types/node': 20.4.7 | 2691 | '@types/node': 18.15.3 |
2684 | 2692 | ||
2685 | /@types/route-parser@0.1.4: | 2693 | /@types/route-parser@0.1.4: |
2686 | resolution: {integrity: sha512-lwH3SeyKwCAwP7oUoJNryPDdbW3Bx5lrB6mhV5iebqzOJHIut6wlaSxpQR4Lsk6j7wC08pGenr/xE8I/A4J3Fg==} | 2694 | resolution: {integrity: sha512-lwH3SeyKwCAwP7oUoJNryPDdbW3Bx5lrB6mhV5iebqzOJHIut6wlaSxpQR4Lsk6j7wC08pGenr/xE8I/A4J3Fg==} |
@@ -3134,6 +3142,7 @@ packages: | |||
3134 | /aggregate-error@3.1.0: | 3142 | /aggregate-error@3.1.0: |
3135 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} | 3143 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} |
3136 | engines: {node: '>=8'} | 3144 | engines: {node: '>=8'} |
3145 | requiresBuild: true | ||
3137 | dependencies: | 3146 | dependencies: |
3138 | clean-stack: 2.2.0 | 3147 | clean-stack: 2.2.0 |
3139 | indent-string: 4.0.0 | 3148 | indent-string: 4.0.0 |
@@ -3530,6 +3539,7 @@ packages: | |||
3530 | /are-we-there-yet@3.0.1: | 3539 | /are-we-there-yet@3.0.1: |
3531 | resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} | 3540 | resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} |
3532 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} | 3541 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} |
3542 | requiresBuild: true | ||
3533 | dependencies: | 3543 | dependencies: |
3534 | delegates: 1.0.0 | 3544 | delegates: 1.0.0 |
3535 | readable-stream: 3.6.2 | 3545 | readable-stream: 3.6.2 |
@@ -3896,6 +3906,7 @@ packages: | |||
3896 | 3906 | ||
3897 | /bindings@1.5.0: | 3907 | /bindings@1.5.0: |
3898 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} | 3908 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} |
3909 | requiresBuild: true | ||
3899 | dependencies: | 3910 | dependencies: |
3900 | file-uri-to-path: 1.0.0 | 3911 | file-uri-to-path: 1.0.0 |
3901 | dev: false | 3912 | dev: false |
@@ -3937,6 +3948,7 @@ packages: | |||
3937 | 3948 | ||
3938 | /boolean@3.2.0: | 3949 | /boolean@3.2.0: |
3939 | resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} | 3950 | resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} |
3951 | requiresBuild: true | ||
3940 | optional: true | 3952 | optional: true |
3941 | 3953 | ||
3942 | /bplist-parser@0.2.0: | 3954 | /bplist-parser@0.2.0: |
@@ -4109,6 +4121,7 @@ packages: | |||
4109 | /cacache@15.3.0: | 4121 | /cacache@15.3.0: |
4110 | resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} | 4122 | resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} |
4111 | engines: {node: '>= 10'} | 4123 | engines: {node: '>= 10'} |
4124 | requiresBuild: true | ||
4112 | dependencies: | 4125 | dependencies: |
4113 | '@npmcli/fs': 1.1.1 | 4126 | '@npmcli/fs': 1.1.1 |
4114 | '@npmcli/move-file': 1.1.2 | 4127 | '@npmcli/move-file': 1.1.2 |
@@ -4343,6 +4356,7 @@ packages: | |||
4343 | /clean-stack@2.2.0: | 4356 | /clean-stack@2.2.0: |
4344 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} | 4357 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} |
4345 | engines: {node: '>=6'} | 4358 | engines: {node: '>=6'} |
4359 | requiresBuild: true | ||
4346 | 4360 | ||
4347 | /cli-cursor@3.1.0: | 4361 | /cli-cursor@3.1.0: |
4348 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} | 4362 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} |
@@ -5105,6 +5119,7 @@ packages: | |||
5105 | 5119 | ||
5106 | /detect-node@2.1.0: | 5120 | /detect-node@2.1.0: |
5107 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} | 5121 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} |
5122 | requiresBuild: true | ||
5108 | optional: true | 5123 | optional: true |
5109 | 5124 | ||
5110 | /didyoumean@1.2.2: | 5125 | /didyoumean@1.2.2: |
@@ -5415,6 +5430,7 @@ packages: | |||
5415 | 5430 | ||
5416 | /err-code@2.0.3: | 5431 | /err-code@2.0.3: |
5417 | resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} | 5432 | resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} |
5433 | requiresBuild: true | ||
5418 | 5434 | ||
5419 | /error-ex@1.3.2: | 5435 | /error-ex@1.3.2: |
5420 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} | 5436 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} |
@@ -5527,6 +5543,7 @@ packages: | |||
5527 | 5543 | ||
5528 | /es6-error@4.1.1: | 5544 | /es6-error@4.1.1: |
5529 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} | 5545 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} |
5546 | requiresBuild: true | ||
5530 | optional: true | 5547 | optional: true |
5531 | 5548 | ||
5532 | /es6-iterator@2.0.3: | 5549 | /es6-iterator@2.0.3: |
@@ -6183,7 +6200,7 @@ packages: | |||
6183 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} | 6200 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} |
6184 | dependencies: | 6201 | dependencies: |
6185 | '@jest/expect-utils': 29.6.2 | 6202 | '@jest/expect-utils': 29.6.2 |
6186 | '@types/node': 20.4.7 | 6203 | '@types/node': 18.15.3 |
6187 | jest-get-type: 29.4.3 | 6204 | jest-get-type: 29.4.3 |
6188 | jest-matcher-utils: 29.6.2 | 6205 | jest-matcher-utils: 29.6.2 |
6189 | jest-message-util: 29.6.2 | 6206 | jest-message-util: 29.6.2 |
@@ -6405,6 +6422,7 @@ packages: | |||
6405 | 6422 | ||
6406 | /file-uri-to-path@1.0.0: | 6423 | /file-uri-to-path@1.0.0: |
6407 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} | 6424 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} |
6425 | requiresBuild: true | ||
6408 | dev: false | 6426 | dev: false |
6409 | optional: true | 6427 | optional: true |
6410 | 6428 | ||
@@ -6637,6 +6655,7 @@ packages: | |||
6637 | 6655 | ||
6638 | /fs.realpath@1.0.0: | 6656 | /fs.realpath@1.0.0: |
6639 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} | 6657 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} |
6658 | requiresBuild: true | ||
6640 | 6659 | ||
6641 | /fsevents@2.3.3: | 6660 | /fsevents@2.3.3: |
6642 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} | 6661 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} |
@@ -6685,6 +6704,7 @@ packages: | |||
6685 | /gauge@4.0.4: | 6704 | /gauge@4.0.4: |
6686 | resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} | 6705 | resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} |
6687 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} | 6706 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} |
6707 | requiresBuild: true | ||
6688 | dependencies: | 6708 | dependencies: |
6689 | aproba: 2.0.0 | 6709 | aproba: 2.0.0 |
6690 | color-support: 1.1.3 | 6710 | color-support: 1.1.3 |
@@ -7112,6 +7132,7 @@ packages: | |||
7112 | /http-proxy-agent@4.0.1: | 7132 | /http-proxy-agent@4.0.1: |
7113 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} | 7133 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} |
7114 | engines: {node: '>= 6'} | 7134 | engines: {node: '>= 6'} |
7135 | requiresBuild: true | ||
7115 | dependencies: | 7136 | dependencies: |
7116 | '@tootallnate/once': 1.1.2 | 7137 | '@tootallnate/once': 1.1.2 |
7117 | agent-base: 6.0.2 | 7138 | agent-base: 6.0.2 |
@@ -7184,6 +7205,7 @@ packages: | |||
7184 | 7205 | ||
7185 | /humanize-ms@1.2.1: | 7206 | /humanize-ms@1.2.1: |
7186 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} | 7207 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} |
7208 | requiresBuild: true | ||
7187 | dependencies: | 7209 | dependencies: |
7188 | ms: 2.1.3 | 7210 | ms: 2.1.3 |
7189 | 7211 | ||
@@ -7268,6 +7290,7 @@ packages: | |||
7268 | 7290 | ||
7269 | /infer-owner@1.0.4: | 7291 | /infer-owner@1.0.4: |
7270 | resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} | 7292 | resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} |
7293 | requiresBuild: true | ||
7271 | dev: false | 7294 | dev: false |
7272 | optional: true | 7295 | optional: true |
7273 | 7296 | ||
@@ -7278,6 +7301,7 @@ packages: | |||
7278 | 7301 | ||
7279 | /inflight@1.0.6: | 7302 | /inflight@1.0.6: |
7280 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} | 7303 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} |
7304 | requiresBuild: true | ||
7281 | dependencies: | 7305 | dependencies: |
7282 | once: 1.4.0 | 7306 | once: 1.4.0 |
7283 | wrappy: 1.0.2 | 7307 | wrappy: 1.0.2 |
@@ -7347,6 +7371,7 @@ packages: | |||
7347 | 7371 | ||
7348 | /ip@2.0.0: | 7372 | /ip@2.0.0: |
7349 | resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} | 7373 | resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} |
7374 | requiresBuild: true | ||
7350 | 7375 | ||
7351 | /ipaddr.js@1.9.1: | 7376 | /ipaddr.js@1.9.1: |
7352 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} | 7377 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} |
@@ -7864,7 +7889,7 @@ packages: | |||
7864 | '@jest/expect': 29.6.2 | 7889 | '@jest/expect': 29.6.2 |
7865 | '@jest/test-result': 29.6.2 | 7890 | '@jest/test-result': 29.6.2 |
7866 | '@jest/types': 29.6.1 | 7891 | '@jest/types': 29.6.1 |
7867 | '@types/node': 20.4.7 | 7892 | '@types/node': 18.15.3 |
7868 | chalk: 4.1.2 | 7893 | chalk: 4.1.2 |
7869 | co: 4.6.0 | 7894 | co: 4.6.0 |
7870 | dedent: 1.5.1 | 7895 | dedent: 1.5.1 |
@@ -8000,7 +8025,7 @@ packages: | |||
8000 | '@jest/environment': 29.6.2 | 8025 | '@jest/environment': 29.6.2 |
8001 | '@jest/fake-timers': 29.6.2 | 8026 | '@jest/fake-timers': 29.6.2 |
8002 | '@jest/types': 29.6.1 | 8027 | '@jest/types': 29.6.1 |
8003 | '@types/node': 20.4.7 | 8028 | '@types/node': 18.15.3 |
8004 | jest-mock: 29.6.2 | 8029 | jest-mock: 29.6.2 |
8005 | jest-util: 29.6.2 | 8030 | jest-util: 29.6.2 |
8006 | dev: true | 8031 | dev: true |
@@ -8016,7 +8041,7 @@ packages: | |||
8016 | dependencies: | 8041 | dependencies: |
8017 | '@jest/types': 29.6.1 | 8042 | '@jest/types': 29.6.1 |
8018 | '@types/graceful-fs': 4.1.5 | 8043 | '@types/graceful-fs': 4.1.5 |
8019 | '@types/node': 20.4.7 | 8044 | '@types/node': 18.15.3 |
8020 | anymatch: 3.1.3 | 8045 | anymatch: 3.1.3 |
8021 | fb-watchman: 2.0.2 | 8046 | fb-watchman: 2.0.2 |
8022 | graceful-fs: 4.2.11 | 8047 | graceful-fs: 4.2.11 |
@@ -8092,7 +8117,7 @@ packages: | |||
8092 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} | 8117 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} |
8093 | dependencies: | 8118 | dependencies: |
8094 | '@jest/types': 29.6.1 | 8119 | '@jest/types': 29.6.1 |
8095 | '@types/node': 20.4.7 | 8120 | '@types/node': 18.15.3 |
8096 | jest-util: 29.6.2 | 8121 | jest-util: 29.6.2 |
8097 | dev: true | 8122 | dev: true |
8098 | 8123 | ||
@@ -8147,7 +8172,7 @@ packages: | |||
8147 | '@jest/test-result': 29.6.2 | 8172 | '@jest/test-result': 29.6.2 |
8148 | '@jest/transform': 29.6.2 | 8173 | '@jest/transform': 29.6.2 |
8149 | '@jest/types': 29.6.1 | 8174 | '@jest/types': 29.6.1 |
8150 | '@types/node': 20.4.7 | 8175 | '@types/node': 18.15.3 |
8151 | chalk: 4.1.2 | 8176 | chalk: 4.1.2 |
8152 | emittery: 0.13.1 | 8177 | emittery: 0.13.1 |
8153 | graceful-fs: 4.2.11 | 8178 | graceful-fs: 4.2.11 |
@@ -8178,7 +8203,7 @@ packages: | |||
8178 | '@jest/test-result': 29.6.2 | 8203 | '@jest/test-result': 29.6.2 |
8179 | '@jest/transform': 29.6.2 | 8204 | '@jest/transform': 29.6.2 |
8180 | '@jest/types': 29.6.1 | 8205 | '@jest/types': 29.6.1 |
8181 | '@types/node': 20.4.7 | 8206 | '@types/node': 18.15.3 |
8182 | chalk: 4.1.2 | 8207 | chalk: 4.1.2 |
8183 | cjs-module-lexer: 1.2.2 | 8208 | cjs-module-lexer: 1.2.2 |
8184 | collect-v8-coverage: 1.0.1 | 8209 | collect-v8-coverage: 1.0.1 |
@@ -8242,7 +8267,7 @@ packages: | |||
8242 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} | 8267 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} |
8243 | dependencies: | 8268 | dependencies: |
8244 | '@jest/types': 29.6.1 | 8269 | '@jest/types': 29.6.1 |
8245 | '@types/node': 20.4.7 | 8270 | '@types/node': 18.15.3 |
8246 | chalk: 4.1.2 | 8271 | chalk: 4.1.2 |
8247 | ci-info: 3.8.0 | 8272 | ci-info: 3.8.0 |
8248 | graceful-fs: 4.2.11 | 8273 | graceful-fs: 4.2.11 |
@@ -8267,7 +8292,7 @@ packages: | |||
8267 | dependencies: | 8292 | dependencies: |
8268 | '@jest/test-result': 29.6.2 | 8293 | '@jest/test-result': 29.6.2 |
8269 | '@jest/types': 29.6.1 | 8294 | '@jest/types': 29.6.1 |
8270 | '@types/node': 20.4.7 | 8295 | '@types/node': 18.15.3 |
8271 | ansi-escapes: 4.3.2 | 8296 | ansi-escapes: 4.3.2 |
8272 | chalk: 4.1.2 | 8297 | chalk: 4.1.2 |
8273 | emittery: 0.13.1 | 8298 | emittery: 0.13.1 |
@@ -8279,7 +8304,7 @@ packages: | |||
8279 | resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==} | 8304 | resolution: {integrity: sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==} |
8280 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} | 8305 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} |
8281 | dependencies: | 8306 | dependencies: |
8282 | '@types/node': 20.4.7 | 8307 | '@types/node': 18.15.3 |
8283 | jest-util: 29.6.2 | 8308 | jest-util: 29.6.2 |
8284 | merge-stream: 2.0.0 | 8309 | merge-stream: 2.0.0 |
8285 | supports-color: 8.1.1 | 8310 | supports-color: 8.1.1 |
@@ -9025,6 +9050,7 @@ packages: | |||
9025 | /make-fetch-happen@9.1.0: | 9050 | /make-fetch-happen@9.1.0: |
9026 | resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} | 9051 | resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} |
9027 | engines: {node: '>= 10'} | 9052 | engines: {node: '>= 10'} |
9053 | requiresBuild: true | ||
9028 | dependencies: | 9054 | dependencies: |
9029 | agentkeepalive: 4.2.1 | 9055 | agentkeepalive: 4.2.1 |
9030 | cacache: 15.3.0 | 9056 | cacache: 15.3.0 |
@@ -9099,6 +9125,7 @@ packages: | |||
9099 | /matcher@3.0.0: | 9125 | /matcher@3.0.0: |
9100 | resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} | 9126 | resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} |
9101 | engines: {node: '>=10'} | 9127 | engines: {node: '>=10'} |
9128 | requiresBuild: true | ||
9102 | dependencies: | 9129 | dependencies: |
9103 | escape-string-regexp: 4.0.0 | 9130 | escape-string-regexp: 4.0.0 |
9104 | optional: true | 9131 | optional: true |
@@ -9277,6 +9304,7 @@ packages: | |||
9277 | /minipass-fetch@1.4.1: | 9304 | /minipass-fetch@1.4.1: |
9278 | resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} | 9305 | resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} |
9279 | engines: {node: '>=8'} | 9306 | engines: {node: '>=8'} |
9307 | requiresBuild: true | ||
9280 | dependencies: | 9308 | dependencies: |
9281 | minipass: 3.3.6 | 9309 | minipass: 3.3.6 |
9282 | minipass-sized: 1.0.3 | 9310 | minipass-sized: 1.0.3 |
@@ -10287,6 +10315,7 @@ packages: | |||
10287 | 10315 | ||
10288 | /promise-inflight@1.0.1: | 10316 | /promise-inflight@1.0.1: |
10289 | resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} | 10317 | resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} |
10318 | requiresBuild: true | ||
10290 | peerDependencies: | 10319 | peerDependencies: |
10291 | bluebird: '*' | 10320 | bluebird: '*' |
10292 | peerDependenciesMeta: | 10321 | peerDependenciesMeta: |
@@ -10623,6 +10652,31 @@ packages: | |||
10623 | unpipe: 1.0.0 | 10652 | unpipe: 1.0.0 |
10624 | dev: false | 10653 | dev: false |
10625 | 10654 | ||
10655 | /rc-progress@3.5.1(react-dom@18.2.0)(react@18.2.0): | ||
10656 | resolution: {integrity: sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==} | ||
10657 | peerDependencies: | ||
10658 | react: '>=16.9.0' | ||
10659 | react-dom: '>=16.9.0' | ||
10660 | dependencies: | ||
10661 | '@babel/runtime': 7.21.5 | ||
10662 | classnames: 2.3.2 | ||
10663 | rc-util: 5.37.0(react-dom@18.2.0)(react@18.2.0) | ||
10664 | react: 18.2.0 | ||
10665 | react-dom: 18.2.0(react@18.2.0) | ||
10666 | dev: false | ||
10667 | |||
10668 | /rc-util@5.37.0(react-dom@18.2.0)(react@18.2.0): | ||
10669 | resolution: {integrity: sha512-cPMV8DzaHI1KDaS7XPRXAf4J7mtBqjvjikLpQieaeOO7+cEbqY2j7Kso/T0R0OiEZTNcLS/8Zl9YrlXiO9UbjQ==} | ||
10670 | peerDependencies: | ||
10671 | react: '>=16.9.0' | ||
10672 | react-dom: '>=16.9.0' | ||
10673 | dependencies: | ||
10674 | '@babel/runtime': 7.21.5 | ||
10675 | react: 18.2.0 | ||
10676 | react-dom: 18.2.0(react@18.2.0) | ||
10677 | react-is: 16.13.1 | ||
10678 | dev: false | ||
10679 | |||
10626 | /react-color@2.19.3(react@18.2.0): | 10680 | /react-color@2.19.3(react@18.2.0): |
10627 | resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} | 10681 | resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} |
10628 | peerDependencies: | 10682 | peerDependencies: |
@@ -11213,6 +11267,7 @@ packages: | |||
11213 | /retry@0.12.0: | 11267 | /retry@0.12.0: |
11214 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} | 11268 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} |
11215 | engines: {node: '>= 4'} | 11269 | engines: {node: '>= 4'} |
11270 | requiresBuild: true | ||
11216 | 11271 | ||
11217 | /reusify@1.0.4: | 11272 | /reusify@1.0.4: |
11218 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} | 11273 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} |
@@ -11240,6 +11295,7 @@ packages: | |||
11240 | /roarr@2.15.4: | 11295 | /roarr@2.15.4: |
11241 | resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} | 11296 | resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} |
11242 | engines: {node: '>=8.0'} | 11297 | engines: {node: '>=8.0'} |
11298 | requiresBuild: true | ||
11243 | dependencies: | 11299 | dependencies: |
11244 | boolean: 3.2.0 | 11300 | boolean: 3.2.0 |
11245 | detect-node: 2.1.0 | 11301 | detect-node: 2.1.0 |
@@ -11377,6 +11433,7 @@ packages: | |||
11377 | 11433 | ||
11378 | /semver-compare@1.0.0: | 11434 | /semver-compare@1.0.0: |
11379 | resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} | 11435 | resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} |
11436 | requiresBuild: true | ||
11380 | optional: true | 11437 | optional: true |
11381 | 11438 | ||
11382 | /semver@5.5.1: | 11439 | /semver@5.5.1: |
@@ -11459,6 +11516,7 @@ packages: | |||
11459 | /serialize-error@7.0.1: | 11516 | /serialize-error@7.0.1: |
11460 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} | 11517 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} |
11461 | engines: {node: '>=10'} | 11518 | engines: {node: '>=10'} |
11519 | requiresBuild: true | ||
11462 | dependencies: | 11520 | dependencies: |
11463 | type-fest: 0.13.1 | 11521 | type-fest: 0.13.1 |
11464 | optional: true | 11522 | optional: true |
@@ -11651,6 +11709,7 @@ packages: | |||
11651 | /smart-buffer@4.2.0: | 11709 | /smart-buffer@4.2.0: |
11652 | resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} | 11710 | resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} |
11653 | engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} | 11711 | engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} |
11712 | requiresBuild: true | ||
11654 | 11713 | ||
11655 | /snapdragon-node@2.1.1: | 11714 | /snapdragon-node@2.1.1: |
11656 | resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} | 11715 | resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} |
@@ -11687,6 +11746,7 @@ packages: | |||
11687 | /socks-proxy-agent@6.2.1: | 11746 | /socks-proxy-agent@6.2.1: |
11688 | resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} | 11747 | resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} |
11689 | engines: {node: '>= 10'} | 11748 | engines: {node: '>= 10'} |
11749 | requiresBuild: true | ||
11690 | dependencies: | 11750 | dependencies: |
11691 | agent-base: 6.0.2 | 11751 | agent-base: 6.0.2 |
11692 | debug: 4.3.4 | 11752 | debug: 4.3.4 |
@@ -11828,6 +11888,7 @@ packages: | |||
11828 | 11888 | ||
11829 | /sprintf-js@1.1.2: | 11889 | /sprintf-js@1.1.2: |
11830 | resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} | 11890 | resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} |
11891 | requiresBuild: true | ||
11831 | optional: true | 11892 | optional: true |
11832 | 11893 | ||
11833 | /sqlite3@5.1.6: | 11894 | /sqlite3@5.1.6: |
@@ -11874,6 +11935,7 @@ packages: | |||
11874 | /ssri@8.0.1: | 11935 | /ssri@8.0.1: |
11875 | resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} | 11936 | resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} |
11876 | engines: {node: '>= 8'} | 11937 | engines: {node: '>= 8'} |
11938 | requiresBuild: true | ||
11877 | dependencies: | 11939 | dependencies: |
11878 | minipass: 3.3.6 | 11940 | minipass: 3.3.6 |
11879 | dev: false | 11941 | dev: false |
@@ -12516,6 +12578,7 @@ packages: | |||
12516 | /type-fest@0.13.1: | 12578 | /type-fest@0.13.1: |
12517 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} | 12579 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} |
12518 | engines: {node: '>=10'} | 12580 | engines: {node: '>=10'} |
12581 | requiresBuild: true | ||
12519 | optional: true | 12582 | optional: true |
12520 | 12583 | ||
12521 | /type-fest@0.18.1: | 12584 | /type-fest@0.18.1: |
@@ -12659,6 +12722,7 @@ packages: | |||
12659 | 12722 | ||
12660 | /unique-filename@1.1.1: | 12723 | /unique-filename@1.1.1: |
12661 | resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} | 12724 | resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} |
12725 | requiresBuild: true | ||
12662 | dependencies: | 12726 | dependencies: |
12663 | unique-slug: 2.0.2 | 12727 | unique-slug: 2.0.2 |
12664 | dev: false | 12728 | dev: false |
@@ -12673,6 +12737,7 @@ packages: | |||
12673 | 12737 | ||
12674 | /unique-slug@2.0.2: | 12738 | /unique-slug@2.0.2: |
12675 | resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} | 12739 | resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} |
12740 | requiresBuild: true | ||
12676 | dependencies: | 12741 | dependencies: |
12677 | imurmurhash: 0.1.4 | 12742 | imurmurhash: 0.1.4 |
12678 | dev: false | 12743 | dev: false |
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index 6fd911a24..498ae4696 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx | |||
@@ -1,3 +1,4 @@ | |||
1 | import { ipcRenderer } from 'electron'; | ||
1 | import { Component } from 'react'; | 2 | import { Component } from 'react'; |
2 | import { Tooltip as ReactTooltip } from 'react-tooltip'; | 3 | import { Tooltip as ReactTooltip } from 'react-tooltip'; |
3 | import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; | 4 | import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; |
@@ -14,8 +15,10 @@ import { | |||
14 | mdiPlusBox, | 15 | mdiPlusBox, |
15 | mdiViewGrid, | 16 | mdiViewGrid, |
16 | mdiViewSplitVertical, | 17 | mdiViewSplitVertical, |
18 | mdiCancel, | ||
17 | } from '@mdi/js'; | 19 | } from '@mdi/js'; |
18 | 20 | ||
21 | import { Circle } from 'rc-progress'; | ||
19 | import Tabbar from '../services/tabs/Tabbar'; | 22 | import Tabbar from '../services/tabs/Tabbar'; |
20 | import { | 23 | import { |
21 | addNewServiceShortcutKey, | 24 | addNewServiceShortcutKey, |
@@ -112,6 +115,10 @@ interface IProps extends WrappedComponentProps { | |||
112 | 115 | ||
113 | interface IState { | 116 | interface IState { |
114 | tooltipEnabled: boolean; | 117 | tooltipEnabled: boolean; |
118 | downloadProgress: { | ||
119 | progress: number; | ||
120 | total: number; | ||
121 | } | null; | ||
115 | } | 122 | } |
116 | 123 | ||
117 | @inject('stores', 'actions') | 124 | @inject('stores', 'actions') |
@@ -122,7 +129,33 @@ class Sidebar extends Component<IProps, IState> { | |||
122 | 129 | ||
123 | this.state = { | 130 | this.state = { |
124 | tooltipEnabled: true, | 131 | tooltipEnabled: true, |
132 | downloadProgress: null, | ||
125 | }; | 133 | }; |
134 | |||
135 | ipcRenderer.on('download-progress', this.handleDownloadProgress); | ||
136 | ipcRenderer.on('download-done', this.handleDownloadDone); | ||
137 | } | ||
138 | |||
139 | handleDownloadProgress = (_event, data) => { | ||
140 | this.setState({ | ||
141 | downloadProgress: { | ||
142 | progress: data.item.receivedBytes, | ||
143 | total: data.item.totalBytes, | ||
144 | }, | ||
145 | }); | ||
146 | }; | ||
147 | |||
148 | handleDownloadDone = (_event, _data) => { | ||
149 | this.setState({ | ||
150 | downloadProgress: null, | ||
151 | }); | ||
152 | }; | ||
153 | |||
154 | componentWillUnmount() { | ||
155 | ipcRenderer.removeListener( | ||
156 | 'download-progress', | ||
157 | this.handleDownloadProgress, | ||
158 | ); | ||
126 | } | 159 | } |
127 | 160 | ||
128 | enableToolTip() { | 161 | enableToolTip() { |
@@ -180,6 +213,13 @@ class Sidebar extends Component<IProps, IState> { | |||
180 | 213 | ||
181 | const { isMenuCollapsed } = stores!.settings.all.app; | 214 | const { isMenuCollapsed } = stores!.settings.all.app; |
182 | 215 | ||
216 | const { downloadProgress } = this.state; | ||
217 | |||
218 | const downloadPercentage = | ||
219 | downloadProgress === null | ||
220 | ? 0 | ||
221 | : (downloadProgress.progress / downloadProgress.total) * 100; | ||
222 | |||
183 | return ( | 223 | return ( |
184 | <div className="sidebar"> | 224 | <div className="sidebar"> |
185 | <Tabbar | 225 | <Tabbar |
@@ -361,6 +401,49 @@ class Sidebar extends Component<IProps, IState> { | |||
361 | )} | 401 | )} |
362 | </button> | 402 | </button> |
363 | ) : null} | 403 | ) : null} |
404 | {downloadProgress !== null && ( | ||
405 | <div | ||
406 | className="download-progress" | ||
407 | style={{ | ||
408 | width: '-webkit-fill-available', | ||
409 | height: 'fit-content', | ||
410 | display: 'flex', | ||
411 | justifyContent: 'center', | ||
412 | margin: 5, | ||
413 | }} | ||
414 | > | ||
415 | <Circle | ||
416 | percent={downloadPercentage} | ||
417 | strokeWidth={10} | ||
418 | strokeColor="#008000" | ||
419 | trailColor="grey" | ||
420 | /> | ||
421 | </div> | ||
422 | )} | ||
423 | <button | ||
424 | type="button" | ||
425 | onClick={() => { | ||
426 | ipcRenderer.send('stop-download'); | ||
427 | this.setState({ | ||
428 | downloadProgress: null, | ||
429 | }); | ||
430 | }} | ||
431 | className="sidebar__button sidebar__button--settings" | ||
432 | data-tooltip-id="tooltip-sidebar-button" | ||
433 | data-tooltip-content={`${intl.formatMessage( | ||
434 | globalMessages.settings, | ||
435 | )} (${settingsShortcutKey(false)})`} | ||
436 | > | ||
437 | <Icon icon={mdiCancel} size={1.5} /> | ||
438 | {stores!.settings.app.automaticUpdates && | ||
439 | (stores!.app.updateStatus === | ||
440 | stores!.app.updateStatusTypes.AVAILABLE || | ||
441 | stores!.app.updateStatus === | ||
442 | stores!.app.updateStatusTypes.DOWNLOADED || | ||
443 | this.props.showServicesUpdatedInfoBar) && ( | ||
444 | <span className="update-available">•</span> | ||
445 | )} | ||
446 | </button> | ||
364 | </div> | 447 | </div> |
365 | ); | 448 | ); |
366 | } | 449 | } |
diff --git a/src/index.ts b/src/index.ts index cbc10bdbe..d35462ad1 100644 --- a/src/index.ts +++ b/src/index.ts | |||
@@ -674,6 +674,27 @@ ipcMain.on('window.toolbar-double-clicked', () => { | |||
674 | } | 674 | } |
675 | }); | 675 | }); |
676 | 676 | ||
677 | ipcMain.on('download-started', (_e, data) => { | ||
678 | debug(`download-started from main process ${data.item.url}`); | ||
679 | }); | ||
680 | |||
681 | ipcMain.on('download-progress', (_e, data) => { | ||
682 | mainWindow?.webContents.send('download-progress', data); | ||
683 | debug( | ||
684 | `Receiving bytes: (${data.item.receivedBytes}/${data.item.totalBytes})`, | ||
685 | ); | ||
686 | }); | ||
687 | |||
688 | ipcMain.on('download-done', (_e, data) => { | ||
689 | debug(`download-done from main process ${data}`); | ||
690 | mainWindow?.webContents.send('download-done', {}); | ||
691 | }); | ||
692 | |||
693 | ipcMain.on('stop-download', (_e, data) => { | ||
694 | debug(`stopping download from main process ${data}`); | ||
695 | mainWindow?.webContents.send('cancel-download', {}); | ||
696 | }); | ||
697 | |||
677 | // Quit when all windows are closed. | 698 | // Quit when all windows are closed. |
678 | app.on('window-all-closed', () => { | 699 | app.on('window-all-closed', () => { |
679 | // On OS X it is common for applications and their menu bar | 700 | // On OS X it is common for applications and their menu bar |
diff --git a/src/models/Service.ts b/src/models/Service.ts index 265b3e13c..d48fc3cd6 100644 --- a/src/models/Service.ts +++ b/src/models/Service.ts | |||
@@ -4,6 +4,7 @@ import { ipcRenderer } from 'electron'; | |||
4 | import { webContents } from '@electron/remote'; | 4 | import { webContents } from '@electron/remote'; |
5 | import ElectronWebView from 'react-electron-web-view'; | 5 | import ElectronWebView from 'react-electron-web-view'; |
6 | 6 | ||
7 | import { uniqueId } from 'lodash'; | ||
7 | import { todosStore } from '../features/todos'; | 8 | import { todosStore } from '../features/todos'; |
8 | import { isValidExternalURL, normalizedUrl } from '../helpers/url-helpers'; | 9 | import { isValidExternalURL, normalizedUrl } from '../helpers/url-helpers'; |
9 | import UserAgent from './UserAgent'; | 10 | import UserAgent from './UserAgent'; |
@@ -523,6 +524,72 @@ export default class Service { | |||
523 | }); | 524 | }); |
524 | 525 | ||
525 | if (webviewWebContents) { | 526 | if (webviewWebContents) { |
527 | webviewWebContents.session.on('will-download', (event, item) => { | ||
528 | event.preventDefault(); | ||
529 | |||
530 | debug('will-download', event, item, item.getFilename()); | ||
531 | const downloadId = uniqueId(`${this.id}: `); | ||
532 | |||
533 | ipcRenderer.send('download-started', { | ||
534 | serviceId: this.id, | ||
535 | downloadId, | ||
536 | item: { | ||
537 | filename: item.getFilename(), | ||
538 | url: item.getURL(), | ||
539 | savePath: item.getSavePath(), | ||
540 | }, | ||
541 | }); | ||
542 | |||
543 | item.addListener('updated', (event, state) => { | ||
544 | debug('download updated', event, state); | ||
545 | if (state === 'interrupted') { | ||
546 | debug('Download is interrupted but can be resumed'); | ||
547 | } else if (state === 'progressing') { | ||
548 | if (item.isPaused()) { | ||
549 | debug('Download is paused'); | ||
550 | } else { | ||
551 | debug(`Received bytes: ${item.getReceivedBytes()}`); | ||
552 | ipcRenderer.send('download-progress', { | ||
553 | serviceId: this.id, | ||
554 | downloadId, | ||
555 | item: { | ||
556 | filename: item.getFilename(), | ||
557 | url: item.getURL(), | ||
558 | receivedBytes: item.getReceivedBytes(), | ||
559 | totalBytes: item.getTotalBytes(), | ||
560 | state, | ||
561 | }, | ||
562 | }); | ||
563 | } | ||
564 | } | ||
565 | }); | ||
566 | item.addListener('done', (event, state) => { | ||
567 | debug('download done', event, state); | ||
568 | if (state === 'completed') { | ||
569 | debug('Download successfully'); | ||
570 | } else { | ||
571 | debug(`Download failed: ${state}`); | ||
572 | } | ||
573 | ipcRenderer.send('download-done', { | ||
574 | serviceId: this.id, | ||
575 | downloadId, | ||
576 | item: { | ||
577 | filename: item.getFilename(), | ||
578 | url: item.getURL(), | ||
579 | state, | ||
580 | }, | ||
581 | }); | ||
582 | }); | ||
583 | |||
584 | ipcRenderer.on('cancel-download', (event, { downloadId: id }) => { | ||
585 | // next line, testing | ||
586 | item.cancel(); | ||
587 | |||
588 | if (downloadId === id) { | ||
589 | item.cancel(); | ||
590 | } | ||
591 | }); | ||
592 | }); | ||
526 | webviewWebContents.on('login', (event, _, authInfo, callback) => { | 593 | webviewWebContents.on('login', (event, _, authInfo, callback) => { |
527 | // const authCallback = callback; | 594 | // const authCallback = callback; |
528 | debug('browser login event', authInfo); | 595 | debug('browser login event', authInfo); |