Update Nuxt to v3.12.1 (#1720)

* Update Nuxt dependencies

* Fix ref access in ChartDisplay

* Fix feature flags cookie options type error

* Specify type-only imports

* Fix shorthands access to tags outside of reactive scope

* Replace most useRoute calls with useRoute from vue-router

Nuxt's version of this composable is horrendously broken (nuxt/nuxt#21340)

* Import all svgs with ?component parameter

Fixes weird hydration issues + gives correct type
This commit is contained in:
Sasha Sorokin
2024-06-14 22:23:02 +02:00
committed by GitHub
parent c6d8476963
commit 34fd9d29c8
68 changed files with 5679 additions and 4859 deletions

View File

@@ -35,19 +35,19 @@
</template> </template>
<script setup> <script setup>
import ModrinthIcon from '~/assets/images/logo.svg' import ModrinthIcon from '~/assets/images/logo.svg?component'
import ModeratorIcon from '~/assets/images/sidebar/admin.svg' import ModeratorIcon from '~/assets/images/sidebar/admin.svg?component'
import CreatorIcon from '~/assets/images/utils/box.svg' import CreatorIcon from '~/assets/images/utils/box.svg?component'
import ListIcon from '~/assets/images/utils/list.svg' import ListIcon from '~/assets/images/utils/list.svg?component'
import EyeOffIcon from '~/assets/images/utils/eye-off.svg' import EyeOffIcon from '~/assets/images/utils/eye-off.svg?component'
import DraftIcon from '~/assets/images/utils/file-text.svg' import DraftIcon from '~/assets/images/utils/file-text.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import ArchiveIcon from '~/assets/images/utils/archive.svg' import ArchiveIcon from '~/assets/images/utils/archive.svg?component'
import ProcessingIcon from '~/assets/images/utils/updated.svg' import ProcessingIcon from '~/assets/images/utils/updated.svg?component'
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import LockIcon from '~/assets/images/utils/lock.svg' import LockIcon from '~/assets/images/utils/lock.svg?component'
import CalendarIcon from '~/assets/images/utils/calendar.svg' import CalendarIcon from '~/assets/images/utils/calendar.svg?component'
import CloseIcon from '~/assets/images/utils/check-circle.svg' import CloseIcon from '~/assets/images/utils/check-circle.svg?component'
defineProps({ defineProps({
type: { type: {

View File

@@ -15,7 +15,7 @@
</template> </template>
<script setup> <script setup>
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
defineProps({ defineProps({
linkStack: { linkStack: {

View File

@@ -25,8 +25,8 @@
</template> </template>
<script> <script>
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import DropdownIcon from '~/assets/images/utils/dropdown.svg' import DropdownIcon from '~/assets/images/utils/dropdown.svg?component'
export default { export default {
components: { components: {

View File

@@ -14,7 +14,7 @@
</template> </template>
<script> <script>
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
export default { export default {
components: { components: {

View File

@@ -7,8 +7,8 @@
</template> </template>
<script> <script>
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import ClipboardCopyIcon from '~/assets/images/utils/clipboard-copy.svg' import ClipboardCopyIcon from '~/assets/images/utils/clipboard-copy.svg?component'
export default { export default {
components: { components: {

View File

@@ -48,10 +48,10 @@
</span> </span>
</template> </template>
<script setup> <script setup>
import InfoIcon from '~/assets/images/utils/info.svg' import InfoIcon from '~/assets/images/utils/info.svg?component'
import ClientIcon from '~/assets/images/utils/client.svg' import ClientIcon from '~/assets/images/utils/client.svg?component'
import GlobeIcon from '~/assets/images/utils/globe.svg' import GlobeIcon from '~/assets/images/utils/globe.svg?component'
import ServerIcon from '~/assets/images/utils/server.svg' import ServerIcon from '~/assets/images/utils/server.svg?component'
defineProps({ defineProps({
type: { type: {

View File

@@ -26,7 +26,7 @@
</template> </template>
<script> <script>
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
export default { export default {
components: { components: {

View File

@@ -35,8 +35,8 @@
<script> <script>
import { renderString } from 'omorphia' import { renderString } from 'omorphia'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import TrashIcon from '~/assets/images/utils/trash.svg' import TrashIcon from '~/assets/images/utils/trash.svg?component'
import Modal from '~/components/ui/Modal.vue' import Modal from '~/components/ui/Modal.vue'
export default { export default {

View File

@@ -74,8 +74,8 @@
<script> <script>
import { Multiselect } from 'vue-multiselect' import { Multiselect } from 'vue-multiselect'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import CheckIcon from '~/assets/images/utils/right-arrow.svg' import CheckIcon from '~/assets/images/utils/right-arrow.svg?component'
import Modal from '~/components/ui/Modal.vue' import Modal from '~/components/ui/Modal.vue'
export default { export default {

View File

@@ -23,7 +23,7 @@
</template> </template>
<script> <script>
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
export default { export default {
components: { components: {

View File

@@ -289,15 +289,15 @@
<script setup> <script setup>
import { renderString } from 'omorphia' import { renderString } from 'omorphia'
import InvitationIcon from '~/assets/images/utils/user-plus.svg' import InvitationIcon from '~/assets/images/utils/user-plus.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import NotificationIcon from '~/assets/images/sidebar/notifications.svg' import NotificationIcon from '~/assets/images/sidebar/notifications.svg?component'
import ReadIcon from '~/assets/images/utils/check-circle.svg' import ReadIcon from '~/assets/images/utils/check-circle.svg?component'
import CalendarIcon from '~/assets/images/utils/calendar.svg' import CalendarIcon from '~/assets/images/utils/calendar.svg?component'
import VersionIcon from '~/assets/images/utils/version.svg' import VersionIcon from '~/assets/images/utils/version.svg?component'
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import ExternalIcon from '~/assets/images/utils/external.svg' import ExternalIcon from '~/assets/images/utils/external.svg?component'
import ThreadSummary from '~/components/ui/thread/ThreadSummary.vue' import ThreadSummary from '~/components/ui/thread/ThreadSummary.vue'
import { getProjectLink, getVersionLink } from '~/helpers/projects.js' import { getProjectLink, getVersionLink } from '~/helpers/projects.js'
import { getUserLink } from '~/helpers/users.js' import { getUserLink } from '~/helpers/users.js'

View File

@@ -51,9 +51,9 @@
</template> </template>
<script> <script>
import GapIcon from '~/assets/images/utils/gap.svg' import GapIcon from '~/assets/images/utils/gap.svg?component'
import LeftArrowIcon from '~/assets/images/utils/left-arrow.svg' import LeftArrowIcon from '~/assets/images/utils/left-arrow.svg?component'
import RightArrowIcon from '~/assets/images/utils/right-arrow.svg' import RightArrowIcon from '~/assets/images/utils/right-arrow.svg?component'
export default { export default {
components: { components: {

View File

@@ -94,10 +94,10 @@ import Categories from '~/components/ui/search/Categories.vue'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import EnvironmentIndicator from '~/components/ui/EnvironmentIndicator.vue' import EnvironmentIndicator from '~/components/ui/EnvironmentIndicator.vue'
import CalendarIcon from '~/assets/images/utils/calendar.svg' import CalendarIcon from '~/assets/images/utils/calendar.svg?component'
import EditIcon from '~/assets/images/utils/updated.svg' import EditIcon from '~/assets/images/utils/updated.svg?component'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import HeartIcon from '~/assets/images/utils/heart.svg' import HeartIcon from '~/assets/images/utils/heart.svg?component'
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
export default { export default {

View File

@@ -108,14 +108,14 @@
<script setup> <script setup>
import { formatProjectType } from '~/plugins/shorthands.js' import { formatProjectType } from '~/plugins/shorthands.js'
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
import DropdownIcon from '~/assets/images/utils/dropdown.svg' import DropdownIcon from '~/assets/images/utils/dropdown.svg?component'
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import RequiredIcon from '~/assets/images/utils/asterisk.svg' import RequiredIcon from '~/assets/images/utils/asterisk.svg?component'
import SuggestionIcon from '~/assets/images/utils/lightbulb.svg' import SuggestionIcon from '~/assets/images/utils/lightbulb.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import SendIcon from '~/assets/images/utils/send.svg' import SendIcon from '~/assets/images/utils/send.svg?component'
import { acceptTeamInvite, removeTeamMember } from '~/helpers/teams.js' import { acceptTeamInvite, removeTeamMember } from '~/helpers/teams.js'
const props = defineProps({ const props = defineProps({

View File

@@ -86,7 +86,7 @@
<script setup> <script setup>
import { Multiselect } from 'vue-multiselect' import { Multiselect } from 'vue-multiselect'
import Checkbox from '~/components/ui/Checkbox.vue' import Checkbox from '~/components/ui/Checkbox.vue'
import ClearIcon from '~/assets/images/utils/clear.svg' import ClearIcon from '~/assets/images/utils/clear.svg?component'
const props = defineProps({ const props = defineProps({
versions: { versions: {
@@ -98,7 +98,7 @@ const props = defineProps({
}) })
const emit = defineEmits(['switch-page']) const emit = defineEmits(['switch-page'])
const route = useRoute() const route = useNativeRoute()
const tags = useTags() const tags = useTags()
@@ -131,7 +131,7 @@ const selectedVersionTypes = shallowRef(getArrayOrString(route.query.c) ?? [])
async function updateQuery() { async function updateQuery() {
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useNativeRoute()
await router.replace({ await router.replace({
query: { query: {

View File

@@ -160,7 +160,7 @@
<div <div
:style="{ :style="{
'--color-brand': isUsingProjectColors '--color-brand': isUsingProjectColors
? intToRgba(project.color, project.id, theme.value ?? undefined) ? intToRgba(project.color, project.id, theme ?? undefined)
: getDefaultColor(project.id), : getDefaultColor(project.id),
}" }"
class="legend__item__color" class="legend__item__color"
@@ -306,7 +306,7 @@ import { analyticsSetToCSVString, intToRgba } from '~/utils/analytics.js'
import { UiChartsCompactChart as CompactChart, UiChartsChart as Chart } from '#components' import { UiChartsCompactChart as CompactChart, UiChartsChart as Chart } from '#components'
import PaletteIcon from '~/assets/icons/palette.svg' import PaletteIcon from '~/assets/icons/palette.svg?component'
const router = useRouter() const router = useRouter()
const theme = useTheme() const theme = useTheme()

View File

@@ -91,9 +91,9 @@
import { renderHighlightedString } from '~/helpers/highlight.js' import { renderHighlightedString } from '~/helpers/highlight.js'
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
import UnknownIcon from '~/assets/images/utils/unknown.svg' import UnknownIcon from '~/assets/images/utils/unknown.svg?component'
import VersionIcon from '~/assets/images/utils/version.svg' import VersionIcon from '~/assets/images/utils/version.svg?component'
import ThreadSummary from '~/components/ui/thread/ThreadSummary.vue' import ThreadSummary from '~/components/ui/thread/ThreadSummary.vue'
import CopyCode from '~/components/ui/CopyCode.vue' import CopyCode from '~/components/ui/CopyCode.vue'

View File

@@ -199,13 +199,13 @@
import { OverflowMenu, MarkdownEditor, DropdownIcon } from 'omorphia' import { OverflowMenu, MarkdownEditor, DropdownIcon } from 'omorphia'
import { useImageUpload } from '~/composables/image-upload.ts' import { useImageUpload } from '~/composables/image-upload.ts'
import CopyCode from '~/components/ui/CopyCode.vue' import CopyCode from '~/components/ui/CopyCode.vue'
import ReplyIcon from '~/assets/images/utils/reply.svg' import ReplyIcon from '~/assets/images/utils/reply.svg?component'
import SendIcon from '~/assets/images/utils/send.svg' import SendIcon from '~/assets/images/utils/send.svg?component'
import CloseIcon from '~/assets/images/utils/check-circle.svg' import CloseIcon from '~/assets/images/utils/check-circle.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import EyeOffIcon from '~/assets/images/utils/eye-off.svg' import EyeOffIcon from '~/assets/images/utils/eye-off.svg?component'
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue' import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue'
import { isStaff } from '~/helpers/users.js' import { isStaff } from '~/helpers/users.js'
import { isApproved, isRejected } from '~/helpers/projects.js' import { isApproved, isRejected } from '~/helpers/projects.js'

View File

@@ -24,7 +24,7 @@
</template> </template>
<script setup> <script setup>
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue' import ThreadMessage from '~/components/ui/thread/ThreadMessage.vue'
const props = defineProps({ const props = defineProps({

View File

@@ -94,7 +94,7 @@ export const initAuth = async (oldToken = null) => {
export const getAuthUrl = (provider, redirect = '') => { export const getAuthUrl = (provider, redirect = '') => {
const config = useRuntimeConfig() const config = useRuntimeConfig()
const route = useRoute() const route = useNativeRoute()
if (redirect === '') { if (redirect === '') {
redirect = route.path redirect = route.path

View File

@@ -1,5 +1,5 @@
import { createFormatter, type Formatter } from '@vintl/compact-number' import { createFormatter, type Formatter } from '@vintl/compact-number'
import { IntlController } from '@vintl/vintl/controller' import type { IntlController } from '@vintl/vintl/controller'
const formatters = new WeakMap<IntlController<any>, Formatter>() const formatters = new WeakMap<IntlController<any>, Formatter>()

View File

@@ -1,4 +1,4 @@
import { CookieOptions } from '#app' import type { CookieOptions } from '#app'
export type ProjectDisplayMode = 'list' | 'grid' | 'gallery' export type ProjectDisplayMode = 'list' | 'grid' | 'gallery'
export type DarkColorTheme = 'dark' | 'oled' | 'retro' export type DarkColorTheme = 'dark' | 'oled' | 'retro'
@@ -58,13 +58,13 @@ export type AllFeatureFlags = {
export type PartialFeatureFlags = Partial<AllFeatureFlags> export type PartialFeatureFlags = Partial<AllFeatureFlags>
const COOKIE_OPTIONS: CookieOptions<PartialFeatureFlags> = { const COOKIE_OPTIONS = {
maxAge: 60 * 60 * 24 * 365 * 10, maxAge: 60 * 60 * 24 * 365 * 10,
sameSite: 'lax', sameSite: 'lax',
secure: true, secure: true,
httpOnly: false, httpOnly: false,
path: '/', path: '/',
} } satisfies CookieOptions<PartialFeatureFlags>
export const useFeatureFlags = () => export const useFeatureFlags = () =>
useState<AllFeatureFlags>('featureFlags', () => { useState<AllFeatureFlags>('featureFlags', () => {

View File

@@ -1,5 +1,5 @@
import { createFormatter, type Formatter } from '@vintl/how-ago' import { createFormatter, type Formatter } from '@vintl/how-ago'
import { IntlController } from '@vintl/vintl/controller' import type { IntlController } from '@vintl/vintl/controller'
const formatters = new WeakMap<IntlController<any>, Formatter>() const formatters = new WeakMap<IntlController<any>, Formatter>()

View File

@@ -0,0 +1 @@
export { useRoute as useNativeRoute } from 'vue-router'

View File

@@ -5,6 +5,6 @@
* @returns {import('vue').Ref<string | string[] | undefined>} * @returns {import('vue').Ref<string | string[] | undefined>}
*/ */
export const useRouteId = (key = 'id') => { export const useRouteId = (key = 'id') => {
const route = useRoute() const route = useNativeRoute()
return route.params?.[key] || undefined return route.params?.[key] || undefined
} }

View File

@@ -428,21 +428,21 @@ import {
Button, Button,
ReportIcon, ReportIcon,
} from 'omorphia' } from 'omorphia'
import HamburgerIcon from '~/assets/images/utils/hamburger.svg' import HamburgerIcon from '~/assets/images/utils/hamburger.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import SearchIcon from '~/assets/images/utils/search.svg' import SearchIcon from '~/assets/images/utils/search.svg?component'
import NotificationIcon from '~/assets/images/sidebar/notifications.svg' import NotificationIcon from '~/assets/images/sidebar/notifications.svg?component'
import SettingsIcon from '~/assets/images/sidebar/settings.svg' import SettingsIcon from '~/assets/images/sidebar/settings.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import HomeIcon from '~/assets/images/sidebar/home.svg' import HomeIcon from '~/assets/images/sidebar/home.svg?component'
import MoonIcon from '~/assets/images/utils/moon.svg' import MoonIcon from '~/assets/images/utils/moon.svg?component'
import SunIcon from '~/assets/images/utils/sun.svg' import SunIcon from '~/assets/images/utils/sun.svg?component'
import PlusIcon from '~/assets/images/utils/plus.svg' import PlusIcon from '~/assets/images/utils/plus.svg?component'
import DropdownIcon from '~/assets/images/utils/dropdown.svg' import DropdownIcon from '~/assets/images/utils/dropdown.svg?component'
import LogOutIcon from '~/assets/images/utils/log-out.svg' import LogOutIcon from '~/assets/images/utils/log-out.svg?component'
import ChartIcon from '~/assets/images/utils/chart.svg' import ChartIcon from '~/assets/images/utils/chart.svg?component'
import NavRow from '~/components/ui/NavRow.vue' import NavRow from '~/components/ui/NavRow.vue'
import ModalCreation from '~/components/ui/ModalCreation.vue' import ModalCreation from '~/components/ui/ModalCreation.vue'
@@ -460,7 +460,7 @@ const flags = useFeatureFlags()
const tags = useTags() const tags = useTags()
const config = useRuntimeConfig() const config = useRuntimeConfig()
const route = useRoute() const route = useNativeRoute()
const link = config.public.siteUrl + route.path.replace(/\/+$/, '') const link = config.public.siteUrl + route.path.replace(/\/+$/, '')
const verifyEmailBannerMessages = defineMessages({ const verifyEmailBannerMessages = defineMessages({

View File

@@ -13,9 +13,9 @@
}, },
"devDependencies": { "devDependencies": {
"@formatjs/cli": "^6.1.2", "@formatjs/cli": "^6.1.2",
"@nuxt/devtools": "^0.7.0", "@nuxt/devtools": "^1.3.3",
"@nuxtjs/eslint-config-typescript": "^12.0.0", "@nuxtjs/eslint-config-typescript": "^12.0.0",
"@nuxtjs/turnstile": "^0.5.0", "@nuxtjs/turnstile": "^0.8.0",
"@types/node": "^20.1.0", "@types/node": "^20.1.0",
"@typescript-eslint/eslint-plugin": "^5.59.8", "@typescript-eslint/eslint-plugin": "^5.59.8",
"@typescript-eslint/parser": "^5.59.8", "@typescript-eslint/parser": "^5.59.8",
@@ -29,12 +29,12 @@
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-vue": "^9.14.1", "eslint-plugin-vue": "^9.14.1",
"glob": "^10.2.7", "glob": "^10.2.7",
"nuxt": "^3.5.3", "nuxt": "^3.12.1",
"prettier": "^2.8.8", "prettier": "^2.8.8",
"sass": "^1.58.0", "sass": "^1.58.0",
"typescript": "^5.0.4", "typescript": "^5.4.5",
"vite-plugin-eslint": "^1.8.1", "vite-plugin-eslint": "^1.8.1",
"vite-svg-loader": "^4.0.0", "vite-svg-loader": "^5.1.0",
"vue-tsc": "^1.6.5" "vue-tsc": "^1.6.5"
}, },
"dependencies": { "dependencies": {

View File

@@ -1080,26 +1080,26 @@ import {
CheckIcon, CheckIcon,
XIcon, XIcon,
} from 'omorphia' } from 'omorphia'
import CrownIcon from '~/assets/images/utils/crown.svg' import CrownIcon from '~/assets/images/utils/crown.svg?component'
import CalendarIcon from '~/assets/images/utils/calendar.svg' import CalendarIcon from '~/assets/images/utils/calendar.svg?component'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import UpdateIcon from '~/assets/images/utils/updated.svg' import UpdateIcon from '~/assets/images/utils/updated.svg?component'
import QueuedIcon from '~/assets/images/utils/list-end.svg' import QueuedIcon from '~/assets/images/utils/list-end.svg?component'
import CodeIcon from '~/assets/images/sidebar/mod.svg' import CodeIcon from '~/assets/images/sidebar/mod.svg?component'
import ExternalIcon from '~/assets/images/utils/external.svg' import ExternalIcon from '~/assets/images/utils/external.svg?component'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
import HeartIcon from '~/assets/images/utils/heart.svg' import HeartIcon from '~/assets/images/utils/heart.svg?component'
import IssuesIcon from '~/assets/images/utils/issues.svg' import IssuesIcon from '~/assets/images/utils/issues.svg?component'
import WikiIcon from '~/assets/images/utils/wiki.svg' import WikiIcon from '~/assets/images/utils/wiki.svg?component'
import DiscordIcon from '~/assets/images/external/discord.svg' import DiscordIcon from '~/assets/images/external/discord.svg?component'
import BuyMeACoffeeLogo from '~/assets/images/external/bmac.svg' import BuyMeACoffeeLogo from '~/assets/images/external/bmac.svg?component'
import PatreonIcon from '~/assets/images/external/patreon.svg' import PatreonIcon from '~/assets/images/external/patreon.svg?component'
import KoFiIcon from '~/assets/images/external/kofi.svg' import KoFiIcon from '~/assets/images/external/kofi.svg?component'
import PayPalIcon from '~/assets/images/external/paypal.svg' import PayPalIcon from '~/assets/images/external/paypal.svg?component'
import OpenCollectiveIcon from '~/assets/images/external/opencollective.svg' import OpenCollectiveIcon from '~/assets/images/external/opencollective.svg?component'
import UnknownIcon from '~/assets/images/utils/unknown-donation.svg' import UnknownIcon from '~/assets/images/utils/unknown-donation.svg?component'
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
import BoxIcon from '~/assets/images/utils/box.svg' import BoxIcon from '~/assets/images/utils/box.svg?component'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import Categories from '~/components/ui/search/Categories.vue' import Categories from '~/components/ui/search/Categories.vue'
import EnvironmentIndicator from '~/components/ui/EnvironmentIndicator.vue' import EnvironmentIndicator from '~/components/ui/EnvironmentIndicator.vue'
@@ -1111,26 +1111,26 @@ import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
import ProjectMemberHeader from '~/components/ui/ProjectMemberHeader.vue' import ProjectMemberHeader from '~/components/ui/ProjectMemberHeader.vue'
import MessageBanner from '~/components/ui/MessageBanner.vue' import MessageBanner from '~/components/ui/MessageBanner.vue'
import SettingsIcon from '~/assets/images/utils/settings.svg' import SettingsIcon from '~/assets/images/utils/settings.svg?component'
import UsersIcon from '~/assets/images/utils/users.svg' import UsersIcon from '~/assets/images/utils/users.svg?component'
import CategoriesIcon from '~/assets/images/utils/tags.svg' import CategoriesIcon from '~/assets/images/utils/tags.svg?component'
import DescriptionIcon from '~/assets/images/utils/align-left.svg' import DescriptionIcon from '~/assets/images/utils/align-left.svg?component'
import LinksIcon from '~/assets/images/utils/link.svg' import LinksIcon from '~/assets/images/utils/link.svg?component'
import CopyrightIcon from '~/assets/images/utils/copyright.svg' import CopyrightIcon from '~/assets/images/utils/copyright.svg?component'
import LicenseIcon from '~/assets/images/utils/book-text.svg' import LicenseIcon from '~/assets/images/utils/book-text.svg?component'
import GalleryIcon from '~/assets/images/utils/image.svg' import GalleryIcon from '~/assets/images/utils/image.svg?component'
import VersionIcon from '~/assets/images/utils/version.svg' import VersionIcon from '~/assets/images/utils/version.svg?component'
import { reportProject } from '~/utils/report-helpers.ts' import { reportProject } from '~/utils/report-helpers.ts'
import Breadcrumbs from '~/components/ui/Breadcrumbs.vue' import Breadcrumbs from '~/components/ui/Breadcrumbs.vue'
import { userCollectProject } from '~/composables/user.js' import { userCollectProject } from '~/composables/user.js'
import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue' import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue'
import OrganizationIcon from '~/assets/images/utils/organization.svg' import OrganizationIcon from '~/assets/images/utils/organization.svg?component'
import ModerationChecklist from '~/components/ui/ModerationChecklist.vue' import ModerationChecklist from '~/components/ui/ModerationChecklist.vue'
import ModeratorIcon from '~/assets/images/sidebar/admin.svg' import ModeratorIcon from '~/assets/images/sidebar/admin.svg?component'
import { getVersionsToDisplay } from '~/helpers/projects.js' import { getVersionsToDisplay } from '~/helpers/projects.js'
const data = useNuxtApp() const data = useNuxtApp()
const route = useRoute() const route = useNativeRoute()
const config = useRuntimeConfig() const config = useRuntimeConfig()
const auth = await useAuth() const auth = await useAuth()

View File

@@ -67,7 +67,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import { renderHighlightedString } from '~/helpers/highlight.js' import { renderHighlightedString } from '~/helpers/highlight.js'
import VersionFilterControl from '~/components/ui/VersionFilterControl.vue' import VersionFilterControl from '~/components/ui/VersionFilterControl.vue'
import Pagination from '~/components/ui/Pagination.vue' import Pagination from '~/components/ui/Pagination.vue'
@@ -103,7 +103,7 @@ useSeoMeta({
ogDescription: description, ogDescription: description,
}) })
const route = useRoute() const route = useNativeRoute()
const currentPage = ref(Number(route.query.p ?? 1)) const currentPage = ref(Number(route.query.p ?? 1))
const filteredVersions = computed(() => { const filteredVersions = computed(() => {
const selectedGameVersions = getArrayOrString(route.query.g) ?? [] const selectedGameVersions = getArrayOrString(route.query.g) ?? []
@@ -127,7 +127,7 @@ function switchPage(page) {
currentPage.value = page currentPage.value = page
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useNativeRoute()
router.replace({ router.replace({
query: { query: {

View File

@@ -36,7 +36,7 @@
<script> <script>
import { MarkdownEditor } from 'omorphia' import { MarkdownEditor } from 'omorphia'
import Chips from '~/components/ui/Chips.vue' import Chips from '~/components/ui/Chips.vue'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
import { renderHighlightedString } from '~/helpers/highlight.js' import { renderHighlightedString } from '~/helpers/highlight.js'
import { useImageUpload } from '~/composables/image-upload.ts' import { useImageUpload } from '~/composables/image-upload.ts'

View File

@@ -247,12 +247,12 @@ import Avatar from '~/components/ui/Avatar.vue'
import ModalConfirm from '~/components/ui/ModalConfirm.vue' import ModalConfirm from '~/components/ui/ModalConfirm.vue'
import FileInput from '~/components/ui/FileInput.vue' import FileInput from '~/components/ui/FileInput.vue'
import UploadIcon from '~/assets/images/utils/upload.svg' import UploadIcon from '~/assets/images/utils/upload.svg?component'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
import TrashIcon from '~/assets/images/utils/trash.svg' import TrashIcon from '~/assets/images/utils/trash.svg?component'
import ExitIcon from '~/assets/images/utils/x.svg' import ExitIcon from '~/assets/images/utils/x.svg?component'
import IssuesIcon from '~/assets/images/utils/issues.svg' import IssuesIcon from '~/assets/images/utils/issues.svg?component'
import CheckIcon from '~/assets/images/utils/check.svg' import CheckIcon from '~/assets/images/utils/check.svg?component'
const props = defineProps({ const props = defineProps({
project: { project: {

View File

@@ -102,7 +102,7 @@
<script> <script>
import Multiselect from 'vue-multiselect' import Multiselect from 'vue-multiselect'
import Checkbox from '~/components/ui/Checkbox' import Checkbox from '~/components/ui/Checkbox'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {

View File

@@ -123,7 +123,7 @@
<script setup> <script setup>
import { DropdownSelect } from 'omorphia' import { DropdownSelect } from 'omorphia'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
const tags = useTags() const tags = useTags()

View File

@@ -521,12 +521,12 @@ import { Multiselect } from 'vue-multiselect'
import { Avatar, Badge, Card, Checkbox, TransferIcon, CheckIcon, UsersIcon } from 'omorphia' import { Avatar, Badge, Card, Checkbox, TransferIcon, CheckIcon, UsersIcon } from 'omorphia'
import ModalConfirm from '~/components/ui/ModalConfirm.vue' import ModalConfirm from '~/components/ui/ModalConfirm.vue'
import DropdownIcon from '~/assets/images/utils/dropdown.svg' import DropdownIcon from '~/assets/images/utils/dropdown.svg?component'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
import UserPlusIcon from '~/assets/images/utils/user-plus.svg' import UserPlusIcon from '~/assets/images/utils/user-plus.svg?component'
import UserRemoveIcon from '~/assets/images/utils/user-x.svg' import UserRemoveIcon from '~/assets/images/utils/user-x.svg?component'
import OrganizationIcon from '~/assets/images/utils/organization.svg' import OrganizationIcon from '~/assets/images/utils/organization.svg?component'
import CrownIcon from '~/assets/images/utils/crown.svg' import CrownIcon from '~/assets/images/utils/crown.svg?component'
import { removeSelfFromTeam } from '~/helpers/teams.js' import { removeSelfFromTeam } from '~/helpers/teams.js'

View File

@@ -114,8 +114,8 @@
<script> <script>
import Checkbox from '~/components/ui/Checkbox.vue' import Checkbox from '~/components/ui/Checkbox.vue'
import StarIcon from '~/assets/images/utils/star.svg' import StarIcon from '~/assets/images/utils/star.svg?component'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {

View File

@@ -631,23 +631,23 @@ import Chips from '~/components/ui/Chips.vue'
import Checkbox from '~/components/ui/Checkbox.vue' import Checkbox from '~/components/ui/Checkbox.vue'
import FileInput from '~/components/ui/FileInput.vue' import FileInput from '~/components/ui/FileInput.vue'
import FileIcon from '~/assets/images/utils/file.svg' import FileIcon from '~/assets/images/utils/file.svg?component'
import TrashIcon from '~/assets/images/utils/trash.svg' import TrashIcon from '~/assets/images/utils/trash.svg?component'
import EditIcon from '~/assets/images/utils/edit.svg' import EditIcon from '~/assets/images/utils/edit.svg?component'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import StarIcon from '~/assets/images/utils/star.svg' import StarIcon from '~/assets/images/utils/star.svg?component'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import HashIcon from '~/assets/images/utils/hash.svg' import HashIcon from '~/assets/images/utils/hash.svg?component'
import PlusIcon from '~/assets/images/utils/plus.svg' import PlusIcon from '~/assets/images/utils/plus.svg?component'
import TransferIcon from '~/assets/images/utils/transfer.svg' import TransferIcon from '~/assets/images/utils/transfer.svg?component'
import UploadIcon from '~/assets/images/utils/upload.svg' import UploadIcon from '~/assets/images/utils/upload.svg?component'
import BackIcon from '~/assets/images/utils/left-arrow.svg' import BackIcon from '~/assets/images/utils/left-arrow.svg?component'
import BoxIcon from '~/assets/images/utils/box.svg' import BoxIcon from '~/assets/images/utils/box.svg?component'
import RightArrowIcon from '~/assets/images/utils/right-arrow.svg' import RightArrowIcon from '~/assets/images/utils/right-arrow.svg?component'
import Modal from '~/components/ui/Modal.vue' import Modal from '~/components/ui/Modal.vue'
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {
@@ -725,7 +725,7 @@ export default defineNuxtComponent({
}, },
async setup(props) { async setup(props) {
const data = useNuxtApp() const data = useNuxtApp()
const route = useRoute() const route = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
const tags = useTags() const tags = useTags()

View File

@@ -99,9 +99,9 @@
</template> </template>
<script setup> <script setup>
import { acceptFileFromProjectType } from '~/helpers/fileUtils.js' import { acceptFileFromProjectType } from '~/helpers/fileUtils.js'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import UploadIcon from '~/assets/images/utils/upload.svg' import UploadIcon from '~/assets/images/utils/upload.svg?component'
import InfoIcon from '~/assets/images/utils/info.svg' import InfoIcon from '~/assets/images/utils/info.svg?component'
import VersionBadge from '~/components/ui/Badge.vue' import VersionBadge from '~/components/ui/Badge.vue'
import FileInput from '~/components/ui/FileInput.vue' import FileInput from '~/components/ui/FileInput.vue'
import DropArea from '~/components/ui/DropArea.vue' import DropArea from '~/components/ui/DropArea.vue'
@@ -151,7 +151,7 @@ useSeoMeta({
ogDescription: description, ogDescription: description,
}) })
const route = useRoute() const route = useNativeRoute()
const currentPage = ref(Number(route.query.p ?? 1)) const currentPage = ref(Number(route.query.p ?? 1))
const filteredVersions = computed(() => { const filteredVersions = computed(() => {
const selectedGameVersions = getArrayOrString(route.query.g) ?? [] const selectedGameVersions = getArrayOrString(route.query.g) ?? []
@@ -175,7 +175,7 @@ function switchPage(page) {
currentPage.value = page currentPage.value = page
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useNativeRoute()
router.replace({ router.replace({
query: { query: {

View File

@@ -11,9 +11,9 @@ import {
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
import LogoAnimated from '~/components/brand/LogoAnimated.vue' import LogoAnimated from '~/components/brand/LogoAnimated.vue'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import PrismIcon from '~/assets/images/external/prism.svg' import PrismIcon from '~/assets/images/external/prism.svg?component'
import ATLauncher from '~/assets/images/external/atlauncher.svg' import ATLauncher from '~/assets/images/external/atlauncher.svg?component'
import CurseForge from '~/assets/images/external/curseforge.svg' import CurseForge from '~/assets/images/external/curseforge.svg?component'
import Checkbox from '~/components/ui/Checkbox.vue' import Checkbox from '~/components/ui/Checkbox.vue'
const os = ref(null) const os = ref(null)

View File

@@ -118,7 +118,7 @@ const messages = defineMessages({
const data = useNuxtApp() const data = useNuxtApp()
const router = useRoute() const router = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
const { scopesToDefinitions } = useScopes() const { scopesToDefinitions } = useScopes()

View File

@@ -157,7 +157,7 @@ if (auth.value.user) {
await navigateTo('/dashboard') await navigateTo('/dashboard')
} }
const route = useRoute() const route = useNativeRoute()
const step = ref('choose_method') const step = ref('choose_method')

View File

@@ -177,7 +177,7 @@ useHead({
}) })
const auth = await useAuth() const auth = await useAuth()
const route = useRoute() const route = useNativeRoute()
const redirectTarget = route.query.redirect || '' const redirectTarget = route.query.redirect || ''

View File

@@ -201,7 +201,7 @@ useHead({
}) })
const auth = await useAuth() const auth = await useAuth()
const route = useRoute() const route = useNativeRoute()
const redirectTarget = route.query.redirect const redirectTarget = route.query.redirect

View File

@@ -121,7 +121,7 @@ useHead({
const auth = await useAuth() const auth = await useAuth()
const success = ref(false) const success = ref(false)
const route = useRoute() const route = useNativeRoute()
if (route.query.flow) { if (route.query.flow) {
try { try {

View File

@@ -72,7 +72,7 @@ useHead({
const subscribe = ref(true) const subscribe = ref(true)
async function continueSignUp() { async function continueSignUp() {
const route = useRoute() const route = useNativeRoute()
await useAuth(route.query.authToken) await useAuth(route.query.authToken)
await useUser() await useUser()

View File

@@ -480,7 +480,7 @@ const messages = defineMessages({
}) })
const data = useNuxtApp() const data = useNuxtApp()
const route = useRoute() const route = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
const cosmetics = useCosmetics() const cosmetics = useCosmetics()
const tags = useTags() const tags = useTags()

View File

@@ -46,12 +46,12 @@ import { LibraryIcon, ChartIcon } from 'omorphia'
import NavStack from '~/components/ui/NavStack.vue' import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
import DashboardIcon from '~/assets/images/utils/dashboard.svg' import DashboardIcon from '~/assets/images/utils/dashboard.svg?component'
import CurrencyIcon from '~/assets/images/utils/currency.svg' import CurrencyIcon from '~/assets/images/utils/currency.svg?component'
import ListIcon from '~/assets/images/utils/list.svg' import ListIcon from '~/assets/images/utils/list.svg?component'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
import NotificationsIcon from '~/assets/images/utils/bell.svg' import NotificationsIcon from '~/assets/images/utils/bell.svg?component'
import OrganizationIcon from '~/assets/images/utils/organization.svg' import OrganizationIcon from '~/assets/images/utils/organization.svg?component'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
@@ -59,5 +59,5 @@ definePageMeta({
middleware: 'auth', middleware: 'auth',
}) })
const route = useRoute() const route = useNativeRoute()
</script> </script>

View File

@@ -89,7 +89,7 @@
</template> </template>
<script setup> <script setup>
import { Avatar, BoxIcon, SearchIcon, XIcon, Button, PlusIcon, LinkIcon, LockIcon } from 'omorphia' import { Avatar, BoxIcon, SearchIcon, XIcon, Button, PlusIcon, LinkIcon, LockIcon } from 'omorphia'
import WorldIcon from '~/assets/images/utils/world.svg' import WorldIcon from '~/assets/images/utils/world.svg?component'
import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue' import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()

View File

@@ -108,8 +108,8 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg' import ChevronRightIcon from '~/assets/images/utils/chevron-right.svg?component'
import HistoryIcon from '~/assets/images/utils/history.svg' import HistoryIcon from '~/assets/images/utils/history.svg?component'
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
import NotificationItem from '~/components/ui/NotificationItem.vue' import NotificationItem from '~/components/ui/NotificationItem.vue'
import { fetchExtraNotificationData, groupNotifications } from '~/helpers/notifications.js' import { fetchExtraNotificationData, groupNotifications } from '~/helpers/notifications.js'

View File

@@ -58,7 +58,7 @@ import {
} from '~/helpers/notifications.js' } from '~/helpers/notifications.js'
import NotificationItem from '~/components/ui/NotificationItem.vue' import NotificationItem from '~/components/ui/NotificationItem.vue'
import Chips from '~/components/ui/Chips.vue' import Chips from '~/components/ui/Chips.vue'
import CheckCheckIcon from '~/assets/images/utils/check-check.svg' import CheckCheckIcon from '~/assets/images/utils/check-check.svg?component'
import Breadcrumbs from '~/components/ui/Breadcrumbs.vue' import Breadcrumbs from '~/components/ui/Breadcrumbs.vue'
import Pagination from '~/components/ui/Pagination.vue' import Pagination from '~/components/ui/Pagination.vue'
@@ -68,7 +68,7 @@ useHead({
const auth = await useAuth() const auth = await useAuth()
const route = useRoute() const route = useNativeRoute()
const router = useRouter() const router = useRouter()
const history = computed(() => { const history = computed(() => {

View File

@@ -309,15 +309,15 @@ import Avatar from '~/components/ui/Avatar.vue'
import ModalCreation from '~/components/ui/ModalCreation.vue' import ModalCreation from '~/components/ui/ModalCreation.vue'
import CopyCode from '~/components/ui/CopyCode.vue' import CopyCode from '~/components/ui/CopyCode.vue'
import SettingsIcon from '~/assets/images/utils/settings.svg' import SettingsIcon from '~/assets/images/utils/settings.svg?component'
import TrashIcon from '~/assets/images/utils/trash.svg' import TrashIcon from '~/assets/images/utils/trash.svg?component'
import IssuesIcon from '~/assets/images/utils/issues.svg' import IssuesIcon from '~/assets/images/utils/issues.svg?component'
import PlusIcon from '~/assets/images/utils/plus.svg' import PlusIcon from '~/assets/images/utils/plus.svg?component'
import CrossIcon from '~/assets/images/utils/x.svg' import CrossIcon from '~/assets/images/utils/x.svg?component'
import EditIcon from '~/assets/images/utils/edit.svg' import EditIcon from '~/assets/images/utils/edit.svg?component'
import SaveIcon from '~/assets/images/utils/save.svg' import SaveIcon from '~/assets/images/utils/save.svg?component'
import AscendingIcon from '~/assets/images/utils/sort-asc.svg' import AscendingIcon from '~/assets/images/utils/sort-asc.svg?component'
import DescendingIcon from '~/assets/images/utils/sort-desc.svg' import DescendingIcon from '~/assets/images/utils/sort-desc.svg?component'
export default defineNuxtComponent({ export default defineNuxtComponent({
components: { components: {

View File

@@ -8,7 +8,7 @@
<script setup> <script setup>
import ReportView from '~/components/ui/report/ReportView.vue' import ReportView from '~/components/ui/report/ReportView.vue'
const route = useRoute() const route = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
useHead({ useHead({

View File

@@ -104,8 +104,8 @@ import {
capitalizeString, capitalizeString,
} from 'omorphia' } from 'omorphia'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import TremendousIcon from '~/assets/images/external/tremendous.svg' import TremendousIcon from '~/assets/images/external/tremendous.svg?component'
import VenmoIcon from '~/assets/images/external/venmo-small.svg' import VenmoIcon from '~/assets/images/external/venmo-small.svg?component'
const vintl = useVIntl() const vintl = useVIntl()
const { formatMessage } = vintl const { formatMessage } = vintl

View File

@@ -196,7 +196,7 @@ import {
Breadcrumbs, Breadcrumbs,
} from 'omorphia' } from 'omorphia'
import { all } from 'iso-3166-1' import { all } from 'iso-3166-1'
import VenmoIcon from '~/assets/images/external/venmo.svg' import VenmoIcon from '~/assets/images/external/venmo.svg?component'
const auth = await useAuth() const auth = await useAuth()
const data = useNuxtApp() const data = useNuxtApp()

View File

@@ -1,5 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { FeatureFlag, DEFAULT_FEATURE_FLAGS, saveFeatureFlags } from '~/composables/featureFlags.ts' import {
type FeatureFlag,
DEFAULT_FEATURE_FLAGS,
saveFeatureFlags,
} from '~/composables/featureFlags.ts'
const flags = shallowReactive(useFeatureFlags().value) const flags = shallowReactive(useFeatureFlags().value)
</script> </script>

View File

@@ -505,11 +505,11 @@
</template> </template>
<script setup> <script setup>
import { Multiselect } from 'vue-multiselect' import { Multiselect } from 'vue-multiselect'
import SearchIcon from '~/assets/images/utils/search.svg' import SearchIcon from '~/assets/images/utils/search.svg?component'
import CalendarIcon from '~/assets/images/utils/calendar.svg' import CalendarIcon from '~/assets/images/utils/calendar.svg?component'
import ModrinthIcon from '~/assets/images/logo.svg' import ModrinthIcon from '~/assets/images/logo.svg?component'
import PrismLauncherLogo from '~/assets/images/external/prism.svg' import PrismLauncherLogo from '~/assets/images/external/prism.svg?component'
import ATLauncherLogo from '~/assets/images/external/atlauncher.svg' import ATLauncherLogo from '~/assets/images/external/atlauncher.svg?component'
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
import ProjectCard from '~/components/ui/ProjectCard.vue' import ProjectCard from '~/components/ui/ProjectCard.vue'

View File

@@ -54,7 +54,7 @@ import {
import NavStack from '~/components/ui/NavStack.vue' import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
const route = useRoute() const route = useNativeRoute()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@@ -25,9 +25,9 @@
import NavStack from '~/components/ui/NavStack.vue' import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
import ModrinthIcon from '~/assets/images/utils/modrinth.svg' import ModrinthIcon from '~/assets/images/utils/modrinth.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
definePageMeta({ definePageMeta({
middleware: 'auth', middleware: 'auth',

View File

@@ -9,7 +9,7 @@
import ReportView from '~/components/ui/report/ReportView.vue' import ReportView from '~/components/ui/report/ReportView.vue'
const auth = await useAuth() const auth = await useAuth()
const route = useRoute() const route = useNativeRoute()
useHead({ useHead({
title: `Report ${route.params.id} - Modrinth`, title: `Report ${route.params.id} - Modrinth`,

View File

@@ -103,12 +103,12 @@
<script setup> <script setup>
import Chips from '~/components/ui/Chips.vue' import Chips from '~/components/ui/Chips.vue'
import Avatar from '~/components/ui/Avatar.vue' import Avatar from '~/components/ui/Avatar.vue'
import UnknownIcon from '~/assets/images/utils/unknown.svg' import UnknownIcon from '~/assets/images/utils/unknown.svg?component'
import EyeIcon from '~/assets/images/utils/eye.svg' import EyeIcon from '~/assets/images/utils/eye.svg?component'
import SortAscIcon from '~/assets/images/utils/sort-asc.svg' import SortAscIcon from '~/assets/images/utils/sort-asc.svg?component'
import SortDescIcon from '~/assets/images/utils/sort-desc.svg' import SortDescIcon from '~/assets/images/utils/sort-desc.svg?component'
import WarningIcon from '~/assets/images/utils/issues.svg' import WarningIcon from '~/assets/images/utils/issues.svg?component'
import ModerationIcon from '~/assets/images/sidebar/admin.svg' import ModerationIcon from '~/assets/images/sidebar/admin.svg?component'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import { formatProjectType } from '~/plugins/shorthands.js' import { formatProjectType } from '~/plugins/shorthands.js'

View File

@@ -235,12 +235,12 @@ import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
import NavRow from '~/components/ui/NavRow.vue' import NavRow from '~/components/ui/NavRow.vue'
import ModalCreation from '~/components/ui/ModalCreation.vue' import ModalCreation from '~/components/ui/ModalCreation.vue'
import UpToDate from '~/assets/images/illustrations/up_to_date.svg' import UpToDate from '~/assets/images/illustrations/up_to_date.svg?component'
import ProjectCard from '~/components/ui/ProjectCard.vue' import ProjectCard from '~/components/ui/ProjectCard.vue'
import OrganizationIcon from '~/assets/images/utils/organization.svg' import OrganizationIcon from '~/assets/images/utils/organization.svg?component'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import CrownIcon from '~/assets/images/utils/crown.svg' import CrownIcon from '~/assets/images/utils/crown.svg?component'
import { acceptTeamInvite, removeTeamMember } from '~/helpers/teams.js' import { acceptTeamInvite, removeTeamMember } from '~/helpers/teams.js'
const vintl = useVIntl() const vintl = useVIntl()
@@ -251,7 +251,7 @@ const formatCompactNumber = useCompactNumber()
const auth = await useAuth() const auth = await useAuth()
const user = await useUser() const user = await useUser()
const cosmetics = useCosmetics() const cosmetics = useCosmetics()
const route = useRoute() const route = useNativeRoute()
const tags = useTags() const tags = useTags()
let orgId = useRouteId() let orgId = useRouteId()

View File

@@ -231,7 +231,7 @@ import {
Button, Button,
} from 'omorphia' } from 'omorphia'
import { ref } from 'vue' import { ref } from 'vue'
import CrownIcon from '~/assets/images/utils/crown.svg' import CrownIcon from '~/assets/images/utils/crown.svg?component'
import { removeTeamMember } from '~/helpers/teams.js' import { removeTeamMember } from '~/helpers/teams.js'
import { isPermission } from '~/utils/permissions.ts' import { isPermission } from '~/utils/permissions.ts'

View File

@@ -96,7 +96,7 @@ import { Card, Button, MarkdownEditor, DropdownSelect, SaveIcon } from 'omorphia
import { useImageUpload } from '~/composables/image-upload.ts' import { useImageUpload } from '~/composables/image-upload.ts'
const tags = useTags() const tags = useTags()
const route = useRoute() const route = useNativeRoute()
const accessQuery = (id: string): string => { const accessQuery = (id: string): string => {
return route.query?.[id]?.toString() || '' return route.query?.[id]?.toString() || ''

View File

@@ -351,21 +351,21 @@ import SearchFilter from '~/components/ui/search/SearchFilter.vue'
import Checkbox from '~/components/ui/Checkbox.vue' import Checkbox from '~/components/ui/Checkbox.vue'
import LogoAnimated from '~/components/brand/LogoAnimated.vue' import LogoAnimated from '~/components/brand/LogoAnimated.vue'
import ClientIcon from '~/assets/images/categories/client.svg' import ClientIcon from '~/assets/images/categories/client.svg?component'
import ServerIcon from '~/assets/images/categories/server.svg' import ServerIcon from '~/assets/images/categories/server.svg?component'
import SearchIcon from '~/assets/images/utils/search.svg' import SearchIcon from '~/assets/images/utils/search.svg?component'
import ClearIcon from '~/assets/images/utils/clear.svg' import ClearIcon from '~/assets/images/utils/clear.svg?component'
import FilterIcon from '~/assets/images/utils/filter.svg' import FilterIcon from '~/assets/images/utils/filter.svg?component'
import GridIcon from '~/assets/images/utils/grid.svg' import GridIcon from '~/assets/images/utils/grid.svg?component'
import ListIcon from '~/assets/images/utils/list.svg' import ListIcon from '~/assets/images/utils/list.svg?component'
import ImageIcon from '~/assets/images/utils/image.svg' import ImageIcon from '~/assets/images/utils/image.svg?component'
const sidebarMenuOpen = ref(false) const sidebarMenuOpen = ref(false)
const showAllLoaders = ref(false) const showAllLoaders = ref(false)
const data = useNuxtApp() const data = useNuxtApp()
const route = useRoute() const route = useNativeRoute()
const cosmetics = useCosmetics() const cosmetics = useCosmetics()
const tags = useTags() const tags = useTags()

View File

@@ -84,13 +84,13 @@ import {
} from 'omorphia' } from 'omorphia'
import NavStack from '~/components/ui/NavStack.vue' import NavStack from '~/components/ui/NavStack.vue'
import NavStackItem from '~/components/ui/NavStackItem.vue' import NavStackItem from '~/components/ui/NavStackItem.vue'
import MonitorSmartphoneIcon from '~/assets/images/utils/monitor-smartphone.svg' import MonitorSmartphoneIcon from '~/assets/images/utils/monitor-smartphone.svg?component'
import { commonMessages, commonSettingsMessages } from '~/utils/common-messages.ts' import { commonMessages, commonSettingsMessages } from '~/utils/common-messages.ts'
const { formatMessage } = useVIntl() const { formatMessage } = useVIntl()
const route = useRoute() const route = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
const isStaging = useRuntimeConfig().public.siteUrl !== 'https://modrinth.com' const isStaging = useRuntimeConfig().public.siteUrl !== 'https://modrinth.com'
</script> </script>

View File

@@ -1,8 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import Fuse from 'fuse.js/dist/fuse.basic' import Fuse from 'fuse.js/dist/fuse.basic'
import RadioButtonIcon from '~/assets/images/utils/radio-button.svg' import RadioButtonIcon from '~/assets/images/utils/radio-button.svg?component'
import RadioButtonCheckedIcon from '~/assets/images/utils/radio-button-checked.svg' import RadioButtonCheckedIcon from '~/assets/images/utils/radio-button-checked.svg?component'
import WarningIcon from '~/assets/images/utils/issues.svg' import WarningIcon from '~/assets/images/utils/issues.svg?component'
import { isModifierKeyDown } from '~/helpers/events.ts' import { isModifierKeyDown } from '~/helpers/events.ts'
import { commonSettingsMessages } from '~/utils/common-messages.ts' import { commonSettingsMessages } from '~/utils/common-messages.ts'

View File

@@ -285,18 +285,18 @@ import ProjectCard from '~/components/ui/ProjectCard.vue'
import Badge from '~/components/ui/Badge.vue' import Badge from '~/components/ui/Badge.vue'
import { reportUser } from '~/utils/report-helpers.ts' import { reportUser } from '~/utils/report-helpers.ts'
import ReportIcon from '~/assets/images/utils/report.svg' import ReportIcon from '~/assets/images/utils/report.svg?component'
import SunriseIcon from '~/assets/images/utils/sunrise.svg' import SunriseIcon from '~/assets/images/utils/sunrise.svg?component'
import DownloadIcon from '~/assets/images/utils/download.svg' import DownloadIcon from '~/assets/images/utils/download.svg?component'
import SettingsIcon from '~/assets/images/utils/settings.svg' import SettingsIcon from '~/assets/images/utils/settings.svg?component'
import UpToDate from '~/assets/images/illustrations/up_to_date.svg' import UpToDate from '~/assets/images/illustrations/up_to_date.svg?component'
import UserIcon from '~/assets/images/utils/user.svg' import UserIcon from '~/assets/images/utils/user.svg?component'
import EditIcon from '~/assets/images/utils/edit.svg' import EditIcon from '~/assets/images/utils/edit.svg?component'
import HeartIcon from '~/assets/images/utils/heart.svg' import HeartIcon from '~/assets/images/utils/heart.svg?component'
import GridIcon from '~/assets/images/utils/grid.svg' import GridIcon from '~/assets/images/utils/grid.svg?component'
import ListIcon from '~/assets/images/utils/list.svg' import ListIcon from '~/assets/images/utils/list.svg?component'
import ImageIcon from '~/assets/images/utils/image.svg' import ImageIcon from '~/assets/images/utils/image.svg?component'
import WorldIcon from '~/assets/images/utils/world.svg' import WorldIcon from '~/assets/images/utils/world.svg?component'
import ModalCreation from '~/components/ui/ModalCreation.vue' import ModalCreation from '~/components/ui/ModalCreation.vue'
import NavRow from '~/components/ui/NavRow.vue' import NavRow from '~/components/ui/NavRow.vue'
import CopyCode from '~/components/ui/CopyCode.vue' import CopyCode from '~/components/ui/CopyCode.vue'
@@ -304,7 +304,7 @@ import Avatar from '~/components/ui/Avatar.vue'
import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue' import CollectionCreateModal from '~/components/ui/CollectionCreateModal.vue'
const data = useNuxtApp() const data = useNuxtApp()
const route = useRoute() const route = useNativeRoute()
const auth = await useAuth() const auth = await useAuth()
const cosmetics = useCosmetics() const cosmetics = useCosmetics()
const tags = useTags() const tags = useTags()

View File

@@ -1,10 +1,12 @@
import { getProjectTypeForUrlShorthand } from '~/helpers/projects.js' import { getProjectTypeForUrlShorthand } from '~/helpers/projects.js'
export default defineNuxtPlugin((nuxtApp) => { export default defineNuxtPlugin((nuxtApp) => {
const tagStore = useTags()
nuxtApp.provide('formatNumber', formatNumber) nuxtApp.provide('formatNumber', formatNumber)
nuxtApp.provide('capitalizeString', capitalizeString) nuxtApp.provide('capitalizeString', capitalizeString)
nuxtApp.provide('formatMoney', formatMoney) nuxtApp.provide('formatMoney', formatMoney)
nuxtApp.provide('formatVersion', (versionsArray) => formatVersions(versionsArray)) nuxtApp.provide('formatVersion', (versionsArray) => formatVersions(tagStore, versionsArray))
nuxtApp.provide('orElse', (first, otherwise) => first ?? otherwise) nuxtApp.provide('orElse', (first, otherwise) => first ?? otherwise)
nuxtApp.provide('external', () => { nuxtApp.provide('external', () => {
const cosmeticsStore = useCosmetics().value const cosmeticsStore = useCosmetics().value
@@ -76,8 +78,6 @@ export default defineNuxtPlugin((nuxtApp) => {
.sort((a, b) => nuxtApp.$dayjs(b.date_published) - nuxtApp.$dayjs(a.date_published)) .sort((a, b) => nuxtApp.$dayjs(b.date_published) - nuxtApp.$dayjs(a.date_published))
}) })
nuxtApp.provide('getProjectTypeForDisplay', (type, categories) => { nuxtApp.provide('getProjectTypeForDisplay', (type, categories) => {
const tagStore = useTags()
if (type === 'mod') { if (type === 'mod') {
const isPlugin = categories.some((category) => { const isPlugin = categories.some((category) => {
return tagStore.value.loaderData.allPluginLoaders.includes(category) return tagStore.value.loaderData.allPluginLoaders.includes(category)
@@ -111,8 +111,6 @@ export default defineNuxtPlugin((nuxtApp) => {
) )
nuxtApp.provide('cycleValue', cycleValue) nuxtApp.provide('cycleValue', cycleValue)
nuxtApp.provide('sortedCategories', () => { nuxtApp.provide('sortedCategories', () => {
const tagStore = useTags()
return tagStore.value.categories.slice().sort((a, b) => { return tagStore.value.categories.slice().sort((a, b) => {
const headerCompare = a.header.localeCompare(b.header) const headerCompare = a.header.localeCompare(b.header)
if (headerCompare !== 0) { if (headerCompare !== 0) {
@@ -252,8 +250,7 @@ export const formatProjectStatus = (name) => {
return capitalizeString(name) return capitalizeString(name)
} }
export const formatVersions = (versionArray) => { export const formatVersions = (tag, versionArray) => {
const tag = useTags()
const allVersions = tag.value.gameVersions.slice().reverse() const allVersions = tag.value.gameVersions.slice().reverse()
const allReleases = allVersions.filter((x) => x.version_type === 'release') const allReleases = allVersions.filter((x) => x.version_type === 'release')

10012
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff