@kth/om-kursen-ladok-client 2.0.6 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attributVardenConstants.js +3 -0
- package/dist/attributVardenConstants.js.map +1 -1
- package/dist/cache.d.ts +17 -0
- package/dist/cache.js +54 -0
- package/dist/cache.js.map +1 -0
- package/dist/createApiClient.js +5 -30
- package/dist/createApiClient.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mapCourse.js +15 -9
- package/dist/mapCourse.js.map +1 -1
- package/dist/{mapProgramInstans.d.ts → mapProgrammeVersion.d.ts} +7 -4
- package/dist/{mapProgramInstans.js → mapProgrammeVersion.js} +16 -6
- package/dist/mapProgrammeVersion.js.map +1 -0
- package/dist/programme/createProgrammeApi.d.ts +3 -0
- package/dist/programme/createProgrammeApi.js +53 -0
- package/dist/programme/createProgrammeApi.js.map +1 -0
- package/dist/programme/types.d.ts +19 -0
- package/dist/programme/types.js +3 -0
- package/dist/programme/types.js.map +1 -0
- package/dist/programme/utbildningsTypIdConstants.d.ts +4 -0
- package/dist/programme/utbildningsTypIdConstants.js +13 -0
- package/dist/programme/utbildningsTypIdConstants.js.map +1 -0
- package/dist/programme/utils/programmeDegreeMapping.d.ts +10 -0
- package/dist/programme/utils/programmeDegreeMapping.js +55 -0
- package/dist/programme/utils/programmeDegreeMapping.js.map +1 -0
- package/dist/programme/utils/programmeVersionUtil.d.ts +9 -0
- package/dist/programme/utils/programmeVersionUtil.js +27 -0
- package/dist/programme/utils/programmeVersionUtil.js.map +1 -0
- package/dist/search/createSearchApi.js +26 -78
- package/dist/search/createSearchApi.js.map +1 -1
- package/dist/search/searchService.d.ts +24 -0
- package/dist/search/searchService.js +80 -0
- package/dist/search/searchService.js.map +1 -0
- package/dist/search/types.d.ts +15 -0
- package/dist/search/utils/educationalTypeUtils.d.ts +12 -0
- package/dist/search/utils/educationalTypeUtils.js +28 -1
- package/dist/search/utils/educationalTypeUtils.js.map +1 -1
- package/dist/search/utils/searchUtils.d.ts +23 -1
- package/dist/search/utils/searchUtils.js +53 -30
- package/dist/search/utils/searchUtils.js.map +1 -1
- package/dist/supportApis/coursesByOrgUtil.d.ts +32 -0
- package/dist/supportApis/coursesByOrgUtil.js +55 -0
- package/dist/supportApis/coursesByOrgUtil.js.map +1 -0
- package/dist/supportApis/createSupportApis.d.ts +10 -11
- package/dist/supportApis/createSupportApis.js +10 -114
- package/dist/supportApis/createSupportApis.js.map +1 -1
- package/dist/supportApis/organisationService.d.ts +12 -0
- package/dist/supportApis/organisationService.js +42 -0
- package/dist/supportApis/organisationService.js.map +1 -0
- package/dist/supportApis/searchSupportUtil.d.ts +13 -0
- package/dist/supportApis/searchSupportUtil.js +68 -0
- package/dist/supportApis/searchSupportUtil.js.map +1 -0
- package/dist/supportApis/supportService.d.ts +18 -0
- package/dist/supportApis/supportService.js +121 -0
- package/dist/supportApis/supportService.js.map +1 -0
- package/dist/supportApis/supportUtils.d.ts +60 -0
- package/dist/supportApis/supportUtils.js +116 -0
- package/dist/supportApis/supportUtils.js.map +1 -0
- package/dist/supportApis/types.d.ts +12 -0
- package/dist/supportApis/types.js +3 -0
- package/dist/supportApis/types.js.map +1 -0
- package/dist/types/OmKursenLadokApiClient.d.ts +4 -2
- package/dist/utils/AcademicSemester.d.ts +43 -0
- package/dist/utils/AcademicSemester.js +82 -0
- package/dist/utils/AcademicSemester.js.map +1 -0
- package/dist/{search → utils}/SearchError.d.ts +8 -1
- package/dist/{search → utils}/SearchError.js +9 -0
- package/dist/utils/SearchError.js.map +1 -0
- package/dist/utils/collectionUtils.d.ts +4 -0
- package/dist/utils/collectionUtils.js +19 -0
- package/dist/utils/collectionUtils.js.map +1 -0
- package/dist/utils/creditsUtil.js +1 -0
- package/dist/utils/creditsUtil.js.map +1 -1
- package/dist/utils/errorUtils.d.ts +1 -1
- package/dist/utils/errorUtils.js +1 -1
- package/dist/utils/errorUtils.js.map +1 -1
- package/dist/{search/utils → utils}/getAllEntitiesByUseOfContinuation.d.ts +2 -1
- package/dist/{search/utils → utils}/getAllEntitiesByUseOfContinuation.js +5 -5
- package/dist/utils/getAllEntitiesByUseOfContinuation.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/languageUtil.d.ts +12 -9
- package/dist/utils/languageUtil.js +14 -1
- package/dist/utils/languageUtil.js.map +1 -1
- package/dist/utils/mergeResponses.d.ts +3 -0
- package/dist/utils/mergeResponses.js +37 -0
- package/dist/utils/mergeResponses.js.map +1 -0
- package/dist/utils/periodUtil.d.ts +2 -2
- package/dist/utils/periodUtil.js.map +1 -1
- package/dist/utils/programUtil.d.ts +6 -11
- package/dist/utils/programUtil.js +20 -12
- package/dist/utils/programUtil.js.map +1 -1
- package/package.json +3 -3
- package/dist/mapProgramInstans.js.map +0 -1
- package/dist/search/SearchError.js.map +0 -1
- package/dist/search/utils/getAllEntitiesByUseOfContinuation.js.map +0 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractDepartmentFlatsFromSchoolsWithDepartments = exports.filterOutDepartmentsWithoutCourses = exports.getSchoolsWithDepartments = exports.getSchoolNameFromLadokOrganisation = exports.flattenDepartment = exports.getSubDepartments = void 0;
|
|
4
|
+
const typeChecking_1 = require("../utils/typeChecking");
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves the sub-departments for a given organisation (typically a school) by traversing the organisation hierarchy.
|
|
7
|
+
*
|
|
8
|
+
* This function recursively finds all departments under the specified organisation UID, optionally filtering out deprecated departments.
|
|
9
|
+
* Each department is represented as a hierarchical tree structure, where each node contains its name, code, and any sub-departments.
|
|
10
|
+
*
|
|
11
|
+
* @param params - The parameters for retrieving sub-departments.
|
|
12
|
+
* @param params.uid - The UID of the parent organisation (e.g., a school).
|
|
13
|
+
* @param params.organisationskopplingar - Array of organisation connection objects describing the hierarchy.
|
|
14
|
+
* @param params.organisationer - Array of organisation objects.
|
|
15
|
+
* @param params.language - The language to use for department names.
|
|
16
|
+
* @param params.includeDeprecatedDepartments - If true, include deprecated departments; otherwise, only include current departments. Defaults to false.
|
|
17
|
+
* @returns An array of Department objects representing the hierarchical structure of sub-departments.
|
|
18
|
+
*
|
|
19
|
+
* @see handleSchools (in coursesByOrgUtil.ts) for usage in filtering schools and departments with courses.
|
|
20
|
+
* @see extractSchoolsWithDepartments (in createSupportApis.ts) for usage in building school/department lists.
|
|
21
|
+
*/
|
|
22
|
+
const getSubDepartments = ({ uid, organisationskopplingar, organisationer, language, includeDeprecatedDepartments = false, }) => {
|
|
23
|
+
const matchingDepartmentKopplingar = organisationskopplingar.filter(koppling => koppling.OverliggandeRef.Uid === uid);
|
|
24
|
+
const matchingDepartments = matchingDepartmentKopplingar
|
|
25
|
+
.map(koppling => {
|
|
26
|
+
var _a;
|
|
27
|
+
const department = organisationer.find(org => org.Uid === koppling.UnderliggandeRef.Uid);
|
|
28
|
+
if (!department)
|
|
29
|
+
return null;
|
|
30
|
+
if (!includeDeprecatedDepartments && !isCurrentDepartment(department))
|
|
31
|
+
return null;
|
|
32
|
+
const name = getDepartmentNameFromLadokOrganisation(department, language);
|
|
33
|
+
return {
|
|
34
|
+
name,
|
|
35
|
+
code: (_a = department.Organisationskod) !== null && _a !== void 0 ? _a : '',
|
|
36
|
+
departments: (0, exports.getSubDepartments)({ uid: department.Uid, organisationskopplingar, organisationer, language }),
|
|
37
|
+
};
|
|
38
|
+
})
|
|
39
|
+
.filter(department => department !== null);
|
|
40
|
+
return matchingDepartments;
|
|
41
|
+
};
|
|
42
|
+
exports.getSubDepartments = getSubDepartments;
|
|
43
|
+
const isCurrentDepartment = (organisation) => {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
return !((_a = organisation.Giltighetsperiod) === null || _a === void 0 ? void 0 : _a.Slutdatum) || new Date((_b = organisation.Giltighetsperiod) === null || _b === void 0 ? void 0 : _b.Slutdatum) > new Date();
|
|
46
|
+
};
|
|
47
|
+
const getDepartmentNameFromLadokOrganisation = (org, language) => {
|
|
48
|
+
var _a;
|
|
49
|
+
let name = (_a = org.Benamning[language].split('/')[1]) !== null && _a !== void 0 ? _a : org.Benamning.sv;
|
|
50
|
+
return name;
|
|
51
|
+
};
|
|
52
|
+
const flattenDepartment = ({ name, code, departments }) => {
|
|
53
|
+
if (departments.length === 0) {
|
|
54
|
+
return [{ code, name }];
|
|
55
|
+
}
|
|
56
|
+
return [{ code, name }, ...departments.flatMap(exports.flattenDepartment)];
|
|
57
|
+
};
|
|
58
|
+
exports.flattenDepartment = flattenDepartment;
|
|
59
|
+
const getSchoolNameFromLadokOrganisation = (org, language) => {
|
|
60
|
+
var _a;
|
|
61
|
+
let name = (_a = org.Benamning[language].split('/')[1]) !== null && _a !== void 0 ? _a : org.Benamning.sv;
|
|
62
|
+
name = name.replace(/^(Skolan för |School of )/, '');
|
|
63
|
+
name = `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
64
|
+
return name;
|
|
65
|
+
};
|
|
66
|
+
exports.getSchoolNameFromLadokOrganisation = getSchoolNameFromLadokOrganisation;
|
|
67
|
+
/**
|
|
68
|
+
* Retrieves a list of schools and their associated departments based on provided organisation data and school codes.
|
|
69
|
+
*
|
|
70
|
+
* This function filters the given organisations to include only those matching the specified school codes,
|
|
71
|
+
* then constructs a list of schools, each with its departments. Departments are determined by traversing the
|
|
72
|
+
* organisation hierarchy and flattening the department structure. Only departments whose codes start with the
|
|
73
|
+
* school's code are included.
|
|
74
|
+
*
|
|
75
|
+
* @param organisationer - Array of organisation objects representing schools and departments.
|
|
76
|
+
* @param organisationskopplingar - Array of organisation connection objects describing the hierarchy.
|
|
77
|
+
* @param language - The language to use for school and department names.
|
|
78
|
+
* @param schoolCodes - Array of school codes to include in the result.
|
|
79
|
+
* @returns An array of objects, each representing a school with its code, name, and filtered departments.
|
|
80
|
+
*/
|
|
81
|
+
const getSchoolsWithDepartments = ({ organisationer, organisationskopplingar, language, schoolCodes, }) => {
|
|
82
|
+
const currentSchoolOrganisations = organisationer.filter(organisation => schoolCodes.includes(organisation.Organisationskod));
|
|
83
|
+
const schoolsWithDepartments = currentSchoolOrganisations.map(school => {
|
|
84
|
+
const departmentHierarchy = (0, exports.getSubDepartments)({
|
|
85
|
+
uid: school.Uid,
|
|
86
|
+
organisationskopplingar,
|
|
87
|
+
organisationer,
|
|
88
|
+
language,
|
|
89
|
+
includeDeprecatedDepartments: true,
|
|
90
|
+
});
|
|
91
|
+
const allDepartments = departmentHierarchy.flatMap(exports.flattenDepartment);
|
|
92
|
+
// This filters out departments like "9A"
|
|
93
|
+
const departments = allDepartments.filter(department => department.code.startsWith(school.Organisationskod));
|
|
94
|
+
return {
|
|
95
|
+
departmentPrefix: school.Organisationskod,
|
|
96
|
+
name: (0, exports.getSchoolNameFromLadokOrganisation)(school, language),
|
|
97
|
+
departments,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
schoolsWithDepartments.sort((a, b) => a.name.localeCompare(b.name));
|
|
101
|
+
return schoolsWithDepartments;
|
|
102
|
+
};
|
|
103
|
+
exports.getSchoolsWithDepartments = getSchoolsWithDepartments;
|
|
104
|
+
const filterOutDepartmentsWithoutCourses = (departments, departmentCodesWithCourses) => {
|
|
105
|
+
const schools = departments.map(school => {
|
|
106
|
+
const departments = school.departments.filter(department => departmentCodesWithCourses.includes(department.code));
|
|
107
|
+
if (departments.length === 0)
|
|
108
|
+
return null;
|
|
109
|
+
return Object.assign(Object.assign({}, school), { departments });
|
|
110
|
+
});
|
|
111
|
+
return schools.filter(typeChecking_1.isDefined);
|
|
112
|
+
};
|
|
113
|
+
exports.filterOutDepartmentsWithoutCourses = filterOutDepartmentsWithoutCourses;
|
|
114
|
+
const extractDepartmentFlatsFromSchoolsWithDepartments = (schoolsWithDepartments) => schoolsWithDepartments.flatMap(({ departments }) => departments.flat());
|
|
115
|
+
exports.extractDepartmentFlatsFromSchoolsWithDepartments = extractDepartmentFlatsFromSchoolsWithDepartments;
|
|
116
|
+
//# sourceMappingURL=supportUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supportUtils.js","sourceRoot":"","sources":["../../src/supportApis/supportUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type Department = DepartmentFlat & {
|
|
2
|
+
departments: Department[];
|
|
3
|
+
};
|
|
4
|
+
export type DepartmentFlat = {
|
|
5
|
+
name: string;
|
|
6
|
+
code: string;
|
|
7
|
+
};
|
|
8
|
+
export type SchoolWithDepartments = {
|
|
9
|
+
departmentPrefix: string;
|
|
10
|
+
name: string;
|
|
11
|
+
departments: DepartmentFlat[];
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/supportApis/types.ts"],"names":[],"mappings":""}
|
|
@@ -5,16 +5,18 @@ import { Language } from '../utils';
|
|
|
5
5
|
import { Utbildningsplan } from '../mapUtbildningsplan';
|
|
6
6
|
import { KursPlan } from '../mapCourseSyllabus';
|
|
7
7
|
import { Period } from '@kth/ladok-mellanlager-client/dist/types/endpoints/period';
|
|
8
|
-
import {
|
|
8
|
+
import { ProgrammeVersion } from '../mapProgrammeVersion';
|
|
9
9
|
import { ProgramTillfalle } from '../mapProgramTillfalle';
|
|
10
10
|
import { SearchApi } from '../search/types';
|
|
11
11
|
import { ProgramCurriculum } from '../utils/programUtil';
|
|
12
12
|
import { ProgramSyllabus } from '../mapProgramSyllabus';
|
|
13
13
|
import { SupportApi } from '../supportApis/createSupportApis';
|
|
14
|
+
import { ProgrammeApi } from '../programme/types';
|
|
14
15
|
export type OmKursenLadokApiClient = {
|
|
15
16
|
getLatestCourseVersion: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
|
|
16
17
|
getLatestCourseVersionIncludingCancelled: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
|
|
17
18
|
Search: SearchApi;
|
|
19
|
+
Programme: ProgrammeApi;
|
|
18
20
|
getActiveCourseRounds: (courseCode: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
19
21
|
getActiveAndFutureCourseRounds: (courseCode: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
20
22
|
getCourseRoundsFromPeriod: (courseCode: string, fromPeriod: string, language: Language) => Promise<CourseRound[] | undefined>;
|
|
@@ -25,7 +27,7 @@ export type OmKursenLadokApiClient = {
|
|
|
25
27
|
getActiveProgramInstance: (programCode: string, semester: string, language: Language) => Promise<ProgramTillfalle | undefined>;
|
|
26
28
|
getProgramCurriculum: (programCode: string, semester: string, language: Language) => Promise<ProgramCurriculum[]>;
|
|
27
29
|
getProgramVersion: (programCode: string, semester: string, language: Language) => Promise<{
|
|
28
|
-
programInstans:
|
|
30
|
+
programInstans: ProgrammeVersion | undefined;
|
|
29
31
|
statusCode: number;
|
|
30
32
|
}>;
|
|
31
33
|
getUtbildningstilfalleStructure: (utbildningstillfalleUID: string, language: Language) => Promise<any>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare enum SemesterNumber {
|
|
2
|
+
Spring = 1,
|
|
3
|
+
Autumn = 2
|
|
4
|
+
}
|
|
5
|
+
export declare enum LadokPeriod {
|
|
6
|
+
Spring = "VT",
|
|
7
|
+
Autumn = "HT"
|
|
8
|
+
}
|
|
9
|
+
export type AcademicSemesterJSON = {
|
|
10
|
+
year: number;
|
|
11
|
+
semesterNumber: SemesterNumber;
|
|
12
|
+
};
|
|
13
|
+
export declare class AcademicSemester {
|
|
14
|
+
readonly year: number;
|
|
15
|
+
readonly semesterNumber: SemesterNumber;
|
|
16
|
+
constructor(year: number, semesterNumber: SemesterNumber);
|
|
17
|
+
private static readonly semesterNumberToLadok;
|
|
18
|
+
private static readonly ladokToSemesterNumber;
|
|
19
|
+
/**
|
|
20
|
+
* Creates an AcademicSemester from a Ladok period string like "VT2024" or "HT2024".
|
|
21
|
+
* Returns undefined if the input does not match the expected format.
|
|
22
|
+
*/
|
|
23
|
+
static fromLadokPeriodString(input: string): AcademicSemester | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an AcademicSemester from a KTH semester string like "20241" for VT2024 or "20242" for HT2024.
|
|
26
|
+
* Returns undefined if the input does not match the expected format.
|
|
27
|
+
*/
|
|
28
|
+
static fromKTHSemesterString(semester: string): AcademicSemester | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Create from a plain JSON object, as produced by toJSON().
|
|
31
|
+
*/
|
|
32
|
+
static fromJSON({ year, semesterNumber }: AcademicSemesterJSON): AcademicSemester;
|
|
33
|
+
/**
|
|
34
|
+
* Returns a KTH semester string in the format 20241 for VT2024 or 20242 for HT2024.
|
|
35
|
+
*/
|
|
36
|
+
toKTHSemesterString(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Returns a Ladok period string in the format VT2024 for spring semester or HT2024 for autumn semester.
|
|
39
|
+
*/
|
|
40
|
+
toLadokPeriodString(): string;
|
|
41
|
+
toString(): string;
|
|
42
|
+
toJSON(): AcademicSemesterJSON;
|
|
43
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AcademicSemester = exports.LadokPeriod = exports.SemesterNumber = void 0;
|
|
4
|
+
var SemesterNumber;
|
|
5
|
+
(function (SemesterNumber) {
|
|
6
|
+
SemesterNumber[SemesterNumber["Spring"] = 1] = "Spring";
|
|
7
|
+
SemesterNumber[SemesterNumber["Autumn"] = 2] = "Autumn";
|
|
8
|
+
})(SemesterNumber || (exports.SemesterNumber = SemesterNumber = {}));
|
|
9
|
+
var LadokPeriod;
|
|
10
|
+
(function (LadokPeriod) {
|
|
11
|
+
LadokPeriod["Spring"] = "VT";
|
|
12
|
+
LadokPeriod["Autumn"] = "HT";
|
|
13
|
+
})(LadokPeriod || (exports.LadokPeriod = LadokPeriod = {}));
|
|
14
|
+
class AcademicSemester {
|
|
15
|
+
constructor(year, semesterNumber) {
|
|
16
|
+
this.year = year;
|
|
17
|
+
this.semesterNumber = semesterNumber;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates an AcademicSemester from a Ladok period string like "VT2024" or "HT2024".
|
|
21
|
+
* Returns undefined if the input does not match the expected format.
|
|
22
|
+
*/
|
|
23
|
+
static fromLadokPeriodString(input) {
|
|
24
|
+
const uppercaseInput = input.toUpperCase();
|
|
25
|
+
const match = uppercaseInput.match(/^(VT|HT)(\d{4})$/);
|
|
26
|
+
if (!match)
|
|
27
|
+
return undefined;
|
|
28
|
+
const [, code, yearStr] = match;
|
|
29
|
+
return new AcademicSemester(Number(yearStr), AcademicSemester.ladokToSemesterNumber[code]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates an AcademicSemester from a KTH semester string like "20241" for VT2024 or "20242" for HT2024.
|
|
33
|
+
* Returns undefined if the input does not match the expected format.
|
|
34
|
+
*/
|
|
35
|
+
static fromKTHSemesterString(semester) {
|
|
36
|
+
const match = semester.match(/^(\d{4})([12])$/);
|
|
37
|
+
if (!match)
|
|
38
|
+
return undefined;
|
|
39
|
+
const [, yearStr, semCode] = match;
|
|
40
|
+
return new AcademicSemester(Number(yearStr), Number(semCode));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create from a plain JSON object, as produced by toJSON().
|
|
44
|
+
*/
|
|
45
|
+
static fromJSON({ year, semesterNumber }) {
|
|
46
|
+
return new AcademicSemester(year, semesterNumber);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns a KTH semester string in the format 20241 for VT2024 or 20242 for HT2024.
|
|
50
|
+
*/
|
|
51
|
+
toKTHSemesterString() {
|
|
52
|
+
return `${this.year}${this.semesterNumber}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns a Ladok period string in the format VT2024 for spring semester or HT2024 for autumn semester.
|
|
56
|
+
*/
|
|
57
|
+
toLadokPeriodString() {
|
|
58
|
+
const period = AcademicSemester.semesterNumberToLadok[this.semesterNumber];
|
|
59
|
+
return `${period}${this.year}`;
|
|
60
|
+
}
|
|
61
|
+
toString() {
|
|
62
|
+
return this.toLadokPeriodString();
|
|
63
|
+
}
|
|
64
|
+
toJSON() {
|
|
65
|
+
return {
|
|
66
|
+
year: this.year,
|
|
67
|
+
semesterNumber: this.semesterNumber,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.AcademicSemester = AcademicSemester;
|
|
72
|
+
// Map SemesterNumber to LadokPeriod
|
|
73
|
+
AcademicSemester.semesterNumberToLadok = {
|
|
74
|
+
[SemesterNumber.Spring]: LadokPeriod.Spring,
|
|
75
|
+
[SemesterNumber.Autumn]: LadokPeriod.Autumn,
|
|
76
|
+
};
|
|
77
|
+
// Map LadokPeriod back to SemesterNumber
|
|
78
|
+
AcademicSemester.ladokToSemesterNumber = {
|
|
79
|
+
[LadokPeriod.Spring]: SemesterNumber.Spring,
|
|
80
|
+
[LadokPeriod.Autumn]: SemesterNumber.Autumn,
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=AcademicSemester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcademicSemester.js","sourceRoot":"","sources":["../../src/utils/AcademicSemester.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uDAAU,CAAA;IACV,uDAAU,CAAA;AACZ,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,4BAAa,CAAA;AACf,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAOD,MAAa,gBAAgB;IAI3B,YAAY,IAAY,EAAE,cAA8B;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAcD;;;OAGG;IACI,MAAM,CAAC,qBAAqB,CAAC,KAAa;QAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAA;QAC/B,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,IAAmB,CAAC,CAAC,CAAA;IAC3G,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,qBAAqB,CAAC,QAAgB;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAA;QAClC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAmB,CAAC,CAAA;IACjF,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAwB;QACnE,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;IAC7C,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,MAAM,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1E,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAChC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAA;IACnC,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAA;IACH,CAAC;;AA3EH,4CA4EC;AAnEC,oCAAoC;AACZ,sCAAqB,GAAwC;IACnF,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;IAC3C,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;CAC5C,CAAA;AAED,yCAAyC;AACjB,sCAAqB,GAAwC;IACnF,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM;IAC3C,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM;CAC5C,CAAA"}
|
|
@@ -23,10 +23,17 @@ export declare class SearchError extends Error {
|
|
|
23
23
|
* @returns
|
|
24
24
|
*/
|
|
25
25
|
static noRestrictions(): SearchError;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new SearchError with errorCode MISSING_PARAMETER and the given message.
|
|
28
|
+
* @param message
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
static missingParameter(message: string): SearchError;
|
|
26
32
|
}
|
|
27
33
|
export declare enum SearchErrorCode {
|
|
28
34
|
UNKNOWN_ERROR = "unknownError",
|
|
29
35
|
OVERFLOW = "search-error-overflow",
|
|
30
36
|
KOD_OR_BENAMNING_MISSING = "errorKodEllerBenamning",
|
|
31
|
-
NO_RESTRICTIONS = "errorNoRestrictions"
|
|
37
|
+
NO_RESTRICTIONS = "errorNoRestrictions",
|
|
38
|
+
MISSING_PARAMETER = "errorMissingParameter"
|
|
32
39
|
}
|
|
@@ -38,6 +38,14 @@ class SearchError extends Error {
|
|
|
38
38
|
static noRestrictions() {
|
|
39
39
|
return new SearchError(SearchErrorCode.NO_RESTRICTIONS);
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new SearchError with errorCode MISSING_PARAMETER and the given message.
|
|
43
|
+
* @param message
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
static missingParameter(message) {
|
|
47
|
+
return new SearchError(SearchErrorCode.MISSING_PARAMETER, message);
|
|
48
|
+
}
|
|
41
49
|
}
|
|
42
50
|
exports.SearchError = SearchError;
|
|
43
51
|
// TODO Benni refactor naming convention to be more consistent, make sure it is in sync with KP
|
|
@@ -47,5 +55,6 @@ var SearchErrorCode;
|
|
|
47
55
|
SearchErrorCode["OVERFLOW"] = "search-error-overflow";
|
|
48
56
|
SearchErrorCode["KOD_OR_BENAMNING_MISSING"] = "errorKodEllerBenamning";
|
|
49
57
|
SearchErrorCode["NO_RESTRICTIONS"] = "errorNoRestrictions";
|
|
58
|
+
SearchErrorCode["MISSING_PARAMETER"] = "errorMissingParameter";
|
|
50
59
|
})(SearchErrorCode || (exports.SearchErrorCode = SearchErrorCode = {}));
|
|
51
60
|
//# sourceMappingURL=SearchError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchError.js","sourceRoot":"","sources":["../../src/utils/SearchError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAEpC,YAAoB,SAA0B,EAAE,OAAgB;QAC9D,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;CACF;AAnDD,kCAmDC;AAED,+FAA+F;AAC/F,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,iDAA8B,CAAA;IAC9B,qDAAkC,CAAA;IAClC,sEAAmD,CAAA;IACnD,0DAAuC,CAAA;IACvC,8DAA2C,CAAA;AAC7C,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupBy = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Groups an array of items by a given key selector.
|
|
6
|
+
*/
|
|
7
|
+
const groupBy = (items, keySelector) => {
|
|
8
|
+
const grouped = new Map();
|
|
9
|
+
for (const item of items) {
|
|
10
|
+
const key = keySelector(item);
|
|
11
|
+
if (!grouped.has(key)) {
|
|
12
|
+
grouped.set(key, []);
|
|
13
|
+
}
|
|
14
|
+
grouped.get(key).push(item);
|
|
15
|
+
}
|
|
16
|
+
return grouped;
|
|
17
|
+
};
|
|
18
|
+
exports.groupBy = groupBy;
|
|
19
|
+
//# sourceMappingURL=collectionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectionUtils.js","sourceRoot":"","sources":["../../src/utils/collectionUtils.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,OAAO,GAAG,CAAO,KAAU,EAAE,WAA2B,EAAe,EAAE;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAZY,QAAA,OAAO,WAYnB"}
|
|
@@ -4,6 +4,7 @@ exports.formatCreditsWithUnitLabel = exports.getCreditsUnit = void 0;
|
|
|
4
4
|
const getCreditsUnit = (utbildningstyp, language) => {
|
|
5
5
|
switch (utbildningstyp.creditsUnit.code) {
|
|
6
6
|
case 'HP':
|
|
7
|
+
case 'HP-K':
|
|
7
8
|
return language === 'sv' ? 'hp' : 'credits';
|
|
8
9
|
case 'FUP':
|
|
9
10
|
return 'fup';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creditsUtil.js","sourceRoot":"","sources":["../../src/utils/creditsUtil.ts"],"names":[],"mappings":";;;AAGO,MAAM,cAAc,GAAG,CAAC,cAA8B,EAAE,QAAkB,EAAE,EAAE;IACnF,QAAQ,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"creditsUtil.js","sourceRoot":"","sources":["../../src/utils/creditsUtil.ts"],"names":[],"mappings":";;;AAGO,MAAM,cAAc,GAAG,CAAC,cAA8B,EAAE,QAAkB,EAAE,EAAE;IACnF,QAAQ,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7C,KAAK,KAAK;YACR,OAAO,KAAK,CAAA;QACd;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC9D,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B;AAED,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,QAAkB,EAAE,EAAE,CAC/D,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AAExD,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,cAA0C,EAC1C,QAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAA;AAC7B,CAAC,CAAA;AARY,QAAA,0BAA0B,8BAQtC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SearchError } from '../
|
|
1
|
+
import { SearchError } from '../utils/SearchError';
|
|
2
2
|
/**
|
|
3
3
|
* This function contains a utility to convert an unknown error into a SearchError.
|
|
4
4
|
* This was inspired by this blog post: https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript
|
package/dist/utils/errorUtils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toSearchError = void 0;
|
|
4
|
-
const SearchError_1 = require("../
|
|
4
|
+
const SearchError_1 = require("../utils/SearchError");
|
|
5
5
|
/**
|
|
6
6
|
* This function contains a utility to convert an unknown error into a SearchError.
|
|
7
7
|
* This was inspired by this blog post: https://kentcdodds.com/blog/get-a-catch-block-error-message-with-typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAElD;;;;;;GAMG;AAEH;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,UAAmB,EAAe,EAAE;IAChE,IAAI,aAAa,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAA;IAEhD,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,yBAAW,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,yBAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAA;AAChE,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;AAED,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IAC7D,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAAiC,CAAC,IAAI,KAAK,QAAQ;QAC3D,KAAK,CAAC,IAAI,KAAK,aAAa;QAC5B,KAAK,YAAY,yBAAW,CAC7B,CAAA;AACH,CAAC,CAAA;AAMD,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAiC,CAAC,OAAO,KAAK,QAAQ,CAC/D,CAAA;AACH,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,UAAmB,EAAU,EAAE;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAAC,WAAM,CAAC;QACP,gEAAgE;QAChE,6CAA6C;QAC7C,OAAO,MAAM,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MellanlagringSearchResponse, SokUtbildningsInstansSlimQuery, SokUtbildningsTillfalleSlimQuery } from '@kth/ladok-mellanlager-client';
|
|
2
|
+
import { ContinuationOptions } from '../search/types';
|
|
2
3
|
export declare const getAllEntitiesByUseOfContinuation: <T, K extends SokUtbildningsInstansSlimQuery | SokUtbildningsTillfalleSlimQuery>(apiCall: (requestQuery: K, requestHeader?: {
|
|
3
4
|
continuationToken?: string;
|
|
4
|
-
}) => Promise<MellanlagringSearchResponse<T>>, requestQuery: K) => Promise<T[]>;
|
|
5
|
+
}) => Promise<MellanlagringSearchResponse<T>>, requestQuery: K, { maxSearchResultsToReturn, maxContinuationIterations, }?: ContinuationOptions) => Promise<T[]>;
|
|
@@ -10,17 +10,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.getAllEntitiesByUseOfContinuation = void 0;
|
|
13
|
-
const SearchError_1 = require("../SearchError");
|
|
13
|
+
const SearchError_1 = require("../utils/SearchError");
|
|
14
14
|
const MAX_SEARCH_RESULTS_TO_RETURN = 300; // TODO Benni, make sure to adjust this. We do not want to have more than 250 results in the UI, but here it could be more
|
|
15
15
|
const MAX_CONTINUATION_ITERATIONS = 4;
|
|
16
|
-
const getAllEntitiesByUseOfContinuation = (
|
|
16
|
+
const getAllEntitiesByUseOfContinuation = (apiCall_1, requestQuery_1, ...args_1) => __awaiter(void 0, [apiCall_1, requestQuery_1, ...args_1], void 0, function* (apiCall, requestQuery, { maxSearchResultsToReturn = MAX_SEARCH_RESULTS_TO_RETURN, maxContinuationIterations = MAX_CONTINUATION_ITERATIONS, } = {}) {
|
|
17
17
|
var _a;
|
|
18
18
|
let continuationToken = undefined;
|
|
19
19
|
let iterationCount = 0;
|
|
20
20
|
let allEntities = [];
|
|
21
21
|
do {
|
|
22
|
-
if (iterationCount >=
|
|
23
|
-
throw SearchError_1.SearchError.overflow(`Maximum number of continuation iterations reached: ${
|
|
22
|
+
if (iterationCount >= maxContinuationIterations) {
|
|
23
|
+
throw SearchError_1.SearchError.overflow(`Maximum number of continuation iterations reached: ${maxContinuationIterations}`);
|
|
24
24
|
}
|
|
25
25
|
const requestHeader = Object.assign({}, (continuationToken !== null && continuationToken !== undefined && { continuationToken }));
|
|
26
26
|
const result = yield apiCall(requestQuery, requestHeader);
|
|
@@ -37,7 +37,7 @@ const getAllEntitiesByUseOfContinuation = (apiCall, requestQuery) => __awaiter(v
|
|
|
37
37
|
return [];
|
|
38
38
|
}
|
|
39
39
|
allEntities = allEntities.concat(result.items);
|
|
40
|
-
if (allEntities.length >
|
|
40
|
+
if (allEntities.length > maxSearchResultsToReturn) {
|
|
41
41
|
throw SearchError_1.SearchError.overflow(`Maximum number of entities exceeded: ${allEntities.length}`);
|
|
42
42
|
}
|
|
43
43
|
continuationToken = (_a = result.searchMeta.continuationToken) !== null && _a !== void 0 ? _a : undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllEntitiesByUseOfContinuation.js","sourceRoot":"","sources":["../../src/utils/getAllEntitiesByUseOfContinuation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,sDAAkD;AAGlD,MAAM,4BAA4B,GAAG,GAAG,CAAA,CAAC,0HAA0H;AACnK,MAAM,2BAA2B,GAAG,CAAC,CAAA;AAE9B,MAAM,iCAAiC,GAAG,uCAejC,EAAE,8EAXhB,OAK4C,EAC5C,YAAe,EACf,EACE,wBAAwB,GAAG,4BAA4B,EACvD,yBAAyB,GAAG,2BAA2B,MAChC,EAAE;;IAE3B,IAAI,iBAAiB,GAAuB,SAAS,CAAA;IACrD,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,WAAW,GAAQ,EAAE,CAAA;IAEzB,GAAG,CAAC;QACF,IAAI,cAAc,IAAI,yBAAyB,EAAE,CAAC;YAChD,MAAM,yBAAW,CAAC,QAAQ,CAAC,sDAAsD,yBAAyB,EAAE,CAAC,CAAA;QAC/G,CAAC;QACD,MAAM,aAAa,qBACd,CAAC,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,SAAS,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC5F,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAEzD,oGAAoG;QACpG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QAED,oGAAoG;QACpG,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC3C,mHAAmH;YACnH,OAAO,EAAE,CAAA;QACX,CAAC;QAED,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,WAAW,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAClD,MAAM,yBAAW,CAAC,QAAQ,CAAC,wCAAwC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,CAAC;QAED,iBAAiB,GAAG,MAAA,MAAM,CAAC,UAAU,CAAC,iBAAiB,mCAAI,SAAS,CAAA;QACpE,cAAc,EAAE,CAAA;IAClB,CAAC,QAAQ,iBAAiB,EAAC;IAE3B,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA,CAAA;AAvDY,QAAA,iCAAiC,qCAuD7C"}
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./periodUtil"), exports);
|
|
|
20
20
|
__exportStar(require("./studyYearUtil"), exports);
|
|
21
21
|
__exportStar(require("./filterCourseRoundUtils"), exports);
|
|
22
22
|
__exportStar(require("./versionUtils"), exports);
|
|
23
|
+
__exportStar(require("./AcademicSemester"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,2DAAwC;AACxC,iDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,iDAA8B;AAC9B,+CAA4B;AAC5B,kDAA+B;AAC/B,2DAAwC;AACxC,iDAA8B;AAC9B,qDAAkC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { Grunddata, Organisation, Studietakt, Tilltradesniva, Utbildningstyp } from '@kth/ladok-attributvarde-utils';
|
|
1
|
+
import { EduLevel, Grunddata, Organisation, Studietakt, Tilltradesniva, Utbildningstyp } from '@kth/ladok-attributvarde-utils';
|
|
2
2
|
export type Language = 'sv' | 'en';
|
|
3
|
+
export declare enum LanguageCode {
|
|
4
|
+
Swedish = "sv",
|
|
5
|
+
English = "en"
|
|
6
|
+
}
|
|
3
7
|
export interface TranslatedGrunddata {
|
|
4
8
|
id: string;
|
|
5
9
|
code: string;
|
|
@@ -9,22 +13,20 @@ export interface TranslatedGrunddata {
|
|
|
9
13
|
export interface TranslatedOrganisation extends TranslatedGrunddata {
|
|
10
14
|
organisationTypeName: string;
|
|
11
15
|
}
|
|
16
|
+
export interface TranslatedEduLevel {
|
|
17
|
+
code: string;
|
|
18
|
+
name: string;
|
|
19
|
+
}
|
|
12
20
|
export interface TranslatedUtbildningstyp extends TranslatedGrunddata {
|
|
13
21
|
creditsUnit: {
|
|
14
22
|
code: string;
|
|
15
23
|
sv: string;
|
|
16
24
|
en: string;
|
|
17
25
|
};
|
|
18
|
-
level:
|
|
19
|
-
code: string;
|
|
20
|
-
name: string;
|
|
21
|
-
};
|
|
26
|
+
level: TranslatedEduLevel;
|
|
22
27
|
}
|
|
23
28
|
export interface TranslatedTilltradesniva extends TranslatedGrunddata {
|
|
24
|
-
level:
|
|
25
|
-
code: string;
|
|
26
|
-
name: string;
|
|
27
|
-
};
|
|
29
|
+
level: TranslatedEduLevel;
|
|
28
30
|
}
|
|
29
31
|
export interface TranslatedStudietakt extends TranslatedGrunddata {
|
|
30
32
|
takt: Studietakt['takt'];
|
|
@@ -33,4 +35,5 @@ export declare const translateGrunddata: (grunddata: Grunddata, language: Langua
|
|
|
33
35
|
export declare const translateOrganisation: (organisation: Organisation, language: Language) => TranslatedOrganisation;
|
|
34
36
|
export declare const translateUtbildningstyp: (utbildningstyp: Utbildningstyp, language: Language) => TranslatedUtbildningstyp;
|
|
35
37
|
export declare const translatedTilltradesniva: (utbildningstyp: Tilltradesniva, language: Language) => TranslatedTilltradesniva;
|
|
38
|
+
export declare const translateEduLevel: (eduLevel: EduLevel, language: Language) => TranslatedEduLevel;
|
|
36
39
|
export declare const translateStudietakt: (studietakt: Studietakt, language: Language) => TranslatedStudietakt;
|
|
@@ -11,7 +11,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.translateStudietakt = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = void 0;
|
|
14
|
+
exports.translateStudietakt = exports.translateEduLevel = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = exports.LanguageCode = void 0;
|
|
15
|
+
var LanguageCode;
|
|
16
|
+
(function (LanguageCode) {
|
|
17
|
+
LanguageCode["Swedish"] = "sv";
|
|
18
|
+
LanguageCode["English"] = "en";
|
|
19
|
+
})(LanguageCode || (exports.LanguageCode = LanguageCode = {}));
|
|
15
20
|
const translateGrunddata = (grunddata, language) => {
|
|
16
21
|
const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
|
|
17
22
|
return {
|
|
@@ -47,6 +52,14 @@ const translatedTilltradesniva = (utbildningstyp, language) => {
|
|
|
47
52
|
} });
|
|
48
53
|
};
|
|
49
54
|
exports.translatedTilltradesniva = translatedTilltradesniva;
|
|
55
|
+
const translateEduLevel = (eduLevel, language) => {
|
|
56
|
+
const { code } = eduLevel, rest = __rest(eduLevel, ["code"]);
|
|
57
|
+
return {
|
|
58
|
+
code,
|
|
59
|
+
name: rest[language],
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
exports.translateEduLevel = translateEduLevel;
|
|
50
63
|
const translateStudietakt = (studietakt, language) => {
|
|
51
64
|
return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(studietakt, language)), { takt: studietakt.takt });
|
|
52
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,8BAAc,CAAA;IACd,8BAAc,CAAA;AAChB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAmCM,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAE,QAAkB,EAAuB,EAAE;IAClG,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAA;IACvC,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;KACjD,CAAA;AACH,CAAC,CAAA;AARY,QAAA,kBAAkB,sBAQ9B;AAEM,MAAM,qBAAqB,GAAG,CAAC,YAA0B,EAAE,QAAkB,EAA0B,EAAE;IAC9G,uCACK,IAAA,0BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,KAC7C,oBAAoB,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAC9D;AACH,CAAC,CAAA;AALY,QAAA,qBAAqB,yBAKjC;AAEM,MAAM,uBAAuB,GAAG,CACrC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,WAAW,CAAA;IAC7C,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAA;IAC9C,uCACK,IAAA,0BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,KAC/C,WAAW,EAAE;YACX,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI;YACrC,EAAE;YACF,EAAE;SACH,EACD,KAAK,EAAE;YACL,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACrB,IACF;AACH,CAAC,CAAA;AAlBY,QAAA,uBAAuB,2BAkBnC;AAEM,MAAM,wBAAwB,GAAG,CACtC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAA;IAC9C,uCACK,IAAA,0BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,KAC/C,KAAK,EAAE;YACL,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACrB,IACF;AACH,CAAC,CAAA;AAZY,QAAA,wBAAwB,4BAYpC;AAEM,MAAM,iBAAiB,GAAG,CAAC,QAAkB,EAAE,QAAkB,EAAsB,EAAE;IAC9F,MAAM,EAAE,IAAI,KAAc,QAAQ,EAAjB,IAAI,UAAK,QAAQ,EAA5B,QAAiB,CAAW,CAAA;IAClC,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;KACrB,CAAA;AACH,CAAC,CAAA;AANY,QAAA,iBAAiB,qBAM7B;AAEM,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAE,QAAkB,EAAwB,EAAE;IACtG,uCACK,IAAA,0BAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,KAC3C,IAAI,EAAE,UAAU,CAAC,IAAI,IACtB;AACH,CAAC,CAAA;AALY,QAAA,mBAAmB,uBAK/B"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { MellanlagringSearchResponse } from '@kth/ladok-mellanlager-client';
|
|
2
|
+
export declare const mergePlainArrays: <T>(a: T[], b: T[], uniqueItemKey: (item: T) => string) => T[];
|
|
3
|
+
export declare const mergeApiResponses: <T>(a: MellanlagringSearchResponse<T>, b: MellanlagringSearchResponse<T>, uniqueItemKey: (item: T) => string) => MellanlagringSearchResponse<T>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeApiResponses = exports.mergePlainArrays = void 0;
|
|
4
|
+
const mergePlainArrays = (a, b, uniqueItemKey) => {
|
|
5
|
+
const mergedItemsMap = new Map();
|
|
6
|
+
for (const item of a !== null && a !== void 0 ? a : []) {
|
|
7
|
+
mergedItemsMap.set(uniqueItemKey(item), item);
|
|
8
|
+
}
|
|
9
|
+
for (const item of b !== null && b !== void 0 ? b : []) {
|
|
10
|
+
mergedItemsMap.set(uniqueItemKey(item), item);
|
|
11
|
+
}
|
|
12
|
+
return Array.from(mergedItemsMap.values());
|
|
13
|
+
};
|
|
14
|
+
exports.mergePlainArrays = mergePlainArrays;
|
|
15
|
+
const mergeApiResponses = (a, b, uniqueItemKey) => {
|
|
16
|
+
var _a, _b, _c, _d, _e, _f;
|
|
17
|
+
if (a.type === 'error')
|
|
18
|
+
return a;
|
|
19
|
+
if (b.type === 'error')
|
|
20
|
+
return b;
|
|
21
|
+
return {
|
|
22
|
+
type: 'success',
|
|
23
|
+
responseInfo: {
|
|
24
|
+
apiError: a.responseInfo.apiError || b.responseInfo.apiError,
|
|
25
|
+
statusCode: Math.max(a.responseInfo.statusCode, b.responseInfo.statusCode),
|
|
26
|
+
statusText: a.responseInfo.statusText || b.responseInfo.statusText,
|
|
27
|
+
},
|
|
28
|
+
searchMeta: {
|
|
29
|
+
pageResultSize: ((_a = a.searchMeta.pageResultSize) !== null && _a !== void 0 ? _a : 0) + ((_b = b.searchMeta.pageResultSize) !== null && _b !== void 0 ? _b : 0),
|
|
30
|
+
requestCharge: ((_c = a.searchMeta.requestCharge) !== null && _c !== void 0 ? _c : 0) + ((_d = b.searchMeta.requestCharge) !== null && _d !== void 0 ? _d : 0),
|
|
31
|
+
elapsedTime: Math.max((_e = a.searchMeta.elapsedTime) !== null && _e !== void 0 ? _e : 0, (_f = b.searchMeta.elapsedTime) !== null && _f !== void 0 ? _f : 0),
|
|
32
|
+
},
|
|
33
|
+
items: (0, exports.mergePlainArrays)(a.items, b.items, uniqueItemKey),
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
exports.mergeApiResponses = mergeApiResponses;
|
|
37
|
+
//# sourceMappingURL=mergeResponses.js.map
|