Skip to content

Commit

Permalink
tools : update ESLint configuration file & verbatimModuleSyntax: true
Browse files Browse the repository at this point in the history
  • Loading branch information
Juknum committed Aug 7, 2024
1 parent ef68b50 commit 28fc956
Show file tree
Hide file tree
Showing 65 changed files with 312 additions and 166 deletions.
35 changes: 26 additions & 9 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,45 @@
"extends": "next/core-web-vitals",
"plugins": ["unused-imports"],
"rules": {
"indent": ["error", "tab", { "SwitchCase": 1 }],
"quotes": ["error", "single"],
"semi": ["error", "always"],
"comma-dangle": ["error", "always-multiline"],
"unused-imports/no-unused-imports": "error",
"object-curly-spacing": ["warn", "always"],
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],
"import/order": [
"error",
{
"newlines-between": "always",
"groups": ["type", "builtin", "external", "internal", ["parent","sibling", "index"]],
"groups": ["builtin", "external", "internal", ["parent","sibling", "index"], "type"],
"pathGroups": [
{
"pattern": "~/**",
"group": "internal"
"pattern": "react",
"group": "builtin",
"position": "after"
},
{
"pattern": "react-icons/**",
"group": "builtin",
"position": "after"
},
{
"pattern": "next/**",
"group": "builtin",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"],
"pathGroupsExcludedImportTypes": [
"react", "react-icons/**", "next/**"
],
"alphabetize": {
"order": "asc",
"caseInsensitive": false
}
}
]
],
"indent": ["error", "tab", { "SwitchCase": 1 }],
"no-multi-spaces": ["error", { "ignoreEOLComments": true }],
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1 }],
"quotes": ["error", "single"],
"semi": ["error", "always"],
"unused-imports/no-unused-imports": "error"
}
}
3 changes: 2 additions & 1 deletion next-auth.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { UserRole } from '@prisma/client';
import NextAuth, { type DefaultSession } from 'next-auth';

import type { DefaultSession } from 'next-auth';

export type ExtendedUser = DefaultSession['user'] & {
role: UserRole;
Expand Down
3 changes: 2 additions & 1 deletion src/app/(pages)/(protected)/contribute/about/page.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
'use client';

import { Button, Badge, Text, Checkbox } from '@mantine/core';
import { useEffect, useState } from 'react';

import { Button, Badge, Text, Checkbox } from '@mantine/core';

import { Tile } from '~/components/tile';
import { useDeviceSize } from '~/hooks/use-device-size';
import { useEffectOnce } from '~/hooks/use-effect-once';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { Avatar, Group, MultiSelect, type MultiSelectProps, Text } from '@mantine/core';
import { useState } from 'react';

import type { useCurrentUser } from '~/hooks/use-current-user';
import { Avatar, Group, MultiSelect, Text } from '@mantine/core';

import { useEffectOnce } from '~/hooks/use-effect-once';
import { notify } from '~/lib/utils';
import { getPublicUsers } from '~/server/data/user';
import { PublicUser } from '~/types';

import type { MultiSelectProps } from '@mantine/core';
import type { useCurrentUser } from '~/hooks/use-current-user';
import type { PublicUser } from '~/types';

/**
* Select co-authors for a contribution.
Expand All @@ -16,9 +19,9 @@ export interface CoAuthorsSelectorProps extends MultiSelectProps {
onCoAuthorsSelect: (coAuthors: PublicUser[]) => void;
}

export function CoAuthorsSelector({ author, onCoAuthorsSelect, ...props}: CoAuthorsSelectorProps) {
export function CoAuthorsSelector({ author, onCoAuthorsSelect, ...props }: CoAuthorsSelectorProps) {
const [users, setUsers] = useState<PublicUser[]>([]);

useEffectOnce(() => {
getPublicUsers()
.then(setUsers)
Expand All @@ -27,7 +30,7 @@ export function CoAuthorsSelector({ author, onCoAuthorsSelect, ...props}: CoAuth
notify('Error', 'Failed to fetch users', 'red');
});
});

const renderMultiSelectOption: MultiSelectProps['renderOption'] = ({ option }) => {
const user = users.find((u) => u.id === option.value)!;

Expand All @@ -41,9 +44,9 @@ export function CoAuthorsSelector({ author, onCoAuthorsSelect, ...props}: CoAuth
</Group>
);
};

return (
<MultiSelect
<MultiSelect
limit={10}
label="Co-authors"
placeholder="Select or search co-authors..."
Expand All @@ -57,4 +60,4 @@ export function CoAuthorsSelector({ author, onCoAuthorsSelect, ...props}: CoAuth
{...props}
/>
);
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import { Button, Code, CSSProperties, Group, Stack, Text } from '@mantine/core';
import { Status } from '@prisma/client';

import { useState } from 'react';

import { LuArrowUpDown } from 'react-icons/lu';
import { RxCross2 } from 'react-icons/rx';

import { Button, Code, Group, Stack, Text } from '@mantine/core';
import { Status } from '@prisma/client';

import { TextureImage } from '~/components/texture-img';
import { useCurrentUser } from '~/hooks/use-current-user';
import { useDeviceSize } from '~/hooks/use-device-size';
import { useEffectOnce } from '~/hooks/use-effect-once';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { removeCoAuthor } from '~/server/data/contributions';
import { getPollResult } from '~/server/data/polls';

import type { CSSProperties } from '@mantine/core';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll, PollResults } from '~/types';

export interface ContributionPanelItemProps {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { startTransition, useMemo, useState } from 'react';

import { Button, Divider, Group, Stack, Text } from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
import { ContributionDeactivation, Status, Texture } from '@prisma/client';
import { startTransition, useMemo, useState } from 'react';
import { Status } from '@prisma/client';

import { Modal } from '~/components/modal';
import { useCurrentUser } from '~/hooks/use-current-user';
Expand All @@ -11,11 +12,13 @@ import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { gradient, notify, sortByName } from '~/lib/utils';
import { submitContributions } from '~/server/data/contributions';
import { getTextures } from '~/server/data/texture';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll } from '~/types';

import { ContributionPanelItem } from './contribution-item';
import { ContributionModal } from './drafts-modal';

import type { ContributionDeactivation, Texture } from '@prisma/client';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll } from '~/types';

export interface ContributionPanelProps {
drafts: ContributionWithCoAuthors[];
submitted: ContributionWithCoAuthorsAndPoll[];
Expand Down
14 changes: 10 additions & 4 deletions src/app/(pages)/(protected)/contribute/submit/drafts-modal.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { Button, Container, Divider, Group, JsonInput, MultiSelectProps, Select, Stack, Text, Title } from '@mantine/core';
import { ContributionDeactivation, Resolution, type Texture } from '@prisma/client';
import { useMemo, useRef, useState, useTransition } from 'react';

import { FaChevronLeft, FaChevronRight } from 'react-icons/fa';
import { PiMagicWandBold } from 'react-icons/pi';

import { Button, Container, Divider, Group, JsonInput, Select, Stack, Text, Title } from '@mantine/core';
import { Resolution } from '@prisma/client';

import { TextureImage } from '~/components/texture-img';
import { Tile } from '~/components/tile';
import { useCurrentUser } from '~/hooks/use-current-user';
Expand All @@ -12,10 +14,14 @@ import { useEffectOnce } from '~/hooks/use-effect-once';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { gradient, gradientDanger } from '~/lib/utils';
import { getContributionsOfTexture, updateDraftContribution } from '~/server/data/contributions';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll, PublicUser } from '~/types';

import { CoAuthorsSelector } from './co-authors-select';

import type { MultiSelectProps } from '@mantine/core';
import type { ContributionDeactivation } from '@prisma/client';
import type { Texture } from '@prisma/client';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll, PublicUser } from '~/types';

export interface ContributionModalProps {
contribution: ContributionWithCoAuthors;
textures: (Texture & { disabledContributions: ContributionDeactivation[] })[];
Expand Down Expand Up @@ -225,7 +231,7 @@ export function ContributionModal({ contribution, textures, onClose }: Contribut
{!selectedTexture && <Container className="texture-background" pt="100%" pl="calc(100% - var(--mantine-spacing-md))" />}
<JsonInput
label={windowWidth <= BREAKPOINT_MOBILE_LARGE ? 'Default MCMETA' : <Title order={6} ta="center">MCMETA</Title>}
labelProps={{ style: { width: '100%' }}}
labelProps={{ style: { width: '100%' } }}
validationError="Invalid JSON"
formatOnBlur
autosize
Expand Down
6 changes: 4 additions & 2 deletions src/app/(pages)/(protected)/contribute/submit/page.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
'use client';

import { useEffect, useState, useTransition } from 'react';

import { Accordion, Badge, Code, Group, Select, Stack, Text } from '@mantine/core';
import { Dropzone } from '@mantine/dropzone';
import { Resolution, Status } from '@prisma/client';
import { useEffect, useState, useTransition } from 'react';

import { Tile } from '~/components/tile';
import { useCurrentUser } from '~/hooks/use-current-user';
Expand All @@ -12,12 +13,13 @@ import { useEffectOnce } from '~/hooks/use-effect-once';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { gradient, gradientDanger, gradientWarning, notify } from '~/lib/utils';
import { createRawContributions, getCoSubmittedContributions, getDraftContributions, getSubmittedContributions } from '~/server/data/contributions';
import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll, PublicUser } from '~/types';

import { CoAuthorsSelector } from './co-authors-select';
import { ContributionPanelItem } from './contribution-item';
import { ContributionPanel } from './contribution-panel';

import type { ContributionWithCoAuthors, ContributionWithCoAuthorsAndPoll, PublicUser } from '~/types';

const SubmitPage = () => {
const [isPending, startTransition] = useTransition();
const [windowWidth] = useDeviceSize();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import { Badge, Group, Image, Stack, Text } from '@mantine/core';
import { Texture } from '@prisma/client';

import { useTransition } from 'react';

import { LuArrowDown, LuArrowUp, LuArrowUpDown } from 'react-icons/lu';

import { Badge, Group, Image, Stack, Text } from '@mantine/core';

import { Tile } from '~/components/tile';
import { useCurrentUser } from '~/hooks/use-current-user';
import { useDeviceSize } from '~/hooks/use-device-size';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { checkContributionStatus } from '~/server/data/contributions';
import { editPollChoice } from '~/server/data/polls';
import type { PublicUser, ContributionWithCoAuthorsAndFullPoll } from '~/types';

import type { Texture } from '@prisma/client';
import type { PublicUser, ContributionWithCoAuthorsAndFullPoll } from '~/types';

export interface CouncilContributionItemProps {
counselors: PublicUser[];
Expand Down
8 changes: 5 additions & 3 deletions src/app/(pages)/(protected)/council/contributions/page.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
'use client';

import { Accordion, Badge, Stack, Text } from '@mantine/core';
import { Texture } from '@prisma/client';
import { useState } from 'react';

import { Accordion, Badge, Stack, Text } from '@mantine/core';

import { Tile } from '~/components/tile';
import { useCurrentUser } from '~/hooks/use-current-user';
import { useEffectOnce } from '~/hooks/use-effect-once';
import { getPendingContributions } from '~/server/data/contributions';
import { getTextures } from '~/server/data/texture';
import { getCounselors } from '~/server/data/user';
import { ContributionWithCoAuthorsAndFullPoll, PublicUser } from '~/types';

import { CouncilContributionItem } from './contribution-item';

import type { Texture } from '@prisma/client';
import type { ContributionWithCoAuthorsAndFullPoll, PublicUser } from '~/types';

const CouncilContributionsPanel = () => {
const [textures, setTextures] = useState<Texture[]>([]);
const [counselors, setCounselors] = useState<PublicUser[]>([]);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import type { Modpack } from '@prisma/client';

import { Group, FileInput, TextInput, Badge, Stack, Text, FileInputProps } from '@mantine/core';
import { UseFormReturnType } from '@mantine/form';
import { Group, FileInput, TextInput, Badge, Stack, Text } from '@mantine/core';

import { TextureImage } from '~/components/texture-img';
import { useDeviceSize } from '~/hooks/use-device-size';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';

import { ModpackModalFormValues } from './modpack-modal';
import type { ModpackModalFormValues } from './modpack-modal';
import type { FileInputProps } from '@mantine/core';
import type { UseFormReturnType } from '@mantine/form';
import type { Modpack } from '@prisma/client';

export function ModpackModalGeneral({ previewImg, modpack, form }: { form: UseFormReturnType<ModpackModalFormValues>, previewImg: string, modpack: Modpack | undefined }) {
const [windowWidth] = useDeviceSize();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@

import { useState, useTransition } from 'react';

import { Group, Button, Tabs } from '@mantine/core';
import { useForm } from '@mantine/form';
import { Modpack } from '@prisma/client';
import { useState, useTransition } from 'react';

import { useDeviceSize } from '~/hooks/use-device-size';
import { useEffectOnce } from '~/hooks/use-effect-once';
Expand All @@ -12,6 +13,8 @@ import { createModpack, deleteModpack, updateModpack, updateModpackPicture } fro
import { ModpackModalGeneral } from './modpack-general';
import { ModpackVersions } from './modpack-versions/modpack-version';

import type { Modpack } from '@prisma/client';

export interface ModpackModalFormValues {
id: string;
name: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
'use client';

import { useEffect, useState, useTransition } from 'react';

import { Button, Code, Group, Progress, Stack, Text, TextInput } from '@mantine/core';
import { Dropzone } from '@mantine/dropzone';
import { useForm } from '@mantine/form';
import { Mod, ModVersion, Modpack } from '@prisma/client';
import { useEffect, useState, useTransition } from 'react';

import { TextureImage } from '~/components/texture-img';
import { useCurrentUser } from '~/hooks/use-current-user';
Expand All @@ -15,6 +15,8 @@ import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { gradient, gradientDanger, sortByName } from '~/lib/utils';
import { createModpackVersion, deleteModpackVersion, updateModpackVersion, addModsToModpackVersion, removeModFromModpackVersion } from '~/server/data/modpacks-version';
import { getModsFromIds } from '~/server/data/mods';

import type { Mod, ModVersion, Modpack } from '@prisma/client';
import type { ModpackVersionWithMods, SocketModUpload } from '~/types';

export function ModpackVersionModal({ modpack, modpackVersion, onClose }: { modpack: Modpack, modpackVersion?: ModpackVersionWithMods, onClose: () => void }) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
'use client';

import type { Modpack } from '@prisma/client';
import { useState } from 'react';

import { Button, Group, Table, Text } from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
import { useState } from 'react';

import { Modal } from '~/components/modal';
import { useDeviceSize } from '~/hooks/use-device-size';
import { useEffectOnce } from '~/hooks/use-effect-once';
import { BREAKPOINT_MOBILE_LARGE } from '~/lib/constants';
import { gradient, notify } from '~/lib/utils';
import { getModpackVersions } from '~/server/data/modpacks-version';
import type { ModpackVersionWithMods } from '~/types';

import { ModpackVersionModal } from './modpack-version-modal';

import type { Modpack } from '@prisma/client';
import type { ModpackVersionWithMods } from '~/types';

export function ModpackVersions({ modpack }: { modpack: Modpack }) {
const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false);
const [modalModpackVersion, setModalModpackVersion] = useState<ModpackVersionWithMods | undefined>();
Expand Down
Loading

0 comments on commit 28fc956

Please sign in to comment.