From 7c10ddb7554bd7e7e4f1a85eb2dc464c81aec817 Mon Sep 17 00:00:00 2001 From: Innei Date: Thu, 4 Jul 2024 18:30:51 +0800 Subject: [PATCH] refactor: setting atoms and support disable scroll to mark read (#108) * refactor: setting atoms Signed-off-by: Innei * fix: export Signed-off-by: Innei * feat: show settings hotkey in web app Signed-off-by: Innei * feat: mark unread when scroll switch Signed-off-by: Innei * chore: pin electron builder. https://github.com/electron-userland/electron-builder/issues/8175 Signed-off-by: Innei --------- Signed-off-by: Innei --- package.json | 2 +- pnpm-lock.yaml | 1064 +---------------- src/renderer/src/App.tsx | 29 +- src/renderer/src/atoms/settings/general.ts | 28 + src/renderer/src/atoms/settings/helper.ts | 76 ++ src/renderer/src/atoms/settings/index.ts | 7 + src/renderer/src/atoms/settings/ui.ts | 32 + src/renderer/src/atoms/ui.ts | 82 -- .../src/components/ui/background/vibrancy.tsx | 2 +- .../ui/code-highlighter/shiki/Shiki.tsx | 2 +- .../src/components/ui/modal/stacked/hooks.tsx | 2 +- .../src/components/ui/modal/stacked/modal.tsx | 2 +- .../components/ui/modal/stacked/provider.tsx | 2 +- src/renderer/src/components/user-button.tsx | 1 + src/renderer/src/database/hooks.ts | 16 - src/renderer/src/database/index.ts | 1 - src/renderer/src/hooks/biz/useReduceMotion.ts | 2 +- src/renderer/src/init.ts | 31 +- src/renderer/src/lib/jotai.ts | 7 +- src/renderer/src/lib/utils.ts | 2 + .../src/modules/entry-column/index.tsx | 7 +- .../src/modules/entry-content/index.tsx | 2 +- src/renderer/src/modules/feed-column/list.tsx | 2 +- .../src/modules/settings/modal/layout.tsx | 2 +- .../src/modules/settings/tabs/apperance.tsx | 2 +- .../src/modules/settings/tabs/general.tsx | 63 + .../(main)/(layer)/feeds/[feedId]/layout.tsx | 2 +- src/renderer/src/pages/(main)/layout.tsx | 1 + .../src/pages/settings/(settings)/general.tsx | 44 +- src/renderer/src/providers/root-providers.tsx | 4 +- .../src/providers/ui-setting-Initialize.tsx | 18 +- src/renderer/src/store/utils/clear.ts | 2 +- src/renderer/src/store/utils/hydrate.ts | 25 +- 33 files changed, 373 insertions(+), 1191 deletions(-) create mode 100644 src/renderer/src/atoms/settings/general.ts create mode 100644 src/renderer/src/atoms/settings/helper.ts create mode 100644 src/renderer/src/atoms/settings/index.ts create mode 100644 src/renderer/src/atoms/settings/ui.ts delete mode 100644 src/renderer/src/atoms/ui.ts delete mode 100644 src/renderer/src/database/hooks.ts create mode 100644 src/renderer/src/modules/settings/tabs/general.tsx diff --git a/package.json b/package.json index 7ad10b124d..63e073ef03 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "@vercel/ncc": "0.38.1", "@vitejs/plugin-react": "^4.3.1", "electron": "^30.1.2", - "electron-builder": "^24.9.1", + "electron-builder": "24.9.1", "electron-devtools-installer": "3.2.0", "electron-vite": "^2.3.0", "eslint": "^9.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5cce997e87..e50323f37b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -303,8 +303,8 @@ importers: specifier: ^30.1.2 version: 30.1.2 electron-builder: - specifier: ^24.9.1 - version: 24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)) + specifier: 24.9.1 + version: 24.9.1 electron-devtools-installer: specifier: 3.2.0 version: 3.2.0 @@ -858,12 +858,8 @@ packages: resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} - '@electron/notarize@2.2.1': - resolution: {integrity: sha512-aL+bFMIkpR0cmmj5Zgy0LMKEpgy43/hw5zadEArgmAMWWlKc5buwFvFT9G/o/YJkvXAJm5q3iuTuLaiaXW39sg==} - engines: {node: '>= 10.0.0'} - - '@electron/notarize@2.3.0': - resolution: {integrity: sha512-EiTBU0BwE7HZZjAG1fFWQaiQpCuPrVGn7jPss1kUjD6eTTdXXd29RiZqEqkgN7xqt/Pgn4g3I7Saqovanrfj3w==} + '@electron/notarize@2.1.0': + resolution: {integrity: sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==} engines: {node: '>= 10.0.0'} '@electron/osx-sign@1.0.5': @@ -871,24 +867,10 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - '@electron/osx-sign@1.3.0': - resolution: {integrity: sha512-TEXhxlYSDRr9JWK5nWdOv5MtuUdaZ412uxIIEQ0hLt80o0HYWtQJBlW5QmrQDMtebzATaOjKG9UfCzLyA90zWQ==} - engines: {node: '>=12.0.0'} - hasBin: true - - '@electron/rebuild@3.6.0': - resolution: {integrity: sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==} - engines: {node: '>=12.13.0'} - hasBin: true - - '@electron/universal@1.5.1': - resolution: {integrity: sha512-kbgXxyEauPJiQQUNG2VgUeyfQNFk6hBF11ISN2PNI6agUgPl55pv4eQmaqHzTAzchBvqZ2tQuRVaPStGf0mxGw==} + '@electron/universal@1.4.1': + resolution: {integrity: sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==} engines: {node: '>=8.6'} - '@electron/universal@2.0.1': - resolution: {integrity: sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==} - engines: {node: '>=16.4'} - '@es-joy/jsdoccomment@0.43.1': resolution: {integrity: sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog==} engines: {node: '>=16'} @@ -1130,9 +1112,6 @@ packages: '@fontsource/sn-pro@5.0.1': resolution: {integrity: sha512-Bxx3/qxfadd4Fdjy8xn0kPCaiUf3ma/Kra6+9TmNR/pQhCdAvZtZgSkG8O1Z+3Yt6KE27CuG/OjpAkZ8Bh6VgQ==} - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@hono/auth-js@1.0.8': resolution: {integrity: sha512-tRAT18cLKqZYcAQf5NlowKNOfmJAWB6kWF4oa/bevc/H3obQfbhd4ZidYk3XmENlbLUoPXpXtKR9zoWIS6s8bQ==} engines: {node: '>=18.4.0'} @@ -1199,10 +1178,6 @@ packages: resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} engines: {node: '>= 10'} - '@malept/cross-spawn-promise@2.0.0': - resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} - engines: {node: '>= 12.13.0'} - '@malept/flatpak-bundler@0.4.0': resolution: {integrity: sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==} engines: {node: '>= 10.0.0'} @@ -1219,15 +1194,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/fs@2.1.2': - resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - '@npmcli/move-file@2.0.1': - resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This functionality has been moved to @npmcli/fs - '@panva/hkdf@1.2.0': resolution: {integrity: sha512-97ZQvZJ4gJhi24Io6zI+W7B67I82q1I8i3BSzQ4OyZj1z4OW87/ruF26lrMES58inTKLy2KgVIDcx8PU4AaANQ==} @@ -2269,9 +2235,6 @@ packages: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2295,14 +2258,6 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -2349,42 +2304,9 @@ packages: app-builder-bin@4.0.0: resolution: {integrity: sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==} - app-builder-bin@5.0.0-alpha.3: - resolution: {integrity: sha512-bWTAF50v4ZAVLq6EPZYhaLsFSJLfZz5s9MIeP5k1RkkBsibyJV/Dv6NxfaDO0I++iBmcLKsuzB5E8b1qaeXqew==} - - app-builder-lib@24.13.3: - resolution: {integrity: sha512-FAzX6IBit2POXYGnTCT8YHFO/lr5AapAII6zzhQO3Rw4cEDOgK+t1xhLc5tNcKlicTHlo9zxIwnYCX9X2DLkig==} - engines: {node: '>=14.0.0'} - peerDependencies: - dmg-builder: 24.13.3 - electron-builder-squirrel-windows: 24.13.3 - - app-builder-lib@25.0.0-alpha.9: - resolution: {integrity: sha512-rxkOK9QaNVmbB0Al+qA1xN6M6aIB/mMo5s7nrFmRf4p9ZFXuGcaqEBSmOUA1zf4r7pK1IpfOMiV0cS4lvXTZbQ==} + app-builder-lib@24.9.1: + resolution: {integrity: sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==} engines: {node: '>=14.0.0'} - peerDependencies: - dmg-builder: 25.0.0-alpha.9 - electron-builder-squirrel-windows: 25.0.0-alpha.9 - - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} - - archiver-utils@3.0.4: - resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} - engines: {node: '>= 10'} - - archiver@5.3.2: - resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} - engines: {node: '>= 10'} - - are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -2447,9 +2369,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bluebird-lst@1.0.9: resolution: {integrity: sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==} @@ -2495,19 +2414,16 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - builder-util-runtime@9.2.4: - resolution: {integrity: sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==} + builder-util-runtime@9.2.3: + resolution: {integrity: sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==} engines: {node: '>=12.0.0'} - builder-util-runtime@9.2.5-alpha.2: - resolution: {integrity: sha512-/Ln2ddejGj2HNMJ+X66mKHRcOvmRzUO/dSi8t4hSV64J7IA+DE+mqDb+zogIE2gin7p7YwcGiOkKny4nwPPPXg==} + builder-util-runtime@9.2.4: + resolution: {integrity: sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==} engines: {node: '>=12.0.0'} - builder-util@24.13.1: - resolution: {integrity: sha512-NhbCSIntruNDTOVI9fdXz0dihaqX2YuE1D6zZMrwiErzH4ELZHE6mdiB40wEgZNprDia+FghRFgKoAqMZRRjSA==} - - builder-util@25.0.0-alpha.9: - resolution: {integrity: sha512-WR4YsR9YuPADtYN6a3D8qQ0quU7W9EIIVd13xA6gO2hmWxioDmJvxeF73fLfkh0S//C5GK6XXO8lTlPBN9SeFg==} + builder-util@24.8.1: + resolution: {integrity: sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==} builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -2517,10 +2433,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} @@ -2610,26 +2522,14 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - clear-module@4.1.2: resolution: {integrity: sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==} engines: {node: '>=8'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} @@ -2653,10 +2553,6 @@ packages: clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -2687,10 +2583,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2729,10 +2621,6 @@ packages: resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} engines: {node: '>=0.10.0'} - compress-commons@4.1.2: - resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} - engines: {node: '>= 10'} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2742,12 +2630,6 @@ packages: config-file-ts@0.2.6: resolution: {integrity: sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==} - config-file-ts@0.2.8-rc1: - resolution: {integrity: sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==} - - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -2764,15 +2646,6 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - crc32-stream@4.0.3: - resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} - engines: {node: '>= 10'} - crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} @@ -2886,9 +2759,6 @@ packages: resolution: {integrity: sha512-dxFbFO2RSIhPNBPL/j8Nvdt6/vrkW9+uGf1NLah/QxBGAVbK9fj2fGTO+HwdHpPAyFAsyT9iEn/1SI9SUvespw==} engines: {node: '>=16.0.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -2908,9 +2778,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2918,10 +2785,6 @@ packages: destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -2944,9 +2807,6 @@ packages: dir-compare@3.3.0: resolution: {integrity: sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==} - dir-compare@4.2.0: - resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2958,8 +2818,8 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dmg-builder@24.13.3: - resolution: {integrity: sha512-rcJUkMfnJpfCboZoOOPf4L29TRtEieHNOeAbYPWPxlaBw/Z1RKrRA86dOI9rwaI4tQSc/RD82zTNHprfUHXsoQ==} + dmg-builder@24.9.1: + resolution: {integrity: sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==} dmg-license@1.0.11: resolution: {integrity: sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==} @@ -2987,10 +2847,6 @@ packages: domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} - engines: {node: '>=12'} - dotenv-expand@5.1.0: resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} @@ -3010,22 +2866,16 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-builder-squirrel-windows@25.0.0-alpha.9: - resolution: {integrity: sha512-IK6r96UPVIQcttJrXJ7Kt4nxQarmlZVsKkqMZQUWPu4Sof5bCe0PEMTIFISvgzo7y4MDdjVsCJ9ljZK19PIKZA==} - - electron-builder@24.13.3: - resolution: {integrity: sha512-yZSgVHft5dNVlo31qmJAe4BVKQfFdwpRw7sFp1iQglDRCDD6r22zfRJuZlhtB5gp9FHUxCMEoWGq10SkCnMAIg==} + electron-builder@24.9.1: + resolution: {integrity: sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==} engines: {node: '>=14.0.0'} hasBin: true electron-devtools-installer@3.2.0: resolution: {integrity: sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==} - electron-publish@24.13.1: - resolution: {integrity: sha512-2ZgdEqJ8e9D17Hwp5LEq5mLQPjqU3lv/IALvgp+4W8VeNhryfGhYEQC/PgDPMrnWUp+l60Ou5SJLsu+k4mhQ8A==} - - electron-publish@25.0.0-alpha.9: - resolution: {integrity: sha512-vdqOXtCjrO72sZCB8hfvd8ZTKmUvWMLQ/f78Qe0UH4B+dCShtHnqbUM9Ed1Igsaw0svm2+cW+ce2yVZglr2Z3A==} + electron-publish@24.8.1: + resolution: {integrity: sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==} electron-to-chromium@1.4.731: resolution: {integrity: sha512-+TqVfZjpRz2V/5SPpmJxq9qK620SC5SqCnxQIOi7i/U08ZDcTpKbT7Xjj9FU5CbXTMUb4fywbIr8C7cGv4hcjw==} @@ -3061,9 +2911,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -3319,9 +3166,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -3403,10 +3247,6 @@ packages: font-list@1.5.1: resolution: {integrity: sha512-Hr5V0dsSv91wH3FgirXd7qh1PydqA/vMQyWjFFWn+lUPJtC+3i2tzgVqbLRcvQh87TGdbTGbAR3mEo4VlwC1jw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - foreground-child@3.2.1: resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} @@ -3443,17 +3283,10 @@ packages: from-exponential@1.1.1: resolution: {integrity: sha512-VBE7f5OVnYwdgB3LHa+Qo29h8qVpxhVO9Trlc+AWm+/XNAgks1tAwMFHb33mjeiof77GglsJzeYF7OqXrROP/A==} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -3481,11 +3314,6 @@ packages: resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} engines: {node: '>=10'} - gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - gensequence@7.0.0: resolution: {integrity: sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==} engines: {node: '>=18'} @@ -3536,11 +3364,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true - glob@10.4.2: resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==} engines: {node: '>=16 || 14 >=14.18'} @@ -3550,11 +3373,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} @@ -3619,9 +3437,6 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3730,9 +3545,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - iconv-corefoundation@1.1.7: resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} engines: {node: ^8.11.2 || >=10} @@ -3777,9 +3589,6 @@ packages: resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} engines: {node: '>=18'} - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -3797,10 +3606,6 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3851,13 +3656,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3878,10 +3676,6 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -3896,10 +3690,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.1.2: - resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} - engines: {node: '>=14'} - jackspeak@3.4.0: resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==} engines: {node: '>=14'} @@ -3957,9 +3747,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdoc-type-pratt-parser@4.0.0: resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} @@ -4020,10 +3807,6 @@ packages: lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - lethargy@1.0.9: resolution: {integrity: sha512-nFM8blpCF9rqIL5mRAaTGc78W8oQixVtsD86jbEPvcI13+lDUYJf3R7DZQQL7tCiBpbGpGKMX2gwJFO9hiaOkg==} @@ -4082,18 +3865,9 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -4103,16 +3877,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - log-update@6.0.0: resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} engines: {node: '>=18'} @@ -4146,17 +3913,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - markdown-it-container@4.0.0: resolution: {integrity: sha512-HaNccxUH0l7BNGYbFbjmGpf5aLHAMTinqRZQAEQbMr2cdD3z91Q6kIo1oUn1CQndkT03jat6ckrdRYuwwqLlQw==} @@ -4322,33 +4081,9 @@ packages: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -4404,36 +4139,15 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - node-abi@3.65.0: - resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} - engines: {node: '>=10'} - node-addon-api@1.7.2: resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} - node-api-version@0.2.0: - resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} - node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -4460,11 +4174,6 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -4501,10 +4210,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -4537,10 +4242,6 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -4729,14 +4430,6 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -4884,10 +4577,6 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - read-binary-file-arch@1.0.6: - resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} - hasBin: true - read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -4895,10 +4584,6 @@ packages: resolution: {integrity: sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==} engines: {node: '>=12.0.0'} - read-config-file@6.4.0: - resolution: {integrity: sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==} - engines: {node: '>=12.0.0'} - read-package-up@11.0.0: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} @@ -4918,13 +4603,6 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4989,10 +4667,6 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5028,9 +4702,6 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5070,9 +4741,6 @@ packages: server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -5132,14 +4800,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sonner@1.5.0: resolution: {integrity: sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==} peerDependencies: @@ -5175,10 +4835,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5215,9 +4871,6 @@ packages: string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -5302,10 +4955,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -5443,14 +5092,6 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -5627,9 +5268,6 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -5643,9 +5281,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -5710,10 +5345,6 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - zip-stream@4.1.1: - resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} - engines: {node: '>= 10'} - zod-validation-error@3.3.0: resolution: {integrity: sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==} engines: {node: '>=18.0.0'} @@ -6330,15 +5961,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/notarize@2.2.1': - dependencies: - debug: 4.3.4 - fs-extra: 9.1.0 - promise-retry: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@electron/notarize@2.3.0': + '@electron/notarize@2.1.0': dependencies: debug: 4.3.5 fs-extra: 9.1.0 @@ -6347,17 +5970,6 @@ snapshots: - supports-color '@electron/osx-sign@1.0.5': - dependencies: - compare-version: 0.1.2 - debug: 4.3.4 - fs-extra: 10.1.0 - isbinaryfile: 4.0.10 - minimist: 1.2.8 - plist: 3.1.0 - transitivePeerDependencies: - - supports-color - - '@electron/osx-sign@1.3.0': dependencies: compare-version: 0.1.2 debug: 4.3.5 @@ -6368,31 +5980,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/rebuild@3.6.0': - dependencies: - '@malept/cross-spawn-promise': 2.0.0 - chalk: 4.1.2 - debug: 4.3.5 - detect-libc: 2.0.3 - fs-extra: 10.1.0 - got: 11.8.6 - node-abi: 3.65.0 - node-api-version: 0.2.0 - node-gyp: 9.4.1 - ora: 5.4.1 - read-binary-file-arch: 1.0.6 - semver: 7.6.2 - tar: 6.2.1 - yargs: 17.7.2 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron/universal@1.5.1': + '@electron/universal@1.4.1': dependencies: '@electron/asar': 3.2.10 '@malept/cross-spawn-promise': 1.1.1 - debug: 4.3.4 + debug: 4.3.5 dir-compare: 3.3.0 fs-extra: 9.1.0 minimatch: 3.1.2 @@ -6400,18 +5992,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/universal@2.0.1': - dependencies: - '@electron/asar': 3.2.10 - '@malept/cross-spawn-promise': 2.0.0 - debug: 4.3.5 - dir-compare: 4.2.0 - fs-extra: 11.2.0 - minimatch: 9.0.5 - plist: 3.1.0 - transitivePeerDependencies: - - supports-color - '@es-joy/jsdoccomment@0.43.1': dependencies: '@types/eslint': 8.56.10 @@ -6679,8 +6259,6 @@ snapshots: '@fontsource/sn-pro@5.0.1': {} - '@gar/promisify@1.1.3': {} - '@hono/auth-js@1.0.8(@auth/core@0.34.1)(hono@4.4.7(patch_hash=ycbk46disqruhfjducp47b5fl4))(react@18.3.1)': dependencies: '@auth/core': 0.34.1 @@ -6775,13 +6353,9 @@ snapshots: dependencies: cross-spawn: 7.0.3 - '@malept/cross-spawn-promise@2.0.0': - dependencies: - cross-spawn: 7.0.3 - '@malept/flatpak-bundler@0.4.0': dependencies: - debug: 4.3.4 + debug: 4.3.5 fs-extra: 9.1.0 lodash: 4.17.21 tmp-promise: 3.0.3 @@ -6800,16 +6374,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@npmcli/fs@2.1.2': - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.2 - - '@npmcli/move-file@2.0.1': - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - '@panva/hkdf@1.2.0': {} '@pkgjs/parseargs@0.11.0': @@ -7916,8 +7480,6 @@ snapshots: '@xmldom/xmldom@0.8.10': {} - abbrev@1.1.1: {} - acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 @@ -7934,19 +7496,10 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color - agentkeepalive@4.5.0: - dependencies: - humanize-ms: 1.2.1 - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -7985,26 +7538,23 @@ snapshots: app-builder-bin@4.0.0: {} - app-builder-bin@5.0.0-alpha.3: {} - - app-builder-lib@24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)): + app-builder-lib@24.9.1: dependencies: + 7zip-bin: 5.2.0 '@develar/schema-utils': 2.6.5 - '@electron/notarize': 2.2.1 + '@electron/notarize': 2.1.0 '@electron/osx-sign': 1.0.5 - '@electron/universal': 1.5.1 + '@electron/universal': 1.4.1 '@malept/flatpak-bundler': 0.4.0 '@types/fs-extra': 9.0.13 async-exit-hook: 2.0.1 bluebird-lst: 1.0.9 - builder-util: 24.13.1 - builder-util-runtime: 9.2.4 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chromium-pickle-js: 0.2.0 - debug: 4.3.4 - dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9) + debug: 4.3.5 ejs: 3.1.10 - electron-builder-squirrel-windows: 25.0.0-alpha.9(dmg-builder@24.13.3) - electron-publish: 24.13.1 + electron-publish: 24.8.1 form-data: 4.0.0 fs-extra: 10.1.0 hosted-git-info: 4.1.0 @@ -8021,94 +7571,15 @@ snapshots: transitivePeerDependencies: - supports-color - app-builder-lib@25.0.0-alpha.9(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)): - dependencies: - '@develar/schema-utils': 2.6.5 - '@electron/notarize': 2.3.0 - '@electron/osx-sign': 1.3.0 - '@electron/rebuild': 3.6.0 - '@electron/universal': 2.0.1 - '@malept/flatpak-bundler': 0.4.0 - '@types/fs-extra': 9.0.13 - async-exit-hook: 2.0.1 - bluebird-lst: 1.0.9 - builder-util: 25.0.0-alpha.9 - builder-util-runtime: 9.2.5-alpha.2 - chromium-pickle-js: 0.2.0 - debug: 4.3.5 - dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9) - ejs: 3.1.10 - electron-builder-squirrel-windows: 25.0.0-alpha.9(dmg-builder@24.13.3) - electron-publish: 25.0.0-alpha.9 - form-data: 4.0.0 - fs-extra: 10.1.0 - hosted-git-info: 4.1.0 - is-ci: 3.0.1 - isbinaryfile: 5.0.2 - js-yaml: 4.1.0 - lazy-val: 1.0.5 - minimatch: 5.1.6 - read-config-file: 6.4.0 - sanitize-filename: 1.6.3 - semver: 7.6.2 - tar: 6.2.1 - temp-file: 3.4.0 - transitivePeerDependencies: - - bluebird - - supports-color + arg@5.0.2: {} - aproba@2.0.0: {} + argparse@2.0.1: {} - archiver-utils@2.1.0: + aria-hidden@1.2.4: dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.8 + tslib: 2.6.2 - archiver-utils@3.0.4: - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - - archiver@5.3.2: - dependencies: - archiver-utils: 2.1.0 - async: 3.2.5 - buffer-crc32: 0.2.13 - readable-stream: 3.6.2 - readdir-glob: 1.1.3 - tar-stream: 2.2.0 - zip-stream: 4.1.1 - - are-we-there-yet@3.0.1: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@5.0.2: {} - - argparse@2.0.1: {} - - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.2 - - array-timsort@1.0.3: {} + array-timsort@1.0.3: {} array-union@2.1.0: {} @@ -8146,12 +7617,6 @@ snapshots: binary-extensions@2.3.0: {} - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bluebird-lst@1.0.9: dependencies: bluebird: 3.7.2 @@ -8200,49 +7665,29 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true - builder-util-runtime@9.2.4: - dependencies: - debug: 4.3.4 - sax: 1.4.1 - transitivePeerDependencies: - - supports-color - - builder-util-runtime@9.2.5-alpha.2: + builder-util-runtime@9.2.3: dependencies: debug: 4.3.5 sax: 1.4.1 transitivePeerDependencies: - supports-color - builder-util@24.13.1: + builder-util-runtime@9.2.4: dependencies: - 7zip-bin: 5.2.0 - '@types/debug': 4.1.12 - app-builder-bin: 4.0.0 - bluebird-lst: 1.0.9 - builder-util-runtime: 9.2.4 - chalk: 4.1.2 - cross-spawn: 7.0.3 debug: 4.3.4 - fs-extra: 10.1.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-ci: 3.0.1 - js-yaml: 4.1.0 - source-map-support: 0.5.21 - stat-mode: 1.0.0 - temp-file: 3.4.0 + sax: 1.4.1 transitivePeerDependencies: - supports-color - builder-util@25.0.0-alpha.9: + builder-util@24.8.1: dependencies: 7zip-bin: 5.2.0 '@types/debug': 4.1.12 - app-builder-bin: 5.0.0-alpha.3 + app-builder-bin: 4.0.0 bluebird-lst: 1.0.9 - builder-util-runtime: 9.2.5-alpha.2 + builder-util-runtime: 9.2.3 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.5 @@ -8261,29 +7706,6 @@ snapshots: cac@6.7.14: {} - cacache@16.1.3: - dependencies: - '@npmcli/fs': 2.1.2 - '@npmcli/move-file': 2.0.1 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 8.1.0 - infer-owner: 1.0.4 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 9.0.1 - tar: 6.2.1 - unique-filename: 2.0.1 - transitivePeerDependencies: - - bluebird - cacheable-lookup@5.0.4: {} cacheable-request@7.0.4: @@ -8388,23 +7810,15 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - clean-stack@2.2.0: {} - clear-module@4.1.2: dependencies: parent-module: 2.0.0 resolve-from: 5.0.0 - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 - cli-spinners@2.9.2: {} - cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 @@ -8438,8 +7852,6 @@ snapshots: dependencies: mimic-response: 1.0.1 - clone@1.0.4: {} - clsx@2.0.0: {} clsx@2.1.1: {} @@ -8468,8 +7880,6 @@ snapshots: color-name@1.1.4: {} - color-support@1.1.3: {} - colorette@2.0.20: {} combined-stream@1.0.8: @@ -8498,29 +7908,15 @@ snapshots: compare-version@0.1.2: {} - compress-commons@4.1.2: - dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.3 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - concat-map@0.0.1: {} confbox@0.1.7: {} config-file-ts@0.2.6: - dependencies: - glob: 10.4.1 - typescript: 5.5.2 - - config-file-ts@0.2.8-rc1: dependencies: glob: 10.4.2 typescript: 5.5.2 - console-control-strings@1.1.0: {} - convert-source-map@2.0.0: {} cookie@0.6.0: {} @@ -8534,13 +7930,6 @@ snapshots: core-util-is@1.0.3: {} - crc-32@1.2.2: {} - - crc32-stream@4.0.3: - dependencies: - crc-32: 1.2.2 - readable-stream: 3.6.2 - crc@3.8.0: dependencies: buffer: 5.7.1 @@ -8672,10 +8061,6 @@ snapshots: deepmerge-ts@7.0.3: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - defer-to-connect@2.0.1: {} define-data-property@1.1.4: @@ -8696,14 +8081,10 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} - dequal@2.0.3: {} destr@2.0.3: {} - detect-libc@2.0.3: {} - detect-node-es@1.1.0: {} detect-node@2.1.0: @@ -8724,11 +8105,6 @@ snapshots: buffer-equal: 1.0.1 minimatch: 3.1.2 - dir-compare@4.2.0: - dependencies: - minimatch: 3.1.2 - p-limit: 3.1.0 - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -8737,18 +8113,17 @@ snapshots: dlv@1.1.3: {} - dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9): + dmg-builder@24.9.1: dependencies: - app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)) - builder-util: 24.13.1 - builder-util-runtime: 9.2.4 + app-builder-lib: 24.9.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 fs-extra: 10.1.0 iconv-lite: 0.6.3 js-yaml: 4.1.0 optionalDependencies: dmg-license: 1.0.11 transitivePeerDependencies: - - electron-builder-squirrel-windows - supports-color dmg-license@1.0.11: @@ -8789,10 +8164,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv-expand@11.0.6: - dependencies: - dotenv: 16.4.5 - dotenv-expand@5.1.0: {} dotenv@16.4.5: {} @@ -8805,24 +8176,13 @@ snapshots: dependencies: jake: 10.9.1 - electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3): + electron-builder@24.9.1: dependencies: - app-builder-lib: 25.0.0-alpha.9(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)) - archiver: 5.3.2 - builder-util: 25.0.0-alpha.9 - fs-extra: 10.1.0 - transitivePeerDependencies: - - bluebird - - dmg-builder - - supports-color - - electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)): - dependencies: - app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9))(electron-builder-squirrel-windows@25.0.0-alpha.9(dmg-builder@24.13.3)) - builder-util: 24.13.1 - builder-util-runtime: 9.2.4 + app-builder-lib: 24.9.1 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chalk: 4.1.2 - dmg-builder: 24.13.3(electron-builder-squirrel-windows@25.0.0-alpha.9) + dmg-builder: 24.9.1 fs-extra: 10.1.0 is-ci: 3.0.1 lazy-val: 1.0.5 @@ -8830,7 +8190,6 @@ snapshots: simple-update-notifier: 2.0.0 yargs: 17.7.2 transitivePeerDependencies: - - electron-builder-squirrel-windows - supports-color electron-devtools-installer@3.2.0: @@ -8840,23 +8199,11 @@ snapshots: tslib: 2.6.2 unzip-crx-3: 0.2.0 - electron-publish@24.13.1: + electron-publish@24.8.1: dependencies: '@types/fs-extra': 9.0.13 - builder-util: 24.13.1 - builder-util-runtime: 9.2.4 - chalk: 4.1.2 - fs-extra: 10.1.0 - lazy-val: 1.0.5 - mime: 2.6.0 - transitivePeerDependencies: - - supports-color - - electron-publish@25.0.0-alpha.9: - dependencies: - '@types/fs-extra': 9.0.13 - builder-util: 25.0.0-alpha.9 - builder-util-runtime: 9.2.5-alpha.2 + builder-util: 24.8.1 + builder-util-runtime: 9.2.3 chalk: 4.1.2 fs-extra: 10.1.0 lazy-val: 1.0.5 @@ -8907,11 +8254,6 @@ snapshots: emoji-regex@9.2.2: {} - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -9323,8 +8665,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - exponential-backoff@3.1.1: {} - extend@3.0.2: {} extract-zip@2.0.1: @@ -9405,11 +8745,6 @@ snapshots: font-list@1.5.1: {} - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 @@ -9441,20 +8776,12 @@ snapshots: from-exponential@1.1.1: {} - fs-constants@1.0.0: {} - fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 @@ -9481,17 +8808,6 @@ snapshots: fuse.js@7.0.0: {} - gauge@4.0.4: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - gensequence@7.0.0: {} gensync@1.0.0-beta.2: {} @@ -9533,14 +8849,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.1: - dependencies: - foreground-child: 3.1.1 - jackspeak: 3.1.2 - minimatch: 9.0.4 - minipass: 7.1.2 - path-scurry: 1.11.1 - glob@10.4.2: dependencies: foreground-child: 3.2.1 @@ -9559,14 +8867,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - global-agent@3.0.0: dependencies: boolean: 3.2.0 @@ -9642,8 +8942,6 @@ snapshots: has-symbols@1.0.3: optional: true - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -9835,7 +9133,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -9847,7 +9145,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.5 transitivePeerDependencies: - supports-color @@ -9855,10 +9153,6 @@ snapshots: human-signals@5.0.0: {} - humanize-ms@1.2.1: - dependencies: - ms: 2.1.3 - iconv-corefoundation@1.1.7: dependencies: cli-truncate: 2.1.0 @@ -9871,7 +9165,8 @@ snapshots: idb-keyval@6.2.1: {} - ieee754@1.2.1: {} + ieee754@1.2.1: + optional: true ignore@5.3.1: {} @@ -9892,8 +9187,6 @@ snapshots: index-to-position@0.1.2: {} - infer-owner@1.0.4: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -9909,11 +9202,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -9957,10 +9245,6 @@ snapshots: is-hexadecimal@2.0.1: {} - is-interactive@1.0.0: {} - - is-lambda@1.0.1: {} - is-number@7.0.0: {} is-path-inside@3.0.3: {} @@ -9971,8 +9255,6 @@ snapshots: is-stream@3.0.0: {} - is-unicode-supported@0.1.0: {} - isarray@1.0.0: {} isbinaryfile@4.0.10: {} @@ -9981,12 +9263,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@3.1.2: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@3.4.0: dependencies: '@isaacs/cliui': 8.0.2 @@ -10027,8 +9303,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - jsdoc-type-pratt-parser@4.0.0: {} jsesc@0.5.0: {} @@ -10082,10 +9356,6 @@ snapshots: lazy-val@1.0.5: {} - lazystream@1.0.1: - dependencies: - readable-stream: 2.3.8 - lethargy@1.0.9: {} levn@0.4.1: @@ -10154,29 +9424,16 @@ snapshots: lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} - - lodash.difference@4.5.0: {} - lodash.escaperegexp@4.1.2: {} - lodash.flatten@4.4.0: {} - lodash.isequal@4.5.0: {} lodash.isplainobject@4.0.6: {} lodash.merge@4.6.2: {} - lodash.union@4.6.0: {} - lodash@4.17.21: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - log-update@6.0.0: dependencies: ansi-escapes: 6.2.1 @@ -10211,34 +9468,10 @@ snapshots: dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} - magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - make-fetch-happen@10.2.1: - dependencies: - agentkeepalive: 4.5.0 - cacache: 16.1.3 - http-cache-semantics: 4.1.1 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 7.18.3 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 2.1.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 7.0.0 - ssri: 9.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - markdown-it-container@4.0.0: {} markdown-it@14.1.0: @@ -10524,36 +9757,8 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - minimist@1.2.8: {} - minipass-collect@1.0.2: - dependencies: - minipass: 3.3.6 - - minipass-fetch@2.1.2: - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@1.0.3: - dependencies: - minipass: 3.3.6 - minipass@3.3.6: dependencies: yallist: 4.0.0 @@ -10605,44 +9810,13 @@ snapshots: natural-compare@1.4.0: {} - negotiator@0.6.3: {} - - node-abi@3.65.0: - dependencies: - semver: 7.6.2 - node-addon-api@1.7.2: optional: true - node-api-version@0.2.0: - dependencies: - semver: 7.6.2 - node-fetch-native@1.6.4: {} - node-gyp@9.4.1: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - make-fetch-happen: 10.2.1 - nopt: 6.0.0 - npmlog: 6.0.2 - rimraf: 3.0.2 - semver: 7.6.2 - tar: 6.2.1 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - - supports-color - node-releases@2.0.14: {} - nopt@6.0.0: - dependencies: - abbrev: 1.1.1 - normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -10671,13 +9845,6 @@ snapshots: dependencies: path-key: 4.0.0 - npmlog@6.0.2: - dependencies: - are-we-there-yet: 3.0.1 - console-control-strings: 1.1.0 - gauge: 4.0.4 - set-blocking: 2.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -10718,18 +9885,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - p-cancelable@2.1.1: {} p-limit@2.3.0: @@ -10760,10 +9915,6 @@ snapshots: dependencies: p-limit: 4.0.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-try@2.2.0: {} package-json-from-dist@1.0.0: {} @@ -10929,8 +10080,6 @@ snapshots: progress@2.0.3: {} - promise-inflight@1.0.1: {} - promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -11059,12 +10208,6 @@ snapshots: dependencies: loose-envify: 1.4.0 - read-binary-file-arch@1.0.6: - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -11078,15 +10221,6 @@ snapshots: json5: 2.2.3 lazy-val: 1.0.5 - read-config-file@6.4.0: - dependencies: - config-file-ts: 0.2.8-rc1 - dotenv: 16.4.5 - dotenv-expand: 11.0.6 - js-yaml: 4.1.0 - json5: 2.2.3 - lazy-val: 1.0.5 - read-package-up@11.0.0: dependencies: find-up-simple: 1.0.0 @@ -11124,16 +10258,6 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdir-glob@1.1.3: - dependencies: - minimatch: 5.1.6 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -11205,11 +10329,6 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -11263,8 +10382,6 @@ snapshots: safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} - safer-buffer@2.1.2: {} sanitize-filename@1.6.3: @@ -11299,8 +10416,6 @@ snapshots: server-only@0.0.1: {} - set-blocking@2.0.0: {} - setimmediate@1.0.5: {} shallowequal@1.1.0: {} @@ -11348,20 +10463,8 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - smart-buffer@4.2.0: {} - - socks-proxy-agent@7.0.0: - dependencies: - agent-base: 6.0.2 - debug: 4.3.5 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 + smart-buffer@4.2.0: + optional: true sonner@1.5.0(patch_hash=6s3tquyt5wnkqaogymn3mkivuq)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -11393,11 +10496,8 @@ snapshots: spdx-license-ids@3.0.18: {} - sprintf-js@1.1.3: {} - - ssri@9.0.1: - dependencies: - minipass: 3.3.6 + sprintf-js@1.1.3: + optional: true stackback@0.0.2: {} @@ -11433,10 +10533,6 @@ snapshots: dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -11550,14 +10646,6 @@ snapshots: transitivePeerDependencies: - ts-node - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - tar@6.2.1: dependencies: chownr: 2.0.0 @@ -11679,14 +10767,6 @@ snapshots: trough: 2.2.0 vfile: 6.0.1 - unique-filename@2.0.1: - dependencies: - unique-slug: 3.0.0 - - unique-slug@3.0.0: - dependencies: - imurmurhash: 0.1.4 - unist-util-find-after@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -11873,10 +10953,6 @@ snapshots: vscode-uri@3.0.8: {} - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-namespaces@2.0.1: {} which@2.0.2: @@ -11888,10 +10964,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -11949,12 +11021,6 @@ snapshots: yocto-queue@1.0.0: {} - zip-stream@4.1.1: - dependencies: - archiver-utils: 3.0.4 - compress-commons: 4.1.2 - readable-stream: 3.6.2 - zod-validation-error@3.3.0(zod@3.23.8): dependencies: zod: 3.23.8 diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 931b0dbd6d..6203988af1 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -1,11 +1,9 @@ import { queryClient } from "@renderer/lib/query-client" -import { registerGlobalContext } from "@shared/bridge" -import { useEffect } from "react" +import { useEffect, useLayoutEffect } from "react" import { Outlet } from "react-router-dom" -import { toast } from "sonner" import { useAppIsReady } from "./atoms/app" -import { useUISettingKey } from "./atoms/ui" +import { useUISettingKey } from "./atoms/settings/ui" import { useDark } from "./hooks/common/useDark" import { RootProviders } from "./providers/root-providers" import { handlers } from "./tipc" @@ -20,13 +18,24 @@ function App() { }) }) - registerGlobalContext({ - showSetting: window.router.showSettings, - toast, - }) return cleanup }, []) + useLayoutEffect(() => { + // Electron app register in app scope, but web app should register in window scope + if (window.electron) return + const handleOpenSettings = (e) => { + if (e.key === "," && (e.metaKey || e.ctrlKey)) { + window.router.showSettings() + e.preventDefault() + } + } + document.addEventListener("keydown", handleOpenSettings) + + return () => { + document.removeEventListener("keydown", handleOpenSettings) + } + }, []) return ( <> {window.electron && ( @@ -35,7 +44,9 @@ function App() { aria-hidden /> )} - + + + ) } diff --git a/src/renderer/src/atoms/settings/general.ts b/src/renderer/src/atoms/settings/general.ts new file mode 100644 index 0000000000..ca44418af9 --- /dev/null +++ b/src/renderer/src/atoms/settings/general.ts @@ -0,0 +1,28 @@ +import { jotaiStore } from "@renderer/lib/jotai" + +import { createSettingAtom } from "./helper" + +const createDefaultSettings = () => ({ + dataPersist: true, + + // mark unread + scrollMarkUnread: true, + +}) +export const { + useSettingKey: useGeneralSettingKey, + useSettingSelector: useGeneralSettingSelector, + setSetting: setGeneralSetting, + clearSettings: clearGeneralSettings, + initializeDefaultSettings: initializeDefaultGeneralSettings, + getSettings: getGeneralSettings, + useSettingValue: useGeneralSettingValue, + + settingAtom: __generalSettingAtom, +} = createSettingAtom("general", createDefaultSettings) + +export const subscribeShouldUseIndexedDB = ( + callback: (value: boolean) => void, +) => + jotaiStore.sub(__generalSettingAtom, () => + callback(getGeneralSettings().dataPersist)) diff --git a/src/renderer/src/atoms/settings/helper.ts b/src/renderer/src/atoms/settings/helper.ts new file mode 100644 index 0000000000..2a56293621 --- /dev/null +++ b/src/renderer/src/atoms/settings/helper.ts @@ -0,0 +1,76 @@ +import { useRefValue } from "@renderer/hooks/common" +import { createAtomHooks } from "@renderer/lib/jotai" +import { getStorageNS } from "@renderer/lib/ns" +import { useAtomValue } from "jotai" +import { atomWithStorage, selectAtom } from "jotai/utils" +import { useMemo } from "react" + +export const createSettingAtom = >( + settingKey: string, + createDefaultSettings: () => T, +) => { + const atom = atomWithStorage( + getStorageNS(settingKey), + createDefaultSettings(), + undefined, + { + getOnInit: true, + }, + ) + const [, , useSettingValue, , getSettings, setSettings] = + createAtomHooks(atom) + + const initializeDefaultSettings = () => { + const currentSettings = getSettings() + const defaultSettings = createDefaultSettings() + if (typeof currentSettings !== "object") setSettings(defaultSettings) + const newSettings = { ...defaultSettings, ...currentSettings } + setSettings(newSettings) + } + + const useSettingKey = >( + key: T, + ) => useAtomValue(useMemo(() => selectAtom(atom, (s) => s[key]), [key])) + + const useSettingSelector = < + T extends keyof ReturnType, + S extends ReturnType, + R = S[T], + >( + selector: (s: S) => R, + ): R => { + const stableSelector = useRefValue(selector) + + return useAtomValue( + // @ts-expect-error + useMemo(() => selectAtom(atom, stableSelector.current), [stableSelector]), + ) + } + + const setSetting = >( + key: K, + value: ReturnType[K], + ) => { + setSettings({ + ...getSettings(), + [key]: value, + }) + } + + const clearSettings = () => { + setSettings(createDefaultSettings()) + } + + return { + useSettingKey, + useSettingSelector, + setSetting, + clearSettings, + initializeDefaultSettings, + + useSettingValue, + getSettings, + + settingAtom: atom, + } +} diff --git a/src/renderer/src/atoms/settings/index.ts b/src/renderer/src/atoms/settings/index.ts new file mode 100644 index 0000000000..38a1d56870 --- /dev/null +++ b/src/renderer/src/atoms/settings/index.ts @@ -0,0 +1,7 @@ +import { initializeDefaultGeneralSettings } from "./general" +import { initializeDefaultUISettings } from "./ui" + +export const initializeSettings = () => { + initializeDefaultUISettings() + initializeDefaultGeneralSettings() +} diff --git a/src/renderer/src/atoms/settings/ui.ts b/src/renderer/src/atoms/settings/ui.ts new file mode 100644 index 0000000000..b6a5c48e6b --- /dev/null +++ b/src/renderer/src/atoms/settings/ui.ts @@ -0,0 +1,32 @@ +import { createSettingAtom } from "./helper" + +const createDefaultSettings = () => ({ + // Sidebar + entryColWidth: 340, + opaqueSidebar: false, + sidebarShowUnreadCount: true, + + // Global UI + uiTextSize: 16, + // System + showDockBadge: true, + // Misc + modalOverlay: true, + modalDraggable: true, + modalOpaque: true, + reduceMotion: false, + + // Content + readerFontFamily: "SN Pro", + readerRenderInlineStyle: false, + codeHighlightTheme: "github-dark", +}) +export const { + useSettingKey: useUISettingKey, + useSettingSelector: useUISettingSelector, + setSetting: setUISetting, + clearSettings: clearUISettings, + initializeDefaultSettings: initializeDefaultUISettings, + getSettings: getUISettings, + useSettingValue: useUISettingValue, +} = createSettingAtom("ui", createDefaultSettings) diff --git a/src/renderer/src/atoms/ui.ts b/src/renderer/src/atoms/ui.ts deleted file mode 100644 index 8712d7cb01..0000000000 --- a/src/renderer/src/atoms/ui.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { useRefValue } from "@renderer/hooks/common" -import { createAtomHooks } from "@renderer/lib/jotai" -import { getStorageNS } from "@renderer/lib/ns" -import { useAtomValue } from "jotai" -import { atomWithStorage, selectAtom } from "jotai/utils" -import { useMemo } from "react" - -const createDefaultSettings = () => ({ - // Sidebar - entryColWidth: 340, - opaqueSidebar: false, - sidebarShowUnreadCount: true, - - // Global UI - uiTextSize: 16, - // System - showDockBadge: true, - // Misc - modalOverlay: true, - modalDraggable: true, - modalOpaque: true, - reduceMotion: false, - - // Content - readerFontFamily: "SN Pro", - readerRenderInlineStyle: false, - codeHighlightTheme: "github-dark", -}) -const atom = atomWithStorage( - getStorageNS("ui"), - createDefaultSettings(), - undefined, - { - getOnInit: true, - }, -) -const [, , useUISettingValue, , getUISettings, setUISettings] = - createAtomHooks(atom) - -export const initializeDefaultUISettings = () => { - const currentSettings = getUISettings() - const defaultSettings = createDefaultSettings() - if (typeof currentSettings !== "object") setUISettings(defaultSettings) - const newSettings = { ...defaultSettings, ...currentSettings } - setUISettings(newSettings) -} - -export { getUISettings, useUISettingValue } -export const useUISettingKey = < - T extends keyof ReturnType, ->( - key: T, - ) => useAtomValue(useMemo(() => selectAtom(atom, (s) => s[key]), [key])) - -export const useUISettingSelector = < - T extends keyof ReturnType, - S extends ReturnType, - R = S[T], ->( - selector: (s: S) => R, - ): R => { - const stableSelector = useRefValue(selector) - - return useAtomValue( - // @ts-expect-error - useMemo(() => selectAtom(atom, stableSelector.current), [stableSelector]), - ) -} - -export const setUISetting = >( - key: K, - value: ReturnType[K], -) => { - setUISettings({ - ...getUISettings(), - [key]: value, - }) -} - -export const clearUISettings = () => { - setUISettings(createDefaultSettings()) -} diff --git a/src/renderer/src/components/ui/background/vibrancy.tsx b/src/renderer/src/components/ui/background/vibrancy.tsx index 9d9e62ae16..21e36e2c07 100644 --- a/src/renderer/src/components/ui/background/vibrancy.tsx +++ b/src/renderer/src/components/ui/background/vibrancy.tsx @@ -1,4 +1,4 @@ -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { useDark } from "@renderer/hooks/common" import { cn } from "@renderer/lib/utils" import { useMediaQuery } from "usehooks-ts" diff --git a/src/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx b/src/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx index 585183b63c..0ee74ef43b 100644 --- a/src/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx +++ b/src/renderer/src/components/ui/code-highlighter/shiki/Shiki.tsx @@ -1,5 +1,5 @@ /* eslint-disable @eslint-react/dom/no-dangerously-set-innerhtml */ -import { useUISettingSelector } from "@renderer/atoms/ui" +import { useUISettingSelector } from "@renderer/atoms/settings/ui" import { cn } from "@renderer/lib/utils" import type { FC } from "react" import { useLayoutEffect, useMemo, useRef, useState } from "react" diff --git a/src/renderer/src/components/ui/modal/stacked/hooks.tsx b/src/renderer/src/components/ui/modal/stacked/hooks.tsx index b34aeae102..dd3138bbc3 100644 --- a/src/renderer/src/components/ui/modal/stacked/hooks.tsx +++ b/src/renderer/src/components/ui/modal/stacked/hooks.tsx @@ -1,4 +1,4 @@ -import { getUISettings } from "@renderer/atoms/ui" +import { getUISettings } from "@renderer/atoms/settings/ui" import { jotaiStore } from "@renderer/lib/jotai" import { useCallback, useContext, useEffect, useId, useRef } from "react" import { useLocation } from "react-router-dom" diff --git a/src/renderer/src/components/ui/modal/stacked/modal.tsx b/src/renderer/src/components/ui/modal/stacked/modal.tsx index 075628963e..022d1ef725 100644 --- a/src/renderer/src/components/ui/modal/stacked/modal.tsx +++ b/src/renderer/src/components/ui/modal/stacked/modal.tsx @@ -1,5 +1,5 @@ import * as Dialog from "@radix-ui/react-dialog" -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { m } from "@renderer/components/common/Motion" import { stopPropagation } from "@renderer/lib/dom" import { cn } from "@renderer/lib/utils" diff --git a/src/renderer/src/components/ui/modal/stacked/provider.tsx b/src/renderer/src/components/ui/modal/stacked/provider.tsx index 3933d2b4f4..05e30feb1a 100644 --- a/src/renderer/src/components/ui/modal/stacked/provider.tsx +++ b/src/renderer/src/components/ui/modal/stacked/provider.tsx @@ -1,4 +1,4 @@ -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { AnimatePresence } from "framer-motion" import { useAtomValue } from "jotai" import type { FC, PropsWithChildren } from "react" diff --git a/src/renderer/src/components/user-button.tsx b/src/renderer/src/components/user-button.tsx index 042250804c..be87d3d3c9 100644 --- a/src/renderer/src/components/user-button.tsx +++ b/src/renderer/src/components/user-button.tsx @@ -44,6 +44,7 @@ export const LoginButton: FC = (props) => { modalStack.present({ CustomModalComponent: NoopChildren, title: "Login", + id: "login", content: () => ( void) => jotaiStore.sub(__shouldUseIndexedDBAtom, () => callback(getShouldUseIndexedDB())) diff --git a/src/renderer/src/database/index.ts b/src/renderer/src/database/index.ts index 0b8cd3e3d2..7a0bb6e8fb 100644 --- a/src/renderer/src/database/index.ts +++ b/src/renderer/src/database/index.ts @@ -1,4 +1,3 @@ export * from "./db" -export * from "./hooks" export * from "./models" export * from "./schemas" diff --git a/src/renderer/src/hooks/biz/useReduceMotion.ts b/src/renderer/src/hooks/biz/useReduceMotion.ts index 23871a5e3a..193a26bff6 100644 --- a/src/renderer/src/hooks/biz/useReduceMotion.ts +++ b/src/renderer/src/hooks/biz/useReduceMotion.ts @@ -1,4 +1,4 @@ -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { useReducedMotion } from "framer-motion" export const useReduceMotion = () => { diff --git a/src/renderer/src/init.ts b/src/renderer/src/init.ts index 0103ec9345..a9c02b028f 100644 --- a/src/renderer/src/init.ts +++ b/src/renderer/src/init.ts @@ -1,11 +1,14 @@ import { authConfigManager } from "@hono/auth-js/react" -import { - browserDB, - getShouldUseIndexedDB, - subscribeShouldUseIndexedDB, -} from "@renderer/database" +import { browserDB } from "@renderer/database" +import { registerGlobalContext } from "@shared/bridge" import { enableMapSet } from "immer" +import { toast } from "sonner" +import { initializeSettings } from "./atoms/settings" +import { + getGeneralSettings, + subscribeShouldUseIndexedDB, +} from "./atoms/settings/general" import { APP_NAME } from "./lib/constants" import { appLog } from "./lib/log" import { hydrateDatabaseToStore, setHydrated } from "./store/utils/hydrate" @@ -19,13 +22,25 @@ const cleanup = subscribeShouldUseIndexedDB((value) => { setHydrated(true) }) export const initializeApp = async () => { - const now = Date.now() - appLog(`${APP_NAME}: Next generation information browser`, `https://github.com/RSSNext/follow`) + appLog( + `${APP_NAME}: Next generation information browser`, + `https://github.com/RSSNext/follow`, + ) appLog(`Initialize ${APP_NAME}...`) + + const now = Date.now() + + registerGlobalContext({ + showSetting: window.router.showSettings, + toast, + }) + + initializeSettings() + enableMapSet() // Initialize the database - if (getShouldUseIndexedDB()) { + if (getGeneralSettings().dataPersist) { await hydrateDatabaseToStore() } diff --git a/src/renderer/src/lib/jotai.ts b/src/renderer/src/lib/jotai.ts index db3c85142e..8d7d3b7c9b 100644 --- a/src/renderer/src/lib/jotai.ts +++ b/src/renderer/src/lib/jotai.ts @@ -11,6 +11,7 @@ export const createAtomAccessor = (atom: PrimitiveAtom) => (value: T) => jotaiStore.set(atom, value), ] as const +const options = { store: jotaiStore } /** * @param atom - jotai * @returns - [atom, useAtom, useAtomValue, useSetAtom, jotaiStore.get, jotaiStore.set] @@ -18,9 +19,9 @@ export const createAtomAccessor = (atom: PrimitiveAtom) => export const createAtomHooks = (atom: PrimitiveAtom) => [ atom, - () => useAtom(atom), - () => useAtomValue(atom), - () => useSetAtom(atom), + () => useAtom(atom, options), + () => useAtomValue(atom, options), + () => useSetAtom(atom, options), ...createAtomAccessor(atom), ] as const diff --git a/src/renderer/src/lib/utils.ts b/src/renderer/src/lib/utils.ts index aa8e6df7eb..c76a685a45 100644 --- a/src/renderer/src/lib/utils.ts +++ b/src/renderer/src/lib/utils.ts @@ -111,3 +111,5 @@ export function formatXml(xml: string, indent = 4) { return formatted.trim() } + +export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) diff --git a/src/renderer/src/modules/entry-column/index.tsx b/src/renderer/src/modules/entry-column/index.tsx index 5e64c89a46..58bd95d578 100644 --- a/src/renderer/src/modules/entry-column/index.tsx +++ b/src/renderer/src/modules/entry-column/index.tsx @@ -1,4 +1,5 @@ import { useMainContainerElement } from "@renderer/atoms/dom" +import { useGeneralSettingKey } from "@renderer/atoms/settings/general" import { useUser } from "@renderer/atoms/user" import { m } from "@renderer/components/common/Motion" import { EmptyIcon } from "@renderer/components/icons/empty" @@ -81,7 +82,7 @@ export function EntryColumn() { markReadMutation.mutate(activeEntry) }, [activeEntry?.entries?.id, activeEntry?.read]) - const handleRangeChange = useEventCallback( + const handleMarkreadInRange = useEventCallback( debounce( async ({ startIndex }: ListRange) => { const idSlice = entriesIds?.slice(0, startIndex) @@ -113,7 +114,7 @@ export function EntryColumn() { { leading: false }, ), ) - + const scrollMarkUnread = useGeneralSettingKey("scrollMarkUnread") const virtuosoOptions = { components: { List: ListContent, @@ -127,7 +128,7 @@ export function EntryColumn() { ) }, [isFetchingNextPage]), }, - rangeChanged: handleRangeChange, + rangeChanged: scrollMarkUnread ? handleMarkreadInRange : undefined, totalCount: entries.totalCount, endReached: () => entries.hasNextPage && entries.fetchNextPage(), data: entriesIds, diff --git a/src/renderer/src/modules/entry-content/index.tsx b/src/renderer/src/modules/entry-content/index.tsx index 2cfe1faa37..f22b32fc6a 100644 --- a/src/renderer/src/modules/entry-content/index.tsx +++ b/src/renderer/src/modules/entry-content/index.tsx @@ -1,4 +1,4 @@ -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { m } from "@renderer/components/common/Motion" import { Logo } from "@renderer/components/icons/logo" import { AutoResizeHeight } from "@renderer/components/ui/auto-resize-height" diff --git a/src/renderer/src/modules/feed-column/list.tsx b/src/renderer/src/modules/feed-column/list.tsx index a79855cb54..157316f5b7 100644 --- a/src/renderer/src/modules/feed-column/list.tsx +++ b/src/renderer/src/modules/feed-column/list.tsx @@ -1,4 +1,4 @@ -import { useUISettingKey } from "@renderer/atoms/ui" +import { useUISettingKey } from "@renderer/atoms/settings/ui" import { useNavigateEntry } from "@renderer/hooks/biz/useNavigateEntry" import { useRouteFeedId } from "@renderer/hooks/biz/useRouteParams" import { useAuthQuery } from "@renderer/hooks/common" diff --git a/src/renderer/src/modules/settings/modal/layout.tsx b/src/renderer/src/modules/settings/modal/layout.tsx index 689ef8f064..5ce56131bb 100644 --- a/src/renderer/src/modules/settings/modal/layout.tsx +++ b/src/renderer/src/modules/settings/modal/layout.tsx @@ -1,4 +1,4 @@ -import { useUISettingSelector } from "@renderer/atoms/ui" +import { useUISettingSelector } from "@renderer/atoms/settings/ui" import { m } from "@renderer/components/common/Motion" import { Logo } from "@renderer/components/icons/logo" import { APP_NAME } from "@renderer/lib/constants" diff --git a/src/renderer/src/modules/settings/tabs/apperance.tsx b/src/renderer/src/modules/settings/tabs/apperance.tsx index 40724ec4b2..5d44a8ecbb 100644 --- a/src/renderer/src/modules/settings/tabs/apperance.tsx +++ b/src/renderer/src/modules/settings/tabs/apperance.tsx @@ -3,7 +3,7 @@ import { useUISettingKey, useUISettingSelector, useUISettingValue, -} from "@renderer/atoms/ui" +} from "@renderer/atoms/settings/ui" import { Select, SelectContent, diff --git a/src/renderer/src/modules/settings/tabs/general.tsx b/src/renderer/src/modules/settings/tabs/general.tsx new file mode 100644 index 0000000000..657f79d383 --- /dev/null +++ b/src/renderer/src/modules/settings/tabs/general.tsx @@ -0,0 +1,63 @@ +import { setGeneralSetting, useGeneralSettingValue } from "@renderer/atoms/settings/general" +import { tipcClient } from "@renderer/lib/client" +import { useCallback, useEffect, useState } from "react" + +import { SettingDescription, SettingSwitch } from "../control" +import { SettingSectionTitle } from "../section" +import { SettingsTitle } from "../title" + +export const SettingGeneral = () => { + const [loginSetting, setLoginSetting] = useState(false) + useEffect(() => { + tipcClient?.getLoginItemSettings().then((settings) => { + setLoginSetting(settings.openAtLogin) + }) + }, []) + + const saveLoginSetting = useCallback((checked: boolean) => { + tipcClient?.setLoginItemSettings(checked) + setLoginSetting(checked) + }, []) + + const settings = useGeneralSettingValue() + + return ( + <> + +
+ {window.electron && ( + + )} + + + + setGeneralSetting("scrollMarkUnread", checked)} + label="Mark as read when scrolling" + /> + + Automatic marking of articles as read when the item is scrolled up out + of the viewport. + + + + + setGeneralSetting("dataPersist", checked)} + label="Persist data to offline usage" + /> + + Data will be stored locally on your device for offline usage and speed + up the data loading of the first screen. If you disable this, all + local data will be removed. + +
+ + ) +} diff --git a/src/renderer/src/pages/(main)/(layer)/feeds/[feedId]/layout.tsx b/src/renderer/src/pages/(main)/(layer)/feeds/[feedId]/layout.tsx index c672b7cc40..d4b7c1f46f 100644 --- a/src/renderer/src/pages/(main)/(layer)/feeds/[feedId]/layout.tsx +++ b/src/renderer/src/pages/(main)/(layer)/feeds/[feedId]/layout.tsx @@ -1,4 +1,4 @@ -import { getUISettings, setUISetting } from "@renderer/atoms/ui" +import { getUISettings, setUISetting } from "@renderer/atoms/settings/ui" import { useRouteParms } from "@renderer/hooks/biz/useRouteParams" import { views } from "@renderer/lib/constants" import { cn } from "@renderer/lib/utils" diff --git a/src/renderer/src/pages/(main)/layout.tsx b/src/renderer/src/pages/(main)/layout.tsx index ae2a5dbcc6..f8a674d277 100644 --- a/src/renderer/src/pages/(main)/layout.tsx +++ b/src/renderer/src/pages/(main)/layout.tsx @@ -28,6 +28,7 @@ export function Component() { {isAuthFail && !user && ( { - tipcClient?.getLoginItemSettings().then((settings) => { - setLoginSetting(settings.openAtLogin) - }) - }, []) - - const saveLoginSetting = useCallback((checked: boolean) => { - tipcClient?.setLoginItemSettings(checked) - setLoginSetting(checked) - }, []) - - const [shouldUseIndexedDB, setShouldUseIndexedDB] = useShouldUseIndexedDB() - return ( - <> - -
- {window.electron && ( - - )} - - - - Data will be stored locally on your device for offline usage and speed up the data loading of the first screen. If you disable this, all local data will be removed. - -
- - ) + return } diff --git a/src/renderer/src/providers/root-providers.tsx b/src/renderer/src/providers/root-providers.tsx index 1d8e684546..cb1bbc7546 100644 --- a/src/renderer/src/providers/root-providers.tsx +++ b/src/renderer/src/providers/root-providers.tsx @@ -11,7 +11,7 @@ import { HelmetProvider } from "react-helmet-async" import { StableRouterProvider } from "./biz-router-provider" import { ContextMenuProvider } from "./context-menu-provider" -import { UISettingInitialize } from "./ui-setting-Initialize" +import { SettingSync } from "./ui-setting-Initialize" import { UserProvider } from "./user-provider" const loadFeatures = () => @@ -32,7 +32,7 @@ export const RootProviders: FC = ({ children }) => ( - + {children} diff --git a/src/renderer/src/providers/ui-setting-Initialize.tsx b/src/renderer/src/providers/ui-setting-Initialize.tsx index 36bd3c98e0..36e6c5039b 100644 --- a/src/renderer/src/providers/ui-setting-Initialize.tsx +++ b/src/renderer/src/providers/ui-setting-Initialize.tsx @@ -1,24 +1,26 @@ -import { initializeDefaultUISettings, useUISettingValue } from "@renderer/atoms/ui" +import { useUISettingValue } from "@renderer/atoms/settings/ui" import { tipcClient } from "@renderer/lib/client" import { feedUnreadActions } from "@renderer/store/unread" import { useEffect, useInsertionEffect } from "react" -initializeDefaultUISettings() -export const UISettingInitialize = () => { - const state = useUISettingValue() +const useUISettingSync = () => { + const setting = useUISettingValue() useInsertionEffect(() => { const root = document.documentElement - root.style.fontSize = `${state.uiTextSize}px` - }, [state.uiTextSize]) + root.style.fontSize = `${setting.uiTextSize}px` + }, [setting.uiTextSize]) useEffect(() => { - if (state.showDockBadge) { + if (setting.showDockBadge) { return feedUnreadActions.subscribeUnreadCount((count) => tipcClient?.setMacOSBadge(count), true) } else { tipcClient?.setMacOSBadge(0) } return - }, [state.showDockBadge]) + }, [setting.showDockBadge]) +} +export const SettingSync = () => { + useUISettingSync() return null } diff --git a/src/renderer/src/store/utils/clear.ts b/src/renderer/src/store/utils/clear.ts index a0caea9125..75c190f352 100644 --- a/src/renderer/src/store/utils/clear.ts +++ b/src/renderer/src/store/utils/clear.ts @@ -1,4 +1,4 @@ -import { clearUISettings } from "@renderer/atoms/ui" +import { clearUISettings } from "@renderer/atoms/settings/ui" import { browserDB } from "@renderer/database" import { entryActions } from "../entry" diff --git a/src/renderer/src/store/utils/hydrate.ts b/src/renderer/src/store/utils/hydrate.ts index 98b20e3768..7261d74918 100644 --- a/src/renderer/src/store/utils/hydrate.ts +++ b/src/renderer/src/store/utils/hydrate.ts @@ -1,4 +1,5 @@ import { appLog } from "@renderer/lib/log" +import { sleep } from "@renderer/lib/utils" import type { CombinedEntryModel, FeedModel } from "@renderer/models" import { EntryRelatedKey, @@ -27,12 +28,26 @@ export const isHydrated = () => _isHydrated export const hydrateDatabaseToStore = async () => { appLog("Hydrate database data to store task start...") - const now = Date.now() - const [feeds] = await Promise.all([hydrateFeed(), hydrateSubscription(), hydrateFeedUnread()]) - await hydrateEntry(feeds) - _isHydrated = true - appLog("Hydrate data done,", `${Date.now() - now}ms`) + async function hydrate() { + const now = Date.now() + const [feeds] = await Promise.all([ + hydrateFeed(), + hydrateSubscription(), + hydrateFeedUnread(), + ]) + + await hydrateEntry(feeds) + _isHydrated = true + appLog("Hydrate data done,", `${Date.now() - now}ms`) + } + await Promise.race([hydrate(), sleep(1500).then(() => "timeout")]).then( + (result) => { + if (result === "timeout") { + appLog("Hydrate data timeout") + } + }, + ) } async function hydrateFeed() {