Use eslint-plugin-import to bring some order to the mess #132

Merged
a3thakra merged 4 commits from adi-eslint-import into main 2021-08-13 04:16:39 -04:00
34 changed files with 1328 additions and 87 deletions

View File

@ -9,6 +9,9 @@ module.exports = {
"eslint:recommended", "eslint:recommended",
"plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:react/recommended", "plugin:react/recommended",
"plugin:prettier/recommended", "plugin:prettier/recommended",
], ],
@ -16,12 +19,37 @@ module.exports = {
rules: { rules: {
"prettier/prettier": "error", "prettier/prettier": "error",
"import/first": "error",
"import/order": [
"error",
{
"newlines-between": "always",
"alphabetize": {
"order": "asc",
"caseInsensitive": true,
},
"pathGroups": [
{
"pattern": "@/**",
"group": "external",
"position": "after",
},
{
"pattern": "./*.css",
"group": "index",
"position": "after",
}
],
},
],
"react/prop-types": "off", "react/prop-types": "off",
"react-hooks/rules-of-hooks": "error", "react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "error", "react-hooks/exhaustive-deps": "error",
// Turn off these rules // Turn off these rules
"@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/explicit-module-boundary-types": "off",
"import/no-unresolved": "off",
}, },
settings: { settings: {
react: { react: {

View File

@ -1,5 +1,7 @@
import React from "react"; import React from "react";
import { DefaultLayout } from "./DefaultLayout"; import { DefaultLayout } from "./DefaultLayout";
import styles from "./Bubble.module.css"; import styles from "./Bubble.module.css";
export default function Bubble(props: { children: React.ReactNode }) { export default function Bubble(props: { children: React.ReactNode }) {

View File

@ -1,4 +1,5 @@
import React, { AnchorHTMLAttributes, ButtonHTMLAttributes } from "react"; import React, { AnchorHTMLAttributes, ButtonHTMLAttributes } from "react";
import styles from "./Button.module.css"; import styles from "./Button.module.css";
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {

View File

@ -1,7 +1,9 @@
import React from "react"; import React from "react";
import styles from "./ConnectWithUs.module.css";
import { SocialLinks } from "./SocialLinks";
import { Link } from "./Link"; import { Link } from "./Link";
import { SocialLinks } from "./SocialLinks";
import styles from "./ConnectWithUs.module.css";
export function ConnectWithUs() { export function ConnectWithUs() {
return ( return (

View File

@ -1,4 +1,5 @@
import React from "react"; import React from "react";
import styles from "./DefaultLayout.module.css"; import styles from "./DefaultLayout.module.css";
export function DefaultLayout(props: { children: React.ReactNode }) { export function DefaultLayout(props: { children: React.ReactNode }) {

View File

@ -1,8 +1,10 @@
import React from "react"; import React from "react";
import styles from "./EmailSignup.module.css";
import { Button } from "./Button"; import { Button } from "./Button";
import { Input } from "./Input"; import { Input } from "./Input";
import styles from "./EmailSignup.module.css";
export function EmailSignup() { export function EmailSignup() {
return ( return (
<section className={styles.container}> <section className={styles.container}>

View File

@ -1,10 +1,11 @@
import React, { ReactNode } from "react"; import React, { ReactNode } from "react";
import { Button } from "./Button";
import styles from "./EventCard.module.css";
import { Button } from "./Button";
import { EventSetting } from "./EventSetting"; import { EventSetting } from "./EventSetting";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./EventCard.module.css";
interface EventCardProps { interface EventCardProps {
name: string; name: string;
short: string; short: string;

View File

@ -1,10 +1,12 @@
import React from "react"; import React from "react";
import { Button } from "./Button"; import { Button } from "./Button";
import { Image } from "./Image";
import { EventSetting } from "./EventSetting"; import { EventSetting } from "./EventSetting";
import styles from "./EventDescriptionCard.module.css"; import { Image } from "./Image";
import { Discord, Twitch, Instagram, Facebook } from "./SocialLinks"; import { Discord, Twitch, Instagram, Facebook } from "./SocialLinks";
import styles from "./EventDescriptionCard.module.css";
interface Props { interface Props {
name: string; name: string;
short: string; short: string;

View File

@ -1,4 +1,5 @@
import React from "react"; import React from "react";
import styles from "./EventSetting.module.css"; import styles from "./EventSetting.module.css";
interface Props { interface Props {

View File

@ -1,7 +1,9 @@
import React from "react"; import React from "react";
import styles from "./Footer.module.css";
import { SocialLinks } from "./SocialLinks"; import { SocialLinks } from "./SocialLinks";
import styles from "./Footer.module.css";
export function Footer() { export function Footer() {
return ( return (
<footer className={styles.footer}> <footer className={styles.footer}>

View File

@ -1,4 +1,5 @@
import React, { InputHTMLAttributes } from "react"; import React, { InputHTMLAttributes } from "react";
import styles from "./Input.module.css"; import styles from "./Input.module.css";
export function Input(props: InputHTMLAttributes<HTMLInputElement>) { export function Input(props: InputHTMLAttributes<HTMLInputElement>) {

View File

@ -1,7 +1,7 @@
import NextLink, { LinkProps as NextLinkProps } from "next/link";
import React from "react"; import React from "react";
import styles from "./Link.module.css"; import styles from "./Link.module.css";
import NextLink from "next/link";
import { LinkProps as NextLinkProps } from "next/link";
type Props = Omit<NextLinkProps, "href"> & { href: string }; type Props = Omit<NextLinkProps, "href"> & { href: string };

View File

@ -1,5 +1,7 @@
import React, { ReactNode } from "react"; import React, { ReactNode } from "react";
import { EventSetting } from "./EventSetting"; import { EventSetting } from "./EventSetting";
import styles from "./MiniEventCard.module.css"; import styles from "./MiniEventCard.module.css";
interface Props { interface Props {

View File

@ -1,6 +1,7 @@
import { DEFAULT_MIN_VERSION } from "node:tls";
import React from "react"; import React from "react";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./MiniTechTalkCard.module.css"; import styles from "./MiniTechTalkCard.module.css";
interface MiniTechTalkProps { interface MiniTechTalkProps {

View File

@ -1,7 +1,9 @@
import React, { useReducer } from "react";
import Link from "next/link"; import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import React, { useReducer } from "react";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./Navbar.module.css"; import styles from "./Navbar.module.css";
type Menu = { type Menu = {

View File

@ -1,4 +1,5 @@
import React, { ReactNode } from "react"; import React, { ReactNode } from "react";
import styles from "./NewsCard.module.css"; import styles from "./NewsCard.module.css";
interface NewsCardProps { interface NewsCardProps {

View File

@ -1,4 +1,5 @@
import React, { ReactNode, ComponentType } from "react"; import React, { ReactNode, ComponentType } from "react";
import styles from "./OrganizedContent.module.css"; import styles from "./OrganizedContent.module.css";
export interface LinkProps { export interface LinkProps {

View File

@ -1,4 +1,5 @@
import React from "react"; import React from "react";
import styles from "./SocialLinks.module.css"; import styles from "./SocialLinks.module.css";
interface Props { interface Props {

View File

@ -1,7 +1,9 @@
import React from "react"; import React from "react";
import styles from "./TeamMember.module.css";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./TeamMember.module.css";
interface TeamMemberProps { interface TeamMemberProps {
name: string; name: string;
role: string; role: string;

View File

@ -1,5 +1,7 @@
import React from "react"; import React from "react";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./TeamMemberCard.module.css"; import styles from "./TeamMemberCard.module.css";
interface TeamMemberCardProps { interface TeamMemberCardProps {

View File

@ -1,5 +1,7 @@
import React, { ReactNode } from "react"; import React, { ReactNode } from "react";
import { Image } from "./Image"; import { Image } from "./Image";
import styles from "./TechTalkCard.module.css"; import styles from "./TechTalkCard.module.css";
interface TechTalkProps { interface TechTalkProps {

View File

@ -1,59 +1,56 @@
import React, { useState } from "react"; import React, { useState } from "react";
import styles from "./playground.module.css";
import AfterHoursContent, { import AfterHoursContent, {
metadata as afterHoursMetadata, metadata as afterHoursMetadata,
} from "../content/playground/after-hours.event.mdx"; } from "../content/playground/after-hours.event.mdx";
import OOTBReact, {
metadata as OOTBReactEventMetadata,
} from "../content/playground/ootb-react.event.mdx";
import AltTab, { import AltTab, {
metadata as altTabEventMetadata, metadata as altTabEventMetadata,
} from "../content/playground/alt-tab.event.mdx"; } from "../content/playground/alt-tab.event.mdx";
import CodeyInfo, {
import Name, { metadata as codeyMetadata,
metadata as nameOrganizedContentMetadata, } from "../content/playground/codey.team-member.mdx";
} from "../content/playground/constitution/name.section.mdx";
import Purpose, {
metadata as purposeOrganizedContentMetadata,
} from "../content/playground/constitution/purpose.section.mdx";
import Membership, {
metadata as membershipOrganizedContentMetadata,
} from "../content/playground/constitution/membership.section.mdx";
import Officers, {
metadata as officersOrganizedContentMetadata,
} from "../content/playground/constitution/officers.section.mdx";
import Duties, { import Duties, {
metadata as dutiesOrganizedContentMetadata, metadata as dutiesOrganizedContentMetadata,
} from "../content/playground/constitution/duties-of-officers.section.mdx"; } from "../content/playground/constitution/duties-of-officers.section.mdx";
import ExecutiveCouncil, { import ExecutiveCouncil, {
metadata as executiveCouncilOrganizedContentMetadata, metadata as executiveCouncilOrganizedContentMetadata,
} from "../content/playground/constitution/executive-council.section.mdx"; } from "../content/playground/constitution/executive-council.section.mdx";
import Membership, {
import UnavailableContent, { metadata as membershipOrganizedContentMetadata,
metadata as unavailableMetadata, } from "../content/playground/constitution/membership.section.mdx";
} from "../content/playground/unavailable.news.mdx"; import Name, {
metadata as nameOrganizedContentMetadata,
} from "../content/playground/constitution/name.section.mdx";
import Officers, {
metadata as officersOrganizedContentMetadata,
} from "../content/playground/constitution/officers.section.mdx";
import Purpose, {
metadata as purposeOrganizedContentMetadata,
} from "../content/playground/constitution/purpose.section.mdx";
import { metadata as dogeMetadata } from "../content/playground/doge.team-member.mdx"; import { metadata as dogeMetadata } from "../content/playground/doge.team-member.mdx";
import CodeyInfo, { import OOTBReact, {
metadata as codeyMetadata, metadata as OOTBReactEventMetadata,
} from "../content/playground/codey.team-member.mdx"; } from "../content/playground/ootb-react.event.mdx";
import TempTechTalk, { import TempTechTalk, {
metadata as tempTechTalkMetadata, metadata as tempTechTalkMetadata,
} from "../content/playground/temp.talk.mdx"; } from "../content/playground/temp.talk.mdx";
import UnavailableContent, {
metadata as unavailableMetadata,
} from "../content/playground/unavailable.news.mdx";
import { MiniEventCard } from "./MiniEventCard"; import { Button } from "./Button";
import { NewsCard } from "./NewsCard";
import { Link } from "./Link";
import { EventCard } from "./EventCard"; import { EventCard } from "./EventCard";
import { EventDescriptionCard } from "./EventDescriptionCard"; import { EventDescriptionCard } from "./EventDescriptionCard";
import { Link } from "./Link";
import { MiniEventCard } from "./MiniEventCard";
import { MiniTechTalkCard } from "./MiniTechTalkCard";
import { NewsCard } from "./NewsCard";
import { OrganizedContent, LinkProps } from "./OrganizedContent";
import { TeamMember } from "./TeamMember"; import { TeamMember } from "./TeamMember";
import { TeamMemberCard } from "./TeamMemberCard"; import { TeamMemberCard } from "./TeamMemberCard";
import { OrganizedContent, LinkProps } from "./OrganizedContent";
import { Button } from "./Button";
import { Footer } from "./Footer";
import { TechTalkCard } from "./TechTalkCard"; import { TechTalkCard } from "./TechTalkCard";
import { MiniTechTalkCard } from "./MiniTechTalkCard";
import styles from "./playground.module.css";
const events = [ const events = [
{ Content: OOTBReact, metadata: OOTBReactEventMetadata }, { Content: OOTBReact, metadata: OOTBReactEventMetadata },

View File

@ -1,4 +1,4 @@
import Bubble from "./../../components/Bubble"; import Bubble from "@/components/Bubble";
<Bubble> <Bubble>

1180
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -34,6 +34,7 @@
"@typescript-eslint/parser": "4.28.4", "@typescript-eslint/parser": "4.28.4",
"eslint": "7.32.0", "eslint": "7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.24.0",
"eslint-plugin-prettier": "^3.4.0", "eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-react": "7.24.0", "eslint-plugin-react": "7.24.0",
"eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-react-hooks": "^4.2.0",

View File

@ -1,12 +1,14 @@
import React, { ComponentType, ReactNode } from "react"; import { MDXProvider } from "@mdx-js/react";
import { NextComponentType, NextPageContext } from "next"; import { NextComponentType, NextPageContext } from "next";
import { AppProps as DefaultAppProps } from "next/app"; import { AppProps as DefaultAppProps } from "next/app";
import { MDXProvider } from "@mdx-js/react"; import React, { ComponentType, ReactNode } from "react";
import { ThemeProvider } from "../components/Theme";
import { Navbar } from "../components/Navbar"; import { DefaultLayout } from "@/components/DefaultLayout";
import { Footer } from "../components/Footer"; import { Footer } from "@/components/Footer";
import { Link } from "../components/Link"; import { Link } from "@/components/Link";
import { DefaultLayout } from "../components/DefaultLayout"; import { Navbar } from "@/components/Navbar";
import { ThemeProvider } from "@/components/Theme";
import styles from "./_app.module.css"; import styles from "./_app.module.css";
import "./_app.css"; import "./_app.css";

View File

@ -1,10 +1,13 @@
import React from "react"; import React from "react";
import { Image } from "../../components/Image";
import { ConnectWithUs } from "@/components/ConnectWithUs";
import { DefaultLayout } from "@/components/DefaultLayout";
import { EmailSignup } from "@/components/EmailSignup";
import { Image } from "@/components/Image";
import Content from "../../content/about/index.mdx"; import Content from "../../content/about/index.mdx";
import styles from "./index.module.css"; import styles from "./index.module.css";
import { ConnectWithUs } from "components/ConnectWithUs";
import { EmailSignup } from "components/EmailSignup";
import { DefaultLayout } from "components/DefaultLayout";
export default function AboutUs() { export default function AboutUs() {
return ( return (

View File

@ -1,6 +1,9 @@
import React from "react"; import React from "react";
import { Image } from "../../components/Image";
import { Image } from "@/components/Image";
import Content from "../../content/about/our-supporters.mdx"; import Content from "../../content/about/our-supporters.mdx";
import styles from "./our-supporters.module.css"; import styles from "./our-supporters.module.css";
export default function OurSupporters() { export default function OurSupporters() {

View File

@ -1,8 +1,11 @@
import React from "react"; import React from "react";
import { Image } from "../components/Image";
import { ConnectWithUs } from "../components/ConnectWithUs"; import { ConnectWithUs } from "@/components/ConnectWithUs";
import { EmailSignup } from "../components/EmailSignup"; import { EmailSignup } from "@/components/EmailSignup";
import { Image } from "@/components/Image";
import Content from "../content/get-involved.mdx"; import Content from "../content/get-involved.mdx";
import styles from "./get-involved.module.css"; import styles from "./get-involved.module.css";
export default function GetInvolved() { export default function GetInvolved() {

View File

@ -1,24 +1,27 @@
import React from "react"; import React from "react";
import { Image } from "../components/Image";
import { SocialLinks } from "../components/SocialLinks";
import { EventDescriptionCard } from "../components/EventDescriptionCard";
import { NewsCard } from "../components/NewsCard";
import { ConnectWithUs } from "../components/ConnectWithUs";
import { EmailSignup } from "../components/EmailSignup";
import { DefaultLayout } from "../components/DefaultLayout";
import styles from "./index.module.css";
// temporary event and news imports import { ConnectWithUs } from "@/components/ConnectWithUs";
import OOTBReact, { import { DefaultLayout } from "@/components/DefaultLayout";
metadata as OOTBReactEventMetadata, import { EmailSignup } from "@/components/EmailSignup";
} from "../content/playground/ootb-react.event.mdx"; import { EventDescriptionCard } from "@/components/EventDescriptionCard";
import { Image } from "@/components/Image";
import { NewsCard } from "@/components/NewsCard";
import { SocialLinks } from "@/components/SocialLinks";
import AltTab, { import AltTab, {
metadata as altTabEventMetadata, metadata as altTabEventMetadata,
} from "../content/playground/alt-tab.event.mdx"; } from "../content/playground/alt-tab.event.mdx";
import OOTBReact, {
metadata as OOTBReactEventMetadata,
} from "../content/playground/ootb-react.event.mdx";
import UnavailableContent, { import UnavailableContent, {
metadata as unavailableMetadata, metadata as unavailableMetadata,
} from "../content/playground/unavailable.news.mdx"; } from "../content/playground/unavailable.news.mdx";
import styles from "./index.module.css";
// temporary event and news imports
export default function Home() { export default function Home() {
const events = [ const events = [
{ Content: OOTBReact, metadata: OOTBReactEventMetadata }, { Content: OOTBReact, metadata: OOTBReactEventMetadata },

View File

@ -10,11 +10,11 @@ import {
ButtonDemo, ButtonDemo,
TechTalkDemo, TechTalkDemo,
MiniTechTalkDemo, MiniTechTalkDemo,
} from "../components/playground"; } from "@/components/playground";
import { ConnectWithUs } from "../components/ConnectWithUs"; import { ConnectWithUs } from "@/components/ConnectWithUs";
import { EmailSignup } from "../components/EmailSignup"; import { EmailSignup } from "@/components/EmailSignup";
import { TeamMemberCard } from "../components/TeamMemberCard"; import { TeamMemberCard } from "@/components/TeamMemberCard";
# Playground # Playground

View File

@ -1,5 +1,5 @@
import React from "react";
import Head from "next/head"; import Head from "next/head";
import React from "react";
export default function Resources() { export default function Resources() {
return ( return (

View File

@ -1,7 +1,8 @@
import React from "react"; import React from "react";
import { useThemeContext, emptyPalette } from "components/Theme";
import { Input } from "components/Input"; import { Button } from "@/components/Button";
import { Button } from "components/Button"; import { Input } from "@/components/Input";
import { useThemeContext, emptyPalette } from "@/components/Theme";
import styles from "./themer.module.css"; import styles from "./themer.module.css";

View File

@ -24,6 +24,9 @@
"strictBindCallApply": true, "strictBindCallApply": true,
"strictPropertyInitialization": true, "strictPropertyInitialization": true,
"strictFunctionTypes": true, "strictFunctionTypes": true,
"paths": {
"@/components/*": ["components/*"]
}
}, },
"include": [ "include": [
"next-env.d.ts", "next-env.d.ts",