From 7a248529bb6407e1b59e06303f3c0a0853988e6a Mon Sep 17 00:00:00 2001 From: timongh <46739861+timongh@users.noreply.github.com> Date: Sun, 29 Jan 2023 00:49:17 +0800 Subject: [PATCH 001/116] Add ts config: `importsNotUsedAsValues` with corresponding eslint rule --- .eslintrc.js | 1 + dev-tools/dev-server/config.ts | 2 +- dev-tools/dev-server/core-watcher.ts | 5 ++-- dev-tools/dev-server/index.ts | 2 +- dev-tools/dev-server/registry-watcher.ts | 6 ++-- dev-tools/dev-server/server.ts | 10 ++++--- dev-tools/dev-server/watcher-common.ts | 2 +- dev-tools/dev-server/web-socket-server.ts | 5 ++-- .../lib/components/feeds/copy-link/index.ts | 2 +- .../components/feeds/disable-details/index.ts | 3 +- .../feeds/filter/FeedsFilterCard.vue | 16 +++++----- registry/lib/components/feeds/filter/index.ts | 8 ++--- .../lib/components/feeds/filter/plugin.ts | 8 +++-- .../components/feeds/fold-comments/index.ts | 6 ++-- .../live/badge-helper/BadgeHelper.vue | 4 ++- .../lib/components/live/badge-helper/index.ts | 1 + .../live/danmaku-sendbar/DanmakuSendbar.vue | 1 + .../components/live/danmaku-sendbar/index.ts | 3 +- .../live/download-records/DownloadRecords.vue | 2 +- .../lib/components/live/gift-box/index.ts | 3 +- .../style/always-show-duration/index.ts | 2 +- .../style/custom-navbar/CustomNavbar.vue | 3 +- .../style/custom-navbar/CustomNavbarItem.vue | 3 +- .../style/custom-navbar/built-in-items.ts | 22 +++++++------- .../style/custom-navbar/custom-navbar-item.ts | 9 ++++-- .../components/style/custom-navbar/entry.ts | 2 +- .../favorites/FavoritesFolderSelect.vue | 8 +++-- .../favorites/NavbarFavorites.vue | 13 ++++---- .../custom-navbar/favorites/favorites.ts | 3 +- .../style/custom-navbar/feeds/NavbarFeeds.vue | 3 +- .../style/custom-navbar/feeds/feeds.ts | 2 +- .../custom-navbar/feeds/tabs/BangumiFeeds.vue | 5 ++-- .../custom-navbar/feeds/tabs/ColumnFeeds.vue | 5 ++-- .../custom-navbar/feeds/tabs/LiveFeeds.vue | 7 +++-- .../custom-navbar/feeds/tabs/VideoFeeds.vue | 7 +++-- .../custom-navbar/feeds/tabs/next-page.ts | 14 ++++----- .../style/custom-navbar/feeds/tabs/tabs.ts | 2 +- .../flexible-blank/flexible-blank.ts | 2 +- .../custom-navbar/history/NavbarHistory.vue | 18 ++++++----- .../style/custom-navbar/history/history.ts | 2 +- .../style/custom-navbar/history/types.ts | 2 +- .../style/custom-navbar/home/NavbarHome.vue | 4 ++- .../style/custom-navbar/home/home.ts | 2 +- .../style/custom-navbar/iframe/iframe.ts | 2 +- .../components/style/custom-navbar/index.ts | 14 ++++----- .../style/custom-navbar/logo/NavbarLogo.vue | 2 +- .../style/custom-navbar/logo/logo.ts | 2 +- .../custom-navbar/messages/NavbarMessages.vue | 1 + .../style/custom-navbar/messages/messages.ts | 2 +- .../style/custom-navbar/ranking/ranking.ts | 2 +- .../style/custom-navbar/search/search.ts | 2 +- .../custom-navbar/settings/ExtraOptions.vue | 5 ++-- .../custom-navbar/settings/NavbarSettings.vue | 8 +++-- .../simple-links/simple-links.ts | 2 +- .../subscriptions/NavbarSubscriptions.vue | 5 ++-- .../subscriptions/SubscriptionsList.vue | 5 ++-- .../subscriptions/subscriptions.ts | 3 +- .../style/custom-navbar/upload/upload.ts | 2 +- .../custom-navbar/user-info/UserInfoPopup.vue | 7 +++-- .../custom-navbar/user-info/user-info.ts | 3 +- .../watchlater/NavbarWatchlater.vue | 11 +++---- .../custom-navbar/watchlater/watchlater.ts | 2 +- .../style/dark-mode/follow-system/index.ts | 1 + .../lib/components/style/dark-mode/index.ts | 1 + .../style/dark-mode/schedule/index.ts | 13 ++++---- .../style/home-redesign/fresh/VideoList.vue | 5 ++-- .../style/home-redesign/fresh/index.ts | 1 + .../fresh/layouts/areas/Areas.vue | 3 +- .../fresh/layouts/areas/areas.ts | 2 +- .../fresh/layouts/blackboard/Blackboard.vue | 3 +- .../fresh/layouts/blackboard/blackboard.ts | 2 +- .../fresh/layouts/categories/Categories.vue | 5 ++-- .../fresh/layouts/categories/categories.ts | 2 +- .../layouts/categories/content/Bangumi.vue | 5 ++-- .../categories/content/BangumiTimeline.vue | 13 ++++---- .../layouts/categories/content/Default.vue | 5 ++-- .../layouts/categories/content/RankList.vue | 5 ++-- .../categories/content/VideoSlides.vue | 5 ++-- .../fresh/layouts/categories/filter.ts | 1 + .../fresh/layouts/feeds/Feeds.vue | 5 ++-- .../fresh/layouts/feeds/feeds.ts | 2 +- .../fresh/layouts/fresh-layout-item.ts | 2 +- .../home-redesign/fresh/layouts/layouts.ts | 1 + .../fresh/layouts/trending/Trending.vue | 5 ++-- .../fresh/layouts/trending/trending.ts | 2 +- .../style/home-redesign/fresh/types.ts | 3 +- .../home-redesign/minimal/MinimalHome.vue | 3 +- .../style/home-redesign/minimal/index.ts | 3 +- .../style/home-redesign/minimal/options.ts | 3 +- .../home-redesign/minimal/tabs/Feeds.vue | 5 ++-- .../home-redesign/minimal/tabs/Trending.vue | 3 +- .../style/home-redesign/trending.ts | 4 +-- .../components/style/simplify/home/index.ts | 3 +- .../components/style/simplify/live/index.ts | 2 +- .../components/style/special-danmaku/index.ts | 11 +++---- .../touch/double-click-control/index.ts | 1 + .../lib/components/touch/mini-player/index.ts | 2 +- .../lib/components/touch/mini-player/video.ts | 1 + .../touch/player-gestures/GesturePreview.vue | 8 +++-- .../components/touch/player-gestures/entry.ts | 3 +- .../components/touch/player-gestures/index.ts | 1 + .../touch/player-gestures/swiper.ts | 1 + .../utils/black-list/BlackListSettings.vue | 2 +- .../components/utils/black-list/Settings.vue | 3 +- .../lib/components/utils/black-list/index.ts | 5 ++-- .../lib/components/utils/black-list/vm.ts | 1 + .../utils/check-in-center/Widget.vue | 4 ++- .../utils/check-in-center/check-in-item.ts | 2 +- .../utils/comments/copy-link/index.ts | 2 +- .../components/utils/dev-client/Action.vue | 5 ++-- .../components/utils/dev-client/Widget.vue | 1 + .../lib/components/utils/dev-client/client.ts | 15 ++++++---- .../lib/components/utils/dev-client/index.ts | 3 +- .../components/utils/dev-client/options.ts | 6 ++-- .../lib/components/utils/dev-client/plugin.ts | 10 +++++-- .../utils/download-audio/DownloadAudio.vue | 5 ++-- .../components/utils/image-exporter/feed.ts | 8 +++-- .../components/utils/image-exporter/index.ts | 8 ++--- .../utils/image-resolution/index.ts | 8 ++--- .../utils/image-resolution/resolution.ts | 3 +- .../components/utils/import-series/index.ts | 1 + .../components/utils/import-series/logic.ts | 4 +-- .../lib/components/utils/keymap/actions.ts | 5 ++-- .../lib/components/utils/keymap/bindings.ts | 3 +- registry/lib/components/utils/keymap/index.ts | 13 ++++---- .../utils/keymap/settings/ExtraOptions.vue | 1 + .../utils/keymap/settings/KeymapSettings.vue | 7 +++-- .../keymap/settings/KeymapSettingsRow.vue | 3 +- .../utils/remove-promotions/index.ts | 2 +- .../utils/url-params-clean/index.ts | 2 +- .../lib/components/utils/v1-migrate/index.ts | 3 +- .../components/utils/v1-migrate/migrate.ts | 7 +++-- .../components/utils/view-cover/ViewCover.vue | 4 +-- .../utils/watchlater-redirect/index.ts | 2 +- .../video/bvid-convert/BvidConvert.vue | 3 +- .../components/video/bvid-convert/index.ts | 7 ++--- .../video/danmaku/airborne/index.ts | 5 ++-- .../video/danmaku/converter/ass-danmaku.ts | 5 ++-- .../danmaku/converter/danmaku-converter.ts | 11 ++++--- .../video/danmaku/converter/danmaku-data.ts | 2 +- .../video/danmaku/converter/danmaku-stack.ts | 5 ++-- .../video/danmaku/converter/xml-danmaku.ts | 4 ++- .../danmaku/download/DownloadDanmaku.vue | 4 ++- .../video/danmaku/download/Plugin.vue | 3 +- .../video/danmaku/download/index.ts | 7 +++-- .../video/danmaku/download/utils.ts | 6 ++-- .../components/video/danmaku/expand/index.ts | 2 +- .../video/default-location/Advanced.vue | 2 +- .../video/default-location/Options.vue | 5 ++-- .../default-location/PageTypeSelector.vue | 1 + .../video/default-location/index.ts | 3 +- .../video/download/DownloadVideo.vue | 26 ++++++++-------- .../components/video/download/apis/dash.ts | 12 ++++---- .../lib/components/video/download/apis/flv.ts | 11 +++---- .../lib/components/video/download/error.ts | 3 +- .../video/download/inputs/EpisodesPicker.vue | 5 ++-- .../video/download/inputs/bangumi/batch.ts | 6 ++-- .../video/download/inputs/episode-item.ts | 2 +- .../download/inputs/video/SingleVideoInfo.vue | 2 +- .../video/download/inputs/video/batch.ts | 6 ++-- .../video/download/inputs/video/input.ts | 3 +- .../video/download/outputs/stream-saver.ts | 3 +- .../video/download/outputs/toast.ts | 3 +- .../lib/components/video/download/types.ts | 7 +++-- .../video/full-description/index.ts | 3 +- .../video/full-episode-title/index.ts | 2 +- .../outer-watchlater/OuterWatchlater.vue | 2 +- .../video/outer-watchlater/index.ts | 12 ++++---- .../video/player/common/mini-rxjs/create.ts | 3 +- .../common/mini-rxjs/operators/bufferSet.ts | 2 +- .../mini-rxjs/operators/combineLatest.ts | 3 +- .../mini-rxjs/operators/debounceTime.ts | 2 +- .../operators/distinctUntilChanged.ts | 2 +- .../common/mini-rxjs/operators/filter.ts | 2 +- .../player/common/mini-rxjs/operators/map.ts | 2 +- .../common/mini-rxjs/operators/observeOn.ts | 2 +- .../common/mini-rxjs/operators/pairwise.ts | 2 +- .../common/mini-rxjs/operators/startWith.ts | 2 +- .../player/common/mini-rxjs/operators/tap.ts | 3 +- .../common/mini-rxjs/operators/util/index.ts | 2 +- .../video/player/common/mini-rxjs/utils.ts | 2 +- .../common/mini-rxjs/utils/firstValueFrom.ts | 2 +- .../components/video/player/common/speed.ts | 19 ++++++------ .../video/player/common/speed/context.ts | 4 ++- .../video/player/control-background/index.ts | 9 ++---- .../video/player/default-mode/index.ts | 9 ++---- .../player/double-click-fullscreen/index.ts | 9 ++---- .../video/player/extend-speed/component.ts | 12 +++++--- .../video/player/extend-speed/index.ts | 4 ++- .../components/video/player/focus/index.ts | 3 +- .../video/player/remember-speed/component.ts | 7 +++-- .../video/player/remember-speed/index.ts | 4 ++- .../screenshot/VideoScreenshotContainer.vue | 5 ++-- .../video/player/screenshot/index.ts | 8 +++-- .../video/player/seek-by-frames/index.ts | 5 ++-- .../video/player/show-cover/index.ts | 3 +- .../video/player/show-upload-time/index.ts | 6 ++-- .../video/quick-favorite/QuickFavorite.vue | 6 ++-- .../components/video/quick-favorite/index.ts | 12 ++++---- .../subtitle/download/DownloadSubtitle.vue | 10 ++++--- .../video/subtitle/download/Plugin.vue | 3 +- .../video/subtitle/download/index.ts | 8 +++-- .../video/subtitle/download/utils.ts | 3 +- .../lib/deprecated/auto-continue/index.ts | 9 ++---- .../lib/deprecated/feeds-translate/index.ts | 2 +- registry/lib/deprecated/i18n/en-US/data.ts | 2 +- registry/lib/deprecated/i18n/en-US/index.ts | 2 +- registry/lib/deprecated/i18n/ja-JP/data.ts | 2 +- registry/lib/deprecated/i18n/ja-JP/index.ts | 2 +- .../deprecated/live-default-quality/index.ts | 9 ++---- .../record-danmaku/DanmakuRecorder.vue | 10 +++---- .../lib/deprecated/restore-floors/index.ts | 2 +- .../deprecated/video-default-quality/index.ts | 9 ++---- registry/lib/docs/components-doc.ts | 5 ++-- registry/lib/docs/index.ts | 1 + registry/lib/docs/packages-doc.ts | 3 +- registry/lib/docs/plugins-doc.ts | 5 ++-- registry/lib/docs/third-party.ts | 3 +- .../launch-bar/trending-search/index.ts | 2 +- .../settings-panel/recent-components/index.ts | 6 ++-- .../style/custom-navbar-channel/index.ts | 6 ++-- .../NavbarDarkMode.vue | 2 +- .../style/custom-navbar-dark-mode/index.ts | 5 ++-- .../plugins/utils/keymap-dark-mode/index.ts | 5 ++-- .../utils/keymap-empty-action.ts/index.ts | 5 ++-- .../utils/keymap-toggle-danmaku-list/index.ts | 5 ++-- .../utils/keymap-toggle-subtitle/index.ts | 5 ++-- registry/lib/plugins/v-loading/reimu/index.ts | 4 +-- .../video/download/aria2-output/RpcConfig.vue | 6 ++-- .../download/aria2-output/aria2-input.ts | 3 +- .../video/download/aria2-output/aria2-rpc.ts | 5 ++-- .../video/download/aria2-output/index.ts | 5 ++-- .../video/download/idm-output/index.ts | 5 ++-- .../video/download/manual-input/index.ts | 5 ++-- .../video/download/motrix-output/index.ts | 5 ++-- .../download/mpv-output-playlist/index.ts | 5 ++-- .../mpv-output-playlist/mpv-playlist.ts | 3 +- .../video/download/mpv-output/index.ts | 5 ++-- .../lib/plugins/video/player/speed/index.ts | 11 +++---- registry/webpack/build.ts | 1 + registry/webpack/config.ts | 5 ++-- registry/webpack/docs.ts | 1 + src/components/SwitchOptions.vue | 3 +- src/components/api.ts | 30 +++++++++---------- src/components/auto-update/ExtraOptions.vue | 1 + src/components/auto-update/checker.ts | 17 +++++------ src/components/auto-update/index.ts | 20 ++++++------- src/components/built-in-components.ts | 8 ++--- src/components/component.ts | 11 +++---- src/components/define.ts | 2 +- src/components/description.ts | 6 ++-- src/components/feeds/VideoCard.vue | 4 +-- src/components/feeds/api/index.ts | 16 +++++----- src/components/feeds/api/manager/adaptor.ts | 5 ++-- src/components/feeds/api/manager/base.ts | 6 ++-- src/components/feeds/api/manager/index.ts | 3 +- src/components/feeds/api/manager/v1.ts | 4 ++- src/components/feeds/api/manager/v2.ts | 8 +++-- src/components/feeds/api/types.ts | 2 +- src/components/feeds/notify.ts | 3 +- src/components/i18n/dom-translator.ts | 7 +++-- src/components/i18n/helpers.ts | 10 +++++-- src/components/i18n/index.ts | 5 ++-- .../machine-translator/MachineTranslator.vue | 4 ++- .../i18n/machine-translator/translators.ts | 7 +++-- src/components/i18n/types.ts | 4 +-- src/components/launch-bar/GlobalLaunchBar.vue | 1 + src/components/launch-bar/LaunchBar.vue | 15 +++++----- src/components/launch-bar/history-provider.ts | 2 +- src/components/launch-bar/index.ts | 3 +- .../launch-bar/launch-bar-action.ts | 2 +- src/components/launch-bar/plugin.ts | 5 ++-- src/components/launch-bar/search-provider.ts | 5 ++-- src/components/launch-bar/toggle.ts | 1 + src/components/live/live-socket.ts | 4 +-- src/components/notify-new-version/index.ts | 1 + .../settings-panel/ComponentDescription.vue | 1 + .../settings-panel/ComponentDetail.vue | 10 ++++--- .../settings-panel/ComponentOption.vue | 10 ++++--- .../settings-panel/ComponentSettings.vue | 12 ++++---- .../settings-panel/ComponentTags.vue | 9 ++++-- .../settings-panel/SettingsContainer.vue | 2 +- .../settings-panel/SettingsPanel.vue | 17 ++++++----- .../settings-panel/WidgetsPanel.vue | 5 ++-- .../component-actions/component-actions.ts | 9 +++--- .../settings-panel/external-actions.ts | 4 ++- src/components/settings-panel/index.en-US.ts | 2 +- src/components/settings-panel/index.ts | 17 ++++++----- src/components/settings-panel/mixins.ts | 3 +- .../settings-panel/search-bar-actions.ts | 3 +- .../settings-panel/sub-pages/AboutPage.vue | 4 ++- .../sub-pages/UserComponentsPage.vue | 6 ++-- .../sub-pages/UserPluginsPage.vue | 6 ++-- .../sub-pages/UserStylesPage.vue | 6 ++-- .../settings-panel/sub-pages/index.ts | 2 +- .../sub-pages/manage-panel/ManagePanel.vue | 9 +++--- .../online-registry/OnlineRegistry.vue | 8 +++-- .../online-registry/OnlineRegistryButton.vue | 1 + .../online-registry/RegistryItem.vue | 10 +++++-- .../sub-pages/online-registry/vm.ts | 1 + src/components/settings-panel/tag-filter.ts | 3 +- src/components/styled-component.ts | 3 +- src/components/switch-options-old.ts | 7 +++-- src/components/switch-options.ts | 9 +++--- src/components/types.ts | 17 ++++++----- src/components/user-component.ts | 4 ++- src/components/utils/comment-apis.ts | 4 +-- src/components/video/player-agent/bangumi.ts | 2 +- src/components/video/player-agent/base.ts | 9 +++--- src/components/video/player-agent/index.ts | 1 + src/components/video/player-agent/types.ts | 2 +- .../video/player-agent/video-player-mixed.ts | 2 +- .../video/player-agent/video-player-v2.ts | 3 +- src/components/video/player-light.ts | 1 + src/components/video/video-danmaku.ts | 1 + src/components/widget.ts | 5 ++-- src/core/common-types.ts | 4 +-- src/core/core-apis.ts | 16 +++++----- src/core/dialog/Dialog.vue | 2 +- src/core/dialog/index.ts | 2 +- src/core/download.ts | 3 +- .../load-feature-code-all-settled.ts | 3 +- .../external-input/load-feature-code-all.ts | 10 +++---- src/core/external-input/load-feature-code.ts | 6 ++-- .../load-features-from-codes.ts | 8 ++--- src/core/install-feature.ts | 8 +++-- src/core/meta.ts | 1 + src/core/observer.ts | 2 +- src/core/performance/component-trace.ts | 2 +- src/core/performance/plugin-trace.ts | 2 +- src/core/runtime-library.ts | 3 +- src/core/settings/helpers.ts | 14 ++++----- src/core/settings/index.ts | 8 ++--- src/core/settings/internal-state.ts | 3 +- src/core/settings/listener.ts | 2 +- src/core/settings/proxy.ts | 2 +- src/core/settings/types.ts | 6 ++-- src/core/style.ts | 3 +- src/core/theme-color/image-filter.ts | 2 +- src/core/theme-color/index.ts | 5 ++-- src/core/toast/ToastCard.vue | 3 +- src/core/toast/mini.ts | 6 ++-- src/core/utils/index.ts | 14 ++++----- src/core/utils/lazy-panel.ts | 2 +- src/core/utils/log.ts | 3 +- src/core/utils/title.ts | 2 +- src/core/utils/urls.ts | 2 +- src/core/version.ts | 3 +- src/global.d.ts | 8 +++-- src/plugins/ajax-hook/index.ts | 2 +- src/plugins/api.ts | 4 +-- src/plugins/id-search/index.ts | 8 +++-- src/plugins/plugin.ts | 5 ++-- src/ui/ColorPicker.vue | 2 ++ src/ui/ImagePicker.vue | 3 +- src/ui/ImageViewer.vue | 2 +- src/ui/RadioButton.vue | 5 ++-- src/ui/TabControl.vue | 2 +- src/ui/index.ts | 8 ++--- src/ui/tab-mapping.ts | 2 +- tsconfig.json | 3 +- webpack/cdn/github.ts | 2 +- webpack/cdn/jsdelivr.ts | 2 +- webpack/inject-metadata/core-info.ts | 7 +++-- webpack/inject-metadata/description.ts | 7 +++-- webpack/inject-metadata/i18n.ts | 7 +++-- webpack/inject-metadata/index.ts | 5 ++-- webpack/inject-metadata/types.ts | 2 +- webpack/loaders/style-loaders.ts | 4 +-- webpack/loaders/ts-loader.ts | 3 +- webpack/webpack.config.ts | 16 +++++----- webpack/webpack.dev.ts | 6 ++-- webpack/webpack.prod.ts | 6 ++-- 373 files changed, 1063 insertions(+), 808 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 15f3eb686..9e0f356d2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -30,6 +30,7 @@ module.exports = { 'import/no-default-export': 'error', 'import/no-named-default': 'off', + '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/member-delimiter-style': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', diff --git a/dev-tools/dev-server/config.ts b/dev-tools/dev-server/config.ts index 583054b19..2c3c3d8d5 100644 --- a/dev-tools/dev-server/config.ts +++ b/dev-tools/dev-server/config.ts @@ -1,4 +1,4 @@ -import { readFileSync, existsSync } from 'fs' +import { existsSync, readFileSync } from 'fs' interface DevServerConfig { port?: number diff --git a/dev-tools/dev-server/core-watcher.ts b/dev-tools/dev-server/core-watcher.ts index 4030b36e3..0635310f7 100644 --- a/dev-tools/dev-server/core-watcher.ts +++ b/dev-tools/dev-server/core-watcher.ts @@ -1,8 +1,9 @@ -import webpack from 'webpack' import exitHook from 'async-exit-hook' +import webpack from 'webpack' + import webpackConfig from '../../webpack/webpack.dev' -import { sendMessage } from './web-socket-server' import { defaultWatcherHandler } from './watcher-common' +import { sendMessage } from './web-socket-server' export const startCoreWatcher = () => new Promise(resolve => { diff --git a/dev-tools/dev-server/index.ts b/dev-tools/dev-server/index.ts index e64b59531..692ae84c2 100644 --- a/dev-tools/dev-server/index.ts +++ b/dev-tools/dev-server/index.ts @@ -1,5 +1,5 @@ -import { startDevServer } from './server' import { startCoreWatcher } from './core-watcher' +import { startDevServer } from './server' import { startWebSocketServer } from './web-socket-server' startDevServer().then(server => { diff --git a/dev-tools/dev-server/registry-watcher.ts b/dev-tools/dev-server/registry-watcher.ts index 45d5e5ca1..45a35ee6d 100644 --- a/dev-tools/dev-server/registry-watcher.ts +++ b/dev-tools/dev-server/registry-watcher.ts @@ -1,9 +1,11 @@ -import { Watching, Configuration, webpack } from 'webpack' import exitHook from 'async-exit-hook' +import type { Configuration, Watching } from 'webpack' +import { webpack } from 'webpack' + import { fromId } from '../../registry/lib/id' +import { devServerConfig } from './config' import { defaultWatcherHandler } from './watcher-common' import { sendMessage } from './web-socket-server' -import { devServerConfig } from './config' export const watchers: { url: string; instance: Watching }[] = [] export const parseRegistryUrl = (url: string) => { diff --git a/dev-tools/dev-server/server.ts b/dev-tools/dev-server/server.ts index 62aab7d71..3143269c6 100644 --- a/dev-tools/dev-server/server.ts +++ b/dev-tools/dev-server/server.ts @@ -1,11 +1,13 @@ -import { createServer, Server } from 'http' -import { Configuration } from 'webpack' import exitHook from 'async-exit-hook' +import type { Server } from 'http' +import { createServer } from 'http' import handler from 'serve-handler' -import { devServerConfig } from './config' +import type { Configuration } from 'webpack' + import { buildByEntry } from '../../registry/webpack/config' +import { devServerConfig } from './config' +import { parseRegistryUrl, startRegistryWatcher, watchers } from './registry-watcher' import { exitWebSocketServer } from './web-socket-server' -import { watchers, parseRegistryUrl, startRegistryWatcher } from './registry-watcher' export const startDevServer = () => new Promise(resolve => { diff --git a/dev-tools/dev-server/watcher-common.ts b/dev-tools/dev-server/watcher-common.ts index 7de70d68a..1d65a1f12 100644 --- a/dev-tools/dev-server/watcher-common.ts +++ b/dev-tools/dev-server/watcher-common.ts @@ -1,4 +1,4 @@ -import { Stats } from 'webpack' +import type { Stats } from 'webpack' export const defaultWatcherHandler = ( initCallback: (result: Stats) => void, diff --git a/dev-tools/dev-server/web-socket-server.ts b/dev-tools/dev-server/web-socket-server.ts index ef94e585d..ef784dc62 100644 --- a/dev-tools/dev-server/web-socket-server.ts +++ b/dev-tools/dev-server/web-socket-server.ts @@ -1,7 +1,8 @@ import exitHook from 'async-exit-hook' -import { Server } from 'http' +import type { Server } from 'http' import { WebSocketServer } from 'ws' -import { Payload } from './payload' + +import type { Payload } from './payload' import { stopInstance, watchers } from './registry-watcher' let server: WebSocketServer diff --git a/registry/lib/components/feeds/copy-link/index.ts b/registry/lib/components/feeds/copy-link/index.ts index 930384f08..3125735a4 100644 --- a/registry/lib/components/feeds/copy-link/index.ts +++ b/registry/lib/components/feeds/copy-link/index.ts @@ -1,5 +1,5 @@ import { defineComponentMetadata } from '@/components/define' -import { FeedsCard } from '@/components/feeds/api' +import type { FeedsCard } from '@/components/feeds/api' import { feedsUrls } from '@/core/utils/urls' const entry = async () => { diff --git a/registry/lib/components/feeds/disable-details/index.ts b/registry/lib/components/feeds/disable-details/index.ts index f36143170..38d7f5228 100644 --- a/registry/lib/components/feeds/disable-details/index.ts +++ b/registry/lib/components/feeds/disable-details/index.ts @@ -1,5 +1,6 @@ import { defineComponentMetadata } from '@/components/define' -import { FeedsCard, feedsCardTypes } from '@/components/feeds/api' +import type { FeedsCard } from '@/components/feeds/api' +import { feedsCardTypes } from '@/components/feeds/api' import { feedsUrls } from '@/core/utils/urls' let enabled = true diff --git a/registry/lib/components/feeds/filter/FeedsFilterCard.vue b/registry/lib/components/feeds/filter/FeedsFilterCard.vue index f67b4289a..713bb9aee 100644 --- a/registry/lib/components/feeds/filter/FeedsFilterCard.vue +++ b/registry/lib/components/feeds/filter/FeedsFilterCard.vue @@ -50,18 +50,20 @@ diff --git a/registry/lib/components/video/player/screenshot/VideoScreenshotContainer.vue b/registry/lib/components/video/player/screenshot/VideoScreenshotContainer.vue index dc90cf3e1..694dc8d32 100644 --- a/registry/lib/components/video/player/screenshot/VideoScreenshotContainer.vue +++ b/registry/lib/components/video/player/screenshot/VideoScreenshotContainer.vue @@ -119,7 +119,7 @@ export default defineComponent({ > * { pointer-events: initial; } - &-enter { + &-enter-from { opacity: 0; transform: translateX(var(--screenshot-width-negative)); } diff --git a/registry/lib/deprecated/comments-translate/index.ts b/registry/lib/deprecated/comments-translate/index.ts index 49b7ae2ad..d76565be1 100644 --- a/registry/lib/deprecated/comments-translate/index.ts +++ b/registry/lib/deprecated/comments-translate/index.ts @@ -1,5 +1,6 @@ import { defineComponentMetadata } from '@/components/define' import MachineTranslator from '@/components/i18n/machine-translator/MachineTranslator.vue' +import { mountVueComponent } from '@/core/utils' const entry = async () => { const injectButton = (element: HTMLElement) => { @@ -11,12 +12,8 @@ const entry = async () => { if (textElement.nextElementSibling?.classList.contains('translate-container')) { return } - const translator = new MachineTranslator({ - propsData: { - text: textElement.innerText, - }, - }).$mount() - textElement.insertAdjacentElement('afterend', translator.$el) + const [el] = mountVueComponent(MachineTranslator, { text: textElement.innerText }) + textElement.insertAdjacentElement('afterend', el) }) } const { forEachCommentItem } = await import('@/components/utils/comment-apis') diff --git a/src/components/settings-panel/WidgetsPanel.vue b/src/components/settings-panel/WidgetsPanel.vue index 02d86a844..c202d12e0 100644 --- a/src/components/settings-panel/WidgetsPanel.vue +++ b/src/components/settings-panel/WidgetsPanel.vue @@ -136,7 +136,7 @@ export default defineComponent({ font-size: 14px; transition: 0.2s ease-out; display: flex; - &-enter, + &-enter-from, &-leave-to { opacity: 0; transform: scale(0.9); diff --git a/src/core/toast/ToastCard.vue b/src/core/toast/ToastCard.vue index ef3db6fa9..d7c66b244 100644 --- a/src/core/toast/ToastCard.vue +++ b/src/core/toast/ToastCard.vue @@ -108,7 +108,7 @@ export default defineComponent({ padding-left: 8px; border-radius: 8px; - &.toast-card-container-enter, + &.toast-card-container-enter-from, &.toast-card-container-leave-to { opacity: 0; transform: translateX(var(--card-min-width-negative)); diff --git a/src/ui/ImagePicker.vue b/src/ui/ImagePicker.vue index a9dd3fff7..c7fdcc0de 100644 --- a/src/ui/ImagePicker.vue +++ b/src/ui/ImagePicker.vue @@ -200,7 +200,7 @@ export default defineComponent({ padding-left: 6px; padding-top: 6px; .image { - &.image-list-enter, + &.image-list-enter-from, &.image-list-leave-to { opacity: 0; } diff --git a/src/ui/TabControl.vue b/src/ui/TabControl.vue index 130c850cc..280cbc9c6 100644 --- a/src/ui/TabControl.vue +++ b/src/ui/TabControl.vue @@ -144,7 +144,7 @@ export default defineComponent({ max-height: 100%; @include no-scrollbar(); .content-transition { - &-enter, + &-enter-from, &-leave-to { opacity: 0; transform: translateY(-12px); From 88263c9fe418a75814321aaf1c92cead1d5d2551 Mon Sep 17 00:00:00 2001 From: timongh <46739861+timongh@users.noreply.github.com> Date: Tue, 7 Feb 2023 02:07:48 +0800 Subject: [PATCH 034/116] Add `deep: true` for array handler in vue watch option --- .../feeds/filter/FeedsFilterCard.vue | 13 ++++++---- .../style/custom-navbar/CustomNavbar.vue | 7 ++++-- .../style/home-redesign/fresh/VideoList.vue | 7 ++++-- .../settings-panel/SettingsPanel.vue | 19 ++++++++------- .../settings-panel/WidgetsPanel.vue | 24 +++++++++++-------- .../sub-pages/manage-panel/ManagePanel.vue | 15 +++++++----- 6 files changed, 52 insertions(+), 33 deletions(-) diff --git a/registry/lib/components/feeds/filter/FeedsFilterCard.vue b/registry/lib/components/feeds/filter/FeedsFilterCard.vue index e70d13396..d710597bf 100644 --- a/registry/lib/components/feeds/filter/FeedsFilterCard.vue +++ b/registry/lib/components/feeds/filter/FeedsFilterCard.vue @@ -118,11 +118,14 @@ export default defineComponent({ } }, watch: { - patterns() { - options.patterns = this.patterns - if (cardsManager) { - cardsManager.cards.forEach(card => this.updateCard(lodash.clone(card))) - } + patterns: { + handler() { + options.patterns = this.patterns + if (cardsManager) { + cardsManager.cards.forEach(card => this.updateCard(lodash.clone(card))) + } + }, + deep: true, }, }, async mounted() { diff --git a/registry/lib/components/style/custom-navbar/CustomNavbar.vue b/registry/lib/components/style/custom-navbar/CustomNavbar.vue index 029442e2c..004f9811e 100644 --- a/registry/lib/components/style/custom-navbar/CustomNavbar.vue +++ b/registry/lib/components/style/custom-navbar/CustomNavbar.vue @@ -56,8 +56,11 @@ export default defineComponent({ } }, watch: { - initItems() { - this.items = getItems() + initItems: { + handler() { + this.items = getItems() + }, + deep: true, }, }, async mounted() { diff --git a/registry/lib/components/style/home-redesign/fresh/VideoList.vue b/registry/lib/components/style/home-redesign/fresh/VideoList.vue index 26169a053..3dcb435f7 100644 --- a/registry/lib/components/style/home-redesign/fresh/VideoList.vue +++ b/registry/lib/components/style/home-redesign/fresh/VideoList.vue @@ -40,8 +40,11 @@ export default defineComponent({ }, }, watch: { - videos() { - this.setupIntersection() + videos: { + handler() { + this.setupIntersection() + }, + deep: true, }, loaded() { if (this.loaded) { diff --git a/src/components/settings-panel/SettingsPanel.vue b/src/components/settings-panel/SettingsPanel.vue index fb0eb84a7..78bbfe9a0 100644 --- a/src/components/settings-panel/SettingsPanel.vue +++ b/src/components/settings-panel/SettingsPanel.vue @@ -160,14 +160,17 @@ export default defineComponent({ // } this.updateRenderedComponents() }, - components() { - this.updateRenderedComponents() - this.$refs.componentTags.refreshTags() - if ( - !this.components.some((c: ComponentMetadata) => c.name === this.selectedComponent?.name) - ) { - this.selectedComponent = null - } + components: { + handler() { + this.updateRenderedComponents() + this.$refs.componentTags.refreshTags() + if ( + !this.components.some((c: ComponentMetadata) => c.name === this.selectedComponent?.name) + ) { + this.selectedComponent = null + } + }, + deep: true, }, }, methods: { diff --git a/src/components/settings-panel/WidgetsPanel.vue b/src/components/settings-panel/WidgetsPanel.vue index c202d12e0..10ea90fc6 100644 --- a/src/components/settings-panel/WidgetsPanel.vue +++ b/src/components/settings-panel/WidgetsPanel.vue @@ -64,16 +64,20 @@ export default defineComponent({ } }, watch: { - allWidgets() { - this.allWidgets.forEach(async (w: Widget) => { - const add = await widgetFilter(w) - if (add) { - this.widgets.push(w) - } else { - deleteValue(this.widgets, (widget: Widget) => widget.name === w.name) - } - }) - console.log('updated widgets', this.widgets) + // deep + allWidgets: { + handler() { + this.allWidgets.forEach(async (w: Widget) => { + const add = await widgetFilter(w) + if (add) { + this.widgets.push(w) + } else { + deleteValue(this.widgets, (widget: Widget) => widget.name === w.name) + } + }) + console.log('updated widgets', this.widgets) + }, + deep: true, }, }, created() { diff --git a/src/components/settings-panel/sub-pages/manage-panel/ManagePanel.vue b/src/components/settings-panel/sub-pages/manage-panel/ManagePanel.vue index d3dec543a..b91cff1d0 100644 --- a/src/components/settings-panel/sub-pages/manage-panel/ManagePanel.vue +++ b/src/components/settings-panel/sub-pages/manage-panel/ManagePanel.vue @@ -142,12 +142,15 @@ export default defineComponent({ }, }, watch: { - filteredList() { - this.loaded = false - window.setTimeout(() => { - this.debouncedList = this.filteredList - this.loaded = true - }, 200) + filteredList: { + handler() { + this.loaded = false + window.setTimeout(() => { + this.debouncedList = this.filteredList + this.loaded = true + }, 200) + }, + deep: true, }, }, mounted() { From d19ec16a9af36283b2fd9d3deb8f3540abf1bbc0 Mon Sep 17 00:00:00 2001 From: timongh <46739861+timongh@users.noreply.github.com> Date: Tue, 7 Feb 2023 02:14:45 +0800 Subject: [PATCH 035/116] Modify two missing Vue component creation methods --- registry/lib/deprecated/feeds-translate/index.ts | 9 +++------ src/components/video/video-control-bar.ts | 13 +++++-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/registry/lib/deprecated/feeds-translate/index.ts b/registry/lib/deprecated/feeds-translate/index.ts index 51bad461f..b18dac782 100644 --- a/registry/lib/deprecated/feeds-translate/index.ts +++ b/registry/lib/deprecated/feeds-translate/index.ts @@ -1,5 +1,6 @@ import { defineComponentMetadata } from '@/components/define' import type { FeedsCard } from '@/components/feeds/api' +import { mountVueComponent } from '@/core/utils' import { feedsUrls } from '@/core/utils/urls' const entry = async () => { @@ -17,12 +18,8 @@ const entry = async () => { return } const cardContent = card.element.querySelector('.card-content') as HTMLElement - const translator = new MachineTranslator({ - propsData: { - text, - }, - }).$mount() - cardContent.insertAdjacentElement('beforeend', translator.$el) + const [el] = mountVueComponent(MachineTranslator, { text }) + cardContent.insertAdjacentElement('beforeend', el) } forEachFeedsCard({ added: injectButton, diff --git a/src/components/video/video-control-bar.ts b/src/components/video/video-control-bar.ts index c01545024..b9ba6c214 100644 --- a/src/components/video/video-control-bar.ts +++ b/src/components/video/video-control-bar.ts @@ -1,6 +1,7 @@ import { videoChange } from '@/core/observer' -import { matchUrlPattern } from '@/core/utils' +import { matchUrlPattern, mountVueComponent } from '@/core/utils' import { playerUrls } from '@/core/utils/urls' +import { mount } from 'sortablejs' export interface VideoControlBarItem { name: string @@ -24,13 +25,9 @@ const initControlBar = lodash.once(() => { if (time === null || time.parentElement?.querySelector(controlBarClass) !== null) { return } - const instance = new VideoControlBar({ - propsData: { - items: controlBarItems, - }, - }).$mount() - time.insertAdjacentElement('afterend', instance.$el) - resolve(instance) + const [el, vm] = mountVueComponent(VideoControlBar, { items: controlBarItems }) + time.insertAdjacentElement('afterend', el) + resolve(vm) }) }) }) From 125a0c659516f5a227d5dfd9795a95470b531028 Mon Sep 17 00:00:00 2001 From: timongh <46739861+timongh@users.noreply.github.com> Date: Tue, 7 Feb 2023 02:32:05 +0800 Subject: [PATCH 036/116] Removes all uses of the variable Vue in vue2 --- CONTRIBUTING.md | 3 --- .../style/home-redesign/fresh/VideoList.vue | 2 +- .../video/download/DownloadVideo.vue | 4 ++-- .../video/player/show-upload-time/index.ts | 5 +++-- .../video/download/aria2-output/aria2-rpc.ts | 3 ++- src/client/init-vue.ts | 5 ----- src/client/init.ts | 3 --- src/components/video/video-control-bar.ts | 14 +++++++------ src/core/core-apis.ts | 1 - src/ui/RadioButton.vue | 20 ++++++++++--------- src/vue-compat.d.ts | 1 - 11 files changed, 27 insertions(+), 34 deletions(-) delete mode 100644 src/client/init-vue.ts diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b82cf8644..ad5e84043 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -141,9 +141,6 @@ pnpm install ### 全局 全局变量, 无需 `import` 就可以直接使用. (Tampermonkey API 这里不再列出了, 可根据代码提示使用) -- `Vue`: Vue 库的主对象, 在创建 `.vue` 组件时, 其中的 ` diff --git a/registry/lib/components/style/custom-navbar/messages/NavbarMessages.vue b/registry/lib/components/style/custom-navbar/messages/NavbarMessages.vue index 7cc69e1ec..6eab4a488 100644 --- a/registry/lib/components/style/custom-navbar/messages/NavbarMessages.vue +++ b/registry/lib/components/style/custom-navbar/messages/NavbarMessages.vue @@ -1,5 +1,5 @@