@kth/om-kursen-ladok-client 2.5.5 → 3.0.0

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 (58) hide show
  1. package/dist/groupSearchResults.d.ts +16 -5
  2. package/dist/groupSearchResults.js +46 -34
  3. package/dist/groupSearchResults.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/kth/KTHPeriod/KTHPeriod.d.ts +1 -0
  8. package/dist/kth/KTHPeriod/KTHPeriod.js +5 -1
  9. package/dist/kth/KTHPeriod/KTHPeriod.js.map +1 -1
  10. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.d.ts +2 -2
  11. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js +2 -13
  12. package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js.map +1 -1
  13. package/dist/kth/KTHPeriod/createKTHPeriodSemester.d.ts +9 -0
  14. package/dist/kth/KTHPeriod/createKTHPeriodSemester.js +26 -0
  15. package/dist/kth/KTHPeriod/createKTHPeriodSemester.js.map +1 -0
  16. package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js +2 -10
  17. package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js.map +1 -1
  18. package/dist/kth/index.d.ts +1 -0
  19. package/dist/kth/index.js +18 -0
  20. package/dist/kth/index.js.map +1 -0
  21. package/dist/mapCourseInstance.js +1 -1
  22. package/dist/mapCourseInstance.js.map +1 -1
  23. package/dist/{mapSearchResult.d.ts → mapCourseInstanceResult.d.ts} +7 -5
  24. package/dist/{mapSearchResult.js → mapCourseInstanceResult.js} +11 -20
  25. package/dist/mapCourseInstanceResult.js.map +1 -0
  26. package/dist/search/createSearchApi.js +1 -35
  27. package/dist/search/createSearchApi.js.map +1 -1
  28. package/dist/search/searchService.d.ts +9 -0
  29. package/dist/search/searchService.js +39 -0
  30. package/dist/search/searchService.js.map +1 -1
  31. package/dist/search/types.d.ts +13 -9
  32. package/dist/search/utils/createLadokPeriodsAndKthPeriods.d.ts +16 -0
  33. package/dist/search/utils/createLadokPeriodsAndKthPeriods.js +62 -0
  34. package/dist/search/utils/createLadokPeriodsAndKthPeriods.js.map +1 -0
  35. package/dist/search/utils/mapCourseInstanceSearchDTO.js +30 -17
  36. package/dist/search/utils/mapCourseInstanceSearchDTO.js.map +1 -1
  37. package/dist/search/utils/searchUtils.d.ts +13 -5
  38. package/dist/search/utils/searchUtils.js +36 -19
  39. package/dist/search/utils/searchUtils.js.map +1 -1
  40. package/dist/utils/SearchError.d.ts +5 -5
  41. package/dist/utils/SearchError.js +5 -6
  42. package/dist/utils/SearchError.js.map +1 -1
  43. package/dist/utils/collectionUtils.d.ts +9 -0
  44. package/dist/utils/collectionUtils.js +24 -1
  45. package/dist/utils/collectionUtils.js.map +1 -1
  46. package/dist/utils/getAllEntitiesByUseOfContinuation.js +3 -3
  47. package/dist/utils/getAllEntitiesByUseOfContinuation.js.map +1 -1
  48. package/dist/utils/periodUtil.d.ts +1 -1
  49. package/dist/utils/periodUtil.js +3 -3
  50. package/dist/utils/periodUtil.js.map +1 -1
  51. package/dist/utils/programmeStructureUtil.d.ts +1 -0
  52. package/dist/utils/programmeStructureUtil.js +2 -2
  53. package/dist/utils/programmeStructureUtil.js.map +1 -1
  54. package/dist/utils/studyYearUtil.d.ts +12 -1
  55. package/dist/utils/studyYearUtil.js +52 -22
  56. package/dist/utils/studyYearUtil.js.map +1 -1
  57. package/package.json +2 -2
  58. package/dist/mapSearchResult.js.map +0 -1
@@ -1,6 +1,7 @@
1
- import { CourseSearchResult, SearchResultPeriod } from './mapSearchResult';
1
+ import { KTHPeriodSemester } from './kth/KTHPeriod/KTHPeriod';
2
+ import { CourseInstanceResult } from './mapCourseInstanceResult';
2
3
  import { TranslatedGrunddata, TranslatedStudietakt, TranslatedUtbildningstyp } from './utils';
3
- export type GroupedCourseSearchResult = Omit<CourseSearchResult, 'studieort' | 'undervisningssprak' | 'utbildningstyp' | 'studietakt' | 'startperiod' | 'period'> & {
4
+ export type GroupedCourseSearchResult = Omit<CourseInstanceResult, 'studieort' | 'undervisningssprak' | 'utbildningstyp' | 'studietakt' | 'startperiod' | 'period'> & {
4
5
  studieort: TranslatedGrunddata[];
5
6
  undervisningssprak: TranslatedGrunddata[];
6
7
  utbildningstyp: TranslatedUtbildningstyp[];
@@ -9,13 +10,23 @@ export type GroupedCourseSearchResult = Omit<CourseSearchResult, 'studieort' | '
9
10
  code: string;
10
11
  inDigits: string | null;
11
12
  }[];
12
- period: SearchResultPeriod[];
13
+ startingKTHPeriods: KTHPeriodSemester[];
14
+ startingKTHPeriod: KTHPeriodSemester | undefined;
13
15
  };
14
16
  /**
15
- * Groups course search results by course code and optionally by period.
17
+ * Groups CourseSearchResults (Course instances) by course code and optionally by startingKTHPeriod.
18
+ * In the Course Search result page, we want to display one row per Course, regardless of location,
19
+ * study pace, language, study level or ladokStartPeriod.
20
+ *
21
+ * The exception from that rule is, if the user has filtered by KTHPeriod, in that case, we want to show
22
+ * one course per startingKTHPeriod.
23
+ *
24
+ * We expect the data in all fields but studieort, studietakt, undervisningssprak and utbildningstyp to
25
+ * be the same. The resulting array of results will for those properties have the data of the first occurrence
26
+ * that was in the original array.
16
27
  *
17
28
  * @param courseSearchResults array of CourseSearchResult objects
18
29
  * @param groupByPeriod true if the results should be grouped by period, false if they should only be grouped by course code
19
30
  * @returns
20
31
  */
