Monorepo missing features (#1273)

* fix tauri config

* fix package patch

* regen pnpm lock

* use new workflow

* New GH actions

* Update lockfile

* update scripts

* Fix build script

* Fix missing deps

* Fix assets eslint

* Update libraries lint

* Fix all lint configs

* update lockfile

* add fmt + clippy fails

* Separate App Tauri portion

* fix app features

* Fix lints

* install tauri cli

* update lockfile

* corepack, fix lints

* add store path

* fix unused import

* Fix tests

* Issue templates + port over tauri release

* fix actions

* fix before build command

* Add X86 target

* Update build matrix

* finalize actions

* make debug build smaller

* Use debug build to make cache smaller

* dummy commit

* change proj name

* update file name

* Use release builds for less space use

* Remove rust cache

* Readd for app build

* add merge queue trigger
This commit is contained in:
Geometrically
2024-07-09 15:17:38 -07:00
committed by GitHub
parent dab284f339
commit d1bc65c266
265 changed files with 1810 additions and 1871 deletions

View File

@@ -1,3 +0,0 @@
BASE_URL=https://api.modrinth.com/v2/
BROWSER_BASE_URL=https://api.modrinth.com/v2/
PYRO_BASE_URL=https://39d5-144-172-172-236.ngrok-free.app/

View File

@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: ["custom/nuxt"],
};

View File

@@ -1,18 +0,0 @@
{
"extends": ["@nuxt/eslint-config", "plugin:prettier/recommended", "prettier"],
"env": {
"browser": true,
"node": true
},
"ignorePatterns": [".nuxt/**", ".output/**", "node_modules"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx", "*.vue"],
"rules": {
"no-console": "off",
"vue/no-v-html": "off",
"vue/multi-word-component-names": "off"
}
}
]
}

View File

@@ -1,3 +1,4 @@
**/.nuxt
**/dist
**/node_modules
**/.output
src/generated/**

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-extra-semi */
import { promises as fs } from "fs";
import { pathToFileURL } from "node:url";
import svgLoader from "vite-svg-loader";
@@ -374,9 +373,6 @@ export default defineNuxtConfig({
},
nitro: {
moduleSideEffects: ["@vintl/compact-number/locale-data"],
output: {
dir: "../../dist/apps/knossos/.output",
},
},
devtools: {
enabled: true,

View File

@@ -8,40 +8,26 @@
"generate": "nuxi generate",
"preview": "nuxi preview",
"postinstall": "nuxi prepare",
"lint:js": "eslint ./src --ext .js,.vue,.ts",
"lint": "npm run lint:js && prettier --check .",
"lint": "eslint . && prettier --check .",
"fix": "eslint . --fix && prettier --write .",
"intl:extract": "formatjs extract \"{,components,composables,layouts,middleware,modules,pages,plugins,utils}/**/*.{vue,ts,tsx,js,jsx,mts,cts,mjs,cjs}\" --ignore '**/*.d.ts' --ignore 'node_modules' --out-file locales/en-US/index.json --format crowdin --preserve-whitespace"
},
"devDependencies": {
"@formatjs/cli": "^6.1.2",
"eslint": "^8.57.0",
"@nuxt/devtools": "^1.3.3",
"@nuxt/eslint-config": "^0.3.13",
"@nuxtjs/eslint-config-typescript": "^12.1.0",
"@nuxtjs/turnstile": "^0.8.0",
"@types/node": "^20.1.0",
"@typescript-eslint/eslint-plugin": "^7.15.0",
"@typescript-eslint/parser": "^7.15.0",
"@vintl/compact-number": "^2.0.5",
"@vintl/how-ago": "^3.0.1",
"@vintl/nuxt": "^1.8.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.41.0",
"eslint-config-custom": "workspace:*",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.5.5",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.27.0",
"glob": "^10.2.7",
"nuxt": "^3.12.3",
"postcss": "^8.4.39",
"prettier": "^3.3.2",
"prettier-plugin-tailwindcss": "^0.6.5",
"sass": "^1.58.0",
"tailwindcss": "^3.4.4",
"typescript": "^5.4.5",
"vite-plugin-eslint": "^1.8.1",
"vite-svg-loader": "^5.1.0",
"vue-tsc": "^2.0.24"
},
@@ -66,10 +52,5 @@
"vue-multiselect": "3.0.0-alpha.2",
"vue3-apexcharts": "^1.5.2",
"xss": "^1.0.14"
},
"pnpm": {
"patchedDependencies": {
"readable-stream@2.3.8": "patches/readable-stream@2.3.8.patch"
}
}
}

View File

