Skip to content

Commit 99b937a

Browse files
authored
Added perfectionist plugin for eslint (#39)
1 parent e2a14fb commit 99b937a

File tree

27 files changed

+103
-9
lines changed

27 files changed

+103
-9
lines changed

src/.eslintrc.cjs

+7-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ module.exports = {
2626
// Use recommended Lingui rules
2727
"plugin:lingui/recommended",
2828

29+
// Use recommended perfectionist rules
30+
"plugin:perfectionist/recommended-alphabetical-legacy",
31+
2932
// Turn off rules that might conflict with Prettier
3033
"prettier",
3134
],
@@ -39,8 +42,11 @@ module.exports = {
3942
},
4043

4144
plugins: [
42-
// Support typescript-eslint
45+
// Use @typescript-eslint plugin
4346
"@typescript-eslint",
47+
48+
// Use perfectionist plugin
49+
"perfectionist",
4450
],
4551

4652
// Ignore configuration files in directories above this one

src/package-lock.json.jinja

+67
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/package.json.jinja

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"babel-plugin-macros": "^3.1.0",
3939
"eslint-config-prettier": "^9.1.0",
4040
"eslint-plugin-lingui": "^0.7.0",
41+
"eslint-plugin-perfectionist": "^3.9.1",
4142
"eslint-plugin-react": "^7.37.2",
4243
"npm-check-updates": "^17.1.10",
4344
"postcss": "^8.4.47",

src/postcss.config.mjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ export default {
33
"postcss-preset-mantine": {},
44
"postcss-simple-vars": {
55
variables: {
6-
"mantine-breakpoint-xs": "36em",
7-
"mantine-breakpoint-sm": "48em",
8-
"mantine-breakpoint-md": "62em",
96
"mantine-breakpoint-lg": "75em",
7+
"mantine-breakpoint-md": "62em",
8+
"mantine-breakpoint-sm": "48em",
109
"mantine-breakpoint-xl": "88em",
10+
"mantine-breakpoint-xs": "36em",
1111
},
1212
},
1313
},

src/src/app/layout.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Outlet } from "react-router-dom";
2+
23
import { PageLayout } from "../components/layouts/page-layout";
34
import { I18nProvider } from "../providers/i18n-provider";
45
import { ThemeProvider } from "../providers/theme-provider";

src/src/app/routes.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { RouteObject } from "react-router-dom";
2+
23
import { RootError } from "./error";
34
import { RootLayout } from "./layout";
45
import { RootNotFound } from "./not-found";

src/src/components/layouts/page-layout/main.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Box } from "@mantine/core";
22
import { Notifications } from "@mantine/notifications";
3-
import { PageLayoutInput } from "./types";
43

54
import classes from "./styles.module.css";
5+
import { PageLayoutInput } from "./types";
66

77
export function PageLayout({ children }: PageLayoutInput) {
88
return (

src/src/components/metadata/root/root-error-metadata/main.tsx.jinja

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
3+
34
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
45
import { RootErrorMetadataInput } from "./types";
56

src/src/components/metadata/root/root-not-found-metadata/main.tsx.jinja

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
3+
34
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
45
import { RootNotFoundMetadataInput } from "./types";
56

src/src/components/metadata/root/root-page-metadata/main.tsx.jinja

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
3+
34
import { useDocumentMetadata } from "../../../../hooks/use-document-metadata";
45
import { RootPageMetadataInput } from "./types";
56

src/src/components/views/root/root-error-view/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
33
import { Title } from "@mantine/core";
4+
45
import { RootErrorViewInput } from "./types";
56

67
export function RootErrorView({}: RootErrorViewInput) {

src/src/components/views/root/root-not-found-view/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
33
import { Title } from "@mantine/core";
4+
45
import { RootNotFoundViewInput } from "./types";
56

67
export function RootNotFoundView({}: RootNotFoundViewInput) {

src/src/components/views/root/root-page-view/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
33
import { Button } from "@mantine/core";
44
import { useCallback } from "react";
5+
56
import { useStore } from "../../../../hooks/use-store";
67
import { useToasts } from "../../../../hooks/use-toasts";
78
import { helloWorld } from "../../../../lib/hello-world";

src/src/hooks/use-document-metadata/main.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ export function useDocumentMetadata({
88
title,
99
}: UseDocumentMetadataInput): void {
1010
useElementAttribute({
11-
selector: "meta[name='description']",
1211
attribute: "content",
12+
selector: "meta[name='description']",
1313
value: description,
1414
});
1515

1616
useElementAttribute({
17-
selector: "html",
1817
attribute: "lang",
18+
selector: "html",
1919
value: language,
2020
});
2121

src/src/hooks/use-element-attribute/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useEffect } from "react";
2+
23
import { UseElementAttributeInput } from "./types";
34

45
export function useElementAttribute({

src/src/hooks/use-element-text/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useEffect } from "react";
2+
23
import { UseElementTextInput } from "./types";
34

45
export function useElementText({ selector, text }: UseElementTextInput): void {

src/src/hooks/use-language/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useMemo, useSyncExternalStore } from "react";
2+
23
import { UseLanguageInput, UseLanguageOutput } from "./types";
34
import {
45
getCurrentLanguage,

src/src/hooks/use-store/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useEffect, useMemo, useState } from "react";
2+
23
import { store } from "../../store";
34
import { UseStoreInput, UseStoreOutput } from "./types";
45

src/src/hooks/use-toasts/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { msg } from "@lingui/macro";
22
import { useLingui } from "@lingui/react";
33
import { showNotification } from "@mantine/notifications";
44
import { useCallback, useMemo } from "react";
5+
56
import { colors, icons } from "./constants";
67
import { Toast, UseToastsInput, UseToastsOutput } from "./types";
78

src/src/lib/load-locale/utils.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { I18n, Messages } from "@lingui/core";
2+
23
import { defaultLocale } from "../../constants";
34

45
export function getLocale(language: string) {

src/src/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { StrictMode } from "react";
22
import { createRoot } from "react-dom/client";
3+
34
import { Router } from "./router";
45

56
createRoot(document.getElementById("root")!).render(

src/src/providers/i18n-provider/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { i18n } from "@lingui/core";
22
import { I18nProvider as InternalI18nProvider } from "@lingui/react";
33
import { useEffect, useState } from "react";
4+
45
import { defaultLocale } from "../../constants";
56
import { useDocumentMetadata } from "../../hooks/use-document-metadata";
67
import { useLanguage } from "../../hooks/use-language";

src/src/providers/theme-provider/main.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { MantineProvider } from "@mantine/core";
2+
23
import { defaultColorScheme } from "../../constants";
34
import { colorSchemeManager } from "./scheme";
45
import { theme } from "./theme";

src/src/providers/theme-provider/scheme.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { localStorageColorSchemeManager } from "@mantine/core";
2+
23
import { colorSchemeStorageKey } from "../../constants";
34

45
export const colorSchemeManager = localStorageColorSchemeManager({

src/src/router/main.tsx.jinja

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { {{ 'createBrowserRouter' if pages else 'createHashRouter' }}, RouterProvider } from "react-router-dom";
2+
23
import { routes } from "../app/routes";
34
import { options } from "./options";
45
import { RouterInput } from "./types";

src/src/store/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { create } from "zustand";
22
import { persist } from "zustand/middleware";
33
import { immer } from "zustand/middleware/immer";
4+
45
import { stateStorageKey } from "../constants";
56
import { Store, StoreInitializer, StorePersistOptions } from "./types";
67

src/src/store/types.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { StateCreator } from "zustand";
22
import { PersistOptions } from "zustand/middleware";
33

44
type StoreState = {
5-
color: "red" | "green";
5+
color: "green" | "red";
66
};
77

88
type StoreActions = {
99
flipColor: () => void;
1010
};
1111

12-
export type Store = StoreState & StoreActions;
12+
export type Store = StoreActions & StoreState;
1313

1414
export type StoreInitializer = StateCreator<Store, [["zustand/immer", never]]>;
1515

0 commit comments

Comments
 (0)