diff --git a/helpers/Dojo/AssignmentValidator.ts b/helpers/Dojo/AssignmentValidator.ts index a45d61d23f7f60ac7502523ae87994df47b23789..818a748eb1fd4d8f6feb053557177e9d42dd230d 100644 --- a/helpers/Dojo/AssignmentValidator.ts +++ b/helpers/Dojo/AssignmentValidator.ts @@ -1,15 +1,15 @@ import { TypedEmitter } from 'tiny-typed-emitter'; -import AssignmentValidatorEvents from '../../types/Dojo/AssignmentValidatorEvents'; -import SharedAssignmentHelper from '../../../shared/helpers/Dojo/SharedAssignmentHelper'; +import AssignmentValidatorEvents from '../../types/Dojo/AssignmentValidatorEvents.js'; +import SharedAssignmentHelper from '../../../shared/helpers/Dojo/SharedAssignmentHelper.js'; import path from 'node:path'; -import AssignmentCheckerError from '../../../shared/types/Dojo/AssignmentCheckerError'; +import AssignmentCheckerError from '../../../shared/types/Dojo/AssignmentCheckerError.js'; import fs from 'fs-extra'; -import ClientsSharedConfig from '../../config/ClientsSharedConfig'; +import ClientsSharedConfig from '../../config/ClientsSharedConfig.js'; import YAML from 'yaml'; -import DojoDockerCompose from '../../types/Dojo/DojoDockerCompose'; +import DojoDockerCompose from '../../types/Dojo/DojoDockerCompose.js'; import { exec, spawn } from 'child_process'; -import AssignmentFile from '../../../shared/types/Dojo/AssignmentFile'; -import ExerciseDockerCompose from './ExerciseDockerCompose'; +import AssignmentFile from '../../../shared/types/Dojo/AssignmentFile.js'; +import ExerciseDockerCompose from './ExerciseDockerCompose.js'; import util from 'util'; @@ -288,7 +288,7 @@ class AssignmentValidator { } run() { - (async () => { + void (async () => { try { await this.checkRequirements(); diff --git a/helpers/Dojo/ClientsSharedAssignmentHelper.ts b/helpers/Dojo/ClientsSharedAssignmentHelper.ts index 9c0eb460ac75a392c00af9c515b691979479eb2a..5071429ce060887b68a405b35e4ef1da056d8f7f 100644 --- a/helpers/Dojo/ClientsSharedAssignmentHelper.ts +++ b/helpers/Dojo/ClientsSharedAssignmentHelper.ts @@ -1,11 +1,11 @@ -import chalk from 'chalk'; +import { ChalkInstance } from 'chalk'; import boxen from 'boxen'; -import Icon from '../../../shared/types/Icon'; -import AssignmentValidator from './AssignmentValidator'; +import Icon from '../../../shared/types/Icon.js'; +import AssignmentValidator from './AssignmentValidator.js'; class ClientsSharedAssignmentHelper { - displayExecutionResults(validator: AssignmentValidator, successMessage: string, Style: { INFO: chalk.Chalk, SUCCESS: chalk.Chalk, FAILURE: chalk.Chalk }) { + displayExecutionResults(validator: AssignmentValidator, successMessage: string, Style: { INFO: ChalkInstance, SUCCESS: ChalkInstance, FAILURE: ChalkInstance }) { const globalResult = validator.success ? Style.SUCCESS(`${ Icon.SUCCESS } Success`) : Style.FAILURE(`${ Icon.FAILURE } Failure`); const finalLogGlobalResult = `${ Style.INFO('Global result') } : ${ globalResult }`; diff --git a/helpers/Dojo/ClientsSharedExerciseHelper.ts b/helpers/Dojo/ClientsSharedExerciseHelper.ts index 740b7695bf484dbb9e0c54bfa0f21bd902926c6a..e9a2c72a5bbaaf04a59500b9161e0ea1c5fe3dd3 100644 --- a/helpers/Dojo/ClientsSharedExerciseHelper.ts +++ b/helpers/Dojo/ClientsSharedExerciseHelper.ts @@ -1,12 +1,12 @@ -import ExerciseResultsFile from '../../../shared/types/Dojo/ExerciseResultsFile'; -import chalk from 'chalk'; +import ExerciseResultsFile from '../../../shared/types/Dojo/ExerciseResultsFile.js'; +import { ChalkInstance } from 'chalk'; import boxen from 'boxen'; -import Icon from '../../../shared/types/Icon'; +import Icon from '../../../shared/types/Icon.js'; class ClientsSharedExerciseHelper { - private getOtherInformations(exerciseResults: ExerciseResultsFile, Style: { INFO: chalk.Chalk, SUCCESS: chalk.Chalk, FAILURE: chalk.Chalk }) { + private getOtherInformations(exerciseResults: ExerciseResultsFile, Style: { INFO: ChalkInstance, SUCCESS: ChalkInstance, FAILURE: ChalkInstance }) { return exerciseResults.otherInformations ? [ '', ...exerciseResults.otherInformations.map(information => { const informationTitle = Style.INFO(`${ information.icon && information.icon !== '' ? Icon[information.icon] + ' ' : '' }${ information.name }: `); const informationItems = typeof information.itemsOrInformations == 'string' ? information.itemsOrInformations : information.itemsOrInformations.map(item => `- ${ item }`).join('\n'); @@ -15,7 +15,7 @@ class ClientsSharedExerciseHelper { }) ].join('\n\n') : ''; } - displayExecutionResults(exerciseResults: ExerciseResultsFile, containerExitCode: number, Style: { INFO: chalk.Chalk, SUCCESS: chalk.Chalk, FAILURE: chalk.Chalk }, additionalText: string = '') { + displayExecutionResults(exerciseResults: ExerciseResultsFile, containerExitCode: number, Style: { INFO: ChalkInstance, SUCCESS: ChalkInstance, FAILURE: ChalkInstance }, additionalText: string = '') { const globalResult = exerciseResults.success ? Style.SUCCESS(`${ Icon.SUCCESS } Success`) : Style.FAILURE(`${ Icon.FAILURE } Failure`); const finalLogGlobalResult = `${ Style.INFO('Global result: ') }${ globalResult }`; diff --git a/helpers/Dojo/DojoBackendHelper.ts b/helpers/Dojo/DojoBackendHelper.ts index c682bfb71fdd895a6d3761fea6694754542074ee..b201276faef6eae814dcbff93f7c0325eea20d32 100644 --- a/helpers/Dojo/DojoBackendHelper.ts +++ b/helpers/Dojo/DojoBackendHelper.ts @@ -1,5 +1,5 @@ -import ApiRoute from '../../types/Dojo/ApiRoute'; -import ClientsSharedConfig from '../../config/ClientsSharedConfig'; +import ApiRoute from '../../types/Dojo/ApiRoute.js'; +import ClientsSharedConfig from '../../config/ClientsSharedConfig.js'; class DojoBackendHelper { diff --git a/helpers/Dojo/ExerciseDockerCompose.ts b/helpers/Dojo/ExerciseDockerCompose.ts index 64d60c38346bee7ed44cc242e3ca6d79ed6c093e..c76a95e5018aff4bbc4949c97d7560ce9b670ca1 100644 --- a/helpers/Dojo/ExerciseDockerCompose.ts +++ b/helpers/Dojo/ExerciseDockerCompose.ts @@ -1,8 +1,8 @@ -import AssignmentFile from '../../../shared/types/Dojo/AssignmentFile'; +import AssignmentFile from '../../../shared/types/Dojo/AssignmentFile.js'; import { TypedEmitter } from 'tiny-typed-emitter'; -import ExerciseRunningEvents from '../../types/Dojo/ExerciseRunningEvents'; +import ExerciseRunningEvents from '../../types/Dojo/ExerciseRunningEvents.js'; import { spawn } from 'child_process'; -import ExerciseCheckerError from '../../../shared/types/Dojo/ExerciseCheckerError'; +import ExerciseCheckerError from '../../../shared/types/Dojo/ExerciseCheckerError.js'; import { ChildProcessWithoutNullStreams } from 'node:child_process'; @@ -60,10 +60,12 @@ class ExerciseDockerCompose { private registerChildProcess(childProcess: ChildProcessWithoutNullStreams, resolve: (value: (number | PromiseLike<number>)) => void, reject: (reason?: unknown) => void, displayable: boolean, rejectIfCodeIsNotZero: boolean) { childProcess.stdout.on('data', data => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call this.log(data.toString(), false, displayable); }); childProcess.stderr.on('data', data => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call this.log(data.toString(), true, displayable); }); @@ -73,7 +75,7 @@ class ExerciseDockerCompose { } run(doDown: boolean = false) { - (async () => { + void (async () => { let containerExitCode: number = -1; const filesOverrideArguments = this.composeFileOverride.map(file => `--file "${ file }"`).join(' '); diff --git a/helpers/Dojo/ExerciseResultsSanitizerAndValidator.ts b/helpers/Dojo/ExerciseResultsSanitizerAndValidator.ts index 38ffa923fd74d191787e20ebf832adc9e6325bec..c27722f4ac0129f0a88009d48e594cacd10dba1e 100644 --- a/helpers/Dojo/ExerciseResultsSanitizerAndValidator.ts +++ b/helpers/Dojo/ExerciseResultsSanitizerAndValidator.ts @@ -1,13 +1,13 @@ import { TypedEmitter } from 'tiny-typed-emitter'; -import ExerciseRunningEvents from '../../types/Dojo/ExerciseRunningEvents'; -import ExerciseCheckerError from '../../../shared/types/Dojo/ExerciseCheckerError'; +import ExerciseRunningEvents from '../../types/Dojo/ExerciseRunningEvents.js'; +import ExerciseCheckerError from '../../../shared/types/Dojo/ExerciseCheckerError.js'; import path from 'node:path'; -import ClientsSharedConfig from '../../config/ClientsSharedConfig'; -import Toolbox from '../../../shared/helpers/Toolbox'; +import ClientsSharedConfig from '../../config/ClientsSharedConfig.js'; +import Toolbox from '../../../shared/helpers/Toolbox.js'; import * as fs from 'fs-extra'; -import ExerciseResultsFile from '../../../shared/types/Dojo/ExerciseResultsFile'; +import ExerciseResultsFile from '../../../shared/types/Dojo/ExerciseResultsFile.js'; import JSON5 from 'json5'; -import Json5FileValidator from '../../../shared/helpers/Json5FileValidator'; +import Json5FileValidator from '../../../shared/helpers/Json5FileValidator.js'; class ExerciseResultsSanitizerAndValidator { @@ -27,7 +27,7 @@ class ExerciseResultsSanitizerAndValidator { this.containerExitCode = containerExitCode; } - private async resultsFileSanitization() { + private resultsFileSanitization() { this.events.emit('step', 'RESULTS_FILE_SANITIZATION', 'Sanitizing results file'); if ( this.exerciseResults.success === undefined ) { @@ -57,7 +57,7 @@ class ExerciseResultsSanitizerAndValidator { // Results file content sanitization - await this.resultsFileSanitization(); + this.resultsFileSanitization(); // Results folder size @@ -76,19 +76,14 @@ class ExerciseResultsSanitizerAndValidator { return true; } - private async resultsFileNotProvided(): Promise<boolean> { - await this.resultsFileSanitization(); - return true; - } - run() { - (async () => { + void (async () => { // Results file existence this.events.emit('step', 'CHECK_RESULTS_FILE_EXIST', 'Checking if results file exists'); const resultsFileOriginPath = path.join(this.folderResultsExercise, ClientsSharedConfig.filenames.results); this.resultsFilePath = path.join(this.folderResultsDojo, ClientsSharedConfig.filenames.results); - let result: boolean; + let result: boolean = true; if ( fs.existsSync(resultsFileOriginPath) ) { this.events.emit('endStep', 'CHECK_RESULTS_FILE_EXIST', 'Results file found', false); @@ -102,7 +97,7 @@ class ExerciseResultsSanitizerAndValidator { } else { this.events.emit('endStep', 'CHECK_RESULTS_FILE_EXIST', 'Results file not found', false); - result = await this.resultsFileNotProvided(); + this.resultsFileSanitization(); } if ( result ) { diff --git a/models/Assignment.ts b/models/Assignment.ts index 554d4a5cbc6f9641b90a113361bb472943a2394e..5d8f03e445bfd5cfcb4f35c4761bad196e6a2465 100644 --- a/models/Assignment.ts +++ b/models/Assignment.ts @@ -1,5 +1,5 @@ -import User from './User'; -import Exercise from './Exercise'; +import User from './User.js'; +import Exercise from './Exercise.js'; import * as Gitlab from '@gitbeaker/rest'; diff --git a/models/Exercise.ts b/models/Exercise.ts index 0ec86f6e291dc74fe249e702772e347f93faca53..1cc6df278985b8bee554a0b78d96d5d558af0e4d 100644 --- a/models/Exercise.ts +++ b/models/Exercise.ts @@ -1,5 +1,5 @@ -import User from './User'; -import Assignment from './Assignment'; +import User from './User.js'; +import Assignment from './Assignment.js'; import * as Gitlab from '@gitbeaker/rest'; diff --git a/models/ExerciseAssignment.ts b/models/ExerciseAssignment.ts index ec75edaa84d2f0c464f6a50c901126f8c14298fd..7e0ff7ef88b9a451b9d6b32d12af2cc706c7115e 100644 --- a/models/ExerciseAssignment.ts +++ b/models/ExerciseAssignment.ts @@ -1,5 +1,5 @@ -import AssignmentFile from '../../shared/types/Dojo/AssignmentFile'; -import Assignment from './Assignment'; +import AssignmentFile from '../../shared/types/Dojo/AssignmentFile.js'; +import Assignment from './Assignment.js'; import * as Gitlab from '@gitbeaker/rest'; diff --git a/models/User.ts b/models/User.ts index df757d182bab02ccb20caa11601aba34b1527372..1ac9fa2c0fd3f3376da03de0349b4920cd2c1114 100644 --- a/models/User.ts +++ b/models/User.ts @@ -1,6 +1,6 @@ -import UserRole from './UserRole'; -import Exercise from './Exercise'; -import Assignment from './Assignment'; +import UserRole from './UserRole.js'; +import Exercise from './Exercise.js'; +import Assignment from './Assignment.js'; import * as Gitlab from '@gitbeaker/rest';