@kth/om-kursen-ladok-client 2.1.4 → 2.2.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.
Files changed (62) hide show
  1. package/dist/attributVardenConstants.js +10 -0
  2. package/dist/attributVardenConstants.js.map +1 -1
  3. package/dist/kth/KTHPeriod/KTHPeriod.d.ts +19 -0
  4. package/dist/kth/KTHPeriod/KTHPeriod.js +60 -0
  5. package/dist/kth/KTHPeriod/KTHPeriod.js.map +1 -0
  6. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.d.ts +10 -0
  7. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js +41 -0
  8. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js.map +1 -0
  9. package/dist/kth/KTHPeriod/convertToKTHPeriods.d.ts +12 -0
  10. package/dist/kth/KTHPeriod/convertToKTHPeriods.js +76 -0
  11. package/dist/kth/KTHPeriod/convertToKTHPeriods.js.map +1 -0
  12. package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.d.ts +7 -0
  13. package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js +36 -0
  14. package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js.map +1 -0
  15. package/dist/kth/KTHPeriod/getKTHPeriodSemesters.d.ts +16 -0
  16. package/dist/kth/KTHPeriod/getKTHPeriodSemesters.js +28 -0
  17. package/dist/kth/KTHPeriod/getKTHPeriodSemesters.js.map +1 -0
  18. package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.d.ts +9 -0
  19. package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.js +21 -0
  20. package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.js.map +1 -0
  21. package/dist/kth/KTHPeriod/testdata/kthPeriods.d.ts +8 -0
  22. package/dist/kth/KTHPeriod/testdata/kthPeriods.js +43 -0
  23. package/dist/kth/KTHPeriod/testdata/kthPeriods.js.map +1 -0
  24. package/dist/kth/extractFunctions/extractBasicCourseData.d.ts +18 -0
  25. package/dist/kth/extractFunctions/extractBasicCourseData.js +47 -0
  26. package/dist/kth/extractFunctions/extractBasicCourseData.js.map +1 -0
  27. package/dist/kth/extractFunctions/extractDiscontinuationData.d.ts +9 -0
  28. package/dist/kth/extractFunctions/extractDiscontinuationData.js +33 -0
  29. package/dist/kth/extractFunctions/extractDiscontinuationData.js.map +1 -0
  30. package/dist/mapCourse.d.ts +1 -10
  31. package/dist/mapCourse.js +6 -46
  32. package/dist/mapCourse.js.map +1 -1
  33. package/dist/mapCourseRound.d.ts +8 -15
  34. package/dist/mapCourseRound.js.map +1 -1
  35. package/dist/mapCourseSyllabus.d.ts +15 -44
  36. package/dist/mapCourseSyllabus.js +39 -43
  37. package/dist/mapCourseSyllabus.js.map +1 -1
  38. package/dist/mapProgramSyllabus.js +6 -41
  39. package/dist/mapProgramSyllabus.js.map +1 -1
  40. package/dist/search/types.d.ts +4 -1
  41. package/dist/supportApis/PeriodService.d.ts +8 -0
  42. package/dist/supportApis/PeriodService.js +46 -0
  43. package/dist/supportApis/PeriodService.js.map +1 -0
  44. package/dist/utils/AcademicSemester.d.ts +1 -0
  45. package/dist/utils/AcademicSemester.js +5 -0
  46. package/dist/utils/AcademicSemester.js.map +1 -1
  47. package/dist/utils/courseSyllabusUtil.d.ts +1 -1
  48. package/dist/utils/courseSyllabusUtil.js +12 -29
  49. package/dist/utils/courseSyllabusUtil.js.map +1 -1
  50. package/dist/utils/languageUtil.d.ts +5 -0
  51. package/dist/utils/languageUtil.js +11 -2
  52. package/dist/utils/languageUtil.js.map +1 -1
  53. package/dist/utils/periodUtil.d.ts +6 -0
  54. package/dist/utils/periodUtil.js +12 -2
  55. package/dist/utils/periodUtil.js.map +1 -1
  56. package/dist/utils/syllabusExtractionUtil.d.ts +8 -0
  57. package/dist/utils/syllabusExtractionUtil.js +71 -0
  58. package/dist/utils/syllabusExtractionUtil.js.map +1 -0
  59. package/dist/utils/typeChecking.d.ts +6 -0
  60. package/dist/utils/typeChecking.js +8 -1
  61. package/dist/utils/typeChecking.js.map +1 -1
  62. package/package.json +2 -2
@@ -116,6 +116,16 @@ exports.INSTANS_ATTRIBUT_VARDEN_FOR_COURSE_SYLLABUS = [
116
116
  'utbildning.attribut.betygsskala',
117
117
  'versionsnummer',
118
118
  'utbildning.attribut.omfattning',
119
+ 'utbildning.attribut.organisation',
120
+ 'avvecklad',
121
+ 'utbildning.lokalt.attribut.29.avvecklad.status',
122
+ 'utbildning.lokalt.attribut.29.avvecklingsbeslut',
123
+ 'utbildning.lokalt.attribut.29.avvecklingsbeslut2',
124
+ 'utbildning.lokalt.attribut.29.avvecklingsbeslut3',
125
+ 'utbildning.lokalt.attribut.29.kursstatus.sv',
126
+ 'utbildning.lokalt.attribut.29.kursstatus.en',
127
+ 'utbildning.lokalt.attribut.29.sista.examinationstermin1.sv',
128
+ 'utbildning.lokalt.attribut.29.sista.examinationstermin1.en',
119
129
  ].join(',');
