mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
fixing lint config
This commit is contained in:
@@ -10,13 +10,11 @@ const compat = new FlatCompat({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const eslintConfig = [
|
const eslintConfig = [
|
||||||
|
{
|
||||||
|
ignores: ["**/node_modules/**", "**/.next/**", "storage/**"],
|
||||||
|
},
|
||||||
...compat.config({
|
...compat.config({
|
||||||
extends: ["next/core-web-vitals", "next/typescript", "prettier"],
|
extends: ["next/core-web-vitals", "next/typescript", "prettier"],
|
||||||
ignores: [
|
|
||||||
"**/node_modules/**",
|
|
||||||
"**/.next/**",
|
|
||||||
"storage/**"
|
|
||||||
],
|
|
||||||
rules: {
|
rules: {
|
||||||
"react-refresh/only-export-components": "off", // Disabled the rule
|
"react-refresh/only-export-components": "off", // Disabled the rule
|
||||||
"@typescript-eslint/no-unused-vars": [
|
"@typescript-eslint/no-unused-vars": [
|
||||||
|
|||||||
@@ -8,18 +8,10 @@ import { Spinner } from "@/components/Spinner";
|
|||||||
import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling";
|
import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling";
|
||||||
import { useCourseListInTermQuery } from "@/hooks/canvas/canvasCourseHooks";
|
import { useCourseListInTermQuery } from "@/hooks/canvas/canvasCourseHooks";
|
||||||
import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks";
|
import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks";
|
||||||
import {
|
|
||||||
useGlobalSettingsQuery,
|
|
||||||
useUpdateGlobalSettingsMutation,
|
|
||||||
} from "@/hooks/localCourse/globalSettingsHooks";
|
|
||||||
import {
|
import {
|
||||||
useCreateLocalCourseMutation,
|
useCreateLocalCourseMutation,
|
||||||
useLocalCoursesSettingsQuery,
|
useLocalCoursesSettingsQuery,
|
||||||
} from "@/hooks/localCourse/localCoursesHooks";
|
} from "@/hooks/localCourse/localCoursesHooks";
|
||||||
import {
|
|
||||||
useDirectoryIsCourseQuery,
|
|
||||||
useEmptyDirectoriesQuery,
|
|
||||||
} from "@/hooks/localCourse/storageDirectoryHooks";
|
|
||||||
import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel";
|
import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel";
|
||||||
import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel";
|
import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel";
|
||||||
import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType";
|
import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType";
|
||||||
@@ -165,7 +157,7 @@ function OtherSettings({
|
|||||||
selectedTerm,
|
selectedTerm,
|
||||||
selectedCanvasCourse,
|
selectedCanvasCourse,
|
||||||
setSelectedCanvasCourse,
|
setSelectedCanvasCourse,
|
||||||
selectedDirectory,
|
selectedDirectory: _,
|
||||||
setSelectedDirectory,
|
setSelectedDirectory,
|
||||||
selectedDaysOfWeek,
|
selectedDaysOfWeek,
|
||||||
setSelectedDaysOfWeek,
|
setSelectedDaysOfWeek,
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export const AddExistingCourseToGlobalSettings = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const ExistingCourseForm: FC<{}> = () => {
|
const ExistingCourseForm: FC<object> = () => {
|
||||||
const [path, setPath] = useState("./");
|
const [path, setPath] = useState("./");
|
||||||
const [name, setName] = useState("");
|
const [name, setName] = useState("");
|
||||||
const nameInputRef = useRef<HTMLInputElement>(null);
|
const nameInputRef = useRef<HTMLInputElement>(null);
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { assignmentMarkdownSerializer } from "@/features/local/assignments/models/utils/assignmentMarkdownSerializer";
|
import { assignmentMarkdownSerializer } from "@/features/local/assignments/models/utils/assignmentMarkdownSerializer";
|
||||||
import { groupByStartDate } from "@/models/local/utils/timeUtils";
|
import { groupByStartDate } from "@/models/local/utils/timeUtils";
|
||||||
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
|
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
|
||||||
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
||||||
import { createMcpHandler } from "mcp-handler";
|
import { createMcpHandler } from "mcp-handler";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { githubClassroomUrlPrompt } from "./github-classroom-prompt";
|
import { githubClassroomUrlPrompt } from "./github-classroom-prompt";
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import {
|
|||||||
useMutation,
|
useMutation,
|
||||||
useQueryClient,
|
useQueryClient,
|
||||||
} from "@tanstack/react-query";
|
} from "@tanstack/react-query";
|
||||||
import { useGlobalSettingsQuery } from "./globalSettingsHooks";
|
|
||||||
|
|
||||||
export const useLocalCoursesSettingsQuery = () => {
|
export const useLocalCoursesSettingsQuery = () => {
|
||||||
const trpc = useTRPC();
|
const trpc = useTRPC();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { LocalCoursePage, localPageMarkdownUtils } from "@/features/local/pages/localCoursePageModels";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { LocalCoursePage, localPageMarkdownUtils } from "../page/localCoursePage";
|
|
||||||
|
|
||||||
describe("PageMarkdownTests", () => {
|
describe("PageMarkdownTests", () => {
|
||||||
it("can parse page", () => {
|
it("can parse page", () => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { quizMarkdownUtils } from "@/models/local/models/utils/quizMarkdownUtils";
|
|
||||||
|
|
||||||
describe("Matching Answer Error Messages", () => {
|
describe("Matching Answer Error Messages", () => {
|
||||||
it("can parse matching question", () => {
|
it("can parse matching question", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
import { QuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
|
import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { QuestionType } from "../../models/localQuizQuestion";
|
|
||||||
import { quizMarkdownUtils } from "@/models/local/models/utils/quizMarkdownUtils";
|
|
||||||
import { quizQuestionMarkdownUtils } from "@/models/local/models/utils/quizQuestionMarkdownUtils";
|
|
||||||
|
|
||||||
describe("MatchingTests", () => {
|
describe("MatchingTests", () => {
|
||||||
it("can parse matching question", () => {
|
it("can parse matching question", () => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz";
|
||||||
|
import { QuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
|
import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { LocalQuiz } from "../../models/localQuiz";
|
|
||||||
import { QuestionType } from "../../models/localQuizQuestion";
|
|
||||||
import { quizMarkdownUtils } from "@/models/local/models/utils/quizMarkdownUtils";
|
|
||||||
import { quizQuestionMarkdownUtils } from "@/models/local/models/utils/quizQuestionMarkdownUtils";
|
|
||||||
|
|
||||||
describe("MultipleAnswersTests", () => {
|
describe("MultipleAnswersTests", () => {
|
||||||
it("quiz markdown includes multiple answer question", () => {
|
it("quiz markdown includes multiple answer question", () => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz";
|
||||||
|
import { QuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
|
import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { LocalQuiz } from "../../models/localQuiz";
|
|
||||||
import { QuestionType } from "../../models/localQuizQuestion";
|
|
||||||
import { quizMarkdownUtils } from "@/models/local/models/utils/quizMarkdownUtils";
|
|
||||||
import { quizQuestionMarkdownUtils } from "@/models/local/models/utils/quizQuestionMarkdownUtils";
|
|
||||||
|
|
||||||
describe("MultipleChoiceTests", () => {
|
describe("MultipleChoiceTests", () => {
|
||||||
it("quiz markdown includes multiple choice question", () => {
|
it("quiz markdown includes multiple choice question", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz";
|
||||||
|
import { QuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { LocalQuiz } from "../../models/localQuiz";
|
|
||||||
import { quizMarkdownUtils } from "../../models/utils/quizMarkdownUtils";
|
|
||||||
import { QuestionType } from "@/models/local/models/localQuizQuestion";
|
|
||||||
|
|
||||||
// Test suite for deterministic checks on LocalQuiz
|
// Test suite for deterministic checks on LocalQuiz
|
||||||
describe("QuizDeterministicChecks", () => {
|
describe("QuizDeterministicChecks", () => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
import { LocalQuiz } from "../../models/localQuiz";
|
|
||||||
import { quizMarkdownUtils } from "../../models/utils/quizMarkdownUtils";
|
|
||||||
import { QuestionType } from "@/models/local/models/localQuizQuestion";
|
|
||||||
import { quizQuestionMarkdownUtils } from "@/models/local/models/utils/quizQuestionMarkdownUtils";
|
|
||||||
import { markdownToHtmlNoImages } from "@/services/htmlMarkdownUtils";
|
import { markdownToHtmlNoImages } from "@/services/htmlMarkdownUtils";
|
||||||
|
import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz";
|
||||||
|
import { QuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
|
import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils";
|
||||||
|
|
||||||
// Test suite for QuizMarkdown
|
// Test suite for QuizMarkdown
|
||||||
describe("QuizMarkdownTests", () => {
|
describe("QuizMarkdownTests", () => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
|
import { QuestionType, zodQuestionType } from "@/features/local/quizzes/models/localQuizQuestion";
|
||||||
|
import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils";
|
||||||
|
import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils";
|
||||||
import {
|
import {
|
||||||
getAnswers,
|
getAnswers,
|
||||||
getQuestionType,
|
getQuestionType,
|
||||||
} from "@/services/canvas/canvasQuizService";
|
} from "@/services/canvas/canvasQuizService";
|
||||||
import { QuestionType, zodQuestionType } from "../../models/localQuizQuestion";
|
|
||||||
import { quizMarkdownUtils } from "../../models/utils/quizMarkdownUtils";
|
|
||||||
import { quizQuestionMarkdownUtils } from "../../models/utils/quizQuestionMarkdownUtils";
|
|
||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
|
|
||||||
describe("TextAnswerTests", () => {
|
describe("TextAnswerTests", () => {
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import {
|
|||||||
prepPageForNewSemester,
|
prepPageForNewSemester,
|
||||||
prepQuizForNewSemester,
|
prepQuizForNewSemester,
|
||||||
} from "../utils/semesterTransferUtils";
|
} from "../utils/semesterTransferUtils";
|
||||||
import { LocalQuiz } from "../models/localQuiz";
|
|
||||||
import { LocalCoursePage } from "../page/localCoursePage";
|
|
||||||
import { Lecture } from "../lecture";
|
import { Lecture } from "../lecture";
|
||||||
|
import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels";
|
||||||
|
import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz";
|
||||||
|
|
||||||
describe("can take an assignment and template it for a new semester", () => {
|
describe("can take an assignment and template it for a new semester", () => {
|
||||||
it("can sanitize assignment github classroom repo url", () => {
|
it("can sanitize assignment github classroom repo url", () => {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export const getGlobalSettings = async (): Promise<GlobalSettings> => {
|
|||||||
try {
|
try {
|
||||||
await fs.access(SETTINGS_FILE_PATH);
|
await fs.access(SETTINGS_FILE_PATH);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Global Settings file does not exist at path: ${SETTINGS_FILE_PATH}`
|
`Global Settings file does not exist at path: ${SETTINGS_FILE_PATH}`
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { promises as fs } from "fs";
|
import { promises as fs } from "fs";
|
||||||
import path from "path";
|
|
||||||
import { lectureFolderName } from "./utils/lectureUtils";
|
import { lectureFolderName } from "./utils/lectureUtils";
|
||||||
import { getCoursePathByName } from "./globalSettingsFileStorageService";
|
import { getCoursePathByName } from "./globalSettingsFileStorageService";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { promises as fs } from "fs";
|
import { promises as fs } from "fs";
|
||||||
import path from "path";
|
|
||||||
import { getGlobalSettings } from "../globalSettingsFileStorageService";
|
import { getGlobalSettings } from "../globalSettingsFileStorageService";
|
||||||
|
|
||||||
export const directoryOrFileExists = async (
|
export const directoryOrFileExists = async (
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { marked, MarkedExtension } from "marked";
|
import { marked } from "marked";
|
||||||
import DOMPurify from "isomorphic-dompurify";
|
import DOMPurify from "isomorphic-dompurify";
|
||||||
import { LocalCourseSettings } from "@/models/local/localCourseSettings";
|
import { LocalCourseSettings } from "@/models/local/localCourseSettings";
|
||||||
import markedKatex from "marked-katex-extension";
|
import markedKatex from "marked-katex-extension";
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import {
|
|||||||
getGlobalSettings,
|
getGlobalSettings,
|
||||||
updateGlobalSettings,
|
updateGlobalSettings,
|
||||||
} from "@/services/fileStorage/globalSettingsFileStorageService";
|
} from "@/services/fileStorage/globalSettingsFileStorageService";
|
||||||
import { promises as fs } from "fs";
|
|
||||||
import { basePath } from "@/services/fileStorage/utils/fileSystemUtils";
|
|
||||||
import path from "path";
|
|
||||||
|
|
||||||
export const settingsRouter = router({
|
export const settingsRouter = router({
|
||||||
allCoursesSettings: publicProcedure.query(async () => {
|
allCoursesSettings: publicProcedure.query(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user