aboutsummaryrefslogtreecommitdiffhomepage
path: root/client
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-07-31 14:34:36 +0200
committerChocobozzz <me@florianbigard.com>2023-08-11 15:02:33 +0200
commit3a4992633ee62d5edfbb484d9c6bcb3cf158489d (patch)
treee4510b39bdac9c318fdb4b47018d08f15368b8f0 /client
parent04d1da5621d25d59bd5fa1543b725c497bf5d9a8 (diff)
downloadPeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.tar.gz
PeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.tar.zst
PeerTube-3a4992633ee62d5edfbb484d9c6bcb3cf158489d.zip
Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge conflicts, but it's a major step forward: * Server can be faster at startup because imports() are async and we can easily lazy import big modules * Angular doesn't seem to support ES import (with .js extension), so we had to correctly organize peertube into a monorepo: * Use yarn workspace feature * Use typescript reference projects for dependencies * Shared projects have been moved into "packages", each one is now a node module (with a dedicated package.json/tsconfig.json) * server/tools have been moved into apps/ and is now a dedicated app bundled and published on NPM so users don't have to build peertube cli tools manually * server/tests have been moved into packages/ so we don't compile them every time we want to run the server * Use isolatedModule option: * Had to move from const enum to const (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums) * Had to explictely specify "type" imports when used in decorators * Prefer tsx (that uses esbuild under the hood) instead of ts-node to load typescript files (tests with mocha or scripts): * To reduce test complexity as esbuild doesn't support decorator metadata, we only test server files that do not import server models * We still build tests files into js files for a faster CI * Remove unmaintained peertube CLI import script * Removed some barrels to speed up execution (less imports)
Diffstat (limited to 'client')
-rw-r--r--client/.eslintrc.json1
-rw-r--r--client/e2e/wdio.main.conf.ts8
-rw-r--r--client/package.json10
-rw-r--r--client/src/app/+about/about-follows/about-follows.component.ts2
-rw-r--r--client/src/app/+about/about-instance/about-instance.component.ts2
-rw-r--r--client/src/app/+about/about-instance/about-instance.resolver.ts2
-rw-r--r--client/src/app/+about/about-instance/contact-admin-modal.component.ts2
-rw-r--r--client/src/app/+about/about-instance/instance-statistics.component.ts2
-rw-r--r--client/src/app/+accounts/account-video-channels/account-video-channels.component.ts2
-rw-r--r--client/src/app/+accounts/account-videos/account-videos.component.ts2
-rw-r--r--client/src/app/+accounts/accounts.component.ts2
-rw-r--r--client/src/app/+admin/admin.component.ts2
-rw-r--r--client/src/app/+admin/config/config.routes.ts2
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts2
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts2
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts2
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts2
-rw-r--r--client/src/app/+admin/config/shared/config.service.ts2
-rw-r--r--client/src/app/+admin/follows/followers-list/followers-list.component.ts2
-rw-r--r--client/src/app/+admin/follows/following-list/following-list.component.ts2
-rw-r--r--client/src/app/+admin/follows/follows.routes.ts2
-rw-r--r--client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.ts3
-rw-r--r--client/src/app/+admin/follows/video-redundancies-list/video-redundancy-information.component.ts2
-rw-r--r--client/src/app/+admin/moderation/moderation.routes.ts2
-rw-r--r--client/src/app/+admin/moderation/registration-list/admin-registration.service.ts4
-rw-r--r--client/src/app/+admin/moderation/registration-list/process-registration-modal.component.ts2
-rw-r--r--client/src/app/+admin/moderation/registration-list/registration-list.component.ts2
-rw-r--r--client/src/app/+admin/moderation/video-block-list/video-block-list.component.ts6
-rw-r--r--client/src/app/+admin/overview/comments/video-comment-list.component.ts2
-rw-r--r--client/src/app/+admin/overview/comments/video-comment.routes.ts2
-rw-r--r--client/src/app/+admin/overview/users/user-edit/user-create.component.ts2
-rw-r--r--client/src/app/+admin/overview/users/user-edit/user-edit.ts5
-rw-r--r--client/src/app/+admin/overview/users/user-edit/user-password.component.ts2
-rw-r--r--client/src/app/+admin/overview/users/user-edit/user-update.component.ts2
-rw-r--r--client/src/app/+admin/overview/users/user-list/user-list.component.ts4
-rw-r--r--client/src/app/+admin/overview/users/users.routes.ts2
-rw-r--r--client/src/app/+admin/overview/videos/video-admin.service.ts4
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.ts4
-rw-r--r--client/src/app/+admin/overview/videos/video.routes.ts2
-rw-r--r--client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts8
-rw-r--r--client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts6
-rw-r--r--client/src/app/+admin/plugins/plugin-show-installed/plugin-show-installed.component.ts2
-rw-r--r--client/src/app/+admin/plugins/plugins.routes.ts2
-rw-r--r--client/src/app/+admin/plugins/shared/plugin-api.service.ts19
-rw-r--r--client/src/app/+admin/plugins/shared/plugin-card.component.ts4
-rw-r--r--client/src/app/+admin/plugins/shared/plugin-navigation.component.ts4
-rw-r--r--client/src/app/+admin/shared/user-email-info.component.ts2
-rw-r--r--client/src/app/+admin/shared/user-real-quota-info.component.ts2
-rw-r--r--client/src/app/+admin/system/debug/debug.component.ts2
-rw-r--r--client/src/app/+admin/system/debug/debug.service.ts2
-rw-r--r--client/src/app/+admin/system/jobs/job.service.ts2
-rw-r--r--client/src/app/+admin/system/jobs/jobs.component.ts4
-rw-r--r--client/src/app/+admin/system/logs/log-row.model.ts2
-rw-r--r--client/src/app/+admin/system/logs/logs.component.ts2
-rw-r--r--client/src/app/+admin/system/logs/logs.service.ts2
-rw-r--r--client/src/app/+admin/system/runners/runner-job-list/runner-job-list.component.ts2
-rw-r--r--client/src/app/+admin/system/runners/runner-list/runner-list.component.ts2
-rw-r--r--client/src/app/+admin/system/runners/runner-registration-token-list/runner-registration-token-list.component.ts2
-rw-r--r--client/src/app/+admin/system/runners/runner.service.ts5
-rw-r--r--client/src/app/+admin/system/runners/runners.routes.ts2
-rw-r--r--client/src/app/+admin/system/system.routes.ts2
-rw-r--r--client/src/app/+error-page/error-page.component.ts4
-rw-r--r--client/src/app/+login/login.component.ts4
-rw-r--r--client/src/app/+manage/video-channel-edit/video-channel-create.component.ts2
-rw-r--r--client/src/app/+manage/video-channel-edit/video-channel-update.component.ts4
-rw-r--r--client/src/app/+my-account/my-account-applications/my-account-applications.component.ts3
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-change-email/my-account-change-email.component.ts2
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts2
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-email-preferences/my-account-email-preferences.component.ts2
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-notification-preferences/my-account-notification-preferences.component.ts6
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-settings.component.ts2
-rw-r--r--client/src/app/+my-library/my-follows/my-followers.component.ts2
-rw-r--r--client/src/app/+my-library/my-library.component.ts2
-rw-r--r--client/src/app/+my-library/my-ownership/my-accept-ownership/my-accept-ownership.component.ts2
-rw-r--r--client/src/app/+my-library/my-ownership/my-ownership.component.ts4
-rw-r--r--client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.ts5
-rw-r--r--client/src/app/+my-library/my-video-channel-syncs/video-channel-sync-edit/video-channel-sync-edit.component.ts2
-rw-r--r--client/src/app/+my-library/my-video-imports/my-video-imports.component.ts4
-rw-r--r--client/src/app/+my-library/my-video-playlists/my-video-playlist-create.component.ts3
-rw-r--r--client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.ts5
-rw-r--r--client/src/app/+my-library/my-video-playlists/my-video-playlist-elements.component.ts2
-rw-r--r--client/src/app/+my-library/my-video-playlists/my-video-playlist-update.component.ts2
-rw-r--r--client/src/app/+my-library/my-video-playlists/my-video-playlists.component.ts2
-rw-r--r--client/src/app/+my-library/my-videos/my-videos.component.ts2
-rw-r--r--client/src/app/+search/search-filters.component.ts2
-rw-r--r--client/src/app/+search/search.component.ts2
-rw-r--r--client/src/app/+search/shared/abstract-lazy-load.resolver.ts2
-rw-r--r--client/src/app/+signup/+register/register.component.ts3
-rw-r--r--client/src/app/+signup/shared/signup.service.ts2
-rw-r--r--client/src/app/+stats/video/video-stats.component.ts6
-rw-r--r--client/src/app/+stats/video/video-stats.service.ts2
-rw-r--r--client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts2
-rw-r--r--client/src/app/+video-channels/video-channels.component.ts2
-rw-r--r--client/src/app/+video-studio/edit/video-studio-edit.component.ts4
-rw-r--r--client/src/app/+video-studio/shared/video-studio.service.ts2
-rw-r--r--client/src/app/+videos/+video-edit/shared/video-caption-add-modal.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/shared/video-caption-edit-modal-content/video-caption-edit-modal-content.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/shared/video-edit.component.ts15
-rw-r--r--client/src/app/+videos/+video-edit/shared/video-upload.service.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-add-components/video-import-url.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-add-components/video-send.ts8
-rw-r--r--client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-add.component.ts2
-rw-r--r--client/src/app/+videos/+video-edit/video-update.component.ts5
-rw-r--r--client/src/app/+videos/+video-edit/video-update.resolver.ts4
-rw-r--r--client/src/app/+videos/+video-watch/shared/action-buttons/action-buttons.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/action-buttons/video-rate.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/comment/video-comment-add.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/comment/video-comment.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/comment/video-comments.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/information/privacy-concerns.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/information/video-alert.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/playlist/video-watch-playlist.component.ts2
-rw-r--r--client/src/app/+videos/+video-watch/shared/recommendations/recent-videos-recommendation.service.ts2
-rw-r--r--client/src/app/+videos/+video-watch/video-watch.component.ts13
-rw-r--r--client/src/app/+videos/video-list/overview/overview.service.ts5
-rw-r--r--client/src/app/+videos/video-list/overview/videos-overview.model.ts2
-rw-r--r--client/src/app/+videos/video-list/video-user-subscriptions.component.ts2
-rw-r--r--client/src/app/+videos/video-list/videos-list-common-page.component.ts2
-rw-r--r--client/src/app/app-routing.module.ts2
-rw-r--r--client/src/app/app.component.ts4
-rw-r--r--client/src/app/core/auth/auth-user.model.ts10
-rw-r--r--client/src/app/core/auth/auth.service.ts2
-rw-r--r--client/src/app/core/menu/menu.service.ts2
-rw-r--r--client/src/app/core/notification/peertube-socket.service.ts2
-rw-r--r--client/src/app/core/plugins/hooks.service.ts2
-rw-r--r--client/src/app/core/plugins/plugin.service.ts10
-rw-r--r--client/src/app/core/renderer/html-renderer.service.ts2
-rw-r--r--client/src/app/core/renderer/markdown.service.ts5
-rw-r--r--client/src/app/core/rest/rest-extractor.service.ts10
-rw-r--r--client/src/app/core/routing/homepage-redirect.component.ts2
-rw-r--r--client/src/app/core/routing/meta.service.ts2
-rw-r--r--client/src/app/core/scoped-tokens/scoped-tokens.service.ts2
-rw-r--r--client/src/app/core/server/server.service.ts22
-rw-r--r--client/src/app/core/theme/theme.service.ts2
-rw-r--r--client/src/app/core/users/user-local-storage.service.ts10
-rw-r--r--client/src/app/core/users/user.model.ts15
-rw-r--r--client/src/app/core/users/user.service.ts2
-rw-r--r--client/src/app/header/search-typeahead.component.ts2
-rw-r--r--client/src/app/helpers/utils/channel.ts2
-rw-r--r--client/src/app/helpers/utils/upload.ts2
-rw-r--r--client/src/app/menu/language-chooser.component.ts3
-rw-r--r--client/src/app/menu/menu.component.ts4
-rw-r--r--client/src/app/modal/instance-config-warning-modal.component.ts2
-rw-r--r--client/src/app/shared/form-validators/video-playlist-validators.ts4
-rw-r--r--client/src/app/shared/shared-abuse-list/abuse-details.component.ts2
-rw-r--r--client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts4
-rw-r--r--client/src/app/shared/shared-abuse-list/abuse-message-modal.component.ts2
-rw-r--r--client/src/app/shared/shared-abuse-list/moderation-comment-modal.component.ts2
-rw-r--r--client/src/app/shared/shared-abuse-list/processed-abuse.model.ts2
-rw-r--r--client/src/app/shared/shared-actor-image/actor-avatar.component.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/custom-markup.service.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/dynamic-element.service.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts2
-rw-r--r--client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts4
-rw-r--r--client/src/app/shared/shared-forms/dynamic-form-field.component.ts2
-rw-r--r--client/src/app/shared/shared-forms/form-validator.service.ts2
-rw-r--r--client/src/app/shared/shared-forms/markdown-textarea.component.ts2
-rw-r--r--client/src/app/shared/shared-forms/preview-upload.component.ts2
-rw-r--r--client/src/app/shared/shared-forms/timestamp-input.component.ts2
-rw-r--r--client/src/app/shared/shared-instance/instance-about-accordion.component.ts3
-rw-r--r--client/src/app/shared/shared-instance/instance-features-table.component.ts2
-rw-r--r--client/src/app/shared/shared-instance/instance-follow.service.ts4
-rw-r--r--client/src/app/shared/shared-instance/instance.service.ts5
-rw-r--r--client/src/app/shared/shared-main/account/account.model.ts2
-rw-r--r--client/src/app/shared/shared-main/account/account.service.ts2
-rw-r--r--client/src/app/shared/shared-main/account/actor.model.ts2
-rw-r--r--client/src/app/shared/shared-main/auth/auth-interceptor.service.ts3
-rw-r--r--client/src/app/shared/shared-main/custom-page/custom-page.service.ts2
-rw-r--r--client/src/app/shared/shared-main/feeds/syndication.model.ts4
-rw-r--r--client/src/app/shared/shared-main/misc/help.component.ts2
-rw-r--r--client/src/app/shared/shared-main/plugins/plugin-placeholder.component.ts2
-rw-r--r--client/src/app/shared/shared-main/plugins/plugin-selector.directive.ts2
-rw-r--r--client/src/app/shared/shared-main/users/user-history.service.ts2
-rw-r--r--client/src/app/shared/shared-main/users/user-notification.model.ts15
-rw-r--r--client/src/app/shared/shared-main/users/user-notification.service.ts2
-rw-r--r--client/src/app/shared/shared-main/users/user-notifications.component.ts2
-rw-r--r--client/src/app/shared/shared-main/video-caption/video-caption.service.ts4
-rw-r--r--client/src/app/shared/shared-main/video-channel-sync/video-channel-sync.service.ts3
-rw-r--r--client/src/app/shared/shared-main/video-channel/video-channel.model.ts2
-rw-r--r--client/src/app/shared/shared-main/video-channel/video-channel.service.ts2
-rw-r--r--client/src/app/shared/shared-main/video/embed.component.ts4
-rw-r--r--client/src/app/shared/shared-main/video/redundancy.service.ts2
-rw-r--r--client/src/app/shared/shared-main/video/video-details.model.ts6
-rw-r--r--client/src/app/shared/shared-main/video/video-edit.model.ts6
-rw-r--r--client/src/app/shared/shared-main/video/video-file-token.service.ts2
-rw-r--r--client/src/app/shared/shared-main/video/video-import.service.ts4
-rw-r--r--client/src/app/shared/shared-main/video/video-ownership.service.ts2
-rw-r--r--client/src/app/shared/shared-main/video/video-password.service.ts2
-rw-r--r--client/src/app/shared/shared-main/video/video.model.ts11
-rw-r--r--client/src/app/shared/shared-main/video/video.service.ts17
-rw-r--r--client/src/app/shared/shared-moderation/abuse.service.ts2
-rw-r--r--client/src/app/shared/shared-moderation/account-block.model.ts2
-rw-r--r--client/src/app/shared/shared-moderation/blocklist.service.ts4
-rw-r--r--client/src/app/shared/shared-moderation/bulk.service.ts2
-rw-r--r--client/src/app/shared/shared-moderation/report-modals/account-report.component.ts4
-rw-r--r--client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts4
-rw-r--r--client/src/app/shared/shared-moderation/report-modals/video-report.component.ts4
-rw-r--r--client/src/app/shared/shared-moderation/server-blocklist.component.ts2
-rw-r--r--client/src/app/shared/shared-moderation/user-ban-modal.component.ts2
-rw-r--r--client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts2
-rw-r--r--client/src/app/shared/shared-moderation/video-block.service.ts6
-rw-r--r--client/src/app/shared/shared-search/advanced-search.model.ts2
-rw-r--r--client/src/app/shared/shared-search/find-in-bulk.service.ts4
-rw-r--r--client/src/app/shared/shared-search/search.service.ts2
-rw-r--r--client/src/app/shared/shared-share-modal/video-share.component.ts4
-rw-r--r--client/src/app/shared/shared-support-modal/support-modal.component.ts2
-rw-r--r--client/src/app/shared/shared-thumbnail/video-thumbnail.component.ts2
-rw-r--r--client/src/app/shared/shared-user-settings/user-interface-settings.component.ts2
-rw-r--r--client/src/app/shared/shared-user-settings/user-video-settings.component.ts3
-rw-r--r--client/src/app/shared/shared-user-subscription/subscribe-button.component.ts2
-rw-r--r--client/src/app/shared/shared-user-subscription/user-subscription.service.ts2
-rw-r--r--client/src/app/shared/shared-users/two-factor.service.ts2
-rw-r--r--client/src/app/shared/shared-users/user-admin.service.ts4
-rw-r--r--client/src/app/shared/shared-video-comment/video-comment-thread-tree.model.ts2
-rw-r--r--client/src/app/shared/shared-video-comment/video-comment.model.ts2
-rw-r--r--client/src/app/shared/shared-video-comment/video-comment.service.ts2
-rw-r--r--client/src/app/shared/shared-video-live/live-stream-information.component.ts4
-rw-r--r--client/src/app/shared/shared-video-live/live-video.service.ts2
-rw-r--r--client/src/app/shared/shared-video-miniature/video-actions-dropdown.component.ts2
-rw-r--r--client/src/app/shared/shared-video-miniature/video-download.component.ts4
-rw-r--r--client/src/app/shared/shared-video-miniature/video-filters-header.component.ts2
-rw-r--r--client/src/app/shared/shared-video-miniature/video-filters.model.ts18
-rw-r--r--client/src/app/shared/shared-video-miniature/video-miniature.component.ts2
-rw-r--r--client/src/app/shared/shared-video-miniature/videos-list.component.ts4
-rw-r--r--client/src/app/shared/shared-video-miniature/videos-selection.component.ts4
-rw-r--r--client/src/app/shared/shared-video-playlist/video-add-to-playlist.component.ts4
-rw-r--r--client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.ts4
-rw-r--r--client/src/app/shared/shared-video-playlist/video-playlist-element.model.ts4
-rw-r--r--client/src/app/shared/shared-video-playlist/video-playlist.model.ts14
-rw-r--r--client/src/app/shared/shared-video-playlist/video-playlist.service.ts2
-rw-r--r--client/src/assets/player/peertube-player.ts10
-rw-r--r--client/src/assets/player/shared/common/utils.ts2
-rw-r--r--client/src/assets/player/shared/control-bar/peertube-link-button.ts2
-rw-r--r--client/src/assets/player/shared/metrics/metrics-plugin.ts4
-rw-r--r--client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts2
-rw-r--r--client/src/assets/player/shared/p2p-media-loader/segment-validator.ts2
-rw-r--r--client/src/assets/player/shared/peertube/peertube-plugin.ts4
-rw-r--r--client/src/assets/player/shared/player-options-builder/hls-options-builder.ts2
-rw-r--r--client/src/assets/player/shared/playlist/playlist-menu-item.ts4
-rw-r--r--client/src/assets/player/shared/playlist/playlist-menu.ts2
-rw-r--r--client/src/assets/player/shared/stats/stats-card.ts2
-rw-r--r--client/src/assets/player/shared/web-video/web-video-plugin.ts4
-rw-r--r--client/src/assets/player/translations-manager.ts2
-rw-r--r--client/src/assets/player/types/peertube-player-options.ts4
-rw-r--r--client/src/assets/player/types/peertube-videojs-typings.ts2
-rw-r--r--client/src/assets/player/utils.ts2
-rw-r--r--client/src/root-helpers/logger.ts2
-rw-r--r--client/src/root-helpers/plugins-manager.ts7
-rw-r--r--client/src/root-helpers/video.ts8
-rw-r--r--client/src/standalone/videos/embed.ts2
-rw-r--r--client/src/standalone/videos/shared/auth-http.ts4
-rw-r--r--client/src/standalone/videos/shared/live-manager.ts4
-rw-r--r--client/src/standalone/videos/shared/peertube-plugin.ts4
-rw-r--r--client/src/standalone/videos/shared/player-html.ts2
-rw-r--r--client/src/standalone/videos/shared/player-options-builder.ts4
-rw-r--r--client/src/standalone/videos/shared/playlist-fetcher.ts2
-rw-r--r--client/src/standalone/videos/shared/playlist-tracker.ts2
-rw-r--r--client/src/standalone/videos/shared/video-fetcher.ts2
-rw-r--r--client/src/types/job-state-client.type.ts2
-rw-r--r--client/src/types/job-type-client.type.ts2
-rw-r--r--client/src/types/register-client-option.model.ts2
-rw-r--r--client/src/types/server-error.model.ts6
-rw-r--r--client/tsconfig.eslint.json5
-rw-r--r--client/tsconfig.json28
-rw-r--r--client/tsconfig.types.json7
-rw-r--r--client/webpack/webpack.video-embed.js4
-rw-r--r--client/yarn.lock118
272 files changed, 577 insertions, 493 deletions
diff --git a/client/.eslintrc.json b/client/.eslintrc.json
index c5685b9dc..e4c8d901b 100644
--- a/client/.eslintrc.json
+++ b/client/.eslintrc.json
@@ -14,6 +14,7 @@
14 "project": [ 14 "project": [
15 "tsconfig.eslint.json" 15 "tsconfig.eslint.json"
16 ], 16 ],
17 "EXPERIMENTAL_useSourceOfProjectReferenceRedirect": true,
17 "createDefaultProgram": false 18 "createDefaultProgram": false
18 }, 19 },
19 "extends": [ 20 "extends": [
diff --git a/client/e2e/wdio.main.conf.ts b/client/e2e/wdio.main.conf.ts
index 5ae7fa18b..8e6ef51cf 100644
--- a/client/e2e/wdio.main.conf.ts
+++ b/client/e2e/wdio.main.conf.ts
@@ -107,14 +107,6 @@ export const config = {
107 107
108 tsNodeOpts: { 108 tsNodeOpts: {
109 project: require('path').join(__dirname, './tsconfig.json') 109 project: require('path').join(__dirname, './tsconfig.json')
110 },
111
112 tsConfigPathsOpts: {
113 baseUrl: './',
114 paths: {
115 '@server/*': [ '../../server/*' ],
116 '@shared/*': [ '../../shared/*' ]
117 }
118 } 110 }
119 }, 111 },
120 112
diff --git a/client/package.json b/client/package.json
index 149322192..9c311622b 100644
--- a/client/package.json
+++ b/client/package.json
@@ -14,7 +14,7 @@
14 }, 14 },
15 "scripts": { 15 "scripts": {
16 "lint": "npm run lint-ts && npm run lint-scss", 16 "lint": "npm run lint-ts && npm run lint-scss",
17 "lint-ts": "eslint --ext .ts src/standalone/**/*.ts && npm run ng lint", 17 "lint-ts": "eslint --cache --ext .ts src/standalone/**/*.ts && npm run ng lint",
18 "lint-scss": "stylelint 'src/**/*.scss'", 18 "lint-scss": "stylelint 'src/**/*.scss'",
19 "webpack": "webpack", 19 "webpack": "webpack",
20 "eslint": "eslint", 20 "eslint": "eslint",
@@ -24,6 +24,9 @@
24 "ngx-extractor": "ngx-extractor", 24 "ngx-extractor": "ngx-extractor",
25 "stylelint": "stylelint" 25 "stylelint": "stylelint"
26 }, 26 },
27 "workspaces": [
28 "../packages/*"
29 ],
27 "typings": "*.d.ts", 30 "typings": "*.d.ts",
28 "devDependencies": { 31 "devDependencies": {
29 "@angular-devkit/build-angular": "^16.0.2", 32 "@angular-devkit/build-angular": "^16.0.2",
@@ -57,6 +60,8 @@
57 "@peertube/maildev": "^1.2.0", 60 "@peertube/maildev": "^1.2.0",
58 "@peertube/p2p-media-loader-core": "^1.0.14", 61 "@peertube/p2p-media-loader-core": "^1.0.14",
59 "@peertube/p2p-media-loader-hlsjs": "^1.0.14", 62 "@peertube/p2p-media-loader-hlsjs": "^1.0.14",
63 "@peertube/peertube-core-utils": "*",
64 "@peertube/peertube-models": "*",
60 "@peertube/videojs-contextmenu": "^5.5.0", 65 "@peertube/videojs-contextmenu": "^5.5.0",
61 "@peertube/xliffmerge": "^2.0.3", 66 "@peertube/xliffmerge": "^2.0.3",
62 "@popperjs/core": "^2.11.5", 67 "@popperjs/core": "^2.11.5",
@@ -86,7 +91,7 @@
86 "buffer": "^6.0.3", 91 "buffer": "^6.0.3",
87 "chart.js": "^4.3.0", 92 "chart.js": "^4.3.0",
88 "chartjs-plugin-zoom": "~2.0.1", 93 "chartjs-plugin-zoom": "~2.0.1",
89 "chromedriver": "^113.0.0", 94 "chromedriver": "^115.0.1",
90 "core-js": "^3.22.8", 95 "core-js": "^3.22.8",
91 "css-loader": "^6.2.0", 96 "css-loader": "^6.2.0",
92 "debug": "^4.3.1", 97 "debug": "^4.3.1",
@@ -122,6 +127,7 @@
122 "stylelint": "^15.1.0", 127 "stylelint": "^15.1.0",
123 "stylelint-config-sass-guidelines": "^10.0.0", 128 "stylelint-config-sass-guidelines": "^10.0.0",
124 "ts-loader": "^9.3.0", 129 "ts-loader": "^9.3.0",
130 "ts-node": "^10.9.1",
125 "tslib": "^2.4.0", 131 "tslib": "^2.4.0",
126 "typescript": "~4.9.5", 132 "typescript": "~4.9.5",
127 "video.js": "^7.19.2", 133 "video.js": "^7.19.2",
diff --git a/client/src/app/+about/about-follows/about-follows.component.ts b/client/src/app/+about/about-follows/about-follows.component.ts
index e1df8b813..a542cdbf1 100644
--- a/client/src/app/+about/about-follows/about-follows.component.ts
+++ b/client/src/app/+about/about-follows/about-follows.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Component, OnInit } from '@angular/core' 2import { Component, OnInit } from '@angular/core'
3import { ComponentPagination, hasMoreItems, Notifier, RestService, ServerService } from '@app/core' 3import { ComponentPagination, hasMoreItems, Notifier, RestService, ServerService } from '@app/core'
4import { InstanceFollowService } from '@app/shared/shared-instance' 4import { InstanceFollowService } from '@app/shared/shared-instance'
5import { Actor } from '@shared/models/actors' 5import { Actor } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 selector: 'my-about-follows', 8 selector: 'my-about-follows',
diff --git a/client/src/app/+about/about-instance/about-instance.component.ts b/client/src/app/+about/about-instance/about-instance.component.ts
index fc5214215..85e973d7b 100644
--- a/client/src/app/+about/about-instance/about-instance.component.ts
+++ b/client/src/app/+about/about-instance/about-instance.component.ts
@@ -3,8 +3,8 @@ import { AfterViewChecked, Component, ElementRef, OnInit, ViewChild } from '@ang
3import { ActivatedRoute } from '@angular/router' 3import { ActivatedRoute } from '@angular/router'
4import { Notifier, ServerService } from '@app/core' 4import { Notifier, ServerService } from '@app/core'
5import { AboutHTML } from '@app/shared/shared-instance' 5import { AboutHTML } from '@app/shared/shared-instance'
6import { HTMLServerConfig, ServerStats } from '@peertube/peertube-models'
6import { copyToClipboard } from '@root-helpers/utils' 7import { copyToClipboard } from '@root-helpers/utils'
7import { HTMLServerConfig, ServerStats } from '@shared/models/server'
8import { ResolverData } from './about-instance.resolver' 8import { ResolverData } from './about-instance.resolver'
9import { ContactAdminModalComponent } from './contact-admin-modal.component' 9import { ContactAdminModalComponent } from './contact-admin-modal.component'
10 10
diff --git a/client/src/app/+about/about-instance/about-instance.resolver.ts b/client/src/app/+about/about-instance/about-instance.resolver.ts
index f52a95b88..b5e8ccaa2 100644
--- a/client/src/app/+about/about-instance/about-instance.resolver.ts
+++ b/client/src/app/+about/about-instance/about-instance.resolver.ts
@@ -4,7 +4,7 @@ import { Injectable } from '@angular/core'
4import { ServerService } from '@app/core' 4import { ServerService } from '@app/core'
5import { CustomMarkupService } from '@app/shared/shared-custom-markup' 5import { CustomMarkupService } from '@app/shared/shared-custom-markup'
6import { AboutHTML, InstanceService } from '@app/shared/shared-instance' 6import { AboutHTML, InstanceService } from '@app/shared/shared-instance'
7import { About, ServerStats } from '@shared/models/server' 7import { About, ServerStats } from '@peertube/peertube-models'
8 8
9export type ResolverData = { 9export type ResolverData = {
10 serverStats: ServerStats 10 serverStats: ServerStats
diff --git a/client/src/app/+about/about-instance/contact-admin-modal.component.ts b/client/src/app/+about/about-instance/contact-admin-modal.component.ts
index 0e2bf51e8..38e577fcd 100644
--- a/client/src/app/+about/about-instance/contact-admin-modal.component.ts
+++ b/client/src/app/+about/about-instance/contact-admin-modal.component.ts
@@ -11,7 +11,7 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
11import { InstanceService } from '@app/shared/shared-instance' 11import { InstanceService } from '@app/shared/shared-instance'
12import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 12import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
13import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 13import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
14import { HTMLServerConfig, HttpStatusCode } from '@shared/models' 14import { HTMLServerConfig, HttpStatusCode } from '@peertube/peertube-models'
15 15
16type Prefill = { 16type Prefill = {
17 subject?: string 17 subject?: string
diff --git a/client/src/app/+about/about-instance/instance-statistics.component.ts b/client/src/app/+about/about-instance/instance-statistics.component.ts
index ac6984438..9eb56d0a4 100644
--- a/client/src/app/+about/about-instance/instance-statistics.component.ts
+++ b/client/src/app/+about/about-instance/instance-statistics.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { ServerStats } from '@shared/models/server' 2import { ServerStats } from '@peertube/peertube-models'
3 3
4@Component({ 4@Component({
5 selector: 'my-instance-statistics', 5 selector: 'my-instance-statistics',
diff --git a/client/src/app/+accounts/account-video-channels/account-video-channels.component.ts b/client/src/app/+accounts/account-video-channels/account-video-channels.component.ts
index 2ee168492..b8afa66ff 100644
--- a/client/src/app/+accounts/account-video-channels/account-video-channels.component.ts
+++ b/client/src/app/+accounts/account-video-channels/account-video-channels.component.ts
@@ -5,7 +5,7 @@ import { ComponentPagination, hasMoreItems, MarkdownService, User, UserService }
5import { SimpleMemoize } from '@app/helpers' 5import { SimpleMemoize } from '@app/helpers'
6import { Account, AccountService, Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main' 6import { Account, AccountService, Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main'
7import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature' 7import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature'
8import { NSFWPolicyType, VideoSortField } from '@shared/models' 8import { NSFWPolicyType, VideoSortField } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-account-video-channels', 11 selector: 'my-account-video-channels',
diff --git a/client/src/app/+accounts/account-videos/account-videos.component.ts b/client/src/app/+accounts/account-videos/account-videos.component.ts
index 13d1f857d..d8e8377e1 100644
--- a/client/src/app/+accounts/account-videos/account-videos.component.ts
+++ b/client/src/app/+accounts/account-videos/account-videos.component.ts
@@ -4,7 +4,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core'
4import { ComponentPaginationLight, DisableForReuseHook, ScreenService } from '@app/core' 4import { ComponentPaginationLight, DisableForReuseHook, ScreenService } from '@app/core'
5import { Account, AccountService, VideoService } from '@app/shared/shared-main' 5import { Account, AccountService, VideoService } from '@app/shared/shared-main'
6import { VideoFilters } from '@app/shared/shared-video-miniature' 6import { VideoFilters } from '@app/shared/shared-video-miniature'
7import { VideoSortField } from '@shared/models' 7import { VideoSortField } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 selector: 'my-account-videos', 10 selector: 'my-account-videos',
diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts
index 6d912e325..156f35804 100644
--- a/client/src/app/+accounts/accounts.component.ts
+++ b/client/src/app/+accounts/accounts.component.ts
@@ -13,7 +13,7 @@ import {
13 VideoService 13 VideoService
14} from '@app/shared/shared-main' 14} from '@app/shared/shared-main'
15import { AccountReportComponent, BlocklistService } from '@app/shared/shared-moderation' 15import { AccountReportComponent, BlocklistService } from '@app/shared/shared-moderation'
16import { HttpStatusCode, User, UserRight } from '@shared/models' 16import { HttpStatusCode, User, UserRight } from '@peertube/peertube-models'
17 17
18@Component({ 18@Component({
19 templateUrl: './accounts.component.html', 19 templateUrl: './accounts.component.html',
diff --git a/client/src/app/+admin/admin.component.ts b/client/src/app/+admin/admin.component.ts
index 49092ea2a..c0d7db99e 100644
--- a/client/src/app/+admin/admin.component.ts
+++ b/client/src/app/+admin/admin.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'
2import { AuthService, ScreenService, ServerService } from '@app/core' 2import { AuthService, ScreenService, ServerService } from '@app/core'
3import { ListOverflowItem } from '@app/shared/shared-main' 3import { ListOverflowItem } from '@app/shared/shared-main'
4import { TopMenuDropdownParam } from '@app/shared/shared-main/misc/top-menu-dropdown.component' 4import { TopMenuDropdownParam } from '@app/shared/shared-main/misc/top-menu-dropdown.component'
5import { UserRight } from '@shared/models' 5import { UserRight } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 templateUrl: './admin.component.html', 8 templateUrl: './admin.component.html',
diff --git a/client/src/app/+admin/config/config.routes.ts b/client/src/app/+admin/config/config.routes.ts
index 6d255ac46..96a4f3771 100644
--- a/client/src/app/+admin/config/config.routes.ts
+++ b/client/src/app/+admin/config/config.routes.ts
@@ -1,7 +1,7 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { EditCustomConfigComponent } from '@app/+admin/config/edit-custom-config' 2import { EditCustomConfigComponent } from '@app/+admin/config/edit-custom-config'
3import { UserRightGuard } from '@app/core' 3import { UserRightGuard } from '@app/core'
4import { UserRight } from '@shared/models' 4import { UserRight } from '@peertube/peertube-models'
5 5
6export const ConfigRoutes: Routes = [ 6export const ConfigRoutes: Routes = [
7 { 7 {
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
index 2122e67b2..953c7d540 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.ts
@@ -3,7 +3,7 @@ import { SelectOptionsItem } from 'src/types/select-options-item.model'
3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core' 3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'
4import { FormGroup } from '@angular/forms' 4import { FormGroup } from '@angular/forms'
5import { MenuService, ThemeService } from '@app/core' 5import { MenuService, ThemeService } from '@app/core'
6import { HTMLServerConfig } from '@shared/models' 6import { HTMLServerConfig } from '@peertube/peertube-models'
7import { ConfigService } from '../shared/config.service' 7import { ConfigService } from '../shared/config.service'
8 8
9@Component({ 9@Component({
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
index c3b85b196..54c076b74 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
@@ -27,7 +27,7 @@ import {
27import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@app/shared/form-validators/user-validators' 27import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@app/shared/form-validators/user-validators'
28import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 28import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
29import { CustomPageService } from '@app/shared/shared-main/custom-page' 29import { CustomPageService } from '@app/shared/shared-main/custom-page'
30import { CustomConfig, CustomPage, HTMLServerConfig } from '@shared/models' 30import { CustomConfig, CustomPage, HTMLServerConfig } from '@peertube/peertube-models'
31import { EditConfigurationService } from './edit-configuration.service' 31import { EditConfigurationService } from './edit-configuration.service'
32 32
33type ComponentCustomConfig = CustomConfig & { 33type ComponentCustomConfig = CustomConfig & {
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts
index 1d1fecf90..59629aa20 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-live-configuration.component.ts
@@ -2,7 +2,7 @@
2import { SelectOptionsItem } from 'src/types/select-options-item.model' 2import { SelectOptionsItem } from 'src/types/select-options-item.model'
3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core' 3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'
4import { FormGroup } from '@angular/forms' 4import { FormGroup } from '@angular/forms'
5import { HTMLServerConfig } from '@shared/models' 5import { HTMLServerConfig } from '@peertube/peertube-models'
6import { ConfigService } from '../shared/config.service' 6import { ConfigService } from '../shared/config.service'
7import { EditConfigurationService, ResolutionOption } from './edit-configuration.service' 7import { EditConfigurationService, ResolutionOption } from './edit-configuration.service'
8 8
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts
index 6496e8753..a2cd04396 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-vod-transcoding.component.ts
@@ -2,7 +2,7 @@
2import { SelectOptionsItem } from 'src/types/select-options-item.model' 2import { SelectOptionsItem } from 'src/types/select-options-item.model'
3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core' 3import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'
4import { FormGroup } from '@angular/forms' 4import { FormGroup } from '@angular/forms'
5import { HTMLServerConfig } from '@shared/models' 5import { HTMLServerConfig } from '@peertube/peertube-models'
6import { ConfigService } from '../shared/config.service' 6import { ConfigService } from '../shared/config.service'
7import { EditConfigurationService, ResolutionOption } from './edit-configuration.service' 7import { EditConfigurationService, ResolutionOption } from './edit-configuration.service'
8 8
diff --git a/client/src/app/+admin/config/shared/config.service.ts b/client/src/app/+admin/config/shared/config.service.ts
index 80f495b41..3c3894945 100644
--- a/client/src/app/+admin/config/shared/config.service.ts
+++ b/client/src/app/+admin/config/shared/config.service.ts
@@ -2,7 +2,7 @@ import { catchError } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor } from '@app/core' 4import { RestExtractor } from '@app/core'
5import { CustomConfig } from '@shared/models' 5import { CustomConfig } from '@peertube/peertube-models'
6import { SelectOptionsItem } from '../../../../types/select-options-item.model' 6import { SelectOptionsItem } from '../../../../types/select-options-item.model'
7import { environment } from '../../../../environments/environment' 7import { environment } from '../../../../environments/environment'
8 8
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.ts b/client/src/app/+admin/follows/followers-list/followers-list.component.ts
index 618892242..656a7bf87 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.ts
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.ts
@@ -5,7 +5,7 @@ import { formatICU } from '@app/helpers'
5import { AdvancedInputFilter } from '@app/shared/shared-forms' 5import { AdvancedInputFilter } from '@app/shared/shared-forms'
6import { InstanceFollowService } from '@app/shared/shared-instance' 6import { InstanceFollowService } from '@app/shared/shared-instance'
7import { DropdownAction } from '@app/shared/shared-main' 7import { DropdownAction } from '@app/shared/shared-main'
8import { ActorFollow } from '@shared/models' 8import { ActorFollow } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-followers-list', 11 selector: 'my-followers-list',
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.ts b/client/src/app/+admin/follows/following-list/following-list.component.ts
index 6c8723c16..da6647f6b 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.ts
+++ b/client/src/app/+admin/follows/following-list/following-list.component.ts
@@ -3,7 +3,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'
3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core' 3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core'
4import { AdvancedInputFilter } from '@app/shared/shared-forms' 4import { AdvancedInputFilter } from '@app/shared/shared-forms'
5import { InstanceFollowService } from '@app/shared/shared-instance' 5import { InstanceFollowService } from '@app/shared/shared-instance'
6import { ActorFollow } from '@shared/models' 6import { ActorFollow } from '@peertube/peertube-models'
7import { FollowModalComponent } from './follow-modal.component' 7import { FollowModalComponent } from './follow-modal.component'
8import { DropdownAction } from '@app/shared/shared-main' 8import { DropdownAction } from '@app/shared/shared-main'
9import { formatICU } from '@app/helpers' 9import { formatICU } from '@app/helpers'
diff --git a/client/src/app/+admin/follows/follows.routes.ts b/client/src/app/+admin/follows/follows.routes.ts
index 718493dc7..e187f83ea 100644
--- a/client/src/app/+admin/follows/follows.routes.ts
+++ b/client/src/app/+admin/follows/follows.routes.ts
@@ -1,7 +1,7 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { VideoRedundanciesListComponent } from '@app/+admin/follows/video-redundancies-list' 2import { VideoRedundanciesListComponent } from '@app/+admin/follows/video-redundancies-list'
3import { UserRightGuard } from '@app/core' 3import { UserRightGuard } from '@app/core'
4import { UserRight } from '@shared/models' 4import { UserRight } from '@peertube/peertube-models'
5import { FollowersListComponent } from './followers-list' 5import { FollowersListComponent } from './followers-list'
6import { FollowingListComponent } from './following-list/following-list.component' 6import { FollowingListComponent } from './following-list/following-list.component'
7 7
diff --git a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.ts b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.ts
index efcefd509..09fc038ce 100644
--- a/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.ts
+++ b/client/src/app/+admin/follows/video-redundancies-list/video-redundancies-list.component.ts
@@ -3,9 +3,8 @@ import { SortMeta } from 'primeng/api'
3import { Component, OnInit } from '@angular/core' 3import { Component, OnInit } from '@angular/core'
4import { ConfirmService, Notifier, RestPagination, RestTable, ServerService } from '@app/core' 4import { ConfirmService, Notifier, RestPagination, RestTable, ServerService } from '@app/core'
5import { BytesPipe, RedundancyService } from '@app/shared/shared-main' 5import { BytesPipe, RedundancyService } from '@app/shared/shared-main'
6import { VideoRedundanciesTarget, VideoRedundancy, VideosRedundancyStats } from '@peertube/peertube-models'
6import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' 7import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage'
7import { VideoRedundanciesTarget, VideoRedundancy } from '@shared/models'
8import { VideosRedundancyStats } from '@shared/models/server'
9 8
10@Component({ 9@Component({
11 selector: 'my-video-redundancies-list', 10 selector: 'my-video-redundancies-list',
diff --git a/client/src/app/+admin/follows/video-redundancies-list/video-redundancy-information.component.ts b/client/src/app/+admin/follows/video-redundancies-list/video-redundancy-information.component.ts
index 6f3090c08..779d19059 100644
--- a/client/src/app/+admin/follows/video-redundancies-list/video-redundancy-information.component.ts
+++ b/client/src/app/+admin/follows/video-redundancies-list/video-redundancy-information.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { FileRedundancyInformation, StreamingPlaylistRedundancyInformation } from '@shared/models' 2import { FileRedundancyInformation, StreamingPlaylistRedundancyInformation } from '@peertube/peertube-models'
3 3
4@Component({ 4@Component({
5 selector: 'my-video-redundancy-information', 5 selector: 'my-video-redundancy-information',
diff --git a/client/src/app/+admin/moderation/moderation.routes.ts b/client/src/app/+admin/moderation/moderation.routes.ts
index 378d2bed7..f0494de7b 100644
--- a/client/src/app/+admin/moderation/moderation.routes.ts
+++ b/client/src/app/+admin/moderation/moderation.routes.ts
@@ -3,7 +3,7 @@ import { AbuseListComponent } from '@app/+admin/moderation/abuse-list'
3import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist' 3import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist'
4import { VideoBlockListComponent } from '@app/+admin/moderation/video-block-list' 4import { VideoBlockListComponent } from '@app/+admin/moderation/video-block-list'
5import { UserRightGuard } from '@app/core' 5import { UserRightGuard } from '@app/core'
6import { UserRight } from '@shared/models' 6import { UserRight } from '@peertube/peertube-models'
7import { RegistrationListComponent } from './registration-list' 7import { RegistrationListComponent } from './registration-list'
8 8
9export const ModerationRoutes: Routes = [ 9export const ModerationRoutes: Routes = [
diff --git a/client/src/app/+admin/moderation/registration-list/admin-registration.service.ts b/client/src/app/+admin/moderation/registration-list/admin-registration.service.ts
index a9f13cf2f..f8ab04c71 100644
--- a/client/src/app/+admin/moderation/registration-list/admin-registration.service.ts
+++ b/client/src/app/+admin/moderation/registration-list/admin-registration.service.ts
@@ -4,8 +4,8 @@ import { catchError, concatMap, toArray } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { arrayify } from '@shared/core-utils' 7import { arrayify } from '@peertube/peertube-core-utils'
8import { ResultList, UserRegistration, UserRegistrationUpdateState } from '@shared/models' 8import { ResultList, UserRegistration, UserRegistrationUpdateState } from '@peertube/peertube-models'
9import { environment } from '../../../../environments/environment' 9import { environment } from '../../../../environments/environment'
10 10
11@Injectable() 11@Injectable()
diff --git a/client/src/app/+admin/moderation/registration-list/process-registration-modal.component.ts b/client/src/app/+admin/moderation/registration-list/process-registration-modal.component.ts
index 8f013cbd5..f8e346f50 100644
--- a/client/src/app/+admin/moderation/registration-list/process-registration-modal.component.ts
+++ b/client/src/app/+admin/moderation/registration-list/process-registration-modal.component.ts
@@ -3,7 +3,7 @@ import { Notifier, ServerService } from '@app/core'
3import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 3import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
4import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
5import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 5import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
6import { UserRegistration } from '@shared/models' 6import { UserRegistration } from '@peertube/peertube-models'
7import { AdminRegistrationService } from './admin-registration.service' 7import { AdminRegistrationService } from './admin-registration.service'
8import { REGISTRATION_MODERATION_RESPONSE_VALIDATOR } from './process-registration-validators' 8import { REGISTRATION_MODERATION_RESPONSE_VALIDATOR } from './process-registration-validators'
9 9
diff --git a/client/src/app/+admin/moderation/registration-list/registration-list.component.ts b/client/src/app/+admin/moderation/registration-list/registration-list.component.ts
index 35d9d13d7..1dc5e9077 100644
--- a/client/src/app/+admin/moderation/registration-list/registration-list.component.ts
+++ b/client/src/app/+admin/moderation/registration-list/registration-list.component.ts
@@ -5,7 +5,7 @@ import { ConfirmService, MarkdownService, Notifier, RestPagination, RestTable, S
5import { formatICU } from '@app/helpers' 5import { formatICU } from '@app/helpers'
6import { AdvancedInputFilter } from '@app/shared/shared-forms' 6import { AdvancedInputFilter } from '@app/shared/shared-forms'
7import { DropdownAction } from '@app/shared/shared-main' 7import { DropdownAction } from '@app/shared/shared-main'
8import { UserRegistration, UserRegistrationState } from '@shared/models' 8import { UserRegistration, UserRegistrationState } from '@peertube/peertube-models'
9import { AdminRegistrationService } from './admin-registration.service' 9import { AdminRegistrationService } from './admin-registration.service'
10import { ProcessRegistrationModalComponent } from './process-registration-modal.component' 10import { ProcessRegistrationModalComponent } from './process-registration-modal.component'
11 11
diff --git a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.ts b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.ts
index f365a2500..3c6bda16c 100644
--- a/client/src/app/+admin/moderation/video-block-list/video-block-list.component.ts
+++ b/client/src/app/+admin/moderation/video-block-list/video-block-list.component.ts
@@ -7,9 +7,9 @@ import { ConfirmService, MarkdownService, Notifier, RestPagination, RestTable, S
7import { AdvancedInputFilter } from '@app/shared/shared-forms' 7import { AdvancedInputFilter } from '@app/shared/shared-forms'
8import { DropdownAction, VideoService } from '@app/shared/shared-main' 8import { DropdownAction, VideoService } from '@app/shared/shared-main'
9import { VideoBlockService } from '@app/shared/shared-moderation' 9import { VideoBlockService } from '@app/shared/shared-moderation'
10import { buildVideoEmbedLink, decorateVideoLink } from '@peertube/peertube-core-utils'
11import { VideoBlacklist, VideoBlacklistType, VideoBlacklistType_Type } from '@peertube/peertube-models'
10import { buildVideoOrPlaylistEmbed } from '@root-helpers/video' 12import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
11import { buildVideoEmbedLink, decorateVideoLink } from '@shared/core-utils'
12import { VideoBlacklist, VideoBlacklistType } from '@shared/models'
13 13
14@Component({ 14@Component({
15 selector: 'my-video-block-list', 15 selector: 'my-video-block-list',
@@ -21,7 +21,7 @@ export class VideoBlockListComponent extends RestTable implements OnInit {
21 totalRecords = 0 21 totalRecords = 0
22 sort: SortMeta = { field: 'createdAt', order: -1 } 22 sort: SortMeta = { field: 'createdAt', order: -1 }
23 pagination: RestPagination = { count: this.rowsPerPage, start: 0 } 23 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
24 blocklistTypeFilter: VideoBlacklistType = undefined 24 blocklistTypeFilter: VideoBlacklistType_Type
25 25
26 videoBlocklistActions: DropdownAction<VideoBlacklist>[][] = [] 26 videoBlocklistActions: DropdownAction<VideoBlacklist>[][] = []
27 27
diff --git a/client/src/app/+admin/overview/comments/video-comment-list.component.ts b/client/src/app/+admin/overview/comments/video-comment-list.component.ts
index b77072665..254e76a60 100644
--- a/client/src/app/+admin/overview/comments/video-comment-list.component.ts
+++ b/client/src/app/+admin/overview/comments/video-comment-list.component.ts
@@ -6,7 +6,7 @@ import { AdvancedInputFilter } from '@app/shared/shared-forms'
6import { DropdownAction } from '@app/shared/shared-main' 6import { DropdownAction } from '@app/shared/shared-main'
7import { BulkService } from '@app/shared/shared-moderation' 7import { BulkService } from '@app/shared/shared-moderation'
8import { VideoCommentAdmin, VideoCommentService } from '@app/shared/shared-video-comment' 8import { VideoCommentAdmin, VideoCommentService } from '@app/shared/shared-video-comment'
9import { FeedFormat, UserRight } from '@shared/models' 9import { FeedFormat, UserRight } from '@peertube/peertube-models'
10import { formatICU } from '@app/helpers' 10import { formatICU } from '@app/helpers'
11 11
12@Component({ 12@Component({
diff --git a/client/src/app/+admin/overview/comments/video-comment.routes.ts b/client/src/app/+admin/overview/comments/video-comment.routes.ts
index f0bd440ad..f67027430 100644
--- a/client/src/app/+admin/overview/comments/video-comment.routes.ts
+++ b/client/src/app/+admin/overview/comments/video-comment.routes.ts
@@ -1,6 +1,6 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { UserRightGuard } from '@app/core' 2import { UserRightGuard } from '@app/core'
3import { UserRight } from '@shared/models' 3import { UserRight } from '@peertube/peertube-models'
4import { VideoCommentListComponent } from './video-comment-list.component' 4import { VideoCommentListComponent } from './video-comment-list.component'
5 5
6export const commentRoutes: Routes = [ 6export const commentRoutes: Routes = [
diff --git a/client/src/app/+admin/overview/users/user-edit/user-create.component.ts b/client/src/app/+admin/overview/users/user-edit/user-create.component.ts
index 0627aa887..77acb9988 100644
--- a/client/src/app/+admin/overview/users/user-edit/user-create.component.ts
+++ b/client/src/app/+admin/overview/users/user-edit/user-create.component.ts
@@ -14,7 +14,7 @@ import {
14} from '@app/shared/form-validators/user-validators' 14} from '@app/shared/form-validators/user-validators'
15import { FormReactiveService } from '@app/shared/shared-forms' 15import { FormReactiveService } from '@app/shared/shared-forms'
16import { UserAdminService } from '@app/shared/shared-users' 16import { UserAdminService } from '@app/shared/shared-users'
17import { UserCreate, UserRole } from '@shared/models' 17import { UserCreate, UserRole } from '@peertube/peertube-models'
18import { UserEdit } from './user-edit' 18import { UserEdit } from './user-edit'
19 19
20@Component({ 20@Component({
diff --git a/client/src/app/+admin/overview/users/user-edit/user-edit.ts b/client/src/app/+admin/overview/users/user-edit/user-edit.ts
index 9547da2d1..d61b7b068 100644
--- a/client/src/app/+admin/overview/users/user-edit/user-edit.ts
+++ b/client/src/app/+admin/overview/users/user-edit/user-edit.ts
@@ -2,9 +2,8 @@ import { Directive, OnInit } from '@angular/core'
2import { ConfigService } from '@app/+admin/config/shared/config.service' 2import { ConfigService } from '@app/+admin/config/shared/config.service'
3import { AuthService, ScreenService, ServerService, User } from '@app/core' 3import { AuthService, ScreenService, ServerService, User } from '@app/core'
4import { FormReactive } from '@app/shared/shared-forms' 4import { FormReactive } from '@app/shared/shared-forms'
5import { peertubeTranslate } from '@shared/core-utils' 5import { peertubeTranslate, USER_ROLE_LABELS } from '@peertube/peertube-core-utils'
6import { USER_ROLE_LABELS } from '@shared/core-utils/users' 6import { HTMLServerConfig, UserAdminFlag, UserRole } from '@peertube/peertube-models'
7import { HTMLServerConfig, UserAdminFlag, UserRole } from '@shared/models'
8import { SelectOptionsItem } from '../../../../../types/select-options-item.model' 7import { SelectOptionsItem } from '../../../../../types/select-options-item.model'
9 8
10@Directive() 9@Directive()
diff --git a/client/src/app/+admin/overview/users/user-edit/user-password.component.ts b/client/src/app/+admin/overview/users/user-edit/user-password.component.ts
index ec93619f5..af39c82af 100644
--- a/client/src/app/+admin/overview/users/user-edit/user-password.component.ts
+++ b/client/src/app/+admin/overview/users/user-edit/user-password.component.ts
@@ -3,7 +3,7 @@ import { Notifier } from '@app/core'
3import { USER_PASSWORD_VALIDATOR } from '@app/shared/form-validators/user-validators' 3import { USER_PASSWORD_VALIDATOR } from '@app/shared/form-validators/user-validators'
4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
5import { UserAdminService } from '@app/shared/shared-users' 5import { UserAdminService } from '@app/shared/shared-users'
6import { UserUpdate } from '@shared/models' 6import { UserUpdate } from '@peertube/peertube-models'
7 7
8@Component({ 8@Component({
9 selector: 'my-user-password', 9 selector: 'my-user-password',
diff --git a/client/src/app/+admin/overview/users/user-edit/user-update.component.ts b/client/src/app/+admin/overview/users/user-edit/user-update.component.ts
index 25d02f000..b55a519f3 100644
--- a/client/src/app/+admin/overview/users/user-edit/user-update.component.ts
+++ b/client/src/app/+admin/overview/users/user-edit/user-update.component.ts
@@ -11,7 +11,7 @@ import {
11} from '@app/shared/form-validators/user-validators' 11} from '@app/shared/form-validators/user-validators'
12import { FormReactiveService } from '@app/shared/shared-forms' 12import { FormReactiveService } from '@app/shared/shared-forms'
13import { TwoFactorService, UserAdminService } from '@app/shared/shared-users' 13import { TwoFactorService, UserAdminService } from '@app/shared/shared-users'
14import { User as UserType, UserAdminFlag, UserRole, UserUpdate } from '@shared/models' 14import { User as UserType, UserAdminFlag, UserRole, UserUpdate } from '@peertube/peertube-models'
15import { UserEdit } from './user-edit' 15import { UserEdit } from './user-edit'
16 16
17@Component({ 17@Component({
diff --git a/client/src/app/+admin/overview/users/user-list/user-list.component.ts b/client/src/app/+admin/overview/users/user-list/user-list.component.ts
index 5d5abf6f4..a5a1552da 100644
--- a/client/src/app/+admin/overview/users/user-list/user-list.component.ts
+++ b/client/src/app/+admin/overview/users/user-list/user-list.component.ts
@@ -7,8 +7,8 @@ import { AdvancedInputFilter } from '@app/shared/shared-forms'
7import { Actor, DropdownAction } from '@app/shared/shared-main' 7import { Actor, DropdownAction } from '@app/shared/shared-main'
8import { AccountMutedStatus, BlocklistService, UserBanModalComponent, UserModerationDisplayType } from '@app/shared/shared-moderation' 8import { AccountMutedStatus, BlocklistService, UserBanModalComponent, UserModerationDisplayType } from '@app/shared/shared-moderation'
9import { UserAdminService } from '@app/shared/shared-users' 9import { UserAdminService } from '@app/shared/shared-users'
10import { User, UserRole, UserRoleType } from '@peertube/peertube-models'
10import { logger } from '@root-helpers/logger' 11import { logger } from '@root-helpers/logger'
11import { User, UserRole } from '@shared/models'
12 12
13type UserForList = User & { 13type UserForList = User & {
14 rawVideoQuota: number 14 rawVideoQuota: number
@@ -166,7 +166,7 @@ export class UserListComponent extends RestTable <User> implements OnInit {
166 return 'UserListComponent' 166 return 'UserListComponent'
167 } 167 }
168 168
169 getRoleClass (role: UserRole) { 169 getRoleClass (role: UserRoleType) {
170 switch (role) { 170 switch (role) {
171 case UserRole.ADMINISTRATOR: 171 case UserRole.ADMINISTRATOR:
172 return 'badge-purple' 172 return 'badge-purple'
diff --git a/client/src/app/+admin/overview/users/users.routes.ts b/client/src/app/+admin/overview/users/users.routes.ts
index c9724e5fb..d66b8c762 100644
--- a/client/src/app/+admin/overview/users/users.routes.ts
+++ b/client/src/app/+admin/overview/users/users.routes.ts
@@ -1,6 +1,6 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { UserRightGuard } from '@app/core' 2import { UserRightGuard } from '@app/core'
3import { UserRight } from '@shared/models' 3import { UserRight } from '@peertube/peertube-models'
4import { UserCreateComponent, UserUpdateComponent } from './user-edit' 4import { UserCreateComponent, UserUpdateComponent } from './user-edit'
5import { UserListComponent } from './user-list' 5import { UserListComponent } from './user-list'
6 6
diff --git a/client/src/app/+admin/overview/videos/video-admin.service.ts b/client/src/app/+admin/overview/videos/video-admin.service.ts
index 722495706..9b33ed8e5 100644
--- a/client/src/app/+admin/overview/videos/video-admin.service.ts
+++ b/client/src/app/+admin/overview/videos/video-admin.service.ts
@@ -5,8 +5,8 @@ import { Injectable } from '@angular/core'
5import { RestExtractor, RestPagination, RestService } from '@app/core' 5import { RestExtractor, RestPagination, RestService } from '@app/core'
6import { AdvancedInputFilter } from '@app/shared/shared-forms' 6import { AdvancedInputFilter } from '@app/shared/shared-forms'
7import { CommonVideoParams, Video, VideoService } from '@app/shared/shared-main' 7import { CommonVideoParams, Video, VideoService } from '@app/shared/shared-main'
8import { ResultList, VideoInclude, VideoPrivacy } from '@shared/models' 8import { ResultList, VideoInclude, VideoPrivacy } from '@peertube/peertube-models'
9import { getAllPrivacies } from '@shared/core-utils' 9import { getAllPrivacies } from '@peertube/peertube-core-utils'
10 10
11@Injectable() 11@Injectable()
12export class VideoAdminService { 12export class VideoAdminService {
diff --git a/client/src/app/+admin/overview/videos/video-list.component.ts b/client/src/app/+admin/overview/videos/video-list.component.ts
index 2792a2d8a..2e12a2b31 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.ts
+++ b/client/src/app/+admin/overview/videos/video-list.component.ts
@@ -8,8 +8,8 @@ import { AdvancedInputFilter } from '@app/shared/shared-forms'
8import { DropdownAction, Video, VideoService } from '@app/shared/shared-main' 8import { DropdownAction, Video, VideoService } from '@app/shared/shared-main'
9import { VideoBlockComponent, VideoBlockService } from '@app/shared/shared-moderation' 9import { VideoBlockComponent, VideoBlockService } from '@app/shared/shared-moderation'
10import { VideoActionsDisplayType } from '@app/shared/shared-video-miniature' 10import { VideoActionsDisplayType } from '@app/shared/shared-video-miniature'
11import { getAllFiles } from '@shared/core-utils' 11import { getAllFiles } from '@peertube/peertube-core-utils'
12import { UserRight, VideoFile, VideoPrivacy, VideoState, VideoStreamingPlaylistType } from '@shared/models' 12import { UserRight, VideoFile, VideoPrivacy, VideoState, VideoStreamingPlaylistType } from '@peertube/peertube-models'
13import { VideoAdminService } from './video-admin.service' 13import { VideoAdminService } from './video-admin.service'
14 14
15@Component({ 15@Component({
diff --git a/client/src/app/+admin/overview/videos/video.routes.ts b/client/src/app/+admin/overview/videos/video.routes.ts
index 01cb5b497..dfffd2696 100644
--- a/client/src/app/+admin/overview/videos/video.routes.ts
+++ b/client/src/app/+admin/overview/videos/video.routes.ts
@@ -1,6 +1,6 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { UserRightGuard } from '@app/core' 2import { UserRightGuard } from '@app/core'
3import { UserRight } from '@shared/models' 3import { UserRight } from '@peertube/peertube-models'
4import { VideoListComponent } from './video-list.component' 4import { VideoListComponent } from './video-list.component'
5 5
6export const videosRoutes: Routes = [ 6export const videosRoutes: Routes = [
diff --git a/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts b/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts
index 3fa1c56dc..1b78a00cd 100644
--- a/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts
+++ b/client/src/app/+admin/plugins/plugin-list-installed/plugin-list-installed.component.ts
@@ -4,8 +4,8 @@ import { ActivatedRoute, Router } from '@angular/router'
4import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service' 4import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service'
5import { ComponentPagination, ConfirmService, hasMoreItems, Notifier } from '@app/core' 5import { ComponentPagination, ConfirmService, hasMoreItems, Notifier } from '@app/core'
6import { PluginService } from '@app/core/plugins/plugin.service' 6import { PluginService } from '@app/core/plugins/plugin.service'
7import { compareSemVer } from '@shared/core-utils' 7import { compareSemVer } from '@peertube/peertube-core-utils'
8import { PeerTubePlugin, PluginType } from '@shared/models' 8import { PeerTubePlugin, PluginType, PluginType_Type } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-plugin-list-installed', 11 selector: 'my-plugin-list-installed',
@@ -13,7 +13,7 @@ import { PeerTubePlugin, PluginType } from '@shared/models'
13 styleUrls: [ './plugin-list-installed.component.scss' ] 13 styleUrls: [ './plugin-list-installed.component.scss' ]
14}) 14})
15export class PluginListInstalledComponent implements OnInit { 15export class PluginListInstalledComponent implements OnInit {
16 pluginType: PluginType 16 pluginType: PluginType_Type
17 17
18 pagination: ComponentPagination = { 18 pagination: ComponentPagination = {
19 currentPage: 1, 19 currentPage: 1,
@@ -48,7 +48,7 @@ export class PluginListInstalledComponent implements OnInit {
48 this.route.queryParams.subscribe(query => { 48 this.route.queryParams.subscribe(query => {
49 if (!query['pluginType']) return 49 if (!query['pluginType']) return
50 50
51 this.pluginType = parseInt(query['pluginType'], 10) 51 this.pluginType = parseInt(query['pluginType'], 10) as PluginType_Type
52 52
53 this.reloadPlugins() 53 this.reloadPlugins()
54 }) 54 })
diff --git a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
index c03e37aa5..5539d1c13 100644
--- a/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
+++ b/client/src/app/+admin/plugins/plugin-search/plugin-search.component.ts
@@ -4,8 +4,8 @@ import { Component, OnInit } from '@angular/core'
4import { ActivatedRoute, Router } from '@angular/router' 4import { ActivatedRoute, Router } from '@angular/router'
5import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service' 5import { PluginApiService } from '@app/+admin/plugins/shared/plugin-api.service'
6import { ComponentPagination, ConfirmService, hasMoreItems, Notifier, PluginService } from '@app/core' 6import { ComponentPagination, ConfirmService, hasMoreItems, Notifier, PluginService } from '@app/core'
7import { PeerTubePluginIndex, PluginType, PluginType_Type } from '@peertube/peertube-models'
7import { logger } from '@root-helpers/logger' 8import { logger } from '@root-helpers/logger'
8import { PeerTubePluginIndex, PluginType } from '@shared/models'
9 9
10@Component({ 10@Component({
11 selector: 'my-plugin-search', 11 selector: 'my-plugin-search',
@@ -13,7 +13,7 @@ import { PeerTubePluginIndex, PluginType } from '@shared/models'
13 styleUrls: [ './plugin-search.component.scss' ] 13 styleUrls: [ './plugin-search.component.scss' ]
14}) 14})
15export class PluginSearchComponent implements OnInit { 15export class PluginSearchComponent implements OnInit {
16 pluginType: PluginType 16 pluginType: PluginType_Type
17 17
18 pagination: ComponentPagination = { 18 pagination: ComponentPagination = {
19 currentPage: 1, 19 currentPage: 1,
@@ -53,7 +53,7 @@ export class PluginSearchComponent implements OnInit {
53 this.route.queryParams.subscribe(query => { 53 this.route.queryParams.subscribe(query => {
54 if (!query['pluginType']) return 54 if (!query['pluginType']) return
55 55
56 this.pluginType = parseInt(query['pluginType'], 10) 56 this.pluginType = parseInt(query['pluginType'], 10) as PluginType_Type
57 this.search = query['search'] || '' 57 this.search = query['search'] || ''
58 58
59 this.reloadPlugins() 59 this.reloadPlugins()
diff --git a/client/src/app/+admin/plugins/plugin-show-installed/plugin-show-installed.component.ts b/client/src/app/+admin/plugins/plugin-show-installed/plugin-show-installed.component.ts
index b1a41567e..9eee1a901 100644
--- a/client/src/app/+admin/plugins/plugin-show-installed/plugin-show-installed.component.ts
+++ b/client/src/app/+admin/plugins/plugin-show-installed/plugin-show-installed.component.ts
@@ -5,7 +5,7 @@ import { ActivatedRoute } from '@angular/router'
5import { HooksService, Notifier, PluginService } from '@app/core' 5import { HooksService, Notifier, PluginService } from '@app/core'
6import { BuildFormArgument } from '@app/shared/form-validators' 6import { BuildFormArgument } from '@app/shared/form-validators'
7import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 7import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
8import { PeerTubePlugin, RegisterServerSettingOptions } from '@shared/models' 8import { PeerTubePlugin, RegisterServerSettingOptions } from '@peertube/peertube-models'
9import { PluginApiService } from '../shared/plugin-api.service' 9import { PluginApiService } from '../shared/plugin-api.service'
10 10
11@Component({ 11@Component({
diff --git a/client/src/app/+admin/plugins/plugins.routes.ts b/client/src/app/+admin/plugins/plugins.routes.ts
index f735a490b..40660f1f4 100644
--- a/client/src/app/+admin/plugins/plugins.routes.ts
+++ b/client/src/app/+admin/plugins/plugins.routes.ts
@@ -3,7 +3,7 @@ import { PluginListInstalledComponent } from '@app/+admin/plugins/plugin-list-in
3import { PluginSearchComponent } from '@app/+admin/plugins/plugin-search/plugin-search.component' 3import { PluginSearchComponent } from '@app/+admin/plugins/plugin-search/plugin-search.component'
4import { PluginShowInstalledComponent } from '@app/+admin/plugins/plugin-show-installed/plugin-show-installed.component' 4import { PluginShowInstalledComponent } from '@app/+admin/plugins/plugin-show-installed/plugin-show-installed.component'
5import { UserRightGuard } from '@app/core' 5import { UserRightGuard } from '@app/core'
6import { UserRight } from '@shared/models' 6import { UserRight } from '@peertube/peertube-models'
7 7
8export const PluginsRoutes: Routes = [ 8export const PluginsRoutes: Routes = [
9 { 9 {
diff --git a/client/src/app/+admin/plugins/shared/plugin-api.service.ts b/client/src/app/+admin/plugins/shared/plugin-api.service.ts
index fbfdaea18..e1bd2f125 100644
--- a/client/src/app/+admin/plugins/shared/plugin-api.service.ts
+++ b/client/src/app/+admin/plugins/shared/plugin-api.service.ts
@@ -9,9 +9,10 @@ import {
9 PeerTubePlugin, 9 PeerTubePlugin,
10 PeerTubePluginIndex, 10 PeerTubePluginIndex,
11 PluginType, 11 PluginType,
12 PluginType_Type,
12 RegisteredServerSettings, 13 RegisteredServerSettings,
13 ResultList 14 ResultList
14} from '@shared/models' 15} from '@peertube/peertube-models'
15import { environment } from '../../../../environments/environment' 16import { environment } from '../../../../environments/environment'
16 17
17@Injectable() 18@Injectable()
@@ -25,7 +26,7 @@ export class PluginApiService {
25 private pluginService: PluginService 26 private pluginService: PluginService
26 ) { } 27 ) { }
27 28
28 getPluginTypeLabel (type: PluginType) { 29 getPluginTypeLabel (type: PluginType_Type) {
29 if (type === PluginType.PLUGIN) { 30 if (type === PluginType.PLUGIN) {
30 return $localize`plugin` 31 return $localize`plugin`
31 } 32 }
@@ -34,7 +35,7 @@ export class PluginApiService {
34 } 35 }
35 36
36 getPlugins ( 37 getPlugins (
37 pluginType: PluginType, 38 pluginType: PluginType_Type,
38 componentPagination: ComponentPagination, 39 componentPagination: ComponentPagination,
39 sort: string 40 sort: string
40 ) { 41 ) {
@@ -49,7 +50,7 @@ export class PluginApiService {
49 } 50 }
50 51
51 searchAvailablePlugins ( 52 searchAvailablePlugins (
52 pluginType: PluginType, 53 pluginType: PluginType_Type,
53 componentPagination: ComponentPagination, 54 componentPagination: ComponentPagination,
54 sort: string, 55 sort: string,
55 search?: string 56 search?: string
@@ -73,7 +74,7 @@ export class PluginApiService {
73 .pipe(catchError(res => this.restExtractor.handleError(res))) 74 .pipe(catchError(res => this.restExtractor.handleError(res)))
74 } 75 }
75 76
76 getPluginRegisteredSettings (pluginName: string, pluginType: PluginType) { 77 getPluginRegisteredSettings (pluginName: string, pluginType: PluginType_Type) {
77 const npmName = this.pluginService.nameToNpmName(pluginName, pluginType) 78 const npmName = this.pluginService.nameToNpmName(pluginName, pluginType)
78 const path = PluginApiService.BASE_PLUGIN_URL + '/' + npmName + '/registered-settings' 79 const path = PluginApiService.BASE_PLUGIN_URL + '/' + npmName + '/registered-settings'
79 80
@@ -83,7 +84,7 @@ export class PluginApiService {
83 ) 84 )
84 } 85 }
85 86
86 updatePluginSettings (pluginName: string, pluginType: PluginType, settings: any) { 87 updatePluginSettings (pluginName: string, pluginType: PluginType_Type, settings: any) {
87 const npmName = this.pluginService.nameToNpmName(pluginName, pluginType) 88 const npmName = this.pluginService.nameToNpmName(pluginName, pluginType)
88 const path = PluginApiService.BASE_PLUGIN_URL + '/' + npmName + '/settings' 89 const path = PluginApiService.BASE_PLUGIN_URL + '/' + npmName + '/settings'
89 90
@@ -91,7 +92,7 @@ export class PluginApiService {
91 .pipe(catchError(res => this.restExtractor.handleError(res))) 92 .pipe(catchError(res => this.restExtractor.handleError(res)))
92 } 93 }
93 94
94 uninstall (pluginName: string, pluginType: PluginType) { 95 uninstall (pluginName: string, pluginType: PluginType_Type) {
95 const body: ManagePlugin = { 96 const body: ManagePlugin = {
96 npmName: this.pluginService.nameToNpmName(pluginName, pluginType) 97 npmName: this.pluginService.nameToNpmName(pluginName, pluginType)
97 } 98 }
@@ -100,7 +101,7 @@ export class PluginApiService {
100 .pipe(catchError(res => this.restExtractor.handleError(res))) 101 .pipe(catchError(res => this.restExtractor.handleError(res)))
101 } 102 }
102 103
103 update (pluginName: string, pluginType: PluginType) { 104 update (pluginName: string, pluginType: PluginType_Type) {
104 const body: ManagePlugin = { 105 const body: ManagePlugin = {
105 npmName: this.pluginService.nameToNpmName(pluginName, pluginType) 106 npmName: this.pluginService.nameToNpmName(pluginName, pluginType)
106 } 107 }
@@ -118,7 +119,7 @@ export class PluginApiService {
118 .pipe(catchError(res => this.restExtractor.handleError(res))) 119 .pipe(catchError(res => this.restExtractor.handleError(res)))
119 } 120 }
120 121
121 getPluginOrThemeHref (type: PluginType, name: string) { 122 getPluginOrThemeHref (type: PluginType_Type, name: string) {
122 const typeString = type === PluginType.PLUGIN 123 const typeString = type === PluginType.PLUGIN
123 ? 'plugin' 124 ? 'plugin'
124 : 'theme' 125 : 'theme'
diff --git a/client/src/app/+admin/plugins/shared/plugin-card.component.ts b/client/src/app/+admin/plugins/shared/plugin-card.component.ts
index 462a6c213..ae91f6887 100644
--- a/client/src/app/+admin/plugins/shared/plugin-card.component.ts
+++ b/client/src/app/+admin/plugins/shared/plugin-card.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { PeerTubePlugin, PeerTubePluginIndex, PluginType } from '@shared/models' 2import { PeerTubePlugin, PeerTubePluginIndex, PluginType_Type } from '@peertube/peertube-models'
3import { PluginApiService } from './plugin-api.service' 3import { PluginApiService } from './plugin-api.service'
4 4
5@Component({ 5@Component({
@@ -11,7 +11,7 @@ import { PluginApiService } from './plugin-api.service'
11export class PluginCardComponent { 11export class PluginCardComponent {
12 @Input() plugin: PeerTubePluginIndex | PeerTubePlugin 12 @Input() plugin: PeerTubePluginIndex | PeerTubePlugin
13 @Input() version: string 13 @Input() version: string
14 @Input() pluginType: PluginType 14 @Input() pluginType: PluginType_Type
15 15
16 constructor ( 16 constructor (
17 private pluginApiService: PluginApiService 17 private pluginApiService: PluginApiService
diff --git a/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts b/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts
index 1c963f521..c829bc975 100644
--- a/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts
+++ b/client/src/app/+admin/plugins/shared/plugin-navigation.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { PluginType } from '@shared/models/plugins' 2import { PluginType_Type } from '@peertube/peertube-models'
3 3
4@Component({ 4@Component({
5 selector: 'my-plugin-navigation', 5 selector: 'my-plugin-navigation',
@@ -7,5 +7,5 @@ import { PluginType } from '@shared/models/plugins'
7 styleUrls: [ './plugin-navigation.component.scss' ] 7 styleUrls: [ './plugin-navigation.component.scss' ]
8}) 8})
9export class PluginNavigationComponent { 9export class PluginNavigationComponent {
10 @Input() pluginType: PluginType 10 @Input() pluginType: PluginType_Type
11} 11}
diff --git a/client/src/app/+admin/shared/user-email-info.component.ts b/client/src/app/+admin/shared/user-email-info.component.ts
index e33948b60..0af905c84 100644
--- a/client/src/app/+admin/shared/user-email-info.component.ts
+++ b/client/src/app/+admin/shared/user-email-info.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { User, UserRegistration } from '@shared/models/users' 2import { User, UserRegistration } from '@peertube/peertube-models'
3 3
4@Component({ 4@Component({
5 selector: 'my-user-email-info', 5 selector: 'my-user-email-info',
diff --git a/client/src/app/+admin/shared/user-real-quota-info.component.ts b/client/src/app/+admin/shared/user-real-quota-info.component.ts
index 0a342c799..dd78fa9f0 100644
--- a/client/src/app/+admin/shared/user-real-quota-info.component.ts
+++ b/client/src/app/+admin/shared/user-real-quota-info.component.ts
@@ -1,6 +1,6 @@
1import { Component, Input, OnInit } from '@angular/core' 1import { Component, Input, OnInit } from '@angular/core'
2import { ServerService } from '@app/core' 2import { ServerService } from '@app/core'
3import { HTMLServerConfig, VideoResolution } from '@shared/models/index' 3import { HTMLServerConfig, VideoResolution } from '@peertube/peertube-models'
4 4
5@Component({ 5@Component({
6 selector: 'my-user-real-quota-info', 6 selector: 'my-user-real-quota-info',
diff --git a/client/src/app/+admin/system/debug/debug.component.ts b/client/src/app/+admin/system/debug/debug.component.ts
index 1f4e71e8a..5c86803ef 100644
--- a/client/src/app/+admin/system/debug/debug.component.ts
+++ b/client/src/app/+admin/system/debug/debug.component.ts
@@ -1,6 +1,6 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { Notifier } from '@app/core' 2import { Notifier } from '@app/core'
3import { Debug } from '@shared/models' 3import { Debug } from '@peertube/peertube-models'
4import { DebugService } from './debug.service' 4import { DebugService } from './debug.service'
5 5
6@Component({ 6@Component({
diff --git a/client/src/app/+admin/system/debug/debug.service.ts b/client/src/app/+admin/system/debug/debug.service.ts
index ab1d0a7fa..24d3b2ab8 100644
--- a/client/src/app/+admin/system/debug/debug.service.ts
+++ b/client/src/app/+admin/system/debug/debug.service.ts
@@ -3,7 +3,7 @@ import { catchError } from 'rxjs/operators'
3import { HttpClient } from '@angular/common/http' 3import { HttpClient } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { RestExtractor } from '@app/core' 5import { RestExtractor } from '@app/core'
6import { Debug } from '@shared/models' 6import { Debug } from '@peertube/peertube-models'
7import { environment } from '../../../../environments/environment' 7import { environment } from '../../../../environments/environment'
8 8
9@Injectable() 9@Injectable()
diff --git a/client/src/app/+admin/system/jobs/job.service.ts b/client/src/app/+admin/system/jobs/job.service.ts
index 031e2bad8..eae1dea7d 100644
--- a/client/src/app/+admin/system/jobs/job.service.ts
+++ b/client/src/app/+admin/system/jobs/job.service.ts
@@ -4,7 +4,7 @@ import { catchError, map } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { Job, ResultList } from '@shared/models' 7import { Job, ResultList } from '@peertube/peertube-models'
8import { environment } from '../../../../environments/environment' 8import { environment } from '../../../../environments/environment'
9import { JobStateClient } from '../../../../types/job-state-client.type' 9import { JobStateClient } from '../../../../types/job-state-client.type'
10import { JobTypeClient } from '../../../../types/job-type-client.type' 10import { JobTypeClient } from '../../../../types/job-type-client.type'
diff --git a/client/src/app/+admin/system/jobs/jobs.component.ts b/client/src/app/+admin/system/jobs/jobs.component.ts
index 6e10c81ff..4e6b4bf7b 100644
--- a/client/src/app/+admin/system/jobs/jobs.component.ts
+++ b/client/src/app/+admin/system/jobs/jobs.component.ts
@@ -1,9 +1,9 @@
1import { SortMeta } from 'primeng/api' 1import { SortMeta } from 'primeng/api'
2import { Component, OnInit } from '@angular/core' 2import { Component, OnInit } from '@angular/core'
3import { Notifier, RestPagination, RestTable } from '@app/core' 3import { Notifier, RestPagination, RestTable } from '@app/core'
4import { escapeHTML } from '@peertube/peertube-core-utils'
5import { Job, JobState, JobType } from '@peertube/peertube-models'
4import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' 6import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage'
5import { escapeHTML } from '@shared/core-utils/renderer'
6import { Job, JobState, JobType } from '@shared/models'
7import { JobStateClient } from '../../../../types/job-state-client.type' 7import { JobStateClient } from '../../../../types/job-state-client.type'
8import { JobTypeClient } from '../../../../types/job-type-client.type' 8import { JobTypeClient } from '../../../../types/job-type-client.type'
9import { JobService } from './job.service' 9import { JobService } from './job.service'
diff --git a/client/src/app/+admin/system/logs/log-row.model.ts b/client/src/app/+admin/system/logs/log-row.model.ts
index e83c7b064..15799e8b0 100644
--- a/client/src/app/+admin/system/logs/log-row.model.ts
+++ b/client/src/app/+admin/system/logs/log-row.model.ts
@@ -1,6 +1,6 @@
1import omit from 'lodash-es/omit' 1import omit from 'lodash-es/omit'
2import { logger } from '@root-helpers/logger' 2import { logger } from '@root-helpers/logger'
3import { ServerLogLevel } from '@shared/models' 3import { ServerLogLevel } from '@peertube/peertube-models'
4 4
5export class LogRow { 5export class LogRow {
6 date: Date 6 date: Date
diff --git a/client/src/app/+admin/system/logs/logs.component.ts b/client/src/app/+admin/system/logs/logs.component.ts
index 939e710d7..22375fcd9 100644
--- a/client/src/app/+admin/system/logs/logs.component.ts
+++ b/client/src/app/+admin/system/logs/logs.component.ts
@@ -1,6 +1,6 @@
1import { Component, ElementRef, OnInit, ViewChild } from '@angular/core' 1import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'
2import { LocalStorageService, Notifier } from '@app/core' 2import { LocalStorageService, Notifier } from '@app/core'
3import { ServerLogLevel } from '@shared/models' 3import { ServerLogLevel } from '@peertube/peertube-models'
4import { LogRow } from './log-row.model' 4import { LogRow } from './log-row.model'
5import { LogsService } from './logs.service' 5import { LogsService } from './logs.service'
6 6
diff --git a/client/src/app/+admin/system/logs/logs.service.ts b/client/src/app/+admin/system/logs/logs.service.ts
index 933a074a8..9e774d7fd 100644
--- a/client/src/app/+admin/system/logs/logs.service.ts
+++ b/client/src/app/+admin/system/logs/logs.service.ts
@@ -3,7 +3,7 @@ import { catchError, map } from 'rxjs/operators'
3import { HttpClient, HttpParams } from '@angular/common/http' 3import { HttpClient, HttpParams } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { RestExtractor, RestService } from '@app/core' 5import { RestExtractor, RestService } from '@app/core'
6import { ServerLogLevel } from '@shared/models' 6import { ServerLogLevel } from '@peertube/peertube-models'
7import { environment } from '../../../../environments/environment' 7import { environment } from '../../../../environments/environment'
8import { LogRow } from './log-row.model' 8import { LogRow } from './log-row.model'
9 9
diff --git a/client/src/app/+admin/system/runners/runner-job-list/runner-job-list.component.ts b/client/src/app/+admin/system/runners/runner-job-list/runner-job-list.component.ts
index 2670eac86..e75446d8c 100644
--- a/client/src/app/+admin/system/runners/runner-job-list/runner-job-list.component.ts
+++ b/client/src/app/+admin/system/runners/runner-job-list/runner-job-list.component.ts
@@ -3,7 +3,7 @@ import { Component, OnInit } from '@angular/core'
3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core' 3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core'
4import { formatICU } from '@app/helpers' 4import { formatICU } from '@app/helpers'
5import { DropdownAction } from '@app/shared/shared-main' 5import { DropdownAction } from '@app/shared/shared-main'
6import { RunnerJob, RunnerJobState } from '@shared/models' 6import { RunnerJob, RunnerJobState } from '@peertube/peertube-models'
7import { RunnerJobFormatted, RunnerService } from '../runner.service' 7import { RunnerJobFormatted, RunnerService } from '../runner.service'
8import { AdvancedInputFilter } from '@app/shared/shared-forms' 8import { AdvancedInputFilter } from '@app/shared/shared-forms'
9 9
diff --git a/client/src/app/+admin/system/runners/runner-list/runner-list.component.ts b/client/src/app/+admin/system/runners/runner-list/runner-list.component.ts
index 7566f967e..0964471f9 100644
--- a/client/src/app/+admin/system/runners/runner-list/runner-list.component.ts
+++ b/client/src/app/+admin/system/runners/runner-list/runner-list.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Component, OnInit } from '@angular/core' 2import { Component, OnInit } from '@angular/core'
3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core' 3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core'
4import { DropdownAction } from '@app/shared/shared-main' 4import { DropdownAction } from '@app/shared/shared-main'
5import { Runner } from '@shared/models' 5import { Runner } from '@peertube/peertube-models'
6import { RunnerService } from '../runner.service' 6import { RunnerService } from '../runner.service'
7 7
8@Component({ 8@Component({
diff --git a/client/src/app/+admin/system/runners/runner-registration-token-list/runner-registration-token-list.component.ts b/client/src/app/+admin/system/runners/runner-registration-token-list/runner-registration-token-list.component.ts
index 77908a2e1..c8a597b18 100644
--- a/client/src/app/+admin/system/runners/runner-registration-token-list/runner-registration-token-list.component.ts
+++ b/client/src/app/+admin/system/runners/runner-registration-token-list/runner-registration-token-list.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Component, OnInit } from '@angular/core' 2import { Component, OnInit } from '@angular/core'
3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core' 3import { ConfirmService, Notifier, RestPagination, RestTable } from '@app/core'
4import { DropdownAction } from '@app/shared/shared-main' 4import { DropdownAction } from '@app/shared/shared-main'
5import { RunnerRegistrationToken } from '@shared/models' 5import { RunnerRegistrationToken } from '@peertube/peertube-models'
6import { RunnerService } from '../runner.service' 6import { RunnerService } from '../runner.service'
7 7
8@Component({ 8@Component({
diff --git a/client/src/app/+admin/system/runners/runner.service.ts b/client/src/app/+admin/system/runners/runner.service.ts
index 3ab36c4ff..94bdaad78 100644
--- a/client/src/app/+admin/system/runners/runner.service.ts
+++ b/client/src/app/+admin/system/runners/runner.service.ts
@@ -4,9 +4,8 @@ import { catchError, concatMap, forkJoin, from, map, toArray } from 'rxjs'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService, ServerService } from '@app/core' 6import { RestExtractor, RestPagination, RestService, ServerService } from '@app/core'
7import { arrayify, peertubeTranslate } from '@shared/core-utils' 7import { arrayify, peertubeTranslate } from '@peertube/peertube-core-utils'
8import { ResultList } from '@shared/models/common' 8import { ResultList, Runner, RunnerJob, RunnerJobAdmin, RunnerJobState, RunnerRegistrationToken } from '@peertube/peertube-models'
9import { Runner, RunnerJob, RunnerJobAdmin, RunnerJobState, RunnerRegistrationToken } from '@shared/models/runners'
10import { environment } from '../../../../environments/environment' 9import { environment } from '../../../../environments/environment'
11 10
12export type RunnerJobFormatted = RunnerJob & { 11export type RunnerJobFormatted = RunnerJob & {
diff --git a/client/src/app/+admin/system/runners/runners.routes.ts b/client/src/app/+admin/system/runners/runners.routes.ts
index fabe687d6..004c3bedd 100644
--- a/client/src/app/+admin/system/runners/runners.routes.ts
+++ b/client/src/app/+admin/system/runners/runners.routes.ts
@@ -1,6 +1,6 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { UserRightGuard } from '@app/core' 2import { UserRightGuard } from '@app/core'
3import { UserRight } from '@shared/models' 3import { UserRight } from '@peertube/peertube-models'
4import { RunnerJobListComponent } from './runner-job-list' 4import { RunnerJobListComponent } from './runner-job-list'
5import { RunnerListComponent } from './runner-list' 5import { RunnerListComponent } from './runner-list'
6import { RunnerRegistrationTokenListComponent } from './runner-registration-token-list' 6import { RunnerRegistrationTokenListComponent } from './runner-registration-token-list'
diff --git a/client/src/app/+admin/system/system.routes.ts b/client/src/app/+admin/system/system.routes.ts
index 87e4b25b3..169d52952 100644
--- a/client/src/app/+admin/system/system.routes.ts
+++ b/client/src/app/+admin/system/system.routes.ts
@@ -1,6 +1,6 @@
1import { Routes } from '@angular/router' 1import { Routes } from '@angular/router'
2import { UserRightGuard } from '@app/core' 2import { UserRightGuard } from '@app/core'
3import { UserRight } from '@shared/models' 3import { UserRight } from '@peertube/peertube-models'
4import { DebugComponent } from './debug' 4import { DebugComponent } from './debug'
5import { JobsComponent } from './jobs/jobs.component' 5import { JobsComponent } from './jobs/jobs.component'
6import { LogsComponent } from './logs' 6import { LogsComponent } from './logs'
diff --git a/client/src/app/+error-page/error-page.component.ts b/client/src/app/+error-page/error-page.component.ts
index 4fee01350..9cc4646df 100644
--- a/client/src/app/+error-page/error-page.component.ts
+++ b/client/src/app/+error-page/error-page.component.ts
@@ -1,7 +1,7 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { Title } from '@angular/platform-browser' 2import { Title } from '@angular/platform-browser'
3import { Router } from '@angular/router' 3import { Router } from '@angular/router'
4import { HttpStatusCode } from '@shared/models' 4import { HttpStatusCode, HttpStatusCodeType } from '@peertube/peertube-models'
5 5
6@Component({ 6@Component({
7 selector: 'my-error-page', 7 selector: 'my-error-page',
@@ -9,7 +9,7 @@ import { HttpStatusCode } from '@shared/models'
9 styleUrls: [ './error-page.component.scss' ] 9 styleUrls: [ './error-page.component.scss' ]
10}) 10})
11export class ErrorPageComponent implements OnInit { 11export class ErrorPageComponent implements OnInit {
12 status = HttpStatusCode.NOT_FOUND_404 12 status: HttpStatusCodeType = HttpStatusCode.NOT_FOUND_404
13 type: 'video' | 'other' = 'other' 13 type: 'video' | 'other' = 'other'
14 14
15 public constructor ( 15 public constructor (
diff --git a/client/src/app/+login/login.component.ts b/client/src/app/+login/login.component.ts
index e486df61d..a6906efa2 100644
--- a/client/src/app/+login/login.component.ts
+++ b/client/src/app/+login/login.component.ts
@@ -8,8 +8,8 @@ import { USER_OTP_TOKEN_VALIDATOR } from '@app/shared/form-validators/user-valid
8import { FormReactive, FormReactiveService, InputTextComponent } from '@app/shared/shared-forms' 8import { FormReactive, FormReactiveService, InputTextComponent } from '@app/shared/shared-forms'
9import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' 9import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance'
10import { NgbAccordionDirective, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' 10import { NgbAccordionDirective, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'
11import { getExternalAuthHref } from '@shared/core-utils' 11import { getExternalAuthHref } from '@peertube/peertube-core-utils'
12import { RegisteredExternalAuthConfig, ServerConfig, ServerErrorCode } from '@shared/models' 12import { RegisteredExternalAuthConfig, ServerConfig, ServerErrorCode } from '@peertube/peertube-models'
13 13
14@Component({ 14@Component({
15 selector: 'my-login', 15 selector: 'my-login',
diff --git a/client/src/app/+manage/video-channel-edit/video-channel-create.component.ts b/client/src/app/+manage/video-channel-edit/video-channel-create.component.ts
index 8ca94b0b3..3f876078f 100644
--- a/client/src/app/+manage/video-channel-edit/video-channel-create.component.ts
+++ b/client/src/app/+manage/video-channel-edit/video-channel-create.component.ts
@@ -11,7 +11,7 @@ import {
11} from '@app/shared/form-validators/video-channel-validators' 11} from '@app/shared/form-validators/video-channel-validators'
12import { FormReactiveService } from '@app/shared/shared-forms' 12import { FormReactiveService } from '@app/shared/shared-forms'
13import { VideoChannel, VideoChannelService } from '@app/shared/shared-main' 13import { VideoChannel, VideoChannelService } from '@app/shared/shared-main'
14import { HttpStatusCode, VideoChannelCreate } from '@shared/models' 14import { HttpStatusCode, VideoChannelCreate } from '@peertube/peertube-models'
15import { VideoChannelEdit } from './video-channel-edit' 15import { VideoChannelEdit } from './video-channel-edit'
16 16
17@Component({ 17@Component({
diff --git a/client/src/app/+manage/video-channel-edit/video-channel-update.component.ts b/client/src/app/+manage/video-channel-edit/video-channel-update.component.ts
index f9045db35..3992e298e 100644
--- a/client/src/app/+manage/video-channel-edit/video-channel-update.component.ts
+++ b/client/src/app/+manage/video-channel-edit/video-channel-update.component.ts
@@ -11,9 +11,9 @@ import {
11} from '@app/shared/form-validators/video-channel-validators' 11} from '@app/shared/form-validators/video-channel-validators'
12import { FormReactiveService } from '@app/shared/shared-forms' 12import { FormReactiveService } from '@app/shared/shared-forms'
13import { VideoChannel, VideoChannelService } from '@app/shared/shared-main' 13import { VideoChannel, VideoChannelService } from '@app/shared/shared-main'
14import { HTMLServerConfig, VideoChannelUpdate } from '@shared/models' 14import { HTMLServerConfig, VideoChannelUpdate } from '@peertube/peertube-models'
15import { VideoChannelEdit } from './video-channel-edit' 15import { VideoChannelEdit } from './video-channel-edit'
16import { shallowCopy } from '@shared/core-utils' 16import { shallowCopy } from '@peertube/peertube-core-utils'
17 17
18@Component({ 18@Component({
19 selector: 'my-video-channel-update', 19 selector: 'my-video-channel-update',
diff --git a/client/src/app/+my-account/my-account-applications/my-account-applications.component.ts b/client/src/app/+my-account/my-account-applications/my-account-applications.component.ts
index e88cdd228..281a12eda 100644
--- a/client/src/app/+my-account/my-account-applications/my-account-applications.component.ts
+++ b/client/src/app/+my-account/my-account-applications/my-account-applications.component.ts
@@ -1,8 +1,7 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { AuthService, ConfirmService, Notifier, ScopedTokensService } from '@app/core' 2import { AuthService, ConfirmService, Notifier, ScopedTokensService } from '@app/core'
3import { VideoService } from '@app/shared/shared-main' 3import { VideoService } from '@app/shared/shared-main'
4import { FeedFormat } from '@shared/models' 4import { FeedFormat, ScopedToken } from '@peertube/peertube-models'
5import { ScopedToken } from '@shared/models/users/user-scoped-token'
6import { environment } from '../../../environments/environment' 5import { environment } from '../../../environments/environment'
7 6
8@Component({ 7@Component({
diff --git a/client/src/app/+my-account/my-account-settings/my-account-change-email/my-account-change-email.component.ts b/client/src/app/+my-account/my-account-settings/my-account-change-email/my-account-change-email.component.ts
index 1e8fa2a56..7bbd240d0 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-change-email/my-account-change-email.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-change-email/my-account-change-email.component.ts
@@ -4,7 +4,7 @@ import { Component, OnInit } from '@angular/core'
4import { AuthService, Notifier, ServerService, UserService } from '@app/core' 4import { AuthService, Notifier, ServerService, UserService } from '@app/core'
5import { USER_EMAIL_VALIDATOR, USER_PASSWORD_VALIDATOR } from '@app/shared/form-validators/user-validators' 5import { USER_EMAIL_VALIDATOR, USER_PASSWORD_VALIDATOR } from '@app/shared/form-validators/user-validators'
6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
7import { HttpStatusCode, User } from '@shared/models' 7import { HttpStatusCode, User } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 selector: 'my-account-change-email', 10 selector: 'my-account-change-email',
diff --git a/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts b/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts
index 805d50070..f916740be 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-change-password/my-account-change-password.component.ts
@@ -7,7 +7,7 @@ import {
7 USER_PASSWORD_VALIDATOR 7 USER_PASSWORD_VALIDATOR
8} from '@app/shared/form-validators/user-validators' 8} from '@app/shared/form-validators/user-validators'
9import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 9import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
10import { HttpStatusCode, User } from '@shared/models' 10import { HttpStatusCode, User } from '@peertube/peertube-models'
11 11
12@Component({ 12@Component({
13 selector: 'my-account-change-password', 13 selector: 'my-account-change-password',
diff --git a/client/src/app/+my-account/my-account-settings/my-account-email-preferences/my-account-email-preferences.component.ts b/client/src/app/+my-account/my-account-settings/my-account-email-preferences/my-account-email-preferences.component.ts
index 381d18922..bf6accc3e 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-email-preferences/my-account-email-preferences.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-email-preferences/my-account-email-preferences.component.ts
@@ -2,7 +2,7 @@ import { Subject } from 'rxjs'
2import { Component, Input, OnInit } from '@angular/core' 2import { Component, Input, OnInit } from '@angular/core'
3import { Notifier, UserService } from '@app/core' 3import { Notifier, UserService } from '@app/core'
4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
5import { User, UserUpdateMe } from '@shared/models' 5import { User, UserUpdateMe } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 selector: 'my-account-email-preferences', 8 selector: 'my-account-email-preferences',
diff --git a/client/src/app/+my-account/my-account-settings/my-account-notification-preferences/my-account-notification-preferences.component.ts b/client/src/app/+my-account/my-account-settings/my-account-notification-preferences/my-account-notification-preferences.component.ts
index 2adc276a9..f4181340d 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-notification-preferences/my-account-notification-preferences.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-notification-preferences/my-account-notification-preferences.component.ts
@@ -3,8 +3,8 @@ import { Subject } from 'rxjs'
3import { Component, Input, OnInit } from '@angular/core' 3import { Component, Input, OnInit } from '@angular/core'
4import { Notifier, ServerService, User } from '@app/core' 4import { Notifier, ServerService, User } from '@app/core'
5import { UserNotificationService } from '@app/shared/shared-main' 5import { UserNotificationService } from '@app/shared/shared-main'
6import { objectKeysTyped } from '@shared/core-utils' 6import { objectKeysTyped } from '@peertube/peertube-core-utils'
7import { UserNotificationSetting, UserNotificationSettingValue, UserRight } from '@shared/models' 7import { UserNotificationSetting, UserNotificationSettingValue, UserRight, UserRightType } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 selector: 'my-account-notification-preferences', 10 selector: 'my-account-notification-preferences',
@@ -19,7 +19,7 @@ export class MyAccountNotificationPreferencesComponent implements OnInit {
19 emailNotifications: { [ id in keyof UserNotificationSetting ]?: boolean } = {} 19 emailNotifications: { [ id in keyof UserNotificationSetting ]?: boolean } = {}
20 webNotifications: { [ id in keyof UserNotificationSetting ]?: boolean } = {} 20 webNotifications: { [ id in keyof UserNotificationSetting ]?: boolean } = {}
21 labelNotifications: { [ id in keyof UserNotificationSetting ]?: string } = {} 21 labelNotifications: { [ id in keyof UserNotificationSetting ]?: string } = {}
22 rightNotifications: { [ id in keyof Partial<UserNotificationSetting> ]?: UserRight } = {} 22 rightNotifications: { [ id in keyof Partial<UserNotificationSetting> ]?: UserRightType } = {}
23 emailEnabled = false 23 emailEnabled = false
24 24
25 private savePreferences = debounce(this.savePreferencesImpl.bind(this), 500) 25 private savePreferences = debounce(this.savePreferencesImpl.bind(this), 500)
diff --git a/client/src/app/+my-account/my-account-settings/my-account-settings.component.ts b/client/src/app/+my-account/my-account-settings/my-account-settings.component.ts
index a276bb126..4b3b33bcc 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-settings.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-settings.component.ts
@@ -3,7 +3,7 @@ import { HttpErrorResponse } from '@angular/common/http'
3import { AfterViewChecked, Component, OnInit } from '@angular/core' 3import { AfterViewChecked, Component, OnInit } from '@angular/core'
4import { AuthService, Notifier, User, UserService } from '@app/core' 4import { AuthService, Notifier, User, UserService } from '@app/core'
5import { genericUploadErrorHandler } from '@app/helpers' 5import { genericUploadErrorHandler } from '@app/helpers'
6import { shallowCopy } from '@shared/core-utils' 6import { shallowCopy } from '@peertube/peertube-core-utils'
7 7
8@Component({ 8@Component({
9 selector: 'my-account-settings', 9 selector: 'my-account-settings',
diff --git a/client/src/app/+my-library/my-follows/my-followers.component.ts b/client/src/app/+my-library/my-follows/my-followers.component.ts
index 0dd9bf6f5..4e3e5bcc4 100644
--- a/client/src/app/+my-library/my-follows/my-followers.component.ts
+++ b/client/src/app/+my-library/my-follows/my-followers.component.ts
@@ -4,7 +4,7 @@ import { ActivatedRoute } from '@angular/router'
4import { AuthService, ComponentPagination, Notifier } from '@app/core' 4import { AuthService, ComponentPagination, Notifier } from '@app/core'
5import { AdvancedInputFilter } from '@app/shared/shared-forms' 5import { AdvancedInputFilter } from '@app/shared/shared-forms'
6import { UserSubscriptionService } from '@app/shared/shared-user-subscription' 6import { UserSubscriptionService } from '@app/shared/shared-user-subscription'
7import { ActorFollow } from '@shared/models' 7import { ActorFollow } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 templateUrl: './my-followers.component.html', 10 templateUrl: './my-followers.component.html',
diff --git a/client/src/app/+my-library/my-library.component.ts b/client/src/app/+my-library/my-library.component.ts
index ff901952f..35eb617ab 100644
--- a/client/src/app/+my-library/my-library.component.ts
+++ b/client/src/app/+my-library/my-library.component.ts
@@ -1,6 +1,6 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { AuthService, AuthUser, ScreenService, ServerService } from '@app/core' 2import { AuthService, AuthUser, ScreenService, ServerService } from '@app/core'
3import { HTMLServerConfig } from '@shared/models' 3import { HTMLServerConfig } from '@peertube/peertube-models'
4import { TopMenuDropdownParam } from '../shared/shared-main/misc/top-menu-dropdown.component' 4import { TopMenuDropdownParam } from '../shared/shared-main/misc/top-menu-dropdown.component'
5 5
6@Component({ 6@Component({
diff --git a/client/src/app/+my-library/my-ownership/my-accept-ownership/my-accept-ownership.component.ts b/client/src/app/+my-library/my-ownership/my-accept-ownership/my-accept-ownership.component.ts
index ca7eb680b..87e389411 100644
--- a/client/src/app/+my-library/my-ownership/my-accept-ownership/my-accept-ownership.component.ts
+++ b/client/src/app/+my-library/my-ownership/my-accept-ownership/my-accept-ownership.component.ts
@@ -6,7 +6,7 @@ import { OWNERSHIP_CHANGE_CHANNEL_VALIDATOR } from '@app/shared/form-validators/
6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
7import { VideoOwnershipService } from '@app/shared/shared-main' 7import { VideoOwnershipService } from '@app/shared/shared-main'
8import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 8import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
9import { VideoChangeOwnership } from '@shared/models' 9import { VideoChangeOwnership } from '@peertube/peertube-models'
10 10
11@Component({ 11@Component({
12 selector: 'my-accept-ownership', 12 selector: 'my-accept-ownership',
diff --git a/client/src/app/+my-library/my-ownership/my-ownership.component.ts b/client/src/app/+my-library/my-ownership/my-ownership.component.ts
index 8d6a42dfb..4838eca27 100644
--- a/client/src/app/+my-library/my-ownership/my-ownership.component.ts
+++ b/client/src/app/+my-library/my-ownership/my-ownership.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Component, OnInit, ViewChild } from '@angular/core' 2import { Component, OnInit, ViewChild } from '@angular/core'
3import { Notifier, RestPagination, RestTable } from '@app/core' 3import { Notifier, RestPagination, RestTable } from '@app/core'
4import { Account, VideoOwnershipService } from '@app/shared/shared-main' 4import { Account, VideoOwnershipService } from '@app/shared/shared-main'
5import { VideoChangeOwnership, VideoChangeOwnershipStatus } from '@shared/models' 5import { VideoChangeOwnership, VideoChangeOwnershipStatus, VideoChangeOwnershipStatusType } from '@peertube/peertube-models'
6import { MyAcceptOwnershipComponent } from './my-accept-ownership/my-accept-ownership.component' 6import { MyAcceptOwnershipComponent } from './my-accept-ownership/my-accept-ownership.component'
7 7
8@Component({ 8@Component({
@@ -32,7 +32,7 @@ export class MyOwnershipComponent extends RestTable implements OnInit {
32 return 'MyOwnershipComponent' 32 return 'MyOwnershipComponent'
33 } 33 }
34 34
35 getStatusClass (status: VideoChangeOwnershipStatus) { 35 getStatusClass (status: VideoChangeOwnershipStatusType) {
36 switch (status) { 36 switch (status) {
37 case VideoChangeOwnershipStatus.ACCEPTED: 37 case VideoChangeOwnershipStatus.ACCEPTED:
38 return 'badge-green' 38 return 'badge-green'
diff --git a/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.ts b/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.ts
index 1f7287f44..44e5c45b9 100644
--- a/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.ts
+++ b/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.ts
@@ -3,8 +3,7 @@ import { mergeMap } from 'rxjs'
3import { Component, OnInit } from '@angular/core' 3import { Component, OnInit } from '@angular/core'
4import { AuthService, Notifier, RestPagination, RestTable, ServerService } from '@app/core' 4import { AuthService, Notifier, RestPagination, RestTable, ServerService } from '@app/core'
5import { DropdownAction, VideoChannelService, VideoChannelSyncService } from '@app/shared/shared-main' 5import { DropdownAction, VideoChannelService, VideoChannelSyncService } from '@app/shared/shared-main'
6import { HTMLServerConfig } from '@shared/models/server' 6import { HTMLServerConfig, VideoChannelSync, VideoChannelSyncState, VideoChannelSyncStateType } from '@peertube/peertube-models'
7import { VideoChannelSync, VideoChannelSyncState } from '@shared/models/videos'
8 7
9@Component({ 8@Component({
10 templateUrl: './my-video-channel-syncs.component.html', 9 templateUrl: './my-video-channel-syncs.component.html',
@@ -124,7 +123,7 @@ export class MyVideoChannelSyncsComponent extends RestTable implements OnInit {
124 return '/my-library/video-channel-syncs/create' 123 return '/my-library/video-channel-syncs/create'
125 } 124 }
126 125
127 getSyncStateClass (stateId: VideoChannelSyncState) { 126 getSyncStateClass (stateId: VideoChannelSyncStateType) {
128 return [ 'pt-badge', MyVideoChannelSyncsComponent.STATE_CLASS_BY_ID[stateId] ] 127 return [ 'pt-badge', MyVideoChannelSyncsComponent.STATE_CLASS_BY_ID[stateId] ]
129 } 128 }
130 129
diff --git a/client/src/app/+my-library/my-video-channel-syncs/video-channel-sync-edit/video-channel-sync-edit.component.ts b/client/src/app/+my-library/my-video-channel-syncs/video-channel-sync-edit/video-channel-sync-edit.component.ts
index a14ab5b92..a40a68764 100644
--- a/client/src/app/+my-library/my-video-channel-syncs/video-channel-sync-edit/video-channel-sync-edit.component.ts
+++ b/client/src/app/+my-library/my-video-channel-syncs/video-channel-sync-edit/video-channel-sync-edit.component.ts
@@ -7,7 +7,7 @@ import { listUserChannelsForSelect } from '@app/helpers'
7import { VIDEO_CHANNEL_EXTERNAL_URL_VALIDATOR } from '@app/shared/form-validators/video-channel-validators' 7import { VIDEO_CHANNEL_EXTERNAL_URL_VALIDATOR } from '@app/shared/form-validators/video-channel-validators'
8import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 8import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
9import { VideoChannelService, VideoChannelSyncService } from '@app/shared/shared-main' 9import { VideoChannelService, VideoChannelSyncService } from '@app/shared/shared-main'
10import { VideoChannelSyncCreate } from '@shared/models/videos' 10import { VideoChannelSyncCreate } from '@peertube/peertube-models'
11 11
12@Component({ 12@Component({
13 selector: 'my-video-channel-sync-edit', 13 selector: 'my-video-channel-sync-edit',
diff --git a/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts b/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts
index 7d82f62b9..76cefa7bd 100644
--- a/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts
+++ b/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Component, OnInit } from '@angular/core' 2import { Component, OnInit } from '@angular/core'
3import { Notifier, RestPagination, RestTable } from '@app/core' 3import { Notifier, RestPagination, RestTable } from '@app/core'
4import { Video, VideoImportService } from '@app/shared/shared-main' 4import { Video, VideoImportService } from '@app/shared/shared-main'
5import { VideoImport, VideoImportState } from '@shared/models' 5import { VideoImport, VideoImportState, VideoImportStateType } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 templateUrl: './my-video-imports.component.html', 8 templateUrl: './my-video-imports.component.html',
@@ -29,7 +29,7 @@ export class MyVideoImportsComponent extends RestTable implements OnInit {
29 return 'MyVideoImportsComponent' 29 return 'MyVideoImportsComponent'
30 } 30 }
31 31
32 getVideoImportStateClass (state: VideoImportState) { 32 getVideoImportStateClass (state: VideoImportStateType) {
33 switch (state) { 33 switch (state) {
34 case VideoImportState.FAILED: 34 case VideoImportState.FAILED:
35 return 'badge-red' 35 return 'badge-red'
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlist-create.component.ts b/client/src/app/+my-library/my-video-playlists/my-video-playlist-create.component.ts
index 63f72df3f..a54b3ca86 100644
--- a/client/src/app/+my-library/my-video-playlists/my-video-playlist-create.component.ts
+++ b/client/src/app/+my-library/my-video-playlists/my-video-playlist-create.component.ts
@@ -11,8 +11,7 @@ import {
11} from '@app/shared/form-validators/video-playlist-validators' 11} from '@app/shared/form-validators/video-playlist-validators'
12import { FormReactiveService } from '@app/shared/shared-forms' 12import { FormReactiveService } from '@app/shared/shared-forms'
13import { VideoPlaylistService } from '@app/shared/shared-video-playlist' 13import { VideoPlaylistService } from '@app/shared/shared-video-playlist'
14import { VideoPlaylistCreate } from '@shared/models/videos/playlist/video-playlist-create.model' 14import { VideoPlaylistCreate, VideoPlaylistPrivacy } from '@peertube/peertube-models'
15import { VideoPlaylistPrivacy } from '@shared/models/videos/playlist/video-playlist-privacy.model'
16import { MyVideoPlaylistEdit } from './my-video-playlist-edit' 15import { MyVideoPlaylistEdit } from './my-video-playlist-edit'
17 16
18@Component({ 17@Component({
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.ts b/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.ts
index 71db0592a..127960a58 100644
--- a/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.ts
+++ b/client/src/app/+my-library/my-video-playlists/my-video-playlist-edit.ts
@@ -1,13 +1,12 @@
1import { FormReactive } from '@app/shared/shared-forms' 1import { FormReactive } from '@app/shared/shared-forms'
2import { VideoConstant, VideoPlaylistPrivacy } from '@shared/models' 2import { VideoConstant, VideoPlaylist, VideoPlaylistPrivacyType } from '@peertube/peertube-models'
3import { VideoPlaylist } from '@shared/models/videos/playlist/video-playlist.model'
4import { SelectChannelItem } from '../../../types/select-options-item.model' 3import { SelectChannelItem } from '../../../types/select-options-item.model'
5 4
6export abstract class MyVideoPlaylistEdit extends FormReactive { 5export abstract class MyVideoPlaylistEdit extends FormReactive {
7 // Declare it here to avoid errors in create template 6 // Declare it here to avoid errors in create template
8 videoPlaylistToUpdate: VideoPlaylist 7 videoPlaylistToUpdate: VideoPlaylist
9 userVideoChannels: SelectChannelItem[] = [] 8 userVideoChannels: SelectChannelItem[] = []
10 videoPlaylistPrivacies: VideoConstant<VideoPlaylistPrivacy>[] = [] 9 videoPlaylistPrivacies: VideoConstant<VideoPlaylistPrivacyType>[] = []
11 10
12 abstract isCreation (): boolean 11 abstract isCreation (): boolean
13 abstract getFormButtonTitle (): string 12 abstract getFormButtonTitle (): string
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlist-elements.component.ts b/client/src/app/+my-library/my-video-playlists/my-video-playlist-elements.component.ts
index c9739b6cc..7a9588743 100644
--- a/client/src/app/+my-library/my-video-playlists/my-video-playlist-elements.component.ts
+++ b/client/src/app/+my-library/my-video-playlists/my-video-playlist-elements.component.ts
@@ -6,7 +6,7 @@ import { ComponentPagination, ConfirmService, HooksService, Notifier, ScreenServ
6import { DropdownAction } from '@app/shared/shared-main' 6import { DropdownAction } from '@app/shared/shared-main'
7import { VideoShareComponent } from '@app/shared/shared-share-modal' 7import { VideoShareComponent } from '@app/shared/shared-share-modal'
8import { VideoPlaylist, VideoPlaylistElement, VideoPlaylistService } from '@app/shared/shared-video-playlist' 8import { VideoPlaylist, VideoPlaylistElement, VideoPlaylistService } from '@app/shared/shared-video-playlist'
9import { VideoPlaylistType } from '@shared/models' 9import { VideoPlaylistType } from '@peertube/peertube-models'
10 10
11@Component({ 11@Component({
12 templateUrl: './my-video-playlist-elements.component.html', 12 templateUrl: './my-video-playlist-elements.component.html',
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlist-update.component.ts b/client/src/app/+my-library/my-video-playlists/my-video-playlist-update.component.ts
index bbe8a5f80..f29a0cc45 100644
--- a/client/src/app/+my-library/my-video-playlists/my-video-playlist-update.component.ts
+++ b/client/src/app/+my-library/my-video-playlists/my-video-playlist-update.component.ts
@@ -13,7 +13,7 @@ import {
13} from '@app/shared/form-validators/video-playlist-validators' 13} from '@app/shared/form-validators/video-playlist-validators'
14import { FormReactiveService } from '@app/shared/shared-forms' 14import { FormReactiveService } from '@app/shared/shared-forms'
15import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist' 15import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist'
16import { VideoPlaylistUpdate } from '@shared/models' 16import { VideoPlaylistUpdate } from '@peertube/peertube-models'
17import { MyVideoPlaylistEdit } from './my-video-playlist-edit' 17import { MyVideoPlaylistEdit } from './my-video-playlist-edit'
18 18
19@Component({ 19@Component({
diff --git a/client/src/app/+my-library/my-video-playlists/my-video-playlists.component.ts b/client/src/app/+my-library/my-video-playlists/my-video-playlists.component.ts
index 634176744..08bd94fae 100644
--- a/client/src/app/+my-library/my-video-playlists/my-video-playlists.component.ts
+++ b/client/src/app/+my-library/my-video-playlists/my-video-playlists.component.ts
@@ -3,7 +3,7 @@ import { mergeMap } from 'rxjs/operators'
3import { Component } from '@angular/core' 3import { Component } from '@angular/core'
4import { AuthService, ComponentPagination, ConfirmService, Notifier } from '@app/core' 4import { AuthService, ComponentPagination, ConfirmService, Notifier } from '@app/core'
5import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist' 5import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist'
6import { VideoPlaylistType } from '@shared/models' 6import { VideoPlaylistType } from '@peertube/peertube-models'
7 7
8@Component({ 8@Component({
9 templateUrl: './my-video-playlists.component.html', 9 templateUrl: './my-video-playlists.component.html',
diff --git a/client/src/app/+my-library/my-videos/my-videos.component.ts b/client/src/app/+my-library/my-videos/my-videos.component.ts
index 1827d6a0b..4a7604878 100644
--- a/client/src/app/+my-library/my-videos/my-videos.component.ts
+++ b/client/src/app/+my-library/my-videos/my-videos.component.ts
@@ -16,7 +16,7 @@ import {
16 VideosSelectionComponent 16 VideosSelectionComponent
17} from '@app/shared/shared-video-miniature' 17} from '@app/shared/shared-video-miniature'
18import { VideoPlaylistService } from '@app/shared/shared-video-playlist' 18import { VideoPlaylistService } from '@app/shared/shared-video-playlist'
19import { VideoChannel, VideoExistInPlaylist, VideosExistInPlaylists, VideoSortField } from '@shared/models' 19import { VideoChannel, VideoExistInPlaylist, VideosExistInPlaylists, VideoSortField } from '@peertube/peertube-models'
20import { VideoChangeOwnershipComponent } from './modals/video-change-ownership.component' 20import { VideoChangeOwnershipComponent } from './modals/video-change-ownership.component'
21 21
22@Component({ 22@Component({
diff --git a/client/src/app/+search/search-filters.component.ts b/client/src/app/+search/search-filters.component.ts
index a6fc51383..b98acee18 100644
--- a/client/src/app/+search/search-filters.component.ts
+++ b/client/src/app/+search/search-filters.component.ts
@@ -1,7 +1,7 @@
1import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' 1import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'
2import { ServerService } from '@app/core' 2import { ServerService } from '@app/core'
3import { AdvancedSearch } from '@app/shared/shared-search' 3import { AdvancedSearch } from '@app/shared/shared-search'
4import { HTMLServerConfig, VideoConstant } from '@shared/models' 4import { HTMLServerConfig, VideoConstant } from '@peertube/peertube-models'
5 5
6type FormOption = { id: string, label: string } 6type FormOption = { id: string, label: string }
7 7
diff --git a/client/src/app/+search/search.component.ts b/client/src/app/+search/search.component.ts
index 31394a1d1..62e349c40 100644
--- a/client/src/app/+search/search.component.ts
+++ b/client/src/app/+search/search.component.ts
@@ -9,7 +9,7 @@ import { Video, VideoChannel } from '@app/shared/shared-main'
9import { AdvancedSearch, SearchService } from '@app/shared/shared-search' 9import { AdvancedSearch, SearchService } from '@app/shared/shared-search'
10import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature' 10import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature'
11import { VideoPlaylist } from '@app/shared/shared-video-playlist' 11import { VideoPlaylist } from '@app/shared/shared-video-playlist'
12import { HTMLServerConfig, SearchTargetType } from '@shared/models' 12import { HTMLServerConfig, SearchTargetType } from '@peertube/peertube-models'
13 13
14@Component({ 14@Component({
15 selector: 'my-search', 15 selector: 'my-search',
diff --git a/client/src/app/+search/shared/abstract-lazy-load.resolver.ts b/client/src/app/+search/shared/abstract-lazy-load.resolver.ts
index 6765ba15e..4e8b71293 100644
--- a/client/src/app/+search/shared/abstract-lazy-load.resolver.ts
+++ b/client/src/app/+search/shared/abstract-lazy-load.resolver.ts
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs'
2import { map } from 'rxjs/operators' 2import { map } from 'rxjs/operators'
3import { ActivatedRouteSnapshot, Router } from '@angular/router' 3import { ActivatedRouteSnapshot, Router } from '@angular/router'
4import { logger } from '@root-helpers/logger' 4import { logger } from '@root-helpers/logger'
5import { ResultList } from '@shared/models' 5import { ResultList } from '@peertube/peertube-models'
6 6
7export abstract class AbstractLazyLoadResolver <T> { 7export abstract class AbstractLazyLoadResolver <T> {
8 protected router: Router 8 protected router: Router
diff --git a/client/src/app/+signup/+register/register.component.ts b/client/src/app/+signup/+register/register.component.ts
index be51c36d1..396971d98 100644
--- a/client/src/app/+signup/+register/register.component.ts
+++ b/client/src/app/+signup/+register/register.component.ts
@@ -5,8 +5,7 @@ import { ActivatedRoute } from '@angular/router'
5import { AuthService } from '@app/core' 5import { AuthService } from '@app/core'
6import { HooksService } from '@app/core/plugins/hooks.service' 6import { HooksService } from '@app/core/plugins/hooks.service'
7import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' 7import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance'
8import { UserRegister } from '@shared/models' 8import { ServerConfig, UserRegister } from '@peertube/peertube-models'
9import { ServerConfig } from '@shared/models/server'
10import { SignupService } from '../shared/signup.service' 9import { SignupService } from '../shared/signup.service'
11 10
12@Component({ 11@Component({
diff --git a/client/src/app/+signup/shared/signup.service.ts b/client/src/app/+signup/shared/signup.service.ts
index f647298be..7c331437e 100644
--- a/client/src/app/+signup/shared/signup.service.ts
+++ b/client/src/app/+signup/shared/signup.service.ts
@@ -2,7 +2,7 @@ import { catchError, tap } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor, UserService } from '@app/core' 4import { RestExtractor, UserService } from '@app/core'
5import { UserRegister, UserRegistrationRequest } from '@shared/models' 5import { UserRegister, UserRegistrationRequest } from '@peertube/peertube-models'
6 6
7@Injectable() 7@Injectable()
8export class SignupService { 8export class SignupService {
diff --git a/client/src/app/+stats/video/video-stats.component.ts b/client/src/app/+stats/video/video-stats.component.ts
index fa5e33ab6..5bde5b01d 100644
--- a/client/src/app/+stats/video/video-stats.component.ts
+++ b/client/src/app/+stats/video/video-stats.component.ts
@@ -7,15 +7,15 @@ import { ActivatedRoute } from '@angular/router'
7import { Notifier, PeerTubeRouterService } from '@app/core' 7import { Notifier, PeerTubeRouterService } from '@app/core'
8import { NumberFormatterPipe, VideoDetails } from '@app/shared/shared-main' 8import { NumberFormatterPipe, VideoDetails } from '@app/shared/shared-main'
9import { LiveVideoService } from '@app/shared/shared-video-live' 9import { LiveVideoService } from '@app/shared/shared-video-live'
10import { secondsToTime } from '@shared/core-utils' 10import { secondsToTime } from '@peertube/peertube-core-utils'
11import { HttpStatusCode } from '@shared/models/http'
12import { 11import {
12 HttpStatusCode,
13 LiveVideoSession, 13 LiveVideoSession,
14 VideoStatsOverall, 14 VideoStatsOverall,
15 VideoStatsRetention, 15 VideoStatsRetention,
16 VideoStatsTimeserie, 16 VideoStatsTimeserie,
17 VideoStatsTimeserieMetric 17 VideoStatsTimeserieMetric
18} from '@shared/models/videos' 18} from '@peertube/peertube-models'
19import { VideoStatsService } from './video-stats.service' 19import { VideoStatsService } from './video-stats.service'
20 20
21type ActiveGraphId = VideoStatsTimeserieMetric | 'retention' | 'countries' 21type ActiveGraphId = VideoStatsTimeserieMetric | 'retention' | 'countries'
diff --git a/client/src/app/+stats/video/video-stats.service.ts b/client/src/app/+stats/video/video-stats.service.ts
index e019c87f7..5d4817892 100644
--- a/client/src/app/+stats/video/video-stats.service.ts
+++ b/client/src/app/+stats/video/video-stats.service.ts
@@ -4,7 +4,7 @@ import { HttpClient, HttpParams } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { RestExtractor } from '@app/core' 5import { RestExtractor } from '@app/core'
6import { VideoService } from '@app/shared/shared-main' 6import { VideoService } from '@app/shared/shared-main'
7import { VideoStatsOverall, VideoStatsRetention, VideoStatsTimeserie, VideoStatsTimeserieMetric } from '@shared/models/videos' 7import { VideoStatsOverall, VideoStatsRetention, VideoStatsTimeserie, VideoStatsTimeserieMetric } from '@peertube/peertube-models'
8 8
9@Injectable({ 9@Injectable({
10 providedIn: 'root' 10 providedIn: 'root'
diff --git a/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts b/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts
index 5e3946bf5..725990300 100644
--- a/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts
+++ b/client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts
@@ -4,7 +4,7 @@ import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core'
4import { ComponentPaginationLight, DisableForReuseHook, HooksService, ScreenService } from '@app/core' 4import { ComponentPaginationLight, DisableForReuseHook, HooksService, ScreenService } from '@app/core'
5import { VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main' 5import { VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main'
6import { MiniatureDisplayOptions, VideoFilters } from '@app/shared/shared-video-miniature' 6import { MiniatureDisplayOptions, VideoFilters } from '@app/shared/shared-video-miniature'
7import { Video, VideoSortField } from '@shared/models' 7import { Video, VideoSortField } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 selector: 'my-video-channel-videos', 10 selector: 'my-video-channel-videos',
diff --git a/client/src/app/+video-channels/video-channels.component.ts b/client/src/app/+video-channels/video-channels.component.ts
index f5bea66ec..40b3b19b7 100644
--- a/client/src/app/+video-channels/video-channels.component.ts
+++ b/client/src/app/+video-channels/video-channels.component.ts
@@ -8,7 +8,7 @@ import { Account, ListOverflowItem, VideoChannel, VideoChannelService, VideoServ
8import { BlocklistService } from '@app/shared/shared-moderation' 8import { BlocklistService } from '@app/shared/shared-moderation'
9import { SupportModalComponent } from '@app/shared/shared-support-modal' 9import { SupportModalComponent } from '@app/shared/shared-support-modal'
10import { SubscribeButtonComponent } from '@app/shared/shared-user-subscription' 10import { SubscribeButtonComponent } from '@app/shared/shared-user-subscription'
11import { HttpStatusCode, UserRight } from '@shared/models' 11import { HttpStatusCode, UserRight } from '@peertube/peertube-models'
12 12
13@Component({ 13@Component({
14 templateUrl: './video-channels.component.html', 14 templateUrl: './video-channels.component.html',
diff --git a/client/src/app/+video-studio/edit/video-studio-edit.component.ts b/client/src/app/+video-studio/edit/video-studio-edit.component.ts
index 3d618fbe1..40e9cf40a 100644
--- a/client/src/app/+video-studio/edit/video-studio-edit.component.ts
+++ b/client/src/app/+video-studio/edit/video-studio-edit.component.ts
@@ -5,8 +5,8 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
5import { VideoDetails } from '@app/shared/shared-main' 5import { VideoDetails } from '@app/shared/shared-main'
6import { LoadingBarService } from '@ngx-loading-bar/core' 6import { LoadingBarService } from '@ngx-loading-bar/core'
7import { logger } from '@root-helpers/logger' 7import { logger } from '@root-helpers/logger'
8import { secondsToTime } from '@shared/core-utils' 8import { secondsToTime } from '@peertube/peertube-core-utils'
9import { VideoStudioTask, VideoStudioTaskCut } from '@shared/models' 9import { VideoStudioTask, VideoStudioTaskCut } from '@peertube/peertube-models'
10import { VideoStudioService } from '../shared' 10import { VideoStudioService } from '../shared'
11 11
12@Component({ 12@Component({
diff --git a/client/src/app/+video-studio/shared/video-studio.service.ts b/client/src/app/+video-studio/shared/video-studio.service.ts
index 8d8b2f0e5..a3aabd347 100644
--- a/client/src/app/+video-studio/shared/video-studio.service.ts
+++ b/client/src/app/+video-studio/shared/video-studio.service.ts
@@ -4,7 +4,7 @@ import { Injectable } from '@angular/core'
4import { RestExtractor } from '@app/core' 4import { RestExtractor } from '@app/core'
5import { objectToFormData } from '@app/helpers' 5import { objectToFormData } from '@app/helpers'
6import { VideoService } from '@app/shared/shared-main' 6import { VideoService } from '@app/shared/shared-main'
7import { VideoStudioCreateEdition, VideoStudioTask } from '@shared/models' 7import { VideoStudioCreateEdition, VideoStudioTask } from '@peertube/peertube-models'
8 8
9@Injectable() 9@Injectable()
10export class VideoStudioService { 10export class VideoStudioService {
diff --git a/client/src/app/+videos/+video-edit/shared/video-caption-add-modal.component.ts b/client/src/app/+videos/+video-edit/shared/video-caption-add-modal.component.ts
index 4ab2d42db..e595cf2c9 100644
--- a/client/src/app/+videos/+video-edit/shared/video-caption-add-modal.component.ts
+++ b/client/src/app/+videos/+video-edit/shared/video-caption-add-modal.component.ts
@@ -4,7 +4,7 @@ import { VIDEO_CAPTION_FILE_VALIDATOR, VIDEO_CAPTION_LANGUAGE_VALIDATOR } from '
4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
5import { VideoCaptionEdit } from '@app/shared/shared-main' 5import { VideoCaptionEdit } from '@app/shared/shared-main'
6import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' 6import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'
7import { HTMLServerConfig, VideoConstant } from '@shared/models' 7import { HTMLServerConfig, VideoConstant } from '@peertube/peertube-models'
8 8
9@Component({ 9@Component({
10 selector: 'my-video-caption-add-modal', 10 selector: 'my-video-caption-add-modal',
diff --git a/client/src/app/+videos/+video-edit/shared/video-caption-edit-modal-content/video-caption-edit-modal-content.component.ts b/client/src/app/+videos/+video-edit/shared/video-caption-edit-modal-content/video-caption-edit-modal-content.component.ts
index 2cb470a24..6c6a30d96 100644
--- a/client/src/app/+videos/+video-edit/shared/video-caption-edit-modal-content/video-caption-edit-modal-content.component.ts
+++ b/client/src/app/+videos/+video-edit/shared/video-caption-edit-modal-content/video-caption-edit-modal-content.component.ts
@@ -3,7 +3,7 @@ import { VIDEO_CAPTION_FILE_CONTENT_VALIDATOR } from '@app/shared/form-validator
3import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 3import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
4import { VideoCaptionEdit, VideoCaptionService, VideoCaptionWithPathEdit } from '@app/shared/shared-main' 4import { VideoCaptionEdit, VideoCaptionService, VideoCaptionWithPathEdit } from '@app/shared/shared-main'
5import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' 5import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
6import { HTMLServerConfig, VideoConstant } from '@shared/models' 6import { HTMLServerConfig, VideoConstant } from '@peertube/peertube-models'
7import { ServerService } from '../../../../core' 7import { ServerService } from '../../../../core'
8 8
9/** 9/**
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.ts b/client/src/app/+videos/+video-edit/shared/video-edit.component.ts
index 460960a01..b0c1352f3 100644
--- a/client/src/app/+videos/+video-edit/shared/video-edit.component.ts
+++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.ts
@@ -24,8 +24,6 @@ import { FormReactiveValidationMessages, FormValidatorService } from '@app/share
24import { InstanceService } from '@app/shared/shared-instance' 24import { InstanceService } from '@app/shared/shared-instance'
25import { VideoCaptionEdit, VideoCaptionWithPathEdit, VideoEdit, VideoService } from '@app/shared/shared-main' 25import { VideoCaptionEdit, VideoCaptionWithPathEdit, VideoEdit, VideoService } from '@app/shared/shared-main'
26import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 26import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
27import { logger } from '@root-helpers/logger'
28import { PluginInfo } from '@root-helpers/plugins-manager'
29import { 27import {
30 HTMLServerConfig, 28 HTMLServerConfig,
31 LiveVideo, 29 LiveVideo,
@@ -34,9 +32,12 @@ import {
34 RegisterClientVideoFieldOptions, 32 RegisterClientVideoFieldOptions,
35 VideoConstant, 33 VideoConstant,
36 VideoDetails, 34 VideoDetails,
37 VideoPrivacy 35 VideoPrivacy,
38} from '@shared/models' 36 VideoPrivacyType,
39import { VideoSource } from '@shared/models/videos/video-source' 37 VideoSource
38} from '@peertube/peertube-models'
39import { logger } from '@root-helpers/logger'
40import { PluginInfo } from '@root-helpers/plugins-manager'
40import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' 41import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service'
41import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' 42import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component'
42import { VideoCaptionEditModalContentComponent } from './video-caption-edit-modal-content/video-caption-edit-modal-content.component' 43import { VideoCaptionEditModalContentComponent } from './video-caption-edit-modal-content/video-caption-edit-modal-content.component'
@@ -81,8 +82,8 @@ export class VideoEditComponent implements OnInit, OnDestroy {
81 // So that it can be accessed in the template 82 // So that it can be accessed in the template
82 readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY 83 readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY
83 84
84 videoPrivacies: VideoConstant<VideoPrivacy | typeof VideoEdit.SPECIAL_SCHEDULED_PRIVACY > [] = [] 85 videoPrivacies: VideoConstant<VideoPrivacyType | typeof VideoEdit.SPECIAL_SCHEDULED_PRIVACY > [] = []
85 replayPrivacies: VideoConstant<VideoPrivacy> [] = [] 86 replayPrivacies: VideoConstant<VideoPrivacyType> [] = []
86 videoCategories: VideoConstant<number>[] = [] 87 videoCategories: VideoConstant<number>[] = []
87 videoLicences: VideoConstant<number>[] = [] 88 videoLicences: VideoConstant<number>[] = []
88 videoLanguages: VideoLanguages[] = [] 89 videoLanguages: VideoLanguages[] = []
diff --git a/client/src/app/+videos/+video-edit/shared/video-upload.service.ts b/client/src/app/+videos/+video-edit/shared/video-upload.service.ts
index 50ca1a60b..c3f8936a9 100644
--- a/client/src/app/+videos/+video-edit/shared/video-upload.service.ts
+++ b/client/src/app/+videos/+video-edit/shared/video-upload.service.ts
@@ -3,7 +3,7 @@ import { HttpErrorResponse, HttpEventType, HttpHeaders } from '@angular/common/h
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { AuthService, Notifier, ServerService } from '@app/core' 4import { AuthService, Notifier, ServerService } from '@app/core'
5import { BytesPipe, VideoService } from '@app/shared/shared-main' 5import { BytesPipe, VideoService } from '@app/shared/shared-main'
6import { HttpStatusCode } from '@shared/models' 6import { HttpStatusCode } from '@peertube/peertube-models'
7import { UploaderXFormData } from './uploaderx-form-data' 7import { UploaderXFormData } from './uploaderx-form-data'
8 8
9@Injectable() 9@Injectable()
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts
index ba612f553..f7a570ed3 100644
--- a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts
+++ b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts
@@ -16,7 +16,7 @@ import {
16 PeerTubeProblemDocument, 16 PeerTubeProblemDocument,
17 ServerErrorCode, 17 ServerErrorCode,
18 VideoPrivacy 18 VideoPrivacy
19} from '@shared/models' 19} from '@peertube/peertube-models'
20import { VideoSend } from './video-send' 20import { VideoSend } from './video-send'
21 21
22@Component({ 22@Component({
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts
index 4a1408a4a..97517e1c7 100644
--- a/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts
+++ b/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts
@@ -7,7 +7,7 @@ import { FormReactiveService } from '@app/shared/shared-forms'
7import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' 7import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main'
8import { LoadingBarService } from '@ngx-loading-bar/core' 8import { LoadingBarService } from '@ngx-loading-bar/core'
9import { logger } from '@root-helpers/logger' 9import { logger } from '@root-helpers/logger'
10import { PeerTubeProblemDocument, ServerErrorCode, VideoUpdate } from '@shared/models' 10import { PeerTubeProblemDocument, ServerErrorCode, VideoUpdate } from '@peertube/peertube-models'
11import { hydrateFormFromVideo } from '../shared/video-edit-utils' 11import { hydrateFormFromVideo } from '../shared/video-edit-utils'
12import { VideoSend } from './video-send' 12import { VideoSend } from './video-send'
13 13
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-import-url.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-import-url.component.ts
index 502f3818e..634bd9914 100644
--- a/client/src/app/+videos/+video-edit/video-add-components/video-import-url.component.ts
+++ b/client/src/app/+videos/+video-edit/video-add-components/video-import-url.component.ts
@@ -8,7 +8,7 @@ import { FormReactiveService } from '@app/shared/shared-forms'
8import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' 8import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main'
9import { LoadingBarService } from '@ngx-loading-bar/core' 9import { LoadingBarService } from '@ngx-loading-bar/core'
10import { logger } from '@root-helpers/logger' 10import { logger } from '@root-helpers/logger'
11import { VideoUpdate } from '@shared/models' 11import { VideoUpdate } from '@peertube/peertube-models'
12import { hydrateFormFromVideo } from '../shared/video-edit-utils' 12import { hydrateFormFromVideo } from '../shared/video-edit-utils'
13import { VideoSend } from './video-send' 13import { VideoSend } from './video-send'
14 14
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-send.ts b/client/src/app/+videos/+video-edit/video-add-components/video-send.ts
index 9de373cd3..56dcfa0e6 100644
--- a/client/src/app/+videos/+video-edit/video-add-components/video-send.ts
+++ b/client/src/app/+videos/+video-edit/video-add-components/video-send.ts
@@ -6,16 +6,16 @@ import { listUserChannelsForSelect } from '@app/helpers'
6import { FormReactive } from '@app/shared/shared-forms' 6import { FormReactive } from '@app/shared/shared-forms'
7import { VideoCaptionEdit, VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main' 7import { VideoCaptionEdit, VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main'
8import { LoadingBarService } from '@ngx-loading-bar/core' 8import { LoadingBarService } from '@ngx-loading-bar/core'
9import { HTMLServerConfig, VideoConstant, VideoPrivacy } from '@shared/models' 9import { HTMLServerConfig, VideoConstant, VideoPrivacyType } from '@peertube/peertube-models'
10 10
11@Directive() 11@Directive()
12// eslint-disable-next-line @angular-eslint/directive-class-suffix 12// eslint-disable-next-line @angular-eslint/directive-class-suffix
13export abstract class VideoSend extends FormReactive implements OnInit { 13export abstract class VideoSend extends FormReactive implements OnInit {
14 userVideoChannels: SelectChannelItem[] = [] 14 userVideoChannels: SelectChannelItem[] = []
15 videoPrivacies: VideoConstant<VideoPrivacy>[] = [] 15 videoPrivacies: VideoConstant<VideoPrivacyType>[] = []
16 videoCaptions: VideoCaptionEdit[] = [] 16 videoCaptions: VideoCaptionEdit[] = []
17 17
18 firstStepPrivacyId: VideoPrivacy 18 firstStepPrivacyId: VideoPrivacyType
19 firstStepChannelId: number 19 firstStepChannelId: number
20 20
21 abstract firstStepDone: EventEmitter<string> 21 abstract firstStepDone: EventEmitter<string>
@@ -31,7 +31,7 @@ export abstract class VideoSend extends FormReactive implements OnInit {
31 31
32 protected serverConfig: HTMLServerConfig 32 protected serverConfig: HTMLServerConfig
33 33
34 protected highestPrivacy: VideoPrivacy 34 protected highestPrivacy: VideoPrivacyType
35 35
36 abstract canDeactivate (): CanComponentDeactivateResult 36 abstract canDeactivate (): CanComponentDeactivateResult
37 37
diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts
index f7e1872a5..cbf43ee5f 100644
--- a/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts
+++ b/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts
@@ -10,7 +10,7 @@ import { FormReactiveService } from '@app/shared/shared-forms'
10import { Video, VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main' 10import { Video, VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main'
11import { LoadingBarService } from '@ngx-loading-bar/core' 11import { LoadingBarService } from '@ngx-loading-bar/core'
12import { logger } from '@root-helpers/logger' 12import { logger } from '@root-helpers/logger'
13import { HttpStatusCode, VideoCreateResult } from '@shared/models' 13import { HttpStatusCode, VideoCreateResult } from '@peertube/peertube-models'
14import { VideoUploadService } from '../shared/video-upload.service' 14import { VideoUploadService } from '../shared/video-upload.service'
15import { VideoSend } from './video-send' 15import { VideoSend } from './video-send'
16 16
diff --git a/client/src/app/+videos/+video-edit/video-add.component.ts b/client/src/app/+videos/+video-edit/video-add.component.ts
index 460c37a38..413fe4780 100644
--- a/client/src/app/+videos/+video-edit/video-add.component.ts
+++ b/client/src/app/+videos/+video-edit/video-add.component.ts
@@ -8,7 +8,7 @@ import {
8 ServerService, 8 ServerService,
9 UserService 9 UserService
10} from '@app/core' 10} from '@app/core'
11import { HTMLServerConfig } from '@shared/models' 11import { HTMLServerConfig } from '@peertube/peertube-models'
12import { VideoEditType } from './shared/video-edit.type' 12import { VideoEditType } from './shared/video-edit.type'
13import { VideoGoLiveComponent } from './video-add-components/video-go-live.component' 13import { VideoGoLiveComponent } from './video-add-components/video-go-live.component'
14import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component' 14import { VideoImportTorrentComponent } from './video-add-components/video-import-torrent.component'
diff --git a/client/src/app/+videos/+video-edit/video-update.component.ts b/client/src/app/+videos/+video-edit/video-update.component.ts
index 6ad08cbad..24d91a69a 100644
--- a/client/src/app/+videos/+video-edit/video-update.component.ts
+++ b/client/src/app/+videos/+video-edit/video-update.component.ts
@@ -12,9 +12,8 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
12import { Video, VideoCaptionEdit, VideoCaptionService, VideoDetails, VideoEdit, VideoService } from '@app/shared/shared-main' 12import { Video, VideoCaptionEdit, VideoCaptionService, VideoDetails, VideoEdit, VideoService } from '@app/shared/shared-main'
13import { LiveVideoService } from '@app/shared/shared-video-live' 13import { LiveVideoService } from '@app/shared/shared-video-live'
14import { LoadingBarService } from '@ngx-loading-bar/core' 14import { LoadingBarService } from '@ngx-loading-bar/core'
15import { pick, simpleObjectsDeepEqual } from '@shared/core-utils' 15import { pick, simpleObjectsDeepEqual } from '@peertube/peertube-core-utils'
16import { HttpStatusCode, LiveVideo, LiveVideoUpdate, VideoPrivacy, VideoState } from '@shared/models' 16import { HttpStatusCode, LiveVideo, LiveVideoUpdate, VideoPrivacy, VideoSource, VideoState } from '@peertube/peertube-models'
17import { VideoSource } from '@shared/models/videos/video-source'
18import { hydrateFormFromVideo } from './shared/video-edit-utils' 17import { hydrateFormFromVideo } from './shared/video-edit-utils'
19import { VideoUploadService } from './shared/video-upload.service' 18import { VideoUploadService } from './shared/video-upload.service'
20 19
diff --git a/client/src/app/+videos/+video-edit/video-update.resolver.ts b/client/src/app/+videos/+video-edit/video-update.resolver.ts
index 2c99b36a8..d114bfb2d 100644
--- a/client/src/app/+videos/+video-edit/video-update.resolver.ts
+++ b/client/src/app/+videos/+video-edit/video-update.resolver.ts
@@ -4,9 +4,9 @@ import { Injectable } from '@angular/core'
4import { ActivatedRouteSnapshot } from '@angular/router' 4import { ActivatedRouteSnapshot } from '@angular/router'
5import { AuthService } from '@app/core' 5import { AuthService } from '@app/core'
6import { listUserChannelsForSelect } from '@app/helpers' 6import { listUserChannelsForSelect } from '@app/helpers'
7import { VideoCaptionService, VideoDetails, VideoService, VideoPasswordService } from '@app/shared/shared-main' 7import { VideoCaptionService, VideoDetails, VideoPasswordService, VideoService } from '@app/shared/shared-main'
8import { LiveVideoService } from '@app/shared/shared-video-live' 8import { LiveVideoService } from '@app/shared/shared-video-live'
9import { VideoPrivacy } from '@shared/models/videos' 9import { VideoPrivacy } from '@peertube/peertube-models'
10 10
11@Injectable() 11@Injectable()
12export class VideoUpdateResolver { 12export class VideoUpdateResolver {
diff --git a/client/src/app/+videos/+video-watch/shared/action-buttons/action-buttons.component.ts b/client/src/app/+videos/+video-watch/shared/action-buttons/action-buttons.component.ts
index e6c0d4de1..7c89b7e62 100644
--- a/client/src/app/+videos/+video-watch/shared/action-buttons/action-buttons.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/action-buttons/action-buttons.component.ts
@@ -5,7 +5,7 @@ import { VideoShareComponent } from '@app/shared/shared-share-modal'
5import { SupportModalComponent } from '@app/shared/shared-support-modal' 5import { SupportModalComponent } from '@app/shared/shared-support-modal'
6import { VideoActionsDisplayType, VideoDownloadComponent } from '@app/shared/shared-video-miniature' 6import { VideoActionsDisplayType, VideoDownloadComponent } from '@app/shared/shared-video-miniature'
7import { VideoPlaylist } from '@app/shared/shared-video-playlist' 7import { VideoPlaylist } from '@app/shared/shared-video-playlist'
8import { UserVideoRateType, VideoCaption, VideoPrivacy } from '@shared/models/videos' 8import { UserVideoRateType, VideoCaption, VideoPrivacy } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-action-buttons', 11 selector: 'my-action-buttons',
diff --git a/client/src/app/+videos/+video-watch/shared/action-buttons/video-rate.component.ts b/client/src/app/+videos/+video-watch/shared/action-buttons/video-rate.component.ts
index 11966ce34..13a709cb0 100644
--- a/client/src/app/+videos/+video-watch/shared/action-buttons/video-rate.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/action-buttons/video-rate.component.ts
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs'
3import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core' 3import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core'
4import { Notifier, ScreenService } from '@app/core' 4import { Notifier, ScreenService } from '@app/core'
5import { VideoDetails, VideoService } from '@app/shared/shared-main' 5import { VideoDetails, VideoService } from '@app/shared/shared-main'
6import { UserVideoRateType } from '@shared/models' 6import { UserVideoRateType } from '@peertube/peertube-models'
7 7
8@Component({ 8@Component({
9 selector: 'my-video-rate', 9 selector: 'my-video-rate',
diff --git a/client/src/app/+videos/+video-watch/shared/comment/video-comment-add.component.ts b/client/src/app/+videos/+video-watch/shared/comment/video-comment-add.component.ts
index 1d9e10d0a..a01bd31fe 100644
--- a/client/src/app/+videos/+video-watch/shared/comment/video-comment-add.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/comment/video-comment-add.component.ts
@@ -19,7 +19,7 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
19import { Video } from '@app/shared/shared-main' 19import { Video } from '@app/shared/shared-main'
20import { VideoComment, VideoCommentService } from '@app/shared/shared-video-comment' 20import { VideoComment, VideoCommentService } from '@app/shared/shared-video-comment'
21import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 21import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
22import { VideoCommentCreate } from '@shared/models' 22import { VideoCommentCreate } from '@peertube/peertube-models'
23 23
24@Component({ 24@Component({
25 selector: 'my-video-comment-add', 25 selector: 'my-video-comment-add',
diff --git a/client/src/app/+videos/+video-watch/shared/comment/video-comment.component.ts b/client/src/app/+videos/+video-watch/shared/comment/video-comment.component.ts
index 4c85df657..14422010f 100644
--- a/client/src/app/+videos/+video-watch/shared/comment/video-comment.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/comment/video-comment.component.ts
@@ -5,7 +5,7 @@ import { AuthService } from '@app/core/auth'
5import { Account, DropdownAction, Video } from '@app/shared/shared-main' 5import { Account, DropdownAction, Video } from '@app/shared/shared-main'
6import { CommentReportComponent } from '@app/shared/shared-moderation/report-modals/comment-report.component' 6import { CommentReportComponent } from '@app/shared/shared-moderation/report-modals/comment-report.component'
7import { VideoComment, VideoCommentThreadTree } from '@app/shared/shared-video-comment' 7import { VideoComment, VideoCommentThreadTree } from '@app/shared/shared-video-comment'
8import { User, UserRight } from '@shared/models' 8import { User, UserRight } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-video-comment', 11 selector: 'my-video-comment',
diff --git a/client/src/app/+videos/+video-watch/shared/comment/video-comments.component.ts b/client/src/app/+videos/+video-watch/shared/comment/video-comments.component.ts
index 848936f91..1a8c89bdc 100644
--- a/client/src/app/+videos/+video-watch/shared/comment/video-comments.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/comment/video-comments.component.ts
@@ -5,7 +5,7 @@ import { AuthService, ComponentPagination, ConfirmService, hasMoreItems, Notifie
5import { HooksService } from '@app/core/plugins/hooks.service' 5import { HooksService } from '@app/core/plugins/hooks.service'
6import { Syndication, VideoDetails } from '@app/shared/shared-main' 6import { Syndication, VideoDetails } from '@app/shared/shared-main'
7import { VideoComment, VideoCommentService, VideoCommentThreadTree } from '@app/shared/shared-video-comment' 7import { VideoComment, VideoCommentService, VideoCommentThreadTree } from '@app/shared/shared-video-comment'
8import { PeerTubeProblemDocument, ServerErrorCode } from '@shared/models' 8import { PeerTubeProblemDocument, ServerErrorCode } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-video-comments', 11 selector: 'my-video-comments',
diff --git a/client/src/app/+videos/+video-watch/shared/information/privacy-concerns.component.ts b/client/src/app/+videos/+video-watch/shared/information/privacy-concerns.component.ts
index b51457e02..d2f8aa45d 100644
--- a/client/src/app/+videos/+video-watch/shared/information/privacy-concerns.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/information/privacy-concerns.component.ts
@@ -2,7 +2,7 @@ import { Component, Input, OnInit } from '@angular/core'
2import { ServerService, User, UserService } from '@app/core' 2import { ServerService, User, UserService } from '@app/core'
3import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' 3import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage'
4import { isP2PEnabled } from '@root-helpers/video' 4import { isP2PEnabled } from '@root-helpers/video'
5import { HTMLServerConfig, Video } from '@shared/models' 5import { HTMLServerConfig, Video } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 selector: 'my-privacy-concerns', 8 selector: 'my-privacy-concerns',
diff --git a/client/src/app/+videos/+video-watch/shared/information/video-alert.component.ts b/client/src/app/+videos/+video-watch/shared/information/video-alert.component.ts
index 8781ead7e..497c48813 100644
--- a/client/src/app/+videos/+video-watch/shared/information/video-alert.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/information/video-alert.component.ts
@@ -1,7 +1,7 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { AuthUser } from '@app/core' 2import { AuthUser } from '@app/core'
3import { VideoDetails } from '@app/shared/shared-main' 3import { VideoDetails } from '@app/shared/shared-main'
4import { VideoPrivacy, VideoState } from '@shared/models' 4import { VideoPrivacy, VideoState } from '@peertube/peertube-models'
5 5
6@Component({ 6@Component({
7 selector: 'my-video-alert', 7 selector: 'my-video-alert',
diff --git a/client/src/app/+videos/+video-watch/shared/playlist/video-watch-playlist.component.ts b/client/src/app/+videos/+video-watch/shared/playlist/video-watch-playlist.component.ts
index 97d71a510..eca7cf87c 100644
--- a/client/src/app/+videos/+video-watch/shared/playlist/video-watch-playlist.component.ts
+++ b/client/src/app/+videos/+video-watch/shared/playlist/video-watch-playlist.component.ts
@@ -5,7 +5,7 @@ import { isInViewport } from '@app/helpers'
5import { VideoPlaylist, VideoPlaylistElement, VideoPlaylistService } from '@app/shared/shared-video-playlist' 5import { VideoPlaylist, VideoPlaylistElement, VideoPlaylistService } from '@app/shared/shared-video-playlist'
6import { getBoolOrDefault } from '@root-helpers/local-storage-utils' 6import { getBoolOrDefault } from '@root-helpers/local-storage-utils'
7import { peertubeSessionStorage } from '@root-helpers/peertube-web-storage' 7import { peertubeSessionStorage } from '@root-helpers/peertube-web-storage'
8import { VideoPlaylistPrivacy } from '@shared/models' 8import { VideoPlaylistPrivacy } from '@peertube/peertube-models'
9 9
10@Component({ 10@Component({
11 selector: 'my-video-watch-playlist', 11 selector: 'my-video-watch-playlist',
diff --git a/client/src/app/+videos/+video-watch/shared/recommendations/recent-videos-recommendation.service.ts b/client/src/app/+videos/+video-watch/shared/recommendations/recent-videos-recommendation.service.ts
index ba0d30f3d..174fd6610 100644
--- a/client/src/app/+videos/+video-watch/shared/recommendations/recent-videos-recommendation.service.ts
+++ b/client/src/app/+videos/+video-watch/shared/recommendations/recent-videos-recommendation.service.ts
@@ -4,7 +4,7 @@ import { Injectable } from '@angular/core'
4import { ServerService, UserService } from '@app/core' 4import { ServerService, UserService } from '@app/core'
5import { Video, VideoService } from '@app/shared/shared-main' 5import { Video, VideoService } from '@app/shared/shared-main'
6import { AdvancedSearch, SearchService } from '@app/shared/shared-search' 6import { AdvancedSearch, SearchService } from '@app/shared/shared-search'
7import { HTMLServerConfig } from '@shared/models' 7import { HTMLServerConfig } from '@peertube/peertube-models'
8import { RecommendationInfo } from './recommendation-info.model' 8import { RecommendationInfo } from './recommendation-info.model'
9import { RecommendationService } from './recommendations.service' 9import { RecommendationService } from './recommendations.service'
10 10
diff --git a/client/src/app/+videos/+video-watch/video-watch.component.ts b/client/src/app/+videos/+video-watch/video-watch.component.ts
index 45de62519..f109427cc 100644
--- a/client/src/app/+videos/+video-watch/video-watch.component.ts
+++ b/client/src/app/+videos/+video-watch/video-watch.component.ts
@@ -22,9 +22,7 @@ import { Video, VideoCaptionService, VideoDetails, VideoFileTokenService, VideoS
22import { SubscribeButtonComponent } from '@app/shared/shared-user-subscription' 22import { SubscribeButtonComponent } from '@app/shared/shared-user-subscription'
23import { LiveVideoService } from '@app/shared/shared-video-live' 23import { LiveVideoService } from '@app/shared/shared-video-live'
24import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist' 24import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist'
25import { logger } from '@root-helpers/logger' 25import { timeToInt } from '@peertube/peertube-core-utils'
26import { isP2PEnabled, videoRequiresFileToken, videoRequiresUserAuth } from '@root-helpers/video'
27import { timeToInt } from '@shared/core-utils'
28import { 26import {
29 HTMLServerConfig, 27 HTMLServerConfig,
30 HttpStatusCode, 28 HttpStatusCode,
@@ -34,8 +32,11 @@ import {
34 Storyboard, 32 Storyboard,
35 VideoCaption, 33 VideoCaption,
36 VideoPrivacy, 34 VideoPrivacy,
37 VideoState 35 VideoState,
38} from '@shared/models' 36 VideoStateType
37} from '@peertube/peertube-models'
38import { logger } from '@root-helpers/logger'
39import { isP2PEnabled, videoRequiresFileToken, videoRequiresUserAuth } from '@root-helpers/video'
39import { 40import {
40 HLSOptions, 41 HLSOptions,
41 PeerTubePlayer, 42 PeerTubePlayer,
@@ -812,7 +813,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
812 }) 813 })
813 } 814 }
814 815
815 private handleLiveStateChange (newState: VideoState) { 816 private handleLiveStateChange (newState: VideoStateType) {
816 if (newState !== VideoState.PUBLISHED) return 817 if (newState !== VideoState.PUBLISHED) return
817 818
818 logger.info('Loading video after live update.') 819 logger.info('Loading video after live update.')
diff --git a/client/src/app/+videos/video-list/overview/overview.service.ts b/client/src/app/+videos/video-list/overview/overview.service.ts
index 67a1adb28..581c6b846 100644
--- a/client/src/app/+videos/video-list/overview/overview.service.ts
+++ b/client/src/app/+videos/video-list/overview/overview.service.ts
@@ -5,9 +5,8 @@ import { Injectable } from '@angular/core'
5import { RestExtractor, ServerService } from '@app/core' 5import { RestExtractor, ServerService } from '@app/core'
6import { immutableAssign } from '@app/helpers' 6import { immutableAssign } from '@app/helpers'
7import { VideoService } from '@app/shared/shared-main' 7import { VideoService } from '@app/shared/shared-main'
8import { objectKeysTyped } from '@shared/core-utils' 8import { objectKeysTyped, peertubeTranslate } from '@peertube/peertube-core-utils'
9import { peertubeTranslate } from '@shared/core-utils/i18n' 9import { VideosOverview as VideosOverviewServer } from '@peertube/peertube-models'
10import { VideosOverview as VideosOverviewServer } from '@shared/models'
11import { environment } from '../../../../environments/environment' 10import { environment } from '../../../../environments/environment'
12import { VideosOverview } from './videos-overview.model' 11import { VideosOverview } from './videos-overview.model'
13 12
diff --git a/client/src/app/+videos/video-list/overview/videos-overview.model.ts b/client/src/app/+videos/video-list/overview/videos-overview.model.ts
index 6765ad9b7..1208d5a00 100644
--- a/client/src/app/+videos/video-list/overview/videos-overview.model.ts
+++ b/client/src/app/+videos/video-list/overview/videos-overview.model.ts
@@ -1,5 +1,5 @@
1import { Video } from '@app/shared/shared-main' 1import { Video } from '@app/shared/shared-main'
2import { VideoChannelSummary, VideoConstant, VideosOverview as VideosOverviewServer } from '@shared/models' 2import { VideoChannelSummary, VideoConstant, VideosOverview as VideosOverviewServer } from '@peertube/peertube-models'
3 3
4export class VideosOverview implements VideosOverviewServer { 4export class VideosOverview implements VideosOverviewServer {
5 channels: { 5 channels: {
diff --git a/client/src/app/+videos/video-list/video-user-subscriptions.component.ts b/client/src/app/+videos/video-list/video-user-subscriptions.component.ts
index 04f02c138..c9926488d 100644
--- a/client/src/app/+videos/video-list/video-user-subscriptions.component.ts
+++ b/client/src/app/+videos/video-list/video-user-subscriptions.component.ts
@@ -7,7 +7,7 @@ import { HooksService } from '@app/core/plugins/hooks.service'
7import { VideoService } from '@app/shared/shared-main' 7import { VideoService } from '@app/shared/shared-main'
8import { UserSubscriptionService } from '@app/shared/shared-user-subscription' 8import { UserSubscriptionService } from '@app/shared/shared-user-subscription'
9import { VideoFilters } from '@app/shared/shared-video-miniature' 9import { VideoFilters } from '@app/shared/shared-video-miniature'
10import { VideoSortField } from '@shared/models' 10import { VideoSortField } from '@peertube/peertube-models'
11 11
12@Component({ 12@Component({
13 selector: 'my-videos-user-subscriptions', 13 selector: 'my-videos-user-subscriptions',
diff --git a/client/src/app/+videos/video-list/videos-list-common-page.component.ts b/client/src/app/+videos/video-list/videos-list-common-page.component.ts
index c8fa8ef30..32954f373 100644
--- a/client/src/app/+videos/video-list/videos-list-common-page.component.ts
+++ b/client/src/app/+videos/video-list/videos-list-common-page.component.ts
@@ -4,7 +4,7 @@ import { ComponentPaginationLight, DisableForReuseHook, MetaService, RedirectSer
4import { HooksService } from '@app/core/plugins/hooks.service' 4import { HooksService } from '@app/core/plugins/hooks.service'
5import { VideoService } from '@app/shared/shared-main' 5import { VideoService } from '@app/shared/shared-main'
6import { VideoFilters, VideoFilterScope } from '@app/shared/shared-video-miniature/video-filters.model' 6import { VideoFilters, VideoFilterScope } from '@app/shared/shared-video-miniature/video-filters.model'
7import { ClientFilterHookName, VideoSortField } from '@shared/models' 7import { ClientFilterHookName, VideoSortField } from '@peertube/peertube-models'
8import { Subscription } from 'rxjs' 8import { Subscription } from 'rxjs'
9 9
10export type VideosListCommonPageRouteData = { 10export type VideosListCommonPageRouteData = {
diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts
index 40e4ec35d..360524d69 100644
--- a/client/src/app/app-routing.module.ts
+++ b/client/src/app/app-routing.module.ts
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'
2import { RouteReuseStrategy, RouterModule, Routes, UrlMatchResult, UrlSegment } from '@angular/router' 2import { RouteReuseStrategy, RouterModule, Routes, UrlMatchResult, UrlSegment } from '@angular/router'
3import { CustomReuseStrategy } from '@app/core/routing/custom-reuse-strategy' 3import { CustomReuseStrategy } from '@app/core/routing/custom-reuse-strategy'
4import { MenuGuards } from '@app/core/routing/menu-guard.service' 4import { MenuGuards } from '@app/core/routing/menu-guard.service'
5import { POSSIBLE_LOCALES } from '@shared/core-utils/i18n' 5import { POSSIBLE_LOCALES } from '@peertube/peertube-core-utils'
6import { HomepageRedirectComponent, MetaGuard, PreloadSelectedModulesList } from './core' 6import { HomepageRedirectComponent, MetaGuard, PreloadSelectedModulesList } from './core'
7import { EmptyComponent } from './empty.component' 7import { EmptyComponent } from './empty.component'
8import { USER_USERNAME_REGEX_CHARACTERS } from './shared/form-validators/user-validators' 8import { USER_USERNAME_REGEX_CHARACTERS } from './shared/form-validators/user-validators'
diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts
index f6d90cb64..4ad20bfd6 100644
--- a/client/src/app/app.component.ts
+++ b/client/src/app/app.component.ts
@@ -25,10 +25,10 @@ import { CustomModalComponent } from '@app/modal/custom-modal.component'
25import { InstanceConfigWarningModalComponent } from '@app/modal/instance-config-warning-modal.component' 25import { InstanceConfigWarningModalComponent } from '@app/modal/instance-config-warning-modal.component'
26import { NgbConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap' 26import { NgbConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap'
27import { LoadingBarService } from '@ngx-loading-bar/core' 27import { LoadingBarService } from '@ngx-loading-bar/core'
28import { getShortLocale } from '@peertube/peertube-core-utils'
29import { BroadcastMessageLevel, HTMLServerConfig, UserRole } from '@peertube/peertube-models'
28import { logger } from '@root-helpers/logger' 30import { logger } from '@root-helpers/logger'
29import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' 31import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage'
30import { getShortLocale } from '@shared/core-utils/i18n'
31import { BroadcastMessageLevel, HTMLServerConfig, UserRole } from '@shared/models'
32import { MenuService } from './core/menu/menu.service' 32import { MenuService } from './core/menu/menu.service'
33import { POP_STATE_MODAL_DISMISS } from './helpers' 33import { POP_STATE_MODAL_DISMISS } from './helpers'
34import { GlobalIconName } from './shared/shared-icons' 34import { GlobalIconName } from './shared/shared-icons'
diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts
index 226075265..a1e23bfbb 100644
--- a/client/src/app/core/auth/auth-user.model.ts
+++ b/client/src/app/core/auth/auth-user.model.ts
@@ -1,16 +1,16 @@
1import { Observable, of } from 'rxjs' 1import { Observable, of } from 'rxjs'
2import { map } from 'rxjs/operators' 2import { map } from 'rxjs/operators'
3import { User } from '@app/core/users/user.model' 3import { User } from '@app/core/users/user.model'
4import { OAuthUserTokens } from '@root-helpers/users' 4import { hasUserRight } from '@peertube/peertube-core-utils'
5import { hasUserRight } from '@shared/core-utils/users'
6import { 5import {
7 MyUser as ServerMyUserModel, 6 MyUser as ServerMyUserModel,
8 MyUserSpecialPlaylist, 7 MyUserSpecialPlaylist,
9 User as ServerUserModel, 8 User as ServerUserModel,
10 UserRight, 9 UserRightType,
11 UserRole, 10 UserRole,
12 UserVideoQuota 11 UserVideoQuota
13} from '@shared/models' 12} from '@peertube/peertube-models'
13import { OAuthUserTokens } from '@root-helpers/users'
14 14
15export class AuthUser extends User implements ServerMyUserModel { 15export class AuthUser extends User implements ServerMyUserModel {
16 oauthTokens: OAuthUserTokens 16 oauthTokens: OAuthUserTokens
@@ -42,7 +42,7 @@ export class AuthUser extends User implements ServerMyUserModel {
42 this.oauthTokens.refreshToken = refreshToken 42 this.oauthTokens.refreshToken = refreshToken
43 } 43 }
44 44
45 hasRight (right: UserRight) { 45 hasRight (right: UserRightType) {
46 return hasUserRight(this.role.id, right) 46 return hasUserRight(this.role.id, right)
47 } 47 }
48 48
diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts
index 6fe601d8d..bc67ab7a0 100644
--- a/client/src/app/core/auth/auth.service.ts
+++ b/client/src/app/core/auth/auth.service.ts
@@ -6,7 +6,7 @@ import { Injectable } from '@angular/core'
6import { Router } from '@angular/router' 6import { Router } from '@angular/router'
7import { Notifier } from '@app/core/notification/notifier.service' 7import { Notifier } from '@app/core/notification/notifier.service'
8import { logger, OAuthUserTokens, objectToUrlEncoded, peertubeLocalStorage } from '@root-helpers/index' 8import { logger, OAuthUserTokens, objectToUrlEncoded, peertubeLocalStorage } from '@root-helpers/index'
9import { HttpStatusCode, MyUser as UserServerModel, OAuthClientLocal, User, UserLogin, UserRefreshToken } from '@shared/models' 9import { HttpStatusCode, MyUser as UserServerModel, OAuthClientLocal, User, UserLogin, UserRefreshToken } from '@peertube/peertube-models'
10import { environment } from '../../../environments/environment' 10import { environment } from '../../../environments/environment'
11import { RestExtractor } from '../rest/rest-extractor.service' 11import { RestExtractor } from '../rest/rest-extractor.service'
12import { RedirectService } from '../routing' 12import { RedirectService } from '../routing'
diff --git a/client/src/app/core/menu/menu.service.ts b/client/src/app/core/menu/menu.service.ts
index d865c7da2..39e89f6e3 100644
--- a/client/src/app/core/menu/menu.service.ts
+++ b/client/src/app/core/menu/menu.service.ts
@@ -2,7 +2,7 @@ import { fromEvent } from 'rxjs'
2import { debounceTime } from 'rxjs/operators' 2import { debounceTime } from 'rxjs/operators'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { GlobalIconName } from '@app/shared/shared-icons' 4import { GlobalIconName } from '@app/shared/shared-icons'
5import { HTMLServerConfig } from '@shared/models/server' 5import { HTMLServerConfig } from '@peertube/peertube-models'
6import { ScreenService } from '../wrappers' 6import { ScreenService } from '../wrappers'
7 7
8export type MenuLink = { 8export type MenuLink = {
diff --git a/client/src/app/core/notification/peertube-socket.service.ts b/client/src/app/core/notification/peertube-socket.service.ts
index 50a11e948..15af9a310 100644
--- a/client/src/app/core/notification/peertube-socket.service.ts
+++ b/client/src/app/core/notification/peertube-socket.service.ts
@@ -1,7 +1,7 @@
1import { Subject } from 'rxjs' 1import { Subject } from 'rxjs'
2import { ManagerOptions, Socket, SocketOptions } from 'socket.io-client' 2import { ManagerOptions, Socket, SocketOptions } from 'socket.io-client'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { LiveVideoEventPayload, LiveVideoEventType, UserNotification as UserNotificationServer } from '@shared/models' 4import { LiveVideoEventPayload, LiveVideoEventType, UserNotification as UserNotificationServer } from '@peertube/peertube-models'
5import { environment } from '../../../environments/environment' 5import { environment } from '../../../environments/environment'
6import { AuthService } from '../auth' 6import { AuthService } from '../auth'
7 7
diff --git a/client/src/app/core/plugins/hooks.service.ts b/client/src/app/core/plugins/hooks.service.ts
index d9fef8389..59c627c05 100644
--- a/client/src/app/core/plugins/hooks.service.ts
+++ b/client/src/app/core/plugins/hooks.service.ts
@@ -3,7 +3,7 @@ import { mergeMap, switchMap } from 'rxjs/operators'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { PluginService } from '@app/core/plugins/plugin.service' 4import { PluginService } from '@app/core/plugins/plugin.service'
5import { logger } from '@root-helpers/logger' 5import { logger } from '@root-helpers/logger'
6import { ClientActionHookName, ClientFilterHookName, PluginClientScope } from '@shared/models' 6import { ClientActionHookName, ClientFilterHookName, PluginClientScope } from '@peertube/peertube-models'
7import { AuthService, AuthStatus } from '../auth' 7import { AuthService, AuthStatus } from '../auth'
8 8
9type RawFunction<U, T> = (params: U) => T 9type RawFunction<U, T> = (params: U) => T
diff --git a/client/src/app/core/plugins/plugin.service.ts b/client/src/app/core/plugins/plugin.service.ts
index bd8c61d9a..d37b2e5f7 100644
--- a/client/src/app/core/plugins/plugin.service.ts
+++ b/client/src/app/core/plugins/plugin.service.ts
@@ -10,22 +10,22 @@ import { RestExtractor } from '@app/core/rest'
10import { ServerService } from '@app/core/server/server.service' 10import { ServerService } from '@app/core/server/server.service'
11import { getDevLocale, isOnDevLocale } from '@app/helpers' 11import { getDevLocale, isOnDevLocale } from '@app/helpers'
12import { CustomModalComponent } from '@app/modal/custom-modal.component' 12import { CustomModalComponent } from '@app/modal/custom-modal.component'
13import { PluginInfo, PluginsManager } from '@root-helpers/plugins-manager' 13import { getCompleteLocale, getKeys, isDefaultLocale, peertubeTranslate } from '@peertube/peertube-core-utils'
14import { getKeys } from '@shared/core-utils'
15import { getCompleteLocale, isDefaultLocale, peertubeTranslate } from '@shared/core-utils/i18n'
16import { 14import {
17 ClientHook, 15 ClientHook,
18 ClientHookName, 16 ClientHookName,
19 PluginClientScope, 17 PluginClientScope,
20 PluginTranslation, 18 PluginTranslation,
21 PluginType, 19 PluginType,
20 PluginType_Type,
22 PublicServerSetting, 21 PublicServerSetting,
23 RegisterClientFormFieldOptions, 22 RegisterClientFormFieldOptions,
24 RegisterClientRouteOptions, 23 RegisterClientRouteOptions,
25 RegisterClientSettingsScriptOptions, 24 RegisterClientSettingsScriptOptions,
26 RegisterClientVideoFieldOptions, 25 RegisterClientVideoFieldOptions,
27 ServerConfigPlugin 26 ServerConfigPlugin
28} from '@shared/models' 27} from '@peertube/peertube-models'
28import { PluginInfo, PluginsManager } from '@root-helpers/plugins-manager'
29import { environment } from '../../../environments/environment' 29import { environment } from '../../../environments/environment'
30import { RegisterClientHelpers } from '../../../types/register-client-option.model' 30import { RegisterClientHelpers } from '../../../types/register-client-option.model'
31 31
@@ -110,7 +110,7 @@ export class PluginService implements ClientHook {
110 return this.pluginsManager.removePlugin(plugin) 110 return this.pluginsManager.removePlugin(plugin)
111 } 111 }
112 112
113 nameToNpmName (name: string, type: PluginType) { 113 nameToNpmName (name: string, type: PluginType_Type) {
114 const prefix = type === PluginType.PLUGIN 114 const prefix = type === PluginType.PLUGIN
115 ? 'peertube-plugin-' 115 ? 'peertube-plugin-'
116 : 'peertube-theme-' 116 : 'peertube-theme-'
diff --git a/client/src/app/core/renderer/html-renderer.service.ts b/client/src/app/core/renderer/html-renderer.service.ts
index 7776ccad5..37741c079 100644
--- a/client/src/app/core/renderer/html-renderer.service.ts
+++ b/client/src/app/core/renderer/html-renderer.service.ts
@@ -1,5 +1,5 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { getCustomMarkupSanitizeOptions, getDefaultSanitizeOptions } from '@shared/core-utils/renderer/html' 2import { getCustomMarkupSanitizeOptions, getDefaultSanitizeOptions } from '@peertube/peertube-core-utils'
3import { LinkifierService } from './linkifier.service' 3import { LinkifierService } from './linkifier.service'
4 4
5@Injectable() 5@Injectable()
diff --git a/client/src/app/core/renderer/markdown.service.ts b/client/src/app/core/renderer/markdown.service.ts
index ec3b683bb..907b92232 100644
--- a/client/src/app/core/renderer/markdown.service.ts
+++ b/client/src/app/core/renderer/markdown.service.ts
@@ -1,13 +1,14 @@
1import * as MarkdownIt from 'markdown-it' 1import * as MarkdownIt from 'markdown-it'
2import { Injectable } from '@angular/core' 2import { Injectable } from '@angular/core'
3import { buildVideoLink, decorateVideoLink } from '@shared/core-utils'
4import { 3import {
4 buildVideoLink,
5 COMPLETE_RULES, 5 COMPLETE_RULES,
6 decorateVideoLink,
6 ENHANCED_RULES, 7 ENHANCED_RULES,
7 ENHANCED_WITH_HTML_RULES, 8 ENHANCED_WITH_HTML_RULES,
8 TEXT_RULES, 9 TEXT_RULES,
9 TEXT_WITH_HTML_RULES 10 TEXT_WITH_HTML_RULES
10} from '@shared/core-utils/renderer/markdown' 11} from '@peertube/peertube-core-utils'
11import { HtmlRendererService } from './html-renderer.service' 12import { HtmlRendererService } from './html-renderer.service'
12 13
13type MarkdownParsers = { 14type MarkdownParsers = {
diff --git a/client/src/app/core/rest/rest-extractor.service.ts b/client/src/app/core/rest/rest-extractor.service.ts
index c6c1e183f..bcc50c0f4 100644
--- a/client/src/app/core/rest/rest-extractor.service.ts
+++ b/client/src/app/core/rest/rest-extractor.service.ts
@@ -1,10 +1,10 @@
1import { throwError as observableThrowError } from 'rxjs' 1import { throwError as observableThrowError } from 'rxjs'
2import { HttpHeaderResponse } from '@angular/common/http'
2import { Inject, Injectable, LOCALE_ID } from '@angular/core' 3import { Inject, Injectable, LOCALE_ID } from '@angular/core'
3import { Router } from '@angular/router' 4import { Router } from '@angular/router'
4import { DateFormat, dateToHuman } from '@app/helpers' 5import { DateFormat, dateToHuman } from '@app/helpers'
6import { HttpStatusCode, HttpStatusCodeType, ResultList } from '@peertube/peertube-models'
5import { logger } from '@root-helpers/logger' 7import { logger } from '@root-helpers/logger'
6import { HttpStatusCode, ResultList } from '@shared/models'
7import { HttpHeaderResponse } from '@angular/common/http'
8 8
9@Injectable() 9@Injectable()
10export class RestExtractor { 10export class RestExtractor {
@@ -45,7 +45,11 @@ export class RestExtractor {
45 return target 45 return target
46 } 46 }
47 47
48 redirectTo404IfNotFound (obj: { status: number }, type: 'video' | 'other', status = [ HttpStatusCode.NOT_FOUND_404 ]) { 48 redirectTo404IfNotFound (
49 obj: { status: HttpStatusCodeType },
50 type: 'video' | 'other',
51 status: HttpStatusCodeType[] = [ HttpStatusCode.NOT_FOUND_404 ]
52 ) {
49 if (obj?.status && status.includes(obj.status)) { 53 if (obj?.status && status.includes(obj.status)) {
50 // Do not use redirectService to avoid circular dependencies 54 // Do not use redirectService to avoid circular dependencies
51 this.router.navigate([ '/404' ], { state: { type, obj }, skipLocationChange: true }) 55 this.router.navigate([ '/404' ], { state: { type, obj }, skipLocationChange: true })
diff --git a/client/src/app/core/routing/homepage-redirect.component.ts b/client/src/app/core/routing/homepage-redirect.component.ts
index 9e3848038..e9be832e0 100644
--- a/client/src/app/core/routing/homepage-redirect.component.ts
+++ b/client/src/app/core/routing/homepage-redirect.component.ts
@@ -1,6 +1,6 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { ActivatedRoute } from '@angular/router' 2import { ActivatedRoute } from '@angular/router'
3import { is18nPath } from '@shared/core-utils/i18n/i18n' 3import { is18nPath } from '@peertube/peertube-core-utils'
4import { RedirectService } from './redirect.service' 4import { RedirectService } from './redirect.service'
5 5
6/* 6/*
diff --git a/client/src/app/core/routing/meta.service.ts b/client/src/app/core/routing/meta.service.ts
index 97e440faf..d50f0d65a 100644
--- a/client/src/app/core/routing/meta.service.ts
+++ b/client/src/app/core/routing/meta.service.ts
@@ -1,6 +1,6 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { Meta, Title } from '@angular/platform-browser' 2import { Meta, Title } from '@angular/platform-browser'
3import { HTMLServerConfig } from '@shared/models/server' 3import { HTMLServerConfig } from '@peertube/peertube-models'
4import { ServerService } from '../server' 4import { ServerService } from '../server'
5 5
6export interface MetaSettings { 6export interface MetaSettings {
diff --git a/client/src/app/core/scoped-tokens/scoped-tokens.service.ts b/client/src/app/core/scoped-tokens/scoped-tokens.service.ts
index 038e5031c..f7d192feb 100644
--- a/client/src/app/core/scoped-tokens/scoped-tokens.service.ts
+++ b/client/src/app/core/scoped-tokens/scoped-tokens.service.ts
@@ -1,7 +1,7 @@
1import { catchError } from 'rxjs/operators' 1import { catchError } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { ScopedToken } from '@shared/models/users/user-scoped-token' 4import { ScopedToken } from '@peertube/peertube-models'
5import { environment } from '../../../environments/environment' 5import { environment } from '../../../environments/environment'
6import { RestExtractor } from '../rest' 6import { RestExtractor } from '../rest'
7 7
diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts
index 41cb4791a..75ac8ddc1 100644
--- a/client/src/app/core/server/server.service.ts
+++ b/client/src/app/core/server/server.service.ts
@@ -3,9 +3,16 @@ import { first, map, share, shareReplay, switchMap, tap } from 'rxjs/operators'
3import { HttpClient } from '@angular/common/http' 3import { HttpClient } from '@angular/common/http'
4import { Inject, Injectable, LOCALE_ID } from '@angular/core' 4import { Inject, Injectable, LOCALE_ID } from '@angular/core'
5import { getDevLocale, isOnDevLocale } from '@app/helpers' 5import { getDevLocale, isOnDevLocale } from '@app/helpers'
6import { getCompleteLocale, isDefaultLocale, peertubeTranslate } from '@peertube/peertube-core-utils'
7import {
8 HTMLServerConfig,
9 ServerConfig,
10 ServerStats,
11 VideoConstant,
12 VideoPlaylistPrivacyType,
13 VideoPrivacyType
14} from '@peertube/peertube-models'
6import { logger } from '@root-helpers/logger' 15import { logger } from '@root-helpers/logger'
7import { getCompleteLocale, isDefaultLocale, peertubeTranslate } from '@shared/core-utils/i18n'
8import { HTMLServerConfig, ServerConfig, ServerStats, VideoConstant } from '@shared/models'
9import { environment } from '../../../environments/environment' 16import { environment } from '../../../environments/environment'
10 17
11@Injectable() 18@Injectable()
@@ -21,8 +28,8 @@ export class ServerService {
21 private localeObservable: Observable<any> 28 private localeObservable: Observable<any>
22 private videoLicensesObservable: Observable<VideoConstant<number>[]> 29 private videoLicensesObservable: Observable<VideoConstant<number>[]>
23 private videoCategoriesObservable: Observable<VideoConstant<number>[]> 30 private videoCategoriesObservable: Observable<VideoConstant<number>[]>
24 private videoPrivaciesObservable: Observable<VideoConstant<number>[]> 31 private videoPrivaciesObservable: Observable<VideoConstant<VideoPrivacyType>[]>
25 private videoPlaylistPrivaciesObservable: Observable<VideoConstant<number>[]> 32 private videoPlaylistPrivaciesObservable: Observable<VideoConstant<VideoPlaylistPrivacyType>[]>
26 private videoLanguagesObservable: Observable<VideoConstant<string>[]> 33 private videoLanguagesObservable: Observable<VideoConstant<string>[]>
27 private configObservable: Observable<ServerConfig> 34 private configObservable: Observable<ServerConfig>
28 35
@@ -123,7 +130,7 @@ export class ServerService {
123 130
124 getVideoPrivacies () { 131 getVideoPrivacies () {
125 if (!this.videoPrivaciesObservable) { 132 if (!this.videoPrivaciesObservable) {
126 this.videoPrivaciesObservable = this.loadAttributeEnum<number>(ServerService.BASE_VIDEO_URL, 'privacies') 133 this.videoPrivaciesObservable = this.loadAttributeEnum<VideoPrivacyType>(ServerService.BASE_VIDEO_URL, 'privacies')
127 } 134 }
128 135
129 return this.videoPrivaciesObservable.pipe(first()) 136 return this.videoPrivaciesObservable.pipe(first())
@@ -131,7 +138,10 @@ export class ServerService {
131 138
132 getVideoPlaylistPrivacies () { 139 getVideoPlaylistPrivacies () {
133 if (!this.videoPlaylistPrivaciesObservable) { 140 if (!this.videoPlaylistPrivaciesObservable) {
134 this.videoPlaylistPrivaciesObservable = this.loadAttributeEnum<number>(ServerService.BASE_VIDEO_PLAYLIST_URL, 'privacies') 141 this.videoPlaylistPrivaciesObservable = this.loadAttributeEnum<VideoPlaylistPrivacyType>(
142 ServerService.BASE_VIDEO_PLAYLIST_URL,
143 'privacies'
144 )
135 } 145 }
136 146
137 return this.videoPlaylistPrivaciesObservable.pipe(first()) 147 return this.videoPlaylistPrivaciesObservable.pipe(first())
diff --git a/client/src/app/core/theme/theme.service.ts b/client/src/app/core/theme/theme.service.ts
index ead1770ba..22eb5ddd3 100644
--- a/client/src/app/core/theme/theme.service.ts
+++ b/client/src/app/core/theme/theme.service.ts
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'
2import { logger } from '@root-helpers/logger' 2import { logger } from '@root-helpers/logger'
3import { capitalizeFirstLetter } from '@root-helpers/string' 3import { capitalizeFirstLetter } from '@root-helpers/string'
4import { UserLocalStorageKeys } from '@root-helpers/users' 4import { UserLocalStorageKeys } from '@root-helpers/users'
5import { HTMLServerConfig, ServerConfigTheme } from '@shared/models' 5import { HTMLServerConfig, ServerConfigTheme } from '@peertube/peertube-models'
6import { environment } from '../../../environments/environment' 6import { environment } from '../../../environments/environment'
7import { AuthService } from '../auth' 7import { AuthService } from '../auth'
8import { PluginService } from '../plugins/plugin.service' 8import { PluginService } from '../plugins/plugin.service'
diff --git a/client/src/app/core/users/user-local-storage.service.ts b/client/src/app/core/users/user-local-storage.service.ts
index a87f3b98a..431a57343 100644
--- a/client/src/app/core/users/user-local-storage.service.ts
+++ b/client/src/app/core/users/user-local-storage.service.ts
@@ -1,13 +1,11 @@
1
2import { filter, throttleTime } from 'rxjs' 1import { filter, throttleTime } from 'rxjs'
3import { Injectable } from '@angular/core' 2import { Injectable } from '@angular/core'
4import { AuthService, AuthStatus } from '@app/core/auth' 3import { AuthService, AuthStatus } from '@app/core/auth'
4import { objectKeysTyped } from '@peertube/peertube-core-utils'
5import { NSFWPolicyType, UserRoleType, UserUpdateMe } from '@peertube/peertube-models'
5import { getBoolOrDefault } from '@root-helpers/local-storage-utils' 6import { getBoolOrDefault } from '@root-helpers/local-storage-utils'
6import { logger } from '@root-helpers/logger' 7import { logger } from '@root-helpers/logger'
7import { OAuthUserTokens, UserLocalStorageKeys } from '@root-helpers/users' 8import { OAuthUserTokens, UserLocalStorageKeys } from '@root-helpers/users'
8import { objectKeysTyped } from '@shared/core-utils'
9import { UserRole, UserUpdateMe } from '@shared/models'
10import { NSFWPolicyType } from '@shared/models/videos'
11import { ServerService } from '../server' 9import { ServerService } from '../server'
12import { LocalStorageService } from '../wrappers/storage.service' 10import { LocalStorageService } from '../wrappers/storage.service'
13 11
@@ -61,7 +59,7 @@ export class UserLocalStorageService {
61 username: this.localStorageService.getItem(UserLocalStorageKeys.USERNAME), 59 username: this.localStorageService.getItem(UserLocalStorageKeys.USERNAME),
62 email: this.localStorageService.getItem(UserLocalStorageKeys.EMAIL), 60 email: this.localStorageService.getItem(UserLocalStorageKeys.EMAIL),
63 role: { 61 role: {
64 id: parseInt(this.localStorageService.getItem(UserLocalStorageKeys.ROLE), 10) as UserRole, 62 id: parseInt(this.localStorageService.getItem(UserLocalStorageKeys.ROLE), 10) as UserRoleType,
65 label: '' 63 label: ''
66 }, 64 },
67 65
@@ -74,7 +72,7 @@ export class UserLocalStorageService {
74 username: string 72 username: string
75 email: string 73 email: string
76 role: { 74 role: {
77 id: UserRole 75 id: UserRoleType
78 } 76 }
79 }) { 77 }) {
80 this.localStorageService.setItem(UserLocalStorageKeys.ID, user.id.toString()) 78 this.localStorageService.setItem(UserLocalStorageKeys.ID, user.id.toString())
diff --git a/client/src/app/core/users/user.model.ts b/client/src/app/core/users/user.model.ts
index 54b749a4c..ffc7c2b44 100644
--- a/client/src/app/core/users/user.model.ts
+++ b/client/src/app/core/users/user.model.ts
@@ -1,17 +1,18 @@
1import { Account } from '@app/shared/shared-main/account/account.model' 1import { Account } from '@app/shared/shared-main/account/account.model'
2import { objectKeysTyped } from '@shared/core-utils' 2import { hasUserRight, objectKeysTyped } from '@peertube/peertube-core-utils'
3import { hasUserRight } from '@shared/core-utils/users'
4import { 3import {
5 ActorImage, 4 ActorImage,
6 HTMLServerConfig, 5 HTMLServerConfig,
7 NSFWPolicyType, 6 NSFWPolicyType,
8 User as UserServerModel, 7 User as UserServerModel,
9 UserAdminFlag, 8 UserAdminFlag,
9 UserAdminFlagType,
10 UserNotificationSetting, 10 UserNotificationSetting,
11 UserRight, 11 UserRightType,
12 UserRole, 12 UserRole,
13 UserRoleType,
13 VideoChannel 14 VideoChannel
14} from '@shared/models' 15} from '@peertube/peertube-models'
15 16
16export class User implements UserServerModel { 17export class User implements UserServerModel {
17 id: number 18 id: number
@@ -23,7 +24,7 @@ export class User implements UserServerModel {
23 emailPublic: boolean 24 emailPublic: boolean
24 nsfwPolicy: NSFWPolicyType 25 nsfwPolicy: NSFWPolicyType
25 26
26 adminFlags?: UserAdminFlag 27 adminFlags?: UserAdminFlagType
27 28
28 autoPlayVideo: boolean 29 autoPlayVideo: boolean
29 autoPlayNextVideo: boolean 30 autoPlayNextVideo: boolean
@@ -35,7 +36,7 @@ export class User implements UserServerModel {
35 videoLanguages: string[] 36 videoLanguages: string[]
36 37
37 role: { 38 role: {
38 id: UserRole 39 id: UserRoleType
39 label: string 40 label: string
40 } 41 }
41 42
@@ -124,7 +125,7 @@ export class User implements UserServerModel {
124 } 125 }
125 } 126 }
126 127
127 hasRight (right: UserRight) { 128 hasRight (right: UserRightType) {
128 return hasUserRight(this.role.id, right) 129 return hasUserRight(this.role.id, right)
129 } 130 }
130 131
diff --git a/client/src/app/core/users/user.service.ts b/client/src/app/core/users/user.service.ts
index b4024c02d..7ad0ee9bf 100644
--- a/client/src/app/core/users/user.service.ts
+++ b/client/src/app/core/users/user.service.ts
@@ -3,7 +3,7 @@ import { catchError, first, map, shareReplay } from 'rxjs/operators'
3import { HttpClient, HttpParams } from '@angular/common/http' 3import { HttpClient, HttpParams } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { AuthService } from '@app/core/auth' 5import { AuthService } from '@app/core/auth'
6import { ActorImage, User as UserServerModel, UserUpdateMe, UserVideoQuota } from '@shared/models' 6import { ActorImage, User as UserServerModel, UserUpdateMe, UserVideoQuota } from '@peertube/peertube-models'
7import { environment } from '../../../environments/environment' 7import { environment } from '../../../environments/environment'
8import { RestExtractor } from '../rest' 8import { RestExtractor } from '../rest'
9import { UserLocalStorageService } from './user-local-storage.service' 9import { UserLocalStorageService } from './user-local-storage.service'
diff --git a/client/src/app/header/search-typeahead.component.ts b/client/src/app/header/search-typeahead.component.ts
index d2549315c..a3a04041f 100644
--- a/client/src/app/header/search-typeahead.component.ts
+++ b/client/src/app/header/search-typeahead.component.ts
@@ -5,7 +5,7 @@ import { AfterViewChecked, Component, OnDestroy, OnInit, QueryList, ViewChildren
5import { ActivatedRoute, Params, Router } from '@angular/router' 5import { ActivatedRoute, Params, Router } from '@angular/router'
6import { AuthService, ServerService } from '@app/core' 6import { AuthService, ServerService } from '@app/core'
7import { logger } from '@root-helpers/logger' 7import { logger } from '@root-helpers/logger'
8import { HTMLServerConfig, SearchTargetType } from '@shared/models' 8import { HTMLServerConfig, SearchTargetType } from '@peertube/peertube-models'
9import { SuggestionComponent, SuggestionPayload, SuggestionPayloadType } from './suggestion.component' 9import { SuggestionComponent, SuggestionPayload, SuggestionPayloadType } from './suggestion.component'
10 10
11@Component({ 11@Component({
diff --git a/client/src/app/helpers/utils/channel.ts b/client/src/app/helpers/utils/channel.ts
index 83f36b70f..fe59ea567 100644
--- a/client/src/app/helpers/utils/channel.ts
+++ b/client/src/app/helpers/utils/channel.ts
@@ -1,7 +1,7 @@
1import { minBy } from 'lodash-es' 1import { minBy } from 'lodash-es'
2import { first, map } from 'rxjs/operators' 2import { first, map } from 'rxjs/operators'
3import { SelectChannelItem } from 'src/types/select-options-item.model' 3import { SelectChannelItem } from 'src/types/select-options-item.model'
4import { VideoChannel } from '@shared/models' 4import { VideoChannel } from '@peertube/peertube-models'
5import { AuthService } from '../../core/auth' 5import { AuthService } from '../../core/auth'
6 6
7function listUserChannelsForSelect (authService: AuthService) { 7function listUserChannelsForSelect (authService: AuthService) {
diff --git a/client/src/app/helpers/utils/upload.ts b/client/src/app/helpers/utils/upload.ts
index b60951612..b55415064 100644
--- a/client/src/app/helpers/utils/upload.ts
+++ b/client/src/app/helpers/utils/upload.ts
@@ -1,6 +1,6 @@
1import { HttpErrorResponse } from '@angular/common/http' 1import { HttpErrorResponse } from '@angular/common/http'
2import { Notifier } from '@app/core' 2import { Notifier } from '@app/core'
3import { HttpStatusCode } from '@shared/models' 3import { HttpStatusCode } from '@peertube/peertube-models'
4 4
5function genericUploadErrorHandler (options: { 5function genericUploadErrorHandler (options: {
6 err: Pick<HttpErrorResponse, 'message' | 'status' | 'headers'> 6 err: Pick<HttpErrorResponse, 'message' | 'status' | 'headers'>
diff --git a/client/src/app/menu/language-chooser.component.ts b/client/src/app/menu/language-chooser.component.ts
index f7ae69717..1ec5987c2 100644
--- a/client/src/app/menu/language-chooser.component.ts
+++ b/client/src/app/menu/language-chooser.component.ts
@@ -1,8 +1,7 @@
1import { Component, ElementRef, Inject, LOCALE_ID, ViewChild } from '@angular/core' 1import { Component, ElementRef, Inject, LOCALE_ID, ViewChild } from '@angular/core'
2import { getDevLocale, isOnDevLocale, sortBy } from '@app/helpers' 2import { getDevLocale, isOnDevLocale, sortBy } from '@app/helpers'
3import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 3import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
4import { objectKeysTyped } from '@shared/core-utils' 4import { getCompleteLocale, getShortLocale, I18N_LOCALES, objectKeysTyped } from '@peertube/peertube-core-utils'
5import { getCompleteLocale, getShortLocale, I18N_LOCALES } from '@shared/core-utils/i18n'
6 5
7@Component({ 6@Component({
8 selector: 'my-language-chooser', 7 selector: 'my-language-chooser',
diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts
index 410abe6fa..6d309f15a 100644
--- a/client/src/app/menu/menu.component.ts
+++ b/client/src/app/menu/menu.component.ts
@@ -22,7 +22,7 @@ import { LanguageChooserComponent } from '@app/menu/language-chooser.component'
22import { QuickSettingsModalComponent } from '@app/modal/quick-settings-modal.component' 22import { QuickSettingsModalComponent } from '@app/modal/quick-settings-modal.component'
23import { PeertubeModalService } from '@app/shared/shared-main/peertube-modal/peertube-modal.service' 23import { PeertubeModalService } from '@app/shared/shared-main/peertube-modal/peertube-modal.service'
24import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' 24import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'
25import { HTMLServerConfig, ServerConfig, UserRight, VideoConstant } from '@shared/models' 25import { HTMLServerConfig, ServerConfig, UserRight, UserRightType, VideoConstant } from '@peertube/peertube-models'
26 26
27const debugLogger = debug('peertube:menu:MenuComponent') 27const debugLogger = debug('peertube:menu:MenuComponent')
28 28
@@ -54,7 +54,7 @@ export class MenuComponent implements OnInit, OnDestroy {
54 private htmlServerConfig: HTMLServerConfig 54 private htmlServerConfig: HTMLServerConfig
55 private serverConfig: ServerConfig 55 private serverConfig: ServerConfig
56 56
57 private routesPerRight: { [role in UserRight]?: string } = { 57 private routesPerRight: { [role in UserRightType]?: string } = {
58 [UserRight.MANAGE_USERS]: '/admin/users', 58 [UserRight.MANAGE_USERS]: '/admin/users',
59 [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends', 59 [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends',
60 [UserRight.MANAGE_ABUSES]: '/admin/moderation/abuses', 60 [UserRight.MANAGE_ABUSES]: '/admin/moderation/abuses',
diff --git a/client/src/app/modal/instance-config-warning-modal.component.ts b/client/src/app/modal/instance-config-warning-modal.component.ts
index 23c2c777e..f8ab155ae 100644
--- a/client/src/app/modal/instance-config-warning-modal.component.ts
+++ b/client/src/app/modal/instance-config-warning-modal.component.ts
@@ -2,9 +2,9 @@ import { Location } from '@angular/common'
2import { Component, ElementRef, ViewChild } from '@angular/core' 2import { Component, ElementRef, ViewChild } from '@angular/core'
3import { Notifier, User, UserService } from '@app/core' 3import { Notifier, User, UserService } from '@app/core'
4import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
5import { About, ServerConfig } from '@peertube/peertube-models'
5import { logger } from '@root-helpers/logger' 6import { logger } from '@root-helpers/logger'
6import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' 7import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage'
7import { About, ServerConfig } from '@shared/models/server'
8 8
9@Component({ 9@Component({
10 selector: 'my-instance-config-warning-modal', 10 selector: 'my-instance-config-warning-modal',
diff --git a/client/src/app/shared/form-validators/video-playlist-validators.ts b/client/src/app/shared/form-validators/video-playlist-validators.ts
index 63af637a3..3cddcaad2 100644
--- a/client/src/app/shared/form-validators/video-playlist-validators.ts
+++ b/client/src/app/shared/form-validators/video-playlist-validators.ts
@@ -1,6 +1,6 @@
1import { Validators, AbstractControl } from '@angular/forms' 1import { Validators, AbstractControl } from '@angular/forms'
2import { BuildFormValidator } from './form-validator.model' 2import { BuildFormValidator } from './form-validator.model'
3import { VideoPlaylistPrivacy } from '@shared/models' 3import { VideoPlaylistPrivacy, VideoPlaylistPrivacyType } from '@peertube/peertube-models'
4 4
5export const VIDEO_PLAYLIST_DISPLAY_NAME_VALIDATOR: BuildFormValidator = { 5export const VIDEO_PLAYLIST_DISPLAY_NAME_VALIDATOR: BuildFormValidator = {
6 VALIDATORS: [ 6 VALIDATORS: [
@@ -42,7 +42,7 @@ export const VIDEO_PLAYLIST_CHANNEL_ID_VALIDATOR: BuildFormValidator = {
42 } 42 }
43} 43}
44 44
45export function setPlaylistChannelValidator (channelControl: AbstractControl, privacy: VideoPlaylistPrivacy) { 45export function setPlaylistChannelValidator (channelControl: AbstractControl, privacy: VideoPlaylistPrivacyType) {
46 if (privacy.toString() === VideoPlaylistPrivacy.PUBLIC.toString()) { 46 if (privacy.toString() === VideoPlaylistPrivacy.PUBLIC.toString()) {
47 channelControl.setValidators([ Validators.required ]) 47 channelControl.setValidators([ Validators.required ])
48 } else { 48 } else {
diff --git a/client/src/app/shared/shared-abuse-list/abuse-details.component.ts b/client/src/app/shared/shared-abuse-list/abuse-details.component.ts
index e15edf8c2..357dc4522 100644
--- a/client/src/app/shared/shared-abuse-list/abuse-details.component.ts
+++ b/client/src/app/shared/shared-abuse-list/abuse-details.component.ts
@@ -1,6 +1,6 @@
1import { Component, Input, OnInit } from '@angular/core' 1import { Component, Input, OnInit } from '@angular/core'
2import { durationToString } from '@app/helpers' 2import { durationToString } from '@app/helpers'
3import { AbusePredefinedReasonsString } from '@shared/models' 3import { AbusePredefinedReasonsString } from '@peertube/peertube-models'
4import { ProcessedAbuse } from './processed-abuse.model' 4import { ProcessedAbuse } from './processed-abuse.model'
5 5
6@Component({ 6@Component({
diff --git a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts
index d8470e927..c38e1286f 100644
--- a/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts
+++ b/client/src/app/shared/shared-abuse-list/abuse-list-table.component.ts
@@ -7,8 +7,8 @@ import { ConfirmService, MarkdownService, Notifier, RestPagination, RestTable }
7import { Account, Actor, DropdownAction, Video, VideoService } from '@app/shared/shared-main' 7import { Account, Actor, DropdownAction, Video, VideoService } from '@app/shared/shared-main'
8import { AbuseService, BlocklistService, VideoBlockService } from '@app/shared/shared-moderation' 8import { AbuseService, BlocklistService, VideoBlockService } from '@app/shared/shared-moderation'
9import { VideoCommentService } from '@app/shared/shared-video-comment' 9import { VideoCommentService } from '@app/shared/shared-video-comment'
10import { AbuseState, AbuseStateType, AdminAbuse } from '@peertube/peertube-models'
10import { logger } from '@root-helpers/logger' 11import { logger } from '@root-helpers/logger'
11import { AbuseState, AdminAbuse } from '@shared/models'
12import { AdvancedInputFilter } from '../shared-forms' 12import { AdvancedInputFilter } from '../shared-forms'
13import { AbuseMessageModalComponent } from './abuse-message-modal.component' 13import { AbuseMessageModalComponent } from './abuse-message-modal.component'
14import { ModerationCommentModalComponent } from './moderation-comment-modal.component' 14import { ModerationCommentModalComponent } from './moderation-comment-modal.component'
@@ -144,7 +144,7 @@ export class AbuseListTableComponent extends RestTable implements OnInit {
144 }) 144 })
145 } 145 }
146 146
147 updateAbuseState (abuse: AdminAbuse, state: AbuseState) { 147 updateAbuseState (abuse: AdminAbuse, state: AbuseStateType) {
148 this.abuseService.updateAbuse(abuse, { state }) 148 this.abuseService.updateAbuse(abuse, { state })
149 .subscribe({ 149 .subscribe({
150 next: () => this.reloadData(), 150 next: () => this.reloadData(),
diff --git a/client/src/app/shared/shared-abuse-list/abuse-message-modal.component.ts b/client/src/app/shared/shared-abuse-list/abuse-message-modal.component.ts
index 12d503f56..8d20166f6 100644
--- a/client/src/app/shared/shared-abuse-list/abuse-message-modal.component.ts
+++ b/client/src/app/shared/shared-abuse-list/abuse-message-modal.component.ts
@@ -4,7 +4,7 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
4import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
5import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 5import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
6import { logger } from '@root-helpers/logger' 6import { logger } from '@root-helpers/logger'
7import { AbuseMessage, UserAbuse } from '@shared/models' 7import { AbuseMessage, UserAbuse } from '@peertube/peertube-models'
8import { ABUSE_MESSAGE_VALIDATOR } from '../form-validators/abuse-validators' 8import { ABUSE_MESSAGE_VALIDATOR } from '../form-validators/abuse-validators'
9import { AbuseService } from '../shared-moderation' 9import { AbuseService } from '../shared-moderation'
10 10
diff --git a/client/src/app/shared/shared-abuse-list/moderation-comment-modal.component.ts b/client/src/app/shared/shared-abuse-list/moderation-comment-modal.component.ts
index 4ad807d25..e42939f96 100644
--- a/client/src/app/shared/shared-abuse-list/moderation-comment-modal.component.ts
+++ b/client/src/app/shared/shared-abuse-list/moderation-comment-modal.component.ts
@@ -4,7 +4,7 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
4import { AbuseService } from '@app/shared/shared-moderation' 4import { AbuseService } from '@app/shared/shared-moderation'
5import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 5import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
6import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 6import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
7import { AdminAbuse } from '@shared/models' 7import { AdminAbuse } from '@peertube/peertube-models'
8import { ABUSE_MODERATION_COMMENT_VALIDATOR } from '../form-validators/abuse-validators' 8import { ABUSE_MODERATION_COMMENT_VALIDATOR } from '../form-validators/abuse-validators'
9 9
10@Component({ 10@Component({
diff --git a/client/src/app/shared/shared-abuse-list/processed-abuse.model.ts b/client/src/app/shared/shared-abuse-list/processed-abuse.model.ts
index b9a9bd889..076ccb40b 100644
--- a/client/src/app/shared/shared-abuse-list/processed-abuse.model.ts
+++ b/client/src/app/shared/shared-abuse-list/processed-abuse.model.ts
@@ -1,5 +1,5 @@
1import { Account } from '@app/shared/shared-main' 1import { Account } from '@app/shared/shared-main'
2import { AdminAbuse } from '@shared/models' 2import { AdminAbuse } from '@peertube/peertube-models'
3 3
4// Don't use an abuse model because we need external services to compute some properties 4// Don't use an abuse model because we need external services to compute some properties
5// And this model is only used in this component 5// And this model is only used in this component
diff --git a/client/src/app/shared/shared-actor-image/actor-avatar.component.ts b/client/src/app/shared/shared-actor-image/actor-avatar.component.ts
index ab2e02ad7..36babbe34 100644
--- a/client/src/app/shared/shared-actor-image/actor-avatar.component.ts
+++ b/client/src/app/shared/shared-actor-image/actor-avatar.component.ts
@@ -1,7 +1,7 @@
1import { Component, Input, OnChanges, OnInit } from '@angular/core' 1import { Component, Input, OnChanges, OnInit } from '@angular/core'
2import { VideoChannel } from '../shared-main' 2import { VideoChannel } from '../shared-main'
3import { Account } from '../shared-main/account/account.model' 3import { Account } from '../shared-main/account/account.model'
4import { objectKeysTyped } from '@shared/core-utils' 4import { objectKeysTyped } from '@peertube/peertube-core-utils'
5 5
6type ActorInput = { 6type ActorInput = {
7 name: string 7 name: string
diff --git a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts
index b49f64834..4ab78a250 100644
--- a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts
+++ b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts
@@ -10,7 +10,7 @@ import {
10 PlaylistMiniatureMarkupData, 10 PlaylistMiniatureMarkupData,
11 VideoMiniatureMarkupData, 11 VideoMiniatureMarkupData,
12 VideosListMarkupData 12 VideosListMarkupData
13} from '@shared/models' 13} from '@peertube/peertube-models'
14import { DynamicElementService } from './dynamic-element.service' 14import { DynamicElementService } from './dynamic-element.service'
15import { 15import {
16 ButtonMarkupComponent, 16 ButtonMarkupComponent,
diff --git a/client/src/app/shared/shared-custom-markup/dynamic-element.service.ts b/client/src/app/shared/shared-custom-markup/dynamic-element.service.ts
index a12907055..dc4f683ac 100644
--- a/client/src/app/shared/shared-custom-markup/dynamic-element.service.ts
+++ b/client/src/app/shared/shared-custom-markup/dynamic-element.service.ts
@@ -10,7 +10,7 @@ import {
10 SimpleChanges, 10 SimpleChanges,
11 Type 11 Type
12} from '@angular/core' 12} from '@angular/core'
13import { objectKeysTyped } from '@shared/core-utils' 13import { objectKeysTyped } from '@peertube/peertube-core-utils'
14 14
15@Injectable() 15@Injectable()
16export class DynamicElementService { 16export class DynamicElementService {
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts
index 4f00eabd3..b731ccc64 100644
--- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts
+++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/channel-miniature-markup.component.ts
@@ -3,7 +3,7 @@ import { finalize, map, switchMap, tap } from 'rxjs/operators'
3import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core' 3import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'
4import { MarkdownService, Notifier, UserService } from '@app/core' 4import { MarkdownService, Notifier, UserService } from '@app/core'
5import { FindInBulkService } from '@app/shared/shared-search' 5import { FindInBulkService } from '@app/shared/shared-search'
6import { VideoSortField } from '@shared/models' 6import { VideoSortField } from '@peertube/peertube-models'
7import { Video, VideoChannel, VideoService } from '../../shared-main' 7import { Video, VideoChannel, VideoService } from '../../shared-main'
8import { CustomMarkupComponent } from './shared' 8import { CustomMarkupComponent } from './shared'
9 9
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts
index 0baf2428b..bca7444ec 100644
--- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts
+++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/embed-markup.component.ts
@@ -1,7 +1,7 @@
1import { environment } from 'src/environments/environment' 1import { environment } from 'src/environments/environment'
2import { Component, ElementRef, Input, OnInit } from '@angular/core' 2import { Component, ElementRef, Input, OnInit } from '@angular/core'
3import { buildVideoOrPlaylistEmbed } from '@root-helpers/video' 3import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
4import { buildPlaylistEmbedLink, buildVideoEmbedLink } from '@shared/core-utils' 4import { buildPlaylistEmbedLink, buildVideoEmbedLink } from '@peertube/peertube-core-utils'
5import { CustomMarkupComponent } from './shared' 5import { CustomMarkupComponent } from './shared'
6 6
7@Component({ 7@Component({
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts
index bd93929c9..d692abbe3 100644
--- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts
+++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/video-miniature-markup.component.ts
@@ -2,7 +2,7 @@ import { finalize } from 'rxjs/operators'
2import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core' 2import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'
3import { AuthService, Notifier } from '@app/core' 3import { AuthService, Notifier } from '@app/core'
4import { FindInBulkService } from '@app/shared/shared-search' 4import { FindInBulkService } from '@app/shared/shared-search'
5import { objectKeysTyped } from '@shared/core-utils' 5import { objectKeysTyped } from '@peertube/peertube-core-utils'
6import { Video } from '../../shared-main' 6import { Video } from '../../shared-main'
7import { MiniatureDisplayOptions } from '../../shared-video-miniature' 7import { MiniatureDisplayOptions } from '../../shared-video-miniature'
8import { CustomMarkupComponent } from './shared' 8import { CustomMarkupComponent } from './shared'
diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts
index 81363be87..cbd5c7bf5 100644
--- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts
+++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts
@@ -1,8 +1,8 @@
1import { finalize } from 'rxjs/operators' 1import { finalize } from 'rxjs/operators'
2import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core' 2import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'
3import { AuthService, Notifier } from '@app/core' 3import { AuthService, Notifier } from '@app/core'
4import { objectKeysTyped } from '@shared/core-utils' 4import { objectKeysTyped } from '@peertube/peertube-core-utils'
5import { VideoSortField } from '@shared/models' 5import { VideoSortField } from '@peertube/peertube-models'
6import { Video, VideoService } from '../../shared-main' 6import { Video, VideoService } from '../../shared-main'
7import { MiniatureDisplayOptions } from '../../shared-video-miniature' 7import { MiniatureDisplayOptions } from '../../shared-video-miniature'
8import { CustomMarkupComponent } from './shared' 8import { CustomMarkupComponent } from './shared'
diff --git a/client/src/app/shared/shared-forms/dynamic-form-field.component.ts b/client/src/app/shared/shared-forms/dynamic-form-field.component.ts
index e1a1f8034..a95463944 100644
--- a/client/src/app/shared/shared-forms/dynamic-form-field.component.ts
+++ b/client/src/app/shared/shared-forms/dynamic-form-field.component.ts
@@ -1,6 +1,6 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { FormGroup } from '@angular/forms' 2import { FormGroup } from '@angular/forms'
3import { RegisterClientFormFieldOptions } from '@shared/models' 3import { RegisterClientFormFieldOptions } from '@peertube/peertube-models'
4 4
5@Component({ 5@Component({
6 selector: 'my-dynamic-form-field', 6 selector: 'my-dynamic-form-field',
diff --git a/client/src/app/shared/shared-forms/form-validator.service.ts b/client/src/app/shared/shared-forms/form-validator.service.ts
index 14ee044b5..e7dedf52a 100644
--- a/client/src/app/shared/shared-forms/form-validator.service.ts
+++ b/client/src/app/shared/shared-forms/form-validator.service.ts
@@ -1,6 +1,6 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { AsyncValidatorFn, FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms' 2import { AsyncValidatorFn, FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
3import { objectKeysTyped } from '@shared/core-utils' 3import { objectKeysTyped } from '@peertube/peertube-core-utils'
4import { BuildFormArgument, BuildFormDefaultValues } from '../form-validators/form-validator.model' 4import { BuildFormArgument, BuildFormDefaultValues } from '../form-validators/form-validator.model'
5import { FormReactiveErrors, FormReactiveValidationMessages } from './form-reactive.service' 5import { FormReactiveErrors, FormReactiveValidationMessages } from './form-reactive.service'
6 6
diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.ts b/client/src/app/shared/shared-forms/markdown-textarea.component.ts
index 036fab3d9..7edcf868c 100644
--- a/client/src/app/shared/shared-forms/markdown-textarea.component.ts
+++ b/client/src/app/shared/shared-forms/markdown-textarea.component.ts
@@ -6,7 +6,7 @@ import { Component, ElementRef, forwardRef, Input, OnInit, ViewChild } from '@an
6import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' 6import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
7import { SafeHtml } from '@angular/platform-browser' 7import { SafeHtml } from '@angular/platform-browser'
8import { MarkdownService, ScreenService } from '@app/core' 8import { MarkdownService, ScreenService } from '@app/core'
9import { Video } from '@shared/models' 9import { Video } from '@peertube/peertube-models'
10 10
11@Component({ 11@Component({
12 selector: 'my-markdown-textarea', 12 selector: 'my-markdown-textarea',
diff --git a/client/src/app/shared/shared-forms/preview-upload.component.ts b/client/src/app/shared/shared-forms/preview-upload.component.ts
index cdfa26a23..3db7c34f7 100644
--- a/client/src/app/shared/shared-forms/preview-upload.component.ts
+++ b/client/src/app/shared/shared-forms/preview-upload.component.ts
@@ -2,7 +2,7 @@ import { Component, forwardRef, Input, OnInit } from '@angular/core'
2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' 2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
3import { ServerService } from '@app/core' 3import { ServerService } from '@app/core'
4import { imageToDataURL } from '@root-helpers/images' 4import { imageToDataURL } from '@root-helpers/images'
5import { HTMLServerConfig } from '@shared/models' 5import { HTMLServerConfig } from '@peertube/peertube-models'
6import { BytesPipe } from '../shared-main' 6import { BytesPipe } from '../shared-main'
7 7
8@Component({ 8@Component({
diff --git a/client/src/app/shared/shared-forms/timestamp-input.component.ts b/client/src/app/shared/shared-forms/timestamp-input.component.ts
index 79ca63673..280491852 100644
--- a/client/src/app/shared/shared-forms/timestamp-input.component.ts
+++ b/client/src/app/shared/shared-forms/timestamp-input.component.ts
@@ -1,6 +1,6 @@
1import { ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core' 1import { ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core'
2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms' 2import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'
3import { secondsToTime, timeToInt } from '@shared/core-utils' 3import { secondsToTime, timeToInt } from '@peertube/peertube-core-utils'
4 4
5@Component({ 5@Component({
6 selector: 'my-timestamp-input', 6 selector: 'my-timestamp-input',
diff --git a/client/src/app/shared/shared-instance/instance-about-accordion.component.ts b/client/src/app/shared/shared-instance/instance-about-accordion.component.ts
index a7c521876..78d960d93 100644
--- a/client/src/app/shared/shared-instance/instance-about-accordion.component.ts
+++ b/client/src/app/shared/shared-instance/instance-about-accordion.component.ts
@@ -1,8 +1,7 @@
1import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core' 1import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'
2import { HooksService, Notifier } from '@app/core' 2import { HooksService, Notifier } from '@app/core'
3import { NgbAccordionDirective } from '@ng-bootstrap/ng-bootstrap' 3import { NgbAccordionDirective } from '@ng-bootstrap/ng-bootstrap'
4import { ClientFilterHookName, PluginClientScope } from '@shared/models/plugins' 4import { About, ClientFilterHookName, PluginClientScope } from '@peertube/peertube-models'
5import { About } from '@shared/models/server'
6import { InstanceService } from './instance.service' 5import { InstanceService } from './instance.service'
7 6
8@Component({ 7@Component({
diff --git a/client/src/app/shared/shared-instance/instance-features-table.component.ts b/client/src/app/shared/shared-instance/instance-features-table.component.ts
index ab1b1458a..11c6cc0ac 100644
--- a/client/src/app/shared/shared-instance/instance-features-table.component.ts
+++ b/client/src/app/shared/shared-instance/instance-features-table.component.ts
@@ -1,7 +1,7 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { ServerService } from '@app/core' 2import { ServerService } from '@app/core'
3import { formatICU } from '@app/helpers' 3import { formatICU } from '@app/helpers'
4import { ServerConfig } from '@shared/models' 4import { ServerConfig } from '@peertube/peertube-models'
5 5
6@Component({ 6@Component({
7 selector: 'my-instance-features-table', 7 selector: 'my-instance-features-table',
diff --git a/client/src/app/shared/shared-instance/instance-follow.service.ts b/client/src/app/shared/shared-instance/instance-follow.service.ts
index 7568fbbf4..f243273ba 100644
--- a/client/src/app/shared/shared-instance/instance-follow.service.ts
+++ b/client/src/app/shared/shared-instance/instance-follow.service.ts
@@ -4,8 +4,8 @@ import { catchError, concatMap, toArray } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { arrayify } from '@shared/core-utils' 7import { arrayify } from '@peertube/peertube-core-utils'
8import { ActivityPubActorType, ActorFollow, FollowState, ResultList, ServerFollowCreate } from '@shared/models' 8import { ActivityPubActorType, ActorFollow, FollowState, ResultList, ServerFollowCreate } from '@peertube/peertube-models'
9import { environment } from '../../../environments/environment' 9import { environment } from '../../../environments/environment'
10import { AdvancedInputFilter } from '../shared-forms' 10import { AdvancedInputFilter } from '../shared-forms'
11 11
diff --git a/client/src/app/shared/shared-instance/instance.service.ts b/client/src/app/shared/shared-instance/instance.service.ts
index 3088f0899..9a55cf972 100644
--- a/client/src/app/shared/shared-instance/instance.service.ts
+++ b/client/src/app/shared/shared-instance/instance.service.ts
@@ -3,9 +3,8 @@ import { catchError, map } from 'rxjs/operators'
3import { HttpClient } from '@angular/common/http' 3import { HttpClient } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { MarkdownService, RestExtractor, ServerService } from '@app/core' 5import { MarkdownService, RestExtractor, ServerService } from '@app/core'
6import { objectKeysTyped } from '@shared/core-utils' 6import { objectKeysTyped, peertubeTranslate } from '@peertube/peertube-core-utils'
7import { peertubeTranslate } from '@shared/core-utils/i18n' 7import { About } from '@peertube/peertube-models'
8import { About } from '@shared/models'
9import { environment } from '../../../environments/environment' 8import { environment } from '../../../environments/environment'
10 9
11export type AboutHTML = Pick<About['instance'], 10export type AboutHTML = Pick<About['instance'],
diff --git a/client/src/app/shared/shared-main/account/account.model.ts b/client/src/app/shared/shared-main/account/account.model.ts
index e34f6ef64..3a308fde5 100644
--- a/client/src/app/shared/shared-main/account/account.model.ts
+++ b/client/src/app/shared/shared-main/account/account.model.ts
@@ -1,4 +1,4 @@
1import { Account as ServerAccount, ActorImage, BlockStatus } from '@shared/models' 1import { Account as ServerAccount, ActorImage, BlockStatus } from '@peertube/peertube-models'
2import { Actor } from './actor.model' 2import { Actor } from './actor.model'
3 3
4export class Account extends Actor implements ServerAccount { 4export class Account extends Actor implements ServerAccount {
diff --git a/client/src/app/shared/shared-main/account/account.service.ts b/client/src/app/shared/shared-main/account/account.service.ts
index 8f4abf070..9c1afaa73 100644
--- a/client/src/app/shared/shared-main/account/account.service.ts
+++ b/client/src/app/shared/shared-main/account/account.service.ts
@@ -3,7 +3,7 @@ import { catchError, map, tap } from 'rxjs/operators'
3import { HttpClient } from '@angular/common/http' 3import { HttpClient } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { RestExtractor } from '@app/core' 5import { RestExtractor } from '@app/core'
6import { Account as ServerAccount } from '@shared/models' 6import { Account as ServerAccount } from '@peertube/peertube-models'
7import { environment } from '../../../../environments/environment' 7import { environment } from '../../../../environments/environment'
8import { Account } from './account.model' 8import { Account } from './account.model'
9 9
diff --git a/client/src/app/shared/shared-main/account/actor.model.ts b/client/src/app/shared/shared-main/account/actor.model.ts
index bce040970..1a1dc2ce6 100644
--- a/client/src/app/shared/shared-main/account/actor.model.ts
+++ b/client/src/app/shared/shared-main/account/actor.model.ts
@@ -1,5 +1,5 @@
1import { getAbsoluteAPIUrl, getAPIHost } from '@app/helpers' 1import { getAbsoluteAPIUrl, getAPIHost } from '@app/helpers'
2import { Actor as ServerActor, ActorImage } from '@shared/models' 2import { Actor as ServerActor, ActorImage } from '@peertube/peertube-models'
3 3
4export abstract class Actor implements ServerActor { 4export abstract class Actor implements ServerActor {
5 id: number 5 id: number
diff --git a/client/src/app/shared/shared-main/auth/auth-interceptor.service.ts b/client/src/app/shared/shared-main/auth/auth-interceptor.service.ts
index 93b3a93d6..e1adf401b 100644
--- a/client/src/app/shared/shared-main/auth/auth-interceptor.service.ts
+++ b/client/src/app/shared/shared-main/auth/auth-interceptor.service.ts
@@ -4,8 +4,7 @@ import { HTTP_INTERCEPTORS, HttpErrorResponse, HttpEvent, HttpHandler, HttpInter
4import { Injectable, Injector } from '@angular/core' 4import { Injectable, Injector } from '@angular/core'
5import { Router } from '@angular/router' 5import { Router } from '@angular/router'
6import { AuthService } from '@app/core/auth/auth.service' 6import { AuthService } from '@app/core/auth/auth.service'
7import { HttpStatusCode } from '@shared/models' 7import { HttpStatusCode, OAuth2ErrorCode, PeerTubeProblemDocument } from '@peertube/peertube-models'
8import { OAuth2ErrorCode, PeerTubeProblemDocument } from '@shared/models/server'
9 8
10@Injectable() 9@Injectable()
11export class AuthInterceptor implements HttpInterceptor { 10export class AuthInterceptor implements HttpInterceptor {
diff --git a/client/src/app/shared/shared-main/custom-page/custom-page.service.ts b/client/src/app/shared/shared-main/custom-page/custom-page.service.ts
index 2914dd6d9..6a2d3a1f5 100644
--- a/client/src/app/shared/shared-main/custom-page/custom-page.service.ts
+++ b/client/src/app/shared/shared-main/custom-page/custom-page.service.ts
@@ -3,7 +3,7 @@ import { catchError } from 'rxjs/operators'
3import { HttpClient } from '@angular/common/http' 3import { HttpClient } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { RestExtractor } from '@app/core' 5import { RestExtractor } from '@app/core'
6import { CustomPage } from '@shared/models' 6import { CustomPage } from '@peertube/peertube-models'
7import { environment } from '../../../../environments/environment' 7import { environment } from '../../../../environments/environment'
8 8
9@Injectable() 9@Injectable()
diff --git a/client/src/app/shared/shared-main/feeds/syndication.model.ts b/client/src/app/shared/shared-main/feeds/syndication.model.ts
index cd6fbdb48..a61515313 100644
--- a/client/src/app/shared/shared-main/feeds/syndication.model.ts
+++ b/client/src/app/shared/shared-main/feeds/syndication.model.ts
@@ -1,7 +1,7 @@
1import { FeedFormat } from '@shared/models' 1import { FeedFormatType } from '@peertube/peertube-models'
2 2
3export interface Syndication { 3export interface Syndication {
4 format: FeedFormat 4 format: FeedFormatType
5 label: string 5 label: string
6 url: string 6 url: string
7} 7}
diff --git a/client/src/app/shared/shared-main/misc/help.component.ts b/client/src/app/shared/shared-main/misc/help.component.ts
index 80fe0e160..53eafc74f 100644
--- a/client/src/app/shared/shared-main/misc/help.component.ts
+++ b/client/src/app/shared/shared-main/misc/help.component.ts
@@ -1,6 +1,6 @@
1import { AfterContentInit, Component, ContentChildren, Input, OnChanges, OnInit, QueryList, TemplateRef } from '@angular/core' 1import { AfterContentInit, Component, ContentChildren, Input, OnChanges, OnInit, QueryList, TemplateRef } from '@angular/core'
2import { GlobalIconName } from '@app/shared/shared-icons' 2import { GlobalIconName } from '@app/shared/shared-icons'
3import { ENHANCED_RULES, TEXT_RULES } from '@shared/core-utils/renderer/markdown' 3import { ENHANCED_RULES, TEXT_RULES } from '@peertube/peertube-core-utils'
4import { PeerTubeTemplateDirective } from '../angular' 4import { PeerTubeTemplateDirective } from '../angular'
5 5
6@Component({ 6@Component({
diff --git a/client/src/app/shared/shared-main/plugins/plugin-placeholder.component.ts b/client/src/app/shared/shared-main/plugins/plugin-placeholder.component.ts
index 858eff9ba..2064b9089 100644
--- a/client/src/app/shared/shared-main/plugins/plugin-placeholder.component.ts
+++ b/client/src/app/shared/shared-main/plugins/plugin-placeholder.component.ts
@@ -1,5 +1,5 @@
1import { Component, Input } from '@angular/core' 1import { Component, Input } from '@angular/core'
2import { PluginElementPlaceholder } from '@shared/models' 2import { PluginElementPlaceholder } from '@peertube/peertube-models'
3 3
4@Component({ 4@Component({
5 selector: 'my-plugin-placeholder', 5 selector: 'my-plugin-placeholder',
diff --git a/client/src/app/shared/shared-main/plugins/plugin-selector.directive.ts b/client/src/app/shared/shared-main/plugins/plugin-selector.directive.ts
index 576569f19..ddb431dec 100644
--- a/client/src/app/shared/shared-main/plugins/plugin-selector.directive.ts
+++ b/client/src/app/shared/shared-main/plugins/plugin-selector.directive.ts
@@ -1,5 +1,5 @@
1import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core' 1import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core'
2import { PluginSelectorId } from '@shared/models' 2import { PluginSelectorId } from '@peertube/peertube-models'
3 3
4@Directive({ selector: '[myPluginSelector]' }) 4@Directive({ selector: '[myPluginSelector]' })
5export class PluginSelectorDirective implements OnInit { 5export class PluginSelectorDirective implements OnInit {
diff --git a/client/src/app/shared/shared-main/users/user-history.service.ts b/client/src/app/shared/shared-main/users/user-history.service.ts
index 4cebbc707..90a9a0eb9 100644
--- a/client/src/app/shared/shared-main/users/user-history.service.ts
+++ b/client/src/app/shared/shared-main/users/user-history.service.ts
@@ -2,7 +2,7 @@ import { catchError, switchMap } from 'rxjs/operators'
2import { HttpClient, HttpParams } from '@angular/common/http' 2import { HttpClient, HttpParams } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { ComponentPaginationLight, RestExtractor, RestService } from '@app/core' 4import { ComponentPaginationLight, RestExtractor, RestService } from '@app/core'
5import { ResultList } from '@shared/models' 5import { ResultList } from '@peertube/peertube-models'
6import { environment } from '../../../../environments/environment' 6import { environment } from '../../../../environments/environment'
7import { Video } from '../video/video.model' 7import { Video } from '../video/video.model'
8import { VideoService } from '../video/video.service' 8import { VideoService } from '../video/video.service'
diff --git a/client/src/app/shared/shared-main/users/user-notification.model.ts b/client/src/app/shared/shared-main/users/user-notification.model.ts
index 96e7b4dd0..865eff378 100644
--- a/client/src/app/shared/shared-main/users/user-notification.model.ts
+++ b/client/src/app/shared/shared-main/users/user-notification.model.ts
@@ -2,22 +2,23 @@ import { AuthUser } from '@app/core'
2import { Account } from '@app/shared/shared-main/account/account.model' 2import { Account } from '@app/shared/shared-main/account/account.model'
3import { Actor } from '@app/shared/shared-main/account/actor.model' 3import { Actor } from '@app/shared/shared-main/account/actor.model'
4import { VideoChannel } from '@app/shared/shared-main/video-channel/video-channel.model' 4import { VideoChannel } from '@app/shared/shared-main/video-channel/video-channel.model'
5import { logger } from '@root-helpers/logger'
6import { 5import {
7 AbuseState, 6 AbuseStateType,
8 ActorInfo, 7 ActorInfo,
9 FollowState, 8 FollowState,
10 PluginType, 9 PluginType_Type,
11 UserNotification as UserNotificationServer, 10 UserNotification as UserNotificationServer,
12 UserNotificationType, 11 UserNotificationType,
12 UserNotificationType_Type,
13 UserRight, 13 UserRight,
14 VideoInfo 14 VideoInfo
15} from '@shared/models' 15} from '@peertube/peertube-models'
16import { logger } from '@root-helpers/logger'
16import { Video } from '../video' 17import { Video } from '../video'
17 18
18export class UserNotification implements UserNotificationServer { 19export class UserNotification implements UserNotificationServer {
19 id: number 20 id: number
20 type: UserNotificationType 21 type: UserNotificationType_Type
21 read: boolean 22 read: boolean
22 23
23 video?: VideoInfo & { 24 video?: VideoInfo & {
@@ -41,7 +42,7 @@ export class UserNotification implements UserNotificationServer {
41 42
42 abuse?: { 43 abuse?: {
43 id: number 44 id: number
44 state: AbuseState 45 state: AbuseStateType
45 46
46 video?: VideoInfo 47 video?: VideoInfo
47 48
@@ -75,7 +76,7 @@ export class UserNotification implements UserNotificationServer {
75 76
76 plugin?: { 77 plugin?: {
77 name: string 78 name: string
78 type: PluginType 79 type: PluginType_Type
79 latestVersion: string 80 latestVersion: string
80 } 81 }
81 82
diff --git a/client/src/app/shared/shared-main/users/user-notification.service.ts b/client/src/app/shared/shared-main/users/user-notification.service.ts
index 0b3dd9a53..1f7adb994 100644
--- a/client/src/app/shared/shared-main/users/user-notification.service.ts
+++ b/client/src/app/shared/shared-main/users/user-notification.service.ts
@@ -4,7 +4,7 @@ import { HttpClient, HttpContext, HttpParams } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { AuthService, ComponentPaginationLight, PeerTubeSocket, RestExtractor, RestService } from '@app/core' 5import { AuthService, ComponentPaginationLight, PeerTubeSocket, RestExtractor, RestService } from '@app/core'
6import { NGX_LOADING_BAR_IGNORED } from '@ngx-loading-bar/http-client' 6import { NGX_LOADING_BAR_IGNORED } from '@ngx-loading-bar/http-client'
7import { ResultList, UserNotification as UserNotificationServer, UserNotificationSetting } from '@shared/models' 7import { ResultList, UserNotification as UserNotificationServer, UserNotificationSetting } from '@peertube/peertube-models'
8import { environment } from '../../../../environments/environment' 8import { environment } from '../../../../environments/environment'
9import { UserNotification } from './user-notification.model' 9import { UserNotification } from './user-notification.model'
10 10
diff --git a/client/src/app/shared/shared-main/users/user-notifications.component.ts b/client/src/app/shared/shared-main/users/user-notifications.component.ts
index 50005b855..4318973fa 100644
--- a/client/src/app/shared/shared-main/users/user-notifications.component.ts
+++ b/client/src/app/shared/shared-main/users/user-notifications.component.ts
@@ -1,7 +1,7 @@
1import { Subject } from 'rxjs' 1import { Subject } from 'rxjs'
2import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' 2import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'
3import { ComponentPagination, hasMoreItems, Notifier } from '@app/core' 3import { ComponentPagination, hasMoreItems, Notifier } from '@app/core'
4import { AbuseState } from '@shared/models' 4import { AbuseState } from '@peertube/peertube-models'
5import { UserNotification } from './user-notification.model' 5import { UserNotification } from './user-notification.model'
6import { UserNotificationService } from './user-notification.service' 6import { UserNotificationService } from './user-notification.service'
7 7
diff --git a/client/src/app/shared/shared-main/video-caption/video-caption.service.ts b/client/src/app/shared/shared-main/video-caption/video-caption.service.ts
index 21f31a717..59c0969a9 100644
--- a/client/src/app/shared/shared-main/video-caption/video-caption.service.ts
+++ b/client/src/app/shared/shared-main/video-caption/video-caption.service.ts
@@ -5,8 +5,8 @@ import { Injectable } from '@angular/core'
5import { RestExtractor, ServerService } from '@app/core' 5import { RestExtractor, ServerService } from '@app/core'
6import { objectToFormData, sortBy } from '@app/helpers' 6import { objectToFormData, sortBy } from '@app/helpers'
7import { VideoPasswordService, VideoService } from '@app/shared/shared-main/video' 7import { VideoPasswordService, VideoService } from '@app/shared/shared-main/video'
8import { peertubeTranslate } from '@shared/core-utils/i18n' 8import { peertubeTranslate } from '@peertube/peertube-core-utils'
9import { ResultList, VideoCaption } from '@shared/models' 9import { ResultList, VideoCaption } from '@peertube/peertube-models'
10import { environment } from '../../../../environments/environment' 10import { environment } from '../../../../environments/environment'
11import { VideoCaptionEdit } from './video-caption-edit.model' 11import { VideoCaptionEdit } from './video-caption-edit.model'
12 12
diff --git a/client/src/app/shared/shared-main/video-channel-sync/video-channel-sync.service.ts b/client/src/app/shared/shared-main/video-channel-sync/video-channel-sync.service.ts
index a4e216869..a7d71c1e0 100644
--- a/client/src/app/shared/shared-main/video-channel-sync/video-channel-sync.service.ts
+++ b/client/src/app/shared/shared-main/video-channel-sync/video-channel-sync.service.ts
@@ -4,8 +4,7 @@ import { environment } from 'src/environments/environment'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { ResultList } from '@shared/models/common' 7import { ResultList, VideoChannelSync, VideoChannelSyncCreate } from '@peertube/peertube-models'
8import { VideoChannelSync, VideoChannelSyncCreate } from '@shared/models/videos'
9import { Account, AccountService } from '../account' 8import { Account, AccountService } from '../account'
10 9
11@Injectable({ 10@Injectable({
diff --git a/client/src/app/shared/shared-main/video-channel/video-channel.model.ts b/client/src/app/shared/shared-main/video-channel/video-channel.model.ts
index db3e4b43f..f141d553a 100644
--- a/client/src/app/shared/shared-main/video-channel/video-channel.model.ts
+++ b/client/src/app/shared/shared-main/video-channel/video-channel.model.ts
@@ -1,5 +1,5 @@
1import { getAbsoluteAPIUrl } from '@app/helpers' 1import { getAbsoluteAPIUrl } from '@app/helpers'
2import { Account as ServerAccount, ActorImage, VideoChannel as ServerVideoChannel, ViewsPerDate } from '@shared/models' 2import { Account as ServerAccount, ActorImage, VideoChannel as ServerVideoChannel, ViewsPerDate } from '@peertube/peertube-models'
3import { Actor } from '../account/actor.model' 3import { Actor } from '../account/actor.model'
4 4
5export class VideoChannel extends Actor implements ServerVideoChannel { 5export class VideoChannel extends Actor implements ServerVideoChannel {
diff --git a/client/src/app/shared/shared-main/video-channel/video-channel.service.ts b/client/src/app/shared/shared-main/video-channel/video-channel.service.ts
index 08811afec..9a42fcc52 100644
--- a/client/src/app/shared/shared-main/video-channel/video-channel.service.ts
+++ b/client/src/app/shared/shared-main/video-channel/video-channel.service.ts
@@ -10,7 +10,7 @@ import {
10 VideoChannelCreate, 10 VideoChannelCreate,
11 VideoChannelUpdate, 11 VideoChannelUpdate,
12 VideosImportInChannelCreate 12 VideosImportInChannelCreate
13} from '@shared/models' 13} from '@peertube/peertube-models'
14import { environment } from '../../../../environments/environment' 14import { environment } from '../../../../environments/environment'
15import { Account } from '../account' 15import { Account } from '../account'
16import { AccountService } from '../account/account.service' 16import { AccountService } from '../account/account.service'
diff --git a/client/src/app/shared/shared-main/video/embed.component.ts b/client/src/app/shared/shared-main/video/embed.component.ts
index 43e350197..017fbf357 100644
--- a/client/src/app/shared/shared-main/video/embed.component.ts
+++ b/client/src/app/shared/shared-main/video/embed.component.ts
@@ -2,8 +2,8 @@ import { environment } from 'src/environments/environment'
2import { Component, Input, OnInit } from '@angular/core' 2import { Component, Input, OnInit } from '@angular/core'
3import { DomSanitizer, SafeHtml } from '@angular/platform-browser' 3import { DomSanitizer, SafeHtml } from '@angular/platform-browser'
4import { buildVideoOrPlaylistEmbed } from '@root-helpers/video' 4import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
5import { buildVideoEmbedLink, decorateVideoLink } from '@shared/core-utils' 5import { buildVideoEmbedLink, decorateVideoLink } from '@peertube/peertube-core-utils'
6import { Video } from '@shared/models' 6import { Video } from '@peertube/peertube-models'
7 7
8@Component({ 8@Component({
9 selector: 'my-embed', 9 selector: 'my-embed',
diff --git a/client/src/app/shared/shared-main/video/redundancy.service.ts b/client/src/app/shared/shared-main/video/redundancy.service.ts
index 4377d628a..8904ee425 100644
--- a/client/src/app/shared/shared-main/video/redundancy.service.ts
+++ b/client/src/app/shared/shared-main/video/redundancy.service.ts
@@ -4,7 +4,7 @@ import { catchError, toArray } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { ResultList, Video, VideoRedundanciesTarget, VideoRedundancy } from '@shared/models' 7import { ResultList, Video, VideoRedundanciesTarget, VideoRedundancy } from '@peertube/peertube-models'
8import { environment } from '../../../../environments/environment' 8import { environment } from '../../../../environments/environment'
9 9
10@Injectable() 10@Injectable()
diff --git a/client/src/app/shared/shared-main/video/video-details.model.ts b/client/src/app/shared/shared-main/video/video-details.model.ts
index 5c36b5648..5ad0bb857 100644
--- a/client/src/app/shared/shared-main/video/video-details.model.ts
+++ b/client/src/app/shared/shared-main/video/video-details.model.ts
@@ -4,10 +4,10 @@ import {
4 VideoConstant, 4 VideoConstant,
5 VideoDetails as VideoDetailsServerModel, 5 VideoDetails as VideoDetailsServerModel,
6 VideoFile, 6 VideoFile,
7 VideoState, 7 VideoStateType,
8 VideoStreamingPlaylist, 8 VideoStreamingPlaylist,
9 VideoStreamingPlaylistType 9 VideoStreamingPlaylistType
10} from '@shared/models' 10} from '@peertube/peertube-models'
11import { Video } from './video.model' 11import { Video } from './video.model'
12 12
13export class VideoDetails extends Video implements VideoDetailsServerModel { 13export class VideoDetails extends Video implements VideoDetailsServerModel {
@@ -20,7 +20,7 @@ export class VideoDetails extends Video implements VideoDetailsServerModel {
20 downloadEnabled: boolean 20 downloadEnabled: boolean
21 21
22 waitTranscoding: boolean 22 waitTranscoding: boolean
23 state: VideoConstant<VideoState> 23 state: VideoConstant<VideoStateType>
24 24
25 likesPercent: number 25 likesPercent: number
26 dislikesPercent: number 26 dislikesPercent: number
diff --git a/client/src/app/shared/shared-main/video/video-edit.model.ts b/client/src/app/shared/shared-main/video/video-edit.model.ts
index 9129ab93f..a3e736c0f 100644
--- a/client/src/app/shared/shared-main/video/video-edit.model.ts
+++ b/client/src/app/shared/shared-main/video/video-edit.model.ts
@@ -1,7 +1,7 @@
1import { getAbsoluteAPIUrl } from '@app/helpers' 1import { getAbsoluteAPIUrl } from '@app/helpers'
2import { VideoPassword, VideoPrivacy, VideoScheduleUpdate, VideoUpdate } from '@shared/models' 2import { objectKeysTyped } from '@peertube/peertube-core-utils'
3import { VideoPassword, VideoPrivacy, VideoPrivacyType, VideoScheduleUpdate, VideoUpdate } from '@peertube/peertube-models'
3import { VideoDetails } from './video-details.model' 4import { VideoDetails } from './video-details.model'
4import { objectKeysTyped } from '@shared/core-utils'
5 5
6export class VideoEdit implements VideoUpdate { 6export class VideoEdit implements VideoUpdate {
7 static readonly SPECIAL_SCHEDULED_PRIVACY = -1 7 static readonly SPECIAL_SCHEDULED_PRIVACY = -1
@@ -17,7 +17,7 @@ export class VideoEdit implements VideoUpdate {
17 downloadEnabled: boolean 17 downloadEnabled: boolean
18 waitTranscoding: boolean 18 waitTranscoding: boolean
19 channelId: number 19 channelId: number
20 privacy: VideoPrivacy 20 privacy: VideoPrivacyType
21 videoPassword?: string 21 videoPassword?: string
22 support: string 22 support: string
23 thumbnailfile?: any 23 thumbnailfile?: any
diff --git a/client/src/app/shared/shared-main/video/video-file-token.service.ts b/client/src/app/shared/shared-main/video/video-file-token.service.ts
index 9bca5b9ec..87a952895 100644
--- a/client/src/app/shared/shared-main/video/video-file-token.service.ts
+++ b/client/src/app/shared/shared-main/video/video-file-token.service.ts
@@ -2,7 +2,7 @@ import { catchError, map, of, tap } from 'rxjs'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor } from '@app/core' 4import { RestExtractor } from '@app/core'
5import { VideoToken } from '@shared/models' 5import { VideoToken } from '@peertube/peertube-models'
6import { VideoService } from './video.service' 6import { VideoService } from './video.service'
7import { VideoPasswordService } from './video-password.service' 7import { VideoPasswordService } from './video-password.service'
8 8
diff --git a/client/src/app/shared/shared-main/video/video-import.service.ts b/client/src/app/shared/shared-main/video/video-import.service.ts
index 607c08d71..bb9052401 100644
--- a/client/src/app/shared/shared-main/video/video-import.service.ts
+++ b/client/src/app/shared/shared-main/video/video-import.service.ts
@@ -5,8 +5,8 @@ import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService, ServerService, UserService } from '@app/core' 6import { RestExtractor, RestPagination, RestService, ServerService, UserService } from '@app/core'
7import { objectToFormData } from '@app/helpers' 7import { objectToFormData } from '@app/helpers'
8import { peertubeTranslate } from '@shared/core-utils/i18n' 8import { peertubeTranslate } from '@peertube/peertube-core-utils'
9import { ResultList, VideoImport, VideoImportCreate, VideoUpdate } from '@shared/models' 9import { ResultList, VideoImport, VideoImportCreate, VideoUpdate } from '@peertube/peertube-models'
10import { environment } from '../../../../environments/environment' 10import { environment } from '../../../../environments/environment'
11 11
12@Injectable() 12@Injectable()
diff --git a/client/src/app/shared/shared-main/video/video-ownership.service.ts b/client/src/app/shared/shared-main/video/video-ownership.service.ts
index 1e8f7f68c..03e8fc946 100644
--- a/client/src/app/shared/shared-main/video/video-ownership.service.ts
+++ b/client/src/app/shared/shared-main/video/video-ownership.service.ts
@@ -4,7 +4,7 @@ import { catchError } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { ResultList, VideoChangeOwnership, VideoChangeOwnershipAccept, VideoChangeOwnershipCreate } from '@shared/models' 7import { ResultList, VideoChangeOwnership, VideoChangeOwnershipAccept, VideoChangeOwnershipCreate } from '@peertube/peertube-models'
8import { environment } from '../../../../environments/environment' 8import { environment } from '../../../../environments/environment'
9 9
10@Injectable() 10@Injectable()
diff --git a/client/src/app/shared/shared-main/video/video-password.service.ts b/client/src/app/shared/shared-main/video/video-password.service.ts
index d5b0406f8..156efd60f 100644
--- a/client/src/app/shared/shared-main/video/video-password.service.ts
+++ b/client/src/app/shared/shared-main/video/video-password.service.ts
@@ -1,4 +1,4 @@
1import { ResultList, VideoPassword } from '@shared/models' 1import { ResultList, VideoPassword } from '@peertube/peertube-models'
2import { Injectable } from '@angular/core' 2import { Injectable } from '@angular/core'
3import { catchError, switchMap } from 'rxjs' 3import { catchError, switchMap } from 'rxjs'
4import { HttpClient, HttpHeaders } from '@angular/common/http' 4import { HttpClient, HttpHeaders } from '@angular/common/http'
diff --git a/client/src/app/shared/shared-main/video/video.model.ts b/client/src/app/shared/shared-main/video/video.model.ts
index 1d077a613..ed28fb3f8 100644
--- a/client/src/app/shared/shared-main/video/video.model.ts
+++ b/client/src/app/shared/shared-main/video/video.model.ts
@@ -2,8 +2,7 @@ import { AuthUser } from '@app/core'
2import { User } from '@app/core/users/user.model' 2import { User } from '@app/core/users/user.model'
3import { durationToString, formatICU, getAbsoluteAPIUrl, getAbsoluteEmbedUrl } from '@app/helpers' 3import { durationToString, formatICU, getAbsoluteAPIUrl, getAbsoluteEmbedUrl } from '@app/helpers'
4import { Actor } from '@app/shared/shared-main/account/actor.model' 4import { Actor } from '@app/shared/shared-main/account/actor.model'
5import { buildVideoWatchPath, getAllFiles } from '@shared/core-utils' 5import { buildVideoWatchPath, getAllFiles, peertubeTranslate } from '@peertube/peertube-core-utils'
6import { peertubeTranslate } from '@shared/core-utils/i18n'
7import { 6import {
8 ActorImage, 7 ActorImage,
9 HTMLServerConfig, 8 HTMLServerConfig,
@@ -12,11 +11,13 @@ import {
12 VideoConstant, 11 VideoConstant,
13 VideoFile, 12 VideoFile,
14 VideoPrivacy, 13 VideoPrivacy,
14 VideoPrivacyType,
15 VideoScheduleUpdate, 15 VideoScheduleUpdate,
16 VideoState, 16 VideoState,
17 VideoStateType,
17 VideoStreamingPlaylist, 18 VideoStreamingPlaylist,
18 VideoStreamingPlaylistType 19 VideoStreamingPlaylistType
19} from '@shared/models' 20} from '@peertube/peertube-models'
20 21
21export class Video implements VideoServerModel { 22export class Video implements VideoServerModel {
22 byVideoChannel: string 23 byVideoChannel: string
@@ -30,7 +31,7 @@ export class Video implements VideoServerModel {
30 category: VideoConstant<number> 31 category: VideoConstant<number>
31 licence: VideoConstant<number> 32 licence: VideoConstant<number>
32 language: VideoConstant<string> 33 language: VideoConstant<string>
33 privacy: VideoConstant<VideoPrivacy> 34 privacy: VideoConstant<VideoPrivacyType>
34 35
35 truncatedDescription: string 36 truncatedDescription: string
36 description: string 37 description: string
@@ -70,7 +71,7 @@ export class Video implements VideoServerModel {
70 originInstanceHost: string 71 originInstanceHost: string
71 72
72 waitTranscoding?: boolean 73 waitTranscoding?: boolean
73 state?: VideoConstant<VideoState> 74 state?: VideoConstant<VideoStateType>
74 scheduledUpdate?: VideoScheduleUpdate 75 scheduledUpdate?: VideoScheduleUpdate
75 76
76 blacklisted?: boolean 77 blacklisted?: boolean
diff --git a/client/src/app/shared/shared-main/video/video.service.ts b/client/src/app/shared/shared-main/video/video.service.ts
index a980c2dcf..9b2bc5dee 100644
--- a/client/src/app/shared/shared-main/video/video.service.ts
+++ b/client/src/app/shared/shared-main/video/video.service.ts
@@ -5,7 +5,7 @@ import { HttpClient, HttpParams, HttpRequest } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { AuthService, ComponentPaginationLight, ConfirmService, RestExtractor, RestService, ServerService, UserService } from '@app/core' 6import { AuthService, ComponentPaginationLight, ConfirmService, RestExtractor, RestService, ServerService, UserService } from '@app/core'
7import { objectToFormData } from '@app/helpers' 7import { objectToFormData } from '@app/helpers'
8import { arrayify } from '@shared/core-utils' 8import { arrayify } from '@peertube/peertube-core-utils'
9import { 9import {
10 BooleanBothQuery, 10 BooleanBothQuery,
11 FeedFormat, 11 FeedFormat,
@@ -21,13 +21,14 @@ import {
21 VideoConstant, 21 VideoConstant,
22 VideoDetails as VideoDetailsServerModel, 22 VideoDetails as VideoDetailsServerModel,
23 VideoFileMetadata, 23 VideoFileMetadata,
24 VideoInclude, 24 VideoIncludeType,
25 VideoPrivacy, 25 VideoPrivacy,
26 VideoPrivacyType,
26 VideoSortField, 27 VideoSortField,
28 VideoSource,
27 VideoTranscodingCreate, 29 VideoTranscodingCreate,
28 VideoUpdate 30 VideoUpdate
29} from '@shared/models' 31} from '@peertube/peertube-models'
30import { VideoSource } from '@shared/models/videos/video-source'
31import { environment } from '../../../../environments/environment' 32import { environment } from '../../../../environments/environment'
32import { Account } from '../account/account.model' 33import { Account } from '../account/account.model'
33import { AccountService } from '../account/account.service' 34import { AccountService } from '../account/account.service'
@@ -40,11 +41,11 @@ import { Video } from './video.model'
40export type CommonVideoParams = { 41export type CommonVideoParams = {
41 videoPagination?: ComponentPaginationLight 42 videoPagination?: ComponentPaginationLight
42 sort: VideoSortField | SortMeta 43 sort: VideoSortField | SortMeta
43 include?: VideoInclude 44 include?: VideoIncludeType
44 isLocal?: boolean 45 isLocal?: boolean
45 categoryOneOf?: number[] 46 categoryOneOf?: number[]
46 languageOneOf?: string[] 47 languageOneOf?: string[]
47 privacyOneOf?: VideoPrivacy[] 48 privacyOneOf?: VideoPrivacyType[]
48 isLive?: boolean 49 isLive?: boolean
49 skipCount?: boolean 50 skipCount?: boolean
50 nsfw?: BooleanBothQuery 51 nsfw?: BooleanBothQuery
@@ -455,7 +456,7 @@ export class VideoService {
455 ) 456 )
456 } 457 }
457 458
458 explainedPrivacyLabels (serverPrivacies: VideoConstant<VideoPrivacy>[], defaultPrivacyId = VideoPrivacy.PUBLIC) { 459 explainedPrivacyLabels (serverPrivacies: VideoConstant<VideoPrivacyType>[], defaultPrivacyId: VideoPrivacyType = VideoPrivacy.PUBLIC) {
459 const descriptions = { 460 const descriptions = {
460 [VideoPrivacy.PRIVATE]: $localize`Only I can see this video`, 461 [VideoPrivacy.PRIVATE]: $localize`Only I can see this video`,
461 [VideoPrivacy.UNLISTED]: $localize`Only shareable via a private link`, 462 [VideoPrivacy.UNLISTED]: $localize`Only shareable via a private link`,
@@ -478,7 +479,7 @@ export class VideoService {
478 } 479 }
479 } 480 }
480 481
481 getHighestAvailablePrivacy (serverPrivacies: VideoConstant<VideoPrivacy>[]) { 482 getHighestAvailablePrivacy (serverPrivacies: VideoConstant<VideoPrivacyType>[]) {
482 // We do not add a password as this requires additional configuration. 483 // We do not add a password as this requires additional configuration.
483 const order = [ 484 const order = [
484 VideoPrivacy.PRIVATE, 485 VideoPrivacy.PRIVATE,
diff --git a/client/src/app/shared/shared-moderation/abuse.service.ts b/client/src/app/shared/shared-moderation/abuse.service.ts
index 5d1539f69..8055b6dd1 100644
--- a/client/src/app/shared/shared-moderation/abuse.service.ts
+++ b/client/src/app/shared/shared-moderation/abuse.service.ts
@@ -15,7 +15,7 @@ import {
15 AdminAbuse, 15 AdminAbuse,
16 ResultList, 16 ResultList,
17 UserAbuse 17 UserAbuse
18} from '@shared/models' 18} from '@peertube/peertube-models'
19import { environment } from '../../../environments/environment' 19import { environment } from '../../../environments/environment'
20 20
21@Injectable() 21@Injectable()
diff --git a/client/src/app/shared/shared-moderation/account-block.model.ts b/client/src/app/shared/shared-moderation/account-block.model.ts
index 8f76c69dc..a5bde327a 100644
--- a/client/src/app/shared/shared-moderation/account-block.model.ts
+++ b/client/src/app/shared/shared-moderation/account-block.model.ts
@@ -1,4 +1,4 @@
1import { AccountBlock as AccountBlockServer } from '@shared/models' 1import { AccountBlock as AccountBlockServer } from '@peertube/peertube-models'
2import { Account } from '@app/shared/shared-main' 2import { Account } from '@app/shared/shared-main'
3 3
4export class AccountBlock implements AccountBlockServer { 4export class AccountBlock implements AccountBlockServer {
diff --git a/client/src/app/shared/shared-moderation/blocklist.service.ts b/client/src/app/shared/shared-moderation/blocklist.service.ts
index 0fb7536e5..f755b812a 100644
--- a/client/src/app/shared/shared-moderation/blocklist.service.ts
+++ b/client/src/app/shared/shared-moderation/blocklist.service.ts
@@ -4,8 +4,8 @@ import { catchError, concatMap, map, toArray } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { arrayify } from '@shared/core-utils' 7import { arrayify } from '@peertube/peertube-core-utils'
8import { AccountBlock as AccountBlockServer, BlockStatus, ResultList, ServerBlock } from '@shared/models' 8import { AccountBlock as AccountBlockServer, BlockStatus, ResultList, ServerBlock } from '@peertube/peertube-models'
9import { environment } from '../../../environments/environment' 9import { environment } from '../../../environments/environment'
10import { Account } from '../shared-main' 10import { Account } from '../shared-main'
11import { AccountBlock } from './account-block.model' 11import { AccountBlock } from './account-block.model'
diff --git a/client/src/app/shared/shared-moderation/bulk.service.ts b/client/src/app/shared/shared-moderation/bulk.service.ts
index f0b869421..36d1b0b1e 100644
--- a/client/src/app/shared/shared-moderation/bulk.service.ts
+++ b/client/src/app/shared/shared-moderation/bulk.service.ts
@@ -2,7 +2,7 @@ import { catchError } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor } from '@app/core' 4import { RestExtractor } from '@app/core'
5import { BulkRemoveCommentsOfBody } from '@shared/models' 5import { BulkRemoveCommentsOfBody } from '@peertube/peertube-models'
6import { environment } from '../../../environments/environment' 6import { environment } from '../../../environments/environment'
7 7
8@Injectable() 8@Injectable()
diff --git a/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts
index d587a9709..042b57aa7 100644
--- a/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts
+++ b/client/src/app/shared/shared-moderation/report-modals/account-report.component.ts
@@ -6,8 +6,8 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
6import { Account } from '@app/shared/shared-main' 6import { Account } from '@app/shared/shared-main'
7import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 7import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
9import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' 9import { abusePredefinedReasonsMap } from '@peertube/peertube-core-utils'
10import { AbusePredefinedReasonsString } from '@shared/models' 10import { AbusePredefinedReasonsString } from '@peertube/peertube-models'
11import { AbuseService } from '../abuse.service' 11import { AbuseService } from '../abuse.service'
12 12
13@Component({ 13@Component({
diff --git a/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts
index e35d70c8f..fd50b745a 100644
--- a/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts
+++ b/client/src/app/shared/shared-moderation/report-modals/comment-report.component.ts
@@ -6,8 +6,8 @@ import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
6import { VideoComment } from '@app/shared/shared-video-comment' 6import { VideoComment } from '@app/shared/shared-video-comment'
7import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 7import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
9import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' 9import { abusePredefinedReasonsMap } from '@peertube/peertube-core-utils'
10import { AbusePredefinedReasonsString } from '@shared/models' 10import { AbusePredefinedReasonsString } from '@peertube/peertube-models'
11import { AbuseService } from '../abuse.service' 11import { AbuseService } from '../abuse.service'
12 12
13@Component({ 13@Component({
diff --git a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts
index 16be8e0a1..479957d21 100644
--- a/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts
+++ b/client/src/app/shared/shared-moderation/report-modals/video-report.component.ts
@@ -6,8 +6,8 @@ import { ABUSE_REASON_VALIDATOR } from '@app/shared/form-validators/abuse-valida
6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
7import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 7import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 8import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
9import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse' 9import { abusePredefinedReasonsMap } from '@peertube/peertube-core-utils'
10import { AbusePredefinedReasonsString } from '@shared/models' 10import { AbusePredefinedReasonsString } from '@peertube/peertube-models'
11import { Video } from '../../shared-main' 11import { Video } from '../../shared-main'
12import { AbuseService } from '../abuse.service' 12import { AbuseService } from '../abuse.service'
13 13
diff --git a/client/src/app/shared/shared-moderation/server-blocklist.component.ts b/client/src/app/shared/shared-moderation/server-blocklist.component.ts
index f1bcbd561..4105645fa 100644
--- a/client/src/app/shared/shared-moderation/server-blocklist.component.ts
+++ b/client/src/app/shared/shared-moderation/server-blocklist.component.ts
@@ -2,7 +2,7 @@ import { SortMeta } from 'primeng/api'
2import { Directive, OnInit, ViewChild } from '@angular/core' 2import { Directive, OnInit, ViewChild } from '@angular/core'
3import { Notifier, RestPagination, RestTable } from '@app/core' 3import { Notifier, RestPagination, RestTable } from '@app/core'
4import { BatchDomainsModalComponent } from '@app/shared/shared-moderation/batch-domains-modal.component' 4import { BatchDomainsModalComponent } from '@app/shared/shared-moderation/batch-domains-modal.component'
5import { ServerBlock } from '@shared/models' 5import { ServerBlock } from '@peertube/peertube-models'
6import { BlocklistComponentType, BlocklistService } from './blocklist.service' 6import { BlocklistComponentType, BlocklistService } from './blocklist.service'
7 7
8@Directive() 8@Directive()
diff --git a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts
index 34295c34a..fcada7acc 100644
--- a/client/src/app/shared/shared-moderation/user-ban-modal.component.ts
+++ b/client/src/app/shared/shared-moderation/user-ban-modal.component.ts
@@ -5,7 +5,7 @@ import { formatICU } from '@app/helpers'
5import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 5import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
6import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 6import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
7import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 7import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
8import { User } from '@shared/models' 8import { User } from '@peertube/peertube-models'
9import { USER_BAN_REASON_VALIDATOR } from '../form-validators/user-validators' 9import { USER_BAN_REASON_VALIDATOR } from '../form-validators/user-validators'
10import { Account } from '../shared-main' 10import { Account } from '../shared-main'
11import { UserAdminService } from '../shared-users' 11import { UserAdminService } from '../shared-users'
diff --git a/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts
index 50dccf862..7de152e60 100644
--- a/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts
+++ b/client/src/app/shared/shared-moderation/user-moderation-dropdown.component.ts
@@ -1,7 +1,7 @@
1import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core' 1import { Component, EventEmitter, Input, OnChanges, OnInit, Output, ViewChild } from '@angular/core'
2import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core' 2import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core'
3import { Account, DropdownAction } from '@app/shared/shared-main' 3import { Account, DropdownAction } from '@app/shared/shared-main'
4import { BulkRemoveCommentsOfBody, User, UserRight } from '@shared/models' 4import { BulkRemoveCommentsOfBody, User, UserRight } from '@peertube/peertube-models'
5import { UserAdminService } from '../shared-users' 5import { UserAdminService } from '../shared-users'
6import { BlocklistService } from './blocklist.service' 6import { BlocklistService } from './blocklist.service'
7import { BulkService } from './bulk.service' 7import { BulkService } from './bulk.service'
diff --git a/client/src/app/shared/shared-moderation/video-block.service.ts b/client/src/app/shared/shared-moderation/video-block.service.ts
index ab352a2d6..18950c92b 100644
--- a/client/src/app/shared/shared-moderation/video-block.service.ts
+++ b/client/src/app/shared/shared-moderation/video-block.service.ts
@@ -4,8 +4,8 @@ import { catchError, concatMap, toArray } from 'rxjs/operators'
4import { HttpClient, HttpParams } from '@angular/common/http' 4import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService } from '@app/core' 6import { RestExtractor, RestPagination, RestService } from '@app/core'
7import { arrayify } from '@shared/core-utils' 7import { arrayify } from '@peertube/peertube-core-utils'
8import { ResultList, VideoBlacklist, VideoBlacklistType } from '@shared/models' 8import { ResultList, VideoBlacklist, VideoBlacklistType, VideoBlacklistType_Type } from '@peertube/peertube-models'
9import { environment } from '../../../environments/environment' 9import { environment } from '../../../environments/environment'
10 10
11@Injectable() 11@Injectable()
@@ -22,7 +22,7 @@ export class VideoBlockService {
22 pagination: RestPagination 22 pagination: RestPagination
23 sort: SortMeta 23 sort: SortMeta
24 search?: string 24 search?: string
25 type?: VideoBlacklistType 25 type?: VideoBlacklistType_Type
26 }): Observable<ResultList<VideoBlacklist>> { 26 }): Observable<ResultList<VideoBlacklist>> {
27 const { pagination, sort, search, type } = options 27 const { pagination, sort, search, type } = options
28 28
diff --git a/client/src/app/shared/shared-search/advanced-search.model.ts b/client/src/app/shared/shared-search/advanced-search.model.ts
index 29fe3e8dc..b977a4801 100644
--- a/client/src/app/shared/shared-search/advanced-search.model.ts
+++ b/client/src/app/shared/shared-search/advanced-search.model.ts
@@ -6,7 +6,7 @@ import {
6 VideoChannelsSearchQuery, 6 VideoChannelsSearchQuery,
7 VideoPlaylistsSearchQuery, 7 VideoPlaylistsSearchQuery,
8 VideosSearchQuery 8 VideosSearchQuery
9} from '@shared/models' 9} from '@peertube/peertube-models'
10 10
11export type AdvancedSearchResultType = 'videos' | 'playlists' | 'channels' 11export type AdvancedSearchResultType = 'videos' | 'playlists' | 'channels'
12 12
diff --git a/client/src/app/shared/shared-search/find-in-bulk.service.ts b/client/src/app/shared/shared-search/find-in-bulk.service.ts
index 125d5e2b8..de57c7f64 100644
--- a/client/src/app/shared/shared-search/find-in-bulk.service.ts
+++ b/client/src/app/shared/shared-search/find-in-bulk.service.ts
@@ -3,11 +3,11 @@ import { Observable, Subject } from 'rxjs'
3import { filter, first, map } from 'rxjs/operators' 3import { filter, first, map } from 'rxjs/operators'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { buildBulkObservable } from '@app/helpers' 5import { buildBulkObservable } from '@app/helpers'
6import { ResultList } from '@shared/models/common' 6import { ResultList } from '@peertube/peertube-models'
7import { Video, VideoChannel } from '../shared-main' 7import { Video, VideoChannel } from '../shared-main'
8import { VideoPlaylist } from '../shared-video-playlist' 8import { VideoPlaylist } from '../shared-video-playlist'
9import { SearchService } from './search.service'
10import { AdvancedSearch } from './advanced-search.model' 9import { AdvancedSearch } from './advanced-search.model'
10import { SearchService } from './search.service'
11 11
12const debugLogger = debug('peertube:search:FindInBulkService') 12const debugLogger = debug('peertube:search:FindInBulkService')
13 13
diff --git a/client/src/app/shared/shared-search/search.service.ts b/client/src/app/shared/shared-search/search.service.ts
index ad2de0f37..281e0b4bd 100644
--- a/client/src/app/shared/shared-search/search.service.ts
+++ b/client/src/app/shared/shared-search/search.service.ts
@@ -9,7 +9,7 @@ import {
9 Video as VideoServerModel, 9 Video as VideoServerModel,
10 VideoChannel as VideoChannelServerModel, 10 VideoChannel as VideoChannelServerModel,
11 VideoPlaylist as VideoPlaylistServerModel 11 VideoPlaylist as VideoPlaylistServerModel
12} from '@shared/models' 12} from '@peertube/peertube-models'
13import { environment } from '../../../environments/environment' 13import { environment } from '../../../environments/environment'
14import { VideoPlaylist, VideoPlaylistService } from '../shared-video-playlist' 14import { VideoPlaylist, VideoPlaylistService } from '../shared-video-playlist'
15import { AdvancedSearch } from './advanced-search.model' 15import { AdvancedSearch } from './advanced-search.model'
diff --git a/client/src/app/shared/shared-share-modal/video-share.component.ts b/client/src/app/shared/shared-share-modal/video-share.component.ts
index b09222c3e..24c9cdeca 100644
--- a/client/src/app/shared/shared-share-modal/video-share.component.ts
+++ b/client/src/app/shared/shared-share-modal/video-share.component.ts
@@ -5,8 +5,8 @@ import { VideoDetails } from '@app/shared/shared-main'
5import { VideoPlaylist } from '@app/shared/shared-video-playlist' 5import { VideoPlaylist } from '@app/shared/shared-video-playlist'
6import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 6import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
7import { buildVideoOrPlaylistEmbed } from '@root-helpers/video' 7import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
8import { buildPlaylistLink, buildVideoLink, decoratePlaylistLink, decorateVideoLink } from '@shared/core-utils' 8import { buildPlaylistLink, buildVideoLink, decoratePlaylistLink, decorateVideoLink } from '@peertube/peertube-core-utils'
9import { VideoCaption, VideoPlaylistPrivacy, VideoPrivacy } from '@shared/models' 9import { VideoCaption, VideoPlaylistPrivacy, VideoPrivacy } from '@peertube/peertube-models'
10 10
11type Customizations = { 11type Customizations = {
12 startAtCheckbox: boolean 12 startAtCheckbox: boolean
diff --git a/client/src/app/shared/shared-support-modal/support-modal.component.ts b/client/src/app/shared/shared-support-modal/support-modal.component.ts
index f330228e1..d911b45d8 100644
--- a/client/src/app/shared/shared-support-modal/support-modal.component.ts
+++ b/client/src/app/shared/shared-support-modal/support-modal.component.ts
@@ -2,7 +2,7 @@ import { Component, Input, ViewChild } from '@angular/core'
2import { MarkdownService } from '@app/core' 2import { MarkdownService } from '@app/core'
3import { VideoDetails } from '@app/shared/shared-main' 3import { VideoDetails } from '@app/shared/shared-main'
4import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
5import { VideoChannel } from '@shared/models' 5import { VideoChannel } from '@peertube/peertube-models'
6 6
7@Component({ 7@Component({
8 selector: 'my-support-modal', 8 selector: 'my-support-modal',
diff --git a/client/src/app/shared/shared-thumbnail/video-thumbnail.component.ts b/client/src/app/shared/shared-thumbnail/video-thumbnail.component.ts
index ad5d30db2..c9a5c97db 100644
--- a/client/src/app/shared/shared-thumbnail/video-thumbnail.component.ts
+++ b/client/src/app/shared/shared-thumbnail/video-thumbnail.component.ts
@@ -1,6 +1,6 @@
1import { Component, EventEmitter, Input, Output } from '@angular/core' 1import { Component, EventEmitter, Input, Output } from '@angular/core'
2import { ScreenService } from '@app/core' 2import { ScreenService } from '@app/core'
3import { VideoState } from '@shared/models' 3import { VideoState } from '@peertube/peertube-models'
4import { Video } from '../shared-main' 4import { Video } from '../shared-main'
5 5
6@Component({ 6@Component({
diff --git a/client/src/app/shared/shared-user-settings/user-interface-settings.component.ts b/client/src/app/shared/shared-user-settings/user-interface-settings.component.ts
index c2c30d38b..08c6b6933 100644
--- a/client/src/app/shared/shared-user-settings/user-interface-settings.component.ts
+++ b/client/src/app/shared/shared-user-settings/user-interface-settings.component.ts
@@ -2,7 +2,7 @@ import { Subject, Subscription } from 'rxjs'
2import { Component, Input, OnDestroy, OnInit } from '@angular/core' 2import { Component, Input, OnDestroy, OnInit } from '@angular/core'
3import { AuthService, Notifier, ServerService, ThemeService, UserService } from '@app/core' 3import { AuthService, Notifier, ServerService, ThemeService, UserService } from '@app/core'
4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 4import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
5import { HTMLServerConfig, User, UserUpdateMe } from '@shared/models' 5import { HTMLServerConfig, User, UserUpdateMe } from '@peertube/peertube-models'
6import { SelectOptionsItem } from 'src/types' 6import { SelectOptionsItem } from 'src/types'
7 7
8@Component({ 8@Component({
diff --git a/client/src/app/shared/shared-user-settings/user-video-settings.component.ts b/client/src/app/shared/shared-user-settings/user-video-settings.component.ts
index ed6e7fffd..234d5b217 100644
--- a/client/src/app/shared/shared-user-settings/user-video-settings.component.ts
+++ b/client/src/app/shared/shared-user-settings/user-video-settings.component.ts
@@ -4,8 +4,7 @@ import { first } from 'rxjs/operators'
4import { Component, Input, OnDestroy, OnInit } from '@angular/core' 4import { Component, Input, OnDestroy, OnInit } from '@angular/core'
5import { AuthService, Notifier, ServerService, User, UserService } from '@app/core' 5import { AuthService, Notifier, ServerService, User, UserService } from '@app/core'
6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
7import { UserUpdateMe } from '@shared/models' 7import { NSFWPolicyType, UserUpdateMe } from '@peertube/peertube-models'
8import { NSFWPolicyType } from '@shared/models/videos/nsfw-policy.type'
9 8
10@Component({ 9@Component({
11 selector: 'my-user-video-settings', 10 selector: 'my-user-video-settings',
diff --git a/client/src/app/shared/shared-user-subscription/subscribe-button.component.ts b/client/src/app/shared/shared-user-subscription/subscribe-button.component.ts
index a002bf4e7..2a5751824 100644
--- a/client/src/app/shared/shared-user-subscription/subscribe-button.component.ts
+++ b/client/src/app/shared/shared-user-subscription/subscribe-button.component.ts
@@ -2,7 +2,7 @@ import { concat, forkJoin, merge } from 'rxjs'
2import { Component, Input, OnChanges, OnInit } from '@angular/core' 2import { Component, Input, OnChanges, OnInit } from '@angular/core'
3import { AuthService, Notifier, RedirectService } from '@app/core' 3import { AuthService, Notifier, RedirectService } from '@app/core'
4import { Account, VideoChannel, VideoService } from '@app/shared/shared-main' 4import { Account, VideoChannel, VideoService } from '@app/shared/shared-main'
5import { FeedFormat } from '@shared/models' 5import { FeedFormat } from '@peertube/peertube-models'
6import { UserSubscriptionService } from './user-subscription.service' 6import { UserSubscriptionService } from './user-subscription.service'
7 7
8@Component({ 8@Component({
diff --git a/client/src/app/shared/shared-user-subscription/user-subscription.service.ts b/client/src/app/shared/shared-user-subscription/user-subscription.service.ts
index 9cf6b4d16..b83f7ebc5 100644
--- a/client/src/app/shared/shared-user-subscription/user-subscription.service.ts
+++ b/client/src/app/shared/shared-user-subscription/user-subscription.service.ts
@@ -6,7 +6,7 @@ import { Injectable } from '@angular/core'
6import { ComponentPaginationLight, RestExtractor, RestService } from '@app/core' 6import { ComponentPaginationLight, RestExtractor, RestService } from '@app/core'
7import { buildBulkObservable } from '@app/helpers' 7import { buildBulkObservable } from '@app/helpers'
8import { Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main' 8import { Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main'
9import { ActorFollow, ResultList, VideoChannel as VideoChannelServer, VideoSortField } from '@shared/models' 9import { ActorFollow, ResultList, VideoChannel as VideoChannelServer, VideoSortField } from '@peertube/peertube-models'
10import { environment } from '../../../environments/environment' 10import { environment } from '../../../environments/environment'
11 11
12const debugLogger = debug('peertube:subscriptions:UserSubscriptionService') 12const debugLogger = debug('peertube:subscriptions:UserSubscriptionService')
diff --git a/client/src/app/shared/shared-users/two-factor.service.ts b/client/src/app/shared/shared-users/two-factor.service.ts
index 9ff916f15..cb4450e8f 100644
--- a/client/src/app/shared/shared-users/two-factor.service.ts
+++ b/client/src/app/shared/shared-users/two-factor.service.ts
@@ -2,7 +2,7 @@ import { catchError } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor, UserService } from '@app/core' 4import { RestExtractor, UserService } from '@app/core'
5import { TwoFactorEnableResult } from '@shared/models' 5import { TwoFactorEnableResult } from '@peertube/peertube-models'
6 6
7@Injectable() 7@Injectable()
8export class TwoFactorService { 8export class TwoFactorService {
diff --git a/client/src/app/shared/shared-users/user-admin.service.ts b/client/src/app/shared/shared-users/user-admin.service.ts
index 5842bd271..cc706343f 100644
--- a/client/src/app/shared/shared-users/user-admin.service.ts
+++ b/client/src/app/shared/shared-users/user-admin.service.ts
@@ -5,8 +5,8 @@ import { HttpClient, HttpParams } from '@angular/common/http'
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { RestExtractor, RestPagination, RestService, ServerService, UserService } from '@app/core' 6import { RestExtractor, RestPagination, RestService, ServerService, UserService } from '@app/core'
7import { getBytes } from '@root-helpers/bytes' 7import { getBytes } from '@root-helpers/bytes'
8import { arrayify, peertubeTranslate } from '@shared/core-utils' 8import { arrayify, peertubeTranslate } from '@peertube/peertube-core-utils'
9import { ResultList, User as UserServerModel, UserCreate, UserUpdate } from '@shared/models' 9import { ResultList, User as UserServerModel, UserCreate, UserUpdate } from '@peertube/peertube-models'
10 10
11@Injectable() 11@Injectable()
12export class UserAdminService { 12export class UserAdminService {
diff --git a/client/src/app/shared/shared-video-comment/video-comment-thread-tree.model.ts b/client/src/app/shared/shared-video-comment/video-comment-thread-tree.model.ts
index 9956c88a6..62683f57f 100644
--- a/client/src/app/shared/shared-video-comment/video-comment-thread-tree.model.ts
+++ b/client/src/app/shared/shared-video-comment/video-comment-thread-tree.model.ts
@@ -1,4 +1,4 @@
1import { VideoCommentThreadTree as VideoCommentThreadTreeServerModel } from '@shared/models' 1import { VideoCommentThreadTree as VideoCommentThreadTreeServerModel } from '@peertube/peertube-models'
2import { VideoComment } from './video-comment.model' 2import { VideoComment } from './video-comment.model'
3 3
4export class VideoCommentThreadTree implements VideoCommentThreadTreeServerModel { 4export class VideoCommentThreadTree implements VideoCommentThreadTreeServerModel {
diff --git a/client/src/app/shared/shared-video-comment/video-comment.model.ts b/client/src/app/shared/shared-video-comment/video-comment.model.ts
index adab4cfbd..7048ed66f 100644
--- a/client/src/app/shared/shared-video-comment/video-comment.model.ts
+++ b/client/src/app/shared/shared-video-comment/video-comment.model.ts
@@ -4,7 +4,7 @@ import {
4 Account as AccountInterface, 4 Account as AccountInterface,
5 VideoComment as VideoCommentServerModel, 5 VideoComment as VideoCommentServerModel,
6 VideoCommentAdmin as VideoCommentAdminServerModel 6 VideoCommentAdmin as VideoCommentAdminServerModel
7} from '@shared/models' 7} from '@peertube/peertube-models'
8 8
9export class VideoComment implements VideoCommentServerModel { 9export class VideoComment implements VideoCommentServerModel {
10 id: number 10 id: number
diff --git a/client/src/app/shared/shared-video-comment/video-comment.service.ts b/client/src/app/shared/shared-video-comment/video-comment.service.ts
index 3906652be..d1db773c4 100644
--- a/client/src/app/shared/shared-video-comment/video-comment.service.ts
+++ b/client/src/app/shared/shared-video-comment/video-comment.service.ts
@@ -14,7 +14,7 @@ import {
14 VideoCommentAdmin, 14 VideoCommentAdmin,
15 VideoCommentCreate, 15 VideoCommentCreate,
16 VideoCommentThreadTree as VideoCommentThreadTreeServerModel 16 VideoCommentThreadTree as VideoCommentThreadTreeServerModel
17} from '@shared/models' 17} from '@peertube/peertube-models'
18import { environment } from '../../../environments/environment' 18import { environment } from '../../../environments/environment'
19import { VideoCommentThreadTree } from './video-comment-thread-tree.model' 19import { VideoCommentThreadTree } from './video-comment-thread-tree.model'
20import { VideoComment } from './video-comment.model' 20import { VideoComment } from './video-comment.model'
diff --git a/client/src/app/shared/shared-video-live/live-stream-information.component.ts b/client/src/app/shared/shared-video-live/live-stream-information.component.ts
index 400a6fa01..4089c88fb 100644
--- a/client/src/app/shared/shared-video-live/live-stream-information.component.ts
+++ b/client/src/app/shared/shared-video-live/live-stream-information.component.ts
@@ -1,7 +1,7 @@
1import { Component, ElementRef, ViewChild } from '@angular/core' 1import { Component, ElementRef, ViewChild } from '@angular/core'
2import { Video } from '@app/shared/shared-main' 2import { Video } from '@app/shared/shared-main'
3import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 3import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
4import { LiveVideo, LiveVideoError, LiveVideoSession } from '@shared/models' 4import { LiveVideo, LiveVideoError, LiveVideoErrorType, LiveVideoSession } from '@peertube/peertube-models'
5import { LiveVideoService } from './live-video.service' 5import { LiveVideoService } from './live-video.service'
6 6
7@Component({ 7@Component({
@@ -38,7 +38,7 @@ export class LiveStreamInformationComponent {
38 getErrorLabel (session: LiveVideoSession) { 38 getErrorLabel (session: LiveVideoSession) {
39 if (!session.error) return undefined 39 if (!session.error) return undefined
40 40
41 const errors: { [ id in LiveVideoError ]: string } = { 41 const errors: { [ id in LiveVideoErrorType ]: string } = {
42 [LiveVideoError.BAD_SOCKET_HEALTH]: $localize`Server too slow`, 42 [LiveVideoError.BAD_SOCKET_HEALTH]: $localize`Server too slow`,
43 [LiveVideoError.BLACKLISTED]: $localize`Live blacklisted`, 43 [LiveVideoError.BLACKLISTED]: $localize`Live blacklisted`,
44 [LiveVideoError.DURATION_EXCEEDED]: $localize`Max duration exceeded`, 44 [LiveVideoError.DURATION_EXCEEDED]: $localize`Max duration exceeded`,
diff --git a/client/src/app/shared/shared-video-live/live-video.service.ts b/client/src/app/shared/shared-video-live/live-video.service.ts
index 89bfd84a0..8ac0eb924 100644
--- a/client/src/app/shared/shared-video-live/live-video.service.ts
+++ b/client/src/app/shared/shared-video-live/live-video.service.ts
@@ -2,7 +2,7 @@ import { catchError } from 'rxjs/operators'
2import { HttpClient } from '@angular/common/http' 2import { HttpClient } from '@angular/common/http'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { RestExtractor } from '@app/core' 4import { RestExtractor } from '@app/core'
5import { LiveVideo, LiveVideoCreate, LiveVideoSession, LiveVideoUpdate, ResultList, VideoCreateResult } from '@shared/models' 5import { LiveVideo, LiveVideoCreate, LiveVideoSession, LiveVideoUpdate, ResultList, VideoCreateResult } from '@peertube/peertube-models'
6import { environment } from '../../../environments/environment' 6import { environment } from '../../../environments/environment'
7import { VideoService } from '../shared-main' 7import { VideoService } from '../shared-main'
8 8
diff --git a/client/src/app/shared/shared-video-miniature/video-actions-dropdown.component.ts b/client/src/app/shared/shared-video-miniature/video-actions-dropdown.component.ts
index 9891aae2e..4b3ed6e99 100644
--- a/client/src/app/shared/shared-video-miniature/video-actions-dropdown.component.ts
+++ b/client/src/app/shared/shared-video-miniature/video-actions-dropdown.component.ts
@@ -2,7 +2,7 @@ import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@a
2import { AuthService, ConfirmService, Notifier, ScreenService, ServerService } from '@app/core' 2import { AuthService, ConfirmService, Notifier, ScreenService, ServerService } from '@app/core'
3import { BlocklistService, VideoBlockComponent, VideoBlockService, VideoReportComponent } from '@app/shared/shared-moderation' 3import { BlocklistService, VideoBlockComponent, VideoBlockService, VideoReportComponent } from '@app/shared/shared-moderation'
4import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' 4import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'
5import { VideoCaption } from '@shared/models' 5import { VideoCaption } from '@peertube/peertube-models'
6import { 6import {
7 Actor, 7 Actor,
8 DropdownAction, 8 DropdownAction,
diff --git a/client/src/app/shared/shared-video-miniature/video-download.component.ts b/client/src/app/shared/shared-video-miniature/video-download.component.ts
index 146ea7dfe..123f40b2f 100644
--- a/client/src/app/shared/shared-video-miniature/video-download.component.ts
+++ b/client/src/app/shared/shared-video-miniature/video-download.component.ts
@@ -6,8 +6,8 @@ import { HooksService } from '@app/core'
6import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' 6import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'
7import { logger } from '@root-helpers/logger' 7import { logger } from '@root-helpers/logger'
8import { videoRequiresFileToken } from '@root-helpers/video' 8import { videoRequiresFileToken } from '@root-helpers/video'
9import { objectKeysTyped, pick } from '@shared/core-utils' 9import { objectKeysTyped, pick } from '@peertube/peertube-core-utils'
10import { VideoCaption, VideoFile } from '@shared/models' 10import { VideoCaption, VideoFile } from '@peertube/peertube-models'
11import { BytesPipe, NumberFormatterPipe, VideoDetails, VideoFileTokenService, VideoService } from '../shared-main' 11import { BytesPipe, NumberFormatterPipe, VideoDetails, VideoFileTokenService, VideoService } from '../shared-main'
12 12
13type DownloadType = 'video' | 'subtitles' 13type DownloadType = 'video' | 'subtitles'
diff --git a/client/src/app/shared/shared-video-miniature/video-filters-header.component.ts b/client/src/app/shared/shared-video-miniature/video-filters-header.component.ts
index a5da9ebf3..2826408e7 100644
--- a/client/src/app/shared/shared-video-miniature/video-filters-header.component.ts
+++ b/client/src/app/shared/shared-video-miniature/video-filters-header.component.ts
@@ -4,7 +4,7 @@ import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angu
4import { FormBuilder, FormGroup } from '@angular/forms' 4import { FormBuilder, FormGroup } from '@angular/forms'
5import { AuthService } from '@app/core' 5import { AuthService } from '@app/core'
6import { ServerService } from '@app/core/server/server.service' 6import { ServerService } from '@app/core/server/server.service'
7import { UserRight } from '@shared/models' 7import { UserRight } from '@peertube/peertube-models'
8import { PeertubeModalService } from '../shared-main' 8import { PeertubeModalService } from '../shared-main'
9import { VideoFilters } from './video-filters.model' 9import { VideoFilters } from './video-filters.model'
10 10
diff --git a/client/src/app/shared/shared-video-miniature/video-filters.model.ts b/client/src/app/shared/shared-video-miniature/video-filters.model.ts
index f57a45eb1..8db17c015 100644
--- a/client/src/app/shared/shared-video-miniature/video-filters.model.ts
+++ b/client/src/app/shared/shared-video-miniature/video-filters.model.ts
@@ -1,8 +1,14 @@
1import { splitIntoArray, toBoolean } from '@app/helpers' 1import { splitIntoArray, toBoolean } from '@app/helpers'
2import { getAllPrivacies } from '@shared/core-utils' 2import { escapeHTML, getAllPrivacies } from '@peertube/peertube-core-utils'
3import { escapeHTML } from '@shared/core-utils/renderer' 3import {
4import { BooleanBothQuery, NSFWPolicyType, VideoInclude, VideoPrivacy, VideoSortField } from '@shared/models' 4 BooleanBothQuery,
5import { AttributesOnly } from '@shared/typescript-utils' 5 NSFWPolicyType,
6 VideoInclude,
7 VideoIncludeType,
8 VideoPrivacyType,
9 VideoSortField
10} from '@peertube/peertube-models'
11import { AttributesOnly } from '@peertube/peertube-typescript-utils'
6 12
7type VideoFiltersKeys = { 13type VideoFiltersKeys = {
8 [ id in keyof AttributesOnly<VideoFilters> ]: any 14 [ id in keyof AttributesOnly<VideoFilters> ]: any
@@ -207,8 +213,8 @@ export class VideoFilters {
207 213
208 toVideosAPIObject () { 214 toVideosAPIObject () {
209 let isLocal: boolean 215 let isLocal: boolean
210 let include: VideoInclude 216 let include: VideoIncludeType
211 let privacyOneOf: VideoPrivacy[] 217 let privacyOneOf: VideoPrivacyType[]
212 218
213 if (this.scope === 'local') { 219 if (this.scope === 'local') {
214 isLocal = true 220 isLocal = true
diff --git a/client/src/app/shared/shared-video-miniature/video-miniature.component.ts b/client/src/app/shared/shared-video-miniature/video-miniature.component.ts
index d453f37a1..11cd6726e 100644
--- a/client/src/app/shared/shared-video-miniature/video-miniature.component.ts
+++ b/client/src/app/shared/shared-video-miniature/video-miniature.component.ts
@@ -11,7 +11,7 @@ import {
11 Output 11 Output
12} from '@angular/core' 12} from '@angular/core'
13import { AuthService, ScreenService, ServerService, User } from '@app/core' 13import { AuthService, ScreenService, ServerService, User } from '@app/core'
14import { HTMLServerConfig, VideoExistInPlaylist, VideoPlaylistType, VideoPrivacy, VideoState } from '@shared/models' 14import { HTMLServerConfig, VideoExistInPlaylist, VideoPlaylistType, VideoPrivacy, VideoState } from '@peertube/peertube-models'
15import { LinkType } from '../../../types/link.type' 15import { LinkType } from '../../../types/link.type'
16import { ActorAvatarSize } from '../shared-actor-image/actor-avatar.component' 16import { ActorAvatarSize } from '../shared-actor-image/actor-avatar.component'
17import { Video, VideoService } from '../shared-main' 17import { Video, VideoService } from '../shared-main'
diff --git a/client/src/app/shared/shared-video-miniature/videos-list.component.ts b/client/src/app/shared/shared-video-miniature/videos-list.component.ts
index 14a5abd7a..afdef5ace 100644
--- a/client/src/app/shared/shared-video-miniature/videos-list.component.ts
+++ b/client/src/app/shared/shared-video-miniature/videos-list.component.ts
@@ -15,8 +15,8 @@ import {
15} from '@app/core' 15} from '@app/core'
16import { GlobalIconName } from '@app/shared/shared-icons' 16import { GlobalIconName } from '@app/shared/shared-icons'
17import { logger } from '@root-helpers/logger' 17import { logger } from '@root-helpers/logger'
18import { isLastMonth, isLastWeek, isThisMonth, isToday, isYesterday } from '@shared/core-utils' 18import { isLastMonth, isLastWeek, isThisMonth, isToday, isYesterday } from '@peertube/peertube-core-utils'
19import { ResultList, UserRight, VideoSortField } from '@shared/models' 19import { ResultList, UserRight, VideoSortField } from '@peertube/peertube-models'
20import { Syndication, Video } from '../shared-main' 20import { Syndication, Video } from '../shared-main'
21import { VideoFilters, VideoFilterScope } from './video-filters.model' 21import { VideoFilters, VideoFilterScope } from './video-filters.model'
22import { MiniatureDisplayOptions } from './video-miniature.component' 22import { MiniatureDisplayOptions } from './video-miniature.component'
diff --git a/client/src/app/shared/shared-video-miniature/videos-selection.component.ts b/client/src/app/shared/shared-video-miniature/videos-selection.component.ts
index 86fe502e2..286b33dd4 100644
--- a/client/src/app/shared/shared-video-miniature/videos-selection.component.ts
+++ b/client/src/app/shared/shared-video-miniature/videos-selection.component.ts
@@ -2,8 +2,8 @@ import { Observable, Subject } from 'rxjs'
2import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef } from '@angular/core' 2import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef } from '@angular/core'
3import { ComponentPagination, Notifier, User } from '@app/core' 3import { ComponentPagination, Notifier, User } from '@app/core'
4import { logger } from '@root-helpers/logger' 4import { logger } from '@root-helpers/logger'
5import { objectKeysTyped } from '@shared/core-utils' 5import { objectKeysTyped } from '@peertube/peertube-core-utils'
6import { ResultList, VideosExistInPlaylists, VideoSortField } from '@shared/models' 6import { ResultList, VideosExistInPlaylists, VideoSortField } from '@peertube/peertube-models'
7import { PeerTubeTemplateDirective, Video } from '../shared-main' 7import { PeerTubeTemplateDirective, Video } from '../shared-main'
8import { MiniatureDisplayOptions } from './video-miniature.component' 8import { MiniatureDisplayOptions } from './video-miniature.component'
9 9
diff --git a/client/src/app/shared/shared-video-playlist/video-add-to-playlist.component.ts b/client/src/app/shared/shared-video-playlist/video-add-to-playlist.component.ts
index f802416a4..84173ba69 100644
--- a/client/src/app/shared/shared-video-playlist/video-add-to-playlist.component.ts
+++ b/client/src/app/shared/shared-video-playlist/video-add-to-playlist.component.ts
@@ -4,7 +4,7 @@ import { debounceTime, filter } from 'rxjs/operators'
4import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core' 4import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'
5import { AuthService, DisableForReuseHook, Notifier } from '@app/core' 5import { AuthService, DisableForReuseHook, Notifier } from '@app/core'
6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms' 6import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
7import { secondsToTime } from '@shared/core-utils' 7import { secondsToTime } from '@peertube/peertube-core-utils'
8import { 8import {
9 CachedVideoExistInPlaylist, 9 CachedVideoExistInPlaylist,
10 Video, 10 Video,
@@ -12,7 +12,7 @@ import {
12 VideoPlaylistElementCreate, 12 VideoPlaylistElementCreate,
13 VideoPlaylistElementUpdate, 13 VideoPlaylistElementUpdate,
14 VideoPlaylistPrivacy 14 VideoPlaylistPrivacy
15} from '@shared/models' 15} from '@peertube/peertube-models'
16import { VIDEO_PLAYLIST_DISPLAY_NAME_VALIDATOR } from '../form-validators/video-playlist-validators' 16import { VIDEO_PLAYLIST_DISPLAY_NAME_VALIDATOR } from '../form-validators/video-playlist-validators'
17import { CachedPlaylist, VideoPlaylistService } from './video-playlist.service' 17import { CachedPlaylist, VideoPlaylistService } from './video-playlist.service'
18 18
diff --git a/client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.ts b/client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.ts
index b9a1d9623..0c0f11ecc 100644
--- a/client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.ts
+++ b/client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.ts
@@ -2,8 +2,8 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, In
2import { AuthService, Notifier, ServerService } from '@app/core' 2import { AuthService, Notifier, ServerService } from '@app/core'
3import { Video, VideoService } from '@app/shared/shared-main' 3import { Video, VideoService } from '@app/shared/shared-main'
4import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap' 4import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'
5import { secondsToTime } from '@shared/core-utils' 5import { secondsToTime } from '@peertube/peertube-core-utils'
6import { HTMLServerConfig, VideoPlaylistElementType, VideoPlaylistElementUpdate, VideoPrivacy } from '@shared/models' 6import { HTMLServerConfig, VideoPlaylistElementType, VideoPlaylistElementUpdate, VideoPrivacy } from '@peertube/peertube-models'
7import { VideoPlaylistElement } from './video-playlist-element.model' 7import { VideoPlaylistElement } from './video-playlist-element.model'
8import { VideoPlaylist } from './video-playlist.model' 8import { VideoPlaylist } from './video-playlist.model'
9import { VideoPlaylistService } from './video-playlist.service' 9import { VideoPlaylistService } from './video-playlist.service'
diff --git a/client/src/app/shared/shared-video-playlist/video-playlist-element.model.ts b/client/src/app/shared/shared-video-playlist/video-playlist-element.model.ts
index b661378bd..16b212281 100644
--- a/client/src/app/shared/shared-video-playlist/video-playlist-element.model.ts
+++ b/client/src/app/shared/shared-video-playlist/video-playlist-element.model.ts
@@ -1,5 +1,5 @@
1import { Video } from '@app/shared/shared-main' 1import { Video } from '@app/shared/shared-main'
2import { VideoPlaylistElement as ServerVideoPlaylistElement, VideoPlaylistElementType } from '@shared/models' 2import { VideoPlaylistElement as ServerVideoPlaylistElement, VideoPlaylistElementType_Type } from '@peertube/peertube-models'
3 3
4export class VideoPlaylistElement implements ServerVideoPlaylistElement { 4export class VideoPlaylistElement implements ServerVideoPlaylistElement {
5 id: number 5 id: number
@@ -7,7 +7,7 @@ export class VideoPlaylistElement implements ServerVideoPlaylistElement {
7 startTimestamp: number 7 startTimestamp: number
8 stopTimestamp: number 8 stopTimestamp: number
9 9
10 type: VideoPlaylistElementType 10 type: VideoPlaylistElementType_Type
11 11
12 video?: Video 12 video?: Video
13 13
diff --git a/client/src/app/shared/shared-video-playlist/video-playlist.model.ts b/client/src/app/shared/shared-video-playlist/video-playlist.model.ts
index 6b38d9ca3..24f1041ce 100644
--- a/client/src/app/shared/shared-video-playlist/video-playlist.model.ts
+++ b/client/src/app/shared/shared-video-playlist/video-playlist.model.ts
@@ -1,15 +1,15 @@
1import { getAbsoluteAPIUrl, getAbsoluteEmbedUrl } from '@app/helpers' 1import { getAbsoluteAPIUrl, getAbsoluteEmbedUrl } from '@app/helpers'
2import { Actor } from '@app/shared/shared-main' 2import { Actor } from '@app/shared/shared-main'
3import { buildPlaylistWatchPath } from '@shared/core-utils' 3import { buildPlaylistWatchPath, peertubeTranslate } from '@peertube/peertube-core-utils'
4import { peertubeTranslate } from '@shared/core-utils/i18n'
5import { 4import {
6 AccountSummary, 5 AccountSummary,
7 VideoChannelSummary, 6 VideoChannelSummary,
8 VideoConstant, 7 VideoConstant,
9 VideoPlaylist as ServerVideoPlaylist, 8 VideoPlaylist as ServerVideoPlaylist,
10 VideoPlaylistPrivacy, 9 VideoPlaylistPrivacyType,
11 VideoPlaylistType 10 VideoPlaylistType,
12} from '@shared/models' 11 VideoPlaylistType_Type
12} from '@peertube/peertube-models'
13 13
14export class VideoPlaylist implements ServerVideoPlaylist { 14export class VideoPlaylist implements ServerVideoPlaylist {
15 id: number 15 id: number
@@ -22,11 +22,11 @@ export class VideoPlaylist implements ServerVideoPlaylist {
22 22
23 displayName: string 23 displayName: string
24 description: string 24 description: string
25 privacy: VideoConstant<VideoPlaylistPrivacy> 25 privacy: VideoConstant<VideoPlaylistPrivacyType>
26 26
27 videosLength: number 27 videosLength: number
28 28
29 type: VideoConstant<VideoPlaylistType> 29 type: VideoConstant<VideoPlaylistType_Type>
30 30
31 createdAt: Date | string 31 createdAt: Date | string
32 updatedAt: Date | string 32 updatedAt: Date | string
diff --git a/client/src/app/shared/shared-video-playlist/video-playlist.service.ts b/client/src/app/shared/shared-video-playlist/video-playlist.service.ts
index bc9fb0d74..7f0da2be8 100644
--- a/client/src/app/shared/shared-video-playlist/video-playlist.service.ts
+++ b/client/src/app/shared/shared-video-playlist/video-playlist.service.ts
@@ -20,7 +20,7 @@ import {
20 VideoPlaylistReorder, 20 VideoPlaylistReorder,
21 VideoPlaylistUpdate, 21 VideoPlaylistUpdate,
22 VideosExistInPlaylists 22 VideosExistInPlaylists
23} from '@shared/models' 23} from '@peertube/peertube-models'
24import { environment } from '../../../environments/environment' 24import { environment } from '../../../environments/environment'
25import { VideoPlaylistElement } from './video-playlist-element.model' 25import { VideoPlaylistElement } from './video-playlist-element.model'
26import { VideoPlaylist } from './video-playlist.model' 26import { VideoPlaylist } from './video-playlist.model'
diff --git a/client/src/assets/player/peertube-player.ts b/client/src/assets/player/peertube-player.ts
index 69ca1a566..4da681a08 100644
--- a/client/src/assets/player/peertube-player.ts
+++ b/client/src/assets/player/peertube-player.ts
@@ -30,7 +30,7 @@ import { PluginsManager } from '@root-helpers/plugins-manager'
30import { copyToClipboard } from '@root-helpers/utils' 30import { copyToClipboard } from '@root-helpers/utils'
31import { buildVideoOrPlaylistEmbed } from '@root-helpers/video' 31import { buildVideoOrPlaylistEmbed } from '@root-helpers/video'
32import { isMobile } from '@root-helpers/web-browser' 32import { isMobile } from '@root-helpers/web-browser'
33import { buildVideoLink, decorateVideoLink, isDefaultLocale, pick } from '@shared/core-utils' 33import { buildVideoLink, decorateVideoLink, isDefaultLocale, pick } from '@peertube/peertube-core-utils'
34import { saveAverageBandwidth } from './peertube-player-local-storage' 34import { saveAverageBandwidth } from './peertube-player-local-storage'
35import { ControlBarOptionsBuilder, HLSOptionsBuilder, WebVideoOptionsBuilder } from './shared/player-options-builder' 35import { ControlBarOptionsBuilder, HLSOptionsBuilder, WebVideoOptionsBuilder } from './shared/player-options-builder'
36import { TranslationsManager } from './translations-manager' 36import { TranslationsManager } from './translations-manager'
@@ -51,6 +51,8 @@ if (PlayProgressBar.prototype.options_.children.includes('timeTooltip') !== true
51 PlayProgressBar.prototype.options_.children.push('timeTooltip') 51 PlayProgressBar.prototype.options_.children.push('timeTooltip')
52} 52}
53 53
54export { videojs }
55
54export class PeerTubePlayer { 56export class PeerTubePlayer {
55 private pluginsManager: PluginsManager 57 private pluginsManager: PluginsManager
56 58
@@ -516,9 +518,3 @@ export class PeerTubePlayer {
516 return { content } 518 return { content }
517 } 519 }
518} 520}
519
520// ############################################################################
521
522export {
523 videojs
524}
diff --git a/client/src/assets/player/shared/common/utils.ts b/client/src/assets/player/shared/common/utils.ts
index 609240626..4a7182021 100644
--- a/client/src/assets/player/shared/common/utils.ts
+++ b/client/src/assets/player/shared/common/utils.ts
@@ -1,4 +1,4 @@
1import { VideoFile } from '@shared/models' 1import { VideoFile } from '@peertube/peertube-models'
2 2
3function toTitleCase (str: string) { 3function toTitleCase (str: string) {
4 return str.charAt(0).toUpperCase() + str.slice(1) 4 return str.charAt(0).toUpperCase() + str.slice(1)
diff --git a/client/src/assets/player/shared/control-bar/peertube-link-button.ts b/client/src/assets/player/shared/control-bar/peertube-link-button.ts
index 8242b9cea..f93c265d6 100644
--- a/client/src/assets/player/shared/control-bar/peertube-link-button.ts
+++ b/client/src/assets/player/shared/control-bar/peertube-link-button.ts
@@ -1,5 +1,5 @@
1import videojs from 'video.js' 1import videojs from 'video.js'
2import { buildVideoLink, decorateVideoLink } from '@shared/core-utils' 2import { buildVideoLink, decorateVideoLink } from '@peertube/peertube-core-utils'
3import { PeerTubeLinkButtonOptions } from '../../types' 3import { PeerTubeLinkButtonOptions } from '../../types'
4 4
5const Component = videojs.getComponent('Component') 5const Component = videojs.getComponent('Component')
diff --git a/client/src/assets/player/shared/metrics/metrics-plugin.ts b/client/src/assets/player/shared/metrics/metrics-plugin.ts
index 06ca0c2f2..0ad16338c 100644
--- a/client/src/assets/player/shared/metrics/metrics-plugin.ts
+++ b/client/src/assets/player/shared/metrics/metrics-plugin.ts
@@ -1,7 +1,7 @@
1import debug from 'debug' 1import debug from 'debug'
2import videojs from 'video.js' 2import videojs from 'video.js'
3import { PlaybackMetricCreate, VideoResolutionType } from '@peertube/peertube-models'
3import { logger } from '@root-helpers/logger' 4import { logger } from '@root-helpers/logger'
4import { PlaybackMetricCreate } from '../../../../../../shared/models'
5import { MetricsPluginOptions, PlayerNetworkInfo } from '../../types' 5import { MetricsPluginOptions, PlayerNetworkInfo } from '../../types'
6 6
7const debugLogger = debug('peertube:player:metrics') 7const debugLogger = debug('peertube:player:metrics')
@@ -102,7 +102,7 @@ class MetricsPlugin extends Plugin {
102 } 102 }
103 103
104 const body: PlaybackMetricCreate = { 104 const body: PlaybackMetricCreate = {
105 resolution, 105 resolution: resolution as VideoResolutionType,
106 fps, 106 fps,
107 107
108 playerMode: this.options_.mode(), 108 playerMode: this.options_.mode(),
diff --git a/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts b/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts
index 8c376cd21..1e47fe486 100644
--- a/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts
+++ b/client/src/assets/player/shared/p2p-media-loader/p2p-media-loader-plugin.ts
@@ -3,7 +3,7 @@ import videojs from 'video.js'
3import { Events, Segment } from '@peertube/p2p-media-loader-core' 3import { Events, Segment } from '@peertube/p2p-media-loader-core'
4import { Engine, initHlsJsPlayer, initVideoJsContribHlsJsPlayer } from '@peertube/p2p-media-loader-hlsjs' 4import { Engine, initHlsJsPlayer, initVideoJsContribHlsJsPlayer } from '@peertube/p2p-media-loader-hlsjs'
5import { logger } from '@root-helpers/logger' 5import { logger } from '@root-helpers/logger'
6import { addQueryParams } from '@shared/core-utils' 6import { addQueryParams } from '@peertube/peertube-core-utils'
7import { P2PMediaLoaderPluginOptions, PlayerNetworkInfo } from '../../types' 7import { P2PMediaLoaderPluginOptions, PlayerNetworkInfo } from '../../types'
8import { SettingsButton } from '../settings/settings-menu-button' 8import { SettingsButton } from '../settings/settings-menu-button'
9 9
diff --git a/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts b/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts
index 9cb6344a9..75d483015 100644
--- a/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts
+++ b/client/src/assets/player/shared/p2p-media-loader/segment-validator.ts
@@ -2,7 +2,7 @@ import { basename } from 'path'
2import { Segment } from '@peertube/p2p-media-loader-core' 2import { Segment } from '@peertube/p2p-media-loader-core'
3import { logger } from '@root-helpers/logger' 3import { logger } from '@root-helpers/logger'
4import { wait } from '@root-helpers/utils' 4import { wait } from '@root-helpers/utils'
5import { removeQueryParams } from '@shared/core-utils' 5import { removeQueryParams } from '@peertube/peertube-core-utils'
6import { isSameOrigin } from '../common' 6import { isSameOrigin } from '../common'
7 7
8type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } } 8type SegmentsJSON = { [filename: string]: string | { [byterange: string]: string } }
diff --git a/client/src/assets/player/shared/peertube/peertube-plugin.ts b/client/src/assets/player/shared/peertube/peertube-plugin.ts
index f93593415..cf866723c 100644
--- a/client/src/assets/player/shared/peertube/peertube-plugin.ts
+++ b/client/src/assets/player/shared/peertube/peertube-plugin.ts
@@ -1,9 +1,9 @@
1import debug from 'debug' 1import debug from 'debug'
2import videojs from 'video.js' 2import videojs from 'video.js'
3import { timeToInt } from '@peertube/peertube-core-utils'
4import { VideoView, VideoViewEvent } from '@peertube/peertube-models'
3import { logger } from '@root-helpers/logger' 5import { logger } from '@root-helpers/logger'
4import { isIOS, isMobile, isSafari } from '@root-helpers/web-browser' 6import { isIOS, isMobile, isSafari } from '@root-helpers/web-browser'
5import { timeToInt } from '@shared/core-utils'
6import { VideoView, VideoViewEvent } from '@shared/models/videos'
7import { 7import {
8 getStoredLastSubtitle, 8 getStoredLastSubtitle,
9 getStoredMute, 9 getStoredMute,
diff --git a/client/src/assets/player/shared/player-options-builder/hls-options-builder.ts b/client/src/assets/player/shared/player-options-builder/hls-options-builder.ts
index fd632d90d..41198afbe 100644
--- a/client/src/assets/player/shared/player-options-builder/hls-options-builder.ts
+++ b/client/src/assets/player/shared/player-options-builder/hls-options-builder.ts
@@ -1,7 +1,7 @@
1import { HybridLoaderSettings } from '@peertube/p2p-media-loader-core' 1import { HybridLoaderSettings } from '@peertube/p2p-media-loader-core'
2import { HlsJsEngineSettings } from '@peertube/p2p-media-loader-hlsjs' 2import { HlsJsEngineSettings } from '@peertube/p2p-media-loader-hlsjs'
3import { logger } from '@root-helpers/logger' 3import { logger } from '@root-helpers/logger'
4import { LiveVideoLatencyMode } from '@shared/models' 4import { LiveVideoLatencyMode } from '@peertube/peertube-models'
5import { getAverageBandwidthInStore } from '../../peertube-player-local-storage' 5import { getAverageBandwidthInStore } from '../../peertube-player-local-storage'
6import { P2PMediaLoader, P2PMediaLoaderPluginOptions, PeerTubePlayerContructorOptions, PeerTubePlayerLoadOptions } from '../../types' 6import { P2PMediaLoader, P2PMediaLoaderPluginOptions, PeerTubePlayerContructorOptions, PeerTubePlayerLoadOptions } from '../../types'
7import { getRtcConfig, isSameOrigin } from '../common' 7import { getRtcConfig, isSameOrigin } from '../common'
diff --git a/client/src/assets/player/shared/playlist/playlist-menu-item.ts b/client/src/assets/player/shared/playlist/playlist-menu-item.ts
index f9366332d..66c92d9e5 100644
--- a/client/src/assets/player/shared/playlist/playlist-menu-item.ts
+++ b/client/src/assets/player/shared/playlist/playlist-menu-item.ts
@@ -1,6 +1,6 @@
1import videojs from 'video.js' 1import videojs from 'video.js'
2import { secondsToTime } from '@shared/core-utils' 2import { secondsToTime } from '@peertube/peertube-core-utils'
3import { VideoPlaylistElement } from '@shared/models' 3import { VideoPlaylistElement } from '@peertube/peertube-models'
4import { PlaylistItemOptions } from '../../types' 4import { PlaylistItemOptions } from '../../types'
5 5
6const Component = videojs.getComponent('Component') 6const Component = videojs.getComponent('Component')
diff --git a/client/src/assets/player/shared/playlist/playlist-menu.ts b/client/src/assets/player/shared/playlist/playlist-menu.ts
index 53a5a7274..f6795390c 100644
--- a/client/src/assets/player/shared/playlist/playlist-menu.ts
+++ b/client/src/assets/player/shared/playlist/playlist-menu.ts
@@ -1,5 +1,5 @@
1import videojs from 'video.js' 1import videojs from 'video.js'
2import { VideoPlaylistElement } from '@shared/models' 2import { VideoPlaylistElement } from '@peertube/peertube-models'
3import { PlaylistPluginOptions } from '../../types' 3import { PlaylistPluginOptions } from '../../types'
4import { PlaylistMenuItem } from './playlist-menu-item' 4import { PlaylistMenuItem } from './playlist-menu-item'
5 5
diff --git a/client/src/assets/player/shared/stats/stats-card.ts b/client/src/assets/player/shared/stats/stats-card.ts
index 13334d91a..fefe8483e 100644
--- a/client/src/assets/player/shared/stats/stats-card.ts
+++ b/client/src/assets/player/shared/stats/stats-card.ts
@@ -1,6 +1,6 @@
1import videojs from 'video.js' 1import videojs from 'video.js'
2import { logger } from '@root-helpers/logger' 2import { logger } from '@root-helpers/logger'
3import { secondsToTime } from '@shared/core-utils' 3import { secondsToTime } from '@peertube/peertube-core-utils'
4import { PlayerNetworkInfo as EventPlayerNetworkInfo } from '../../types' 4import { PlayerNetworkInfo as EventPlayerNetworkInfo } from '../../types'
5import { bytes } from '../common' 5import { bytes } from '../common'
6 6
diff --git a/client/src/assets/player/shared/web-video/web-video-plugin.ts b/client/src/assets/player/shared/web-video/web-video-plugin.ts
index b839062f2..18d911108 100644
--- a/client/src/assets/player/shared/web-video/web-video-plugin.ts
+++ b/client/src/assets/player/shared/web-video/web-video-plugin.ts
@@ -1,8 +1,8 @@
1import debug from 'debug' 1import debug from 'debug'
2import videojs from 'video.js' 2import videojs from 'video.js'
3import { logger } from '@root-helpers/logger' 3import { logger } from '@root-helpers/logger'
4import { addQueryParams } from '@shared/core-utils' 4import { addQueryParams } from '@peertube/peertube-core-utils'
5import { VideoFile } from '@shared/models' 5import { VideoFile } from '@peertube/peertube-models'
6import { PeerTubeResolution, PlayerNetworkInfo, WebVideoPluginOptions } from '../../types' 6import { PeerTubeResolution, PlayerNetworkInfo, WebVideoPluginOptions } from '../../types'
7 7
8const debugLogger = debug('peertube:player:web-video-plugin') 8const debugLogger = debug('peertube:player:web-video-plugin')
diff --git a/client/src/assets/player/translations-manager.ts b/client/src/assets/player/translations-manager.ts
index bf9c2d471..03d5dd91e 100644
--- a/client/src/assets/player/translations-manager.ts
+++ b/client/src/assets/player/translations-manager.ts
@@ -1,5 +1,5 @@
1import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '@peertube/peertube-core-utils'
1import { logger } from '@root-helpers/logger' 2import { logger } from '@root-helpers/logger'
2import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '@shared/core-utils/i18n'
3 3
4export class TranslationsManager { 4export class TranslationsManager {
5 private static videojsLocaleCache: { [ path: string ]: any } = {} 5 private static videojsLocaleCache: { [ path: string ]: any } = {}
diff --git a/client/src/assets/player/types/peertube-player-options.ts b/client/src/assets/player/types/peertube-player-options.ts
index e1b8c7fab..352f7d8dd 100644
--- a/client/src/assets/player/types/peertube-player-options.ts
+++ b/client/src/assets/player/types/peertube-player-options.ts
@@ -1,5 +1,5 @@
1import { LiveVideoLatencyModeType, VideoFile } from '@peertube/peertube-models'
1import { PluginsManager } from '@root-helpers/plugins-manager' 2import { PluginsManager } from '@root-helpers/plugins-manager'
2import { LiveVideoLatencyMode, VideoFile } from '@shared/models'
3import { PeerTubeDockPluginOptions } from '../shared/dock/peertube-dock-plugin' 3import { PeerTubeDockPluginOptions } from '../shared/dock/peertube-dock-plugin'
4import { PlaylistPluginOptions, VideoJSCaption, VideoJSStoryboard } from './peertube-videojs-typings' 4import { PlaylistPluginOptions, VideoJSCaption, VideoJSStoryboard } from './peertube-videojs-typings'
5 5
@@ -59,7 +59,7 @@ export type PeerTubePlayerLoadOptions = {
59 isLive: boolean 59 isLive: boolean
60 60
61 liveOptions?: { 61 liveOptions?: {
62 latencyMode: LiveVideoLatencyMode 62 latencyMode: LiveVideoLatencyModeType
63 } 63 }
64 64
65 videoCaptions: VideoJSCaption[] 65 videoCaptions: VideoJSCaption[]
diff --git a/client/src/assets/player/types/peertube-videojs-typings.ts b/client/src/assets/player/types/peertube-videojs-typings.ts
index 73b38d0d3..dae9e14c8 100644
--- a/client/src/assets/player/types/peertube-videojs-typings.ts
+++ b/client/src/assets/player/types/peertube-videojs-typings.ts
@@ -1,7 +1,7 @@
1import { HlsConfig, Level } from 'hls.js' 1import { HlsConfig, Level } from 'hls.js'
2import videojs from 'video.js' 2import videojs from 'video.js'
3import { Engine } from '@peertube/p2p-media-loader-hlsjs' 3import { Engine } from '@peertube/p2p-media-loader-hlsjs'
4import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@shared/models' 4import { VideoFile, VideoPlaylist, VideoPlaylistElement } from '@peertube/peertube-models'
5import { BezelsPlugin } from '../shared/bezels/bezels-plugin' 5import { BezelsPlugin } from '../shared/bezels/bezels-plugin'
6import { StoryboardPlugin } from '../shared/control-bar/storyboard-plugin' 6import { StoryboardPlugin } from '../shared/control-bar/storyboard-plugin'
7import { PeerTubeDockPlugin, PeerTubeDockPluginOptions } from '../shared/dock/peertube-dock-plugin' 7import { PeerTubeDockPlugin, PeerTubeDockPluginOptions } from '../shared/dock/peertube-dock-plugin'
diff --git a/client/src/assets/player/utils.ts b/client/src/assets/player/utils.ts
index cc303b80b..b56e3df8f 100644
--- a/client/src/assets/player/utils.ts
+++ b/client/src/assets/player/utils.ts
@@ -1,4 +1,4 @@
1import { HTMLServerConfig, Video, VideoFile } from '@shared/models' 1import { HTMLServerConfig, Video, VideoFile } from '@peertube/peertube-models'
2 2
3function toTitleCase (str: string) { 3function toTitleCase (str: string) {
4 return str.charAt(0).toUpperCase() + str.slice(1) 4 return str.charAt(0).toUpperCase() + str.slice(1)
diff --git a/client/src/root-helpers/logger.ts b/client/src/root-helpers/logger.ts
index 8181c13f3..108228d84 100644
--- a/client/src/root-helpers/logger.ts
+++ b/client/src/root-helpers/logger.ts
@@ -1,4 +1,4 @@
1import { ClientLogCreate } from '@shared/models/server' 1import { ClientLogCreate } from '@peertube/peertube-models'
2import { peertubeLocalStorage } from './peertube-web-storage' 2import { peertubeLocalStorage } from './peertube-web-storage'
3import { OAuthUserTokens } from './users' 3import { OAuthUserTokens } from './users'
4 4
diff --git a/client/src/root-helpers/plugins-manager.ts b/client/src/root-helpers/plugins-manager.ts
index fd7b5233b..e987f16d6 100644
--- a/client/src/root-helpers/plugins-manager.ts
+++ b/client/src/root-helpers/plugins-manager.ts
@@ -3,7 +3,7 @@ import * as debug from 'debug'
3import { firstValueFrom, ReplaySubject } from 'rxjs' 3import { firstValueFrom, ReplaySubject } from 'rxjs'
4import { first, shareReplay } from 'rxjs/operators' 4import { first, shareReplay } from 'rxjs/operators'
5import { RegisterClientHelpers } from 'src/types/register-client-option.model' 5import { RegisterClientHelpers } from 'src/types/register-client-option.model'
6import { getExternalAuthHref, getHookType, internalRunHook } from '@shared/core-utils/plugins/hooks' 6import { getExternalAuthHref, getHookType, internalRunHook } from '@peertube/peertube-core-utils'
7import { 7import {
8 ClientHookName, 8 ClientHookName,
9 clientHookObject, 9 clientHookObject,
@@ -11,13 +11,14 @@ import {
11 HTMLServerConfig, 11 HTMLServerConfig,
12 PluginClientScope, 12 PluginClientScope,
13 PluginType, 13 PluginType,
14 PluginType_Type,
14 RegisterClientFormFieldOptions, 15 RegisterClientFormFieldOptions,
15 RegisterClientHookOptions, 16 RegisterClientHookOptions,
16 RegisterClientRouteOptions, 17 RegisterClientRouteOptions,
17 RegisterClientSettingsScriptOptions, 18 RegisterClientSettingsScriptOptions,
18 RegisterClientVideoFieldOptions, 19 RegisterClientVideoFieldOptions,
19 ServerConfigPlugin 20 ServerConfigPlugin
20} from '@shared/models' 21} from '@peertube/peertube-models'
21import { environment } from '../environments/environment' 22import { environment } from '../environments/environment'
22import { ClientScript } from '../types' 23import { ClientScript } from '../types'
23import { logger } from './logger' 24import { logger } from './logger'
@@ -32,7 +33,7 @@ type Hooks = { [ name: string ]: HookStructValue[] }
32type PluginInfo = { 33type PluginInfo = {
33 plugin: ServerConfigPlugin 34 plugin: ServerConfigPlugin
34 clientScript: ClientScriptJSON 35 clientScript: ClientScriptJSON
35 pluginType: PluginType 36 pluginType: PluginType_Type
36 isTheme: boolean 37 isTheme: boolean
37} 38}
38 39
diff --git a/client/src/root-helpers/video.ts b/client/src/root-helpers/video.ts
index 4a44615fb..4ee29df13 100644
--- a/client/src/root-helpers/video.ts
+++ b/client/src/root-helpers/video.ts
@@ -1,4 +1,4 @@
1import { HTMLServerConfig, Video, VideoPrivacy } from '@shared/models' 1import { HTMLServerConfig, Video, VideoPrivacy, VideoPrivacyType } from '@peertube/peertube-models'
2 2
3function buildVideoOrPlaylistEmbed (options: { 3function buildVideoOrPlaylistEmbed (options: {
4 embedUrl: string 4 embedUrl: string
@@ -42,13 +42,13 @@ function isP2PEnabled (video: Video, config: HTMLServerConfig, userP2PEnabled: b
42} 42}
43 43
44function videoRequiresUserAuth (video: Video, videoPassword?: string) { 44function videoRequiresUserAuth (video: Video, videoPassword?: string) {
45 return new Set([ VideoPrivacy.PRIVATE, VideoPrivacy.INTERNAL ]).has(video.privacy.id) || 45 return new Set<VideoPrivacyType>([ VideoPrivacy.PRIVATE, VideoPrivacy.INTERNAL ]).has(video.privacy.id) ||
46 (video.privacy.id === VideoPrivacy.PASSWORD_PROTECTED && !videoPassword) 46 (video.privacy.id === VideoPrivacy.PASSWORD_PROTECTED && !videoPassword)
47 47
48} 48}
49 49
50function videoRequiresFileToken (video: Video, videoPassword?: string) { 50function videoRequiresFileToken (video: Video) {
51 return new Set([ VideoPrivacy.PRIVATE, VideoPrivacy.INTERNAL, VideoPrivacy.PASSWORD_PROTECTED ]).has(video.privacy.id) 51 return new Set<VideoPrivacyType>([ VideoPrivacy.PRIVATE, VideoPrivacy.INTERNAL, VideoPrivacy.PASSWORD_PROTECTED ]).has(video.privacy.id)
52} 52}
53 53
54export { 54export {
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts
index 78b812ffd..e4f723079 100644
--- a/client/src/standalone/videos/embed.ts
+++ b/client/src/standalone/videos/embed.ts
@@ -11,7 +11,7 @@ import {
11 VideoPlaylist, 11 VideoPlaylist,
12 VideoPlaylistElement, 12 VideoPlaylistElement,
13 VideoState 13 VideoState
14} from '../../../../shared/models' 14} from '@peertube/peertube-models'
15import { PeerTubePlayer } from '../../assets/player/peertube-player' 15import { PeerTubePlayer } from '../../assets/player/peertube-player'
16import { TranslationsManager } from '../../assets/player/translations-manager' 16import { TranslationsManager } from '../../assets/player/translations-manager'
17import { getParamString, logger, videoRequiresFileToken } from '../../root-helpers' 17import { getParamString, logger, videoRequiresFileToken } from '../../root-helpers'
diff --git a/client/src/standalone/videos/shared/auth-http.ts b/client/src/standalone/videos/shared/auth-http.ts
index c1e9f7750..3dfc47b88 100644
--- a/client/src/standalone/videos/shared/auth-http.ts
+++ b/client/src/standalone/videos/shared/auth-http.ts
@@ -1,4 +1,4 @@
1import { HttpStatusCode, OAuth2ErrorCode, UserRefreshToken } from '../../../../../shared/models' 1import { HttpStatusCode, OAuth2ErrorCode, OAuth2ErrorCodeType, UserRefreshToken } from '@peertube/peertube-models'
2import { OAuthUserTokens, objectToUrlEncoded } from '../../../root-helpers' 2import { OAuthUserTokens, objectToUrlEncoded } from '../../../root-helpers'
3import { peertubeLocalStorage } from '../../../root-helpers/peertube-web-storage' 3import { peertubeLocalStorage } from '../../../root-helpers/peertube-web-storage'
4 4
@@ -66,7 +66,7 @@ export class AuthHTTP {
66 if (res.status === HttpStatusCode.UNAUTHORIZED_401) return undefined 66 if (res.status === HttpStatusCode.UNAUTHORIZED_401) return undefined
67 67
68 return res.json() 68 return res.json()
69 }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCode }) => { 69 }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCodeType }) => {
70 if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) { 70 if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) {
71 OAuthUserTokens.flushLocalStorage(peertubeLocalStorage) 71 OAuthUserTokens.flushLocalStorage(peertubeLocalStorage)
72 this.removeTokensFromHeaders() 72 this.removeTokensFromHeaders()
diff --git a/client/src/standalone/videos/shared/live-manager.ts b/client/src/standalone/videos/shared/live-manager.ts
index 5fac229ba..274f70d9c 100644
--- a/client/src/standalone/videos/shared/live-manager.ts
+++ b/client/src/standalone/videos/shared/live-manager.ts
@@ -1,5 +1,5 @@
1import { Socket } from 'socket.io-client' 1import { Socket } from 'socket.io-client'
2import { LiveVideoEventPayload, VideoDetails, VideoState } from '../../../../../shared/models' 2import { LiveVideoEventPayload, VideoDetails, VideoState, VideoStateType } from '@peertube/peertube-models'
3import { PlayerHTML } from './player-html' 3import { PlayerHTML } from './player-html'
4import { Translations } from './translations' 4import { Translations } from './translations'
5 5
@@ -49,7 +49,7 @@ export class LiveManager {
49 } 49 }
50 50
51 displayInfo (options: { 51 displayInfo (options: {
52 state: VideoState 52 state: VideoStateType
53 translations: Translations 53 translations: Translations
54 }) { 54 }) {
55 const { state, translations } = options 55 const { state, translations } = options
diff --git a/client/src/standalone/videos/shared/peertube-plugin.ts b/client/src/standalone/videos/shared/peertube-plugin.ts
index daf6f2b03..95433299e 100644
--- a/client/src/standalone/videos/shared/peertube-plugin.ts
+++ b/client/src/standalone/videos/shared/peertube-plugin.ts
@@ -1,5 +1,5 @@
1import { peertubeTranslate } from '../../../../../shared/core-utils/i18n' 1import { peertubeTranslate } from '@peertube/peertube-core-utils'
2import { HTMLServerConfig, PublicServerSetting } from '../../../../../shared/models' 2import { HTMLServerConfig, PublicServerSetting } from '@peertube/peertube-models'
3import { PluginInfo, PluginsManager } from '../../../root-helpers' 3import { PluginInfo, PluginsManager } from '../../../root-helpers'
4import { RegisterClientHelpers } from '../../../types' 4import { RegisterClientHelpers } from '../../../types'
5import { AuthHTTP } from './auth-http' 5import { AuthHTTP } from './auth-http'
diff --git a/client/src/standalone/videos/shared/player-html.ts b/client/src/standalone/videos/shared/player-html.ts
index 0defa0d70..ada2aaaf7 100644
--- a/client/src/standalone/videos/shared/player-html.ts
+++ b/client/src/standalone/videos/shared/player-html.ts
@@ -1,4 +1,4 @@
1import { peertubeTranslate } from '../../../../../shared/core-utils/i18n' 1import { peertubeTranslate } from '@peertube/peertube-core-utils'
2import { logger } from '../../../root-helpers' 2import { logger } from '../../../root-helpers'
3import { Translations } from './translations' 3import { Translations } from './translations'
4 4
diff --git a/client/src/standalone/videos/shared/player-options-builder.ts b/client/src/standalone/videos/shared/player-options-builder.ts
index 8a4e32444..3437ef421 100644
--- a/client/src/standalone/videos/shared/player-options-builder.ts
+++ b/client/src/standalone/videos/shared/player-options-builder.ts
@@ -1,4 +1,4 @@
1import { peertubeTranslate } from '../../../../../shared/core-utils/i18n' 1import { peertubeTranslate } from '@peertube/peertube-core-utils'
2import { 2import {
3 HTMLServerConfig, 3 HTMLServerConfig,
4 LiveVideo, 4 LiveVideo,
@@ -9,7 +9,7 @@ import {
9 VideoPlaylistElement, 9 VideoPlaylistElement,
10 VideoState, 10 VideoState,
11 VideoStreamingPlaylistType 11 VideoStreamingPlaylistType
12} from '../../../../../shared/models' 12} from '@peertube/peertube-models'
13import { HLSOptions, PeerTubePlayerContructorOptions, PeerTubePlayerLoadOptions, PlayerMode, VideoJSCaption } from '../../../assets/player' 13import { HLSOptions, PeerTubePlayerContructorOptions, PeerTubePlayerLoadOptions, PlayerMode, VideoJSCaption } from '../../../assets/player'
14import { 14import {
15 getBoolOrDefault, 15 getBoolOrDefault,
diff --git a/client/src/standalone/videos/shared/playlist-fetcher.ts b/client/src/standalone/videos/shared/playlist-fetcher.ts
index 713d82e3a..db38e3d6c 100644
--- a/client/src/standalone/videos/shared/playlist-fetcher.ts
+++ b/client/src/standalone/videos/shared/playlist-fetcher.ts
@@ -1,4 +1,4 @@
1import { HttpStatusCode, ResultList, VideoPlaylistElement } from '../../../../../shared/models' 1import { HttpStatusCode, ResultList, VideoPlaylistElement } from '@peertube/peertube-models'
2import { logger } from '../../../root-helpers' 2import { logger } from '../../../root-helpers'
3import { AuthHTTP } from './auth-http' 3import { AuthHTTP } from './auth-http'
4 4
diff --git a/client/src/standalone/videos/shared/playlist-tracker.ts b/client/src/standalone/videos/shared/playlist-tracker.ts
index d8708826d..dc9a084b7 100644
--- a/client/src/standalone/videos/shared/playlist-tracker.ts
+++ b/client/src/standalone/videos/shared/playlist-tracker.ts
@@ -1,4 +1,4 @@
1import { VideoPlaylist, VideoPlaylistElement } from '../../../../../shared/models' 1import { VideoPlaylist, VideoPlaylistElement } from '@peertube/peertube-models'
2import { logger } from '../../../root-helpers' 2import { logger } from '../../../root-helpers'
3 3
4export class PlaylistTracker { 4export class PlaylistTracker {
diff --git a/client/src/standalone/videos/shared/video-fetcher.ts b/client/src/standalone/videos/shared/video-fetcher.ts
index 7fb94fbf3..9149d946e 100644
--- a/client/src/standalone/videos/shared/video-fetcher.ts
+++ b/client/src/standalone/videos/shared/video-fetcher.ts
@@ -1,4 +1,4 @@
1import { HttpStatusCode, LiveVideo, VideoDetails, VideoToken } from '../../../../../shared/models' 1import { HttpStatusCode, LiveVideo, VideoDetails, VideoToken } from '@peertube/peertube-models'
2import { logger } from '../../../root-helpers' 2import { logger } from '../../../root-helpers'
3import { PeerTubeServerError } from '../../../types' 3import { PeerTubeServerError } from '../../../types'
4import { AuthHTTP } from './auth-http' 4import { AuthHTTP } from './auth-http'
diff --git a/client/src/types/job-state-client.type.ts b/client/src/types/job-state-client.type.ts
index 6123678df..6697539a3 100644
--- a/client/src/types/job-state-client.type.ts
+++ b/client/src/types/job-state-client.type.ts
@@ -1,3 +1,3 @@
1import { JobState } from '@shared/models' 1import { JobState } from '@peertube/peertube-models'
2 2
3export type JobStateClient = JobState 3export type JobStateClient = JobState
diff --git a/client/src/types/job-type-client.type.ts b/client/src/types/job-type-client.type.ts
index 7d51f1db2..930809081 100644
--- a/client/src/types/job-type-client.type.ts
+++ b/client/src/types/job-type-client.type.ts
@@ -1,3 +1,3 @@
1import { JobType } from '@shared/models' 1import { JobType } from '@peertube/peertube-models'
2 2
3export type JobTypeClient = 'all' | JobType 3export type JobTypeClient = 'all' | JobType
diff --git a/client/src/types/register-client-option.model.ts b/client/src/types/register-client-option.model.ts
index 2c09f15a7..2336119bb 100644
--- a/client/src/types/register-client-option.model.ts
+++ b/client/src/types/register-client-option.model.ts
@@ -5,7 +5,7 @@ import {
5 RegisterClientSettingsScriptOptions, 5 RegisterClientSettingsScriptOptions,
6 RegisterClientVideoFieldOptions, 6 RegisterClientVideoFieldOptions,
7 ServerConfig, SettingEntries 7 ServerConfig, SettingEntries
8} from '@shared/models' 8} from '@peertube/peertube-models'
9 9
10export type RegisterClientOptions = { 10export type RegisterClientOptions = {
11 registerHook: (options: RegisterClientHookOptions) => void 11 registerHook: (options: RegisterClientHookOptions) => void
diff --git a/client/src/types/server-error.model.ts b/client/src/types/server-error.model.ts
index 4a57287fe..096deb50b 100644
--- a/client/src/types/server-error.model.ts
+++ b/client/src/types/server-error.model.ts
@@ -1,9 +1,9 @@
1import { ServerErrorCode } from '@shared/models/index' 1import { ServerErrorCodeType } from '@peertube/peertube-models'
2 2
3export class PeerTubeServerError extends Error { 3export class PeerTubeServerError extends Error {
4 serverCode: ServerErrorCode 4 serverCode: ServerErrorCodeType
5 5
6 constructor (message: string, serverCode: ServerErrorCode) { 6 constructor (message: string, serverCode: ServerErrorCodeType) {
7 super(message) 7 super(message)
8 this.name = 'CustomError' 8 this.name = 'CustomError'
9 this.serverCode = serverCode 9 this.serverCode = serverCode
diff --git a/client/tsconfig.eslint.json b/client/tsconfig.eslint.json
index a18c461fe..91bb53e1d 100644
--- a/client/tsconfig.eslint.json
+++ b/client/tsconfig.eslint.json
@@ -4,5 +4,10 @@
4 // adjust "includes" to what makes sense for you and your project 4 // adjust "includes" to what makes sense for you and your project
5 "src/**/*.ts", 5 "src/**/*.ts",
6 "e2e/**/*.ts" 6 "e2e/**/*.ts"
7 ],
8 "references": [
9 { "path": "../packages/core-utils" },
10 { "path": "../packages/models" },
11 { "path": "../packages/typescript-utils" }
7 ] 12 ]
8} 13}
diff --git a/client/tsconfig.json b/client/tsconfig.json
index 5dee39362..48c2ff7f7 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -11,6 +11,7 @@
11 "noImplicitAny": true, 11 "noImplicitAny": true,
12 "noImplicitThis": true, 12 "noImplicitThis": true,
13 "alwaysStrict": true, 13 "alwaysStrict": true,
14 "allowJs": true,
14 "importHelpers": true, 15 "importHelpers": true,
15 "allowSyntheticDefaultImports": true, 16 "allowSyntheticDefaultImports": true,
16 "strictBindCallApply": true, 17 "strictBindCallApply": true,
@@ -37,24 +38,6 @@
37 "@app/*": [ 38 "@app/*": [
38 "src/app/*" 39 "src/app/*"
39 ], 40 ],
40 "@shared/models/*": [
41 "../shared/models/*"
42 ],
43 "@shared/models": [
44 "../shared/models"
45 ],
46 "@shared/core-utils": [
47 "../shared/core-utils"
48 ],
49 "@shared/core-utils/*": [
50 "../shared/core-utils/*"
51 ],
52 "@shared/typescript-utils": [
53 "../shared/typescript-utils"
54 ],
55 "@shared/typescript-utils/*": [
56 "../shared/typescript-utils/*"
57 ],
58 "@root-helpers/*": [ 41 "@root-helpers/*": [
59 "src/root-helpers/*" 42 "src/root-helpers/*"
60 ], 43 ],
@@ -70,6 +53,11 @@
70 }, 53 },
71 "useDefineForClassFields": false 54 "useDefineForClassFields": false
72 }, 55 },
56 "references": [
57 { "path": "../packages/core-utils" },
58 { "path": "../packages/models" },
59 { "path": "../packages/typescript-utils" }
60 ],
73 "files": [ 61 "files": [
74 "src/polyfills.ts" 62 "src/polyfills.ts"
75 ], 63 ],
@@ -78,10 +66,6 @@
78 "src/**/*.d.ts", 66 "src/**/*.d.ts",
79 "src/shims/*.ts" 67 "src/shims/*.ts"
80 ], 68 ],
81 "exclude": [
82 "../node_modules",
83 "../server"
84 ],
85 "angularCompilerOptions": { 69 "angularCompilerOptions": {
86 "strictInjectionParameters": true, 70 "strictInjectionParameters": true,
87 "fullTemplateTypeCheck": true, 71 "fullTemplateTypeCheck": true,
diff --git a/client/tsconfig.types.json b/client/tsconfig.types.json
index 99d96d413..1481bc9b9 100644
--- a/client/tsconfig.types.json
+++ b/client/tsconfig.types.json
@@ -4,15 +4,12 @@
4 "stripInternal": true, 4 "stripInternal": true,
5 "removeComments": false, 5 "removeComments": false,
6 "declaration": true, 6 "declaration": true,
7 "outDir": "../packages/types/dist/client/", 7 "outDir": "../packages/types-generator/dist/client/",
8 "emitDeclarationOnly": true, 8 "emitDeclarationOnly": true,
9 "composite": true, 9 "composite": true,
10 "rootDir": "src/", 10 "rootDir": "src/",
11 "tsBuildInfoFile": "../packages/types/dist/tsconfig.client.tsbuildinfo" 11 "tsBuildInfoFile": "../packages/types-generator/dist/tsconfig.client.tsbuildinfo"
12 }, 12 },
13 "references": [
14 { "path": "../shared/tsconfig.types.json" }
15 ],
16 "files": [ "src/types/index.ts" ], 13 "files": [ "src/types/index.ts" ],
17 "include": [ 14 "include": [
18 "src/types/**/*" 15 "src/types/**/*"
diff --git a/client/webpack/webpack.video-embed.js b/client/webpack/webpack.video-embed.js
index 47d440c25..30a8ec27c 100644
--- a/client/webpack/webpack.video-embed.js
+++ b/client/webpack/webpack.video-embed.js
@@ -29,9 +29,7 @@ module.exports = function () {
29 alias: { 29 alias: {
30 'video.js$': path.resolve('node_modules/video.js/core.js'), 30 'video.js$': path.resolve('node_modules/video.js/core.js'),
31 'hls.js$': path.resolve('node_modules/hls.js/dist/hls.light.js'), 31 'hls.js$': path.resolve('node_modules/hls.js/dist/hls.light.js'),
32 '@root-helpers': path.resolve('src/root-helpers'), 32 '@root-helpers': path.resolve('src/root-helpers')
33 '@shared/models': path.resolve('../shared/models'),
34 '@shared/core-utils': path.resolve('../shared/core-utils')
35 }, 33 },
36 34
37 fallback: { 35 fallback: {
diff --git a/client/yarn.lock b/client/yarn.lock
index 5c9f4bf42..cc0bd23a6 100644
--- a/client/yarn.lock
+++ b/client/yarn.lock
@@ -1353,6 +1353,13 @@
1353 "@babel/helper-validator-identifier" "^7.19.1" 1353 "@babel/helper-validator-identifier" "^7.19.1"
1354 to-fast-properties "^2.0.0" 1354 to-fast-properties "^2.0.0"
1355 1355
1356"@cspotcode/source-map-support@^0.8.0":
1357 version "0.8.1"
1358 resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
1359 integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
1360 dependencies:
1361 "@jridgewell/trace-mapping" "0.3.9"
1362
1356"@csstools/css-parser-algorithms@^2.1.1": 1363"@csstools/css-parser-algorithms@^2.1.1":
1357 version "2.1.1" 1364 version "2.1.1"
1358 resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz#7b62e6412a468a2d1096ed267edd1e4a7fd4a119" 1365 resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz#7b62e6412a468a2d1096ed267edd1e4a7fd4a119"
@@ -1818,6 +1825,11 @@
1818 resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 1825 resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
1819 integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 1826 integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
1820 1827
1828"@jridgewell/resolve-uri@^3.0.3":
1829 version "3.1.1"
1830 resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
1831 integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
1832
1821"@jridgewell/set-array@^1.0.1": 1833"@jridgewell/set-array@^1.0.1":
1822 version "1.1.2" 1834 version "1.1.2"
1823 resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 1835 resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
@@ -1841,6 +1853,14 @@
1841 resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 1853 resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
1842 integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 1854 integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
1843 1855
1856"@jridgewell/trace-mapping@0.3.9":
1857 version "0.3.9"
1858 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
1859 integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
1860 dependencies:
1861 "@jridgewell/resolve-uri" "^3.0.3"
1862 "@jridgewell/sourcemap-codec" "^1.4.10"
1863
1844"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": 1864"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
1845 version "0.3.18" 1865 version "0.3.18"
1846 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" 1866 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
@@ -2204,6 +2224,26 @@
2204 resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" 2224 resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
2205 integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== 2225 integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
2206 2226
2227"@tsconfig/node10@^1.0.7":
2228 version "1.0.9"
2229 resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
2230 integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
2231
2232"@tsconfig/node12@^1.0.7":
2233 version "1.0.11"
2234 resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
2235 integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
2236
2237"@tsconfig/node14@^1.0.0":
2238 version "1.0.3"
2239 resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
2240 integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
2241
2242"@tsconfig/node16@^1.0.2":
2243 version "1.0.4"
2244 resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
2245 integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
2246
2207"@tufjs/canonical-json@1.0.0": 2247"@tufjs/canonical-json@1.0.0":
2208 version "1.0.0" 2248 version "1.0.0"
2209 resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" 2249 resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31"
@@ -3140,7 +3180,7 @@ acorn-jsx@^5.3.2:
3140 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 3180 resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
3141 integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 3181 integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
3142 3182
3143acorn-walk@^8.0.0: 3183acorn-walk@^8.0.0, acorn-walk@^8.1.1:
3144 version "8.2.0" 3184 version "8.2.0"
3145 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 3185 resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
3146 integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 3186 integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
@@ -3150,6 +3190,11 @@ acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0:
3150 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 3190 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
3151 integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 3191 integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
3152 3192
3193acorn@^8.4.1:
3194 version "8.10.0"
3195 resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
3196 integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
3197
3153addr-to-ip-port@^1.0.1: 3198addr-to-ip-port@^1.0.1:
3154 version "1.5.4" 3199 version "1.5.4"
3155 resolved "https://registry.yarnpkg.com/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz#9542b1c6219fdb8c9ce6cc72c14ee880ab7ddd88" 3200 resolved "https://registry.yarnpkg.com/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz#9542b1c6219fdb8c9ce6cc72c14ee880ab7ddd88"
@@ -3392,6 +3437,11 @@ are-we-there-yet@^3.0.0:
3392 delegates "^1.0.0" 3437 delegates "^1.0.0"
3393 readable-stream "^3.6.0" 3438 readable-stream "^3.6.0"
3394 3439
3440arg@^4.1.0:
3441 version "4.1.3"
3442 resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
3443 integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
3444
3395argparse@^1.0.7: 3445argparse@^1.0.7:
3396 version "1.0.10" 3446 version "1.0.10"
3397 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 3447 resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -3512,7 +3562,7 @@ available-typed-arrays@^1.0.5:
3512 resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" 3562 resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
3513 integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== 3563 integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
3514 3564
3515axios@^1.0.0, axios@^1.2.1: 3565axios@^1.0.0, axios@^1.4.0:
3516 version "1.4.0" 3566 version "1.4.0"
3517 resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" 3567 resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
3518 integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== 3568 integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
@@ -4088,14 +4138,14 @@ chrome-trace-event@^1.0.2:
4088 resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" 4138 resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
4089 integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== 4139 integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
4090 4140
4091chromedriver@^113.0.0: 4141chromedriver@^115.0.1:
4092 version "113.0.0" 4142 version "115.0.1"
4093 resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-113.0.0.tgz#d4855f156ee51cea4282e04aadd29fa154e44dbb" 4143 resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-115.0.1.tgz#76cbf35f16e0c1f5e29ab821fb3b8b06d22c3e40"
4094 integrity sha512-UnQlt2kPicYXVNHPzy9HfcWvEbKJjjKAEaatdcnP/lCIRwuSoZFVLH0HVDAGdbraXp3dNVhfE2Qx7gw8TnHnPw== 4144 integrity sha512-faE6WvIhXfhnoZ3nAxUXYzeDCKy612oPwpkUp0mVkA7fZPg2JHSUiYOQhUYgzHQgGvDWD5Fy2+M2xV55GKHBVQ==
4095 dependencies: 4145 dependencies:
4096 "@testim/chrome-version" "^1.1.3" 4146 "@testim/chrome-version" "^1.1.3"
4097 axios "^1.2.1" 4147 axios "^1.4.0"
4098 compare-versions "^5.0.1" 4148 compare-versions "^6.0.0"
4099 extract-zip "^2.0.1" 4149 extract-zip "^2.0.1"
4100 https-proxy-agent "^5.0.1" 4150 https-proxy-agent "^5.0.1"
4101 proxy-from-env "^1.1.0" 4151 proxy-from-env "^1.1.0"
@@ -4307,10 +4357,10 @@ compact2string@^1.4.1:
4307 dependencies: 4357 dependencies:
4308 ipaddr.js ">= 0.1.5" 4358 ipaddr.js ">= 0.1.5"
4309 4359
4310compare-versions@^5.0.1: 4360compare-versions@^6.0.0:
4311 version "5.0.3" 4361 version "6.1.0"
4312 resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-5.0.3.tgz#a9b34fea217472650ef4a2651d905f42c28ebfd7" 4362 resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a"
4313 integrity sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A== 4363 integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==
4314 4364
4315compress-commons@^4.1.0: 4365compress-commons@^4.1.0:
4316 version "4.1.1" 4366 version "4.1.1"
@@ -4453,6 +4503,11 @@ crc32-stream@^4.0.2:
4453 crc-32 "^1.2.0" 4503 crc-32 "^1.2.0"
4454 readable-stream "^3.4.0" 4504 readable-stream "^3.4.0"
4455 4505
4506create-require@^1.1.0:
4507 version "1.1.1"
4508 resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
4509 integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
4510
4456critters@0.0.16: 4511critters@0.0.16:
4457 version "0.0.16" 4512 version "0.0.16"
4458 resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93" 4513 resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93"
@@ -4799,6 +4854,11 @@ diff@5.0.0:
4799 resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 4854 resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
4800 integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 4855 integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
4801 4856
4857diff@^4.0.1:
4858 version "4.0.2"
4859 resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
4860 integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
4861
4802diff@^5.0.0: 4862diff@^5.0.0:
4803 version "5.1.0" 4863 version "5.1.0"
4804 resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" 4864 resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40"
@@ -7694,6 +7754,11 @@ make-dir@^3.0.2:
7694 dependencies: 7754 dependencies:
7695 semver "^6.0.0" 7755 semver "^6.0.0"
7696 7756
7757make-error@^1.1.1:
7758 version "1.3.6"
7759 resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
7760 integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
7761
7697make-fetch-happen@^10.0.3: 7762make-fetch-happen@^10.0.3:
7698 version "10.2.1" 7763 version "10.2.1"
7699 resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" 7764 resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164"
@@ -10802,6 +10867,25 @@ ts-loader@^9.3.0:
10802 micromatch "^4.0.0" 10867 micromatch "^4.0.0"
10803 semver "^7.3.4" 10868 semver "^7.3.4"
10804 10869
10870ts-node@^10.9.1:
10871 version "10.9.1"
10872 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
10873 integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
10874 dependencies:
10875 "@cspotcode/source-map-support" "^0.8.0"
10876 "@tsconfig/node10" "^1.0.7"
10877 "@tsconfig/node12" "^1.0.7"
10878 "@tsconfig/node14" "^1.0.0"
10879 "@tsconfig/node16" "^1.0.2"
10880 acorn "^8.4.1"
10881 acorn-walk "^8.1.1"
10882 arg "^4.1.0"
10883 create-require "^1.1.0"
10884 diff "^4.0.1"
10885 make-error "^1.1.1"
10886 v8-compile-cache-lib "^3.0.1"
10887 yn "3.1.1"
10888
10805tsconfig-paths@^3.14.1: 10889tsconfig-paths@^3.14.1:
10806 version "3.14.2" 10890 version "3.14.2"
10807 resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" 10891 resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088"
@@ -11096,6 +11180,11 @@ uuid@^9.0.0:
11096 resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" 11180 resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
11097 integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== 11181 integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
11098 11182
11183v8-compile-cache-lib@^3.0.1:
11184 version "3.0.1"
11185 resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
11186 integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
11187
11099v8-compile-cache@2.3.0, v8-compile-cache@^2.3.0: 11188v8-compile-cache@2.3.0, v8-compile-cache@^2.3.0:
11100 version "2.3.0" 11189 version "2.3.0"
11101 resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 11190 resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
@@ -11792,6 +11881,11 @@ yauzl@^2.10.0:
11792 buffer-crc32 "~0.2.3" 11881 buffer-crc32 "~0.2.3"
11793 fd-slicer "~1.1.0" 11882 fd-slicer "~1.1.0"
11794 11883
11884yn@3.1.1:
11885 version "3.1.1"
11886 resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
11887 integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
11888
11795yocto-queue@^0.1.0: 11889yocto-queue@^0.1.0:
11796 version "0.1.0" 11890 version "0.1.0"
11797 resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 11891 resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"