@kth/om-kursen-ladok-client 1.1.0 → 1.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.
Files changed (43) hide show
  1. package/dist/createApiClient.js +111 -5
  2. package/dist/createApiClient.js.map +1 -1
  3. package/dist/mapCourseInstans.d.ts +8 -0
  4. package/dist/mapCourseInstans.js +21 -0
  5. package/dist/mapCourseInstans.js.map +1 -0
  6. package/dist/mapCourseRound.d.ts +25 -3
  7. package/dist/mapCourseRound.js +20 -17
  8. package/dist/mapCourseRound.js.map +1 -1
  9. package/dist/mapCourseSyllabus.d.ts +76 -0
  10. package/dist/mapCourseSyllabus.js +67 -0
  11. package/dist/mapCourseSyllabus.js.map +1 -0
  12. package/dist/mapProgramTillfalle.d.ts +22 -0
  13. package/dist/mapProgramTillfalle.js +39 -0
  14. package/dist/mapProgramTillfalle.js.map +1 -0
  15. package/dist/mapStructureCourses.d.ts +24 -0
  16. package/dist/mapStructureCourses.js +27 -0
  17. package/dist/mapStructureCourses.js.map +1 -0
  18. package/dist/types/OmKursenLadokApiClient.d.ts +10 -1
  19. package/dist/utils/courseSyllabusUtil.d.ts +4 -0
  20. package/dist/utils/courseSyllabusUtil.js +66 -0
  21. package/dist/utils/courseSyllabusUtil.js.map +1 -0
  22. package/dist/utils/creditsUtil.d.ts +1 -0
  23. package/dist/utils/creditsUtil.js +3 -2
  24. package/dist/utils/creditsUtil.js.map +1 -1
  25. package/dist/utils/dateUtil.d.ts +1 -0
  26. package/dist/utils/dateUtil.js +4 -1
  27. package/dist/utils/dateUtil.js.map +1 -1
  28. package/dist/utils/examinationModulesUtil.d.ts +12 -1
  29. package/dist/utils/examinationModulesUtil.js +15 -1
  30. package/dist/utils/examinationModulesUtil.js.map +1 -1
  31. package/dist/utils/languageUtil.d.ts +8 -1
  32. package/dist/utils/languageUtil.js +10 -2
  33. package/dist/utils/languageUtil.js.map +1 -1
  34. package/dist/utils/periodUtil.d.ts +1 -0
  35. package/dist/utils/periodUtil.js +7 -1
  36. package/dist/utils/periodUtil.js.map +1 -1
  37. package/dist/utils/programStrukturUtil.d.ts +77 -0
  38. package/dist/utils/programStrukturUtil.js +191 -0
  39. package/dist/utils/programStrukturUtil.js.map +1 -0
  40. package/dist/utils/studyYearUtil.d.ts +25 -0
  41. package/dist/utils/studyYearUtil.js +48 -0
  42. package/dist/utils/studyYearUtil.js.map +1 -0
  43. package/package.json +3 -3
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapStructureCourses = void 0;
4
+ const creditsUtil_1 = require("./utils/creditsUtil");
5
+ const utils_1 = require("./utils");
6
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
7
+ const mapStructureCourses = (entity, language) => {
8
+ const { Attributvarden, Uid } = entity;
9
+ const utbildningsinstansUid = (0, ladok_attributvarde_utils_1.extractString)(Attributvarden, "utbildningsinstans.uid");
10
+ const tillfalleskod = (0, ladok_attributvarde_utils_1.extractString)(Attributvarden, "utbildning.attribut.utbildningstillfalleskod");
11
+ const omfattningNumber = entity.Tillfallesperioder.reduce((sum, period) => sum + period.Omfattningsvarde, 0);
12
+ const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(Attributvarden);
13
+ const startperiod = (0, ladok_attributvarde_utils_1.extractGrunddata)(Attributvarden, "utbildning.attribut.startperiod");
14
+ return {
15
+ utbildningsinstansUid: utbildningsinstansUid,
16
+ uid: Uid,
17
+ tillfalleskod: tillfalleskod,
18
+ omfattning: {
19
+ number: omfattningNumber,
20
+ formattedWithUnit: (0, creditsUtil_1.formatCreditsWithUnitLabel)(omfattningNumber.toString(), utbildningstyp, language),
21
+ },
22
+ startperiod: startperiod && (0, utils_1.translateGrunddata)(startperiod, language),
23
+ Tillfallesperioder: entity.Tillfallesperioder,
24
+ };
25
+ };
26
+ exports.mapStructureCourses = mapStructureCourses;
27
+ //# sourceMappingURL=mapStructureCourses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapStructureCourses.js","sourceRoot":"","sources":["../src/mapStructureCourses.ts"],"names":[],"mappings":";;;AAIA,qDAAiE;AACjE,mCAA4E;AAC5E,8EAIwC;AAwBjC,MAAM,mBAAmB,GAAG,CACjC,MAA4B,EAC5B,QAAkB,EACD,EAAE;IACnB,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAEvC,MAAM,qBAAqB,GAAG,IAAA,yCAAa,EACzC,cAAc,EACd,wBAAwB,CACzB,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,yCAAa,EACjC,cAAc,EACd,8CAA8C,CAC/C,CAAC;IAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,gBAAgB,EAC9C,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,iDAAqB,EAAC,cAAc,CAAC,CAAC;IAE7D,MAAM,WAAW,GAAG,IAAA,4CAAgB,EAClC,cAAc,EACd,iCAAiC,CAClC,CAAC;IAEF,OAAO;QACL,qBAAqB,EAAE,qBAAsB;QAC7C,GAAG,EAAE,GAAG;QACR,aAAa,EAAE,aAAc;QAC7B,UAAU,EAAE;YACV,MAAM,EAAE,gBAAgB;YACxB,iBAAiB,EAAE,IAAA,wCAA0B,EAC3C,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,cAAc,EACd,QAAQ,CACT;SACF;QACD,WAAW,EAAE,WAAW,IAAI,IAAA,0BAAkB,EAAC,WAAW,EAAE,QAAQ,CAAC;QACrE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;KAC9C,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,mBAAmB,uBA2C9B"}
@@ -1,9 +1,11 @@
1
- import { ResponseInfo } from "@kth/ladok-mellanlager-client";
1
+ import { MellanlagringResponse, ResponseInfo } from "@kth/ladok-mellanlager-client";
2
2
  import { GroupedCourseSearchResult } from "../groupSearchResults";
3
3
  import { Course } from "../mapCourse";
4
4
  import { CourseRound } from "../mapCourseRound";
5
5
  import { Language } from "../utils";
6
6
  import { Utbildningsplan } from "../mapUtbildningsplan";
7
+ import { KursPlan } from "../mapCourseSyllabus";
8
+ import { Period } from "@kth/ladok-mellanlager-client/dist/types/endpoints/period";
7
9
  export type OmKursenLadokApiClient = {
8
10
  getLatestCourseVersion: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
9
11
  searchCourses: (searchParams: {
@@ -23,4 +25,11 @@ export type OmKursenLadokApiClient = {
23
25
  getUtbildningsPlan: (uid: string, language: Language) => Promise<Utbildningsplan | undefined>;
24
26
  getExaminationModulesByUtbildningstillfalleUid: (utbildningstillfalleUid: string, language: Language) => Promise<any>;
25
27
  getExaminationModulesByUtbildningsinstansUid: (utbildningsinstansUid: string, language: Language) => Promise<any>;
28
+ getActiveProgramTillfalle: (programCode: string, term: string, language: Language) => Promise<any>;
29
+ getUtbildningstilfalleStructure: (utbildningstillfalleUID: string, language: Language) => Promise<any>;
30
+ getCourseSyllabus: (courseCode: string, semester: string, language: Language) => Promise<KursPlan> | undefined;
31
+ getCourseSyllabuses: (courseCode: string, language: Language) => Promise<KursPlan[]> | undefined;
32
+ getAllGradingScales: () => Promise<any>;
33
+ getAllGradingScalesCodes: () => Promise<any>;
34
+ getPeriods: () => Promise<MellanlagringResponse<Period>>;
26
35
  };
@@ -0,0 +1,4 @@
1
+ import { SokPlanItem } from "@kth/ladok-mellanlager-client";
2
+ import { PeriodItem } from "@kth/ladok-mellanlager-client/dist/types/endpoints/period";
3
+ export declare const getSemester: (dateStr: string) => string;
4
+ export declare function getSyllabusForSemester(semester: string, syllabuses: SokPlanItem[], periods: PeriodItem[]): SokPlanItem | null;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSemester = void 0;
4
+ exports.getSyllabusForSemester = getSyllabusForSemester;
5
+ const periodUtil_1 = require("./periodUtil");
6
+ const getSemester = (dateStr) => {
7
+ const [yearStr, monthStr] = dateStr.split("-");
8
+ const year = parseInt(yearStr, 10);
9
+ const month = parseInt(monthStr, 10);
10
+ if (month >= 1 && month <= 7) {
11
+ return `VT${year}`;
12
+ }
13
+ else if (month >= 8 && month <= 12) {
14
+ return `HT${year}`;
15
+ }
16
+ throw new Error("Invalid date format or value");
17
+ };
18
+ exports.getSemester = getSemester;
19
+ function sortSyllabuses(syllabuses) {
20
+ return syllabuses.sort((a, b) => {
21
+ // Step 1: Sort by most recent GiltigFran date (descending)
22
+ const dateA = new Date(a.GiltigFran).getTime();
23
+ const dateB = new Date(b.GiltigFran).getTime();
24
+ if (dateA !== dateB) {
25
+ return dateB - dateA;
26
+ }
27
+ // Step 2: If same GiltigFran date, sort by latest course version (descending)
28
+ const versionA = parseInt(a.index.versionsnummer, 10);
29
+ const versionB = parseInt(b.index.versionsnummer, 10);
30
+ if (versionA !== versionB) {
31
+ return versionB - versionA;
32
+ }
33
+ // Step 3: If same course version date, sort by latest syllabus version (descending)
34
+ const syllabusEditionA = a.AktuellaAttributvarden.find((Attributvarde) => Attributvarde.Attributdefinition.Kod === "utbildning.lokalt.attribut.29.utgava").Varden[0];
35
+ const syllabusEditionB = b.AktuellaAttributvarden.find((Attributvarde) => Attributvarde.Attributdefinition.Kod === "utbildning.lokalt.attribut.29.utgava").Varden[0];
36
+ if (parseInt(syllabusEditionA) !== parseInt(syllabusEditionB)) {
37
+ return parseInt(syllabusEditionB) - parseInt(syllabusEditionA);
38
+ }
39
+ // Step 3: If same versionsnummer, sort by most recent date the syllabus was saved
40
+ const timestampA = new Date(a.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
41
+ const timestampB = new Date(b.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
42
+ return timestampB - timestampA;
43
+ });
44
+ }
45
+ function getSyllabusForSemester(semester, syllabuses, periods) {
46
+ const semesterOnLadokFormat = (0, periodUtil_1.transformDigitsInPeriod)(semester);
47
+ const match = semesterOnLadokFormat.match(/^(VT|HT)(\d{4})$/);
48
+ if (!match) {
49
+ throw new Error("Invalid semester format. Expected 'VTYYYY' or 'HTYYYY'.");
50
+ }
51
+ const exactPeriod = periods.find(period => period.Kod === semesterOnLadokFormat);
52
+ let semesterEnd;
53
+ if (exactPeriod) {
54
+ semesterEnd = new Date(exactPeriod === null || exactPeriod === void 0 ? void 0 : exactPeriod.Giltighetsperiod.Slutdatum);
55
+ }
56
+ else {
57
+ throw new Error(`Could not find find a corresponding period for semester ${semesterOnLadokFormat}`);
58
+ }
59
+ const validSyllabuses = syllabuses.filter((syllabus) => {
60
+ const validFrom = new Date(syllabus.GiltigFran);
61
+ return validFrom <= semesterEnd;
62
+ });
63
+ const sortedSyllabuses = sortSyllabuses(validSyllabuses);
64
+ return sortedSyllabuses.length > 0 ? sortedSyllabuses[0] : null;
65
+ }
66
+ //# sourceMappingURL=courseSyllabusUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"courseSyllabusUtil.js","sourceRoot":"","sources":["../../src/utils/courseSyllabusUtil.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { Utbildningstyp } from "@kth/ladok-attributvarde-utils";
2
2
  import { Language } from "./languageUtil";
3
+ export declare const getCreditsUnit: (utbildningstyp: Utbildningstyp, language: Language) => string;
3
4
  export declare const formatCreditsWithUnitLabel: (omfattning: string, utbildningstyp: Utbildningstyp | undefined, language: Language) => string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatCreditsWithUnitLabel = void 0;
3
+ exports.formatCreditsWithUnitLabel = exports.getCreditsUnit = void 0;
4
4
  const getCreditsUnit = (utbildningstyp, language) => {
5
5
  switch (utbildningstyp.creditsUnit.code) {
6
6
  case "HP":
@@ -11,10 +11,11 @@ const getCreditsUnit = (utbildningstyp, language) => {
11
11
  return utbildningstyp.creditsUnit.code.toLocaleLowerCase();
12
12
  }
13
13
  };
14
+ exports.getCreditsUnit = getCreditsUnit;
14
15
  const formatCredits = (omfattning, language) => language === "sv" ? omfattning.replace(".", ",") : omfattning;
15
16
  const formatCreditsWithUnitLabel = (omfattning, utbildningstyp, language) => {
16
17
  const credits = formatCredits(omfattning, language);
17
- const unit = utbildningstyp ? getCreditsUnit(utbildningstyp, language) : "";
18
+ const unit = utbildningstyp ? (0, exports.getCreditsUnit)(utbildningstyp, language) : "";
18
19
  return `${credits} ${unit}`;
19
20
  };
20
21
  exports.formatCreditsWithUnitLabel = formatCreditsWithUnitLabel;
@@ -1 +1 @@
1
- {"version":3,"file":"creditsUtil.js","sourceRoot":"","sources":["../../src/utils/creditsUtil.ts"],"names":[],"mappings":";;;AAGA,MAAM,cAAc,GAAG,CAAC,cAA8B,EAAE,QAAkB,EAAE,EAAE;IAC5E,QAAQ,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI;YACP,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF,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,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,cAA0C,EAC1C,QAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC"}
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;YACP,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEF,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,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,cAA0C,EAC1C,QAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAA,sBAAc,EAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC"}
@@ -2,3 +2,4 @@ export declare const getYearAndWeek: (dateString: string) => {
2
2
  year: number;
3
3
  week: number;
4
4
  };
5
+ export declare const getFormattedCurrentDate: () => string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getYearAndWeek = void 0;
3
+ exports.getFormattedCurrentDate = exports.getYearAndWeek = void 0;
4
+ const date_fns_1 = require("date-fns");
4
5
  const getYearAndWeek = (dateString) => {
5
6
  const date = new Date(dateString);
6
7
  const year = date.getFullYear();
@@ -21,4 +22,6 @@ const getYearAndWeek = (dateString) => {
21
22
  };
22
23
  };
23
24
  exports.getYearAndWeek = getYearAndWeek;
25
+ const getFormattedCurrentDate = () => (0, date_fns_1.format)(new Date(), 'yyyy-MM-dd');
26
+ exports.getFormattedCurrentDate = getFormattedCurrentDate;
24
27
  //# sourceMappingURL=dateUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateUtil.js","sourceRoot":"","sources":["../../src/utils/dateUtil.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAC5B,UAAkB,EACc,EAAE;IAClC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAU,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1C,kDAAkD;QAClD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CACrE,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAW,aAAa,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,cAAc,kBA6BzB"}
1
+ {"version":3,"file":"dateUtil.js","sourceRoot":"","sources":["../../src/utils/dateUtil.ts"],"names":[],"mappings":";;;AAAA,uCAAiC;AAE1B,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAkC,EAAE;IACnF,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,CAAA;IAEvC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAU,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QAEzC,kDAAkD;QAClD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAEnE,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE1E,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAElG,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,IAAI,GAAW,aAAa,CAAC,IAAI,CAAC,CAAA;IAExC,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,cAAc,kBAyB1B;AAEM,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAI,IAAI,EAAE,EAAE,YAAY,CAAC,CAAA;AAAhE,QAAA,uBAAuB,2BAAyC"}
@@ -1,13 +1,24 @@
1
1
  import { LadokMellanlagerApiClient } from "@kth/ladok-mellanlager-client";
2
+ import { ExaminationModule } from "../mapExaminationModule";
2
3
  import { Language } from "./languageUtil";
3
4
  export declare const handleError: (message: string, error?: any) => {
4
5
  error: string;
5
6
  details: any;
6
7
  };
8
+ export declare const formatExaminationTitles: (examinationModules: (ExaminationModule | undefined)[]) => {
9
+ completeExaminationStrings: string[];
10
+ titles: string[];
11
+ };
7
12
  export declare const fetchStructure: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<{
8
13
  AvserTillfalle: boolean;
9
14
  Publicerad: boolean;
10
15
  UtbildningsbasUID: string;
16
+ Valinformation?: {
17
+ EngelskBeskrivning?: string;
18
+ SvenskBeskrivning?: string;
19
+ ValUID: string;
20
+ ValmojlighetsID: string;
21
+ };
11
22
  }[]>;
12
23
  export declare const fetchModules: (utbildningsbasUIDn: string[], ladokClient: LadokMellanlagerApiClient) => Promise<(import("@kth/ladok-mellanlager-client").Utbildningsinstans | undefined)[]>;
13
- export declare const getExaminationModules: (utbildningsinstansUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<(import("../mapExaminationModule").ExaminationModule | undefined)[]>;
24
+ export declare const getExaminationModules: (utbildningsinstansUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<(ExaminationModule | undefined)[]>;
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getExaminationModules = exports.fetchModules = exports.fetchStructure = exports.handleError = void 0;
12
+ exports.getExaminationModules = exports.fetchModules = exports.fetchStructure = exports.formatExaminationTitles = exports.handleError = void 0;
13
13
  const mapExaminationModule_1 = require("../mapExaminationModule");
14
14
  const gradingScalesUtils_1 = require("./gradingScalesUtils");
15
15
  const handleError = (message, error) => {
@@ -17,6 +17,20 @@ const handleError = (message, error) => {
17
17
  return { error: message, details: (error === null || error === void 0 ? void 0 : error.message) || "Unknown error" };
18
18
  };
19
19
  exports.handleError = handleError;
20
+ const formatExaminationTitles = (examinationModules) => {
21
+ try {
22
+ const completeExaminationStrings = examinationModules.map(m => { var _a, _b; return `${m === null || m === void 0 ? void 0 : m.kod} - ${m === null || m === void 0 ? void 0 : m.benamning}, ${m === null || m === void 0 ? void 0 : m.omfattning.formattedWithUnit}, ${(_a = m === null || m === void 0 ? void 0 : m.betygsskala) === null || _a === void 0 ? void 0 : _a.name}: ${(_b = m === null || m === void 0 ? void 0 : m.betygsskala) === null || _b === void 0 ? void 0 : _b.formatted}`; });
23
+ const examinationTitles = examinationModules.map(m => `${m === null || m === void 0 ? void 0 : m.kod} - ${m === null || m === void 0 ? void 0 : m.benamning}, ${m === null || m === void 0 ? void 0 : m.omfattning.formattedWithUnit}`);
24
+ return {
25
+ completeExaminationStrings: completeExaminationStrings,
26
+ titles: examinationTitles,
27
+ };
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Failed to format examination titles: ${error}`);
31
+ }
32
+ };
33
+ exports.formatExaminationTitles = formatExaminationTitles;
20
34
  const fetchStructure = (uid, ladokClient) => __awaiter(void 0, void 0, void 0, function* () {
21
35
  var _a;
22
36
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"examinationModulesUtil.js","sourceRoot":"","sources":["../../src/utils/examinationModulesUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,kEAA+D;AAE/D,6DAA6D;AAEtD,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,KAAW,EAAE,EAAE;IAC1D,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,eAAe,EAAE,CAAC;AACxE,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,WAAsC,EACtC,EAAE;;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,aAAa,KAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,mBAAW,EAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC,CAAA,CAAC;AAVW,QAAA,cAAc,kBAUzB;AAEK,MAAM,YAAY,GAAG,CAC1B,kBAA4B,EAC5B,WAAsC,EACtC,EAAE;IACF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,kBAAkB,CAAC,GAAG,CAAC,CAAO,iBAAiB,EAAE,EAAE;YACjD,IAAI,CAAC;gBACH,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAC7D,iBAAiB,CAClB,CAAC;gBACF,OAAO,kBAAkB,CAAC,IAAI,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAA,mBAAW,EACf,+CAA+C,iBAAiB,GAAG,EACnE,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC,CAAA,CAAC,CACH,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,mBAAW,EAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAA,CAAC;AAxBW,QAAA,YAAY,gBAwBvB;AAEK,MAAM,qBAAqB,GAAG,CACnC,qBAA6B,EAC7B,QAAkB,EAClB,WAAsC,EACtC,EAAE;IACF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,IAAA,sBAAc,EACxC,qBAAsB,EACtB,WAAW,CACZ,CAAC;QACF,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAC1C,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAC/C,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,IAAA,oBAAY,EAC3C,kBAAkB,EAClB,WAAW,CACZ,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,IAAA,0CAAqB,EAAC,WAAW,CAAC,CAAC;QACpE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5D,OAAO,CAAC,IAAI,IAAA,2CAAoB,EAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAA,mBAAW,EAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAA,CAAC;AAzBW,QAAA,qBAAqB,yBAyBhC"}
1
+ {"version":3,"file":"examinationModulesUtil.js","sourceRoot":"","sources":["../../src/utils/examinationModulesUtil.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Grunddata, Organisation, Studietakt, Utbildningstyp } from "@kth/ladok-attributvarde-utils";
1
+ import { Grunddata, Organisation, Studietakt, Tilltradesniva, Utbildningstyp } from "@kth/ladok-attributvarde-utils";
2
2
  export type Language = "sv" | "en";
3
3
  export interface TranslatedGrunddata {
4
4
  id: string;
@@ -20,10 +20,17 @@ export interface TranslatedUtbildningstyp extends TranslatedGrunddata {
20
20
  name: string;
21
21
  };
22
22
  }
23
+ export interface TranslatedTilltradesniva extends TranslatedGrunddata {
24
+ level: {
25
+ code: string;
26
+ name: string;
27
+ };
28
+ }
23
29
  export interface TranslatedStudietakt extends TranslatedGrunddata {
24
30
  takt: Studietakt["takt"];
25
31
  }
26
32
  export declare const translateGrunddata: (grunddata: Grunddata, language: Language) => TranslatedGrunddata;
27
33
  export declare const translateOrganisation: (organisation: Organisation, language: Language) => TranslatedOrganisation;
28
34
  export declare const translateUtbildningstyp: (utbildningstyp: Utbildningstyp, language: Language) => TranslatedUtbildningstyp;
35
+ export declare const translatedTilltradesniva: (utbildningstyp: Tilltradesniva, language: Language) => TranslatedTilltradesniva;
29
36
  export declare const translateStudietakt: (studietakt: Studietakt, language: Language) => TranslatedStudietakt;
@@ -11,14 +11,14 @@ 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.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = void 0;
14
+ exports.translateStudietakt = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = void 0;
15
15
  const translateGrunddata = (grunddata, language) => {
16
16
  const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
17
17
  return {
18
18
  id,
19
19
  code,
20
20
  name: rest[language],
21
- nameOther: rest[language === 'sv' ? 'en' : 'sv']
21
+ nameOther: rest[language === "sv" ? "en" : "sv"],
22
22
  };
23
23
  };
24
24
  exports.translateGrunddata = translateGrunddata;
@@ -39,6 +39,14 @@ const translateUtbildningstyp = (utbildningstyp, language) => {
39
39
  } });
40
40
  };
41
41
  exports.translateUtbildningstyp = translateUtbildningstyp;
42
+ const translatedTilltradesniva = (utbildningstyp, language) => {
43
+ const _a = utbildningstyp.level, { code } = _a, rest = __rest(_a, ["code"]);
44
+ return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(utbildningstyp, language)), { level: {
45
+ code,
46
+ name: rest[language],
47
+ } });
48
+ };
49
+ exports.translatedTilltradesniva = translatedTilltradesniva;
42
50
  const translateStudietakt = (studietakt, language) => {
43
51
  return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(studietakt, language)), { takt: studietakt.takt });
44
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAoCO,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,QAAkB,EACG,EAAE;IACvB,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAC;IACxC,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,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,YAA0B,EAC1B,QAAkB,EACM,EAAE;IAC1B,uCACK,IAAA,0BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,KAC7C,oBAAoB,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAC7D;AACJ,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEK,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,CAAC;IAC/C,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,IACD;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC;AAEK,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACtB,QAAkB,EACI,EAAE;IACxB,uCACK,IAAA,0BAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,KAC3C,IAAI,EAAE,UAAU,CAAC,IAAI,IACrB;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B"}
1
+ {"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AA4CO,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,QAAkB,EACG,EAAE;IACvB,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAC;IACxC,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,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,YAA0B,EAC1B,QAAkB,EACM,EAAE;IAC1B,uCACK,IAAA,0BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,KAC7C,oBAAoB,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAC7D;AACJ,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEK,MAAM,uBAAuB,GAAG,CACrC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC;IAC9C,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAC;IAC/C,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,IACD;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC;AAEK,MAAM,wBAAwB,GAAG,CACtC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAC;IAC/C,uCACK,IAAA,0BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,KAC/C,KAAK,EAAE;YACL,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACrB,IACD;AACJ,CAAC,CAAC;AAZW,QAAA,wBAAwB,4BAYnC;AAEK,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACtB,QAAkB,EACI,EAAE;IACxB,uCACK,IAAA,0BAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,KAC3C,IAAI,EAAE,UAAU,CAAC,IAAI,IACrB;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B"}
@@ -1,4 +1,5 @@
1
1
  export declare const transformPeriodInDigits: (period: string) => string | null;
2
+ export declare const transformDigitsInPeriod: (period: string) => string;
2
3
  export declare const getPeriodCodeForDate: (date: Date) => string;
3
4
  export declare const getKthStudyPeriod: (date: Date, startPeriod: {
4
5
  code: string | undefined;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.transformPeriodInDigits = void 0;
3
+ exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.transformDigitsInPeriod = exports.transformPeriodInDigits = void 0;
4
4
  const transformPeriodInDigits = (period) => {
5
5
  const validPrefixes = ["HT", "VT"];
6
6
  if (validPrefixes.includes(period.slice(0, 2)) && period.length > 2) {
@@ -11,6 +11,12 @@ const transformPeriodInDigits = (period) => {
11
11
  return null;
12
12
  };
13
13
  exports.transformPeriodInDigits = transformPeriodInDigits;
14
+ const transformDigitsInPeriod = (period) => {
15
+ const year = period.slice(0, 4);
16
+ const semester = period.slice(4) === "1" ? "VT" : "HT";
17
+ return `${semester}${year}`;
18
+ };
19
+ exports.transformDigitsInPeriod = transformDigitsInPeriod;
14
20
  const getPeriodCodeForDate = (date) => {
15
21
  const JULY = 6;
16
22
  const year = date.getFullYear();
@@ -1 +1 @@
1
- {"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { LadokMellanlagerApiClient } from '@kth/ladok-mellanlager-client';
2
+ import { Language } from './languageUtil';
3
+ export declare const handleError: (message: string, error?: any) => {
4
+ error: string;
5
+ details: any;
6
+ };
7
+ export declare const fetchStructureByTillfalleUid: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<{
8
+ AvserTillfalle: boolean;
9
+ Publicerad: boolean;
10
+ UtbildningsbasUID: string;
11
+ Valinformation?: {
12
+ EngelskBeskrivning?: string;
13
+ SvenskBeskrivning?: string;
14
+ ValUID: string;
15
+ ValmojlighetsID: string;
16
+ };
17
+ }[]>;
18
+ export declare const fetchStructureByInstansUid: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<{
19
+ AvserTillfalle: boolean;
20
+ Publicerad: boolean;
21
+ UtbildningsbasUID: string;
22
+ Valinformation?: {
23
+ EngelskBeskrivning?: string;
24
+ SvenskBeskrivning?: string;
25
+ ValUID: string;
26
+ ValmojlighetsID: string;
27
+ };
28
+ }[]>;
29
+ export declare const fetchCourseBoxes: (utbildningsbasUIDn: string[], ladokClient: LadokMellanlagerApiClient) => Promise<(import("@kth/ladok-mellanlager-client").Utbildningstillfalle | undefined)[]>;
30
+ export declare const fetchCourseInstanses: (utbildningsinstansUIDn: string[], ladokClient: LadokMellanlagerApiClient) => Promise<(import("@kth/ladok-mellanlager-client").Utbildningsinstans | undefined)[]>;
31
+ export declare const fetchAndCategorizeStructure: (utbildningstillfalleUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<{
32
+ Valvillkor: string;
33
+ kod: string;
34
+ benamning: string;
35
+ utbildningstyp?: import("./languageUtil").TranslatedUtbildningstyp;
36
+ utbildningsinstansUid: string;
37
+ uid: string;
38
+ tillfalleskod: string;
39
+ omfattning: {
40
+ number: number;
41
+ formattedWithUnit: string;
42
+ };
43
+ startperiod?: import("./languageUtil").TranslatedGrunddata;
44
+ Tillfallesperioder: {
45
+ ForstaRegistreringsdatum: string;
46
+ ForstaUndervisningsdatum: string;
47
+ Lasperiodsfordelning?: {
48
+ Lasperiodskod: string;
49
+ Omfattningsvarde: number;
50
+ }[];
51
+ Omfattningsvarde: number;
52
+ SistaRegistreringsdatum: string;
53
+ SistaUndervisningsdatum: string;
54
+ }[];
55
+ }[]>;
56
+ export declare const fetchProgramStructure: (utbildningstillfalleUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<{
57
+ studyYears: {
58
+ yearNumber: number;
59
+ courses: {
60
+ kod: string;
61
+ benamning: string;
62
+ Valvillkor: string;
63
+ omfattning: {
64
+ number: number;
65
+ formattedWithUnit: string;
66
+ };
67
+ startperiod?: {
68
+ code: string;
69
+ } | undefined;
70
+ Tillfallesperioder: {
71
+ SistaUndervisningsdatum: string;
72
+ }[];
73
+ uid: string;
74
+ utbildningsinstansUid: string;
75
+ }[];
76
+ }[];
77
+ }[]>;