Skip to content
Snippets Groups Projects
Commit 8afcb347 authored by michael.minelli's avatar michael.minelli
Browse files

Adapt to ESM notation (for code compatibility with other Dojo projects)

parent 265c1759
No related branches found
No related tags found
No related merge requests found
Showing
with 532 additions and 86 deletions
Subproject commit f572bf3afa0a98675247df85c599b5d1e5a62d0d Subproject commit ef5c7bd49a57bc28db77bad797de4980133d6523
...@@ -9,5 +9,5 @@ ...@@ -9,5 +9,5 @@
"verbose": true, "verbose": true,
"ext" : ".ts,.js", "ext" : ".ts,.js",
"ignore" : [], "ignore" : [],
"exec" : "npm run lint; npm run build:openapi; ts-node --files ./src/app.ts" "exec" : "npm run lint; npm run build:openapi; tsc --noEmit && npx tsx src/app.ts"
} }
This diff is collapsed.
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
"nodemon" : "^3.0.3", "nodemon" : "^3.0.3",
"npm" : "^10.4.0", "npm" : "^10.4.0",
"prisma" : "^5.9.1", "prisma" : "^5.9.1",
"ts-node" : "^10.9.2", "tsx" : "^4.7.1",
"typescript" : "^5.3.3" "typescript" : "^5.4.3"
} }
} }
require('../src/InitialImports'); // ATTENTION : These lines MUST be the first of this file // ATTENTION : This line MUST be the first of this file
import '../src/init.js';
import * as process from 'process'; import * as process from 'process';
import SharedConfig from '../src/shared/config/SharedConfig'; import SharedConfig from '../src/shared/config/SharedConfig.js';
import { UserRole } from '@prisma/client'; import { UserRole } from '@prisma/client';
import logger from '../src/shared/logging/WinstonLogger'; import logger from '../src/shared/logging/WinstonLogger.js';
import db from '../src/helpers/DatabaseHelper'; import db from '../src/helpers/DatabaseHelper.js';
async function main() { async function main() {
......
import path from 'node:path';
import cluster from 'node:cluster';
import myEnv = require('dotenv');
import dotenvExpand = require('dotenv-expand');
if ( cluster.isPrimary ) {
if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) {
dotenvExpand.expand(myEnv.config());
} else {
myEnv.config({ path: path.join(__dirname, '../.env.keys') });
dotenvExpand.expand(myEnv.config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }));
}
}
require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be after the dotenv.config() calls
require('./InitialImports'); // ATTENTION : These lines MUST be the first of this file // ATTENTION : This line MUST be the first of this file
import './init.js';
import SharedConfig from './shared/config/SharedConfig'; import SharedConfig from './shared/config/SharedConfig.js';
import WorkerRole from './process/WorkerRole'; import WorkerRole from './process/WorkerRole.js';
import ClusterManager from './process/ClusterManager'; import ClusterManager from './process/ClusterManager.js';
import API from './express/API'; import API from './express/API.js';
import HttpManager from './managers/HttpManager'; import HttpManager from './managers/HttpManager.js';
HttpManager.registerAxiosInterceptor(); HttpManager.registerAxiosInterceptor();
......
import path from 'path'; import path from 'path';
import fs from 'fs'; import fs from 'fs';
import { Exercise } from '../types/DatabaseTypes'; import { Exercise } from '../types/DatabaseTypes.js';
import JSON5 from 'json5'; import JSON5 from 'json5';
import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility'; import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility.js';
type ConfigGitlabBadge = { type ConfigGitlabBadge = {
......
import { getReasonPhrase, StatusCodes } from 'http-status-codes'; import { getReasonPhrase, StatusCodes } from 'http-status-codes';
import * as jwt from 'jsonwebtoken'; import * as jwt from 'jsonwebtoken';
import { JwtPayload } from 'jsonwebtoken'; import { JwtPayload } from 'jsonwebtoken';
import Config from '../config/Config'; import Config from '../config/Config.js';
import express from 'express'; import express from 'express';
import UserManager from '../managers/UserManager'; import UserManager from '../managers/UserManager.js';
import { User } from '../types/DatabaseTypes'; import { User } from '../types/DatabaseTypes.js';
import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse'; import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse.js';
class Session { class Session {
......
import { Express } from 'express-serve-static-core'; import { Express } from 'express-serve-static-core';
import cors from 'cors'; import cors from 'cors';
import morganMiddleware from '../logging/MorganMiddleware'; import morganMiddleware from '../logging/MorganMiddleware.js';
import { AddressInfo } from 'net'; import { AddressInfo } from 'net';
import http from 'http'; import http from 'http';
import helmet from 'helmet'; import helmet from 'helmet';
import express from 'express'; import express from 'express';
import WorkerTask from '../process/WorkerTask'; import WorkerTask from '../process/WorkerTask.js';
import multer from 'multer'; import multer from 'multer';
import SessionMiddleware from '../middlewares/SessionMiddleware'; import SessionMiddleware from '../middlewares/SessionMiddleware.js';
import Config from '../config/Config'; import Config from '../config/Config.js';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger.js';
import ParamsCallbackManager from '../middlewares/ParamsCallbackManager'; import ParamsCallbackManager from '../middlewares/ParamsCallbackManager.js';
import ApiRoutesManager from '../routes/ApiRoutesManager'; import ApiRoutesManager from '../routes/ApiRoutesManager.js';
import compression from 'compression'; import compression from 'compression';
import ClientVersionCheckerMiddleware from '../middlewares/ClientVersionCheckerMiddleware'; import ClientVersionCheckerMiddleware from '../middlewares/ClientVersionCheckerMiddleware.js';
import swaggerUi from 'swagger-ui-express'; import swaggerUi from 'swagger-ui-express';
import path from 'path'; import path from 'path';
import DojoCliVersionHelper from '../helpers/DojoCliVersionHelper'; import DojoCliVersionHelper from '../helpers/DojoCliVersionHelper.js';
class API implements WorkerTask { class API implements WorkerTask {
......
import { PrismaClient } from '@prisma/client'; import { PrismaClient } from '@prisma/client';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger.js';
import UserQueryExtension from './Prisma/Extensions/UserQueryExtension'; import UserQueryExtension from './Prisma/Extensions/UserQueryExtension.js';
import UserResultExtension from './Prisma/Extensions/UserResultExtension'; import UserResultExtension from './Prisma/Extensions/UserResultExtension.js';
import AssignmentResultExtension from './Prisma/Extensions/AssignmentResultExtension'; import AssignmentResultExtension from './Prisma/Extensions/AssignmentResultExtension.js';
import ExerciseResultExtension from './Prisma/Extensions/ExerciseResultExtension'; import ExerciseResultExtension from './Prisma/Extensions/ExerciseResultExtension.js';
const prisma = new PrismaClient({ const prisma = new PrismaClient({
......
import Config from '../config/Config'; import Config from '../config/Config.js';
import GitlabManager from '../managers/GitlabManager'; import GitlabManager from '../managers/GitlabManager.js';
import * as Gitlab from '@gitbeaker/rest'; import * as Gitlab from '@gitbeaker/rest';
......
import LazyVal from '../shared/helpers/LazyVal'; import LazyVal from '../shared/helpers/LazyVal.js';
class DojoModelsHelper { class DojoModelsHelper {
......
import Config from '../config/Config'; import Config from '../config/Config.js';
import { CustomValidator, ErrorMessage, FieldMessageFactory, Meta } from 'express-validator/src/base'; import { CustomValidator, ErrorMessage, FieldMessageFactory, Meta } from 'express-validator/src/base';
import { BailOptions, ValidationChain } from 'express-validator/src/chain'; import { BailOptions, ValidationChain } from 'express-validator/src/chain';
import GitlabManager from '../managers/GitlabManager'; import GitlabManager from '../managers/GitlabManager.js';
import express from 'express'; import express from 'express';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger.js';
import Json5FileValidator from '../shared/helpers/Json5FileValidator'; import Json5FileValidator from '../shared/helpers/Json5FileValidator.js';
import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile'; import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile.js';
import ParamsCallbackManager from '../middlewares/ParamsCallbackManager'; import ParamsCallbackManager from '../middlewares/ParamsCallbackManager.js';
import ExerciseManager from '../managers/ExerciseManager'; import ExerciseManager from '../managers/ExerciseManager.js';
declare type DojoMeta = Meta & { declare type DojoMeta = Meta & {
......
import express from 'express'; import express from 'express';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger.js';
import GitlabManager from '../managers/GitlabManager'; import GitlabManager from '../managers/GitlabManager.js';
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode.js';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import { GitbeakerRequestError } from '@gitbeaker/requester-utils'; import { GitbeakerRequestError } from '@gitbeaker/requester-utils';
import * as Gitlab from '@gitbeaker/rest'; import * as Gitlab from '@gitbeaker/rest';
......
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import { Exercise } from '../../../types/DatabaseTypes'; import { Exercise } from '../../../types/DatabaseTypes.js';
import db from '../../DatabaseHelper'; import db from '../../DatabaseHelper.js';
import LazyVal from '../../../shared/helpers/LazyVal'; import LazyVal from '../../../shared/helpers/LazyVal.js';
async function getCorrections(assignment: { name: string }): Promise<Array<Partial<Exercise>> | undefined> { async function getCorrections(assignment: { name: string }): Promise<Array<Partial<Exercise>> | undefined> {
......
import { Prisma, UserRole } from '@prisma/client'; import { Prisma, UserRole } from '@prisma/client';
import LazyVal from '../../../shared/helpers/LazyVal'; import LazyVal from '../../../shared/helpers/LazyVal.js';
import * as Gitlab from '@gitbeaker/rest'; import * as Gitlab from '@gitbeaker/rest';
import GitlabManager from '../../../managers/GitlabManager'; import GitlabManager from '../../../managers/GitlabManager.js';
export default Prisma.defineExtension(client => { export default Prisma.defineExtension(client => {
......
import path from 'node:path';
import cluster from 'node:cluster';
import dotenv from 'dotenv';
import dotenvExpand from 'dotenv-expand';
import './shared/helpers/TypeScriptExtensions.js';
if ( cluster.isPrimary ) {
if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) {
dotenvExpand.expand(dotenv.config());
} else {
dotenv.config({ path: path.join(__dirname, '../.env.keys') });
dotenvExpand.expand(dotenv.config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }));
}
}
import morgan, { StreamOptions } from 'morgan'; import morgan, { StreamOptions } from 'morgan';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger.js';
const stream: StreamOptions = { const stream: StreamOptions = {
......
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import { Assignment, User } from '../types/DatabaseTypes'; import { Assignment, User } from '../types/DatabaseTypes.js';
import db from '../helpers/DatabaseHelper'; import db from '../helpers/DatabaseHelper.js';
class AssignmentManager { class AssignmentManager {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment