refactor: Cleanup
This commit is contained in:
parent
4bf82b09fa
commit
413220c54f
9 changed files with 53 additions and 34 deletions
|
@ -8,14 +8,4 @@ export default [
|
||||||
globals: globals.node,
|
globals: globals.node,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
files: ['tests/**/*.ts'],
|
|
||||||
languageOptions: {
|
|
||||||
globals: globals.node,
|
|
||||||
},
|
|
||||||
rules: {
|
|
||||||
'no-console': 'off',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
"format": "prettier --write src/",
|
"format": "prettier --write src/",
|
||||||
"format-check": "prettier --check src/",
|
"format-check": "prettier --check src/",
|
||||||
"lint": "eslint . --fix",
|
"lint": "eslint . --fix",
|
||||||
"test:unit": "vitest"
|
"test:unit": "vitest --run"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mikro-orm/core": "6.4.9",
|
"@mikro-orm/core": "6.4.9",
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Request, Response } from 'express';
|
||||||
import { createAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js';
|
import { createAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js';
|
||||||
import { AssignmentDTO } from '../interfaces/assignment.js';
|
import { AssignmentDTO } from '../interfaces/assignment.js';
|
||||||
|
|
||||||
// Typescript is annoy with with parameter forwarding from class.ts
|
// Typescript is annoying with parameter forwarding from class.ts
|
||||||
interface AssignmentParams {
|
interface AssignmentParams {
|
||||||
classid: string;
|
classid: string;
|
||||||
id: string;
|
id: string;
|
||||||
|
|
|
@ -80,7 +80,7 @@ export async function getGroupSubmissionsHandler(req: Request, res: Response): P
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const groupId = Number(req.params.groupid!); // Can't be undefined
|
const groupId = Number(req.params.groupid); // Can't be undefined
|
||||||
|
|
||||||
if (isNaN(groupId)) {
|
if (isNaN(groupId)) {
|
||||||
res.status(400).json({ error: 'Group id must be a number' });
|
res.status(400).json({ error: 'Group id must be a number' });
|
||||||
|
|
|
@ -3,18 +3,16 @@ import { themes } from '../data/themes.js';
|
||||||
import { loadTranslations } from '../util/translation-helper.js';
|
import { loadTranslations } from '../util/translation-helper.js';
|
||||||
|
|
||||||
interface Translations {
|
interface Translations {
|
||||||
curricula_page: {
|
curricula_page: Record<string, { title: string; description?: string }>;
|
||||||
[key: string]: { title: string; description?: string };
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getThemes(req: Request, res: Response): void {
|
export function getThemes(req: Request, res: Response): void {
|
||||||
const language = (req.query.language as string)?.toLowerCase() || 'nl';
|
const language = (req.query.language as string).toLowerCase() || 'nl';
|
||||||
const translations = loadTranslations<Translations>(language);
|
const translations = loadTranslations<Translations>(language);
|
||||||
const themeList = themes.map((theme) => ({
|
const themeList = themes.map((theme) => ({
|
||||||
key: theme.title,
|
key: theme.title,
|
||||||
title: translations.curricula_page[theme.title]?.title || theme.title,
|
title: translations.curricula_page[theme.title].title || theme.title,
|
||||||
description: translations.curricula_page[theme.title]?.description,
|
description: translations.curricula_page[theme.title].description,
|
||||||
image: `https://dwengo.org/images/curricula/logo_${theme.title}.png`,
|
image: `https://dwengo.org/images/curricula/logo_${theme.title}.png`,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ async function getLearningObjectsForNodes(nodes: LearningPathNode[]): Promise<Ma
|
||||||
version: node.version,
|
version: node.version,
|
||||||
language: node.language,
|
language: node.language,
|
||||||
})
|
})
|
||||||
.then((learningObject) => ([node, learningObject] as [LearningPathNode, FilteredLearningObject | null]))
|
.then((learningObject) => [node, learningObject] as [LearningPathNode, FilteredLearningObject | null])
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { Language } from '../../../src/entities/content/language.js';
|
||||||
function expectToHaveFoundPrecisely(expected: LearningPath, result: LearningPath[]): void {
|
function expectToHaveFoundPrecisely(expected: LearningPath, result: LearningPath[]): void {
|
||||||
expect(result).toHaveProperty('length');
|
expect(result).toHaveProperty('length');
|
||||||
expect(result.length).toBe(1);
|
expect(result.length).toBe(1);
|
||||||
expectToBeCorrectEntity({ entity: result[0]! }, { entity: expected });
|
expectToBeCorrectEntity({ entity: result[0] }, { entity: expected });
|
||||||
}
|
}
|
||||||
|
|
||||||
function expectToHaveFoundNothing(result: LearningPath[]): void {
|
function expectToHaveFoundNothing(result: LearningPath[]): void {
|
||||||
|
|
|
@ -46,8 +46,6 @@ async function initPersonalizationTestData(): Promise<{
|
||||||
await learningObjectRepo.save(learningContent.extraExerciseObject);
|
await learningObjectRepo.save(learningContent.extraExerciseObject);
|
||||||
await learningPathRepo.save(learningContent.learningPath);
|
await learningPathRepo.save(learningContent.learningPath);
|
||||||
|
|
||||||
console.log(await getSubmissionRepository().findAll({}));
|
|
||||||
|
|
||||||
const studentA = studentRepo.create({
|
const studentA = studentRepo.create({
|
||||||
username: 'student_a',
|
username: 'student_a',
|
||||||
firstName: 'Aron',
|
firstName: 'Aron',
|
||||||
|
|
|
@ -32,12 +32,23 @@ export default [
|
||||||
reportUnusedInlineConfigs: 'error',
|
reportUnusedInlineConfigs: 'error',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
|
// All @typescript-eslint configuration options are listed.
|
||||||
|
// If the rules are commented, they are configured by the inherited configurations.
|
||||||
|
|
||||||
|
'@typescript-eslint/adjacent-overload-signatures': 'warn',
|
||||||
'@typescript-eslint/array-type': 'warn',
|
'@typescript-eslint/array-type': 'warn',
|
||||||
'@typescript-eslint/await-thenable': 'error',
|
'@typescript-eslint/await-thenable': 'error',
|
||||||
|
'@typescript-eslint/ban-ts-comment': [
|
||||||
|
'error',
|
||||||
|
{ minimumDescriptionLength: 10 },
|
||||||
|
],
|
||||||
|
'@typescript-eslint/ban-tslint-comment': 'error',
|
||||||
|
'camelcase': 'off',
|
||||||
|
'@typescript-eslint/class-literal-property-style': 'warn',
|
||||||
'class-methods-use-this': 'off',
|
'class-methods-use-this': 'off',
|
||||||
'@typescript-eslint/class-methods-use-this': [ 'error', { ignoreOverrideMethods: true } ],
|
'@typescript-eslint/class-methods-use-this': [ 'error', { ignoreOverrideMethods: true } ],
|
||||||
|
'@typescript-eslint/consistent-generic-constructors': 'warn',
|
||||||
|
'@typescript-eslint/consistent-indexed-object-style': 'error',
|
||||||
'consistent-return': 'off',
|
'consistent-return': 'off',
|
||||||
'@typescript-eslint/consistent-return': 'off',
|
'@typescript-eslint/consistent-return': 'off',
|
||||||
'@typescript-eslint/consistent-type-assertions': 'error',
|
'@typescript-eslint/consistent-type-assertions': 'error',
|
||||||
|
@ -46,9 +57,13 @@ export default [
|
||||||
'@typescript-eslint/consistent-type-imports': 'off',
|
'@typescript-eslint/consistent-type-imports': 'off',
|
||||||
'default-param-last': 'off',
|
'default-param-last': 'off',
|
||||||
'@typescript-eslint/default-param-last': 'error',
|
'@typescript-eslint/default-param-last': 'error',
|
||||||
|
'dot-notation': 'off',
|
||||||
|
'@typescript-eslint/dot-notation': 'warn',
|
||||||
'@typescript-eslint/explicit-function-return-type': 'warn',
|
'@typescript-eslint/explicit-function-return-type': 'warn',
|
||||||
|
'@typescript-eslint/explicit-member-accessibility': 'off',
|
||||||
|
'@typescript-eslint/explicit-module-boundary-types': 'warn',
|
||||||
|
'init-declarations': 'off',
|
||||||
|
'@typescript-eslint/init-declarations': 'off',
|
||||||
'max-params': 'off',
|
'max-params': 'off',
|
||||||
'@typescript-eslint/max-params': ['error', { 'max': 6 }],
|
'@typescript-eslint/max-params': ['error', { 'max': 6 }],
|
||||||
'@typescript-eslint/member-ordering': 'warn',
|
'@typescript-eslint/member-ordering': 'warn',
|
||||||
|
@ -76,22 +91,41 @@ export default [
|
||||||
'no-array-constructor': 'off',
|
'no-array-constructor': 'off',
|
||||||
'@typescript-eslint/no-array-constructor': 'error',
|
'@typescript-eslint/no-array-constructor': 'error',
|
||||||
'@typescript-eslint/no-array-delete': 'error',
|
'@typescript-eslint/no-array-delete': 'error',
|
||||||
|
'@typescript-eslint/no-base-to-string': 'off',
|
||||||
|
'@typescript-eslint/no-confusing-non-null-assertion': 'error',
|
||||||
|
'@typescript-eslint/no-confusing-void-expression': 'error',
|
||||||
|
'@typescript-eslint/no-deprecated': 'error',
|
||||||
'no-dupe-class-members': 'off',
|
'no-dupe-class-members': 'off',
|
||||||
'@typescript-eslint/no-dupe-class-members': 'off',
|
'@typescript-eslint/no-dupe-class-members': 'off',
|
||||||
'@typescript-eslint/no-duplicate-enum-values': 'error',
|
'@typescript-eslint/no-duplicate-enum-values': 'error',
|
||||||
'no-duplicate-imports': 'off',
|
'no-duplicate-imports': 'off',
|
||||||
'@typescript-eslint/no-duplicate-type-constituents': 'off',
|
'@typescript-eslint/no-duplicate-type-constituents': 'off',
|
||||||
|
'@typescript-eslint/no-dynamic-delete': 'error',
|
||||||
// 'no-empty-function': 'off',
|
'no-empty-function': 'off',
|
||||||
'@typescript-eslint/no-empty-function': 'error',
|
'@typescript-eslint/no-empty-function': 'error',
|
||||||
|
'@typescript-eslint/no-empty-interface': 'off',
|
||||||
|
'@typescript-eslint/no-empty-object-type': 'error',
|
||||||
|
'@typescript-eslint/no-explicit-any': 'warn', // Once in production, this should be an error.
|
||||||
|
'@typescript-eslint/no-extra-non-null-assertion': 'error',
|
||||||
|
'@typescript-eslint/no-extraneous-class': 'error',
|
||||||
|
'@typescript-eslint/no-floating-promises': 'error',
|
||||||
'@typescript-eslint/no-for-in-array': 'error',
|
'@typescript-eslint/no-for-in-array': 'error',
|
||||||
|
'no-implied-eval': 'off',
|
||||||
|
'@typescript-eslint/no-implied-eval': 'error',
|
||||||
|
'@typescript-eslint/no-import-type-side-effects': 'error',
|
||||||
'@typescript-eslint/no-inferrable-types': 'warn',
|
'@typescript-eslint/no-inferrable-types': 'warn',
|
||||||
|
'no-invalid-this': 'off',
|
||||||
|
'@typescript-eslint/no-invalid-this': 'off',
|
||||||
|
'@typescript-eslint/no-invalid-void-type': 'error',
|
||||||
'no-loop-func': 'off',
|
'no-loop-func': 'off',
|
||||||
'@typescript-eslint/no-loop-func': 'error',
|
'@typescript-eslint/no-loop-func': 'error',
|
||||||
|
'no-loss-of-precision': 'off',
|
||||||
|
'@typescript-eslint/no-loss-of-precision': 'off',
|
||||||
|
'no-magic-numbers': 'off',
|
||||||
|
'@typescript-eslint/no-magic-numbers': 'off',
|
||||||
|
|
||||||
|
'no-redeclare': 'off',
|
||||||
|
'@typescript-eslint/no-redeclare': 'off',
|
||||||
|
|
||||||
'@typescript-eslint/no-type-alias': 'off',
|
'@typescript-eslint/no-type-alias': 'off',
|
||||||
|
|
||||||
|
@ -149,7 +183,6 @@ export default [
|
||||||
curly: 'error',
|
curly: 'error',
|
||||||
'default-case': 'error',
|
'default-case': 'error',
|
||||||
'default-case-last': 'error',
|
'default-case-last': 'error',
|
||||||
'dot-notation': 'warn',
|
|
||||||
eqeqeq: 'error',
|
eqeqeq: 'error',
|
||||||
'func-names': 'warn',
|
'func-names': 'warn',
|
||||||
'func-style': ['warn', 'declaration'],
|
'func-style': ['warn', 'declaration'],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue