mirror of
https://github.com/modrinth/code.git
synced 2026-07-31 21:26:40 +00:00
* feat: implement instance share page + search_users backend call * feat: invite players modal * feat: use tanstack queries for friends sync across app pages * feat: base shared instances implementation * fix: admon style * feat: impl instance admonitions like server panel * fix: impl get + del usage * feat: support modpack links * feat: invite notif accepting * fix: lint + fmt * feat: impl install to play * feat: impl usage of UpdateToPlayModal * feat: warnings on deleting/disabling shared-instance version content * fix: send instance name * feat: align with backend * feat: shared instances qa * feat: wrong account protection * feat: qa * fix: smartly apply updates * fix: install bug * fix: 401/404 differentiation * fix: fmt+prepr * feat: qa * feat: qa * fix: signing out messes up revoke/deleted checks * feat: qa * fix: fmt + lint * feat: lock content if part of shared instance * fix: lint * [do not merge] feat: rough invite links impl temp (#6666) * fix: wrong cmd * feat: invite page * fix: server-manager DTO mismatch * fix: drop anonymous invite link acceptance * refactor: structured shared-instance unavailable errors * refactor: centralise error presentations * refactor: dedupe shared instance diff detection * fix: logging in reqwests * refactor: move app.vue shared instances into handler * refactor: break up Share.vue * refactor: split up shared instances state outside of instance index * refactor: dedicated shared instances install/update modals + split up page * refactor: centralized managed content * refactor: split up install shared to own runner + shared.rs split up * refactor: dedupe sql for instance metadata enrichmnt * refactor: friends composable + dedupe friends logic across usages * chore: reduced unused code * fix: align with backend * fix: lint * fix: file sha changes * fix: invite links not working due to icon signed * feat: qa * feat: reporting frontend dummy * fix: try use header * remove: file hash field * fix: pin box * feat: malware warning for shared instances * fix: cache rule * feat: config files syncing * feat: disable config sharing * fix: header * fix: use mark ready * fix: dont cause push update for configs * fix: lint * feat: sharing page in settings * feat: move config + change flow * fix: qa * fix: lint prepr * feat: proxy file upload thru shared instances backend * fix: use collapisible * fix: push config * fix: config * feat: swap out sign in modal for new one * fix: report flow * fix: exclude configs.zip from external warnings * fix: nuxi init * fix: config bundle downloading * fix: error notif * fix: polling * fix: qa * fix: lint + prepr * feat: shared instances moderation frontend + hook up report flow * fix: report copy * fix: lint * fix: lint * fix: modrinth ids being undefined * feat: instance quarantining * fix: prepr + fmt * fix: quarantined -> locked terminology * fix: missing endpoint impls + fmt * fix: missing api in build.rs * fix: share tab jittery * fix: fmt *PT bug * fix: invites count as users even if pending * fix: prepr * fix: invite page owner in users list * fix: lint * fix: qa * fix: lint * fix: members stale not clearing * fix: invite use joined_at field * fix: lint * fix: qa --------- Co-authored-by: sychic <47618543+Sychic@users.noreply.github.com>
113 lines
3.2 KiB
TypeScript
113 lines
3.2 KiB
TypeScript
import vue from '@vitejs/plugin-vue'
|
|
import { existsSync, readFileSync } from 'fs'
|
|
import { resolve } from 'path'
|
|
import { defineConfig } from 'vite'
|
|
import svgLoader from 'vite-svg-loader'
|
|
|
|
import tauriConf from '../app/tauri.conf.json'
|
|
|
|
const projectRootDir = resolve(__dirname)
|
|
const appLibEnvDir = resolve(projectRootDir, '../../packages/app-lib')
|
|
const apiClientSource = resolve(projectRootDir, '../../packages/api-client/src/index.ts')
|
|
|
|
// Load .env from app-lib manually instead of using Vite's envDir, which would auto-load .env.local and override values
|
|
const envFilePath = resolve(appLibEnvDir, '.env')
|
|
if (existsSync(envFilePath)) {
|
|
for (const line of readFileSync(envFilePath, 'utf-8').split('\n')) {
|
|
const trimmed = line.trim()
|
|
if (!trimmed || trimmed.startsWith('#')) continue
|
|
const eqIndex = trimmed.indexOf('=')
|
|
if (eqIndex === -1) continue
|
|
const key = trimmed.slice(0, eqIndex)
|
|
const value = trimmed.slice(eqIndex + 1)
|
|
if (!(key in process.env)) {
|
|
process.env[key] = value
|
|
}
|
|
}
|
|
}
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
// TODO: dont forget about this
|
|
silenceDeprecations: ['import'],
|
|
},
|
|
},
|
|
},
|
|
resolve: {
|
|
alias: [
|
|
{
|
|
find: '@modrinth/api-client',
|
|
replacement: apiClientSource,
|
|
},
|
|
{
|
|
find: '@',
|
|
replacement: resolve(projectRootDir, 'src'),
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
vue(),
|
|
svgLoader({
|
|
svgoConfig: {
|
|
plugins: [
|
|
{
|
|
name: 'preset-default',
|
|
params: {
|
|
overrides: {
|
|
removeViewBox: false,
|
|
cleanupIds: {
|
|
minify: false,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
}),
|
|
],
|
|
|
|
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
|
|
// prevent vite from obscuring rust errors
|
|
clearScreen: false,
|
|
// tauri expects a fixed port, fail if that port is not available
|
|
server: {
|
|
port: 1420,
|
|
strictPort: true,
|
|
headers: {
|
|
'content-security-policy': Object.entries(tauriConf.app.security.csp)
|
|
.map(([directive, sources]) => {
|
|
// An additional websocket connect-src is required for Vite dev tools to work
|
|
if (directive === 'connect-src') {
|
|
sources = Array.isArray(sources) ? sources : [sources]
|
|
sources.push('ws://localhost:1420')
|
|
}
|
|
|
|
return Array.isArray(sources)
|
|
? `${directive} ${sources.join(' ')}`
|
|
: `${directive} ${sources}`
|
|
})
|
|
.join('; '),
|
|
},
|
|
},
|
|
// to make use of `TAURI_ENV_DEBUG` and other env variables
|
|
// https://v2.tauri.app/reference/environment-variables/#tauri-cli-hook-commands
|
|
envPrefix: ['VITE_', 'TAURI_', 'MODRINTH_', 'SHARED_INSTANCES_'],
|
|
build: {
|
|
rolldownOptions: {
|
|
onwarn(warning, defaultHandler) {
|
|
if (warning.code === 'INEFFECTIVE_DYNAMIC_IMPORT') return
|
|
defaultHandler(warning)
|
|
},
|
|
},
|
|
// Tauri supports es2021
|
|
target: process.env.TAURI_ENV_PLATFORM == 'windows' ? 'chrome105' : 'safari13', // eslint-disable-line turbo/no-undeclared-env-vars
|
|
// don't minify for debug builds
|
|
minify: !process.env.TAURI_ENV_DEBUG, // eslint-disable-line turbo/no-undeclared-env-vars
|
|
// produce sourcemaps for debug builds
|
|
sourcemap: !!process.env.TAURI_ENV_DEBUG, // eslint-disable-line turbo/no-undeclared-env-vars
|
|
},
|
|
})
|