refactor(backend): naming-convention
This commit is contained in:
parent
14e1508d00
commit
7a286f5650
23 changed files with 78 additions and 62 deletions
|
@ -5,7 +5,7 @@ import cors from './middleware/cors.js';
|
||||||
import { getLogger, Logger } from './logging/initalize.js';
|
import { getLogger, Logger } from './logging/initalize.js';
|
||||||
import { responseTimeLogger } from './logging/responseTimeLogger.js';
|
import { responseTimeLogger } from './logging/responseTimeLogger.js';
|
||||||
import responseTime from 'response-time';
|
import responseTime from 'response-time';
|
||||||
import { EnvVars, getNumericEnvVar } from './util/envvars.js';
|
import { envVars, getNumericEnvVar } from './util/envVars.js';
|
||||||
import apiRouter from './routes/router.js';
|
import apiRouter from './routes/router.js';
|
||||||
import swaggerMiddleware from './swagger.js';
|
import swaggerMiddleware from './swagger.js';
|
||||||
import swaggerUi from 'swagger-ui-express';
|
import swaggerUi from 'swagger-ui-express';
|
||||||
|
@ -13,7 +13,7 @@ import swaggerUi from 'swagger-ui-express';
|
||||||
const logger: Logger = getLogger();
|
const logger: Logger = getLogger();
|
||||||
|
|
||||||
const app: Express = express();
|
const app: Express = express();
|
||||||
const port: string | number = getNumericEnvVar(EnvVars.Port);
|
const port: string | number = getNumericEnvVar(envVars.Port);
|
||||||
|
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(cors);
|
app.use(cors);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { EnvVars, getEnvVar } from './util/envvars.js';
|
import { envVars, getEnvVar } from './util/envVars.js';
|
||||||
|
|
||||||
// API
|
// API
|
||||||
export const DWENGO_API_BASE = getEnvVar(EnvVars.LearningContentRepoApiBaseUrl);
|
export const DWENGO_API_BASE = getEnvVar(envVars.LearningContentRepoApiBaseUrl);
|
||||||
export const FALLBACK_LANG = getEnvVar(EnvVars.FallbackLanguage);
|
export const FALLBACK_LANG = getEnvVar(envVars.FallbackLanguage);
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
export const LOG_LEVEL: string = 'development' === process.env.NODE_ENV ? 'debug' : 'info';
|
export const LOG_LEVEL: string = 'development' === process.env.NODE_ENV ? 'debug' : 'info';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { EnvVars, getEnvVar } from '../util/envvars.js';
|
import { envVars, getEnvVar } from '../util/envVars.js';
|
||||||
|
|
||||||
type FrontendIdpConfig = {
|
type FrontendIdpConfig = {
|
||||||
authority: string;
|
authority: string;
|
||||||
|
@ -18,14 +18,14 @@ const RESPONSE_TYPE = 'code';
|
||||||
export function getFrontendAuthConfig(): FrontendAuthConfig {
|
export function getFrontendAuthConfig(): FrontendAuthConfig {
|
||||||
return {
|
return {
|
||||||
student: {
|
student: {
|
||||||
authority: getEnvVar(EnvVars.IdpStudentUrl),
|
authority: getEnvVar(envVars.IdpStudentUrl),
|
||||||
clientId: getEnvVar(EnvVars.IdpStudentClientId),
|
clientId: getEnvVar(envVars.IdpStudentClientId),
|
||||||
scope: SCOPE,
|
scope: SCOPE,
|
||||||
responseType: RESPONSE_TYPE,
|
responseType: RESPONSE_TYPE,
|
||||||
},
|
},
|
||||||
teacher: {
|
teacher: {
|
||||||
authority: getEnvVar(EnvVars.IdpTeacherUrl),
|
authority: getEnvVar(envVars.IdpTeacherUrl),
|
||||||
clientId: getEnvVar(EnvVars.IdpTeacherClientId),
|
clientId: getEnvVar(envVars.IdpTeacherClientId),
|
||||||
scope: SCOPE,
|
scope: SCOPE,
|
||||||
responseType: RESPONSE_TYPE,
|
responseType: RESPONSE_TYPE,
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Request, Response } from 'express';
|
||||||
import { FALLBACK_LANG } from '../config.js';
|
import { FALLBACK_LANG } from '../config.js';
|
||||||
import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '../interfaces/learning-content.js';
|
import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '../interfaces/learning-content.js';
|
||||||
import learningObjectService from '../services/learning-objects/learning-object-service.js';
|
import learningObjectService from '../services/learning-objects/learning-object-service.js';
|
||||||
import { EnvVars, getEnvVar } from '../util/envvars.js';
|
import { envVars, getEnvVar } from '../util/envVars.js';
|
||||||
import { Language } from '../entities/content/language.js';
|
import { Language } from '../entities/content/language.js';
|
||||||
import { BadRequestException } from '../exceptions.js';
|
import { BadRequestException } from '../exceptions.js';
|
||||||
import attachmentService from '../services/learning-objects/attachment-service.js';
|
import attachmentService from '../services/learning-objects/attachment-service.js';
|
||||||
|
@ -14,7 +14,7 @@ function getLearningObjectIdentifierFromRequest(req: Request): LearningObjectIde
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
hruid: req.params.hruid as string,
|
hruid: req.params.hruid as string,
|
||||||
language: (req.query.language || getEnvVar(EnvVars.FallbackLanguage)) as Language,
|
language: (req.query.language || getEnvVar(envVars.FallbackLanguage)) as Language,
|
||||||
version: parseInt(req.query.version as string),
|
version: parseInt(req.query.version as string),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ export async function getUserHandler<T extends User>(req: Request, res: Response
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createUserHandler<T extends User>(req: Request, res: Response, service: UserService<T>, UserClass: new () => T) {
|
export async function createUserHandler<T extends User>(req: Request, res: Response, service: UserService<T>, userClass: new () => T) {
|
||||||
try {
|
try {
|
||||||
getLogger().debug({ req: req });
|
getLogger().debug({ req: req });
|
||||||
const userData = req.body as UserDTO;
|
const userData = req.body as UserDTO;
|
||||||
|
@ -59,7 +59,7 @@ export async function createUserHandler<T extends User>(req: Request, res: Respo
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const newUser = await service.createUser(userData, UserClass);
|
const newUser = await service.createUser(userData, userClass);
|
||||||
res.status(201).json(newUser);
|
res.status(201).json(newUser);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
getLogger().error('❌ Error creating user:', error);
|
getLogger().error('❌ Error creating user:', error);
|
||||||
|
|
|
@ -22,8 +22,8 @@ export function mapToTeacherDTO(teacher: Teacher): TeacherDTO {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function mapToTeacher(TeacherData: TeacherDTO): Teacher {
|
export function mapToTeacher(teacherDTO: TeacherDTO): Teacher {
|
||||||
const teacher = new Teacher(TeacherData.username, TeacherData.firstName, TeacherData.lastName);
|
const teacher = new Teacher(teacherDTO.username, teacherDTO.firstName, teacherDTO.lastName);
|
||||||
|
|
||||||
return teacher;
|
return teacher;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ export class Logger extends WinstonLogger {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Labels: LokiLabels = {
|
const lokiLabels: LokiLabels = {
|
||||||
source: 'Dwengo-Backend',
|
source: 'Dwengo-Backend',
|
||||||
service: 'API',
|
service: 'API',
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
|
@ -24,7 +24,7 @@ function initializeLogger(): Logger {
|
||||||
|
|
||||||
const lokiTransport: LokiTransport = new LokiTransport({
|
const lokiTransport: LokiTransport = new LokiTransport({
|
||||||
host: LOKI_HOST,
|
host: LOKI_HOST,
|
||||||
labels: Labels,
|
labels: lokiLabels,
|
||||||
level: LOG_LEVEL,
|
level: LOG_LEVEL,
|
||||||
json: true,
|
json: true,
|
||||||
format: format.combine(format.timestamp(), format.json()),
|
format: format.combine(format.timestamp(), format.json()),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { EnvVars, getEnvVar } from '../../util/envvars.js';
|
import { envVars, getEnvVar } from '../../util/envVars.js';
|
||||||
import { expressjwt } from 'express-jwt';
|
import { expressjwt } from 'express-jwt';
|
||||||
import { JwtPayload } from 'jsonwebtoken';
|
import { JwtPayload } from 'jsonwebtoken';
|
||||||
import jwksClient from 'jwks-rsa';
|
import jwksClient from 'jwks-rsa';
|
||||||
|
@ -32,12 +32,12 @@ function createJwksClient(uri: string): jwksClient.JwksClient {
|
||||||
|
|
||||||
const idpConfigs = {
|
const idpConfigs = {
|
||||||
student: {
|
student: {
|
||||||
issuer: getEnvVar(EnvVars.IdpStudentUrl),
|
issuer: getEnvVar(envVars.IdpStudentUrl),
|
||||||
jwksClient: createJwksClient(getEnvVar(EnvVars.IdpStudentJwksEndpoint)),
|
jwksClient: createJwksClient(getEnvVar(envVars.IdpStudentJwksEndpoint)),
|
||||||
},
|
},
|
||||||
teacher: {
|
teacher: {
|
||||||
issuer: getEnvVar(EnvVars.IdpTeacherUrl),
|
issuer: getEnvVar(envVars.IdpTeacherUrl),
|
||||||
jwksClient: createJwksClient(getEnvVar(EnvVars.IdpTeacherJwksEndpoint)),
|
jwksClient: createJwksClient(getEnvVar(envVars.IdpTeacherJwksEndpoint)),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ const verifyJwtToken = expressjwt({
|
||||||
}
|
}
|
||||||
return signingKey.getPublicKey();
|
return signingKey.getPublicKey();
|
||||||
},
|
},
|
||||||
audience: getEnvVar(EnvVars.IdpAudience),
|
audience: getEnvVar(envVars.IdpAudience),
|
||||||
algorithms: [JWT_ALGORITHM],
|
algorithms: [JWT_ALGORITHM],
|
||||||
credentialsRequired: false,
|
credentialsRequired: false,
|
||||||
requestProperty: REQUEST_PROPERTY_FOR_JWT_PAYLOAD,
|
requestProperty: REQUEST_PROPERTY_FOR_JWT_PAYLOAD,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import cors from 'cors';
|
import cors from 'cors';
|
||||||
import { EnvVars, getEnvVar } from '../util/envvars.js';
|
import { envVars, getEnvVar } from '../util/envVars.js';
|
||||||
|
|
||||||
export default cors({
|
export default cors({
|
||||||
origin: getEnvVar(EnvVars.CorsAllowedOrigins).split(','),
|
origin: getEnvVar(envVars.CorsAllowedOrigins).split(','),
|
||||||
allowedHeaders: getEnvVar(EnvVars.CorsAllowedHeaders).split(','),
|
allowedHeaders: getEnvVar(envVars.CorsAllowedHeaders).split(','),
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { LoggerOptions, Options } from '@mikro-orm/core';
|
import { LoggerOptions, Options } from '@mikro-orm/core';
|
||||||
import { PostgreSqlDriver } from '@mikro-orm/postgresql';
|
import { PostgreSqlDriver } from '@mikro-orm/postgresql';
|
||||||
import { EnvVars, getEnvVar, getNumericEnvVar } from './util/envvars.js';
|
import { envVars, getEnvVar, getNumericEnvVar } from './util/envVars.js';
|
||||||
import { SqliteDriver } from '@mikro-orm/sqlite';
|
import { SqliteDriver } from '@mikro-orm/sqlite';
|
||||||
import { MikroOrmLogger } from './logging/mikroOrmLogger.js';
|
import { MikroOrmLogger } from './logging/mikroOrmLogger.js';
|
||||||
import { LOG_LEVEL } from './config.js';
|
import { LOG_LEVEL } from './config.js';
|
||||||
|
@ -47,7 +47,7 @@ function config(testingMode: boolean = false): Options {
|
||||||
if (testingMode) {
|
if (testingMode) {
|
||||||
return {
|
return {
|
||||||
driver: SqliteDriver,
|
driver: SqliteDriver,
|
||||||
dbName: getEnvVar(EnvVars.DbName),
|
dbName: getEnvVar(envVars.DbName),
|
||||||
subscribers: [new SqliteAutoincrementSubscriber()],
|
subscribers: [new SqliteAutoincrementSubscriber()],
|
||||||
entities: entities,
|
entities: entities,
|
||||||
// EntitiesTs: entitiesTs,
|
// EntitiesTs: entitiesTs,
|
||||||
|
@ -60,11 +60,11 @@ function config(testingMode: boolean = false): Options {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
driver: PostgreSqlDriver,
|
driver: PostgreSqlDriver,
|
||||||
host: getEnvVar(EnvVars.DbHost),
|
host: getEnvVar(envVars.DbHost),
|
||||||
port: getNumericEnvVar(EnvVars.DbPort),
|
port: getNumericEnvVar(envVars.DbPort),
|
||||||
dbName: getEnvVar(EnvVars.DbName),
|
dbName: getEnvVar(envVars.DbName),
|
||||||
user: getEnvVar(EnvVars.DbUsername),
|
user: getEnvVar(envVars.DbUsername),
|
||||||
password: getEnvVar(EnvVars.DbPassword),
|
password: getEnvVar(envVars.DbPassword),
|
||||||
entities: entities,
|
entities: entities,
|
||||||
// EntitiesTs: entitiesTs,
|
// EntitiesTs: entitiesTs,
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { EntityManager, MikroORM } from '@mikro-orm/core';
|
import { EntityManager, MikroORM } from '@mikro-orm/core';
|
||||||
import config from './mikro-orm.config.js';
|
import config from './mikro-orm.config.js';
|
||||||
import { EnvVars, getEnvVar } from './util/envvars.js';
|
import { envVars, getEnvVar } from './util/envVars.js';
|
||||||
import { getLogger, Logger } from './logging/initalize.js';
|
import { getLogger, Logger } from './logging/initalize.js';
|
||||||
|
|
||||||
let orm: MikroORM | undefined;
|
let orm: MikroORM | undefined;
|
||||||
|
@ -12,7 +12,7 @@ export async function initORM(testingMode: boolean = false) {
|
||||||
|
|
||||||
orm = await MikroORM.init(config(testingMode));
|
orm = await MikroORM.init(config(testingMode));
|
||||||
// Update the database scheme if necessary and enabled.
|
// Update the database scheme if necessary and enabled.
|
||||||
if (getEnvVar(EnvVars.DbUpdate)) {
|
if (getEnvVar(envVars.DbUpdate)) {
|
||||||
await orm.schema.updateSchema();
|
await orm.schema.updateSchema();
|
||||||
} else {
|
} else {
|
||||||
const diff = await orm.schema.getUpdateSchemaSQL();
|
const diff = await orm.schema.getUpdateSchemaSQL();
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '../../interfaces/learning-content.js';
|
import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '../../interfaces/learning-content.js';
|
||||||
import dwengoApiLearningObjectProvider from './dwengo-api-learning-object-provider.js';
|
import dwengoApiLearningObjectProvider from './dwengo-api-learning-object-provider.js';
|
||||||
import { LearningObjectProvider } from './learning-object-provider.js';
|
import { LearningObjectProvider } from './learning-object-provider.js';
|
||||||
import { EnvVars, getEnvVar } from '../../util/envvars.js';
|
import { envVars, getEnvVar } from '../../util/envVars.js';
|
||||||
import databaseLearningObjectProvider from './database-learning-object-provider.js';
|
import databaseLearningObjectProvider from './database-learning-object-provider.js';
|
||||||
|
|
||||||
function getProvider(id: LearningObjectIdentifier): LearningObjectProvider {
|
function getProvider(id: LearningObjectIdentifier): LearningObjectProvider {
|
||||||
if (id.hruid.startsWith(getEnvVar(EnvVars.UserContentPrefix))) {
|
if (id.hruid.startsWith(getEnvVar(envVars.UserContentPrefix))) {
|
||||||
return databaseLearningObjectProvider;
|
return databaseLearningObjectProvider;
|
||||||
}
|
}
|
||||||
return dwengoApiLearningObjectProvider;
|
return dwengoApiLearningObjectProvider;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { LearningPath, LearningPathResponse } from '../../interfaces/learning-content.js';
|
import { LearningPath, LearningPathResponse } from '../../interfaces/learning-content.js';
|
||||||
import dwengoApiLearningPathProvider from './dwengo-api-learning-path-provider.js';
|
import dwengoApiLearningPathProvider from './dwengo-api-learning-path-provider.js';
|
||||||
import databaseLearningPathProvider from './database-learning-path-provider.js';
|
import databaseLearningPathProvider from './database-learning-path-provider.js';
|
||||||
import { EnvVars, getEnvVar } from '../../util/envvars.js';
|
import { envVars, getEnvVar } from '../../util/envVars.js';
|
||||||
import { Language } from '../../entities/content/language.js';
|
import { Language } from '../../entities/content/language.js';
|
||||||
import { PersonalizationTarget } from './learning-path-personalization-util.js';
|
import { PersonalizationTarget } from './learning-path-personalization-util.js';
|
||||||
|
|
||||||
const userContentPrefix = getEnvVar(EnvVars.UserContentPrefix);
|
const userContentPrefix = getEnvVar(envVars.UserContentPrefix);
|
||||||
const allProviders = [dwengoApiLearningPathProvider, databaseLearningPathProvider];
|
const allProviders = [dwengoApiLearningPathProvider, databaseLearningPathProvider];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -24,8 +24,8 @@ export class UserService<T extends User> {
|
||||||
return user ? mapToUserDTO(user) : null;
|
return user ? mapToUserDTO(user) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async createUser(userData: UserDTO, UserClass: new () => T): Promise<T> {
|
async createUser(userData: UserDTO, userClass: new () => T): Promise<T> {
|
||||||
const newUser = mapToUser(userData, new UserClass());
|
const newUser = mapToUser(userData, new userClass());
|
||||||
await this.repository.save(newUser);
|
await this.repository.save(newUser);
|
||||||
return newUser;
|
return newUser;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ const CORS_PREFIX = PREFIX + 'CORS_';
|
||||||
|
|
||||||
type EnvVar = { key: string; required?: boolean; defaultValue?: any };
|
type EnvVar = { key: string; required?: boolean; defaultValue?: any };
|
||||||
|
|
||||||
export const EnvVars: { [key: string]: EnvVar } = {
|
export const envVars: { [key: string]: EnvVar } = {
|
||||||
Port: { key: PREFIX + 'PORT', defaultValue: 3000 },
|
Port: { key: PREFIX + 'PORT', defaultValue: 3000 },
|
||||||
DbHost: { key: DB_PREFIX + 'HOST', required: true },
|
DbHost: { key: DB_PREFIX + 'HOST', required: true },
|
||||||
DbPort: { key: DB_PREFIX + 'PORT', defaultValue: 5432 },
|
DbPort: { key: DB_PREFIX + 'PORT', defaultValue: 5432 },
|
|
@ -6,7 +6,7 @@ import learningObjectExample from '../../test-assets/learning-objects/pn-werking
|
||||||
import learningObjectService from '../../../src/services/learning-objects/learning-object-service';
|
import learningObjectService from '../../../src/services/learning-objects/learning-object-service';
|
||||||
import { LearningObjectIdentifier, LearningPathIdentifier } from '../../../src/interfaces/learning-content';
|
import { LearningObjectIdentifier, LearningPathIdentifier } from '../../../src/interfaces/learning-content';
|
||||||
import { Language } from '../../../src/entities/content/language';
|
import { Language } from '../../../src/entities/content/language';
|
||||||
import { EnvVars, getEnvVar } from '../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../src/util/envVars';
|
||||||
import { LearningPath } from '../../../src/entities/content/learning-path.entity';
|
import { LearningPath } from '../../../src/entities/content/learning-path.entity';
|
||||||
import learningPathExample from '../../test-assets/learning-paths/pn-werking-example';
|
import learningPathExample from '../../test-assets/learning-paths/pn-werking-example';
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ describe('LearningObjectService', () => {
|
||||||
expect(result).not.toBeNull();
|
expect(result).not.toBeNull();
|
||||||
|
|
||||||
const responseFromDwengoApi = await fetch(
|
const responseFromDwengoApi = await fetch(
|
||||||
getEnvVar(EnvVars.LearningContentRepoApiBaseUrl) +
|
getEnvVar(envVars.LearningContentRepoApiBaseUrl) +
|
||||||
`/learningObject/getRaw?hruid=${DWENGO_TEST_LEARNING_OBJECT_ID.hruid}&language=${DWENGO_TEST_LEARNING_OBJECT_ID.language}&version=${DWENGO_TEST_LEARNING_OBJECT_ID.version}`
|
`/learningObject/getRaw?hruid=${DWENGO_TEST_LEARNING_OBJECT_ID.hruid}&language=${DWENGO_TEST_LEARNING_OBJECT_ID.language}&version=${DWENGO_TEST_LEARNING_OBJECT_ID.version}`
|
||||||
);
|
);
|
||||||
const responseHtml = await responseFromDwengoApi.text();
|
const responseHtml = await responseFromDwengoApi.text();
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { LearningObject } from '../../../../src/entities/content/learning-object
|
||||||
import { Language } from '../../../../src/entities/content/language';
|
import { Language } from '../../../../src/entities/content/language';
|
||||||
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
||||||
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
||||||
import { EnvVars, getEnvVar } from '../../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../../src/util/envVars';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a dummy learning object to be used in tests where multiple learning objects are needed (for example for use
|
* Create a dummy learning object to be used in tests where multiple learning objects are needed (for example for use
|
||||||
|
@ -13,7 +13,7 @@ export function dummyLearningObject(hruid: string, language: Language, title: st
|
||||||
return {
|
return {
|
||||||
createLearningObject: () => {
|
createLearningObject: () => {
|
||||||
const learningObject = new LearningObject();
|
const learningObject = new LearningObject();
|
||||||
learningObject.hruid = getEnvVar(EnvVars.UserContentPrefix) + hruid;
|
learningObject.hruid = getEnvVar(envVars.UserContentPrefix) + hruid;
|
||||||
learningObject.language = language;
|
learningObject.language = language;
|
||||||
learningObject.version = 1;
|
learningObject.version = 1;
|
||||||
learningObject.title = title;
|
learningObject.title = title;
|
||||||
|
|
|
@ -4,14 +4,14 @@ import { DwengoContentType } from '../../../../src/services/learning-objects/pro
|
||||||
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
||||||
import { EducationalGoal, LearningObject, ReturnValue } from '../../../../src/entities/content/learning-object.entity';
|
import { EducationalGoal, LearningObject, ReturnValue } from '../../../../src/entities/content/learning-object.entity';
|
||||||
import { Attachment } from '../../../../src/entities/content/attachment.entity';
|
import { Attachment } from '../../../../src/entities/content/attachment.entity';
|
||||||
import { EnvVars, getEnvVar } from '../../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../../src/util/envVars';
|
||||||
|
|
||||||
const ASSETS_PREFIX = 'learning-objects/pn-werkingnotebooks/';
|
const ASSETS_PREFIX = 'learning-objects/pn-werkingnotebooks/';
|
||||||
|
|
||||||
const example: LearningObjectExample = {
|
const example: LearningObjectExample = {
|
||||||
createLearningObject: () => {
|
createLearningObject: () => {
|
||||||
const learningObject = new LearningObject();
|
const learningObject = new LearningObject();
|
||||||
learningObject.hruid = `${getEnvVar(EnvVars.UserContentPrefix)}pn_werkingnotebooks`;
|
learningObject.hruid = `${getEnvVar(envVars.UserContentPrefix)}pn_werkingnotebooks`;
|
||||||
learningObject.version = 3;
|
learningObject.version = 3;
|
||||||
learningObject.language = Language.Dutch;
|
learningObject.language = Language.Dutch;
|
||||||
learningObject.title = 'Werken met notebooks';
|
learningObject.title = 'Werken met notebooks';
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import { LearningObjectExample } from '../learning-object-example';
|
import { LearningObjectExample } from '../learning-object-example';
|
||||||
import { LearningObject } from '../../../../src/entities/content/learning-object.entity';
|
import { LearningObject } from '../../../../src/entities/content/learning-object.entity';
|
||||||
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
||||||
import { EnvVars, getEnvVar } from '../../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../../src/util/envVars';
|
||||||
import { Language } from '../../../../src/entities/content/language';
|
import { Language } from '../../../../src/entities/content/language';
|
||||||
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
||||||
|
|
||||||
const example: LearningObjectExample = {
|
const example: LearningObjectExample = {
|
||||||
createLearningObject: () => {
|
createLearningObject: () => {
|
||||||
const learningObject = new LearningObject();
|
const learningObject = new LearningObject();
|
||||||
learningObject.hruid = `${getEnvVar(EnvVars.UserContentPrefix)}test_essay`;
|
learningObject.hruid = `${getEnvVar(envVars.UserContentPrefix)}test_essay`;
|
||||||
learningObject.language = Language.English;
|
learningObject.language = Language.English;
|
||||||
learningObject.version = 1;
|
learningObject.version = 1;
|
||||||
learningObject.title = 'Essay question for testing';
|
learningObject.title = 'Essay question for testing';
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import { LearningObjectExample } from '../learning-object-example';
|
import { LearningObjectExample } from '../learning-object-example';
|
||||||
import { LearningObject } from '../../../../src/entities/content/learning-object.entity';
|
import { LearningObject } from '../../../../src/entities/content/learning-object.entity';
|
||||||
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
import { loadTestAsset } from '../../../test-utils/load-test-asset';
|
||||||
import { EnvVars, getEnvVar } from '../../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../../src/util/envVars';
|
||||||
import { Language } from '../../../../src/entities/content/language';
|
import { Language } from '../../../../src/entities/content/language';
|
||||||
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type';
|
||||||
|
|
||||||
const example: LearningObjectExample = {
|
const example: LearningObjectExample = {
|
||||||
createLearningObject: () => {
|
createLearningObject: () => {
|
||||||
const learningObject = new LearningObject();
|
const learningObject = new LearningObject();
|
||||||
learningObject.hruid = `${getEnvVar(EnvVars.UserContentPrefix)}test_multiple_choice`;
|
learningObject.hruid = `${getEnvVar(envVars.UserContentPrefix)}test_multiple_choice`;
|
||||||
learningObject.language = Language.English;
|
learningObject.language = Language.English;
|
||||||
learningObject.version = 1;
|
learningObject.version = 1;
|
||||||
learningObject.title = 'Multiple choice question for testing';
|
learningObject.title = 'Multiple choice question for testing';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { LearningPath } from '../../../src/entities/content/learning-path.entity';
|
import { LearningPath } from '../../../src/entities/content/learning-path.entity';
|
||||||
import { Language } from '../../../src/entities/content/language';
|
import { Language } from '../../../src/entities/content/language';
|
||||||
import { EnvVars, getEnvVar } from '../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../src/util/envVars';
|
||||||
import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils';
|
import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils';
|
||||||
import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity';
|
import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity';
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ const example: LearningPathExample = {
|
||||||
createLearningPath: () => {
|
createLearningPath: () => {
|
||||||
const path = new LearningPath();
|
const path = new LearningPath();
|
||||||
path.language = Language.Dutch;
|
path.language = Language.Dutch;
|
||||||
path.hruid = `${getEnvVar(EnvVars.UserContentPrefix)}pn_werking`;
|
path.hruid = `${getEnvVar(envVars.UserContentPrefix)}pn_werking`;
|
||||||
path.title = 'Werken met notebooks';
|
path.title = 'Werken met notebooks';
|
||||||
path.description = 'Een korte inleiding tot Python notebooks. Hoe ga je gemakkelijk en efficiënt met de notebooks aan de slag?';
|
path.description = 'Een korte inleiding tot Python notebooks. Hoe ga je gemakkelijk en efficiënt met de notebooks aan de slag?';
|
||||||
path.nodes = createNodes(path);
|
path.nodes = createNodes(path);
|
||||||
|
|
|
@ -4,7 +4,7 @@ import testMultipleChoiceExample from '../learning-objects/test-multiple-choice/
|
||||||
import { dummyLearningObject } from '../learning-objects/dummy/dummy-learning-object-example';
|
import { dummyLearningObject } from '../learning-objects/dummy/dummy-learning-object-example';
|
||||||
import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils';
|
import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils';
|
||||||
import { LearningObject } from '../../../src/entities/content/learning-object.entity';
|
import { LearningObject } from '../../../src/entities/content/learning-object.entity';
|
||||||
import { EnvVars, getEnvVar } from '../../../src/util/envvars';
|
import { envVars, getEnvVar } from '../../../src/util/envVars';
|
||||||
|
|
||||||
export type ConditionTestLearningPathAndLearningObjects = {
|
export type ConditionTestLearningPathAndLearningObjects = {
|
||||||
branchingObject: LearningObject;
|
branchingObject: LearningObject;
|
||||||
|
@ -15,7 +15,7 @@ export type ConditionTestLearningPathAndLearningObjects = {
|
||||||
|
|
||||||
export function createConditionTestLearningPathAndLearningObjects() {
|
export function createConditionTestLearningPathAndLearningObjects() {
|
||||||
const learningPath = new LearningPath();
|
const learningPath = new LearningPath();
|
||||||
learningPath.hruid = `${getEnvVar(EnvVars.UserContentPrefix)}test_conditions`;
|
learningPath.hruid = `${getEnvVar(envVars.UserContentPrefix)}test_conditions`;
|
||||||
learningPath.language = Language.English;
|
learningPath.language = Language.English;
|
||||||
learningPath.title = 'Example learning path with conditional transitions';
|
learningPath.title = 'Example learning path with conditional transitions';
|
||||||
learningPath.description = 'This learning path was made for the purpose of testing conditional transitions';
|
learningPath.description = 'This learning path was made for the purpose of testing conditional transitions';
|
||||||
|
@ -78,7 +78,3 @@ export function createConditionTestLearningPathAndLearningObjects() {
|
||||||
learningPath: learningPath,
|
learningPath: learningPath,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const _example: LearningPathExample = {
|
|
||||||
createLearningPath: () => createConditionTestLearningPathAndLearningObjects().learningPath,
|
|
||||||
};
|
|
||||||
|
|
|
@ -28,6 +28,27 @@ export default [
|
||||||
reportUnusedInlineConfigs: 'error',
|
reportUnusedInlineConfigs: 'error',
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
|
'@typescript-eslint/naming-convention': [
|
||||||
|
'warn',
|
||||||
|
{ // Enforce that all variables, functions and properties are camelCase
|
||||||
|
selector: 'variableLike',
|
||||||
|
format: ['camelCase'],
|
||||||
|
leadingUnderscore: 'allow'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: 'variable',
|
||||||
|
modifiers: ['const'],
|
||||||
|
format: ['camelCase', 'UPPER_CASE'],
|
||||||
|
trailingUnderscore: 'allow'
|
||||||
|
},
|
||||||
|
{ // Enforce that private members are prefixed with an underscore
|
||||||
|
selector: 'memberLike',
|
||||||
|
modifiers: ['private'],
|
||||||
|
format: ['camelCase'],
|
||||||
|
leadingUnderscore: 'allow',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
'no-unused-expressions': 'off',
|
'no-unused-expressions': 'off',
|
||||||
'@typescript-eslint/no-unused-expressions': 'warn',
|
'@typescript-eslint/no-unused-expressions': 'warn',
|
||||||
'no-unused-vars': 'off',
|
'no-unused-vars': 'off',
|
||||||
|
@ -57,7 +78,6 @@ export default [
|
||||||
|
|
||||||
'arrow-body-style': ['warn', 'as-needed'],
|
'arrow-body-style': ['warn', 'as-needed'],
|
||||||
'block-scoped-var': 'warn',
|
'block-scoped-var': 'warn',
|
||||||
camelcase: 'warn',
|
|
||||||
'capitalized-comments': 'warn',
|
'capitalized-comments': 'warn',
|
||||||
'consistent-return': 'warn',
|
'consistent-return': 'warn',
|
||||||
'consistent-this': 'error',
|
'consistent-this': 'error',
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue