@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
@@ -21,11 +21,17 @@ const organisationService_1 = require("../supportApis/organisationService");
21
21
  const supportService_1 = require("../supportApis/supportService");
22
22
  const SearchError_1 = require("../utils/SearchError");
23
23
  const continuationConfig_1 = require("./continuationConfig");
24
+ const statusUtils_1 = require("../utils/statusUtils");
25
+ const PeriodService_1 = require("../supportApis/PeriodService");
26
+ const mapCourseInstanceResult_1 = require("../mapCourseInstanceResult");
27
+ const groupSearchResults_1 = require("../groupSearchResults");
28
+ const mapCourseInstanceSearchDTO_1 = require("./utils/mapCourseInstanceSearchDTO");
24
29
  class SearchService {
25
30
  constructor(ladokClient) {
26
31
  this.ladokClient = ladokClient;
27
32
  this.organisationService = new organisationService_1.OrganisationService(ladokClient);
28
33
  this.supportService = new supportService_1.SupportService(ladokClient);
34
+ this.periodService = new PeriodService_1.PeriodService(ladokClient);
29
35
  }
30
36
  searchCourseVersions(searchParams, language) {
31
37
  return __awaiter(this, void 0, void 0, function* () {
@@ -51,6 +57,39 @@ class SearchService {
51
57
  }
52
58
  });
53
59
  }
60
+ searchCourseInstances(searchParams, language) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ try {
63
+ const cleanSearchParams = (0, searchUtils_1.validateAndCleanSearchParams)(searchParams);
64
+ const [departmentList, periodItems] = yield Promise.all([
65
+ this.supportService.getSchoolsWithDepartmentsForSearch(language),
66
+ this.periodService.getPeriodItems(),
67
+ ]);
68
+ const requestQuery = (0, searchUtils_1.prepareSearchRequestQueryForKursTillfallen)(cleanSearchParams, departmentList);
69
+ const groupByPeriod = Boolean(requestQuery.startPeriod);
70
+ const { allEntities: allCourses } = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(this.ladokClient.sokKursTillfalle, requestQuery, {
71
+ maxSearchResultsToReturn: continuationConfig_1.SEARCH_MAX_SEARCH_RESULTS_TO_RETURN,
72
+ maxContinuationIterations: continuationConfig_1.SEARCH_MAX_CONTINUATION_ITERATIONS,
73
+ });
74
+ const mappedCourses = allCourses.map(course => (0, mapCourseInstanceResult_1.mapCourseInstanceResult)(course, periodItems, language));
75
+ const noDraftCourses = (0, statusUtils_1.removeDrafts)(mappedCourses);
76
+ const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(noDraftCourses, groupByPeriod);
77
+ // TODO Remove this once we have a query parameter to filter for miljö courses
78
+ const courseInstancesFilteredByMiljo = (0, searchUtils_1.possiblyFilterByMiljo)(groupedCourses, cleanSearchParams.onlyMHU);
79
+ // TODO Remove this once we have a query parameter to filter by period
80
+ const courseInstancesToShow = (0, searchUtils_1.possiblyFilterByKTHPeriod)(courseInstancesFilteredByMiljo, cleanSearchParams.kthPeriods);
81
+ const courseInstanceSearchDTOs = courseInstancesToShow.map(mapCourseInstanceSearchDTO_1.mapCourseInstanceSearchDTO);
82
+ return { searchHits: courseInstanceSearchDTOs };
83
+ }
84
+ catch (error) {
85
+ const searchError = (0, errorUtils_1.toSearchError)(error);
86
+ return {
87
+ searchHits: [],
88
+ errorCode: searchError.errorCode,
89
+ };
90
+ }
91
+ });
92
+ }
54
93
  searchLatestApprovedCourseVersions(requestQueryForKursInstans, language, continuationOptions) {
55
94
  return __awaiter(this, void 0, void 0, function* () {
56
95
  const { allEntities: allCourseVersions } = yield (0, getAllEntitiesByUseOfContinuation_1.getAllEntitiesByUseOfContinuation)(this.ladokClient.sokUtbildningsInstans, requestQueryForKursInstans, continuationOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"searchService.js","sourceRoot":"","sources":["../../src/search/searchService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchService.js","sourceRoot":"","sources":["../../src/search/searchService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { EducationalLevelCode } from '@kth/ladok-attributvarde-utils';
2
2
  import { Language } from '../utils';
3
+ import { KTHPeriodLabel, KTHPeriodSemester } from '../kth/KTHPeriod/KTHPeriod';
3
4
  export type SearchApi = {
4
5
  searchCourseInstances: (searchParams: SearchParams, language: Language) => Promise<SearchCourseResponse<CourseInstanceSearchDTO>>;
5
6
  searchCourseVersions: (searchParams: SearchParams, language: Language) => Promise<SearchCourseResponse<CourseVersionDTO>>;
@@ -18,12 +19,14 @@ export type SearchParams = {
18
19
  organisation?: string;
19
20
  sprak?: string;
20
21
  avvecklad?: string;
21
- startPeriod?: string[];
22
+ semesterKthPeriods?: string[];
22
23
  utbildningsniva?: string[];
23
24
  onlyMHU?: boolean;
24
25
  };
25
- export type CleanSearchParams = Omit<SearchParams, 'utbildningsniva'> & {
26
+ export type CleanSearchParams = Omit<SearchParams, 'utbildningsniva' | 'kthPeriods'> & {
26
27
  utbildningsniva?: EducationalLevelCode[];
28
+ ladokStartPeriods?: string[];
29
+ kthPeriods?: KTHPeriodSemester[];
27
30
  };
28
31
  export type CourseVersionDTO = {
29
32
  kod: string;
@@ -36,17 +39,18 @@ export type CourseInstanceSearchDTO = {
36
39
  benamning: string;
37
40
  omfattning: string;
38
41
  startTerm?: string;
39
- perioder: {
40
- startPeriod?: number;
41
- startPeriodYear: string;
42
- endPeriod?: number;
43
- endPeriodYear: string;
44
- tillfallesperioderNummer?: number;
45
- }[];
46
42
  utbildningstyper: string[];
47
43
  studietakter: number[];
48
44
  undervisningssprak: string[];
49
45
  studieorter: string[];
46
+ kthPeriodRange?: {
47
+ start: KTHPeriodSemesterDTO;
48
+ end?: KTHPeriodSemesterDTO;
49
+ };
50
+ courseHasNoInstances: boolean;
51
+ };
52
+ export type KTHPeriodSemesterDTO = Pick<KTHPeriodSemester, 'semester'> & {
53
+ period: KTHPeriodLabel;
50
54
  };
51
55
  export type RequestQuery = {
52
56
  attributVarden?: string;
@@ -0,0 +1,16 @@
1
+ import { KTHPeriodSemester } from '../../kth/KTHPeriod/KTHPeriod';
2
+ /**
3
+ * Takes an array of SemesterKTHPeriod strings in the format YYYY:P0, e.g. 2024:P3
4
+ * Returns parsed kthPeriodSemesters (KTHPeriodSemester) and matching ladokStartPeriods, e.g. VT2024
5
+ * The ladokStartPeriods are used to query Ladok for course instances.
6
+ * The kthPeriodSemesters are used to filter the courseInstanceResults by matching KTHPeriods.
7
+ * @param rawSemesterKthPeriods
8
+ * @returns
9
+ */
10
+ export declare const createKTHPeriodSemestersAndLadokStartPeriods: (rawSemesterKthPeriods?: string[]) => {
11
+ kthPeriodSemesters: undefined;
12
+ ladokStartPeriods: undefined;
13
+ } | {
14
+ kthPeriodSemesters: KTHPeriodSemester[];
15
+ ladokStartPeriods: string[];
16
+ };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createKTHPeriodSemestersAndLadokStartPeriods = void 0;
4
+ const createKTHPeriodSemester_1 = require("../../kth/KTHPeriod/createKTHPeriodSemester");
5
+ const utils_1 = require("../../utils");
6
+ const collectionUtils_1 = require("../../utils/collectionUtils");
7
+ const typeChecking_1 = require("../../utils/typeChecking");
8
+ /**
9
+ * Takes an array of SemesterKTHPeriod strings in the format YYYY:P0, e.g. 2024:P3
10
+ * Returns parsed kthPeriodSemesters (KTHPeriodSemester) and matching ladokStartPeriods, e.g. VT2024
11
+ * The ladokStartPeriods are used to query Ladok for course instances.
12
+ * The kthPeriodSemesters are used to filter the courseInstanceResults by matching KTHPeriods.
13
+ * @param rawSemesterKthPeriods
14
+ * @returns
15
+ */
16
+ const createKTHPeriodSemestersAndLadokStartPeriods = (rawSemesterKthPeriods) => {
17
+ if (!(0, typeChecking_1.isArrayWithValues)(rawSemesterKthPeriods)) {
18
+ return {
19
+ kthPeriodSemesters: undefined,
20
+ ladokStartPeriods: undefined,
21
+ };
22
+ }
23
+ const unfilteredKthPeriods = rawSemesterKthPeriods.map(rawKthPeriod => {
24
+ if (!isValidKthPeriodString(rawKthPeriod))
25
+ return undefined;
26
+ const { year, periodString } = extractYearAndPeriod(rawKthPeriod);
27
+ return (0, createKTHPeriodSemester_1.createKTHPeriodSemester)(year, periodString);
28
+ });
29
+ const kthPeriodSemesters = unfilteredKthPeriods.filter(typeChecking_1.isDefined);
30
+ const distinctLadokPeriods = createDistinctLadokPeriods(kthPeriodSemesters);
31
+ return { kthPeriodSemesters, ladokStartPeriods: distinctLadokPeriods };
32
+ };
33
+ exports.createKTHPeriodSemestersAndLadokStartPeriods = createKTHPeriodSemestersAndLadokStartPeriods;
34
+ const isValidKthPeriodString = (rawKthPeriod) => semesterKTHPeriodRegex.test(rawKthPeriod);
35
+ const semesterKTHPeriodRegex = /^\d{4}:P[0-5]$/;
36
+ const extractYearAndPeriod = (rawKthPeriod) => {
37
+ const [yearString, periodString] = rawKthPeriod.split(':');
38
+ return {
39
+ year: parseInt(yearString, 10),
40
+ periodString,
41
+ };
42
+ };
43
+ /**
44
+ * Takes an array of KTHPeriodSemesters and returns an array of distinct LadokPeriods which match the AcademicSemesters
45
+ * of the KTHPeriodSemesters.
46
+ * Example (simplified):
47
+ * - 2024 P3 (maps to spring 2024)
48
+ * - 2024 P1 (maps to autumn 2024)
49
+ * - 2024 P2 (maps to autumn 2024)
50
+ *
51
+ * Would result in ['VT2024', 'HT2024'], because 2024 P1 and P2 are autumn periods (HT2024) and P3 is a spring period (VT2024).
52
+ * @param kthPeriodSemesters
53
+ * @returns
54
+ */
55
+ const createDistinctLadokPeriods = (kthPeriodSemesters) => {
56
+ const academicSemesters = kthPeriodSemesters.map(({ semester }) => semester);
57
+ academicSemesters.sort(utils_1.AcademicSemester.compare);
58
+ const distinctSemesters = (0, collectionUtils_1.filterDefinedAndDistinctValues)(academicSemesters, item => item.toKTHSemesterString());
59
+ const distinctLadokPeriods = distinctSemesters.map(semester => semester.toLadokPeriodString());
60
+ return distinctLadokPeriods;
61
+ };
62
+ //# sourceMappingURL=createLadokPeriodsAndKthPeriods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLadokPeriodsAndKthPeriods.js","sourceRoot":"","sources":["../../../src/search/utils/createLadokPeriodsAndKthPeriods.ts"],"names":[],"mappings":";;;AAAA,yFAAqF;AAErF,uCAA8C;AAC9C,iEAA4E;AAC5E,2DAAuE;AAEvE;;;;;;;GAOG;AACI,MAAM,4CAA4C,GAAG,CAAC,qBAAgC,EAAE,EAAE;IAC/F,IAAI,CAAC,IAAA,gCAAiB,EAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,kBAAkB,EAAE,SAAS;YAC7B,iBAAiB,EAAE,SAAS;SAC7B,CAAA;IACH,CAAC;IAED,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;QACpE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;YAAE,OAAO,SAAS,CAAA;QAE3D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAEjE,OAAO,IAAA,iDAAuB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAEjE,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,CAAA;IAE3E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAA;AACxE,CAAC,CAAA;AArBY,QAAA,4CAA4C,gDAqBxD;AAED,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;AAClG,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAE/C,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAA0C,EAAE;IAC5F,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE1D,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9B,YAAY;KACb,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,0BAA0B,GAAG,CAAC,kBAAuC,EAAE,EAAE;IAC7E,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;IAE5E,iBAAiB,CAAC,IAAI,CAAC,wBAAgB,CAAC,OAAO,CAAC,CAAA;IAEhD,MAAM,iBAAiB,GAAG,IAAA,gDAA8B,EAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;IAE/G,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAA;IAE9F,OAAO,oBAAoB,CAAA;AAC7B,CAAC,CAAA"}
@@ -2,15 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapCourseInstanceSearchDTO = void 0;
4
4
  const typeChecking_1 = require("../../utils/typeChecking");
5
- const castToString = (value) => {
6
- if (typeof value === 'string') {
7
- return value;
8
- }
9
- if (typeof value === 'number') {
10
- return value.toString();
11
- }
12
- return '';
13
- };
5
+ const KTHPeriod_1 = require("../../kth/KTHPeriod/KTHPeriod");
14
6
  const mapCourseInstanceSearchDTO = (courseInstance) => {
15
7
  var _a;
16
8
  const utbildningstyper = courseInstance.utbildningstyp.map(({ level: { name: educationalLevel = '' } = {} }) => educationalLevel);
@@ -19,13 +11,8 @@ const mapCourseInstanceSearchDTO = (courseInstance) => {
19
11
  const studieorter = courseInstance.studieort.map(({ name: courseCampus = '' }) => courseCampus);
20
12
  const allStartPeriods = courseInstance.startperiod.map(({ code: startTerm = '' }) => startTerm);
21
13
  const startTerm = allStartPeriods.length === 1 ? allStartPeriods[0] : undefined;
22
- const perioder = courseInstance.period.map(({ forstaUndervisningsdatum: { year: startPeriodYear, period: startPeriod } = {}, sistaUndervisningsdatum: { year: endPeriodYear, period: endPeriod } = {}, tillfallesperioderNummer = undefined, }) => ({
23
- startPeriodYear: castToString(startPeriodYear),
24
- startPeriod,
25
- endPeriodYear: castToString(endPeriodYear),
26
- endPeriod,
27
- tillfallesperioderNummer,
28
- }));
14
+ const kthPeriodRange = getKTHPeriodRange(courseInstance.kthPeriods);
15
+ const courseHasNoInstances = !(0, typeChecking_1.isDefined)(kthPeriodRange);
29
16
  return {
30
17
  kod: courseInstance.kod,
31
18
  benamning: courseInstance.benamning,
@@ -35,8 +22,34 @@ const mapCourseInstanceSearchDTO = (courseInstance) => {
35
22
  undervisningssprak,
36
23
  studieorter,
37
24
  startTerm,
38
- perioder,
25
+ kthPeriodRange,
26
+ courseHasNoInstances,
39
27
  };
40
28
  };
41
29
  exports.mapCourseInstanceSearchDTO = mapCourseInstanceSearchDTO;
30
+ /**
31
+ * Returns the KTH period range (start and end) from an array of KTHPeriodSemester.
32
+ * If the array is empty or undefined, returns undefined.
33
+ * If the array has only one element, the end will be undefined.
34
+ * @param kthPeriods Array of KTHPeriodSemester
35
+ * @returns KTHPeriodRangeDTO or undefined
36
+ */
37
+ const getKTHPeriodRange = (kthPeriods) => {
38
+ if (!(0, typeChecking_1.isArrayWithValues)(kthPeriods))
39
+ return undefined;
40
+ const kthPeriodRangeStart = kthPeriods.at(0);
41
+ const kthPeriodRangeEnd = kthPeriods.length <= 1 ? undefined : kthPeriods.at(-1);
42
+ return {
43
+ start: mapKTHPeriodSemesterDTO(kthPeriodRangeStart), // We know that kthPeriodRangeStart is defined here
44
+ end: mapKTHPeriodSemesterDTO(kthPeriodRangeEnd),
45
+ };
46
+ };
47
+ const mapKTHPeriodSemesterDTO = (kthPeriodSemester) => {
48
+ if (!(0, typeChecking_1.isDefined)(kthPeriodSemester))
49
+ return undefined;
50
+ return {
51
+ semester: kthPeriodSemester.semester,
52
+ period: (0, KTHPeriod_1.formatKTHPeriod)(kthPeriodSemester.period),
53
+ };
54
+ };
42
55
  //# sourceMappingURL=mapCourseInstanceSearchDTO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapCourseInstanceSearchDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseInstanceSearchDTO.ts"],"names":[],"mappings":";;;AAAA,2DAAoD;AAIpD,MAAM,YAAY,GAAG,CAAC,KAAkC,EAAU,EAAE;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAEM,MAAM,0BAA0B,GAAG,CAAC,cAAyC,EAA2B,EAAE;;IAC/G,MAAM,gBAAgB,GAAa,cAAc,CAAC,cAAc,CAAC,GAAG,CAClE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,gBAAgB,CACtE,CAAA;IAED,MAAM,YAAY,GAAa,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAElG,MAAM,kBAAkB,GAAa,cAAc,CAAC,kBAAkB,CAAC,GAAG,CACxE,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,cAAc,CAClD,CAAA;IAED,MAAM,WAAW,GAAa,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAA;IAEzG,MAAM,eAAe,GAAa,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;IACzG,MAAM,SAAS,GAAuB,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEnG,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CACxC,CAAC,EACC,wBAAwB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,EAC7E,uBAAuB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EACxE,wBAAwB,GAAG,SAAS,GACrC,EAAE,EAAE,CAAC,CAAC;QACL,eAAe,EAAE,YAAY,CAAC,eAAe,CAAC;QAC9C,WAAW;QACX,aAAa,EAAE,YAAY,CAAC,aAAa,CAAC;QAC1C,SAAS;QACT,wBAAwB;KACzB,CAAC,CACH,CAAA;IAED,OAAO;QACL,GAAG,EAAE,cAAc,CAAC,GAAG;QACvB,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,UAAU,EAAE,MAAA,cAAc,CAAC,UAAU,CAAC,iBAAiB,mCAAI,EAAE;QAC7D,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;QAClB,WAAW;QACX,SAAS;QACT,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AAzCY,QAAA,0BAA0B,8BAyCtC"}
1
+ {"version":3,"file":"mapCourseInstanceSearchDTO.js","sourceRoot":"","sources":["../../../src/search/utils/mapCourseInstanceSearchDTO.ts"],"names":[],"mappings":";;;AAAA,2DAAuE;AAGvE,6DAAkF;AAE3E,MAAM,0BAA0B,GAAG,CAAC,cAAyC,EAA2B,EAAE;;IAC/G,MAAM,gBAAgB,GAAa,cAAc,CAAC,cAAc,CAAC,GAAG,CAClE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,gBAAgB,CACtE,CAAA;IAED,MAAM,YAAY,GAAa,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAElG,MAAM,kBAAkB,GAAa,cAAc,CAAC,kBAAkB,CAAC,GAAG,CACxE,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,cAAc,CAClD,CAAA;IAED,MAAM,WAAW,GAAa,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAA;IAEzG,MAAM,eAAe,GAAa,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;IACzG,MAAM,SAAS,GAAuB,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEnG,MAAM,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;IACnE,MAAM,oBAAoB,GAAG,CAAC,IAAA,wBAAS,EAAC,cAAc,CAAC,CAAA;IAEvD,OAAO;QACL,GAAG,EAAE,cAAc,CAAC,GAAG;QACvB,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,UAAU,EAAE,MAAA,cAAc,CAAC,UAAU,CAAC,iBAAiB,mCAAI,EAAE;QAC7D,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;QAClB,WAAW;QACX,SAAS;QACT,cAAc;QACd,oBAAoB;KACrB,CAAA;AACH,CAAC,CAAA;AA/BY,QAAA,0BAA0B,8BA+BtC;AAED;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,CAAC,UAA+B,EAAE,EAAE;IAC5D,IAAI,CAAC,IAAA,gCAAiB,EAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAEpD,MAAM,mBAAmB,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhF,OAAO;QACL,KAAK,EAAE,uBAAuB,CAAC,mBAAmB,CAAE,EAAE,mDAAmD;QACzG,GAAG,EAAE,uBAAuB,CAAC,iBAAiB,CAAC;KAChD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC9B,iBAAgD,EACd,EAAE;IACpC,IAAI,CAAC,IAAA,wBAAS,EAAC,iBAAiB,CAAC;QAAE,OAAO,SAAS,CAAA;IAEnD,OAAO;QACL,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,MAAM,EAAE,IAAA,2BAAe,EAAC,iBAAiB,CAAC,MAAM,CAAC;KAClD,CAAA;AACH,CAAC,CAAA"}
@@ -1,7 +1,8 @@
1
- import { SokUtbildningsInstansQuery, SokUtbildningsTillfalleQuery } from '@kth/ladok-mellanlager-client';
1
+ import { SokUtbildningsInstansQuery, SokUtbildningsTillfalleSlimQuery } from '@kth/ladok-mellanlager-client';
2
2
  import { CleanSearchParams, SearchParams } from '../types';
3
3
  import { SchoolWithDepartments } from '../../supportApis/types';
4
4
  import { CourseVersion } from '../../mapCourseVersion';
5
+ import { KTHPeriodSemester } from '../../kth/KTHPeriod/KTHPeriod';
5
6
  /**
6
7
  * Validates and cleans the search parameters for the search API.
7
8
  * Throws an error if the searchParams are invalid.
@@ -12,10 +13,7 @@ import { CourseVersion } from '../../mapCourseVersion';
12
13
  * - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
13
14
  */
14
15
  export declare const validateAndCleanSearchParams: (searchParams: SearchParams) => CleanSearchParams;
15
- export declare const prepareSearchRequestQueryForKursTillfallen: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => {
16
- requestQuery: NonNullable<SokUtbildningsTillfalleQuery>;
17
- filterPeriod: boolean;
18
- };
16
+ export declare const prepareSearchRequestQueryForKursTillfallen: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => NonNullable<SokUtbildningsTillfalleSlimQuery>;
19
17
  export declare const prepareSearchRequestQueryForCourseVersion: (searchParams: CleanSearchParams, schoolsWithDepartments: SchoolWithDepartments[]) => NonNullable<SokUtbildningsInstansQuery>;
20
18
  export declare const prepareSearchRequestQueryForDepartmentList: (schoolsWithDepartments: SchoolWithDepartments[], { rawUtbildningsniva, organisation, }: {
21
19
  organisation?: string;
@@ -38,3 +36,13 @@ export declare const findLatestCourseVersions: (courseVersions: CourseVersion[])
38
36
  export declare const possiblyFilterByMiljo: <T extends {
39
37
  isMiljo?: boolean;
40
38
  }>(courses: T[], onlyMHU?: boolean) => T[];
39
+ /**
40
+ * If requestedKthPeriods is given, will only return courses that have a startingPeriod that matches
41
+ * one of the requestedKthPeriods
42
+ * @param courses
43
+ * @param requestedKthPeriods startingKTHPeriods to filter by
44
+ * @returns
45
+ */
46
+ export declare const possiblyFilterByKTHPeriod: <T extends {
47
+ startingKTHPeriod?: KTHPeriodSemester;
48
+ }>(courses: T[], requestedKthPeriods: KTHPeriodSemester[] | undefined) => T[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.possiblyFilterByMiljo = exports.findLatestCourseVersions = exports.prepareSearchRequestQueryForDepartmentList = exports.prepareSearchRequestQueryForCourseVersion = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateAndCleanSearchParams = void 0;
3
+ exports.possiblyFilterByKTHPeriod = exports.possiblyFilterByMiljo = exports.findLatestCourseVersions = exports.prepareSearchRequestQueryForDepartmentList = exports.prepareSearchRequestQueryForCourseVersion = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateAndCleanSearchParams = void 0;
4
4
  const SearchError_1 = require("../../utils/SearchError");
5
5
  const utils_1 = require("../../utils");
6
6
  const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
@@ -8,6 +8,8 @@ const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
8
8
  const typeChecking_1 = require("../../utils/typeChecking");
9
9
  const queryConstants_1 = require("../../queryConstants");
10
10
  const educationalTypeUtils_1 = require("./educationalTypeUtils");
11
+ const createLadokPeriodsAndKthPeriods_1 = require("./createLadokPeriodsAndKthPeriods");
12
+ const KTHPeriod_1 = require("../../kth/KTHPeriod/KTHPeriod");
11
13
  /**
12
14
  * Validates and cleans the search parameters for the search API.
13
15
  * Throws an error if the searchParams are invalid.
@@ -18,20 +20,23 @@ const educationalTypeUtils_1 = require("./educationalTypeUtils");
18
20
  * - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
19
21
  */
20
22
  const validateAndCleanSearchParams = (searchParams) => {
21
- const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva: rawUtbildningsniva, avvecklad, onlyMHU, } = searchParams;
23
+ const { kodEllerBenamning, organisation, sprak, utbildningsniva: rawUtbildningsniva, avvecklad, onlyMHU, semesterKthPeriods, // 2025:P1
24
+ } = searchParams;
22
25
  // TODO add onlyMHU here as well once we have a query parameter to filter for miljö courses
23
- if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !rawUtbildningsniva) {
26
+ if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !semesterKthPeriods && !rawUtbildningsniva) {
24
27
  throw SearchError_1.SearchError.noRestrictions();
25
28
  }
26
29
  if (kodEllerBenamning && kodEllerBenamning.length < 3) {
27
30
  throw SearchError_1.SearchError.kodEllerBenamning();
28
31
  }
32
+ const { kthPeriodSemesters: kthPeriods, ladokStartPeriods } = (0, createLadokPeriodsAndKthPeriods_1.createKTHPeriodSemestersAndLadokStartPeriods)(semesterKthPeriods);
29
33
  const utbildningsniva = rawUtbildningsniva ? cleanUtbildningsnivaParam(rawUtbildningsniva) : undefined;
30
34
  return {
31
35
  kodEllerBenamning,
32
36
  organisation,
33
37
  sprak,
34
- startPeriod,
38
+ ladokStartPeriods,
39
+ kthPeriods,
35
40
  utbildningsniva,
36
41
  avvecklad,
37
42
  onlyMHU,
@@ -57,12 +62,11 @@ const mapUtbildningsniva = (utbildningsniva) => {
57
62
  }
58
63
  };
59
64
  const prepareSearchRequestQueryForKursTillfallen = (searchParams, schoolsWithDepartments) => {
60
- const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
65
+ const { kodEllerBenamning, organisation, sprak, ladokStartPeriods, utbildningsniva, avvecklad } = searchParams;
61
66
  const educationalTypes = (0, educationalTypeUtils_1.getUtbildningsnivaParameterForKursTillfalle)(utbildningsniva);
62
67
  const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
63
- const filterPeriod = !Boolean(startPeriod);
64
- const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes })), (organisationsFilter && { organisation: organisationsFilter })), (sprak && { sprak })), (avvecklad && { avvecklad })), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS, antalTraffar: queryConstants_1.MAX_ANTAL_TRAFFAR });
65
- return { requestQuery, filterPeriod }; // TODO Benni this does two things, filterPeriod should probably be split out
68
+ const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(ladokStartPeriods)), (educationalTypes && { utbildningsniva: educationalTypes })), (organisationsFilter && { organisation: organisationsFilter })), (sprak && { sprak })), (avvecklad && { avvecklad })), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS, antalTraffar: queryConstants_1.MAX_ANTAL_TRAFFAR });
69
+ return requestQuery;
66
70
  };
67
71
  exports.prepareSearchRequestQueryForKursTillfallen = prepareSearchRequestQueryForKursTillfallen;
68
72
  const getOrganisationsFilter = (organisationer, organisation) => {
@@ -94,25 +98,25 @@ exports.prepareSearchRequestQueryForDepartmentList = prepareSearchRequestQueryFo
94
98
  /**
95
99
  * If startPeriod is defined, returns it as an object with startPeriod property and comma-separated values.
96
100
  * If not, returns an object with terminkodStart property and the default period.
97
- * @param startPeriod array of start periods
101
+ * @param ladokStartPeriods array of start periods
98
102
  * @returns
99
103
  */
100
- const getStartPeriodOrTerminkodStart = (startPeriod) => {
101
- if (startPeriod && startPeriod.length > 0) {
102
- return { startPeriod: startPeriod.join(',') };
104
+ const getStartPeriodOrTerminkodStart = (ladokStartPeriods) => {
105
+ if ((0, typeChecking_1.isArrayWithValues)(ladokStartPeriods)) {
106
+ return { startPeriod: ladokStartPeriods.join(',') };
103
107
  }
104
- return { terminkodStart: getDefaultPeriod() };
108
+ return { terminkodStart: getDefaultLadokPeriod() };
105
109
  };
106
110
  /**
107
111
  *
108
- * @returns the default period code based on the current date.
112
+ * @returns the default LadokPeriod based on the current date.
109
113
  */
110
- const getDefaultPeriod = () => {
114
+ const getDefaultLadokPeriod = () => {
111
115
  const now = new Date();
112
- const defaultPeriod = (0, utils_1.getPeriodCodeForDate)(now);
113
- return defaultPeriod;
116
+ const defaultLadokPeriod = (0, utils_1.getLadokPeriodCodeForDate)(now);
117
+ return defaultLadokPeriod;
114
118
  };
115
- // TODO Benni: refactor or remove this function if it is not needed anymore (basically a failsafe)
119
+ // TODO refactor or remove this function if it is not needed anymore (basically a failsafe)
116
120
  /**
117
121
  * This function takes an array of courseVersions, groups them by their kod, and finds the latest version of each course.
118
122
  * It returns an array of distinct courses (based on kod).
@@ -135,7 +139,6 @@ const findLatestCourseVersions = (courseVersions) => {
135
139
  return latestDefinedCourses;
136
140
  };
137
141
  exports.findLatestCourseVersions = findLatestCourseVersions;
138
- // TODO Remove this once we have a query parameter to filter for miljö courses
139
142
  /**
140
143
  * If onlyMHU is true, this function filters the courses to only include those that have the flag isMiljo set to true.
141
144
  * @param courses
@@ -148,4 +151,18 @@ const possiblyFilterByMiljo = (courses, onlyMHU = false) => {
148
151
  return courses.filter(course => course.isMiljo);
149
152
  };
150
153
  exports.possiblyFilterByMiljo = possiblyFilterByMiljo;
154
+ /**
155
+ * If requestedKthPeriods is given, will only return courses that have a startingPeriod that matches
156
+ * one of the requestedKthPeriods
157
+ * @param courses
158
+ * @param requestedKthPeriods startingKTHPeriods to filter by
159
+ * @returns
160
+ */
161
+ const possiblyFilterByKTHPeriod = (courses, requestedKthPeriods) => {
162
+ if (!(0, typeChecking_1.isArrayWithValues)(requestedKthPeriods))
163
+ return courses;
164
+ const wanted = new Set(requestedKthPeriods.map(KTHPeriod_1.formatKTHPeriodSemester));
165
+ return courses.filter(({ startingKTHPeriod }) => (0, typeChecking_1.isDefined)(startingKTHPeriod) && wanted.has((0, KTHPeriod_1.formatKTHPeriodSemester)(startingKTHPeriod)));
166
+ };
167
+ exports.possiblyFilterByKTHPeriod = possiblyFilterByKTHPeriod;
151
168
  //# sourceMappingURL=searchUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
@@ -31,9 +31,9 @@ export declare class SearchError extends Error {
31
31
  static missingParameter(message: string): SearchError;
32
32
  }
33
33
  export declare enum SearchErrorCode {
34
- UNKNOWN_ERROR = "unknownError",
35
- OVERFLOW = "search-error-overflow",
36
- KOD_OR_BENAMNING_MISSING = "errorKodEllerBenamning",
37
- NO_RESTRICTIONS = "errorNoRestrictions",
38
- MISSING_PARAMETER = "errorMissingParameter"
34
+ UNKNOWN_ERROR = "unknown",
35
+ OVERFLOW = "overflow",
36
+ KOD_OR_BENAMNING_MISSING = "kod-or-benamning-missing",
37
+ NO_RESTRICTIONS = "no-restrictions",
38
+ MISSING_PARAMETER = "missing-parameter"
39
39
  }
@@ -48,13 +48,12 @@ class SearchError extends Error {
48
48
  }
49
49
  }
50
50
  exports.SearchError = SearchError;
51
- // TODO Benni refactor naming convention to be more consistent, make sure it is in sync with KP
52
51
  var SearchErrorCode;
53
52
  (function (SearchErrorCode) {
54
- SearchErrorCode["UNKNOWN_ERROR"] = "unknownError";
55
- SearchErrorCode["OVERFLOW"] = "search-error-overflow";
56
- SearchErrorCode["KOD_OR_BENAMNING_MISSING"] = "errorKodEllerBenamning";
57
- SearchErrorCode["NO_RESTRICTIONS"] = "errorNoRestrictions";
58
- SearchErrorCode["MISSING_PARAMETER"] = "errorMissingParameter";
53
+ SearchErrorCode["UNKNOWN_ERROR"] = "unknown";
54
+ SearchErrorCode["OVERFLOW"] = "overflow";
55
+ SearchErrorCode["KOD_OR_BENAMNING_MISSING"] = "kod-or-benamning-missing";
56
+ SearchErrorCode["NO_RESTRICTIONS"] = "no-restrictions";
57
+ SearchErrorCode["MISSING_PARAMETER"] = "missing-parameter";
59
58
  })(SearchErrorCode || (exports.SearchErrorCode = SearchErrorCode = {}));
60
59
  //# sourceMappingURL=SearchError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchError.js","sourceRoot":"","sources":["../../src/utils/SearchError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAEpC,YAAoB,SAA0B,EAAE,OAAgB;QAC9D,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;CACF;AAnDD,kCAmDC;AAED,+FAA+F;AAC/F,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,iDAA8B,CAAA;IAC9B,qDAAkC,CAAA;IAClC,sEAAmD,CAAA;IACnD,0DAAuC,CAAA;IACvC,8DAA2C,CAAA;AAC7C,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B"}
1
+ {"version":3,"file":"SearchError.js","sourceRoot":"","sources":["../../src/utils/SearchError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAEpC,YAAoB,SAA0B,EAAE,OAAgB;QAC9D,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAA;IAClE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAe;QACrC,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACpE,CAAC;CACF;AAnDD,kCAmDC;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,4CAAyB,CAAA;IACzB,wCAAqB,CAAA;IACrB,wEAAqD,CAAA;IACrD,sDAAmC,CAAA;IACnC,0DAAuC,CAAA;AACzC,CAAC,EANW,eAAe,+BAAf,eAAe,QAM1B"}
@@ -2,3 +2,12 @@
2
2
  * Groups an array of items by a given key selector.
3
3
  */
4
4
  export declare const groupBy: <T, K>(items: T[], keySelector: (item: T) => K) => Map<K, T[]>;
5
+ /**
6
+ * Takes an array of items and will return an array of defined and distinct items.
7
+ * Distinction is measured based on the supplied keySelector function
8
+ *
9
+ * @param items the items to filter
10
+ * @param keySelector function that returns a key based on an item
11
+ * @returns array of defined and distinct (based on the key) items
12
+ */
13
+ export declare const filterDefinedAndDistinctValues: <T, K>(items: (T | undefined)[], keySelector: (item: T) => K) => T[];
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.groupBy = void 0;
3
+ exports.filterDefinedAndDistinctValues = exports.groupBy = void 0;
4
+ const typeChecking_1 = require("./typeChecking");
4
5
  /**
5
6
  * Groups an array of items by a given key selector.
6
7
  */
@@ -16,4 +17,26 @@ const groupBy = (items, keySelector) => {
16
17
  return grouped;
17
18
  };
18
19
  exports.groupBy = groupBy;
20
+ /**
21
+ * Takes an array of items and will return an array of defined and distinct items.
22
+ * Distinction is measured based on the supplied keySelector function
23
+ *
24
+ * @param items the items to filter
25
+ * @param keySelector function that returns a key based on an item
26
+ * @returns array of defined and distinct (based on the key) items
27
+ */
28
+ const filterDefinedAndDistinctValues = (items, keySelector) => {
29
+ const definedItems = items.filter(typeChecking_1.isDefined);
30
+ const seenItems = new Set();
31
+ // We loop over the defined items
32
+ const distinctFirst = definedItems.filter(item => {
33
+ const key = keySelector(item);
34
+ if (seenItems.has(key))
35
+ return false; // If we've seen an item before, we do not want to have it once more, return false to filter out
36
+ seenItems.add(key); // Otherwise, we mark it as seen
37
+ return true; // and return true to keep it
38
+ });
39
+ return distinctFirst;
40
+ };
41
+ exports.filterDefinedAndDistinctValues = filterDefinedAndDistinctValues;
19
42
  //# sourceMappingURL=collectionUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectionUtils.js","sourceRoot":"","sources":["../../src/utils/collectionUtils.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,OAAO,GAAG,CAAO,KAAU,EAAE,WAA2B,EAAe,EAAE;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAZY,QAAA,OAAO,WAYnB"}
1
+ {"version":3,"file":"collectionUtils.js","sourceRoot":"","sources":["../../src/utils/collectionUtils.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C;;GAEG;AACI,MAAM,OAAO,GAAG,CAAO,KAAU,EAAE,WAA2B,EAAe,EAAE;IACpF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAZY,QAAA,OAAO,WAYnB;AAED;;;;;;;GAOG;AACI,MAAM,8BAA8B,GAAG,CAAO,KAAwB,EAAE,WAA2B,EAAO,EAAE;IACjH,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,wBAAS,CAAC,CAAA;IAE5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAK,CAAA;IAE9B,iCAAiC;IACjC,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAE7B,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA,CAAC,gGAAgG;QAErI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAC,gCAAgC;QACnD,OAAO,IAAI,CAAA,CAAC,6BAA6B;IAC3C,CAAC,CAAC,CAAA;IAEF,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAhBY,QAAA,8BAA8B,kCAgB1C"}
@@ -26,16 +26,16 @@ const getAllEntitiesByUseOfContinuation = (apiCall_1, requestQuery_1, ...args_1)
26
26
  const requestHeader = Object.assign({}, (continuationToken !== null && continuationToken !== undefined && { continuationToken }));
27
27
  const result = yield apiCall(requestQuery, requestHeader);
28
28
  responseInfo = result.responseInfo;
29
- // TODO Benni If we get this error after a few continuations, what should happen? At least error log
29
+ // TODO If we get this error after a few continuations, what should happen? At least error log
30
30
  if (typeof result === 'string') {
31
31
  throw SearchError_1.SearchError.unknown(result);
32
32
  }
33
- // TODO Benni If we get this error after a few continuations, what should happen? At least error log
33
+ // TODO If we get this error after a few continuations, what should happen? At least error log
34
34
  if (result.type === 'error') {
35
35
  throw SearchError_1.SearchError.unknown(result.responseInfo.message);
36
36
  }
37
37
  if (result.searchMeta.pageResultSize === 0) {
38
- // TODO Benni: can we occur this on the last continuationToken? Check here whether we have allCourses at all or not
38
+ // TODO If we get this on the last continuationToken? Check here whether we have allCourses at all or not
39
39
  return { responseInfo, allEntities: [] };
40
40
  }
41
41
  allEntities = allEntities.concat(result.items);
@@ -1 +1 @@
1
- {"version":3,"file":"getAllEntitiesByUseOfContinuation.js","sourceRoot":"","sources":["../../src/utils/getAllEntitiesByUseOfContinuation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,sDAAkD;AAGlD,MAAM,4BAA4B,GAAG,IAAI,CAAA;AACzC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE/B,MAAM,iCAAiC,GAAG,uCAeH,EAAE,8EAX9C,OAK4C,EAC5C,YAAe,EACf,EACE,wBAAwB,GAAG,4BAA4B,EACvD,yBAAyB,GAAG,2BAA2B,MAChC,EAAE;;IAE3B,IAAI,iBAAiB,GAAuB,SAAS,CAAA;IACrD,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,WAAW,GAAQ,EAAE,CAAA;IACzB,IAAI,YAAgD,CAAA;IAEpD,GAAG,CAAC;QACF,IAAI,cAAc,IAAI,yBAAyB,EAAE,CAAC;YAChD,MAAM,yBAAW,CAAC,QAAQ,CAAC,sDAAsD,yBAAyB,EAAE,CAAC,CAAA;QAC/G,CAAC;QACD,MAAM,aAAa,qBACd,CAAC,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,SAAS,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC5F,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAEzD,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QAElC,oGAAoG;QACpG,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QAED,oGAAoG;QACpG,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC3C,mHAAmH;YACnH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;QAC1C,CAAC;QAED,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,WAAW,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAClD,MAAM,yBAAW,CAAC,QAAQ,CAAC,wCAAwC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,CAAC;QAED,iBAAiB,GAAG,MAAA,MAAM,CAAC,UAAU,CAAC,iBAAiB,mCAAI,SAAS,CAAA;QACpE,cAAc,EAAE,CAAA;IAClB,CAAC,QAAQ,iBAAiB,EAAC;IAE3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA;AACtC,CAAC,CAAA,CAAA;AA1DY,QAAA,iCAAiC,qCA0D7C"}
1
+ {"version":3,"file":"getAllEntitiesByUseOfContinuation.js","sourceRoot":"","sources":["../../src/utils/getAllEntitiesByUseOfContinuation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,sDAAkD;AAGlD,MAAM,4BAA4B,GAAG,IAAI,CAAA;AACzC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE/B,MAAM,iCAAiC,GAAG,uCAeH,EAAE,8EAX9C,OAK4C,EAC5C,YAAe,EACf,EACE,wBAAwB,GAAG,4BAA4B,EACvD,yBAAyB,GAAG,2BAA2B,MAChC,EAAE;;IAE3B,IAAI,iBAAiB,GAAuB,SAAS,CAAA;IACrD,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,WAAW,GAAQ,EAAE,CAAA;IACzB,IAAI,YAAgD,CAAA;IAEpD,GAAG,CAAC;QACF,IAAI,cAAc,IAAI,yBAAyB,EAAE,CAAC;YAChD,MAAM,yBAAW,CAAC,QAAQ,CAAC,sDAAsD,yBAAyB,EAAE,CAAC,CAAA;QAC/G,CAAC;QACD,MAAM,aAAa,qBACd,CAAC,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,SAAS,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC5F,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAEzD,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;QAElC,8FAA8F;QAC9F,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QAED,8FAA8F;QAC9F,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC3C,yGAAyG;YACzG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;QAC1C,CAAC;QAED,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,WAAW,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YAClD,MAAM,yBAAW,CAAC,QAAQ,CAAC,wCAAwC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,CAAC;QAED,iBAAiB,GAAG,MAAA,MAAM,CAAC,UAAU,CAAC,iBAAiB,mCAAI,SAAS,CAAA;QACpE,cAAc,EAAE,CAAA;IAClB,CAAC,QAAQ,iBAAiB,EAAC;IAE3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA;AACtC,CAAC,CAAA,CAAA;AA1DY,QAAA,iCAAiC,qCA0D7C"}