120
130
  exports.ATTRIBUT_VARDEN_FOR_ACTIVE_PROGRAM_INSTANCE = [
121
131
  'utbildning.attribut.organisation',
@@ -1 +1 @@
1
- {"version":3,"file":"attributVardenConstants.js","sourceRoot":"","sources":["../src/attributVardenConstants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attributVardenConstants.js","sourceRoot":"","sources":["../src/attributVardenConstants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { AcademicSemester, SemesterNumber } from '../../utils';
2
+ export type KTHPeriod = 0 | 1 | 2 | 3 | 4 | 5;
3
+ export type KTHPeriodLabel = `P${KTHPeriod}`;
4
+ export type KTHPeriodSemester = {
5
+ semester: AcademicSemester;
6
+ period: KTHPeriod;
7
+ };
8
+ export type KTHPeriodDefinition = {
9
+ fromDate: Date;
10
+ toDate: Date;
11
+ academicSemester: AcademicSemester;
12
+ kthPeriod: KTHPeriod;
13
+ };
14
+ export declare const formatKTHPeriod: (kthPeriod: KTHPeriod) => KTHPeriodLabel;
15
+ export declare const parseKTHPeriod: (kthPeriod: string) => KTHPeriod | undefined;
16
+ export declare const isKTHPeriodLabel: (s: string) => s is KTHPeriodLabel;
17
+ export declare const matchKthPeriodToSemesterNumber: (period: KTHPeriod) => SemesterNumber | undefined;
18
+ export declare const compareKTHPeriod: (a: KTHPeriod, b: KTHPeriod) => number;
19
+ export declare const compareKTHPeriodSemester: (a: KTHPeriodSemester, b: KTHPeriodSemester) => number;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compareKTHPeriodSemester = exports.compareKTHPeriod = exports.matchKthPeriodToSemesterNumber = exports.isKTHPeriodLabel = exports.parseKTHPeriod = exports.formatKTHPeriod = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const formatKTHPeriod = (kthPeriod) => {
6
+ return `P${kthPeriod}`;
7
+ };
8
+ exports.formatKTHPeriod = formatKTHPeriod;
9
+ const regex = /^P([0-5])$/;
10
+ const parseKTHPeriod = (kthPeriod) => {
11
+ const match = regex.exec(kthPeriod);
12
+ if (!match) {
13
+ return undefined;
14
+ }
15
+ return Number(match[1]);
16
+ };
17
+ exports.parseKTHPeriod = parseKTHPeriod;
18
+ const isKTHPeriodLabel = (s) => regex.test(s);
19
+ exports.isKTHPeriodLabel = isKTHPeriodLabel;
20
+ const matchKthPeriodToSemesterNumber = (period) => {
21
+ switch (period) {
22
+ case 0:
23
+ case 1:
24
+ case 2:
25
+ return utils_1.SemesterNumber.Autumn;
26
+ case 3:
27
+ case 4:
28
+ case 5:
29
+ return utils_1.SemesterNumber.Spring;
30
+ }
31
+ };
32
+ exports.matchKthPeriodToSemesterNumber = matchKthPeriodToSemesterNumber;
33
+ const compareKTHPeriod = (a, b) => {
34
+ return getSortOrder(a) - getSortOrder(b);
35
+ };
36
+ exports.compareKTHPeriod = compareKTHPeriod;
37
+ const getSortOrder = (kthPeriod) => {
38
+ switch (kthPeriod) {
39
+ case 3:
40
+ return 1;
41
+ case 4:
42
+ return 2;
43
+ case 5:
44
+ return 3;
45
+ case 0:
46
+ return 4;
47
+ case 1:
48
+ return 5;
49
+ case 2:
50
+ return 6;
51
+ }
52
+ };
53
+ const compareKTHPeriodSemester = (a, b) => {
54
+ const semesterComparison = utils_1.AcademicSemester.compare(a.semester, b.semester);
55
+ if (semesterComparison !== 0)
56
+ return semesterComparison;
57
+ return (0, exports.compareKTHPeriod)(a.period, b.period);
58
+ };
59
+ exports.compareKTHPeriodSemester = compareKTHPeriodSemester;
60
+ //# sourceMappingURL=KTHPeriod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KTHPeriod.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/KTHPeriod.ts"],"names":[],"mappings":";;;AAAA,uCAA8D;AAkBvD,MAAM,eAAe,GAAG,CAAC,SAAoB,EAAE,EAAE;IACtD,OAAO,IAAI,SAAS,EAAoB,CAAA;AAC1C,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAED,MAAM,KAAK,GAAG,YAAY,CAAA;AAEnB,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAc,CAAA;AACtC,CAAC,CAAA;AAPY,QAAA,cAAc,kBAO1B;AAEM,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAuB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAApE,QAAA,gBAAgB,oBAAoD;AAE1E,MAAM,8BAA8B,GAAG,CAAC,MAAiB,EAA8B,EAAE;IAC9F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,sBAAc,CAAC,MAAM,CAAA;QAC9B,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,sBAAc,CAAC,MAAM,CAAA;IAChC,CAAC;AACH,CAAC,CAAA;AAXY,QAAA,8BAA8B,kCAW1C;AAEM,MAAM,gBAAgB,GAAG,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE;IAC7D,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B;AAED,MAAM,YAAY,GAAG,CAAC,SAAoB,EAAE,EAAE;IAC5C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;IACZ,CAAC;AACH,CAAC,CAAA;AAEM,MAAM,wBAAwB,GAAG,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE;IACrF,MAAM,kBAAkB,GAAG,wBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3E,IAAI,kBAAkB,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAA;IAEvD,OAAO,IAAA,wBAAgB,EAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7C,CAAC,CAAA;AALY,QAAA,wBAAwB,4BAKpC"}
@@ -0,0 +1,10 @@
1
+ import { Tillfallesperiod } from '../../mapCourseRound';
2
+ import { KTHPeriodDefinition, KTHPeriodSemester } from './KTHPeriod';
3
+ /**
4
+ * This function attempts to match the Forsta and SistaUndervisningsdatum of each tillfallesperiod to a KTHPeriod.
5
+ * It returns an array of KTHPeriod
6
+ * @param tillfallesperioder array of Tillfallesperioder containing ForstaUndervisningsdatum and SistaUndervisningsdatum
7
+ * @param kthPeriods KTHPeriodDefinitions
8
+ * @returns
9
+ */
10
+ export declare const calculateKTHPeriodSemesterFromTillfallesperiod: (tillfallesperioder: Pick<Tillfallesperiod, "ForstaUndervisningsdatum" | "SistaUndervisningsdatum">[] | undefined, kthPeriods: KTHPeriodDefinition[] | undefined) => KTHPeriodSemester[] | undefined;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateKTHPeriodSemesterFromTillfallesperiod = void 0;
4
+ const typeChecking_1 = require("../../utils/typeChecking");
5
+ const KTHPeriod_1 = require("./KTHPeriod");
6
+ const matchDateToKTHPeriodYear_1 = require("./matchDateToKTHPeriodYear");
7
+ /**
8
+ * This function attempts to match the Forsta and SistaUndervisningsdatum of each tillfallesperiod to a KTHPeriod.
9
+ * It returns an array of KTHPeriod
10
+ * @param tillfallesperioder array of Tillfallesperioder containing ForstaUndervisningsdatum and SistaUndervisningsdatum
11
+ * @param kthPeriods KTHPeriodDefinitions
12
+ * @returns
13
+ */
14
+ const calculateKTHPeriodSemesterFromTillfallesperiod = (tillfallesperioder, kthPeriods) => {
15
+ if (!(0, typeChecking_1.isArrayWithValues)(tillfallesperioder))
16
+ return undefined;
17
+ if (!(0, typeChecking_1.isArrayWithValues)(kthPeriods))
18
+ return undefined;
19
+ const result = tillfallesperioder.flatMap(({ ForstaUndervisningsdatum, SistaUndervisningsdatum }) => {
20
+ const periods = [
21
+ (0, matchDateToKTHPeriodYear_1.matchDateToKTHPeriodYear)(new Date(ForstaUndervisningsdatum), kthPeriods),
22
+ (0, matchDateToKTHPeriodYear_1.matchDateToKTHPeriodYear)(new Date(SistaUndervisningsdatum), kthPeriods),
23
+ ];
24
+ return filterDefinedAndDistinctValues(periods);
25
+ });
26
+ return result.sort(KTHPeriod_1.compareKTHPeriodSemester);
27
+ };
28
+ exports.calculateKTHPeriodSemesterFromTillfallesperiod = calculateKTHPeriodSemesterFromTillfallesperiod;
29
+ const filterDefinedAndDistinctValues = (kthPeriods) => {
30
+ const definedPeriods = kthPeriods.filter(typeChecking_1.isDefined);
31
+ const seenPeriods = new Set();
32
+ // We loop over the defined periods
33
+ const distinctFirst = definedPeriods.filter(period => {
34
+ if (seenPeriods.has(period.period))
35
+ return false; // If we've seen a period before, we do not want to have it once more, return false to filter out
36
+ seenPeriods.add(period.period); // Otherwise, we mark it as seen
37
+ return true; // and return true to keep it
38
+ });
39
+ return distinctFirst;
40
+ };
41
+ //# sourceMappingURL=calculateKTHPeriodSemesterFromTillfallesperiod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateKTHPeriodSemesterFromTillfallesperiod.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.ts"],"names":[],"mappings":";;;AACA,2DAAuE;AACvE,2CAAyG;AACzG,yEAAqE;AAErE;;;;;;GAMG;AACI,MAAM,8CAA8C,GAAG,CAC5D,kBAAgH,EAChH,UAA6C,EAC7C,EAAE;IACF,IAAI,CAAC,IAAA,gCAAiB,EAAC,kBAAkB,CAAC;QAAE,OAAO,SAAS,CAAA;IAC5D,IAAI,CAAC,IAAA,gCAAiB,EAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAEpD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,EAAE,EAAE;QAClG,MAAM,OAAO,GAAG;YACd,IAAA,mDAAwB,EAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,EAAE,UAAU,CAAC;YACxE,IAAA,mDAAwB,EAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC;SACxE,CAAA;QAED,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,oCAAwB,CAAC,CAAA;AAC9C,CAAC,CAAA;AAjBY,QAAA,8CAA8C,kDAiB1D;AAED,MAAM,8BAA8B,GAAG,CAAC,UAA6C,EAAuB,EAAE;IAC5G,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAEnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAa,CAAA;IAExC,mCAAmC;IACnC,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACnD,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA,CAAC,iGAAiG;QAElJ,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAC,gCAAgC;QAC/D,OAAO,IAAI,CAAA,CAAC,6BAA6B;IAC3C,CAAC,CAAC,CAAA;IAEF,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { PeriodItem } from '@kth/ladok-mellanlager-client';
2
+ import { KTHPeriodDefinition } from './KTHPeriod';
3
+ /**
4
+ * Takes an array of LadokPeriod definitions (periodItems), splits each LadokPeriod into three KTHPeriodDefinitions and returns
5
+ * the resulting array.
6
+ * Note that the calculation for the break points between the KTHPeriods is hardcoded and based on historical values.
7
+ *
8
+ *
9
+ * @param ladokPeriodDefinitions Response data from call to ladok mellanlager's period endpoint
10
+ * @returns An array of KTHPeriodDefinitions based on the given ladokPeriodDefinitions
11
+ */
12
+ export declare const convertToKTHPeriods: (ladokPeriodDefinitions: Pick<PeriodItem, "FromDatum" | "TomDatum" | "Kod">[]) => KTHPeriodDefinition[];
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToKTHPeriods = void 0;
4
+ const utils_1 = require("../../utils");
5
+ /**
6
+ * Takes an array of LadokPeriod definitions (periodItems), splits each LadokPeriod into three KTHPeriodDefinitions and returns
7
+ * the resulting array.
8
+ * Note that the calculation for the break points between the KTHPeriods is hardcoded and based on historical values.
9
+ *
10
+ *
11
+ * @param ladokPeriodDefinitions Response data from call to ladok mellanlager's period endpoint
12
+ * @returns An array of KTHPeriodDefinitions based on the given ladokPeriodDefinitions
13
+ */
14
+ const convertToKTHPeriods = (ladokPeriodDefinitions) => {
15
+ const validDefinitions = ladokPeriodDefinitions.filter(({ Kod }) => (0, utils_1.isValidLadokPeriod)(Kod));
16
+ return validDefinitions.flatMap(splitIntoPeriods);
17
+ };
18
+ exports.convertToKTHPeriods = convertToKTHPeriods;
19
+ // Looking at historical data, P1 and P3 have had the following lengths in days.
20
+ const LENGTH_P1 = 62;
21
+ const LENGTH_P3 = 61;
22
+ const getFirstOfJuly = (year) => new Date(`${year}-07-01`);
23
+ const getLastOfJune = (year) => new Date(`${year}-06-30`);
24
+ const splitIntoPeriods = ({ FromDatum, TomDatum, Kod: ladokPeriodString, }) => {
25
+ const fromDateDate = new Date(FromDatum);
26
+ const toDateDate = new Date(TomDatum);
27
+ const academicSemester = utils_1.AcademicSemester.fromLadokPeriodString(ladokPeriodString); // ladokPeriodString will always be defined here, if not, we have bigger problems
28
+ if (academicSemester.semesterNumber === utils_1.SemesterNumber.Autumn) {
29
+ return splitLadokAutumnPeriodIntoKTHPeriodDefinitions(fromDateDate, academicSemester, toDateDate);
30
+ }
31
+ return splitLadokSpringPeriodIntoKTHPeriodDefinitions(fromDateDate, toDateDate, academicSemester);
32
+ };
33
+ const splitLadokAutumnPeriodIntoKTHPeriodDefinitions = (fromDateDate, academicSemester, toDateDate) => {
34
+ const startOfP0 = getFirstOfJuly(fromDateDate.getFullYear()); // Start of P0 is always July 1st
35
+ const endofP0 = getPreviousDay(fromDateDate); // End of P0 is always the day before the first day of HT
36
+ const endOfP1 = addDaysCustom(fromDateDate, LENGTH_P1); // End of P1 is always $LENGTH_P1 days after the first day of HT
37
+ const startOfP2 = addDaysCustom(endOfP1, 1); // Start of P2 is always the day after end of P1
38
+ return [
39
+ { fromDate: startOfP0, toDate: endofP0, academicSemester, kthPeriod: 0 },
40
+ { fromDate: fromDateDate, toDate: endOfP1, academicSemester, kthPeriod: 1 },
41
+ { fromDate: startOfP2, toDate: toDateDate, academicSemester, kthPeriod: 2 },
42
+ ];
43
+ };
44
+ const splitLadokSpringPeriodIntoKTHPeriodDefinitions = (fromDateDate, toDateDate, academicSemester) => {
45
+ const endOfP3 = addDaysCustom(fromDateDate, LENGTH_P3); // End of P3
46
+ const startOfP4 = addDaysCustom(endOfP3, 1);
47
+ const startOfP5 = addDaysCustom(toDateDate, 1);
48
+ const endOfP5 = getLastOfJune(toDateDate.getFullYear());
49
+ return [
50
+ { fromDate: fromDateDate, toDate: endOfP3, academicSemester, kthPeriod: 3 },
51
+ { fromDate: startOfP4, toDate: toDateDate, academicSemester, kthPeriod: 4 },
52
+ { fromDate: startOfP5, toDate: endOfP5, academicSemester, kthPeriod: 5 },
53
+ ];
54
+ };
55
+ /**
56
+ * Returns the previous day, can handle DST
57
+ * @param date The date in relation to which to calculate the previous day
58
+ * @returns
59
+ */
60
+ const getPreviousDay = (date) => {
61
+ const result = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
62
+ result.setUTCDate(result.getUTCDate() - 1);
63
+ return result;
64
+ };
65
+ /**
66
+ * Returns a Date {days} days after {date}
67
+ * @param date The day to which do add days
68
+ * @param days
69
+ * @returns
70
+ */
71
+ const addDaysCustom = (date, days) => {
72
+ const result = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
73
+ result.setUTCDate(result.getUTCDate() + days);
74
+ return result;
75
+ };
76
+ //# sourceMappingURL=convertToKTHPeriods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertToKTHPeriods.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/convertToKTHPeriods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Tillfallesperiod, Lasperiodsfordelning } from '../../mapCourseRound';
2
+ import { KTHPeriodSemester } from './KTHPeriod';
3
+ type RelevantTillfallesperiod = Pick<Tillfallesperiod, 'ForstaUndervisningsdatum'> & {
4
+ Lasperiodsfordelning: Pick<Lasperiodsfordelning, 'Lasperiodskod'>[];
5
+ };
6
+ export declare const extractKTHPeriodSemesterFromLasperiodsfordelning: (tillfallesperioder: RelevantTillfallesperiod[] | undefined) => KTHPeriodSemester[] | undefined;
7
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractKTHPeriodSemesterFromLasperiodsfordelning = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const typeChecking_1 = require("../../utils/typeChecking");
6
+ const KTHPeriod_1 = require("./KTHPeriod");
7
+ const extractKTHPeriodSemesterFromLasperiodsfordelning = (tillfallesperioder) => {
8
+ if (!(0, typeChecking_1.isArrayWithValues)(tillfallesperioder))
9
+ return undefined;
10
+ const kthPeriods = tillfallesperioder.flatMap(({ Lasperiodsfordelning, ForstaUndervisningsdatum }) => {
11
+ if (!(0, typeChecking_1.isArrayWithValues)(Lasperiodsfordelning))
12
+ return undefined;
13
+ if (!isStrictIsoDate(ForstaUndervisningsdatum))
14
+ return undefined;
15
+ const firstTuitionDate = new Date(ForstaUndervisningsdatum);
16
+ return Lasperiodsfordelning.map(extractKHTPeriodFromLasperiodsfordelning(firstTuitionDate.getFullYear()));
17
+ });
18
+ const definedKthPeriods = kthPeriods.filter(typeChecking_1.isDefined);
19
+ definedKthPeriods.sort(KTHPeriod_1.compareKTHPeriodSemester);
20
+ return definedKthPeriods;
21
+ };
22
+ exports.extractKTHPeriodSemesterFromLasperiodsfordelning = extractKTHPeriodSemesterFromLasperiodsfordelning;
23
+ const strictIsoDate = /^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;
24
+ const isStrictIsoDate = (s) => strictIsoDate.test(s);
25
+ const extractKHTPeriodFromLasperiodsfordelning = (yearOfFirstTuitionDate) => ({ Lasperiodskod }) => {
26
+ const kthPeriod = (0, KTHPeriod_1.parseKTHPeriod)(Lasperiodskod);
27
+ if (!(0, typeChecking_1.isDefined)(kthPeriod))
28
+ return undefined;
29
+ // We know that the response from matchKthPeriodToSemesterNumber will not be undefined, because the passed kthPeriod is of correct format.
30
+ const semesterNumber = (0, KTHPeriod_1.matchKthPeriodToSemesterNumber)(kthPeriod);
31
+ return {
32
+ period: kthPeriod,
33
+ semester: new utils_1.AcademicSemester(yearOfFirstTuitionDate, semesterNumber),
34
+ };
35
+ };
36
+ //# sourceMappingURL=extractKTHPeriodSemesterFromLasperiodsfordelning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractKTHPeriodSemesterFromLasperiodsfordelning.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.ts"],"names":[],"mappings":";;;AACA,uCAA8C;AAC9C,2DAAuE;AACvE,2CAKoB;AAMb,MAAM,gDAAgD,GAAG,CAC9D,kBAA0D,EACzB,EAAE;IACnC,IAAI,CAAC,IAAA,gCAAiB,EAAC,kBAAkB,CAAC;QAAE,OAAO,SAAS,CAAA;IAE5D,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,EAAE,EAAE;QACnG,IAAI,CAAC,IAAA,gCAAiB,EAAC,oBAAoB,CAAC;YAAE,OAAO,SAAS,CAAA;QAE9D,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC;YAAE,OAAO,SAAS,CAAA;QAEhE,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAA;QAE3D,OAAO,oBAAoB,CAAC,GAAG,CAAC,wCAAwC,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAC3G,CAAC,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAEtD,iBAAiB,CAAC,IAAI,CAAC,oCAAwB,CAAC,CAAA;IAEhD,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA;AApBY,QAAA,gDAAgD,oDAoB5D;AAED,MAAM,aAAa,GAAG,0DAA0D,CAAA;AAEhF,MAAM,eAAe,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAErE,MAAM,wCAAwC,GAC5C,CAAC,sBAA8B,EAAE,EAAE,CACnC,CAAC,EAAE,aAAa,EAA+C,EAAE,EAAE;IACjE,MAAM,SAAS,GAAG,IAAA,0BAAc,EAAC,aAAa,CAAC,CAAA;IAE/C,IAAI,CAAC,IAAA,wBAAS,EAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAE3C,0IAA0I;IAC1I,MAAM,cAAc,GAAG,IAAA,0CAA8B,EAAC,SAAS,CAAE,CAAA;IAEjE,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,IAAI,wBAAgB,CAAC,sBAAsB,EAAE,cAAc,CAAC;KACvE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { PeriodItem } from '@kth/ladok-mellanlager-client';
2
+ import { Lasperiodsfordelning, Tillfallesperiod } from '../../mapCourseRound';
3
+ import { KTHPeriodSemester } from './KTHPeriod';
4
+ /**
5
+ * This function tries to extract the KTHPeriods for the given tillfallesperioder.
6
+ * If the tillfallesperioder have Lasperiodsfordelningar, it will take the information from there.
7
+ * If it was unable to extract KTHPeriods from Lasperiodsfordelning, it will attempt to calculate the
8
+ * KTHPeriods based on the first and last date of study of the Tillfallesperioder
9
+ *
10
+ * @param tillfallesperioder Tillfallesperiod for which we want to know the periods
11
+ * @param ladokPeriodDefinitions Response data from call to ladok mellanlager's period endpoint
12
+ * @returns
13
+ */
14
+ export declare const getKTHPeriodSemesters: (tillfallesperioder: (Pick<Tillfallesperiod, "ForstaUndervisningsdatum" | "SistaUndervisningsdatum"> & {
15
+ Lasperiodsfordelning: Pick<Lasperiodsfordelning, "Lasperiodskod">[];
16
+ })[] | undefined, ladokPeriodDefinitions: PeriodItem[]) => KTHPeriodSemester[];
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getKTHPeriodSemesters = void 0;
4
+ const extractKTHPeriodSemesterFromLasperiodsfordelning_1 = require("./extractKTHPeriodSemesterFromLasperiodsfordelning");
5
+ const convertToKTHPeriods_1 = require("./convertToKTHPeriods");
6
+ const calculateKTHPeriodSemesterFromTillfallesperiod_1 = require("./calculateKTHPeriodSemesterFromTillfallesperiod");
7
+ /**
8
+ * This function tries to extract the KTHPeriods for the given tillfallesperioder.
9
+ * If the tillfallesperioder have Lasperiodsfordelningar, it will take the information from there.
10
+ * If it was unable to extract KTHPeriods from Lasperiodsfordelning, it will attempt to calculate the
11
+ * KTHPeriods based on the first and last date of study of the Tillfallesperioder
12
+ *
13
+ * @param tillfallesperioder Tillfallesperiod for which we want to know the periods
14
+ * @param ladokPeriodDefinitions Response data from call to ladok mellanlager's period endpoint
15
+ * @returns
16
+ */
17
+ const getKTHPeriodSemesters = (tillfallesperioder, ladokPeriodDefinitions) => {
18
+ let kthPeriods = (0, extractKTHPeriodSemesterFromLasperiodsfordelning_1.extractKTHPeriodSemesterFromLasperiodsfordelning)(tillfallesperioder);
19
+ if (kthPeriods)
20
+ return kthPeriods;
21
+ const kthPeriodDefinitions = (0, convertToKTHPeriods_1.convertToKTHPeriods)(ladokPeriodDefinitions);
22
+ kthPeriods = (0, calculateKTHPeriodSemesterFromTillfallesperiod_1.calculateKTHPeriodSemesterFromTillfallesperiod)(tillfallesperioder, kthPeriodDefinitions);
23
+ if (kthPeriods)
24
+ return kthPeriods;
25
+ return [];
26
+ };
27
+ exports.getKTHPeriodSemesters = getKTHPeriodSemesters;
28
+ //# sourceMappingURL=getKTHPeriodSemesters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getKTHPeriodSemesters.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/getKTHPeriodSemesters.ts"],"names":[],"mappings":";;;AAEA,yHAAqH;AAErH,+DAA2D;AAC3D,qHAAiH;AAEjH;;;;;;;;;GASG;AACI,MAAM,qBAAqB,GAAG,CACnC,kBAIa,EACb,sBAAoC,EACf,EAAE;IACvB,IAAI,UAAU,GAAG,IAAA,mGAAgD,EAAC,kBAAkB,CAAC,CAAA;IAErF,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,MAAM,oBAAoB,GAAG,IAAA,yCAAmB,EAAC,sBAAsB,CAAC,CAAA;IAExE,UAAU,GAAG,IAAA,+FAA8C,EAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAA;IAErG,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAnBY,QAAA,qBAAqB,yBAmBjC"}
@@ -0,0 +1,9 @@
1
+ import { KTHPeriodDefinition, KTHPeriodSemester } from './KTHPeriod';
2
+ /**
3
+ * Attempts to match the given date to one of the given KTHPeriodDefinitions.
4
+ * Returns a matching KTHPeriodSemester or undefined
5
+ * @param date
6
+ * @param kthPeriods
7
+ * @returns
8
+ */
9
+ export declare const matchDateToKTHPeriodYear: (date: Date, kthPeriods: KTHPeriodDefinition[]) => KTHPeriodSemester | undefined;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchDateToKTHPeriodYear = void 0;
4
+ /**
5
+ * Attempts to match the given date to one of the given KTHPeriodDefinitions.
6
+ * Returns a matching KTHPeriodSemester or undefined
7
+ * @param date
8
+ * @param kthPeriods
9
+ * @returns
10
+ */
11
+ const matchDateToKTHPeriodYear = (date, kthPeriods) => {
12
+ const kthPeriod = kthPeriods.find(({ fromDate, toDate }) => fromDate <= date && date <= toDate);
13
+ if (!kthPeriod)
14
+ return;
15
+ return {
16
+ period: kthPeriod === null || kthPeriod === void 0 ? void 0 : kthPeriod.kthPeriod,
17
+ semester: kthPeriod === null || kthPeriod === void 0 ? void 0 : kthPeriod.academicSemester,
18
+ };
19
+ };
20
+ exports.matchDateToKTHPeriodYear = matchDateToKTHPeriodYear;
21
+ //# sourceMappingURL=matchDateToKTHPeriodYear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchDateToKTHPeriodYear.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/matchDateToKTHPeriodYear.ts"],"names":[],"mappings":";;;AAEA;;;;;;GAMG;AACI,MAAM,wBAAwB,GAAG,CACtC,IAAU,EACV,UAAiC,EACF,EAAE;IACjC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAA;IAE/F,IAAI,CAAC,SAAS;QAAE,OAAM;IAEtB,OAAO;QACL,MAAM,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS;QAC5B,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,gBAAgB;KACtC,CAAA;AACH,CAAC,CAAA;AAZY,QAAA,wBAAwB,4BAYpC"}
@@ -0,0 +1,8 @@
1
+ import { AcademicSemester } from '../../../utils';
2
+ import { KTHPeriod } from '../KTHPeriod';
3
+ export declare const kthPeriods2024: {
4
+ fromDate: Date;
5
+ toDate: Date;
6
+ academicSemester: AcademicSemester;
7
+ kthPeriod: KTHPeriod;
8
+ }[];
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kthPeriods2024 = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ exports.kthPeriods2024 = [
6
+ {
7
+ fromDate: new Date('2024-01-16'),
8
+ toDate: new Date('2024-03-17'),
9
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('VT2024'),
10
+ kthPeriod: 3,
11
+ },
12
+ {
13
+ fromDate: new Date('2024-03-18'),
14
+ toDate: new Date('2024-06-03'),
15
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('VT2024'),
16
+ kthPeriod: 4,
17
+ },
18
+ {
19
+ fromDate: new Date('2024-06-04'),
20
+ toDate: new Date('2024-06-30'),
21
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('VT2024'),
22
+ kthPeriod: 5,
23
+ },
24
+ {
25
+ fromDate: new Date('2024-07-01'),
26
+ toDate: new Date('2024-08-25'),
27
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('HT2024'),
28
+ kthPeriod: 0,
29
+ },
30
+ {
31
+ fromDate: new Date('2024-08-26'),
32
+ toDate: new Date('2024-10-27'),
33
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('HT2024'),
34
+ kthPeriod: 1,
35
+ },
36
+ {
37
+ fromDate: new Date('2024-10-28'),
38
+ toDate: new Date('2025-01-13'),
39
+ academicSemester: utils_1.AcademicSemester.fromLadokPeriodString('HT2024'),
40
+ kthPeriod: 2,
41
+ },
42
+ ];
43
+ //# sourceMappingURL=kthPeriods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kthPeriods.js","sourceRoot":"","sources":["../../../../src/kth/KTHPeriod/testdata/kthPeriods.ts"],"names":[],"mappings":";;;AAAA,0CAAiD;AAGpC,QAAA,cAAc,GAKrB;IACJ;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;IACD;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;IACD;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;IACD;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;IACD;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;IACD;QACE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC9B,gBAAgB,EAAE,wBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAE;QACnE,SAAS,EAAE,CAAC;KACb;CACF,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { Attributdefinition, AttributdefinitionSlim, Attributvarde, Utbildningstyp } from '@kth/ladok-attributvarde-utils';
2
+ import { Language } from '../../utils';
3
+ export type BasicCourse = {
4
+ uid?: string;
5
+ versionsnummer: number;
6
+ kod: string;
7
+ benamning: {
8
+ name: string | undefined;
9
+ nameOther: string | undefined;
10
+ };
11
+ omfattning: {
12
+ number: string;
13
+ formattedWithUnit: string;
14
+ };
15
+ };
16
+ export declare const getCreditsUnit: (utbildningstyp: Utbildningstyp, language: Language) => string;
17
+ export declare const formatCreditsWithUnitLabel: (omfattning: string, utbildningstyp: Utbildningstyp | undefined, language: Language) => string;
18
+ export declare const extractBasicCourseData: (attributvarden: Attributvarde<AttributdefinitionSlim | Attributdefinition>[], language: Language, uid?: string) => BasicCourse;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractBasicCourseData = exports.formatCreditsWithUnitLabel = exports.getCreditsUnit = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const utils_1 = require("../../utils");
6
+ const getCreditsUnit = (utbildningstyp, language) => {
7
+ switch (utbildningstyp.creditsUnit.code) {
8
+ case 'HP':
9
+ case 'HP-K':
10
+ return (0, utils_1.isEnglish)(language) ? 'credits' : 'hp';
11
+ case 'FUP':
12
+ return 'fup';
13
+ default:
14
+ return utbildningstyp.creditsUnit.code.toLowerCase();
15
+ }
16
+ };
17
+ exports.getCreditsUnit = getCreditsUnit;
18
+ const formatCredits = (omfattning, language) => (0, utils_1.isEnglish)(language) ? omfattning : omfattning.replace('.', ',');
19
+ const formatCreditsWithUnitLabel = (omfattning, utbildningstyp, language) => {
20
+ const credits = formatCredits(omfattning, language);
21
+ const unit = utbildningstyp ? (0, exports.getCreditsUnit)(utbildningstyp, language) : '';
22
+ return `${credits} ${unit}`.trim();
23
+ };
24
+ exports.formatCreditsWithUnitLabel = formatCreditsWithUnitLabel;
25
+ const extractBasicCourseData = (attributvarden, language, uid) => {
26
+ var _a;
27
+ const kod = (0, ladok_attributvarde_utils_1.extractString)(attributvarden, 'utbildning.attribut.kod');
28
+ const benamningMultiLingual = {
29
+ name: (0, ladok_attributvarde_utils_1.extractString)(attributvarden, `utbildning.attribut.${(0, utils_1.isEnglish)(language) ? utils_1.LadokLanguageName.English : utils_1.LadokLanguageName.Swedish}.benamning`),
30
+ nameOther: (0, ladok_attributvarde_utils_1.extractString)(attributvarden, `utbildning.attribut.${(0, utils_1.isEnglish)(language) ? utils_1.LadokLanguageName.Swedish : utils_1.LadokLanguageName.English}.benamning`),
31
+ };
32
+ const omfattningRaw = (_a = (0, ladok_attributvarde_utils_1.extractString)(attributvarden, 'utbildning.attribut.omfattning', 'omfattning')) !== null && _a !== void 0 ? _a : '';
33
+ const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(attributvarden);
34
+ const omfattning = {
35
+ number: omfattningRaw,
36
+ formattedWithUnit: (0, exports.formatCreditsWithUnitLabel)(omfattningRaw, utbildningstyp, language),
37
+ };
38
+ const baseData = {
39
+ kod,
40
+ benamning: benamningMultiLingual,
41
+ omfattning,
42
+ versionsnummer: (0, ladok_attributvarde_utils_1.extractVersionNumber)(attributvarden),
43
+ };
44
+ return uid ? Object.assign(Object.assign({}, baseData), { uid }) : baseData;
45
+ };
46
+ exports.extractBasicCourseData = extractBasicCourseData;
47
+ //# sourceMappingURL=extractBasicCourseData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractBasicCourseData.js","sourceRoot":"","sources":["../../../src/kth/extractFunctions/extractBasicCourseData.ts"],"names":[],"mappings":";;;AAAA,8EAQuC;AACvC,uCAAoE;AAa7D,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,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;QAC/C,KAAK,KAAK;YACR,OAAO,KAAK,CAAA;QACd;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IACxD,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B;AAED,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,QAAkB,EAAE,EAAE,CAC/D,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAE1D,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,CAAC,IAAI,EAAE,CAAA;AACpC,CAAC,CAAA;AARY,QAAA,0BAA0B,8BAQtC;AAEM,MAAM,sBAAsB,GAAG,CACpC,cAA4E,EAC5E,QAAkB,EAClB,GAAY,EACC,EAAE;;IACf,MAAM,GAAG,GAAG,IAAA,yCAAa,EAAC,cAAc,EAAE,yBAAyB,CAAE,CAAA;IAErE,MAAM,qBAAqB,GAAG;QAC5B,IAAI,EAAE,IAAA,yCAAa,EACjB,cAAc,EACd,uBAAuB,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,YAAY,CAC/G;QACD,SAAS,EAAE,IAAA,yCAAa,EACtB,cAAc,EACd,uBAAuB,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAiB,CAAC,OAAO,YAAY,CAC/G;KACF,CAAA;IAED,MAAM,aAAa,GAAG,MAAA,IAAA,yCAAa,EAAC,cAAc,EAAE,gCAAgC,EAAE,YAAY,CAAC,mCAAI,EAAE,CAAA;IACzG,MAAM,cAAc,GAAG,IAAA,iDAAqB,EAAC,cAAc,CAAC,CAAA;IAE5D,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,aAAa;QACrB,iBAAiB,EAAE,IAAA,kCAA0B,EAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC;KACvF,CAAA;IAED,MAAM,QAAQ,GAAG;QACf,GAAG;QACH,SAAS,EAAE,qBAAqB;QAChC,UAAU;QACV,cAAc,EAAE,IAAA,gDAAoB,EAAC,cAAc,CAAC;KACrD,CAAA;IAED,OAAO,GAAG,CAAC,CAAC,iCAAM,QAAQ,KAAE,GAAG,IAAG,CAAC,CAAC,QAAQ,CAAA;AAC9C,CAAC,CAAA;AAlCY,QAAA,sBAAsB,0BAkClC"}
@@ -0,0 +1,9 @@
1
+ import { LadokStatusCode } from '@kth/ladok-attributvarde-utils';
2
+ import { Attributdefinition, AttributdefinitionSlim, Attributvarde } from '@kth/ladok-mellanlager-client';
3
+ import { Language } from '../../utils';
4
+ export interface DiscontinuationData {
5
+ underavveckling?: boolean;
6
+ avvecklingsbeslut?: string;
7
+ sistaexaminationstermin?: string;
8
+ }
9
+ export declare const extractDiscontinuationData: (attributvarden: Attributvarde<AttributdefinitionSlim | Attributdefinition>[], language: Language, statusCode?: LadokStatusCode) => DiscontinuationData;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractDiscontinuationData = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const extractDiscontinuationData = (attributvarden, language, statusCode) => {
6
+ var _a, _b, _c, _d, _e, _f;
7
+ if (statusCode !== ladok_attributvarde_utils_1.LadokStatusCode.Complete) {
8
+ return {};
9
+ }
10
+ const underavvecklingLadok = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'avvecklad.status', ladok_attributvarde_utils_1.LokaltAttributType.Boolean, true);
11
+ const avvecklingsbeslutLadok = (_a = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'avvecklingsbeslut2', ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString)) === null || _a === void 0 ? void 0 : _a[language];
12
+ const avvecklingsbeslutLadokAlternative = (_b = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'avvecklingsbeslut3', ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString)) === null || _b === void 0 ? void 0 : _b[language];
13
+ const underavvecklingMigrated = ((_c = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'kursstatus', ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString)) === null || _c === void 0 ? void 0 : _c.en) === 'DEACTIVATED';
14
+ const avvecklingsbeslutMigrated = (_d = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'avvecklingsbeslut', ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString)) === null || _d === void 0 ? void 0 : _d[language];
15
+ const sistaexaminationstermin = (_e = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, 'sista.examinationstermin1', ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString)) === null || _e === void 0 ? void 0 : _e[language];
16
+ if (underavvecklingLadok || underavvecklingMigrated) {
17
+ const isFromLadok = underavvecklingLadok;
18
+ const avvecklingsbeslut = isFromLadok
19
+ ? ((_f = avvecklingsbeslutLadokAlternative !== null && avvecklingsbeslutLadokAlternative !== void 0 ? avvecklingsbeslutLadokAlternative : avvecklingsbeslutLadok) !== null && _f !== void 0 ? _f : avvecklingsbeslutMigrated)
20
+ : avvecklingsbeslutMigrated;
21
+ const avvecklingsInfo = {
22
+ underavveckling: true,
23
+ avvecklingsbeslut,
24
+ };
25
+ if (!isFromLadok) {
26
+ avvecklingsInfo.sistaexaminationstermin = sistaexaminationstermin;
27
+ }
28
+ return avvecklingsInfo;
29
+ }
30
+ return {};
31
+ };
32
+ exports.extractDiscontinuationData = extractDiscontinuationData;
33
+ //# sourceMappingURL=extractDiscontinuationData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractDiscontinuationData.js","sourceRoot":"","sources":["../../../src/kth/extractFunctions/extractDiscontinuationData.ts"],"names":[],"mappings":";;;AAAA,8EAA2G;AAUpG,MAAM,0BAA0B,GAAG,CACxC,cAA4E,EAC5E,QAAkB,EAClB,UAA4B,EACP,EAAE;;IACvB,IAAI,UAAU,KAAK,2CAAe,CAAC,QAAQ,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,oBAAoB,GAAG,IAAA,iDAAqB,EAChD,cAAc,EACd,kBAAkB,EAClB,8CAAkB,CAAC,OAAO,EAC1B,IAAI,CACL,CAAA;IAED,MAAM,sBAAsB,GAAG,MAAA,IAAA,iDAAqB,EAClD,cAAc,EACd,oBAAoB,EACpB,8CAAkB,CAAC,eAAe,CACnC,0CAAG,QAAQ,CAAC,CAAA;IAEb,MAAM,iCAAiC,GAAG,MAAA,IAAA,iDAAqB,EAC7D,cAAc,EACd,oBAAoB,EACpB,8CAAkB,CAAC,eAAe,CACnC,0CAAG,QAAQ,CAAC,CAAA;IAEb,MAAM,uBAAuB,GAC3B,CAAA,MAAA,IAAA,iDAAqB,EAAC,cAAc,EAAE,YAAY,EAAE,8CAAkB,CAAC,eAAe,CAAC,0CAAE,EAAE,MAAK,aAAa,CAAA;IAE/G,MAAM,yBAAyB,GAAG,MAAA,IAAA,iDAAqB,EACrD,cAAc,EACd,mBAAmB,EACnB,8CAAkB,CAAC,eAAe,CACnC,0CAAG,QAAQ,CAAC,CAAA;IAEb,MAAM,uBAAuB,GAAG,MAAA,IAAA,iDAAqB,EACnD,cAAc,EACd,2BAA2B,EAC3B,8CAAkB,CAAC,eAAe,CACnC,0CAAG,QAAQ,CAAC,CAAA;IAEb,IAAI,oBAAoB,IAAI,uBAAuB,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,oBAAoB,CAAA;QAExC,MAAM,iBAAiB,GAAG,WAAW;YACnC,CAAC,CAAC,CAAC,MAAA,iCAAiC,aAAjC,iCAAiC,cAAjC,iCAAiC,GAAI,sBAAsB,mCAAI,yBAAyB,CAAC;YAC5F,CAAC,CAAC,yBAAyB,CAAA;QAE7B,MAAM,eAAe,GAAwB;YAC3C,eAAe,EAAE,IAAI;YACrB,iBAAiB;SAClB,CAAA;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAe,CAAC,uBAAuB,GAAG,uBAAuB,CAAA;QACnE,CAAC;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AA/DY,QAAA,0BAA0B,8BA+DtC"}
@@ -2,6 +2,7 @@ import { LadokStatusCode } from '@kth/ladok-attributvarde-utils';
2
2
  import { SokUtbildningsInstansItem, SokUtbildningsInstansSlimItem } from '@kth/ladok-mellanlager-client';
3
3
  import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from './utils/languageUtil';
4
4
  import { GradingScalesCodes } from './mapGradingScales';
5
+ import { BasicCourse } from './kth/extractFunctions/extractBasicCourseData';
5
6
  export type Course = BasicCourse & {
6
7
  organisation?: TranslatedOrganisation;
7
8
  utbildningstyp?: TranslatedUtbildningstyp;
@@ -17,14 +18,4 @@ export type Course = BasicCourse & {
17
18
  ladokStatusCode?: LadokStatusCode;
18
19
  isMiljo?: boolean;
19
20
  };
20
- export type BasicCourse = {
21
- uid?: string;
22
- versionsnummer: number;
23
- kod: string;
24
- benamning?: string;
25
- omfattning: {
26
- number: string;
27
- formattedWithUnit: string;
28
- };
29
- };
30
21
  export declare const mapCourse: (course: SokUtbildningsInstansItem | SokUtbildningsInstansSlimItem, language: Language, gradingScalesCodes: GradingScalesCodes) => Course;