21
- export declare const groupSearchResults: (courseSearchResults: CourseSearchResult[], groupByPeriod?: boolean) => GroupedCourseSearchResult[];
32
+ export declare const groupSearchResults: (courseSearchResults: CourseInstanceResult[], groupByPeriod: boolean) => GroupedCourseSearchResult[];
@@ -1,48 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.groupSearchResults = void 0;
4
+ const KTHPeriod_1 = require("./kth/KTHPeriod/KTHPeriod");
5
+ const typeChecking_1 = require("./utils/typeChecking");
4
6
  /**
5
- * Adds {@link obj} to {@link arr} if an equal object isn't already added.
6
- * Uses a callback {@link getCompareValue} to define uniqueness.
7
- *
8
- * @param arr array to add object to
9
- * @param obj object to possibly add to array
10
- * @param getCompareValue function that returns the comparison value for uniqueness
11
- */
12
- const addUniqueObjectWithCallback = (arr, obj, getCompareValue) => {
13
- if (arr.every(x => getCompareValue(x) !== getCompareValue(obj))) {
14
- arr.push(obj);
15
- }
16
- };
17
- /**
18
- * Adds a period object to the array if it is unique based on
19
- * sistaUndervisningsdatum.date and forstaUndervisningsdatum.date.
7
+ * Groups CourseSearchResults (Course instances) by course code and optionally by startingKTHPeriod.
8
+ * In the Course Search result page, we want to display one row per Course, regardless of location,
9
+ * study pace, language, study level or ladokStartPeriod.
20
10
  *
21
- * @param arr array of SearchResultPeriod objects
22
- * @param obj SearchResultPeriod object to possibly add
23
- */
24
- const addUniquePeriod = (arr, obj) => addUniqueObjectWithCallback(arr, obj, item => { var _a, _b, _c, _d; return `${(_b = (_a = item.sistaUndervisningsdatum) === null || _a === void 0 ? void 0 : _a.date) !== null && _b !== void 0 ? _b : ''}-${(_d = (_c = item.forstaUndervisningsdatum) === null || _c === void 0 ? void 0 : _c.date) !== null && _d !== void 0 ? _d : ''}`; });
25
- /**
26
- * Adds an object to the array if it is unique based on its 'code' property.
11
+ * The exception from that rule is, if the user has filtered by KTHPeriod, in that case, we want to show
12
+ * one course per startingKTHPeriod.
27
13
  *
28
- * @param arr array of objects with a 'code' property
29
- * @param obj object to possibly add
30
- */
31
- const addUniqueObjectByCode = (arr, obj) => addUniqueObjectWithCallback(arr, obj, item => item.code);
32
- /**
33
- * Groups course search results by course code and optionally by period.
14
+ * We expect the data in all fields but studieort, studietakt, undervisningssprak and utbildningstyp to
15
+ * be the same. The resulting array of results will for those properties have the data of the first occurrence
16
+ * that was in the original array.
34
17
  *
35
18
  * @param courseSearchResults array of CourseSearchResult objects
36
19
  * @param groupByPeriod true if the results should be grouped by period, false if they should only be grouped by course code
37
20
  * @returns
38
21
  */
39
- const groupSearchResults = (courseSearchResults, groupByPeriod = false) => {
22
+ const groupSearchResults = (courseSearchResults, groupByPeriod) => {
40
23
  const groupedResults = {};
41
24
  courseSearchResults.forEach(searchResult => {
42
- var _a;
43
- const key = `${searchResult.kod}-${groupByPeriod ? '' : (_a = searchResult.startperiod) === null || _a === void 0 ? void 0 : _a.code}`;
25
+ const key = createKey(searchResult, groupByPeriod);
44
26
  if (!groupedResults[key]) {
45
- groupedResults[key] = Object.assign(Object.assign({}, searchResult), { studieort: [], studietakt: [], undervisningssprak: [], utbildningstyp: [], startperiod: [], period: [] });
27
+ groupedResults[key] = Object.assign(Object.assign({}, searchResult), { studieort: [], studietakt: [], undervisningssprak: [], utbildningstyp: [], startingKTHPeriods: [], startperiod: [] });
46
28
  }
47
29
  // Add unique objects by code to their respective arrays
48
30
  if (searchResult.studieort) {
@@ -60,11 +42,41 @@ const groupSearchResults = (courseSearchResults, groupByPeriod = false) => {
60
42
  if (searchResult.startperiod) {
61
43
  addUniqueObjectByCode(groupedResults[key].startperiod, searchResult.startperiod);
62
44
  }
63
- if (searchResult.period) {
64
- addUniquePeriod(groupedResults[key].period, searchResult.period);
45
+ if ((0, typeChecking_1.isDefined)(searchResult.startingKTHPeriod)) {
46
+ addUniqueObjectWithCallback(groupedResults[key].startingKTHPeriods, searchResult.startingKTHPeriod, x => (0, KTHPeriod_1.formatKTHPeriodSemester)(x));
65
47
  }
66
48
  });
67
- return Object.values(groupedResults);
49
+ const result = Object.values(groupedResults);
50
+ return result;
68
51
  };
69
52
  exports.groupSearchResults = groupSearchResults;
53
+ const createKey = (searchResult, groupByPeriod) => {
54
+ const periodSuffix = groupByPeriod ? createPeriodSuffix(searchResult.startingKTHPeriod) : '';
55
+ return `${searchResult.kod}${periodSuffix}`;
56
+ };
57
+ const createPeriodSuffix = (startingKTHPeriod) => {
58
+ if ((0, typeChecking_1.isDefined)(startingKTHPeriod))
59
+ return `-${(0, KTHPeriod_1.formatKTHPeriodSemester)(startingKTHPeriod)}`;
60
+ return '';
61
+ };
62
+ /**
63
+ * Adds {@link obj} to {@link arr} if an equal object isn't already added.
64
+ * Uses a callback {@link getCompareValue} to define uniqueness.
65
+ *
66
+ * @param arr array to add object to
67
+ * @param obj object to possibly add to array
68
+ * @param getCompareValue function that returns the comparison value for uniqueness
69
+ */
70
+ const addUniqueObjectWithCallback = (arr, obj, getCompareValue) => {
71
+ if (arr.every(x => getCompareValue(x) !== getCompareValue(obj))) {
72
+ arr.push(obj);
73
+ }
74
+ };
75
+ /**
76
+ * Adds an object to the array if it is unique based on its 'code' property.
77
+ *
78
+ * @param arr array of objects with a 'code' property
79
+ * @param obj object to possibly add
80
+ */
81
+ const addUniqueObjectByCode = (arr, obj) => addUniqueObjectWithCallback(arr, obj, item => item.code);
70
82
  //# sourceMappingURL=groupSearchResults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"groupSearchResults.js","sourceRoot":"","sources":["../src/groupSearchResults.ts"],"names":[],"mappings":";;;AAkBA;;;;;;;GAOG;AACH,MAAM,2BAA2B,GAAG,CAClC,GAAY,EACZ,GAAU,EACV,eAAwC,EACxC,EAAE;IACF,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,CAAC;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,GAAyB,EAAE,GAAuB,EAAE,EAAE,CAC7E,2BAA2B,CACzB,GAAG,EACH,GAAG,EACH,IAAI,CAAC,EAAE,uBAAC,OAAA,GAAG,MAAA,MAAA,IAAI,CAAC,uBAAuB,0CAAE,IAAI,mCAAI,EAAE,IAAI,MAAA,MAAA,IAAI,CAAC,wBAAwB,0CAAE,IAAI,mCAAI,EAAE,EAAE,CAAA,EAAA,CACnG,CAAA;AAEH;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAA4D,GAAY,EAAE,GAAU,EAAE,EAAE,CACpH,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAE1D;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,CAChC,mBAAyC,EACzC,gBAAyB,KAAK,EACD,EAAE;IAC/B,MAAM,cAAc,GAAiD,EAAE,CAAA;IAEvE,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;;QACzC,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAA,YAAY,CAAC,WAAW,0CAAE,IAAI,EAAE,CAAA;QAExF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,cAAc,CAAC,GAAG,CAAC,mCACd,YAAY,KACf,SAAS,EAAE,EAAE,EACb,UAAU,EAAE,EAAE,EACd,kBAAkB,EAAE,EAAE,EACtB,cAAc,EAAE,EAAE,EAClB,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,GACX,CAAA;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC3B,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;QAC9E,CAAC;QACD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YAC5B,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;QAChF,CAAC;QACD,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACpC,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;QAChG,CAAC;QACD,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAChC,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,CAAA;QACxF,CAAC;QACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;QAClF,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;QAClE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AACtC,CAAC,CAAA;AA3CY,QAAA,kBAAkB,sBA2C9B"}
1
+ {"version":3,"file":"groupSearchResults.js","sourceRoot":"","sources":["../src/groupSearchResults.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export * from './createApiClient';
2
2
  export { EducationalLevelCode, LadokStatusCode } from '@kth/ladok-attributvarde-utils';
3
3
  export { SearchErrorCode } from './utils/SearchError';
4
+ export type { SearchParams } from './search/types';
5
+ export type { OmKursenLadokApiClient } from './types/OmKursenLadokApiClient';
4
6
  export type { ProgrammeCurriculum } from './utils/programmeUtil';
5
7
  export type { ProgrammeCurriculumStudyYear } from './utils/programmeUtil';
6
8
  export type { ProgrammeCourse } from './utils/programmeStructureUtil';
7
9
  export type { Tillfallesperiod } from './mapCourseInstance';
8
10
  export * from './utils/AcademicSemester';
11
+ export * from './kth';
package/dist/index.js CHANGED
@@ -22,4 +22,5 @@ Object.defineProperty(exports, "LadokStatusCode", { enumerable: true, get: funct
22
22
  var SearchError_1 = require("./utils/SearchError");
23
23
  Object.defineProperty(exports, "SearchErrorCode", { enumerable: true, get: function () { return SearchError_1.SearchErrorCode; } });
24
24
  __exportStar(require("./utils/AcademicSemester"), exports);
25
+ __exportStar(require("./kth"), exports);
25
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,4EAAsF;AAA7E,iIAAA,oBAAoB,OAAA;AAAE,4HAAA,eAAe,OAAA;AAC9C,mDAAqD;AAA5C,8GAAA,eAAe,OAAA;AAQxB,2DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,4EAAsF;AAA7E,iIAAA,oBAAoB,OAAA;AAAE,4HAAA,eAAe,OAAA;AAC9C,mDAAqD;AAA5C,8GAAA,eAAe,OAAA;AAUxB,2DAAwC;AACxC,wCAAqB"}
@@ -17,3 +17,4 @@ export declare const isKTHPeriodLabel: (s: string) => s is KTHPeriodLabel;
17
17
  export declare const matchKthPeriodToSemesterNumber: (period: KTHPeriod) => SemesterNumber | undefined;
18
18
  export declare const compareKTHPeriod: (a: KTHPeriod, b: KTHPeriod) => number;
19
19
  export declare const compareKTHPeriodSemester: (a: KTHPeriodSemester, b: KTHPeriodSemester) => number;
20
+ export declare const formatKTHPeriodSemester: (kthPeriodSemester: KTHPeriodSemester) => string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compareKTHPeriodSemester = exports.compareKTHPeriod = exports.matchKthPeriodToSemesterNumber = exports.isKTHPeriodLabel = exports.parseKTHPeriod = exports.formatKTHPeriod = void 0;
3
+ exports.formatKTHPeriodSemester = exports.compareKTHPeriodSemester = exports.compareKTHPeriod = exports.matchKthPeriodToSemesterNumber = exports.isKTHPeriodLabel = exports.parseKTHPeriod = exports.formatKTHPeriod = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const formatKTHPeriod = (kthPeriod) => {
6
6
  return `P${kthPeriod}`;
@@ -57,4 +57,8 @@ const compareKTHPeriodSemester = (a, b) => {
57
57
  return (0, exports.compareKTHPeriod)(a.period, b.period);
58
58
  };
59
59
  exports.compareKTHPeriodSemester = compareKTHPeriodSemester;
60
+ const formatKTHPeriodSemester = (kthPeriodSemester) => {
61
+ return `${kthPeriodSemester.semester.year}:${(0, exports.formatKTHPeriod)(kthPeriodSemester.period)}`;
62
+ };
63
+ exports.formatKTHPeriodSemester = formatKTHPeriodSemester;
60
64
  //# sourceMappingURL=KTHPeriod.js.map
@@ -1 +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"}
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;AAEM,MAAM,uBAAuB,GAAG,CAAC,iBAAoC,EAAE,EAAE;IAC9E,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAA,uBAAe,EAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;AAC1F,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC"}
@@ -1,5 +1,5 @@
1
1
  import { Tillfallesperiod } from '../../mapCourseInstance';
2
- import { KTHPeriodDefinition, KTHPeriodSemester } from './KTHPeriod';
2
+ import { KTHPeriodDefinition } from './KTHPeriod';
3
3
  /**
4
4
  * This function attempts to match the Forsta and SistaUndervisningsdatum of each tillfallesperiod to a KTHPeriod.
5
5
  * It returns an array of KTHPeriod
@@ -7,4 +7,4 @@ import { KTHPeriodDefinition, KTHPeriodSemester } from './KTHPeriod';
7
7
  * @param kthPeriods KTHPeriodDefinitions
8
8
  * @returns
9
9
  */
10
- export declare const calculateKTHPeriodSemesterFromTillfallesperiod: (tillfallesperioder: Pick<Tillfallesperiod, "ForstaUndervisningsdatum" | "SistaUndervisningsdatum">[] | undefined, kthPeriods: KTHPeriodDefinition[] | undefined) => KTHPeriodSemester[] | undefined;
10
+ export declare const calculateKTHPeriodSemesterFromTillfallesperiod: (tillfallesperioder: Pick<Tillfallesperiod, "ForstaUndervisningsdatum" | "SistaUndervisningsdatum">[] | undefined, kthPeriods: KTHPeriodDefinition[] | undefined) => import("./KTHPeriod").KTHPeriodSemester[] | undefined;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.calculateKTHPeriodSemesterFromTillfallesperiod = void 0;
4
+ const collectionUtils_1 = require("../../utils/collectionUtils");
4
5
  const typeChecking_1 = require("../../utils/typeChecking");
5
6
  const KTHPeriod_1 = require("./KTHPeriod");
6
7
  const matchDateToKTHPeriodYear_1 = require("./matchDateToKTHPeriodYear");
@@ -21,21 +22,9 @@ const calculateKTHPeriodSemesterFromTillfallesperiod = (tillfallesperioder, kthP
21
22
  (0, matchDateToKTHPeriodYear_1.matchDateToKTHPeriodYear)(new Date(ForstaUndervisningsdatum), kthPeriods),
22
23
  (0, matchDateToKTHPeriodYear_1.matchDateToKTHPeriodYear)(new Date(SistaUndervisningsdatum), kthPeriods),
23
24
  ];
24
- return filterDefinedAndDistinctValues(periods);
25
+ return (0, collectionUtils_1.filterDefinedAndDistinctValues)(periods, item => item.period);
25
26
  });
26
27
  return result.sort(KTHPeriod_1.compareKTHPeriodSemester);
27
28
  };
28
29
  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
30
  //# sourceMappingURL=calculateKTHPeriodSemesterFromTillfallesperiod.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"calculateKTHPeriodSemesterFromTillfallesperiod.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.ts"],"names":[],"mappings":";;;AACA,iEAA4E;AAC5E,2DAA4D;AAC5D,2CAA2E;AAC3E,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,IAAA,gDAA8B,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,oCAAwB,CAAC,CAAA;AAC9C,CAAC,CAAA;AAjBY,QAAA,8CAA8C,kDAiB1D"}
@@ -0,0 +1,9 @@
1
+ import { KTHPeriodSemester } from './KTHPeriod';
2
+ /**
3
+ * Takes a year and kthPeriodString.
4
+ * Will return a KTHPeriodSemester or undefined if the kthPeriodString could not be parsed
5
+ * @param year year for the KTHPeriod
6
+ * @param kthPeriodString kthPeriodString to match to a KTHPeriod, e.g. P1, P2
7
+ * @returns
8
+ */
9
+ export declare const createKTHPeriodSemester: (year: number, kthPeriodString: string) => KTHPeriodSemester | undefined;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createKTHPeriodSemester = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const typeChecking_1 = require("../../utils/typeChecking");
6
+ const KTHPeriod_1 = require("./KTHPeriod");
7
+ /**
8
+ * Takes a year and kthPeriodString.
9
+ * Will return a KTHPeriodSemester or undefined if the kthPeriodString could not be parsed
10
+ * @param year year for the KTHPeriod
11
+ * @param kthPeriodString kthPeriodString to match to a KTHPeriod, e.g. P1, P2
12
+ * @returns
13
+ */
14
+ const createKTHPeriodSemester = (year, kthPeriodString) => {
15
+ const kthPeriod = (0, KTHPeriod_1.parseKTHPeriod)(kthPeriodString);
16
+ if (!(0, typeChecking_1.isDefined)(kthPeriod))
17
+ return undefined;
18
+ // We know that the response from matchKthPeriodToSemesterNumber will not be undefined, because the passed kthPeriod is of correct format.
19
+ const semesterNumber = (0, KTHPeriod_1.matchKthPeriodToSemesterNumber)(kthPeriod);
20
+ return {
21
+ period: kthPeriod,
22
+ semester: new utils_1.AcademicSemester(year, semesterNumber),
23
+ };
24
+ };
25
+ exports.createKTHPeriodSemester = createKTHPeriodSemester;
26
+ //# sourceMappingURL=createKTHPeriodSemester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKTHPeriodSemester.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/createKTHPeriodSemester.ts"],"names":[],"mappings":";;;AAAA,uCAA8C;AAC9C,2DAAoD;AACpD,2CAA+F;AAE/F;;;;;;GAMG;AACI,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,eAAuB,EAAiC,EAAE;IAC9G,MAAM,SAAS,GAAG,IAAA,0BAAc,EAAC,eAAe,CAAC,CAAA;IAEjD,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,IAAI,EAAE,cAAc,CAAC;KACrD,CAAA;AACH,CAAC,CAAA;AAZY,QAAA,uBAAuB,2BAYnC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractKTHPeriodSemesterFromLasperiodsfordelning = void 0;
4
- const utils_1 = require("../../utils");
5
4
  const typeChecking_1 = require("../../utils/typeChecking");
5
+ const createKTHPeriodSemester_1 = require("./createKTHPeriodSemester");
6
6
  const KTHPeriod_1 = require("./KTHPeriod");
7
7
  const extractKTHPeriodSemesterFromLasperiodsfordelning = (tillfallesperioder) => {
8
8
  if (!(0, typeChecking_1.isArrayWithValues)(tillfallesperioder))
@@ -23,14 +23,6 @@ exports.extractKTHPeriodSemesterFromLasperiodsfordelning = extractKTHPeriodSemes
23
23
  const strictIsoDate = /^(?:[0-9]{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;
24
24
  const isStrictIsoDate = (s) => strictIsoDate.test(s);
25
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
- };
26
+ return (0, createKTHPeriodSemester_1.createKTHPeriodSemester)(yearOfFirstTuitionDate, Lasperiodskod);
35
27
  };
36
28
  //# sourceMappingURL=extractKTHPeriodSemesterFromLasperiodsfordelning.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"extractKTHPeriodSemesterFromLasperiodsfordelning.js","sourceRoot":"","sources":["../../../src/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.ts"],"names":[],"mappings":";;;AACA,2DAAuE;AACvE,uEAAmE;AACnE,2CAAyE;AAMlE,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,EAAiC,EAAE;IAChG,OAAO,IAAA,iDAAuB,EAAC,sBAAsB,EAAE,aAAa,CAAC,CAAA;AACvE,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './KTHPeriod/createKTHPeriodSemester';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./KTHPeriod/createKTHPeriodSemester"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAmD"}
@@ -28,7 +28,7 @@ const mapCourseInstance = (item, language, partOfProgramme) => {
28
28
  const startperiod = (0, ladok_attributvarde_utils_1.extractStartPeriod)(attributeValues);
29
29
  return {
30
30
  uid: item.tillfalle_uid,
31
- utbildningstyp: (0, creditsUtil_1.getCreditsUnit)((0, ladok_attributvarde_utils_1.extractUtbildningstyp)(item.instans.Attributvarden), language), // TODO Benni why is this creditUnit and not utbildningstyp?
31
+ utbildningstyp: (0, creditsUtil_1.getCreditsUnit)((0, ladok_attributvarde_utils_1.extractUtbildningstyp)(item.instans.Attributvarden), language), // TODO why is this creditUnit and not utbildningstyp?
32
32
  status: (0, ladok_attributvarde_utils_1.extractLadokStatus)(item.Attributvarden),
33
33
  installt: (_a = (0, ladok_attributvarde_utils_1.extractBoolean)(item.Attributvarden, 'installt')) !== null && _a !== void 0 ? _a : false,
34
34
  tillfalleskod: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, 'utbildning.attribut.utbildningstillfalleskod'),
@@ -1 +1 @@
1
- {"version":3,"file":"mapCourseInstance.js","sourceRoot":"","sources":["../src/mapCourseInstance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapCourseInstance.js","sourceRoot":"","sources":["../src/mapCourseInstance.ts"],"names":[],"mappings":";;;AAAA,8EAWuC;AAEvC,mCAOgB;AAChB,qDAAoD;AA+D7C,MAAM,iBAAiB,GAAG,CAC/B,IAAmE,EACnE,QAAkB,EAClB,eAAmC,EACnB,EAAE;;IAClB,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAA;IAE3C,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,2CAA2C,EAAE,MAAM,CAAC;QACvF,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,2CAA2C,EAAE,MAAM,CAAC;KACxF,CAAA;IAED,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,2CAA2C,CAAC;QAC/E,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,2CAA2C,CAAC;KAChF,CAAA;IAED,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,kDAAkD,EAAE,MAAM,CAAC;QAC9F,EAAE,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,kDAAkD,EAAE,MAAM,CAAC;KAC/F,CAAA;IAED,MAAM,iBAAiB,GAAG,IAAA,4CAAgB,EAAC,eAAe,EAAE,uCAAuC,CAAC,CAAA;IACpG,MAAM,gBAAgB,GAAG,IAAA,4CAAgB,EAAC,eAAe,EAAE,sCAAsC,CAAC,CAAA;IAClG,MAAM,kBAAkB,GAAG,IAAA,4CAAgB,EAAC,eAAe,EAAE,wCAAwC,CAAC,CAAA;IACtG,MAAM,SAAS,GAAG,IAAA,4CAAgB,EAAC,eAAe,EAAE,+BAA+B,CAAC,CAAA;IACpF,MAAM,iBAAiB,GAAG,IAAA,4CAAgB,EAAC,eAAe,EAAE,uCAAuC,CAAC,CAAA;IACpG,MAAM,UAAU,GAAG,IAAA,6CAAiB,EAAC,eAAe,CAAC,CAAA;IACrD,MAAM,WAAW,GAAG,IAAA,8CAAkB,EAAC,eAAe,CAAC,CAAA;IAEvD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,aAAa;QACvB,cAAc,EAAE,IAAA,4BAAc,EAAC,IAAA,iDAAqB,EAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAE,EAAE,QAAQ,CAAC,EAAE,sDAAsD;QACrJ,MAAM,EAAE,IAAA,8CAAkB,EAAC,IAAI,CAAC,cAAc,CAAC;QAC/C,QAAQ,EAAE,MAAA,IAAA,0CAAc,EAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,mCAAI,KAAK;QAClE,aAAa,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,8CAA8C,CAAC;QAC7F,WAAW,EAAE,WAAW,IAAI;YAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,IAAA,+BAAuB,EAAC,WAAW,CAAC,IAAI,CAAC;SACpD;QACD,wBAAwB,EAAE,IAAA,yCAAa,EAAC,eAAe,EAAE,8CAA8C,CAAC;QACxG,wBAAwB,kBACtB,IAAI,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,0CAAE,wBAAkC,IACpE,IAAA,sBAAc,EAAC,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,0CAAE,wBAAkC,CAAC,CACrF;QACD,uBAAuB,kBACrB,IAAI,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,uBAAiC,IACpE,IAAA,sBAAc,EAAC,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,uBAAiC,CAAC,CACrF;QACD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5B,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;QAE1C,iBAAiB,EAAE,iBAAiB,IAAI,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,QAAQ,CAAC;QACvF,gBAAgB,EAAE,gBAAgB,IAAI,IAAA,0BAAkB,EAAC,gBAAgB,EAAE,QAAQ,CAAC;QACpF,kBAAkB,EAAE,kBAAkB,IAAI,IAAA,0BAAkB,EAAC,kBAAkB,EAAE,QAAQ,CAAC;QAC1F,SAAS,EAAE,SAAS,IAAI,IAAA,0BAAkB,EAAC,SAAS,EAAE,QAAQ,CAAC;QAC/D,UAAU,EAAE,UAAU,IAAI,IAAA,2BAAmB,EAAC,UAAU,EAAE,QAAQ,CAAC;QACnE,iBAAiB,EAAE,iBAAiB,IAAI,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,QAAQ,CAAC;QAEvF,kBAAkB,EAAE,IAAA,qDAAyB,EAAC,eAAe,CAAC;QAC9D,eAAe,EAAE,IAAA,0CAAc,EAAC,eAAe,EAAE,+CAA+C,CAAC;QACjG,QAAQ,EAAE,IAAA,0CAAc,EAAC,eAAe,EAAE,wCAAwC,CAAC;QAEnF,YAAY,EAAE,eAAe;KAC9B,CAAA;AACH,CAAC,CAAA;AAnEY,QAAA,iBAAiB,qBAmE7B"}
@@ -1,6 +1,7 @@
1
1
  import { LadokStatus } from '@kth/ladok-attributvarde-utils';
2
- import { SokUtbildningsTillfalleItem, SokUtbildningsTillfalleSlimItem } from '@kth/ladok-mellanlager-client';
2
+ import { PeriodItem, SokUtbildningsTillfalleItem, SokUtbildningsTillfalleSlimItem } from '@kth/ladok-mellanlager-client';
3
3
  import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from './utils/languageUtil';
4
+ import { KTHPeriodSemester } from './kth/KTHPeriod/KTHPeriod';
4
5
  export type SearchResultPeriod = {
5
6
  startperiod: string;
6
7
  forstaUndervisningsdatum?: {
@@ -17,7 +18,7 @@ export type SearchResultPeriod = {
17
18
  };
18
19
  tillfallesperioderNummer: number;
19
20
  };
20
- export type CourseSearchResult = {
21
+ export type CourseInstanceResult = {
21
22
  versionsnummer: number;
22
23
  kod: string;
23
24
  benamning: string;
@@ -36,8 +37,9 @@ export type CourseSearchResult = {
36
37
  code: string;
37
38
  inDigits: string | null;
38
39
  };
39
- period?: SearchResultPeriod;
40
- isMiljo?: boolean;
41
40
  status?: LadokStatus;
41
+ isMiljo?: boolean;
42
+ kthPeriods: KTHPeriodSemester[];
43
+ startingKTHPeriod: KTHPeriodSemester | undefined;
42
44
  };
43
- export declare const mapKursTillfalleResult: (courseInstance: SokUtbildningsTillfalleItem | SokUtbildningsTillfalleSlimItem, language: Language) => CourseSearchResult;
45
+ export declare const mapCourseInstanceResult: (courseInstance: SokUtbildningsTillfalleItem | SokUtbildningsTillfalleSlimItem, periodItems: PeriodItem[], language: Language) => CourseInstanceResult;
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapKursTillfalleResult = void 0;
3
+ exports.mapCourseInstanceResult = void 0;
4
4
  const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
5
  const languageUtil_1 = require("./utils/languageUtil");
6
6
  const utils_1 = require("./utils");
7
7
  const creditsUtil_1 = require("./utils/creditsUtil");
8
8
  const schoolUtil_1 = require("./utils/schoolUtil");
9
- // TODO Benni this should be refactored together with mapCourseInstance
10
- const mapKursTillfalleResult = (courseInstance, language) => {
11
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
9
+ const getKTHPeriodSemesters_1 = require("./kth/KTHPeriod/getKTHPeriodSemesters");
10
+ // TODO this should be refactored together with mapCourseInstance
11
+ const mapCourseInstanceResult = (courseInstance, periodItems, language) => {
12
+ var _a, _b, _c;
12
13
  const benamning = {
13
14
  sv: (0, ladok_attributvarde_utils_1.extractString)(courseInstance.instans.Attributvarden, 'utbildning.attribut.svensk.benamning'),
14
15
  en: (0, ladok_attributvarde_utils_1.extractString)(courseInstance.instans.Attributvarden, 'utbildning.attribut.engelsk.benamning'),
@@ -26,6 +27,8 @@ const mapKursTillfalleResult = (courseInstance, language) => {
26
27
  const schoolCode = (0, schoolUtil_1.extractSchoolCodeFromOrganisation)(organisation, language);
27
28
  const omfattning = (_b = (0, ladok_attributvarde_utils_1.extractString)(courseInstance.instans.Attributvarden, 'utbildning.attribut.omfattning', 'omfattning')) !== null && _b !== void 0 ? _b : '';
28
29
  const isMiljo = (0, ladok_attributvarde_utils_1.extractIsMiljo)(courseInstance.instans.Attributvarden);
30
+ const kthPeriods = (0, getKTHPeriodSemesters_1.getKTHPeriodSemesters)(courseInstance.Tillfallesperioder, periodItems);
31
+ const startingKTHPeriod = kthPeriods.at(0);
29
32
  return {
30
33
  versionsnummer: (0, ladok_attributvarde_utils_1.extractVersionNumber)(courseInstance.instans.Attributvarden),
31
34
  kod: (0, ladok_attributvarde_utils_1.extractString)(courseInstance.instans.Attributvarden, 'utbildning.attribut.kod'),
@@ -44,24 +47,12 @@ const mapKursTillfalleResult = (courseInstance, language) => {
44
47
  code: startperiod.code,
45
48
  inDigits: (0, utils_1.transformPeriodInDigits)(startperiod.code),
46
49
  },
47
- period: {
48
- startperiod: (startperiod === null || startperiod === void 0 ? void 0 : startperiod.code) || '',
49
- forstaUndervisningsdatum: Object.assign({ date: (_d = courseInstance.Tillfallesperioder.at(0)) === null || _d === void 0 ? void 0 : _d.ForstaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_e = courseInstance.Tillfallesperioder.at(0)) === null || _e === void 0 ? void 0 : _e.ForstaUndervisningsdatum), {
50
- code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
51
- startDate: startperiod && new Date(startperiod.startDay),
52
- endDate: startperiod && new Date(startperiod.lastDay),
53
- }, 'start') }, (0, utils_1.getYearAndWeek)((_f = courseInstance.Tillfallesperioder.at(0)) === null || _f === void 0 ? void 0 : _f.ForstaUndervisningsdatum)),
54
- sistaUndervisningsdatum: Object.assign({ date: (_g = courseInstance.Tillfallesperioder.at(-1)) === null || _g === void 0 ? void 0 : _g.SistaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_h = courseInstance.Tillfallesperioder.at(-1)) === null || _h === void 0 ? void 0 : _h.SistaUndervisningsdatum), {
55
- code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
56
- startDate: startperiod && new Date(startperiod.startDay),
57
- endDate: startperiod && new Date(startperiod.lastDay),
58
- }, 'end') }, (0, utils_1.getYearAndWeek)((_j = courseInstance.Tillfallesperioder.at(-1)) === null || _j === void 0 ? void 0 : _j.SistaUndervisningsdatum)),
59
- tillfallesperioderNummer: courseInstance.Tillfallesperioder.length,
60
- },
50
+ kthPeriods,
51
+ startingKTHPeriod,
61
52
  schoolCode,
62
53
  isMiljo,
63
54
  status: (0, ladok_attributvarde_utils_1.extractLadokStatus)(courseInstance.Attributvarden),
64
55
  };
65
56
  };
66
- exports.mapKursTillfalleResult = mapKursTillfalleResult;
67
- //# sourceMappingURL=mapSearchResult.js.map
57
+ exports.mapCourseInstanceResult = mapCourseInstanceResult;
58
+ //# sourceMappingURL=mapCourseInstanceResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCourseInstanceResult.js","sourceRoot":"","sources":["../src/mapCourseInstanceResult.ts"],"names":[],"mappings":"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"}
@@ -10,46 +10,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createSearchApi = void 0;
13
- const searchUtils_1 = require("./utils/searchUtils");
14
- const getAllEntitiesByUseOfContinuation_1 = require("../utils/getAllEntitiesByUseOfContinuation");
15
- const mapSearchResult_1 = require("../mapSearchResult");
16
- const groupSearchResults_1 = require("../groupSearchResults");
17
- const errorUtils_1 = require("../utils/errorUtils");
18
- const mapCourseInstanceSearchDTO_1 = require("./utils/mapCourseInstanceSearchDTO");
19
13
  const searchService_1 = require("./searchService");
20
- const supportService_1 = require("../supportApis/supportService");
21
14
  const SearchError_1 = require("../utils/SearchError");
22
- const continuationConfig_1 = require("./continuationConfig");
23
- const statusUtils_1 = require("../utils/statusUtils");
24
15
  const createSearchApi = (ladokClient) => {
25
16
  const searchService = new searchService_1.SearchService(ladokClient);
26
- const supportService = new supportService_1.SupportService(ladokClient);
27
17
  return {
28
- searchCourseInstances: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
29
- try {
30
- const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
31
- const departmentList = yield supportService.getSchoolsWithDepartmentsForSearch(language);
32
- const { requestQuery, filterPeriod } = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(cleanSearchParams, departmentList);
33
- const { allEntities: allCourses } = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(ladokClient.sokKursTillfalle, requestQuery, {
34
- maxSearchResultsToReturn: continuationConfig_1.SEARCH_MAX_SEARCH_RESULTS_TO_RETURN,
35
- maxContinuationIterations: continuationConfig_1.SEARCH_MAX_CONTINUATION_ITERATIONS,
36
- });
37
- const mappedCourses = allCourses.map(course => (0, mapSearchResult_1.mapKursTillfalleResult)(course, language));
38
- const noDraftCourses = (0, statusUtils_1.removeDrafts)(mappedCourses);
39
- const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(noDraftCourses, filterPeriod);
40
- // TODO Remove this once we have a query parameter to filter for miljö courses
41
- const courseVersionsToShow = (0, searchUtils_1.possiblyFilterByMiljo)(groupedCourses, cleanSearchParams.onlyMHU);
42
- const courseInstanceSearchDTOs = courseVersionsToShow.map(mapCourseInstanceSearchDTO_1.mapCourseInstanceSearchDTO);
43
- return { searchHits: courseInstanceSearchDTOs };
44
- }
45
- catch (error) {
46
- const searchError = (0, errorUtils_1.toSearchError)(error);
47
- return {
48
- searchHits: [],
49
- errorCode: searchError.errorCode,
50
- };
51
- }
52
- }),
18
+ searchCourseInstances: searchService.searchCourseInstances.bind(searchService),
53
19
  searchCourseVersions: searchService.searchCourseVersions.bind(searchService),
54
20
  getDepartmentWithCourseList: (departmentParams, language) => __awaiter(void 0, void 0, void 0, function* () {
55
21
  const { department, courses } = yield searchService.getDepartmentWithCourseList(departmentParams, language);
@@ -1 +1 @@
1
- {"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,qDAI4B;AAC5B,kGAA8F;AAC9F,wDAA2D;AAC3D,8DAA0D;AAC1D,oDAAmD;AACnD,mFAA+E;AAC/E,mDAA+C;AAC/C,kEAA8D;AAC9D,sDAAsD;AACtD,6DAA8G;AAC9G,sDAAmD;AAE5C,MAAM,eAAe,GAAG,CAAC,WAAsC,EAAa,EAAE;IACnF,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,WAAW,CAAC,CAAA;IACtD,OAAO;QACL,qBAAqB,EAAE,CAAO,YAAY,EAAE,QAAQ,EAAE,EAAE;YACtD,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,IAAA,0CAA4B,EAAC,YAAY,CAAC,CAAA;gBAEpE,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAA;gBAExF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAA,wDAA0C,EAC/E,iBAAiB,EACjB,cAAc,CACf,CAAA;gBAED,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,qEAAiC,EAGzE,WAAW,CAAC,gBAAgB,EAAE,YAAY,EAAE;oBAC5C,wBAAwB,EAAE,wDAAmC;oBAC7D,yBAAyB,EAAE,uDAAkC;iBAC9D,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,wCAAsB,EAAC,MAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAEzF,MAAM,cAAc,GAAG,IAAA,0BAAY,EAAC,aAAa,CAAC,CAAA;gBAElD,MAAM,cAAc,GAAG,IAAA,uCAAkB,EAAC,cAAc,EAAE,YAAY,CAAC,CAAA;gBAEvE,8EAA8E;gBAC9E,MAAM,oBAAoB,GAAG,IAAA,mCAAqB,EAAC,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;gBAE7F,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,GAAG,CAAC,uDAA0B,CAAC,CAAA;gBAErF,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,CAAA;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,IAAA,0BAAa,EAAC,KAAK,CAAC,CAAA;gBACxC,OAAO;oBACL,UAAU,EAAE,EAAE;oBACd,SAAS,EAAE,WAAW,CAAC,SAAS;iBACjC,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QACD,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5E,2BAA2B,EAAE,CAAO,gBAAgB,EAAE,QAAQ,EAAE,EAAE;YAChE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;YAE3G,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,wBAAwB,EAAE;wBACxB,cAAc,EAAE,EAAE;wBAClB,UAAU,EAAE,EAAE;wBACd,OAAO,EAAE,EAAE;qBACZ;oBACD,SAAS,EAAE,6BAAe,CAAC,aAAa;iBACzC,CAAA;YACH,CAAC;YAED,OAAO;gBACL,wBAAwB,EAAE;oBACxB,cAAc,EAAE,UAAU,CAAC,IAAI;oBAC/B,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,OAAO;iBACR;gBACD,SAAS,EAAE,6BAAe,CAAC,aAAa;aACzC,CAAA;QACH,CAAC,CAAA;KACF,CAAA;AACH,CAAC,CAAA;AApEY,QAAA,eAAe,mBAoE3B"}
1
+ {"version":3,"file":"createSearchApi.js","sourceRoot":"","sources":["../../src/search/createSearchApi.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mDAA+C;AAC/C,sDAAsD;AAE/C,MAAM,eAAe,GAAG,CAAC,WAAsC,EAAa,EAAE;IACnF,MAAM,aAAa,GAAG,IAAI,6BAAa,CAAC,WAAW,CAAC,CAAA;IACpD,OAAO;QACL,qBAAqB,EAAE,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC9E,oBAAoB,EAAE,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC5E,2BAA2B,EAAE,CAAO,gBAAgB,EAAE,QAAQ,EAAE,EAAE;YAChE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,aAAa,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;YAE3G,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,wBAAwB,EAAE;wBACxB,cAAc,EAAE,EAAE;wBAClB,UAAU,EAAE,EAAE;wBACd,OAAO,EAAE,EAAE;qBACZ;oBACD,SAAS,EAAE,6BAAe,CAAC,aAAa;iBACzC,CAAA;YACH,CAAC;YAED,OAAO;gBACL,wBAAwB,EAAE;oBACxB,cAAc,EAAE,UAAU,CAAC,IAAI;oBAC/B,UAAU,EAAE,UAAU,CAAC,IAAI;oBAC3B,OAAO;iBACR;gBACD,SAAS,EAAE,6BAAe,CAAC,aAAa;aACzC,CAAA;QACH,CAAC,CAAA;KACF,CAAA;AACH,CAAC,CAAA;AA7BY,QAAA,eAAe,mBA6B3B"}
@@ -4,10 +4,12 @@ import { Language } from '../utils';
4
4
  import { OrganisationService } from '../supportApis/organisationService';
5
5
  import { SupportService } from '../supportApis/supportService';
6
6
  import { DepartmentFlat } from '../supportApis/types';
7
+ import { PeriodService } from '../supportApis/PeriodService';
7
8
  export declare class SearchService {
8
9
  private ladokClient;
9
10
  organisationService: OrganisationService;
10
11
  supportService: SupportService;
12
+ periodService: PeriodService;
11
13
  constructor(ladokClient: LadokMellanlagerApiClient);
12
14
  searchCourseVersions(searchParams: SearchParams, language: Language): Promise<{
13
15
  searchHits: CourseVersionDTO[];
@@ -16,6 +18,13 @@ export declare class SearchService {
16
18
  searchHits: never[];
17
19
  errorCode: import("../utils/SearchError").SearchErrorCode;
18
20
  }>;
21
+ searchCourseInstances(searchParams: SearchParams, language: Language): Promise<{
22
+ searchHits: import("./types").CourseInstanceSearchDTO[];
23
+ errorCode?: undefined;
24
+ } | {
25
+ searchHits: never[];
26
+ errorCode: import("../utils/SearchError").SearchErrorCode;
27
+ }>;
19
28
  private searchLatestApprovedCourseVersions;
20
29
  getDepartmentWithCourseList({ organisation, utbildningsniva: rawUtbildningsniva }: DepartmentParams, language: Language): Promise<{
21
30
  department: DepartmentFlat | undefined;