//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. //Copyright (C) 2024 HTWKalender support@htwkalender.de //This program is free software: you can redistribute it and/or modify //it under the terms of the GNU Affero General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Affero General Public License for more details. //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { fileURLToPath } from "node:url"; import { VitePWA } from 'vite-plugin-pwa'; import mkcert from 'vite-plugin-mkcert'; export default defineConfig({ plugins: [ vue(), mkcert(), VitePWA({ mode: 'development', base: '/', injectRegister: 'auto', includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'mask-icon.svg'], manifest: { name: 'HTWKalender', short_name: 'HTWKalender', description: 'Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.', theme_color: '#FFFFFF', background_color: '#FFFFFF', display: 'standalone', start_url: '/', icons: [ { src: "/pwa-192x192.png", sizes: "192x192", type: "image/png", purpose: "any" }, { src: "/pwa-512x512.png", sizes: "512x512", type: "image/png", purpose: "any" }, { src: "/pwa-maskable-192x192.png", sizes: "192x192", type: "image/png", purpose: "maskable" }, { src: "/pwa-maskable-512x512.png", sizes: "512x512", type: "image/png", purpose: "maskable" } ], }, registerType: 'autoUpdate', workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,json,vue,txt,woff2}'], cleanupOutdatedCaches: true }, devOptions: { enabled: true, /* when using generateSW the PWA plugin will switch to classic */ type: 'module', navigateFallback: 'index.html', suppressWarnings: true, } })], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, server: { host: true, port: 8000, watch: { usePolling: true, }, proxy: { "/api": { target: "http://localhost:8090/api", changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ""), }, }, }, esbuild: { supported: { 'top-level-await': true }, }, optimizeDeps: { esbuildOptions: { supported: { 'top-level-await': true } }, }, });