@@ -1,5 +1,5 @@
<template>
<span :class="'badge flex items-center gap-2 ' + color + ' type--' + type">
<span :class="'badge flex items-center gap-1 ' + color + ' type--' + type">
<template v-if="color"> <span class="circle" /> {{ $capitalizeString(type) }}</template>
<!-- User roles -->

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useAuth = async (oldToken = null) => {
const auth = useState("auth", () => ({
user: null,

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
export const scopeMessages = defineMessages({
userReadEmailLabel: {
id: "scopes.userReadEmail.label",

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useCosmetics = () =>
useState("cosmetics", () => {
const cosmetics = useCookie("cosmetics", {

View File

@@ -1,8 +1,7 @@
/* eslint-disable no-undef */
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
dayjs.extend(relativeTime);
dayjs.extend(relativeTime); // eslint-disable-line import/no-named-as-default-member
export const useCurrentDate = () => useState("currentDate", () => Date.now());

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useBaseFetch = async (url, options = {}, skipAuth = false) => {
const config = useRuntimeConfig();
let base = process.server ? config.apiBaseUrl : config.public.apiBaseUrl;

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useLoading = () => useState("loading", () => false);
export const startLoading = () => {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useNotifications = () => useState("notifications", () => []);
export const addNotification = (notification) => {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
/**
* Extracts the [id] from the route params and returns it as a ref.
*

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
import tags from "~/generated/state.json";
export const useTags = () =>

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useTheme = () =>
useState("theme", () => {
const colorMode = useCookie("color-mode", {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const useUser = async (force = false) => {
const user = useState("user", () => {});

View File

@@ -97,7 +97,7 @@ export const inferVersionInfo = async function (rawFile, project, gameVersions)
const inferFunctions = {
// Forge 1.13+ and NeoForge
"META-INF/mods.toml": async (file, zip) => {
const metadata = TOML.parse(file, { joiner: "\n" });
const metadata = TOML.parse(file, { joiner: "\n" }); // eslint-disable-line import/no-named-as-default-member
if (metadata.mods && metadata.mods.length > 0) {
let versionNum = metadata.mods[0].version;

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
import { useNuxtApp } from "#imports";
async function getBulk(type, ids, apiVersion = 2) {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
import JSZip from "jszip";
import TOML from "@ltd/j-toml";
@@ -132,7 +131,7 @@ export const createDataPackVersion = async function (
primaryZipReader.file("quilt.mod.json", JSON.stringify(quiltModJson));
}
if (loaders.includes("forge")) {
primaryZipReader.file("META-INF/mods.toml", TOML.stringify(forgeModsToml, { newline: "\n" }));
primaryZipReader.file("META-INF/mods.toml", TOML.stringify(forgeModsToml, { newline: "\n" })); // eslint-disable-line import/no-named-as-default-member
}
if (!newForge && loaders.includes("forge")) {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const getProjectTypeForUrl = (type, categories) => {
return getProjectTypeForUrlShorthand(type, categories);
};

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export const acceptTeamInvite = async (teamId) => {
await useBaseFetch(`team/${teamId}/join`, {
apiVersion: 3,

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
const whitelistedParams = ["flow", "error"];
export default defineNuxtRouteMiddleware(async (_to, from) => {

View File

@@ -94,10 +94,9 @@
</div>
</template>
<script setup>
import { DropdownSelect } from "@modrinth/ui";
import { XIcon, PayPalIcon, UnknownIcon } from "@modrinth/assets";
import { capitalizeString } from "@modrinth/utils";
import { Badge, Breadcrumbs } from "@modrinth/ui";
import { Badge, Breadcrumbs, DropdownSelect } from "@modrinth/ui";
import dayjs from "dayjs";
import TremendousIcon from "~/assets/images/external/tremendous.svg?component";
import VenmoIcon from "~/assets/images/external/venmo-small.svg?component";

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export default defineNuxtPlugin(async (nuxtApp) => {
await useAuth();
await useUser();

View File

@@ -1,6 +1,5 @@
import dayjs from "dayjs";
// eslint-disable-next-line no-undef
export default defineNuxtPlugin(() => {
return {
provide: {

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
export default defineNuxtPlugin(() => {
const nuxtApp = useNuxtApp();

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-undef */
import { getProjectTypeForUrlShorthand } from "~/helpers/projects.js";
export default defineNuxtPlugin((nuxtApp) => {

View File

@@ -1,7 +1,6 @@
import FloatingVue from "floating-vue";
import "floating-vue/dist/style.css";
// eslint-disable-next-line no-undef
export default defineNuxtPlugin(({ vueApp }) => {
vueApp.use(FloatingVue);
});

View File

@@ -1,8 +1,6 @@
// eslint-disable-next-line no-undef
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook("render:html", (html, { event }) => {
try {
// eslint-disable-next-line no-undef
const cookies = parseCookies(event);
if (cookies && cookies["color-mode"]) {
@@ -24,15 +22,12 @@ export default defineNitroPlugin((nitroApp) => {
};
if (cookies["auth-token"]) {
// eslint-disable-next-line no-undef
setCookie(event, "auth-token", cookies["auth-token"], opts);
}
if (cookies["color-mode"]) {
// eslint-disable-next-line no-undef
setCookie(event, "color-mode", cookies["color-mode"], opts);
}
if (cookies.cosmetics) {
// eslint-disable-next-line no-undef
setCookie(event, "cosmetics", cookies.cosmetics, opts);
}
}

View File

@@ -5,11 +5,10 @@ import { ref, watch, computed } from "vue";
// note: build step can miss unix import for some reason, so
// we have to import it like this
const { unix } = dayjs;
const { unix } = dayjs; // eslint-disable-line import/no-named-as-default-member
export function useCountryNames(style = "long") {
const formattingOptions = { type: "region", style };
// eslint-disable-next-line no-undef
const { formats } = useVIntl();
return function formatCountryName(code) {
return formats.displayName(code, formattingOptions);
@@ -220,7 +219,6 @@ export const processAnalytics = (category, projects, labelFn, sortFn, mapFn, cha
},
],
colors: projectData.map((_, i) => {
// eslint-disable-next-line no-undef
const theme = useTheme();
const project = chartData[i];
@@ -279,7 +277,6 @@ export const processAnalyticsByCountry = (category, projects, sortFn) => {
};
};
// eslint-disable-next-line no-unused-vars
const sortCount = ([_a, a], [_b, b]) => b - a;
const sortTimestamp = ([a], [b]) => a - b;
const roundValue = ([ts, value]) => [ts, Math.round(parseFloat(value) * 100) / 100];
@@ -296,7 +293,6 @@ const useFetchAnalytics = (
apiVersion: 3,
},
) => {
// eslint-disable-next-line no-undef
return useBaseFetch(url, baseOptions);
};