@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
@@ -19,35 +19,18 @@ const getSemester = (dateStr) => {
19
19
  };
20
20
  exports.getSemester = getSemester;
21
21
  function sortSyllabuses(syllabuses) {
22
- return syllabuses.sort((a, b) => {
23
- // Step 1: Sort by most recent GiltigFran date (descending)
24
- const dateA = new Date(a.GiltigFran).getTime();
25
- const dateB = new Date(b.GiltigFran).getTime();
26
- if (dateA !== dateB) {
27
- return dateB - dateA;
28
- }
29
- // Step 2: If same GiltigFran date, sort by latest course version (descending)
30
- const versionA = (0, ladok_attributvarde_utils_1.extractVersionNumber)(a.instans.Attributvarden);
31
- const versionB = (0, ladok_attributvarde_utils_1.extractVersionNumber)(b.instans.Attributvarden);
32
- if (versionA !== versionB) {
33
- return versionB - versionA;
34
- }
35
- // Step 3: If same course version date, sort by latest syllabus version (descending)
36
- const getEdition = (obj) => {
37
- var _a, _b;
38
- const val = (_b = (_a = obj.AktuellaAttributvarden.find((Attributvarde) => Attributvarde.Attributdefinition.Kod === 'utbildning.lokalt.attribut.29.utgava')) === null || _a === void 0 ? void 0 : _a.Varden) === null || _b === void 0 ? void 0 : _b[0];
39
- return val ? parseInt(val, 10) : -Infinity; // undefined editions get lowest priority
40
- };
41
- const editionA = getEdition(a);
42
- const editionB = getEdition(b);
43
- if (editionA !== editionB) {
44
- return editionB - editionA; // descending: latest comes first
45
- }
46
- // Step 3: If same versionsnummer, sort by most recent date the syllabus was saved
47
- const timestampA = new Date(a.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
48
- const timestampB = new Date(b.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
49
- return timestampB - timestampA;
50
- });
22
+ const getDate = (s) => new Date(s.GiltigFran).getTime();
23
+ const getVersion = (s) => (0, ladok_attributvarde_utils_1.extractVersionNumber)(s.instans.Attributvarden);
24
+ const getEdition = (s) => {
25
+ const val = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(s.AktuellaAttributvarden, 'utgava', ladok_attributvarde_utils_1.LokaltAttributType.Integer, true);
26
+ return val ? val : -Infinity;
27
+ };
28
+ const getSavedDate = (s) => new Date(s.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
29
+ return syllabuses.sort((a, b) => getDate(b) - getDate(a) || // Step 1: Sort by most recent GiltigFran date (descending)
30
+ getVersion(b) - getVersion(a) || // Step 2: If same GiltigFran date, sort by latest course version (descending)
31
+ getEdition(b) - getEdition(a) || // Step 3: If same course version date, sort by latest syllabus version (descending)
32
+ getSavedDate(b) - getSavedDate(a) // Step 4: If same versionsnummer, sort by most recent date the syllabus was saved
33
+ );
51
34
  }
52
35
  function getSyllabusForSemester(semester, syllabuses, periods) {
53
36
  const semesterOnLadokFormat = (0, periodUtil_1.transformDigitsInPeriod)(semester);
@@ -1 +1 @@
1
- {"version":3,"file":"courseSyllabusUtil.js","sourceRoot":"","sources":["../../src/utils/courseSyllabusUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"courseSyllabusUtil.js","sourceRoot":"","sources":["../../src/utils/courseSyllabusUtil.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import { EduLevel, Grunddata, Organisation, Studietakt, Tilltradesniva, Utbildningstyp } from '@kth/ladok-attributvarde-utils';
2
2
  export type Language = 'sv' | 'en';
3
+ export declare enum LadokLanguageName {
4
+ Swedish = "svensk",
5
+ English = "engelsk"
6
+ }
3
7
  export declare enum LanguageCode {
4
8
  Swedish = "sv",
5
9
  English = "en"
6
10
  }
11
+ export declare const isEnglish: (language: Language) => language is "en";
7
12
  export interface TranslatedGrunddata {
8
13
  id: string;
9
14
  code: string;
@@ -11,19 +11,28 @@ 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.translateEduLevel = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = exports.LanguageCode = void 0;
14
+ exports.translateStudietakt = exports.translateEduLevel = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = exports.isEnglish = exports.LanguageCode = exports.LadokLanguageName = void 0;
15
+ var LadokLanguageName;
16
+ (function (LadokLanguageName) {
17
+ LadokLanguageName["Swedish"] = "svensk";
18
+ LadokLanguageName["English"] = "engelsk";
19
+ })(LadokLanguageName || (exports.LadokLanguageName = LadokLanguageName = {}));
15
20
  var LanguageCode;
16
21
  (function (LanguageCode) {
17
22
  LanguageCode["Swedish"] = "sv";
18
23
  LanguageCode["English"] = "en";
19
24
  })(LanguageCode || (exports.LanguageCode = LanguageCode = {}));
25
+ const isEnglish = (language) => {
26
+ return language === LanguageCode.English;
27
+ };
28
+ exports.isEnglish = isEnglish;
20
29
  const translateGrunddata = (grunddata, language) => {
21
30
  const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
22
31
  return {
23
32
  id,
24
33
  code,
25
34
  name: rest[language],
26
- nameOther: rest[language === 'sv' ? 'en' : 'sv'],
35
+ nameOther: rest[(0, exports.isEnglish)(language) ? LanguageCode.Swedish : LanguageCode.English],
27
36
  };
28
37
  };
29
38
  exports.translateGrunddata = translateGrunddata;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { PeriodItem } from '@kth/ladok-mellanlager-client';
2
2
  import { ProgrammeVersion } from '../mapProgrammeVersion';
3
+ /**
4
+ * Returns true if the given string is a valid Ladok Period in the format (VT|HT)YYYY
5
+ * @param period
6
+ * @returns
7
+ */
8
+ export declare const isValidLadokPeriod: (period: string) => boolean;
3
9
  export declare const parsePeriod: (period: string) => {
4
10
  semester: string;
5
11
  year: number;
@@ -1,9 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.findValidProgramForCode = exports.findPeriodByKod = exports.transformDigitsInPeriod = exports.transformPeriodInDigits = exports.parsePeriod = void 0;
3
+ exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.findValidProgramForCode = exports.findPeriodByKod = exports.transformDigitsInPeriod = exports.transformPeriodInDigits = exports.parsePeriod = exports.isValidLadokPeriod = void 0;
4
4
  const versionUtils_1 = require("./versionUtils");
5
+ const validLadokPeriod = /(VT|HT)(\d{4})/;
6
+ /**
7
+ * Returns true if the given string is a valid Ladok Period in the format (VT|HT)YYYY
8
+ * @param period
9
+ * @returns
10
+ */
11
+ const isValidLadokPeriod = (period) => {
12
+ return validLadokPeriod.test(period);
13
+ };
14
+ exports.isValidLadokPeriod = isValidLadokPeriod;
5
15
  const parsePeriod = (period) => {
6
- const match = period.match(/(VT|HT)(\d{4})/);
16
+ const match = period.match(validLadokPeriod);
7
17
  if (!match) {
8
18
  console.warn('Unable to parse period due to invalid period format: ', period);
9
19
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":";;;AAEA,iDAAyD;AAElD,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,MAAM,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACvD,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAEM,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,EAAE;IACxD,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAElC,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,IAAI,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAVY,QAAA,uBAAuB,2BAUnC;AACM,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAU,EAAE;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACtD,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAA;AAC7B,CAAC,CAAA;AAJY,QAAA,uBAAuB,2BAInC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAqB,EAA0B,EAAE;IACvF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;AAC1C,CAAC,CAAA;AAEM,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,OAAqB,EAA0B,EAAE;IAC5F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;AACzC,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAED,MAAM,uBAAuB,GAAG,CAAC,OAAyB,EAAE,WAAiB,EAAW,EAAE;IACxF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAC9B,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAA,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QAAE,OAAO,KAAK,CAAA;IAE/D,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAElD,OAAO,WAAW,IAAI,YAAY,CAAA;AACpC,CAAC,CAAA;AAEM,MAAM,uBAAuB,GAAG,CACrC,IAAY,EACZ,OAAqB,EACrB,QAA4B,EACE,EAAE;IAChC,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrD,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAA;IAEpC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAEvE,MAAM,cAAc,GAAG,IAAA,uCAAwB,EAAC,QAAQ,CAAC,CAAA;IAEzD,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;IAEnH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAA;IAErD,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC,CAAA;AAjBY,QAAA,uBAAuB,2BAiBnC;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,CAAC,CAAA;IACd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC7B,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3C,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAA;AAC7B,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC;AAED,4IAA4I;AACrI,MAAM,iBAAiB,GAAG,CAC/B,IAAU,EACV,WAIC,EACD,IAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAEzF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,SAAS;YAAE,OAAO,CAAC,CAAA;QAC/E,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,SAAS,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAC9F,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO;YAAE,OAAO,CAAC,CAAA;QAC9E,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,SAAS,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAC9F,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO;YAAE,OAAO,CAAC,CAAA;QAC9E,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO;YAAE,OAAO,CAAC,CAAA;IAC/E,CAAC;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QACpD,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,CAAC,CAAA;QACzC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QACxB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAAE,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAAE,OAAO,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AA9BY,QAAA,iBAAiB,qBA8B7B"}
1
+ {"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Attributvarde, Attributdefinition, AttributdefinitionSlim } from '@kth/ladok-attributvarde-utils';
2
+ import { Language } from './languageUtil';
3
+ /**
4
+ * Extracts a markdown attribute value, normalizes tables if it's a course list,
5
+ * and converts to HTML. This is specifically designed for program syllabi
6
+ * where course lists need table normalization.
7
+ */
8
+ export declare const extractAndConvertMarkdownToHtml: (attributvarden: Attributvarde<Attributdefinition | AttributdefinitionSlim>[], attributeName: string, language: Language, useBaseValue?: boolean, isCourseList?: boolean) => string | undefined;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractAndConvertMarkdownToHtml = void 0;
7
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
8
+ const showdown_1 = __importDefault(require("showdown"));
9
+ /**
10
+ * Extracts a markdown attribute value, normalizes tables if it's a course list,
11
+ * and converts to HTML. This is specifically designed for program syllabi
12
+ * where course lists need table normalization.
13
+ */
14
+ const extractAndConvertMarkdownToHtml = (attributvarden, attributeName, language, useBaseValue = false, isCourseList = false) => {
15
+ // Try Markdown first, then LocalizedString as fallback
16
+ const markdownResult = [ladok_attributvarde_utils_1.LokaltAttributType.Markdown, ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString]
17
+ .map(type => useBaseValue
18
+ ? (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, attributeName, type, true)
19
+ : (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, attributeName, type))
20
+ .find(result => result !== undefined);
21
+ if (!markdownResult)
22
+ return undefined;
23
+ // Handle both single string and localized object
24
+ let rawMarkdown;
25
+ if (typeof markdownResult === 'string') {
26
+ rawMarkdown = markdownResult;
27
+ }
28
+ else {
29
+ // For localized objects, try the requested language first, then fallback to sv -> en
30
+ rawMarkdown = markdownResult[language];
31
+ }
32
+ if (!rawMarkdown)
33
+ return undefined;
34
+ // Only normalize tables for course lists in programs
35
+ const processedMarkdown = isCourseList ? normalizeMarkdownTables(rawMarkdown) : rawMarkdown;
36
+ return convertMarkdownToHtml(processedMarkdown);
37
+ };
38
+ exports.extractAndConvertMarkdownToHtml = extractAndConvertMarkdownToHtml;
39
+ /**
40
+ * Converts markdown text to HTML using showdown converter
41
+ */
42
+ const convertMarkdownToHtml = (markdownText) => {
43
+ if (!markdownText)
44
+ return undefined;
45
+ const converter = new showdown_1.default.Converter({ tables: true });
46
+ return converter.makeHtml(markdownText);
47
+ };
48
+ /**
49
+ * Normalizes markdown tables for course lists in programs.
50
+ * This implements the specific table normalization logic for program course lists.
51
+ */
52
+ const normalizeMarkdownTables = (raw) => {
53
+ if (!raw)
54
+ return raw;
55
+ let normalized = raw
56
+ // Step 1: Convert escaped \n to real newlines
57
+ .replace(/\\n/g, '\n')
58
+ // Step 2: Remove unnecessary escapes (but preserve Markdown ones like \*, \_)
59
+ .replace(/\\(?![|*_\\])/g, '')
60
+ // Step 3: Fix escaped pipe characters in full table rows
61
+ .replace(/^\\\|(.+?)\\\|$/gm, (_match, row) => `|${row}|`)
62
+ .replace(/\\\|/g, '|')
63
+ // Step 4: Replace double backslashes with single
64
+ .replace(/\\\\/g, '\\')
65
+ // Step 5: Insert newline between two table rows if they're mashed together
66
+ .replace(/(\|.+?\|)\s*(?=\|)/g, '$1\n')
67
+ // Step 6: Remove \n at the end of the <br>
68
+ .replace(/<br>\n/g, '<br>');
69
+ return normalized;
70
+ };
71
+ //# sourceMappingURL=syllabusExtractionUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syllabusExtractionUtil.js","sourceRoot":"","sources":["../../src/utils/syllabusExtractionUtil.ts"],"names":[],"mappings":";;;;;;AAAA,8EAMuC;AAEvC,wDAA+B;AAE/B;;;;GAIG;AACI,MAAM,+BAA+B,GAAG,CAC7C,cAA4E,EAC5E,aAAqB,EACrB,QAAkB,EAClB,eAAwB,KAAK,EAC7B,eAAwB,KAAK,EACT,EAAE;IACtB,uDAAuD;IACvD,MAAM,cAAc,GAAI,CAAC,8CAAkB,CAAC,QAAQ,EAAE,8CAAkB,CAAC,eAAe,CAAW;SAChG,GAAG,CAAC,IAAI,CAAC,EAAE,CACV,YAAY;QACV,CAAC,CAAC,IAAA,iDAAqB,EAAC,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC;QAClE,CAAC,CAAC,IAAA,iDAAqB,EAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAC/D;SACA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAA;IAEvC,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAA;IAErC,iDAAiD;IACjD,IAAI,WAA+B,CAAA;IACnC,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,WAAW,GAAG,cAAc,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAA;IAElC,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC3F,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;AACjD,CAAC,CAAA;AAhCY,QAAA,+BAA+B,mCAgC3C;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,YAAgC,EAAsB,EAAE;IACrF,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAA;IACnC,MAAM,SAAS,GAAG,IAAI,kBAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAuB,EAAsB,EAAE;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAA;IAEpB,IAAI,UAAU,GAAG,GAAG;QAClB,8CAA8C;SAC7C,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAEtB,8EAA8E;SAC7E,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAE9B,yDAAyD;SACxD,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;SACzD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QAEtB,iDAAiD;SAChD,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;QAEvB,2EAA2E;SAC1E,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;QAEvC,2CAA2C;SAC1C,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAE7B,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -1 +1,7 @@
1
1
  export declare const isDefined: <T>(value: T) => value is NonNullable<T>;
2
+ /**
3
+ * Type guard that checks whether a value is a non-empty array with at least one element.
4
+ * @param arr
5
+ * @returns
6
+ */
7
+ export declare const isArrayWithValues: <T>(arr: readonly T[] | undefined | null) => arr is readonly [T, ...T[]];
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDefined = void 0;
3
+ exports.isArrayWithValues = exports.isDefined = void 0;
4
4
  const isDefined = (value) => {
5
5
  return value !== null && value !== undefined;
6
6
  };
7
7
  exports.isDefined = isDefined;
8
+ /**
9
+ * Type guard that checks whether a value is a non-empty array with at least one element.
10
+ * @param arr
11
+ * @returns
12
+ */
13
+ const isArrayWithValues = (arr) => Array.isArray(arr) && arr.length > 0;
14
+ exports.isArrayWithValues = isArrayWithValues;
8
15
  //# sourceMappingURL=typeChecking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeChecking.js","sourceRoot":"","sources":["../../src/utils/typeChecking.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAI,KAAQ,EAA2B,EAAE;IAChE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAC9C,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB"}
1
+ {"version":3,"file":"typeChecking.js","sourceRoot":"","sources":["../../src/utils/typeChecking.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAI,KAAQ,EAA2B,EAAE;IAChE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAC9C,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB;AAED;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAI,GAAoC,EAA+B,EAAE,CACxG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;AADzB,QAAA,iBAAiB,qBACQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kth/om-kursen-ladok-client",
3
- "version": "2.1.4",
3
+ "version": "2.2.1",
4
4
  "description": "Om kursen specific logic and mappings, uses both @kth/ladok-mellanlager-client and @kth/ladok-attributevarde-utils.",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -21,7 +21,7 @@
21
21
  "build:publish": "npm install --no-workspaces && npm run build"
22
22
  },
23
23
  "dependencies": {
24
- "@kth/ladok-attributvarde-utils": "1.0.2",
24
+ "@kth/ladok-attributvarde-utils": "1.0.3",
25
25
  "@kth/ladok-mellanlager-client": "1.0.2",
26
26
  "date-fns": "^4.1.0",
27
27
  "showdown": "^2.1.0"