a#K3WAy%0H>%86mDl0Ht@OK*?=Yyp7Z$-B_%E!Y zjkSLi#sPY^y>G3Ko1lFE0ydZ0{TSauj|S>*gUK)+o`I)mW9>JM_SF&nK`P8vNL1(yCvi zjj=H1JnWfM^ri-4&^Tz@%#Plj8LlL(CHK=fUF2imhQ%UBUnEjkCem>f`7V)0uU^vT Ee-Z - - - - - - - <%= htmlWebpackPlugin.options.title %> - - - - - - - diff --git a/ErsatzTV/client-app/src/App.vue b/ErsatzTV/client-app/src/App.vue deleted file mode 100644 index 734b16e15..000000000 --- a/ErsatzTV/client-app/src/App.vue +++ /dev/null @@ -1,36 +0,0 @@ - -- - - - - diff --git a/ErsatzTV/client-app/src/assets/css/global.scss b/ErsatzTV/client-app/src/assets/css/global.scss deleted file mode 100644 index b5af97c2a..000000000 --- a/ErsatzTV/client-app/src/assets/css/global.scss +++ /dev/null @@ -1,12 +0,0 @@ -.swal2-container.swal2-center > .swal2-popup { - background-color: #1E1E1E !important; - border-color: green; - border-width: thin; - border-style: solid; - width: fit-content; -} - -.swal2-html-container, .swal2-title { - color: white !important; - font-family:Cambria; -} diff --git a/ErsatzTV/client-app/src/assets/images/ersatztv-logo.svg b/ErsatzTV/client-app/src/assets/images/ersatztv-logo.svg deleted file mode 100644 index 3cc6156d0..000000000 --- a/ErsatzTV/client-app/src/assets/images/ersatztv-logo.svg +++ /dev/null @@ -1,88 +0,0 @@ - - diff --git a/ErsatzTV/client-app/src/assets/images/ersatztv.svg b/ErsatzTV/client-app/src/assets/images/ersatztv.svg deleted file mode 100644 index e37b70b14..000000000 --- a/ErsatzTV/client-app/src/assets/images/ersatztv.svg +++ /dev/null @@ -1,77 +0,0 @@ - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarLanguageSelect.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarLanguageSelect.vue deleted file mode 100644 index 3215bcdf2..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarLanguageSelect.vue +++ /dev/null @@ -1,44 +0,0 @@ - -- - - - -- - -- - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarLogo.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarLogo.vue deleted file mode 100644 index f4f279c49..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarLogo.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarMenu.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarMenu.vue deleted file mode 100644 index 725fd8186..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarMenu.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItem.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItem.vue deleted file mode 100644 index fb5ee1cdd..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItem.vue +++ /dev/null @@ -1,37 +0,0 @@ - -- - - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItemExpandable.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItemExpandable.vue deleted file mode 100644 index f45e3a0ee..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarMenuItemExpandable.vue +++ /dev/null @@ -1,73 +0,0 @@ - -- -- - -- - -- - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/SideBarVersion.vue b/ErsatzTV/client-app/src/components/Navigation/SideBarVersion.vue deleted file mode 100644 index 6585512c5..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/SideBarVersion.vue +++ /dev/null @@ -1,28 +0,0 @@ - - -- - - -- - -- -- - -- - ErsatzTV {{ $t('sidebar.version') }}
- -{{ currentServerVersion }}
- - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/ToolBar.vue b/ErsatzTV/client-app/src/components/Navigation/ToolBar.vue deleted file mode 100644 index 2279ee0c8..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/ToolBar.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/ToolBarLinks.vue b/ErsatzTV/client-app/src/components/Navigation/ToolBarLinks.vue deleted file mode 100644 index 317100e86..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/ToolBarLinks.vue +++ /dev/null @@ -1,96 +0,0 @@ - - -- - - -- - - {{ $t('tool-bar.click-to-copy') }} -mdi-playlist-play M3U -- - - -- - - {{ $t('tool-bar.click-to-copy') }} -mdi-xml XML -- - -mdi-file-document -- - -mdi-discord -- - - - - - - diff --git a/ErsatzTV/client-app/src/components/Navigation/ToolBarSearch.vue b/ErsatzTV/client-app/src/components/Navigation/ToolBarSearch.vue deleted file mode 100644 index afd93f986..000000000 --- a/ErsatzTV/client-app/src/components/Navigation/ToolBarSearch.vue +++ /dev/null @@ -1,18 +0,0 @@ - -mdi-github -- - - - - diff --git a/ErsatzTV/client-app/src/components/PopUps/SnackBar.vue b/ErsatzTV/client-app/src/components/PopUps/SnackBar.vue deleted file mode 100644 index e0674fc4b..000000000 --- a/ErsatzTV/client-app/src/components/PopUps/SnackBar.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - {{ currentMessage }} - - - - diff --git a/ErsatzTV/client-app/src/locales/en.json b/ErsatzTV/client-app/src/locales/en.json deleted file mode 100644 index 7d6bc2d5a..000000000 --- a/ErsatzTV/client-app/src/locales/en.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "$vuetify": { - "badge": "Badge", - "close": "Close", - "dataIterator": { - "noResultsText": "No matching records found", - "loadingText": "Loading items..." - }, - "dataTable": { - "itemsPerPageText": "Rows per page:", - "ariaLabel": { - "sortDescending": "Sorted descending.", - "sortAscending": "Sorted ascending.", - "sortNone": "Not sorted.", - "activateNone": "Activate to remove sorting.", - "activateDescending": "Activate to sort descending.", - "activateAscending": "Activate to sort ascending." - }, - "sortBy": "Sort by" - }, - "dataFooter": { - "itemsPerPageText": "Items per page:", - "itemsPerPageAll": "All", - "nextPage": "Next page", - "prevPage": "Previous page", - "firstPage": "First page", - "lastPage": "Last page", - "pageText": "{0}-{1} of {2}" - }, - "datePicker": { - "itemsSelected": "{0} selected", - "nextMonthAriaLabel": "Next month", - "nextYearAriaLabel": "Next year", - "prevMonthAriaLabel": "Previous month", - "prevYearAriaLabel": "Previous year" - }, - "noDataText": "No data available", - "carousel": { - "prev": "Previous visual", - "next": "Next visual", - "ariaLabel": { - "delimiter": "Carousel slide {0} of {1}" - } - }, - "calendar": { - "moreEvents": "{0} more" - }, - "fileInput": { - "counter": "{0} files", - "counterSize": "{0} files ({1} in total)" - }, - "timePicker": { - "am": "AM", - "pm": "PM" - }, - "pagination": { - "ariaLabel": { - "wrapper": "Pagination Navigation", - "next": "Next page", - "previous": "Previous page", - "page": "Goto Page {0}", - "currentPage": "Current Page, Page {0}" - } - }, - "rating": { - "ariaLabel": { - "icon": "Rating {0} of {1}" - } - } - }, - "languages-code": { - "en": "English", - "pt-br": "Portuguese (Brazil)" - }, - "tool-bar": { - "search": "Search...", - "click-to-copy": "Click to copy to clipboard!", - "copy-success": "Successfully copied text to clipboard!", - "copy-failure": "Failed to copy text to clipboard! Error: {message}" - }, - "sidebar": { - "languages": "Languages", - "version": "Version" - }, - "home": { - "title": "Home" - }, - "ffmpeg-profiles": { - "title": "FFmpeg Profiles", - "add-profile": "Add FFmpeg Profile", - "actions": "Actions", - "delete-dialog-title": "Are you sure?", - "delete-dialog-text": "Delete {profileName} FFmpeg Profile?", - "no": "No", - "yes": "Yes", - "profile-deleted": "FFmpeg Profile deleted!", - "table": { - "name": "Name", - "resolution": "Resolution", - "video": "Video", - "audio": "Audio" - } - }, - "edit-ffmpeg-profile": { - "General": "General", - "Video": "Video", - "Audio": "Audio", - "Name": "Name", - "thread-count": "Thread Count", - "preferred-resolution": "Preferred Resolution", - "format": "Format", - "bitrate": "Bitrate", - "buffer-size": "Buffer Size", - "hardware-acceleration": "Hardware Acceleration", - "vaapi-driver": "VAAPI Driver", - "vaapi-device": "VAAPI Device", - "normalize-framerate": "Normalize Framerate", - "auto-deinterlace-video": "Auto Deinterlace Video", - "channels": "Channels", - "sample-rate": "Sample Rate", - "normalize-loudness": "Normalize Loudness", - "save-profile": "Save Profile", - "cancel": "Cancel", - "help": "Help", - "add-profile": "Add FFmpeg Profile", - "edit-profile": "Edit FFmpeg Profile", - "profile-saved": "FFmpeg Profile Saved!" - }, - "watermarks": { - "title": "Watermarks" - }, - "media-sources": { - "title": "Media Sources", - "local": { - "title": "Local" - }, - "emby": { - "title": "Emby" - }, - "jellyfin": { - "title": "Jellyfin" - }, - "plex": { - "title": "Plex" - } - }, - "lists": { - "title": "Lists", - "collections": { - "title": "Collections" - }, - "trakt-lists": { - "title": "Trakt Lists" - }, - "filler-presets": { - "title": "Filler Presets" - } - }, - "schedules": { - "title": "Schedules" - }, - "playouts": { - "title": "Playouts" - }, - "settings": { - "title": "Settings" - }, - "logs": { - "title": "Logs" - }, - "media": { - "title": "Media", - "libraries": { - "title": "Libraries" - }, - "trash": { - "title": "Trash" - }, - "tv-shows": { - "title": "TV Shows" - }, - "movies": { - "title": "Movies" - }, - "music-videos": { - "title": "Music Videos" - }, - "other-videos": { - "title": "Other Videos" - }, - "songs": { - "title": "Songs" - } - }, - "channels": { - "title": "Channels", - "table": { - "number": "Number", - "logo": "Logo", - "name": "Name", - "language": "Language", - "mode": "Mode", - "ffmpeg-profile": "FFmpeg Profile" - } - } -} diff --git a/ErsatzTV/client-app/src/locales/pt-br.json b/ErsatzTV/client-app/src/locales/pt-br.json deleted file mode 100644 index 251bc1c8e..000000000 --- a/ErsatzTV/client-app/src/locales/pt-br.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "$vuetify": { - "badge": "Distintivo", - "close": "Fechar", - "Actions": "Ações", - "dataIterator": { - "noResultsText": "Nenhum dado encontrado", - "loadingText": "Carregando itens..." - }, - "dataTable": { - "itemsPerPageText": "Linhas por página:", - "ariaLabel": { - "sortDescending": "Ordenado decrescente.", - "sortAscending": "Ordenado crescente.", - "sortNone": "Não ordenado.", - "activateNone": "Ative para remover a ordenação.", - "activateDescending": "Ative para ordenar decrescente.", - "activateAscending": "Ative para ordenar crescente." - }, - "sortBy": "Ordenar por" - }, - "dataFooter": { - "itemsPerPageText": "Itens por página:", - "itemsPerPageAll": "Todos", - "nextPage": "Próxima página", - "prevPage": "Página anterior", - "firstPage": "Primeira página", - "lastPage": "Última página", - "pageText": "{0}-{1} de {2}" - }, - "datePicker": { - "itemsSelected": "{0} selecionado(s)", - "nextMonthAriaLabel": "Próximo mês", - "nextYearAriaLabel": "Próximo ano", - "prevMonthAriaLabel": "Mês anterior", - "prevYearAriaLabel": "Ano anterior" - }, - "noDataText": "Não há dados disponíveis", - "carousel": { - "prev": "Visão anterior", - "next": "Próxima visão", - "ariaLabel": { - "delimiter": "Slide {0} de {1} do carrossel" - } - }, - "calendar": { - "moreEvents": "Mais {0}" - }, - "fileInput": { - "counter": "{0} arquivo(s)", - "counterSize": "{0} arquivo(s) ({1} no total)" - }, - "timePicker": { - "am": "AM", - "pm": "PM" - }, - "pagination": { - "ariaLabel": { - "wrapper": "Navegação de paginação", - "next": "Próxima página", - "previous": "Página anterior", - "page": "Ir à página {0}", - "currentPage": "Página atual, página {0}" - } - }, - "rating": { - "ariaLabel": { - "icon": "Rating {0} de {1}" - } - } - }, - "languages-code": { - "en": "Inglês", - "pt-br": "Português (Brasil)" - }, - "tool-bar": { - "search": "Busca...", - "click-to-copy": "Clique para copiar para a área de transferência!", - "copy-success": "Texto copiado com sucesso para a área de transferência!", - "copy-failure": "Falha ao copiar o texto para a área de transferência! Erro: {message}" - }, - "sidebar": { - "languages": "Línguas", - "version": "Versão" - }, - "home": { - "title": "Início" - }, - "ffmpeg-profiles": { - "title": "Perfis FFmpeg", - "add-profile": "Adicionar perfil FFmpeg", - "actions": "Ações", - "delete-dialog-title": "Tem certeza?", - "delete-dialog-text": "Excluir perfil {profileName} do FFmpeg?", - "no": "Não", - "yes": "Sim", - "profile-deleted": "Perfil do FFmpeg excluído!", - "table": { - "name": "Nome", - "resolution": "Resolução", - "video": "Vídeo", - "audio": "Áudio" - } - }, - "edit-ffmpeg-profile": { - "General": "Em geral", - "Video": "Vídeo", - "Audio": "Áudio", - "Name": "Nome", - "thread-count": "Contagem de fios", - "preferred-resolution": "Resolução preferencial", - "format": "Formato", - "bitrate": "Taxa de bits", - "buffer-size": "Tamanho do buffer", - "hardware-acceleration": "Aceleraçao do hardware", - "vaapi-driver": "Driver VAAPI", - "vaapi-device": "Dispositivo VAAPI", - "normalize-framerate": "Normalizar taxa de quadros", - "auto-deinterlace-video": "Vídeo de desentrelaçamento automático", - "channels": "Canais", - "sample-rate": "Taxa de amostragem", - "normalize-loudness": "Normalizar volume", - "save-profile": "Salvar perfil", - "cancel": "Cancelar", - "help": "Ajuda", - "add-profile": "Adicionar perfil FFmpeg", - "edit-profile": "Editar perfil do FFmpeg", - "profile-saved": "Perfil do FFmpeg salvo!" - }, - "watermarks": { - "title": "Marcas d'água" - }, - "media-sources": { - "title": "Fontes de mídia", - "local": { - "title": "Local" - }, - "emby": { - "title": "Emby" - }, - "jellyfin": { - "title": "Jellyfin" - }, - "plex": { - "title": "Plex" - } - }, - "lists": { - "title": "Listas", - "collections": { - "title": "Coleções" - }, - "trakt-lists": { - "title": "Listas Trakt" - }, - "filler-presets": { - "title": "Predefinições de preenchimento" - } - }, - "schedules": { - "title": "Horários" - }, - "playouts": { - "title": "Playouts" - }, - "settings": { - "title": "Definições" - }, - "logs": { - "title": "Logs" - }, - "media": { - "title": "Mídias", - "libraries": { - "title": "Bibliotecas" - }, - "trash": { - "title": "Lixo" - }, - "tv-shows": { - "title": "Séries" - }, - "movies": { - "title": "Filmes" - }, - "music-videos": { - "title": "Vídeos de música" - }, - "other-videos": { - "title": "Other Videos" - }, - "songs": { - "title": "Songs" - } - }, - "channels": { - "title": "Canais", - "table": { - "number": "Numero", - "logo": "Logo", - "name": "Nome", - "language": "Idioma", - "mode": "Modo", - "ffmpeg-profile": "Perfil FFmpeg" - } - } -} \ No newline at end of file diff --git a/ErsatzTV/client-app/src/main.ts b/ErsatzTV/client-app/src/main.ts deleted file mode 100644 index 731d4d7d6..000000000 --- a/ErsatzTV/client-app/src/main.ts +++ /dev/null @@ -1,37 +0,0 @@ -import Vue from 'vue'; -import App from './App.vue'; -import vuetify from './plugins/vuetify'; -import router from './router'; -import { createPinia, PiniaVuePlugin } from 'pinia'; -import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'; -import autoPageTitleMixin from './mixins/autoPageTitle'; -import 'roboto-fontface/css/roboto/roboto-fontface.css'; -import '@mdi/font/css/materialdesignicons.css'; -import i18n from './plugins/i18n'; -import VueSweetalert2 from 'vue-sweetalert2'; -import 'sweetalert2/dist/sweetalert2.min.css'; -import './assets/css/global.scss'; - -Vue.config.productionTip = false; - -Vue.use(PiniaVuePlugin); -const pinia = createPinia(); -pinia.use(piniaPluginPersistedstate); -// Mixin to automate the page title when navigating... Will default to "ErsatzTV if no title value exported from page. -Vue.mixin(autoPageTitleMixin); - -const options = { - confirmButtonColor: '#1E1E1E', - cancelButtonColor: '#1E1E1E', - background: '#1E1E1E', - iconColor: '#4CAF50' -}; -Vue.use(VueSweetalert2, options); - -new Vue({ - vuetify, - router, - pinia, - i18n, - render: (h) => h(App) -}).$mount('#app'); diff --git a/ErsatzTV/client-app/src/mixins/autoPageTitle.js b/ErsatzTV/client-app/src/mixins/autoPageTitle.js deleted file mode 100644 index a5459db5d..000000000 --- a/ErsatzTV/client-app/src/mixins/autoPageTitle.js +++ /dev/null @@ -1,18 +0,0 @@ -function getTitle(vm) { - const { title } = vm.$options; - if (title) { - return typeof title === 'function' ? title.call(vm) : title; - } - if (vm._data.title) { - return vm._data.title; - } -} - -export default { - created() { - const title = getTitle(this); - if (title) { - document.title = `ErsatzTV | ${title}`; - } - } -}; diff --git a/ErsatzTV/client-app/src/models/Channel.ts b/ErsatzTV/client-app/src/models/Channel.ts deleted file mode 100644 index 63fb80ba0..000000000 --- a/ErsatzTV/client-app/src/models/Channel.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Channel { - id: number; - number: string; - name: string; - streamingMode: string; -} diff --git a/ErsatzTV/client-app/src/models/FFmpegFullProfile.ts b/ErsatzTV/client-app/src/models/FFmpegFullProfile.ts deleted file mode 100644 index d9552acc6..000000000 --- a/ErsatzTV/client-app/src/models/FFmpegFullProfile.ts +++ /dev/null @@ -1,20 +0,0 @@ -export interface FFmpegFullProfile { - Id: number; - name: string; - threadCount: number; - hardwareAcceleration: number; - vaapiDriver: number; - vaapiDevice: string; - resolutionId: number; - videoFormat: number; - videoBitrate: number; - videoBufferSize: number; - audioFormat: number; - audioBitrate: number; - audioBufferSize: number; - normalizeLoudness: boolean; - audioChannels: number; - audioSampleRate: number; - normalizeFramerate: boolean; - deinterlaceVideo: boolean; -} diff --git a/ErsatzTV/client-app/src/models/FFmpegProfile.ts b/ErsatzTV/client-app/src/models/FFmpegProfile.ts deleted file mode 100644 index 971468379..000000000 --- a/ErsatzTV/client-app/src/models/FFmpegProfile.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface FFmpegProfile { - id: number; - name: string; - resolution: string; - video: string; - audio: string; -} diff --git a/ErsatzTV/client-app/src/plugins/i18n.ts b/ErsatzTV/client-app/src/plugins/i18n.ts deleted file mode 100644 index 0c6246b4a..000000000 --- a/ErsatzTV/client-app/src/plugins/i18n.ts +++ /dev/null @@ -1,27 +0,0 @@ -import Vue from 'vue'; -import VueI18n, { LocaleMessages } from 'vue-i18n'; - -Vue.use(VueI18n); - -function loadLocaleMessages(): LocaleMessages { - const locales = require.context( - '../locales', - true, - /[A-Za-z0-9-_,\s]+\.json$/i - ); - const messages: LocaleMessages = {}; - locales.keys().forEach((key) => { - const matched = key.match(/([A-Za-z0-9-_]+)\./i); - if (matched && matched.length > 1) { - const locale = matched[1]; - messages[locale] = locales(key); - } - }); - return messages; -} - -export default new VueI18n({ - locale: process.env.VUE_APP_I18N_LOCALE || 'en', - fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en', - messages: loadLocaleMessages() -}); diff --git a/ErsatzTV/client-app/src/plugins/vuetify.ts b/ErsatzTV/client-app/src/plugins/vuetify.ts deleted file mode 100644 index 2d964df90..000000000 --- a/ErsatzTV/client-app/src/plugins/vuetify.ts +++ /dev/null @@ -1,33 +0,0 @@ -import Vue from 'vue'; -import Vuetify from 'vuetify'; -import colors from 'vuetify/lib/util/colors'; -import VueI18n from './i18n'; - -Vue.use(Vuetify); - -export default new Vuetify({ - icons: { - iconfont: 'mdi' // default - only for display purposes - }, - theme: { - themes: { - dark: { - primary: '#c0c000', - secondary: '#00c0c0', - accent: colors.yellow.accent2, - error: colors.red, - warning: colors.orange, - info: colors.lightBlue, - success: colors.green, - background: '#121212' - } - }, - options: { - customProperties: true - }, - dark: true - }, - lang: { - t: (key, ...params) => VueI18n.t(key, params).toString() - } -}); diff --git a/ErsatzTV/client-app/src/router/index.js b/ErsatzTV/client-app/src/router/index.js deleted file mode 100644 index 0428e2dd1..000000000 --- a/ErsatzTV/client-app/src/router/index.js +++ /dev/null @@ -1,252 +0,0 @@ -import Vue from 'vue'; -import VueRouter from 'vue-router'; -import HomePage from '../views/HomePage.vue'; -import ChannelsPage from '../views/ChannelsPage.vue'; -import FFmpegProfilesPage from '../views/FFmpegProfilesPage.vue'; -import AddEditFFmpegProfilePage from '../views/AddEditFFmpegProfilePage.vue'; - -Vue.use(VueRouter); - -const routes = [ - { - path: '/', - name: 'home.title', - component: HomePage, - meta: { - icon: 'mdi-home', - disabled: false - } - }, - { - path: '/channels', - name: 'channels.title', - component: ChannelsPage, - meta: { - icon: 'mdi-broadcast', - disabled: false - } - }, - { - path: '/ffmpeg-profiles', - name: 'ffmpeg-profiles.title', - component: FFmpegProfilesPage, - meta: { - icon: 'mdi-video-input-component', - disabled: false - }, - showchildren: false - }, - { - path: '/watermarks', - name: 'watermarks.title', - meta: { - icon: 'mdi-watermark', - disabled: true - } - }, - { - path: '/sources', - name: 'media-sources.title', - meta: { - icon: 'mdi-server-network', - disabled: false - }, - showchildren: true, - children: [ - { - path: '/sources/local', - name: 'media-sources.local.title', - meta: { - icon: 'mdi-folder', - disabled: true - } - }, - { - path: '/sources/emby', - name: 'media-sources.emby.title', - meta: { - icon: 'mdi-emby', - disabled: true - } - }, - { - path: '/sources/jellyfin', - name: 'media-sources.jellyfin.title', - meta: { - icon: 'mdi-jellyfish', - disabled: true - } - }, - { - path: '/sources/plex', - name: 'media-sources.plex.title', - meta: { - icon: 'mdi-plex', - disabled: true - } - } - ] - }, - { - path: '/media', - name: 'media.title', - meta: { - icon: 'mdi-cog', - disabled: false - }, - showchildren: true, - children: [ - { - path: '/media/libraries', - name: 'media.libraries.title', - meta: { - icon: 'mdi-library', - disabled: true - } - }, - { - path: '/media/trash', - name: 'media.trash.title', - meta: { - icon: 'mdi-trash-can', - disabled: true - } - }, - { - path: '/media/tv-shows', - name: 'media.tv-shows.title', - meta: { - icon: 'mdi-television-classic', - disabled: true - } - }, - { - path: '/media/movies', - name: 'media.movies.title', - meta: { - icon: 'mdi-movie', - disabled: true - } - }, - { - path: '/media/music-videos', - name: 'media.music-videos.title', - meta: { - icon: 'mdi-music-circle', - disabled: true - } - }, - { - path: '/media/other-videos', - name: 'media.other-videos.title', - meta: { - icon: 'mdi-video', - disabled: true - } - }, - { - path: '/media/songs', - name: 'media.songs.title', - meta: { - icon: 'mdi-album', - disabled: true - } - } - ] - }, - { - path: '/lists', - name: 'lists.title', - meta: { - icon: 'mdi-format-list-bulleted', - disabled: false - }, - showchildren: true, - children: [ - { - path: '/lists/collections', - name: 'lists.collections.title', - meta: { - icon: 'mdi-collage', - disabled: true - } - }, - { - path: '/lists/trakt-lists', - name: 'lists.trakt-lists.title', - meta: { - icon: 'mdi-hammer', - disabled: true - } - }, - { - path: '/lists/filler-presets', - name: 'lists.filler-presets.title', - meta: { - icon: 'mdi-tune-vertical', - disabled: true - } - } - ] - }, - { - path: '/schedules', - name: 'schedules.title', - meta: { - icon: 'mdi-calendar', - disabled: true - } - }, - { - path: '/playouts', - name: 'playouts.title', - meta: { - icon: 'mdi-clipboard-play-multiple', - disabled: true - } - }, - { - path: '/settings', - name: 'settings.title', - meta: { - icon: 'mdi-cog', - disabled: true - } - }, - { - path: '/Logs', - name: 'logs.title', - meta: { - icon: 'mdi-card-text', - disabled: true - } - }, - //hidden routes - used for non-menu routes - { - path: '/add-ffmpeg-profile', - name: 'add-ffmpeg-profile', - component: AddEditFFmpegProfilePage, - meta: { - disabled: false, - hidden: true - } - }, - { - path: '/edit-ffmpeg-profile', - name: 'edit-ffmpeg', - component: AddEditFFmpegProfilePage, - meta: { - disabled: false, - hidden: true - }, - props: (route) => ({ query: route.query.id }) - } -]; - -const router = new VueRouter({ - mode: 'history', - base: process.env.BASE_URL, - routes -}); - -export default router; diff --git a/ErsatzTV/client-app/src/services/AbstractApiService.ts b/ErsatzTV/client-app/src/services/AbstractApiService.ts deleted file mode 100644 index 68ff3bd30..000000000 --- a/ErsatzTV/client-app/src/services/AbstractApiService.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { AxiosError, AxiosInstance, AxiosResponse } from 'axios'; -import axios from 'axios'; - -export function isAxiosError(value: any): value is AxiosError { - return typeof value?.response === 'object'; -} - -export abstract class AbstractApiService { - protected readonly http: AxiosInstance; - - protected constructor( - protected readonly path?: string, - protected readonly baseURL: string = process.env.VUE_APP_ETV_BASE_URL ?? - '/' - ) { - if (path) { - this.baseURL += path; - } - this.http = axios.create({ - baseURL - // ... further stuff, e.g. `withCredentials: true` - }); - this.http.defaults.headers.common['Accept'] = - 'application/json;charset=UTF-8'; - this.http.defaults.headers.common['Content-Type'] = - 'application/json;charset=UTF-8'; - } - - protected createParams(record: RecordClose -): URLSearchParams { - const params: URLSearchParams = new URLSearchParams(); - for (const key in record) { - if (Object.prototype.hasOwnProperty.call(record, key)) { - const value: any = record[key]; - if (value !== null && value !== undefined) { - params.append(key, value); - } else { - console.debug( - `Param key '${key}' was null or undefined and will be ignored` - ); - } - } - } - return params; - } - - protected handleResponse (response: AxiosResponse ): T { - return response.data; - } - - protected handleError(error: unknown): never { - if (error instanceof Error) { - if (isAxiosError(error)) { - if (error.response) { - console.log(error.response.data); - console.log(error.response.status); - console.log(error.response.headers); - throw error; - } else if (error.request) { - // The request was made but no response was received - // `error.request` is an instance of XMLHttpRequest in the browser - console.log(error.request); - throw new Error(error as any); - } - } else { - // Something happened in setting up the request that triggered an Error - console.log('Error', error.message); - throw new Error(error.message); - } - } - throw new Error(error as any); - } -} diff --git a/ErsatzTV/client-app/src/services/ChannelService.ts b/ErsatzTV/client-app/src/services/ChannelService.ts deleted file mode 100644 index fabbae340..000000000 --- a/ErsatzTV/client-app/src/services/ChannelService.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AbstractApiService } from './AbstractApiService'; -import { Channel } from '@/models/Channel'; - -class ChannelApiService extends AbstractApiService { - public constructor() { - super(); - } - - public getAll(): Promise { - return this.http - .get('/api/channels') - .then(this.handleResponse.bind(this)) - .catch(this.handleError.bind(this)); - } -} - -export const channelApiService: ChannelApiService = new ChannelApiService(); diff --git a/ErsatzTV/client-app/src/services/FFmpegProfileService.ts b/ErsatzTV/client-app/src/services/FFmpegProfileService.ts deleted file mode 100644 index 2bd1001bc..000000000 --- a/ErsatzTV/client-app/src/services/FFmpegProfileService.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { AbstractApiService } from './AbstractApiService'; -import { FFmpegProfile } from '@/models/FFmpegProfile'; -import { FFmpegFullProfile } from '../models/FFmpegFullProfile'; - -class FFmpegProfileApiService extends AbstractApiService { - public constructor() { - super(); - } - - public getAll(): Promise { - return this.http - .get('/api/ffmpeg/profiles') - .then(this.handleResponse.bind(this)) - .catch(this.handleError.bind(this)); - } - - public getOne(id: string): Promise { - return this.http - .get('/api/ffmpeg/profiles/' + id) - .then(this.handleResponse.bind(this)) - .catch(this.handleError.bind(this)); - } - - public newFFmpegProfile( - Name: string, - ThreadCount: number, - HardwareAcceleration: number, - VaapiDriver: number, - VaapiDevice: string, - ResolutionId: number, - VideoFormat: number, - VideoBitrate: number, - VideoBufferSize: number, - AudioFormat: number, - AudioBitrate: number, - AudioBufferSize: number, - NormalizeLoudness: boolean, - AudioChannels: number, - AudioSampleRate: number, - NormalizeFramerate: boolean, - DeinterlaceVideo: boolean - ) { - const data = { - Name: Name, - ThreadCount: ThreadCount, - HardwareAcceleration: HardwareAcceleration, - VaapiDriver: VaapiDriver, - VaapiDevice: VaapiDevice, - ResolutionId: ResolutionId, - VideoFormat: VideoFormat, - VideoBitrate: VideoBitrate, - VideoBufferSize: VideoBufferSize, - AudioFormat: AudioFormat, - AudioBitrate: AudioBitrate, - AudioBufferSize: AudioBufferSize, - NormalizeLoudness: NormalizeLoudness, - AudioChannels: AudioChannels, - AudioSampleRate: AudioSampleRate, - NormalizeFramerate: NormalizeFramerate, - DeinterlaceVideo: DeinterlaceVideo - }; - this.http.post('/api/ffmpeg/profiles/new', data); - } - - public updateFFmpegProfile( - Id: number, - Name: string, - ThreadCount: number, - HardwareAcceleration: number, - VaapiDriver: number, - VaapiDevice: string, - ResolutionId: number, - VideoFormat: number, - VideoBitrate: number, - VideoBufferSize: number, - AudioFormat: number, - AudioBitrate: number, - AudioBufferSize: number, - NormalizeLoudness: boolean, - AudioChannels: number, - AudioSampleRate: number, - NormalizeFramerate: boolean, - DeinterlaceVideo: boolean - ) { - const data = { - Id: Id, - Name: Name, - ThreadCount: ThreadCount, - HardwareAcceleration: HardwareAcceleration, - VaapiDriver: VaapiDriver, - VaapiDevice: VaapiDevice, - ResolutionId: ResolutionId, - VideoFormat: VideoFormat, - VideoBitrate: VideoBitrate, - VideoBufferSize: VideoBufferSize, - AudioFormat: AudioFormat, - AudioBitrate: AudioBitrate, - AudioBufferSize: AudioBufferSize, - NormalizeLoudness: NormalizeLoudness, - AudioChannels: AudioChannels, - AudioSampleRate: AudioSampleRate, - NormalizeFramerate: NormalizeFramerate, - DeinterlaceVideo: DeinterlaceVideo - }; - this.http.put('/api/ffmpeg/profiles/update', data); - } - - public deleteRecord(id: string) { - this.http.delete('/api/ffmpeg/delete/' + id); - } -} - -export const ffmpegProfileApiService: FFmpegProfileApiService = - new FFmpegProfileApiService(); diff --git a/ErsatzTV/client-app/src/services/VersionService.ts b/ErsatzTV/client-app/src/services/VersionService.ts deleted file mode 100644 index 68ce8284a..000000000 --- a/ErsatzTV/client-app/src/services/VersionService.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { AbstractApiService } from './AbstractApiService'; - -class VersionApiService extends AbstractApiService { - public constructor() { - super(); - } - - public version(): Promise { - return this.http - .get('/api/version') - .then(this.handleResponse.bind(this)) - .catch(this.handleError.bind(this)); - } -} - -export const versionApiService: VersionApiService = new VersionApiService(); diff --git a/ErsatzTV/client-app/src/shims-tsx.d.ts b/ErsatzTV/client-app/src/shims-tsx.d.ts deleted file mode 100644 index 259cfd0e0..000000000 --- a/ErsatzTV/client-app/src/shims-tsx.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import Vue, { VNode } from 'vue'; - -declare global { - namespace JSX { - interface Element extends VNode {} - interface ElementClass extends Vue {} - interface IntrinsicElements { - [elem: string]: any; - } - } -} diff --git a/ErsatzTV/client-app/src/shims-vue.d.ts b/ErsatzTV/client-app/src/shims-vue.d.ts deleted file mode 100644 index 1a9f5b5f1..000000000 --- a/ErsatzTV/client-app/src/shims-vue.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.vue' { - import Vue from 'vue'; - export default Vue; -} diff --git a/ErsatzTV/client-app/src/stores/applicationState.js b/ErsatzTV/client-app/src/stores/applicationState.js deleted file mode 100644 index b50bd8e7f..000000000 --- a/ErsatzTV/client-app/src/stores/applicationState.js +++ /dev/null @@ -1,46 +0,0 @@ -import { defineStore } from 'pinia'; -import { versionApiService } from '@/services/VersionService'; - -const originURL = `${window.location.origin}`; - -export const applicationState = defineStore('appState', { - state: () => { - return { - miniMenu: false, - currentVersion: 'unknown', - m3uURL: originURL + '/iptv/channels.m3u', // this will need to be fixed for reverse proxies - xmlURL: originURL + '/iptv/xmltv.xml', // this will need to be fixed for reverse proxies - documentationURL: 'https://ersatztv.org/', - githubURL: 'https://github.com/ErsatzTV/ErsatzTV', - discordURL: 'https://discord.gg/hHaJm3yGy6' - }; - }, - getters: { - isNavigationMini(state) { - return state.miniMenu; - }, - currentServerVersion(state) { - return state.currentVersion; - }, - navBarURLs(state) { - return { - m3uURL: state.m3uURL, - xmlURL: state.xmlURL, - documentationURL: state.documentationURL, - githubURL: state.githubURL, - discordURL: state.discordURL - }; - } - }, - actions: { - toggleMiniNavigation() { - this.miniMenu = !this.miniMenu; - }, - disableMiniNavigation() { - this.miniMenu = false; - }, - async getVersion() { - this.currentVersion = await versionApiService.version(); - } - } -}); diff --git a/ErsatzTV/client-app/src/stores/languageState.js b/ErsatzTV/client-app/src/stores/languageState.js deleted file mode 100644 index ec88e6087..000000000 --- a/ErsatzTV/client-app/src/stores/languageState.js +++ /dev/null @@ -1,28 +0,0 @@ -import { defineStore } from 'pinia'; -import VueI18n from '../plugins/i18n'; - -export const languageState = defineStore('languageState', { - state: () => { - return { - language: 'en' - }; - }, - getters: { - currentLanguageCode: (state) => { - return state.language; - } - }, - actions: { - setLanguage(languageCode) { - this.language = languageCode; - VueI18n.locale = languageCode; - } - }, - persist: { - afterRestore: (context) => { - if (context.store.language) { - VueI18n.locale = context.store.language; - } - } - } -}); diff --git a/ErsatzTV/client-app/src/stores/snackbarState.js b/ErsatzTV/client-app/src/stores/snackbarState.js deleted file mode 100644 index 3907f10e2..000000000 --- a/ErsatzTV/client-app/src/stores/snackbarState.js +++ /dev/null @@ -1,27 +0,0 @@ -import { defineStore } from 'pinia'; - -export const snackbarState = defineStore('snackbarState', { - state: () => { - return { - visible: false, - message: '' - }; - }, - getters: { - isVisible(state) { - return state.visible; - }, - currentMessage(state) { - return state.message; - } - }, - actions: { - showSnackbar(message) { - this.message = message; - this.visible = true; - }, - closeSnackbar() { - this.visible = false; - } - } -}); diff --git a/ErsatzTV/client-app/src/views/AddEditFFmpegProfilePage.vue b/ErsatzTV/client-app/src/views/AddEditFFmpegProfilePage.vue deleted file mode 100644 index 91933acab..000000000 --- a/ErsatzTV/client-app/src/views/AddEditFFmpegProfilePage.vue +++ /dev/null @@ -1,909 +0,0 @@ - - - -- - - diff --git a/ErsatzTV/client-app/src/views/ChannelsPage.vue b/ErsatzTV/client-app/src/views/ChannelsPage.vue deleted file mode 100644 index 9b94b3e3b..000000000 --- a/ErsatzTV/client-app/src/views/ChannelsPage.vue +++ /dev/null @@ -1,62 +0,0 @@ - -- - -- -- -- -- -- -- -- {{ $t('edit-ffmpeg-profile.General') }} -
-- -- - -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- -- -- {{ $t('edit-ffmpeg-profile.Video') }} -
-- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- - -- -- -- {{ $t('edit-ffmpeg-profile.Audio') }} -
-- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- -- - - -- mdi-help-circle-outline - - - Recommended Thread Count: 0 -- - -- {{ $t('edit-ffmpeg-profile.save-profile') }} - -- {{ $t('edit-ffmpeg-profile.cancel') }} - -- {{ $t('edit-ffmpeg-profile.help') }} - --- - - diff --git a/ErsatzTV/client-app/src/views/FFmpegProfilesPage.vue b/ErsatzTV/client-app/src/views/FFmpegProfilesPage.vue deleted file mode 100644 index 2398885c7..000000000 --- a/ErsatzTV/client-app/src/views/FFmpegProfilesPage.vue +++ /dev/null @@ -1,123 +0,0 @@ - -- - -- - -mdi-lead-pencil -- - -mdi-delete -- - - diff --git a/ErsatzTV/client-app/src/views/HomePage.vue b/ErsatzTV/client-app/src/views/HomePage.vue deleted file mode 100644 index c3d5b6b98..000000000 --- a/ErsatzTV/client-app/src/views/HomePage.vue +++ /dev/null @@ -1,9 +0,0 @@ - -{{ - $t('ffmpeg-profiles.add-profile') - }} -- - -- - -mdi-lead-pencil -- - -mdi-delete -- - - diff --git a/ErsatzTV/client-app/tsconfig.json b/ErsatzTV/client-app/tsconfig.json deleted file mode 100644 index 61d10bf58..000000000 --- a/ErsatzTV/client-app/tsconfig.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "module": "esnext", - "strict": true, - "allowJs": true, - "experimentalDecorators": true, - "jsx": "preserve", - "moduleResolution": "node", - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "useDefineForClassFields": true, - "sourceMap": true, - "baseUrl": ".", - "types": [ - "webpack-env", - "vuetify", - "vue-sweetalert2" - ], - "paths": { - "@/*": [ - "src/*" - ] - }, - "lib": [ - "esnext", - "dom", - "dom.iterable", - "scripthost" - ] - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} diff --git a/ErsatzTV/client-app/vue.config.js b/ErsatzTV/client-app/vue.config.js deleted file mode 100644 index 0b9181049..000000000 --- a/ErsatzTV/client-app/vue.config.js +++ /dev/null @@ -1,21 +0,0 @@ -const { defineConfig } = require('@vue/cli-service'); - -module.exports = defineConfig({ - transpileDependencies: ['vuetify'], - runtimeCompiler: true, - - pwa: { - name: 'ErsatzTV' - }, - publicPath: '/v2/', - outputDir: '../wwwroot/v2', - filenameHashing: false, - pluginOptions: { - i18n: { - locale: 'en', - fallbackLocale: 'en', - localeDir: 'locales', - enableInSFC: true - } - } -}); diff --git a/docker/Dockerfile b/docker/Dockerfile index 247448f76..a6ee9f429 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,10 +1,6 @@ # https://hub.docker.com/_/microsoft-dotnet FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build RUN apt-get update && apt-get install -y ca-certificates gnupg -RUN mkdir -p /etc/apt/keyrings -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list -RUN apt-get update && apt-get install -y nodejs npm WORKDIR /source # copy csproj and restore as distinct layers @@ -13,7 +9,6 @@ COPY nuget.config . COPY lib/nuget/* ./lib/nuget/ COPY artwork/* ./artwork/ COPY ErsatzTV/*.csproj ./ErsatzTV/ -COPY ErsatzTV/client-app/package*.json ./ErsatzTV/client-app/ COPY ErsatzTV.Application/*.csproj ./ErsatzTV.Application/ COPY ErsatzTV.Core/*.csproj ./ErsatzTV.Core/ COPY ErsatzTV.FFmpeg/*.csproj ./ErsatzTV.FFmpeg/ @@ -37,7 +32,6 @@ WORKDIR /source/ErsatzTV.Scanner RUN dotnet publish ErsatzTV.Scanner.csproj -c release -o /app -r linux-x64 --self-contained false --no-restore /p:DebugType=Embedded /p:InformationalVersion=${INFO_VERSION} WORKDIR /source/ErsatzTV RUN sed -i '/Scanner/d' ErsatzTV.csproj -RUN node --version RUN dotnet publish ErsatzTV.csproj -c release -o /app -r linux-x64 --self-contained false --no-restore /p:DebugType=Embedded /p:InformationalVersion=${INFO_VERSION} # final stage/image diff --git a/docker/arm32v7/Dockerfile b/docker/arm32v7/Dockerfile index 40b2e1335..3c09ffe63 100644 --- a/docker/arm32v7/Dockerfile +++ b/docker/arm32v7/Dockerfile @@ -6,10 +6,6 @@ COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet # https://hub.docker.com/_/microsoft-dotnet FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy-amd64 AS build RUN apt-get update && apt-get install -y ca-certificates gnupg -RUN mkdir -p /etc/apt/keyrings -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list -RUN apt-get update && apt-get install -y nodejs WORKDIR /source # copy csproj and restore as distinct layers @@ -18,7 +14,6 @@ COPY nuget.config . COPY lib/nuget/* ./lib/nuget/ COPY artwork/* ./artwork/ COPY ErsatzTV/*.csproj ./ErsatzTV/ -COPY ErsatzTV/client-app/package*.json ./ErsatzTV/client-app/ COPY ErsatzTV.Application/*.csproj ./ErsatzTV.Application/ COPY ErsatzTV.Core/*.csproj ./ErsatzTV.Core/ COPY ErsatzTV.FFmpeg/*.csproj ./ErsatzTV.FFmpeg/ diff --git a/docker/arm64/Dockerfile b/docker/arm64/Dockerfile index 13858d01e..35fb9bed1 100644 --- a/docker/arm64/Dockerfile +++ b/docker/arm64/Dockerfile @@ -6,10 +6,6 @@ COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet # https://hub.docker.com/_/microsoft-dotnet FROM mcr.microsoft.com/dotnet/sdk:8.0-jammy-amd64 AS build RUN apt-get update && apt-get install -y ca-certificates gnupg -RUN mkdir -p /etc/apt/keyrings -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list -RUN apt-get update && apt-get install -y nodejs WORKDIR /source # copy csproj and restore as distinct layers @@ -18,7 +14,6 @@ COPY nuget.config . COPY lib/nuget/* ./lib/nuget/ COPY artwork/* ./artwork/ COPY ErsatzTV/*.csproj ./ErsatzTV/ -COPY ErsatzTV/client-app/package*.json ./ErsatzTV/client-app/ COPY ErsatzTV.Application/*.csproj ./ErsatzTV.Application/ COPY ErsatzTV.Core/*.csproj ./ErsatzTV.Core/ COPY ErsatzTV.FFmpeg/*.csproj ./ErsatzTV.FFmpeg/ diff --git a/docker/nvidia/Dockerfile b/docker/nvidia/Dockerfile index 752e8222e..528edd5ea 100644 --- a/docker/nvidia/Dockerfile +++ b/docker/nvidia/Dockerfile @@ -1,10 +1,6 @@ # https://hub.docker.com/_/microsoft-dotnet FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build RUN apt-get update && apt-get install -y ca-certificates gnupg -RUN mkdir -p /etc/apt/keyrings -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list -RUN apt-get update && apt-get install -y nodejs npm WORKDIR /source # copy csproj and restore as distinct layers @@ -13,7 +9,6 @@ COPY nuget.config . COPY lib/nuget/* ./lib/nuget/ COPY artwork/* ./artwork/ COPY ErsatzTV/*.csproj ./ErsatzTV/ -COPY ErsatzTV/client-app/package*.json ./ErsatzTV/client-app/ COPY ErsatzTV.Application/*.csproj ./ErsatzTV.Application/ COPY ErsatzTV.Core/*.csproj ./ErsatzTV.Core/ COPY ErsatzTV.FFmpeg/*.csproj ./ErsatzTV.FFmpeg/ diff --git a/docker/vaapi/Dockerfile b/docker/vaapi/Dockerfile index 78f0801ca..59973022f 100644 --- a/docker/vaapi/Dockerfile +++ b/docker/vaapi/Dockerfile @@ -1,10 +1,6 @@ # https://hub.docker.com/_/microsoft-dotnet FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build RUN apt-get update && apt-get install -y ca-certificates gnupg -RUN mkdir -p /etc/apt/keyrings -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list -RUN apt-get update && apt-get install -y nodejs npm WORKDIR /source # copy csproj and restore as distinct layers @@ -13,7 +9,6 @@ COPY nuget.config . COPY lib/nuget/* ./lib/nuget/ COPY artwork/* ./artwork/ COPY ErsatzTV/*.csproj ./ErsatzTV/ -COPY ErsatzTV/client-app/package*.json ./ErsatzTV/client-app/ COPY ErsatzTV.Application/*.csproj ./ErsatzTV.Application/ COPY ErsatzTV.Core/*.csproj ./ErsatzTV.Core/ COPY ErsatzTV.FFmpeg/*.csproj ./ErsatzTV.FFmpeg/ diff --git a/scripts/cleanup-all-code.sh b/scripts/cleanup-all-code.sh index 251bbf970..d6ee7255a 100755 --- a/scripts/cleanup-all-code.sh +++ b/scripts/cleanup-all-code.sh @@ -3,4 +3,4 @@ cd "$(git rev-parse --show-cdup)" || exit dotnet tool restore -dotnet jb cleanupcode ErsatzTV.sln --exclude='CHANGELOG.md;scripts/**;generated/**;ErsatzTV/client-app/**' +dotnet jb cleanupcode ErsatzTV.sln --exclude='CHANGELOG.md;scripts/**;generated/**' diff --git a/scripts/cleanup-code.sh b/scripts/cleanup-code.sh index 30ae3db1e..39dfed4f2 100755 --- a/scripts/cleanup-code.sh +++ b/scripts/cleanup-code.sh @@ -4,4 +4,4 @@ cd "$(git rev-parse --show-cdup)" || exit dotnet tool restore CHANGED=$(git status --porcelain | sed 's/^...//' | paste -sd ";" -) -dotnet jb cleanupcode ErsatzTV.sln --exclude='CHANGELOG.md;scripts/**;generated/**;ErsatzTV/client-app/**' --include="$CHANGED" +dotnet jb cleanupcode ErsatzTV.sln --exclude='CHANGELOG.md;scripts/**;generated/**' --include="$CHANGED"{{ $t(this.$route.name) }}
-