diff --git a/backend/config.js b/backend/config.js deleted file mode 100644 index be42027c..00000000 --- a/backend/config.js +++ /dev/null @@ -1,7 +0,0 @@ -// Can be placed in dotenv but found it redundant -// Import dotenv from "dotenv"; -// Load .env file -// Dotenv.config(); -export const DWENGO_API_BASE = 'https://dwengo.org/backend/api'; -export const FALLBACK_LANG = 'nl'; -export const FALLBACK_SEQ_NUM = 1; diff --git a/backend/package.json b/backend/package.json index c09ac285..4ccf9814 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,12 +1,13 @@ { - "name": "dwengo-1-backend", + "name": "@dwengo-1/backend", "version": "0.1.1", "description": "Backend for Dwengo-1", "private": true, "type": "module", + "main": "dist/app.js", "scripts": { - "build": "cross-env NODE_ENV=production tsc --project tsconfig.json", - "dev": "cross-env NODE_ENV=development tsx watch --env-file=.env.development.local src/app.ts", + "build": "cross-env NODE_ENV=production tsc --build", + "dev": "cross-env NODE_ENV=development tsc --build --watch --env-file=.env.development.local", "start": "cross-env NODE_ENV=production node --env-file=.env dist/app.js", "format": "prettier --write src/", "format-check": "prettier --check src/", diff --git a/backend/src/controllers/assignments.ts b/backend/src/controllers/assignments.ts index 21bd568c..1520fc10 100644 --- a/backend/src/controllers/assignments.ts +++ b/backend/src/controllers/assignments.ts @@ -1,7 +1,6 @@ import { Request, Response } from 'express'; import { createAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js'; - -import { AssignmentDTO } from 'dwengo-1-common/src/interfaces/assignment'; +import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; // Typescript is annoying with parameter forwarding from class.ts interface AssignmentParams { diff --git a/backend/src/controllers/classes.ts b/backend/src/controllers/classes.ts index 40683c6a..a041bf22 100644 --- a/backend/src/controllers/classes.ts +++ b/backend/src/controllers/classes.ts @@ -1,7 +1,6 @@ import { Request, Response } from 'express'; import { createClass, getAllClasses, getClass, getClassStudents, getClassStudentsIds, getClassTeacherInvitations } from '../services/classes.js'; - -import { ClassDTO } from 'dwengo-1-common/src/interfaces/class'; +import { ClassDTO } from '@dwengo-1/common/interfaces/class'; export async function getAllClassesHandler(req: Request, res: Response): Promise { const full = req.query.full === 'true'; diff --git a/backend/src/controllers/groups.ts b/backend/src/controllers/groups.ts index 6258cb20..989066a6 100644 --- a/backend/src/controllers/groups.ts +++ b/backend/src/controllers/groups.ts @@ -1,7 +1,6 @@ import { Request, Response } from 'express'; import { createGroup, getAllGroups, getGroup, getGroupSubmissions } from '../services/groups.js'; - -import { GroupDTO } from 'dwengo-1-common/src/interfaces/group'; +import { GroupDTO } from '@dwengo-1/common/interfaces/group'; // Typescript is annoywith with parameter forwarding from class.ts interface GroupParams { diff --git a/backend/src/controllers/learning-objects.ts b/backend/src/controllers/learning-objects.ts index 710999ce..eb8865a8 100644 --- a/backend/src/controllers/learning-objects.ts +++ b/backend/src/controllers/learning-objects.ts @@ -2,11 +2,11 @@ import { Request, Response } from 'express'; import { FALLBACK_LANG } from '../config.js'; import learningObjectService from '../services/learning-objects/learning-object-service.js'; import { envVars, getEnvVar } from '../util/envVars.js'; -import { Language } from '../entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; import attachmentService from '../services/learning-objects/attachment-service.js'; import { NotFoundError } from '@mikro-orm/core'; import { BadRequestException } from '../exceptions/bad-request-exception.js'; -import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; function getLearningObjectIdentifierFromRequest(req: Request): LearningObjectIdentifier { if (!req.params.hruid) { diff --git a/backend/src/controllers/learning-paths.ts b/backend/src/controllers/learning-paths.ts index 04e44b59..0097d568 100644 --- a/backend/src/controllers/learning-paths.ts +++ b/backend/src/controllers/learning-paths.ts @@ -2,7 +2,7 @@ import { Request, Response } from 'express'; import { themes } from '../data/themes.js'; import { FALLBACK_LANG } from '../config.js'; import learningPathService from '../services/learning-paths/learning-path-service.js'; -import { Language } from '../entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; import { PersonalizationTarget, personalizedForGroup, diff --git a/backend/src/controllers/questions.ts b/backend/src/controllers/questions.ts index 089931f3..b5b764ac 100644 --- a/backend/src/controllers/questions.ts +++ b/backend/src/controllers/questions.ts @@ -2,8 +2,8 @@ import { Request, Response } from 'express'; import { createQuestion, deleteQuestion, getAllQuestions, getAnswersByQuestion, getQuestion } from '../services/questions.js'; import { FALLBACK_LANG, FALLBACK_SEQ_NUM } from '../config.js'; import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js'; -import { Language } from '../entities/content/language.js'; -import { QuestionDTO, QuestionId } from 'dwengo-1-common/src/interfaces/question'; +import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question'; +import { Language } from '@dwengo-1/common/util/language'; function getObjectId(req: Request, res: Response): LearningObjectIdentifier | null { const { hruid, version } = req.params; diff --git a/backend/src/controllers/students.ts b/backend/src/controllers/students.ts index 047940b1..54aae143 100644 --- a/backend/src/controllers/students.ts +++ b/backend/src/controllers/students.ts @@ -10,7 +10,7 @@ import { getStudentSubmissions, } from '../services/students.js'; -import { StudentDTO } from 'dwengo-1-common/src/interfaces/student'; +import { StudentDTO } from '@dwengo-1/common/interfaces/student'; // TODO: accept arguments (full, ...) // TODO: endpoints diff --git a/backend/src/controllers/submissions.ts b/backend/src/controllers/submissions.ts index df0f6e48..239eb6d7 100644 --- a/backend/src/controllers/submissions.ts +++ b/backend/src/controllers/submissions.ts @@ -1,8 +1,7 @@ import { Request, Response } from 'express'; import { createSubmission, deleteSubmission, getSubmission } from '../services/submissions.js'; -import { Language, languageMap } from '../entities/content/language.js'; - -import { SubmissionDTO } from 'dwengo-1-common/src/interfaces/submission'; +import { SubmissionDTO } from '@dwengo-1/common/interfaces/submission'; +import { Language, languageMap } from '@dwengo-1/common/util/language'; interface SubmissionParams { hruid: string; diff --git a/backend/src/controllers/teachers.ts b/backend/src/controllers/teachers.ts index 347e2b53..c3894bd6 100644 --- a/backend/src/controllers/teachers.ts +++ b/backend/src/controllers/teachers.ts @@ -8,8 +8,7 @@ import { getStudentsByTeacher, getTeacher, } from '../services/teachers.js'; - -import { TeacherDTO } from 'dwengo-1-common/src/interfaces/teacher'; +import { TeacherDTO } from '@dwengo-1/common/interfaces/teacher'; export async function getAllTeachersHandler(req: Request, res: Response): Promise { const full = req.query.full === 'true'; diff --git a/backend/src/data/content/attachment-repository.ts b/backend/src/data/content/attachment-repository.ts index 73baa943..69178b1c 100644 --- a/backend/src/data/content/attachment-repository.ts +++ b/backend/src/data/content/attachment-repository.ts @@ -1,6 +1,6 @@ import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; import { Attachment } from '../../entities/content/attachment.entity.js'; -import { Language } from '../../entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { LearningObjectIdentifier } from '../../entities/content/learning-object-identifier'; export class AttachmentRepository extends DwengoEntityRepository { diff --git a/backend/src/data/content/learning-object-repository.ts b/backend/src/data/content/learning-object-repository.ts index 4684c6cc..889a1594 100644 --- a/backend/src/data/content/learning-object-repository.ts +++ b/backend/src/data/content/learning-object-repository.ts @@ -1,7 +1,7 @@ import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; import { LearningObject } from '../../entities/content/learning-object.entity.js'; import { LearningObjectIdentifier } from '../../entities/content/learning-object-identifier.js'; -import { Language } from '../../entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; import { Teacher } from '../../entities/users/teacher.entity.js'; export class LearningObjectRepository extends DwengoEntityRepository { diff --git a/backend/src/data/content/learning-path-repository.ts b/backend/src/data/content/learning-path-repository.ts index e34508ec..87035f21 100644 --- a/backend/src/data/content/learning-path-repository.ts +++ b/backend/src/data/content/learning-path-repository.ts @@ -1,6 +1,6 @@ import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; import { LearningPath } from '../../entities/content/learning-path.entity.js'; -import { Language } from '../../entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; export class LearningPathRepository extends DwengoEntityRepository { public async findByHruidAndLanguage(hruid: string, language: Language): Promise { diff --git a/backend/src/entities/assignments/assignment.entity.ts b/backend/src/entities/assignments/assignment.entity.ts index daa71ed6..36b24344 100644 --- a/backend/src/entities/assignments/assignment.entity.ts +++ b/backend/src/entities/assignments/assignment.entity.ts @@ -1,7 +1,7 @@ import { Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core'; import { Class } from '../classes/class.entity.js'; import { Group } from './group.entity.js'; -import { Language } from '../content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; import { AssignmentRepository } from '../../data/assignments/assignment-repository.js'; @Entity({ diff --git a/backend/src/entities/assignments/submission.entity.ts b/backend/src/entities/assignments/submission.entity.ts index e4330e0d..80b9a8fb 100644 --- a/backend/src/entities/assignments/submission.entity.ts +++ b/backend/src/entities/assignments/submission.entity.ts @@ -1,8 +1,8 @@ import { Student } from '../users/student.entity.js'; import { Group } from './group.entity.js'; import { Entity, Enum, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core'; -import { Language } from '../content/language.js'; import { SubmissionRepository } from '../../data/assignments/submission-repository.js'; +import { Language } from '@dwengo-1/common/util/language'; @Entity({ repository: () => SubmissionRepository }) export class Submission { diff --git a/backend/src/entities/content/learning-object-identifier.ts b/backend/src/entities/content/learning-object-identifier.ts index 9234afa7..b7802ddd 100644 --- a/backend/src/entities/content/learning-object-identifier.ts +++ b/backend/src/entities/content/learning-object-identifier.ts @@ -1,4 +1,4 @@ -import { Language } from './language.js'; +import { Language } from "@dwengo-1/common/util/language"; export class LearningObjectIdentifier { constructor( diff --git a/backend/src/entities/content/learning-object.entity.ts b/backend/src/entities/content/learning-object.entity.ts index db009e7a..ff858fe6 100644 --- a/backend/src/entities/content/learning-object.entity.ts +++ b/backend/src/entities/content/learning-object.entity.ts @@ -5,8 +5,8 @@ import { DwengoContentType } from '../../services/learning-objects/processing/co import { v4 } from 'uuid'; import { LearningObjectRepository } from '../../data/content/learning-object-repository.js'; import { EducationalGoal } from './educational-goal.entity.js'; -import { Language } from './language.js'; import { ReturnValue } from './return-value.entity.js'; +import { Language } from '@dwengo-1/common/util/language'; @Entity({ repository: () => LearningObjectRepository }) export class LearningObject { diff --git a/backend/src/entities/content/learning-path-node.entity.ts b/backend/src/entities/content/learning-path-node.entity.ts index 03499270..3016c367 100644 --- a/backend/src/entities/content/learning-path-node.entity.ts +++ b/backend/src/entities/content/learning-path-node.entity.ts @@ -1,7 +1,7 @@ import { Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property, Rel } from '@mikro-orm/core'; -import { Language } from './language.js'; import { LearningPath } from './learning-path.entity.js'; import { LearningPathTransition } from './learning-path-transition.entity.js'; +import { Language } from '@dwengo-1/common/util/language'; @Entity() export class LearningPathNode { diff --git a/backend/src/entities/content/learning-path.entity.ts b/backend/src/entities/content/learning-path.entity.ts index 888cc0cf..203af86d 100644 --- a/backend/src/entities/content/learning-path.entity.ts +++ b/backend/src/entities/content/learning-path.entity.ts @@ -1,8 +1,8 @@ import { Entity, Enum, ManyToMany, OneToMany, PrimaryKey, Property } from '@mikro-orm/core'; -import { Language } from './language.js'; import { Teacher } from '../users/teacher.entity.js'; import { LearningPathRepository } from '../../data/content/learning-path-repository.js'; import { LearningPathNode } from './learning-path-node.entity.js'; +import { Language } from '@dwengo-1/common/util/language'; @Entity({ repository: () => LearningPathRepository }) export class LearningPath { diff --git a/backend/src/entities/questions/question.entity.ts b/backend/src/entities/questions/question.entity.ts index 09e3cd46..5e691f70 100644 --- a/backend/src/entities/questions/question.entity.ts +++ b/backend/src/entities/questions/question.entity.ts @@ -1,7 +1,7 @@ import { Entity, Enum, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core'; -import { Language } from '../content/language.js'; import { Student } from '../users/student.entity.js'; import { QuestionRepository } from '../../data/questions/question-repository.js'; +import { Language } from '@dwengo-1/common/util/language'; @Entity({ repository: () => QuestionRepository }) export class Question { diff --git a/backend/src/interfaces/answer.ts b/backend/src/interfaces/answer.ts index b62aa741..5599839f 100644 --- a/backend/src/interfaces/answer.ts +++ b/backend/src/interfaces/answer.ts @@ -1,7 +1,7 @@ import { mapToUserDTO } from './user.js'; import { mapToQuestionDTO, mapToQuestionId } from './question.js'; import { Answer } from '../entities/questions/answer.entity.js'; -import { AnswerDTO, AnswerId } from 'dwengo-1-common/src/interfaces/answer'; +import { AnswerDTO, AnswerId } from '@dwengo-1/common/interfaces/answer'; /** * Convert a Question entity to a DTO format. diff --git a/backend/src/interfaces/assignment.ts b/backend/src/interfaces/assignment.ts index 84cbd0cf..d48a9083 100644 --- a/backend/src/interfaces/assignment.ts +++ b/backend/src/interfaces/assignment.ts @@ -1,9 +1,9 @@ +import { languageMap } from '@dwengo-1/common/util/language'; import { FALLBACK_LANG } from '../config.js'; import { Assignment } from '../entities/assignments/assignment.entity.js'; import { Class } from '../entities/classes/class.entity.js'; import { getLogger } from '../logging/initalize.js'; -import { languageMap } from '../entities/content/language.js'; -import { AssignmentDTO } from 'dwengo-1-common/src/interfaces/assignment'; +import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; export function mapToAssignmentDTOId(assignment: Assignment): AssignmentDTO { return { diff --git a/backend/src/interfaces/class.ts b/backend/src/interfaces/class.ts index c711b94b..7b07fcf2 100644 --- a/backend/src/interfaces/class.ts +++ b/backend/src/interfaces/class.ts @@ -2,7 +2,7 @@ import { Collection } from '@mikro-orm/core'; import { Class } from '../entities/classes/class.entity.js'; import { Student } from '../entities/users/student.entity.js'; import { Teacher } from '../entities/users/teacher.entity.js'; -import { ClassDTO } from 'dwengo-1-common/src/interfaces/class'; +import { ClassDTO } from '@dwengo-1/common/interfaces/class'; export function mapToClassDTO(cls: Class): ClassDTO { return { diff --git a/backend/src/interfaces/group.ts b/backend/src/interfaces/group.ts index 9f71e3f7..1a169b2b 100644 --- a/backend/src/interfaces/group.ts +++ b/backend/src/interfaces/group.ts @@ -1,7 +1,7 @@ import { Group } from '../entities/assignments/group.entity.js'; import { mapToAssignmentDTO } from './assignment.js'; import { mapToStudentDTO } from './student.js'; -import { GroupDTO } from 'dwengo-1-common/src/interfaces/group'; +import { GroupDTO } from '@dwengo-1/common/interfaces/group'; export function mapToGroupDTO(group: Group): GroupDTO { return { diff --git a/backend/src/interfaces/question.ts b/backend/src/interfaces/question.ts index 86cd6523..57778bac 100644 --- a/backend/src/interfaces/question.ts +++ b/backend/src/interfaces/question.ts @@ -1,6 +1,6 @@ import { Question } from '../entities/questions/question.entity.js'; import { mapToStudentDTO } from './student.js'; -import { QuestionDTO, QuestionId } from 'dwengo-1-common/src/interfaces/question'; +import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question'; /** * Convert a Question entity to a DTO format. diff --git a/backend/src/interfaces/student.ts b/backend/src/interfaces/student.ts index e1e4253f..06e173a1 100644 --- a/backend/src/interfaces/student.ts +++ b/backend/src/interfaces/student.ts @@ -1,6 +1,6 @@ import { Student } from '../entities/users/student.entity.js'; import { getStudentRepository } from '../data/repositories.js'; -import { StudentDTO } from 'dwengo-1-common/src/interfaces/student'; +import { StudentDTO } from '@dwengo-1/common/interfaces/student'; export function mapToStudentDTO(student: Student): StudentDTO { return { diff --git a/backend/src/interfaces/submission.ts b/backend/src/interfaces/submission.ts index 9a506b27..b4ed4a2b 100644 --- a/backend/src/interfaces/submission.ts +++ b/backend/src/interfaces/submission.ts @@ -1,7 +1,7 @@ import { Submission } from '../entities/assignments/submission.entity.js'; import { mapToGroupDTO } from './group.js'; import { mapToStudent, mapToStudentDTO } from './student.js'; -import { SubmissionDTO, SubmissionDTOId } from 'dwengo-1-common/src/interfaces/submission'; +import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; export function mapToSubmissionDTO(submission: Submission): SubmissionDTO { return { diff --git a/backend/src/interfaces/teacher-invitation.ts b/backend/src/interfaces/teacher-invitation.ts index 8df92fd1..d9cb9915 100644 --- a/backend/src/interfaces/teacher-invitation.ts +++ b/backend/src/interfaces/teacher-invitation.ts @@ -1,7 +1,7 @@ import { TeacherInvitation } from '../entities/classes/teacher-invitation.entity.js'; import { mapToClassDTO } from './class.js'; import { mapToUserDTO } from './user.js'; -import { TeacherInvitationDTO } from 'dwengo-1-common/src/interfaces/teacher-invitation'; +import { TeacherInvitationDTO } from '@dwengo-1/common/interfaces/teacher-invitation'; export function mapToTeacherInvitationDTO(invitation: TeacherInvitation): TeacherInvitationDTO { return { diff --git a/backend/src/interfaces/teacher.ts b/backend/src/interfaces/teacher.ts index a1ba33fd..f7e1745f 100644 --- a/backend/src/interfaces/teacher.ts +++ b/backend/src/interfaces/teacher.ts @@ -1,6 +1,6 @@ import { Teacher } from '../entities/users/teacher.entity.js'; import { getTeacherRepository } from '../data/repositories.js'; -import { TeacherDTO } from 'dwengo-1-common/src/interfaces/teacher'; +import { TeacherDTO } from '@dwengo-1/common/interfaces/teacher'; export function mapToTeacherDTO(teacher: Teacher): TeacherDTO { return { diff --git a/backend/src/interfaces/user.ts b/backend/src/interfaces/user.ts index ecc9dd77..f4413b5e 100644 --- a/backend/src/interfaces/user.ts +++ b/backend/src/interfaces/user.ts @@ -1,5 +1,5 @@ import { User } from '../entities/users/user.entity.js'; -import { UserDTO } from 'dwengo-1-common/src/interfaces/user'; +import { UserDTO } from '@dwengo-1/common/interfaces/user'; export function mapToUserDTO(user: User): UserDTO { return { diff --git a/backend/src/services/assignments.ts b/backend/src/services/assignments.ts index 62ea31e6..e86b69b2 100644 --- a/backend/src/services/assignments.ts +++ b/backend/src/services/assignments.ts @@ -1,8 +1,8 @@ import { getAssignmentRepository, getClassRepository, getGroupRepository, getSubmissionRepository } from '../data/repositories.js'; import { mapToAssignment, mapToAssignmentDTO, mapToAssignmentDTOId } from '../interfaces/assignment.js'; import { mapToSubmissionDTO, mapToSubmissionDTOId } from '../interfaces/submission.js'; -import { AssignmentDTO } from 'dwengo-1-common/src/interfaces/assignment'; -import { SubmissionDTO, SubmissionDTOId } from 'dwengo-1-common/src/interfaces/submission'; +import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; +import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; import { getLogger } from '../logging/initalize.js'; export async function getAllAssignments(classid: string, full: boolean): Promise { diff --git a/backend/src/services/classes.ts b/backend/src/services/classes.ts index 26dce897..fccbbee0 100644 --- a/backend/src/services/classes.ts +++ b/backend/src/services/classes.ts @@ -3,9 +3,9 @@ import { mapToClassDTO } from '../interfaces/class.js'; import { mapToStudentDTO } from '../interfaces/student.js'; import { mapToTeacherInvitationDTO, mapToTeacherInvitationDTOIds } from '../interfaces/teacher-invitation.js'; import { getLogger } from '../logging/initalize.js'; -import { ClassDTO } from 'dwengo-1-common/src/interfaces/class'; -import { TeacherInvitationDTO } from 'dwengo-1-common/src/interfaces/teacher-invitation'; -import { StudentDTO } from 'dwengo-1-common/src/interfaces/student'; +import { ClassDTO } from '@dwengo-1/common/interfaces/class'; +import { TeacherInvitationDTO } from '@dwengo-1/common/interfaces/teacher-invitation'; +import { StudentDTO } from '@dwengo-1/common/interfaces/student'; const logger = getLogger(); diff --git a/backend/src/services/groups.ts b/backend/src/services/groups.ts index 5d35de55..346c1ee1 100644 --- a/backend/src/services/groups.ts +++ b/backend/src/services/groups.ts @@ -8,8 +8,8 @@ import { import { Group } from '../entities/assignments/group.entity.js'; import { mapToGroupDTO, mapToGroupDTOId } from '../interfaces/group.js'; import { mapToSubmissionDTO, mapToSubmissionDTOId } from '../interfaces/submission.js'; -import { GroupDTO } from 'dwengo-1-common/src/interfaces/group'; -import { SubmissionDTO, SubmissionDTOId } from 'dwengo-1-common/src/interfaces/submission'; +import { GroupDTO } from '@dwengo-1/common/interfaces/group'; +import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; import { getLogger } from '../logging/initalize.js'; export async function getGroup(classId: string, assignmentNumber: number, groupNumber: number, full: boolean): Promise { diff --git a/backend/src/services/learning-objects.ts b/backend/src/services/learning-objects.ts index 6dfd2704..436c4a08 100644 --- a/backend/src/services/learning-objects.ts +++ b/backend/src/services/learning-objects.ts @@ -6,7 +6,7 @@ import { LearningObjectMetadata, LearningObjectNode, LearningPathResponse, -} from 'dwengo-1-common/src/interfaces/learning-content'; +} from '@dwengo-1/common/interfaces/learning-content'; import { getLogger } from '../logging/initalize.js'; function filterData(data: LearningObjectMetadata, htmlUrl: string): FilteredLearningObject { diff --git a/backend/src/services/learning-objects/attachment-service.ts b/backend/src/services/learning-objects/attachment-service.ts index 2acf90a0..46fc5e03 100644 --- a/backend/src/services/learning-objects/attachment-service.ts +++ b/backend/src/services/learning-objects/attachment-service.ts @@ -1,7 +1,7 @@ import { getAttachmentRepository } from '../../data/repositories.js'; import { Attachment } from '../../entities/content/attachment.entity.js'; -import { LearningObjectIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectIdentifier } from '@dwengo-1/common/interfaces/learning-content'; const attachmentService = { async getAttachment(learningObjectId: LearningObjectIdentifier, attachmentName: string): Promise { diff --git a/backend/src/services/learning-objects/database-learning-object-provider.ts b/backend/src/services/learning-objects/database-learning-object-provider.ts index 0639782c..361153f5 100644 --- a/backend/src/services/learning-objects/database-learning-object-provider.ts +++ b/backend/src/services/learning-objects/database-learning-object-provider.ts @@ -6,7 +6,7 @@ import processingService from './processing/processing-service.js'; import { NotFoundError } from '@mikro-orm/core'; import learningObjectService from './learning-object-service.js'; import { getLogger, Logger } from '../../logging/initalize.js'; -import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; const logger: Logger = getLogger(); diff --git a/backend/src/services/learning-objects/dwengo-api-learning-object-provider.ts b/backend/src/services/learning-objects/dwengo-api-learning-object-provider.ts index 35d9f899..77cde59d 100644 --- a/backend/src/services/learning-objects/dwengo-api-learning-object-provider.ts +++ b/backend/src/services/learning-objects/dwengo-api-learning-object-provider.ts @@ -10,7 +10,7 @@ import { LearningObjectNode, LearningPathIdentifier, LearningPathResponse, -} from 'dwengo-1-common/src/interfaces/learning-content'; +} from '@dwengo-1/common/interfaces/learning-content'; const logger: Logger = getLogger(); diff --git a/backend/src/services/learning-objects/learning-object-provider.ts b/backend/src/services/learning-objects/learning-object-provider.ts index 6ea7cbd1..a0fcb552 100644 --- a/backend/src/services/learning-objects/learning-object-provider.ts +++ b/backend/src/services/learning-objects/learning-object-provider.ts @@ -1,4 +1,4 @@ -import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; export interface LearningObjectProvider { /** diff --git a/backend/src/services/learning-objects/learning-object-service.ts b/backend/src/services/learning-objects/learning-object-service.ts index 7a4dd828..69004ae1 100644 --- a/backend/src/services/learning-objects/learning-object-service.ts +++ b/backend/src/services/learning-objects/learning-object-service.ts @@ -2,7 +2,11 @@ import dwengoApiLearningObjectProvider from './dwengo-api-learning-object-provid import { LearningObjectProvider } from './learning-object-provider.js'; import { envVars, getEnvVar } from '../../util/envVars.js'; import databaseLearningObjectProvider from './database-learning-object-provider.js'; -import { FilteredLearningObject, LearningObjectIdentifier, LearningPathIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { + FilteredLearningObject, + LearningObjectIdentifier, + LearningPathIdentifier, +} from '@dwengo-1/common/interfaces/learning-content'; function getProvider(id: LearningObjectIdentifier): LearningObjectProvider { if (id.hruid.startsWith(getEnvVar(envVars.UserContentPrefix))) { diff --git a/backend/src/services/learning-objects/processing/markdown/dwengo-marked-renderer.ts b/backend/src/services/learning-objects/processing/markdown/dwengo-marked-renderer.ts index 3b9ad4e5..87ba13b7 100644 --- a/backend/src/services/learning-objects/processing/markdown/dwengo-marked-renderer.ts +++ b/backend/src/services/learning-objects/processing/markdown/dwengo-marked-renderer.ts @@ -8,13 +8,12 @@ import InlineImageProcessor from '../image/inline-image-processor.js'; import * as marked from 'marked'; import { getUrlStringForLearningObjectHTML, isValidHttpUrl } from '../../../../util/links.js'; import { ProcessingError } from '../processing-error.js'; -import { Language } from '../../../../entities/content/language.js'; - import Image = marked.Tokens.Image; import Heading = marked.Tokens.Heading; import Link = marked.Tokens.Link; import RendererObject = marked.RendererObject; -import { LearningObjectIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectIdentifier } from '@dwengo-1/common/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; const prefixes = { learningObject: '@learning-object', diff --git a/backend/src/services/learning-objects/processing/processing-service.ts b/backend/src/services/learning-objects/processing/processing-service.ts index d0d43061..e9147e31 100644 --- a/backend/src/services/learning-objects/processing/processing-service.ts +++ b/backend/src/services/learning-objects/processing/processing-service.ts @@ -13,9 +13,9 @@ import GiftProcessor from './gift/gift-processor.js'; import { LearningObject } from '../../../entities/content/learning-object.entity.js'; import Processor from './processor.js'; import { DwengoContentType } from './content-type.js'; -import { Language } from '../../../entities/content/language.js'; import { replaceAsync } from '../../../util/async.js'; -import { LearningObjectIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectIdentifier } from '@dwengo-1/common/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; const EMBEDDED_LEARNING_OBJECT_PLACEHOLDER = //g; const LEARNING_OBJECT_DOES_NOT_EXIST = "
"; diff --git a/backend/src/services/learning-paths/database-learning-path-provider.ts b/backend/src/services/learning-paths/database-learning-path-provider.ts index d0fcf630..ba312b08 100644 --- a/backend/src/services/learning-paths/database-learning-path-provider.ts +++ b/backend/src/services/learning-paths/database-learning-path-provider.ts @@ -1,7 +1,6 @@ import { LearningPathProvider } from './learning-path-provider.js'; import { LearningPath as LearningPathEntity } from '../../entities/content/learning-path.entity.js'; import { getLearningPathRepository } from '../../data/repositories.js'; -import { Language } from '../../entities/content/language.js'; import learningObjectService from '../learning-objects/learning-object-service.js'; import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; @@ -12,7 +11,8 @@ import { LearningPath, LearningPathResponse, Transition, -} from 'dwengo-1-common/src/interfaces/learning-content'; +} from '@dwengo-1/common/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; /** * Fetches the corresponding learning object for each of the nodes and creates a map that maps each node to its diff --git a/backend/src/services/learning-paths/dwengo-api-learning-path-provider.ts b/backend/src/services/learning-paths/dwengo-api-learning-path-provider.ts index b7f03d35..110cd570 100644 --- a/backend/src/services/learning-paths/dwengo-api-learning-path-provider.ts +++ b/backend/src/services/learning-paths/dwengo-api-learning-path-provider.ts @@ -2,7 +2,7 @@ import { fetchWithLogging } from '../../util/api-helper.js'; import { DWENGO_API_BASE } from '../../config.js'; import { LearningPathProvider } from './learning-path-provider.js'; import { getLogger, Logger } from '../../logging/initalize.js'; -import { LearningPath, LearningPathResponse } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningPath, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; const logger: Logger = getLogger(); diff --git a/backend/src/services/learning-paths/learning-path-provider.ts b/backend/src/services/learning-paths/learning-path-provider.ts index a904296a..3bf734e7 100644 --- a/backend/src/services/learning-paths/learning-path-provider.ts +++ b/backend/src/services/learning-paths/learning-path-provider.ts @@ -1,6 +1,6 @@ -import { Language } from '../../entities/content/language.js'; +import { LearningPath, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; import { PersonalizationTarget } from './learning-path-personalization-util.js'; -import { LearningPath, LearningPathResponse } from 'dwengo-1-common/src/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; /** * Generic interface for a service which provides access to learning paths from a data source. diff --git a/backend/src/services/learning-paths/learning-path-service.ts b/backend/src/services/learning-paths/learning-path-service.ts index bebfe8a9..0e4d2c5e 100644 --- a/backend/src/services/learning-paths/learning-path-service.ts +++ b/backend/src/services/learning-paths/learning-path-service.ts @@ -1,9 +1,9 @@ import dwengoApiLearningPathProvider from './dwengo-api-learning-path-provider.js'; import databaseLearningPathProvider from './database-learning-path-provider.js'; import { envVars, getEnvVar } from '../../util/envVars.js'; -import { Language } from '../../entities/content/language.js'; import { PersonalizationTarget } from './learning-path-personalization-util.js'; -import { LearningPath, LearningPathResponse } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningPath, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; const userContentPrefix = getEnvVar(envVars.UserContentPrefix); const allProviders = [dwengoApiLearningPathProvider, databaseLearningPathProvider]; diff --git a/backend/src/services/questions.ts b/backend/src/services/questions.ts index b9d9f42e..3c0c4820 100644 --- a/backend/src/services/questions.ts +++ b/backend/src/services/questions.ts @@ -6,8 +6,8 @@ import { mapToAnswerDTO, mapToAnswerId } from '../interfaces/answer.js'; import { QuestionRepository } from '../data/questions/question-repository.js'; import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js'; import { mapToStudent } from '../interfaces/student.js'; -import { QuestionDTO, QuestionId } from 'dwengo-1-common/src/interfaces/question'; -import { AnswerDTO, AnswerId } from 'dwengo-1-common/src/interfaces/answer'; +import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question'; +import { AnswerDTO, AnswerId } from '@dwengo-1/common/interfaces/answer'; export async function getAllQuestions(id: LearningObjectIdentifier, full: boolean): Promise { const questionRepository: QuestionRepository = getQuestionRepository(); diff --git a/backend/src/services/students.ts b/backend/src/services/students.ts index 671f77bc..968b556b 100644 --- a/backend/src/services/students.ts +++ b/backend/src/services/students.ts @@ -4,11 +4,11 @@ import { mapToGroupDTO, mapToGroupDTOId } from '../interfaces/group.js'; import { mapToStudent, mapToStudentDTO } from '../interfaces/student.js'; import { mapToSubmissionDTO, mapToSubmissionDTOId } from '../interfaces/submission.js'; import { getAllAssignments } from './assignments.js'; -import { AssignmentDTO } from 'dwengo-1-common/src/interfaces/assignment'; -import { ClassDTO } from 'dwengo-1-common/src/interfaces/class'; -import { GroupDTO } from 'dwengo-1-common/src/interfaces/group'; -import { SubmissionDTO, SubmissionDTOId } from 'dwengo-1-common/src/interfaces/submission'; -import { StudentDTO } from 'dwengo-1-common/src/interfaces/student'; +import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; +import { ClassDTO } from '@dwengo-1/common/interfaces/class'; +import { GroupDTO } from '@dwengo-1/common/interfaces/group'; +import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission'; +import { StudentDTO } from '@dwengo-1/common/interfaces/student'; import { getLogger } from '../logging/initalize.js'; export async function getAllStudents(full: boolean): Promise { diff --git a/backend/src/services/submissions.ts b/backend/src/services/submissions.ts index 314b9d65..1d8a7874 100644 --- a/backend/src/services/submissions.ts +++ b/backend/src/services/submissions.ts @@ -1,8 +1,8 @@ import { getSubmissionRepository } from '../data/repositories.js'; -import { Language } from '../entities/content/language.js'; import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js'; import { mapToSubmission, mapToSubmissionDTO } from '../interfaces/submission.js'; -import { SubmissionDTO } from 'dwengo-1-common/src/interfaces/submission'; +import { SubmissionDTO } from '@dwengo-1/common/interfaces/submission'; +import { Language } from '@dwengo-1/common/util/language'; export async function getSubmission( learningObjectHruid: string, diff --git a/backend/src/services/teachers.ts b/backend/src/services/teachers.ts index 55c92cac..3986462b 100644 --- a/backend/src/services/teachers.ts +++ b/backend/src/services/teachers.ts @@ -3,10 +3,10 @@ import { mapToClassDTO } from '../interfaces/class.js'; import { getClassStudents } from './classes.js'; import { mapToQuestionDTO, mapToQuestionId } from '../interfaces/question.js'; import { mapToTeacher, mapToTeacherDTO } from '../interfaces/teacher.js'; -import { ClassDTO } from 'dwengo-1-common/src/interfaces/class'; -import { TeacherDTO } from 'dwengo-1-common/src/interfaces/teacher'; -import { StudentDTO } from 'dwengo-1-common/src/interfaces/student'; -import { QuestionDTO, QuestionId } from 'dwengo-1-common/src/interfaces/question'; +import { ClassDTO } from '@dwengo-1/common/interfaces/class'; +import { TeacherDTO } from '@dwengo-1/common/interfaces/teacher'; +import { StudentDTO } from '@dwengo-1/common/interfaces/student'; +import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question'; import { getLogger } from '../logging/initalize.js'; export async function getAllTeachers(full: boolean): Promise { diff --git a/backend/src/util/links.ts b/backend/src/util/links.ts index bd14bfba..41cd6cac 100644 --- a/backend/src/util/links.ts +++ b/backend/src/util/links.ts @@ -1,4 +1,4 @@ -import { LearningObjectIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectIdentifier } from "@dwengo-1/common/interfaces/learning-content"; export function isValidHttpUrl(url: string): boolean { try { diff --git a/backend/tests/data/assignments/submissions.test.ts b/backend/tests/data/assignments/submissions.test.ts index cd212b77..85e1bc11 100644 --- a/backend/tests/data/assignments/submissions.test.ts +++ b/backend/tests/data/assignments/submissions.test.ts @@ -9,7 +9,7 @@ import { getSubmissionRepository, } from '../../../src/data/repositories'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { StudentRepository } from '../../../src/data/users/student-repository'; import { GroupRepository } from '../../../src/data/assignments/group-repository'; import { AssignmentRepository } from '../../../src/data/assignments/assignment-repository'; diff --git a/backend/tests/data/content/attachments.test.ts b/backend/tests/data/content/attachments.test.ts index 94e132a9..4e65954e 100644 --- a/backend/tests/data/content/attachments.test.ts +++ b/backend/tests/data/content/attachments.test.ts @@ -4,7 +4,7 @@ import { getAttachmentRepository, getLearningObjectRepository } from '../../../s import { AttachmentRepository } from '../../../src/data/content/attachment-repository.js'; import { LearningObjectRepository } from '../../../src/data/content/learning-object-repository.js'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier.js'; -import { Language } from '../../../src/entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; describe('AttachmentRepository', () => { let attachmentRepository: AttachmentRepository; diff --git a/backend/tests/data/content/learning-objects.test.ts b/backend/tests/data/content/learning-objects.test.ts index 712f75c9..3c9d5dde 100644 --- a/backend/tests/data/content/learning-objects.test.ts +++ b/backend/tests/data/content/learning-objects.test.ts @@ -3,7 +3,7 @@ import { LearningObjectRepository } from '../../../src/data/content/learning-obj import { getLearningObjectRepository } from '../../../src/data/repositories'; import { setupTestApp } from '../../setup-tests'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; describe('LearningObjectRepository', () => { let learningObjectRepository: LearningObjectRepository; diff --git a/backend/tests/data/content/learning-path-repository.test.ts b/backend/tests/data/content/learning-path-repository.test.ts index 4424fced..bdf5377e 100644 --- a/backend/tests/data/content/learning-path-repository.test.ts +++ b/backend/tests/data/content/learning-path-repository.test.ts @@ -5,7 +5,7 @@ import { LearningPathRepository } from '../../../src/data/content/learning-path- import example from '../../test-assets/learning-paths/pn-werking-example.js'; import { LearningPath } from '../../../src/entities/content/learning-path.entity.js'; import { expectToBeCorrectEntity } from '../../test-utils/expectations.js'; -import { Language } from '../../../src/entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; function expectToHaveFoundPrecisely(expected: LearningPath, result: LearningPath[]): void { expect(result).toHaveProperty('length'); diff --git a/backend/tests/data/content/learning-paths.test.ts b/backend/tests/data/content/learning-paths.test.ts index 01fd20e5..683e1d40 100644 --- a/backend/tests/data/content/learning-paths.test.ts +++ b/backend/tests/data/content/learning-paths.test.ts @@ -2,7 +2,7 @@ import { beforeAll, describe, expect, it } from 'vitest'; import { getLearningPathRepository } from '../../../src/data/repositories'; import { LearningPathRepository } from '../../../src/data/content/learning-path-repository'; import { setupTestApp } from '../../setup-tests'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; describe('LearningPathRepository', () => { let learningPathRepository: LearningPathRepository; diff --git a/backend/tests/data/questions/answers.test.ts b/backend/tests/data/questions/answers.test.ts index 59917c3f..80cd3034 100644 --- a/backend/tests/data/questions/answers.test.ts +++ b/backend/tests/data/questions/answers.test.ts @@ -4,7 +4,7 @@ import { AnswerRepository } from '../../../src/data/questions/answer-repository' import { getAnswerRepository, getQuestionRepository, getTeacherRepository } from '../../../src/data/repositories'; import { QuestionRepository } from '../../../src/data/questions/question-repository'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { TeacherRepository } from '../../../src/data/users/teacher-repository'; describe('AnswerRepository', () => { diff --git a/backend/tests/data/questions/questions.test.ts b/backend/tests/data/questions/questions.test.ts index c1d2b483..055a9d79 100644 --- a/backend/tests/data/questions/questions.test.ts +++ b/backend/tests/data/questions/questions.test.ts @@ -4,7 +4,7 @@ import { QuestionRepository } from '../../../src/data/questions/question-reposit import { getQuestionRepository, getStudentRepository } from '../../../src/data/repositories'; import { StudentRepository } from '../../../src/data/users/student-repository'; import { LearningObjectIdentifier } from '../../../src/entities/content/learning-object-identifier'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; describe('QuestionRepository', () => { let questionRepository: QuestionRepository; diff --git a/backend/tests/services/learning-objects/database-learning-object-provider.test.ts b/backend/tests/services/learning-objects/database-learning-object-provider.test.ts index e87c158b..0ab531bc 100644 --- a/backend/tests/services/learning-objects/database-learning-object-provider.test.ts +++ b/backend/tests/services/learning-objects/database-learning-object-provider.test.ts @@ -5,11 +5,11 @@ import example from '../../test-assets/learning-objects/pn-werkingnotebooks/pn-w import { LearningObject } from '../../../src/entities/content/learning-object.entity'; import databaseLearningObjectProvider from '../../../src/services/learning-objects/database-learning-object-provider'; import { expectToBeCorrectFilteredLearningObject } from '../../test-utils/expectations'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import learningObjectExample from '../../test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example'; import learningPathExample from '../../test-assets/learning-paths/pn-werking-example'; import { LearningPath } from '../../../src/entities/content/learning-path.entity'; -import { FilteredLearningObject } from 'dwengo-1-common/src/interfaces/learning-content'; +import { FilteredLearningObject } from '@dwengo-1/common/interfaces/learning-content'; async function initExampleData(): Promise<{ learningObject: LearningObject; learningPath: LearningPath }> { const learningObjectRepo = getLearningObjectRepository(); diff --git a/backend/tests/services/learning-objects/learning-object-service.test.ts b/backend/tests/services/learning-objects/learning-object-service.test.ts index 2e96c4fc..eb683018 100644 --- a/backend/tests/services/learning-objects/learning-object-service.test.ts +++ b/backend/tests/services/learning-objects/learning-object-service.test.ts @@ -4,11 +4,11 @@ import { LearningObject } from '../../../src/entities/content/learning-object.en import { getLearningObjectRepository, getLearningPathRepository } from '../../../src/data/repositories'; import learningObjectExample from '../../test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example'; import learningObjectService from '../../../src/services/learning-objects/learning-object-service'; -import { Language } from '../../../src/entities/content/language'; import { envVars, getEnvVar } from '../../../src/util/envVars'; import { LearningPath } from '../../../src/entities/content/learning-path.entity'; import learningPathExample from '../../test-assets/learning-paths/pn-werking-example'; -import { LearningObjectIdentifier, LearningPathIdentifier } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectIdentifier, LearningPathIdentifier } from '@dwengo-1/common/interfaces/learning-content'; +import { Language } from '@dwengo-1/common/util/language'; const EXPECTED_DWENGO_LEARNING_OBJECT_TITLE = 'Werken met notebooks'; const DWENGO_TEST_LEARNING_OBJECT_ID: LearningObjectIdentifier = { diff --git a/backend/tests/services/learning-path/database-learning-path-provider.test.ts b/backend/tests/services/learning-path/database-learning-path-provider.test.ts index 7b1f2bf8..b8a733e7 100644 --- a/backend/tests/services/learning-path/database-learning-path-provider.test.ts +++ b/backend/tests/services/learning-path/database-learning-path-provider.test.ts @@ -13,14 +13,14 @@ import learningPathExample from '../../test-assets/learning-paths/pn-werking-exa import databaseLearningPathProvider from '../../../src/services/learning-paths/database-learning-path-provider.js'; import { expectToBeCorrectLearningPath } from '../../test-utils/expectations.js'; import learningObjectService from '../../../src/services/learning-objects/learning-object-service.js'; -import { Language } from '../../../src/entities/content/language.js'; +import { Language } from '@dwengo-1/common/util/language'; import { ConditionTestLearningPathAndLearningObjects, createConditionTestLearningPathAndLearningObjects, } from '../../test-assets/learning-paths/test-conditions-example.js'; import { Student } from '../../../src/entities/users/student.entity.js'; -import { LearningObjectNode, LearningPathResponse } from 'dwengo-1-common/src/interfaces/learning-content'; +import { LearningObjectNode, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; async function initExampleData(): Promise<{ learningObject: LearningObject; learningPath: LearningPath }> { const learningObjectRepo = getLearningObjectRepository(); diff --git a/backend/tests/services/learning-path/learning-path-service.test.ts b/backend/tests/services/learning-path/learning-path-service.test.ts index 7a45dc43..934c677b 100644 --- a/backend/tests/services/learning-path/learning-path-service.test.ts +++ b/backend/tests/services/learning-path/learning-path-service.test.ts @@ -5,8 +5,8 @@ import { LearningPath } from '../../../src/entities/content/learning-path.entity import { getLearningObjectRepository, getLearningPathRepository } from '../../../src/data/repositories'; import learningObjectExample from '../../test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example'; import learningPathExample from '../../test-assets/learning-paths/pn-werking-example'; -import { Language } from '../../../src/entities/content/language'; import learningPathService from '../../../src/services/learning-paths/learning-path-service'; +import { Language } from '@dwengo-1/common/util/language'; async function initExampleData(): Promise<{ learningObject: LearningObject; learningPath: LearningPath }> { const learningObjectRepo = getLearningObjectRepository(); diff --git a/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts b/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts index f810d57a..6889c93b 100644 --- a/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts +++ b/backend/tests/test-assets/learning-objects/dummy/dummy-learning-object-example.ts @@ -1,6 +1,6 @@ import { LearningObjectExample } from '../learning-object-example'; import { LearningObject } from '../../../../src/entities/content/learning-object.entity'; -import { Language } from '../../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { loadTestAsset } from '../../../test-utils/load-test-asset'; import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type'; import { envVars, getEnvVar } from '../../../../src/util/envVars'; diff --git a/backend/tests/test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example.ts b/backend/tests/test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example.ts index 835a0ed0..ab0c8640 100644 --- a/backend/tests/test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example.ts +++ b/backend/tests/test-assets/learning-objects/pn-werkingnotebooks/pn-werkingnotebooks-example.ts @@ -1,5 +1,5 @@ import { LearningObjectExample } from '../learning-object-example'; -import { Language } from '../../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type'; import { loadTestAsset } from '../../../test-utils/load-test-asset'; import { LearningObject } from '../../../../src/entities/content/learning-object.entity'; diff --git a/backend/tests/test-assets/learning-objects/test-essay/test-essay-example.ts b/backend/tests/test-assets/learning-objects/test-essay/test-essay-example.ts index 943a10c7..5a444fc0 100644 --- a/backend/tests/test-assets/learning-objects/test-essay/test-essay-example.ts +++ b/backend/tests/test-assets/learning-objects/test-essay/test-essay-example.ts @@ -2,7 +2,7 @@ import { LearningObjectExample } from '../learning-object-example'; import { LearningObject } from '../../../../src/entities/content/learning-object.entity'; import { loadTestAsset } from '../../../test-utils/load-test-asset'; import { envVars, getEnvVar } from '../../../../src/util/envVars'; -import { Language } from '../../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type'; const example: LearningObjectExample = { diff --git a/backend/tests/test-assets/learning-objects/test-multiple-choice/test-multiple-choice-example.ts b/backend/tests/test-assets/learning-objects/test-multiple-choice/test-multiple-choice-example.ts index 276a41bb..129665ae 100644 --- a/backend/tests/test-assets/learning-objects/test-multiple-choice/test-multiple-choice-example.ts +++ b/backend/tests/test-assets/learning-objects/test-multiple-choice/test-multiple-choice-example.ts @@ -2,8 +2,8 @@ import { LearningObjectExample } from '../learning-object-example'; import { LearningObject } from '../../../../src/entities/content/learning-object.entity'; import { loadTestAsset } from '../../../test-utils/load-test-asset'; import { envVars, getEnvVar } from '../../../../src/util/envVars'; -import { Language } from '../../../../src/entities/content/language'; import { DwengoContentType } from '../../../../src/services/learning-objects/processing/content-type'; +import { Language } from '@dwengo-1/common/util/language'; const example: LearningObjectExample = { createLearningObject: () => { diff --git a/backend/tests/test-assets/learning-paths/learning-path-utils.ts b/backend/tests/test-assets/learning-paths/learning-path-utils.ts index eb786fe1..177d905f 100644 --- a/backend/tests/test-assets/learning-paths/learning-path-utils.ts +++ b/backend/tests/test-assets/learning-paths/learning-path-utils.ts @@ -1,4 +1,4 @@ -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { LearningPathTransition } from '../../../src/entities/content/learning-path-transition.entity'; import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity'; import { LearningPath } from '../../../src/entities/content/learning-path.entity'; diff --git a/backend/tests/test-assets/learning-paths/pn-werking-example.ts b/backend/tests/test-assets/learning-paths/pn-werking-example.ts index 06a29007..1ac1c40d 100644 --- a/backend/tests/test-assets/learning-paths/pn-werking-example.ts +++ b/backend/tests/test-assets/learning-paths/pn-werking-example.ts @@ -1,5 +1,5 @@ import { LearningPath } from '../../../src/entities/content/learning-path.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { envVars, getEnvVar } from '../../../src/util/envVars'; import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils'; import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity'; diff --git a/backend/tests/test-assets/learning-paths/test-conditions-example.ts b/backend/tests/test-assets/learning-paths/test-conditions-example.ts index b5e38c24..0fb7ead5 100644 --- a/backend/tests/test-assets/learning-paths/test-conditions-example.ts +++ b/backend/tests/test-assets/learning-paths/test-conditions-example.ts @@ -1,5 +1,5 @@ import { LearningPath } from '../../../src/entities/content/learning-path.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import testMultipleChoiceExample from '../learning-objects/test-multiple-choice/test-multiple-choice-example'; import { dummyLearningObject } from '../learning-objects/dummy/dummy-learning-object-example'; import { createLearningPathNode, createLearningPathTransition } from './learning-path-utils'; diff --git a/backend/tests/test-utils/expectations.ts b/backend/tests/test-utils/expectations.ts index 374bf6a7..b6462702 100644 --- a/backend/tests/test-utils/expectations.ts +++ b/backend/tests/test-utils/expectations.ts @@ -2,7 +2,7 @@ import { AssertionError } from 'node:assert'; import { LearningObject } from '../../src/entities/content/learning-object.entity'; import { LearningPath as LearningPathEntity } from '../../src/entities/content/learning-path.entity'; import { expect } from 'vitest'; -import { FilteredLearningObject, LearningPath } from 'dwengo-1-common/src/interfaces/learning-content'; +import { FilteredLearningObject, LearningPath } from '@dwengo-1/common/interfaces/learning-content'; // Ignored properties because they belang for example to the class, not to the entity itself. const IGNORE_PROPERTIES = ['parent']; diff --git a/backend/tests/test_assets/assignments/assignments.testdata.ts b/backend/tests/test_assets/assignments/assignments.testdata.ts index 8753b0ce..b0da638f 100644 --- a/backend/tests/test_assets/assignments/assignments.testdata.ts +++ b/backend/tests/test_assets/assignments/assignments.testdata.ts @@ -1,7 +1,7 @@ import { EntityManager } from '@mikro-orm/core'; import { Assignment } from '../../../src/entities/assignments/assignment.entity'; import { Class } from '../../../src/entities/classes/class.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; export function makeTestAssignemnts(em: EntityManager, classes: Class[]): Assignment[] { const assignment01 = em.create(Assignment, { diff --git a/backend/tests/test_assets/assignments/submission.testdata.ts b/backend/tests/test_assets/assignments/submission.testdata.ts index 4fca5f9b..f454b133 100644 --- a/backend/tests/test_assets/assignments/submission.testdata.ts +++ b/backend/tests/test_assets/assignments/submission.testdata.ts @@ -1,6 +1,6 @@ import { EntityManager } from '@mikro-orm/core'; import { Submission } from '../../../src/entities/assignments/submission.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { Student } from '../../../src/entities/users/student.entity'; import { Group } from '../../../src/entities/assignments/group.entity'; diff --git a/backend/tests/test_assets/content/learning-objects.testdata.ts b/backend/tests/test_assets/content/learning-objects.testdata.ts index bbca8830..6e28dc16 100644 --- a/backend/tests/test_assets/content/learning-objects.testdata.ts +++ b/backend/tests/test_assets/content/learning-objects.testdata.ts @@ -1,6 +1,6 @@ import { EntityManager } from '@mikro-orm/core'; import { LearningObject } from '../../../src/entities/content/learning-object.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { DwengoContentType } from '../../../src/services/learning-objects/processing/content-type'; import { ReturnValue } from '../../../src/entities/content/return-value.entity'; diff --git a/backend/tests/test_assets/content/learning-paths.testdata.ts b/backend/tests/test_assets/content/learning-paths.testdata.ts index e41773cc..72581f42 100644 --- a/backend/tests/test_assets/content/learning-paths.testdata.ts +++ b/backend/tests/test_assets/content/learning-paths.testdata.ts @@ -1,6 +1,6 @@ import { EntityManager } from '@mikro-orm/core'; import { LearningPath } from '../../../src/entities/content/learning-path.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { LearningPathTransition } from '../../../src/entities/content/learning-path-transition.entity'; import { LearningPathNode } from '../../../src/entities/content/learning-path-node.entity'; diff --git a/backend/tests/test_assets/questions/questions.testdata.ts b/backend/tests/test_assets/questions/questions.testdata.ts index 8604cf07..dff742bb 100644 --- a/backend/tests/test_assets/questions/questions.testdata.ts +++ b/backend/tests/test_assets/questions/questions.testdata.ts @@ -1,6 +1,6 @@ import { EntityManager } from '@mikro-orm/core'; import { Question } from '../../../src/entities/questions/question.entity'; -import { Language } from '../../../src/entities/content/language'; +import { Language } from '@dwengo-1/common/util/language'; import { Student } from '../../../src/entities/users/student.entity'; export function makeTestQuestions(em: EntityManager, students: Student[]): Question[] { diff --git a/backend/tsconfig.json b/backend/tsconfig.json index a47827ba..14f53f22 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -4,8 +4,10 @@ "compilerOptions": { "rootDir": "./src", "outDir": "./dist", - "resolveJsonModule": true, - "sourceMap": true, - "composite": true - } + }, + "references": [ + { + "path": "../common" + } + ] } diff --git a/common/package.json b/common/package.json index db8adfd0..c549e085 100644 --- a/common/package.json +++ b/common/package.json @@ -1,16 +1,19 @@ { - "name": "dwengo-1-common", + "name": "@dwengo-1/common", "version": "0.1.1", "description": "Common types and utilities for Dwengo-1", "private": true, "type": "module", + "files": [ "./dist" ], "scripts": { - "build": "tsc --project tsconfig.json", + "build": "tsc --build", + "clean": "tsc --build --clean", + "watch": "tsc --build --watch", "format": "prettier --write src/", "format-check": "prettier --check src/", "lint": "eslint . --fix" }, "exports": { - "./src/*": "./dist/*" + "./*": "./dist/*.js" } } diff --git a/common/src/interfaces/answer.d.ts b/common/src/interfaces/answer.ts similarity index 84% rename from common/src/interfaces/answer.d.ts rename to common/src/interfaces/answer.ts index d2faf87d..e9280f8a 100644 --- a/common/src/interfaces/answer.d.ts +++ b/common/src/interfaces/answer.ts @@ -1,5 +1,5 @@ import { UserDTO } from './user'; -import { QuestionDTO } from './question'; +import { QuestionDTO, QuestionId } from './question'; export interface AnswerDTO { author: UserDTO; diff --git a/common/src/interfaces/assignment.d.ts b/common/src/interfaces/assignment.ts similarity index 100% rename from common/src/interfaces/assignment.d.ts rename to common/src/interfaces/assignment.ts diff --git a/common/src/interfaces/class.d.ts b/common/src/interfaces/class.ts similarity index 100% rename from common/src/interfaces/class.d.ts rename to common/src/interfaces/class.ts diff --git a/common/src/interfaces/group.d.ts b/common/src/interfaces/group.ts similarity index 81% rename from common/src/interfaces/group.d.ts rename to common/src/interfaces/group.ts index 45523461..ca95770a 100644 --- a/common/src/interfaces/group.d.ts +++ b/common/src/interfaces/group.ts @@ -1,4 +1,5 @@ import { AssignmentDTO } from './assignment'; +import { StudentDTO } from './student'; export interface GroupDTO { assignment: number | AssignmentDTO; diff --git a/common/src/interfaces/learning-content.d.ts b/common/src/interfaces/learning-content.ts similarity index 96% rename from common/src/interfaces/learning-content.d.ts rename to common/src/interfaces/learning-content.ts index 610b1385..a8ddc171 100644 --- a/common/src/interfaces/learning-content.d.ts +++ b/common/src/interfaces/learning-content.ts @@ -1,4 +1,4 @@ -import { Language } from 'dwengo-1-backend/src/entities/content/language.js'; +import { Language } from "../util/language"; export interface Transition { default: boolean; diff --git a/common/src/interfaces/question.d.ts b/common/src/interfaces/question.ts similarity index 84% rename from common/src/interfaces/question.d.ts rename to common/src/interfaces/question.ts index 2b2a263c..b80ff0af 100644 --- a/common/src/interfaces/question.d.ts +++ b/common/src/interfaces/question.ts @@ -1,3 +1,4 @@ +import { LearningObjectIdentifier } from './learning-content'; import { StudentDTO } from './student'; export interface QuestionDTO { diff --git a/common/src/interfaces/student.d.ts b/common/src/interfaces/student.ts similarity index 100% rename from common/src/interfaces/student.d.ts rename to common/src/interfaces/student.ts diff --git a/common/src/interfaces/submission.d.ts b/common/src/interfaces/submission.ts similarity index 74% rename from common/src/interfaces/submission.d.ts rename to common/src/interfaces/submission.ts index c4c2b35d..6b250616 100644 --- a/common/src/interfaces/submission.d.ts +++ b/common/src/interfaces/submission.ts @@ -1,4 +1,7 @@ import { GroupDTO } from './group'; +import { LearningObjectIdentifier } from './learning-content'; +import { StudentDTO } from './student'; +import { Language } from '../util/language'; export interface SubmissionDTO { learningObjectIdentifier: LearningObjectIdentifier; diff --git a/common/src/interfaces/teacher-invitation.d.ts b/common/src/interfaces/teacher-invitation.ts similarity index 100% rename from common/src/interfaces/teacher-invitation.d.ts rename to common/src/interfaces/teacher-invitation.ts diff --git a/common/src/interfaces/teacher.d.ts b/common/src/interfaces/teacher.ts similarity index 100% rename from common/src/interfaces/teacher.d.ts rename to common/src/interfaces/teacher.ts diff --git a/common/src/interfaces/user.d.ts b/common/src/interfaces/user.ts similarity index 100% rename from common/src/interfaces/user.d.ts rename to common/src/interfaces/user.ts diff --git a/backend/src/entities/content/language.ts b/common/src/util/language.ts similarity index 100% rename from backend/src/entities/content/language.ts rename to common/src/util/language.ts diff --git a/common/tsconfig.json b/common/tsconfig.json index a47827ba..86267d25 100644 --- a/common/tsconfig.json +++ b/common/tsconfig.json @@ -3,9 +3,6 @@ "include": ["src/**/*.ts"], "compilerOptions": { "rootDir": "./src", - "outDir": "./dist", - "resolveJsonModule": true, - "sourceMap": true, - "composite": true + "outDir": "./dist" } } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index e0d34b13..baf5577b 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -12,6 +12,7 @@ } ], "compilerOptions": { + "composite": true, "resolveJsonModule": true } } diff --git a/package-lock.json b/package-lock.json index 52338b8a..79ebf319 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ } }, "backend": { - "name": "dwengo-1-backend", + "name": "@dwengo-1/backend", "version": "0.1.1", "dependencies": { "@mikro-orm/core": "6.4.9", @@ -86,7 +86,7 @@ } }, "common": { - "name": "dwengo-1-common", + "name": "@dwengo-1/common", "version": "0.1.1" }, "docs": { @@ -849,6 +849,14 @@ "kuler": "^2.0.0" } }, + "node_modules/@dwengo-1/backend": { + "resolved": "backend", + "link": true + }, + "node_modules/@dwengo-1/common": { + "resolved": "common", + "link": true + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", @@ -4921,10 +4929,6 @@ "node": ">= 0.4" } }, - "node_modules/dwengo-1-backend": { - "resolved": "backend", - "link": true - }, "node_modules/dwengo-1-common": { "resolved": "common", "link": true diff --git a/package.json b/package.json index c7eeccc3..588629e7 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { - "name": "dwengo-1-monorepo", + "name": "dwengo-1", "version": "0.1.1", "description": "Monorepo for Dwengo-1", "private": true, "type": "module", "scripts": { - "build": "npm run build --workspaces --if-present", + "prebuild": "npm run clean", + "build": "tsc --build tsconfig.build.json", + "clean": "tsc --build tsconfig.build.json --clean", + "watch": "tsc --build tsconfig.build.json --watch", "format": "npm run format --workspace=backend --workspace=common --workspace=frontend", "format-check": "npm run format-check --workspace=backend --workspace=common --workspace=frontend", "lint": "npm run lint --workspace=backend --workspace=common --workspace=frontend", diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 00000000..e283237e --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./common" + }, + { + "path": "./backend" + } + ] +} diff --git a/tsconfig.json b/tsconfig.json index b41449cf..5e1fd98c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ /* Projects */ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ @@ -25,7 +25,7 @@ // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - "moduleDetection": "force", + // "moduleDetection": "force", /* Control what method is used to detect module-format JS files. */ /* Modules */ @@ -33,7 +33,7 @@ /* Specify what module code is generated. */ // "rootDir": "./src", /* Specify the root folder within your source files. */ - "moduleResolution": "node", + "moduleResolution": "bundler", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ @@ -53,16 +53,16 @@ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - "allowJs": true, + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */