@kth/om-kursen-ladok-client 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/createApiClient.d.ts +3 -0
  3. package/dist/createApiClient.js +142 -0
  4. package/dist/createApiClient.js.map +1 -0
  5. package/dist/groupSearchResults.d.ts +14 -0
  6. package/dist/groupSearchResults.js +66 -0
  7. package/dist/groupSearchResults.js.map +1 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.js +18 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/mapCourse.d.ts +17 -0
  12. package/dist/mapCourse.js +35 -0
  13. package/dist/mapCourse.js.map +1 -0
  14. package/dist/mapCourseRound.d.ts +38 -0
  15. package/dist/mapCourseRound.js +53 -0
  16. package/dist/mapCourseRound.js.map +1 -0
  17. package/dist/mapSearchResult.d.ts +40 -0
  18. package/dist/mapSearchResult.js +63 -0
  19. package/dist/mapSearchResult.js.map +1 -0
  20. package/dist/mapUtbildningsplan.d.ts +17 -0
  21. package/dist/mapUtbildningsplan.js +23 -0
  22. package/dist/mapUtbildningsplan.js.map +1 -0
  23. package/dist/types/OmKursenLadokApiClient.d.ts +24 -0
  24. package/dist/types/OmKursenLadokApiClient.js +3 -0
  25. package/dist/types/OmKursenLadokApiClient.js.map +1 -0
  26. package/dist/utils/creditsUtil.d.ts +3 -0
  27. package/dist/utils/creditsUtil.js +21 -0
  28. package/dist/utils/creditsUtil.js.map +1 -0
  29. package/dist/utils/dateUtil.d.ts +4 -0
  30. package/dist/utils/dateUtil.js +24 -0
  31. package/dist/utils/dateUtil.js.map +1 -0
  32. package/dist/utils/index.d.ts +3 -0
  33. package/dist/utils/index.js +20 -0
  34. package/dist/utils/index.js.map +1 -0
  35. package/dist/utils/languageUtil.d.ts +29 -0
  36. package/dist/utils/languageUtil.js +46 -0
  37. package/dist/utils/languageUtil.js.map +1 -0
  38. package/dist/utils/periodUtil.d.ts +7 -0
  39. package/dist/utils/periodUtil.js +63 -0
  40. package/dist/utils/periodUtil.js.map +1 -0
  41. package/dist/utils/schoolUtil.d.ts +2 -0
  42. package/dist/utils/schoolUtil.js +12 -0
  43. package/dist/utils/schoolUtil.js.map +1 -0
  44. package/package.json +32 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # om-kursen-ladok-client
@@ -0,0 +1,3 @@
1
+ import { LadokMellanlagerApiClientConfig } from "@kth/ladok-mellanlager-client";
2
+ import { OmKursenLadokApiClient } from "./types/OmKursenLadokApiClient";
3
+ export declare const createApiClient: (config: LadokMellanlagerApiClientConfig) => OmKursenLadokApiClient;
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createApiClient = void 0;
13
+ const ladok_mellanlager_client_1 = require("@kth/ladok-mellanlager-client");
14
+ const groupSearchResults_1 = require("./groupSearchResults");
15
+ const mapCourse_1 = require("./mapCourse");
16
+ const mapCourseRound_1 = require("./mapCourseRound");
17
+ const mapSearchResult_1 = require("./mapSearchResult");
18
+ const utils_1 = require("./utils");
19
+ const mapUtbildningsplan_1 = require("./mapUtbildningsplan");
20
+ const filterAndMapCourseRounds = (response, language) => {
21
+ if (response.type === "error") {
22
+ throw new Error(`API error: ${response.responseInfo.message}`);
23
+ }
24
+ return response.items
25
+ .map((x) => (0, mapCourseRound_1.mapCourseRound)(x, language))
26
+ .filter((x) => x !== undefined)
27
+ .filter((x) => { var _a; return !((_a = x.tillfalleskod) === null || _a === void 0 ? void 0 : _a.startsWith("OM")); } // TODO: "om-tillfällen" shouldn't be displayed on "Om kursen" - I've asked Sussane if we chould have solution an other solution than the tillfälleskod for this.
28
+ );
29
+ };
30
+ const createApiClient = (config) => {
31
+ const ladokClient = (0, ladok_mellanlager_client_1.createClient)(config);
32
+ return {
33
+ getLatestCourseVersion: (courseCode, language) => __awaiter(void 0, void 0, void 0, function* () {
34
+ const result = yield ladokClient.sokUtbildningsInstans({
35
+ kodEllerBenamning: courseCode,
36
+ striktKod: "true",
37
+ });
38
+ if (result.type === "error") {
39
+ return Object.assign({}, result.responseInfo);
40
+ }
41
+ if (result.searchMeta.pageResultSize === 0) {
42
+ return Object.assign(Object.assign({}, result.responseInfo), { statusCode: 404, message: "not found" });
43
+ }
44
+ const course = result.items
45
+ .sort((a, b) => parseInt(b.index.versionsnummer) - parseInt(a.index.versionsnummer))
46
+ .at(0);
47
+ const mappedCourse = (0, mapCourse_1.mapCourse)(course, language);
48
+ return Object.assign(Object.assign({}, result.responseInfo), mappedCourse);
49
+ }),
50
+ searchCourses: (searchParams, language) => __awaiter(void 0, void 0, void 0, function* () {
51
+ var _a;
52
+ const now = new Date();
53
+ const defaultPeriod = (0, utils_1.getPeriodCodeForDate)(now);
54
+ const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad, } = searchParams;
55
+ if (!avvecklad &&
56
+ !kodEllerBenamning &&
57
+ !organisation &&
58
+ !sprak &&
59
+ !startPeriod &&
60
+ !utbildningsniva) {
61
+ return "No query restriction was specified";
62
+ }
63
+ if (kodEllerBenamning && kodEllerBenamning.length < 3) {
64
+ return { errorCode: "errorKodEllerBenamning" };
65
+ }
66
+ let continuationToken = undefined;
67
+ let allCourses = [];
68
+ const MAX_ITERATIONS = 4;
69
+ let iterationCount = 0;
70
+ do {
71
+ if (iterationCount >= MAX_ITERATIONS) {
72
+ return { errorCode: "search-error-overflow" };
73
+ }
74
+ const requestObject = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (kodEllerBenamning
75
+ ? { kodEllerBenamning }
76
+ : { kodEllerBenamning: "*" })), (!startPeriod && { terminPeriodStart: defaultPeriod })), (startPeriod && { startPeriod: startPeriod[0] })), (utbildningsniva && { utbildningsniva: utbildningsniva[0] })), (organisation && { organisation })), (sprak && { sprak })), (avvecklad && { avvecklad })), (continuationToken !== null &&
77
+ continuationToken !== undefined && { continuationToken }));
78
+ const result = yield ladokClient.sokKursTillfalle(requestObject);
79
+ if (typeof result === "string") {
80
+ return result;
81
+ }
82
+ if (result.type === "error") {
83
+ return {
84
+ errorCode: "errorUnknown",
85
+ };
86
+ }
87
+ if (result.searchMeta.pageResultSize === 0) {
88
+ return { searchHits: [] };
89
+ }
90
+ const mappedCourses = result.items.map((course) => (0, mapSearchResult_1.mapCourseResult)(course, language));
91
+ const groupedCourses = (0, groupSearchResults_1.groupSearchResults)(mappedCourses, !Boolean(startPeriod));
92
+ allCourses = allCourses.concat(groupedCourses);
93
+ if (allCourses.length > 250) {
94
+ return {
95
+ errorCode: "search-error-overflow",
96
+ searchHits: allCourses,
97
+ };
98
+ }
99
+ continuationToken = (_a = result.searchMeta.continuationToken) !== null && _a !== void 0 ? _a : undefined;
100
+ iterationCount++;
101
+ } while (continuationToken);
102
+ return { searchHits: allCourses };
103
+ }),
104
+ getActiveCourseRounds: (courseCode, language) => __awaiter(void 0, void 0, void 0, function* () {
105
+ const now = new Date();
106
+ const period = (0, utils_1.getPeriodCodeForDate)(now); // TODO: we actually want course that are ongoing now and not just starting current semster -> Ask Ladok for filter on Undervisningsdatum? And alternative solution is to search for a couple of semester back and filter ourself after mapping.
107
+ const result = yield ladokClient.sokKursTillfalle({
108
+ kodEllerBenamning: courseCode,
109
+ terminKodStart: period,
110
+ striktKod: "true",
111
+ });
112
+ return filterAndMapCourseRounds(result, language);
113
+ }),
114
+ getCourseRoundsFromPeriod: (courseCode, fromPeriod, language) => __awaiter(void 0, void 0, void 0, function* () {
115
+ const result = yield ladokClient.sokKursTillfalle({
116
+ kodEllerBenamning: courseCode,
117
+ terminKodStart: fromPeriod,
118
+ striktKod: "true",
119
+ });
120
+ return filterAndMapCourseRounds(result, language);
121
+ }),
122
+ getCourseRoundsForExactStartPeriod: (courseCode, startPeriod, language) => __awaiter(void 0, void 0, void 0, function* () {
123
+ const result = yield ladokClient.sokKursTillfalle({
124
+ kodEllerBenamning: courseCode,
125
+ startPeriod: startPeriod,
126
+ striktKod: "true",
127
+ });
128
+ return filterAndMapCourseRounds(result, language);
129
+ }),
130
+ getUtbildningsPlan: (uid, language) => __awaiter(void 0, void 0, void 0, function* () {
131
+ const result = yield ladokClient.planForUtbildningUtbildningsinstans(uid);
132
+ if (result.type === "success") {
133
+ const plan = result.data.PlanerForUtbildning.filter((x) => ["BESLUTAD", "EJ_BESLUTAD"].includes(x.Tillstand)).at(0); // TODO: implement logic for selecting correct editions.
134
+ if (!plan)
135
+ return undefined;
136
+ return (0, mapUtbildningsplan_1.mapUtbildningsplan)(plan, language);
137
+ }
138
+ }),
139
+ };
140
+ };
141
+ exports.createApiClient = createApiClient;
142
+ //# sourceMappingURL=createApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createApiClient.js","sourceRoot":"","sources":["../src/createApiClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { CourseSearchResult, SearchResultPeriod } from "./mapSearchResult";
2
+ import { TranslatedGrunddata, TranslatedUtbildningstyp } from "./utils";
3
+ export type GroupedCourseSearchResult = Omit<CourseSearchResult, "studieort" | "undervisningssprak" | "utbildningstyp" | "studietakt" | "startperiod" | "period"> & {
4
+ studieort: TranslatedGrunddata[];
5
+ undervisningssprak: TranslatedGrunddata[];
6
+ utbildningstyp: TranslatedUtbildningstyp[];
7
+ studietakt: TranslatedGrunddata[];
8
+ startperiod: {
9
+ code: string;
10
+ inDigits: string | null;
11
+ }[];
12
+ period: SearchResultPeriod[];
13
+ };
14
+ export declare const groupSearchResults: (courseSearchResults: CourseSearchResult[], filterPeriod?: boolean) => GroupedCourseSearchResult[] | [];
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupSearchResults = void 0;
4
+ /**
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.
20
+ *
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) => {
25
+ var _a, _b, _c, _d;
26
+ 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 : ""}`;
27
+ });
28
+ /**
29
+ * Adds an object to the array if it is unique based on its 'code' property.
30
+ *
31
+ * @param arr array of objects with a 'code' property
32
+ * @param obj object to possibly add
33
+ */
34
+ const addUniqueObjectByCode = (arr, obj) => addUniqueObjectWithCallback(arr, obj, (item) => item.code);
35
+ const groupSearchResults = (courseSearchResults, filterPeriod = false) => {
36
+ const groupedResults = {};
37
+ courseSearchResults.forEach((searchResult) => {
38
+ var _a;
39
+ const key = `${searchResult.kod}-${filterPeriod ? "" : (_a = searchResult.startperiod) === null || _a === void 0 ? void 0 : _a.code}`;
40
+ if (!groupedResults[key]) {
41
+ groupedResults[key] = Object.assign(Object.assign({}, searchResult), { studieort: [], studietakt: [], undervisningssprak: [], utbildningstyp: [], startperiod: [], period: [] });
42
+ }
43
+ // Add unique objects by code to their respective arrays
44
+ if (searchResult.studieort) {
45
+ addUniqueObjectByCode(groupedResults[key].studieort, searchResult.studieort);
46
+ }
47
+ if (searchResult.studietakt) {
48
+ addUniqueObjectByCode(groupedResults[key].studietakt, searchResult.studietakt);
49
+ }
50
+ if (searchResult.undervisningssprak) {
51
+ addUniqueObjectByCode(groupedResults[key].undervisningssprak, searchResult.undervisningssprak);
52
+ }
53
+ if (searchResult.utbildningstyp) {
54
+ addUniqueObjectByCode(groupedResults[key].utbildningstyp, searchResult.utbildningstyp);
55
+ }
56
+ if (searchResult.startperiod) {
57
+ addUniqueObjectByCode(groupedResults[key].startperiod, searchResult.startperiod);
58
+ }
59
+ if (searchResult.period) {
60
+ addUniquePeriod(groupedResults[key].period, searchResult.period);
61
+ }
62
+ });
63
+ return Object.values(groupedResults);
64
+ };
65
+ exports.groupSearchResults = groupSearchResults;
66
+ //# sourceMappingURL=groupSearchResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupSearchResults.js","sourceRoot":"","sources":["../src/groupSearchResults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./createApiClient";
package/dist/index.js ADDED
@@ -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("./createApiClient"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -0,0 +1,17 @@
1
+ import { SokUtbildningsInstansItem } from "@kth/ladok-mellanlager-client";
2
+ import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from "./utils/languageUtil";
3
+ export type Course = {
4
+ versionsnummer: string;
5
+ kod: string;
6
+ benamning: string;
7
+ omfattning: {
8
+ number: string;
9
+ formattedWithUnit: string;
10
+ };
11
+ organisation?: TranslatedOrganisation;
12
+ utbildningstyp?: TranslatedUtbildningstyp;
13
+ betygsskala?: TranslatedGrunddata;
14
+ huvudomraden?: TranslatedGrunddata[];
15
+ schoolCode: string;
16
+ };
17
+ export declare const mapCourse: (course: SokUtbildningsInstansItem, language: Language) => Course;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapCourse = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const languageUtil_1 = require("./utils/languageUtil");
6
+ const creditsUtil_1 = require("./utils/creditsUtil");
7
+ const schoolUtil_1 = require("./utils/schoolUtil");
8
+ const mapCourse = (course, language) => {
9
+ const benamning = {
10
+ sv: course.index["utbildning.attribut.svensk.benamning"],
11
+ en: course.index["utbildning.attribut.engelsk.benamning"],
12
+ };
13
+ const betygsskala = (0, ladok_attributvarde_utils_1.extractGrunddata)(course.Attributvarden, "utbildning.attribut.betygsskala");
14
+ const huvudomraden = (0, ladok_attributvarde_utils_1.extractHuvudomraden)(course.Attributvarden);
15
+ const organisation = (0, ladok_attributvarde_utils_1.extractOrganisation)(course.Attributvarden);
16
+ const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(course.Attributvarden);
17
+ const schoolCode = (0, schoolUtil_1.extractSchoolCodeFromOrganisation)(organisation, language);
18
+ const omfattning = course.index["utbildning.attribut.omfattning"];
19
+ return {
20
+ versionsnummer: course.index.versionsnummer,
21
+ kod: course.index["utbildning.attribut.kod"],
22
+ benamning: benamning[language],
23
+ omfattning: {
24
+ number: omfattning,
25
+ formattedWithUnit: (0, creditsUtil_1.formatCreditsWithUnitLabel)(omfattning, utbildningstyp, language),
26
+ },
27
+ organisation: organisation && (0, languageUtil_1.translateOrganisation)(organisation, language),
28
+ utbildningstyp: utbildningstyp && (0, languageUtil_1.translateUtbildningstyp)(utbildningstyp, language),
29
+ betygsskala: betygsskala && (0, languageUtil_1.translateGrunddata)(betygsskala, language),
30
+ huvudomraden: huvudomraden === null || huvudomraden === void 0 ? void 0 : huvudomraden.map((x) => (0, languageUtil_1.translateGrunddata)(x, language)),
31
+ schoolCode,
32
+ };
33
+ };
34
+ exports.mapCourse = mapCourse;
35
+ //# sourceMappingURL=mapCourse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCourse.js","sourceRoot":"","sources":["../src/mapCourse.ts"],"names":[],"mappings":";;;AAAA,8EAKwC;AAGxC,uDAQ8B;AAC9B,qDAAiE;AACjE,mDAAuE;AAiBhE,MAAM,SAAS,GAAG,CACvB,MAAiC,EACjC,QAAkB,EACV,EAAE;IACV,MAAM,SAAS,GAAG;QAChB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC;QACxD,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC;KAC1D,CAAC;IACF,MAAM,WAAW,GAAG,IAAA,4CAAgB,EAClC,MAAM,CAAC,cAAc,EACrB,iCAAiC,CAClC,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,+CAAmB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAA,+CAAmB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,IAAA,iDAAqB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAA,8CAAiC,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE7E,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAElE,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;QAC3C,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC;QAC5C,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC;QAC9B,UAAU,EAAE;YACV,MAAM,EAAE,UAAU;YAClB,iBAAiB,EAAE,IAAA,wCAA0B,EAC3C,UAAU,EACV,cAAc,EACd,QAAQ,CACT;SACF;QACD,YAAY,EAAE,YAAY,IAAI,IAAA,oCAAqB,EAAC,YAAY,EAAE,QAAQ,CAAC;QAC3E,cAAc,EACZ,cAAc,IAAI,IAAA,sCAAuB,EAAC,cAAc,EAAE,QAAQ,CAAC;QACrE,WAAW,EAAE,WAAW,IAAI,IAAA,iCAAkB,EAAC,WAAW,EAAE,QAAQ,CAAC;QACrE,YAAY,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iCAAkB,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvE,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,SAAS,aAuCpB"}
@@ -0,0 +1,38 @@
1
+ import { LadokStatus } from "@kth/ladok-attributvarde-utils";
2
+ import { SokKursTillfalleItem } from "@kth/ladok-mellanlager-client";
3
+ import { Language, TranslatedGrunddata } from "./utils";
4
+ export type CourseRound = {
5
+ uid: string;
6
+ status?: LadokStatus;
7
+ installt: boolean;
8
+ tillfalleskod?: string;
9
+ startperiod?: {
10
+ code: string;
11
+ inDigits: string | null;
12
+ };
13
+ utbildningstillfalleskod?: string;
14
+ forstaUndervisningsdatum?: {
15
+ date: string;
16
+ year: number;
17
+ week: number;
18
+ };
19
+ sistaUndervisningsdatum?: {
20
+ date: string;
21
+ year: number;
22
+ week: number;
23
+ };
24
+ malgrupp?: string;
25
+ kortnamn?: string;
26
+ urvalskriterier?: string;
27
+ undervisningsform?: TranslatedGrunddata;
28
+ undervisningstid?: TranslatedGrunddata;
29
+ undervisningssprak?: TranslatedGrunddata;
30
+ studieort?: TranslatedGrunddata;
31
+ studietakt?: TranslatedGrunddata;
32
+ finansieringsform?: TranslatedGrunddata;
33
+ utbildningsplatser?: number;
34
+ minantalplatser?: number;
35
+ admissionLinkUrl?: string;
36
+ schemaUrl?: string;
37
+ };
38
+ export declare const mapCourseRound: (item: SokKursTillfalleItem, language: Language) => CourseRound;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapCourseRound = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const utils_1 = require("./utils");
6
+ const mapCourseRound = (item, language) => {
7
+ var _a, _b, _c, _d, _e;
8
+ const attributeValues = item.Attributvarden;
9
+ const malgrupp = {
10
+ sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.malgrupp.sv", "html"),
11
+ en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.malgrupp.en", "html"),
12
+ };
13
+ const kortnamn = {
14
+ sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.kortnamn.sv"),
15
+ en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.kortnamn.en"),
16
+ };
17
+ const urvalskriterier = {
18
+ sv: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.urvalskriterier_sv"),
19
+ en: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.lokalt.attribut.29.urvalskriterier_en"),
20
+ };
21
+ const undervisningsform = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningsform");
22
+ const undervisningstid = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningstid");
23
+ const undervisningssprak = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.undervisningssprak");
24
+ const studieort = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.studieort");
25
+ const finansieringsform = (0, ladok_attributvarde_utils_1.extractGrunddata)(attributeValues, "utbildning.attribut.finansieringsform");
26
+ const studietakt = (0, ladok_attributvarde_utils_1.extractStudietakt)(attributeValues);
27
+ return {
28
+ uid: item.tillfalle_uid,
29
+ status: (0, ladok_attributvarde_utils_1.extractLadokStatus)(item.Attributvarden),
30
+ installt: (_a = (0, ladok_attributvarde_utils_1.extractBoolean)(item.Attributvarden, "installt")) !== null && _a !== void 0 ? _a : false,
31
+ tillfalleskod: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.attribut.utbildningstillfalleskod"),
32
+ startperiod: {
33
+ code: item.index["utbildning.attribut.startperiod.kod"],
34
+ inDigits: (0, utils_1.transformPeriodInDigits)(item.index["utbildning.attribut.startperiod.kod"]),
35
+ },
36
+ utbildningstillfalleskod: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, "utbildning.attribut.utbildningstillfalleskod"),
37
+ forstaUndervisningsdatum: Object.assign({ date: (_b = item.Tillfallesperioder.at(0)) === null || _b === void 0 ? void 0 : _b.ForstaUndervisningsdatum }, (0, utils_1.getYearAndWeek)((_c = item.Tillfallesperioder.at(0)) === null || _c === void 0 ? void 0 : _c.ForstaUndervisningsdatum)),
38
+ sistaUndervisningsdatum: Object.assign({ date: (_d = item.Tillfallesperioder.at(-1)) === null || _d === void 0 ? void 0 : _d.SistaUndervisningsdatum }, (0, utils_1.getYearAndWeek)((_e = item.Tillfallesperioder.at(-1)) === null || _e === void 0 ? void 0 : _e.SistaUndervisningsdatum)),
39
+ malgrupp: malgrupp[language],
40
+ kortnamn: kortnamn[language],
41
+ urvalskriterier: urvalskriterier[language],
42
+ undervisningsform: undervisningsform && (0, utils_1.translateGrunddata)(undervisningsform, language),
43
+ undervisningstid: undervisningstid && (0, utils_1.translateGrunddata)(undervisningstid, language),
44
+ undervisningssprak: undervisningssprak && (0, utils_1.translateGrunddata)(undervisningssprak, language),
45
+ studieort: studieort && (0, utils_1.translateGrunddata)(studieort, language),
46
+ studietakt: studietakt && (0, utils_1.translateStudietakt)(studietakt, language),
47
+ finansieringsform: finansieringsform && (0, utils_1.translateGrunddata)(finansieringsform, language),
48
+ minantalplatser: (0, ladok_attributvarde_utils_1.extractInteger)(attributeValues, "utbildning.lokalt.attribut.29.minantalplatser"),
49
+ utbildningsplatser: (0, ladok_attributvarde_utils_1.extractUtbildningsplatser)(attributeValues),
50
+ };
51
+ };
52
+ exports.mapCourseRound = mapCourseRound;
53
+ //# sourceMappingURL=mapCourseRound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCourseRound.js","sourceRoot":"","sources":["../src/mapCourseRound.ts"],"names":[],"mappings":";;;AAAA,8EASwC;AAExC,mCAOiB;AA0CV,MAAM,cAAc,GAAG,CAC5B,IAA0B,EAC1B,QAAkB,EACL,EAAE;;IACf,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;IAE5C,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,2CAA2C,EAC3C,MAAM,CACP;QACD,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,2CAA2C,EAC3C,MAAM,CACP;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,2CAA2C,CAC5C;QACD,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,2CAA2C,CAC5C;KACF,CAAC;IAEF,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,kDAAkD,CACnD;QACD,EAAE,EAAE,IAAA,yCAAa,EACf,eAAe,EACf,kDAAkD,CACnD;KACF,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,4CAAgB,EACxC,eAAe,EACf,uCAAuC,CACxC,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAA,4CAAgB,EACvC,eAAe,EACf,sCAAsC,CACvC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,4CAAgB,EACzC,eAAe,EACf,wCAAwC,CACzC,CAAC;IACF,MAAM,SAAS,GAAG,IAAA,4CAAgB,EAChC,eAAe,EACf,+BAA+B,CAChC,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAA,4CAAgB,EACxC,eAAe,EACf,uCAAuC,CACxC,CAAC;IACF,MAAM,UAAU,GAAG,IAAA,6CAAiB,EAAC,eAAe,CAAC,CAAC;IAEtD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,aAAa;QACvB,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,EAC1B,eAAe,EACf,8CAA8C,CAC/C;QACD,WAAW,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC;YACvD,QAAQ,EAAE,IAAA,+BAAuB,EAC/B,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAClD;SACF;QACD,wBAAwB,EAAE,IAAA,yCAAa,EACrC,eAAe,EACf,8CAA8C,CAC/C;QACD,wBAAwB,kBACtB,IAAI,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,0CAAE,wBAAkC,IACpE,IAAA,sBAAc,EACf,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,0CAAE,wBAAkC,CAClE,CACF;QACD,uBAAuB,kBACrB,IAAI,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,uBAAiC,IACpE,IAAA,sBAAc,EACf,MAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,uBAAiC,CAClE,CACF;QACD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAC5B,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;QAE1C,iBAAiB,EACf,iBAAiB,IAAI,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,QAAQ,CAAC;QACtE,gBAAgB,EACd,gBAAgB,IAAI,IAAA,0BAAkB,EAAC,gBAAgB,EAAE,QAAQ,CAAC;QACpE,kBAAkB,EAChB,kBAAkB,IAAI,IAAA,0BAAkB,EAAC,kBAAkB,EAAE,QAAQ,CAAC;QACxE,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,EACf,iBAAiB,IAAI,IAAA,0BAAkB,EAAC,iBAAiB,EAAE,QAAQ,CAAC;QAEtE,eAAe,EAAE,IAAA,0CAAc,EAC7B,eAAe,EACf,+CAA+C,CAChD;QACD,kBAAkB,EAAE,IAAA,qDAAyB,EAAC,eAAe,CAAC;KAC/D,CAAC;AACJ,CAAC,CAAC;AAlHW,QAAA,cAAc,kBAkHzB"}
@@ -0,0 +1,40 @@
1
+ import { SokKursTillfalleItem } from "@kth/ladok-mellanlager-client";
2
+ import { Language, TranslatedGrunddata, TranslatedOrganisation, TranslatedUtbildningstyp } from "./utils/languageUtil";
3
+ export type SearchResultPeriod = {
4
+ startperiod: string;
5
+ forstaUndervisningsdatum?: {
6
+ date: string;
7
+ period?: number;
8
+ year: number;
9
+ week: number;
10
+ };
11
+ sistaUndervisningsdatum?: {
12
+ date: string;
13
+ period?: number;
14
+ year: number;
15
+ week: number;
16
+ };
17
+ tillfallesperioderNummer: number;
18
+ };
19
+ export type CourseSearchResult = {
20
+ versionsnummer: string;
21
+ kod: string;
22
+ benamning: string;
23
+ omfattning: {
24
+ number: string;
25
+ formattedWithUnit: string;
26
+ };
27
+ utbildningstyp?: TranslatedUtbildningstyp;
28
+ studieort?: TranslatedGrunddata;
29
+ organisation?: TranslatedOrganisation;
30
+ undervisningssprak?: TranslatedGrunddata;
31
+ studietakt?: TranslatedGrunddata;
32
+ schoolCode: string;
33
+ malgrupp?: string;
34
+ startperiod?: {
35
+ code: string;
36
+ inDigits: string | null;
37
+ };
38
+ period?: SearchResultPeriod;
39
+ };
40
+ export declare const mapCourseResult: (courseRound: SokKursTillfalleItem, language: Language) => CourseSearchResult;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapCourseResult = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ const languageUtil_1 = require("./utils/languageUtil");
6
+ const utils_1 = require("./utils");
7
+ const creditsUtil_1 = require("./utils/creditsUtil");
8
+ const schoolUtil_1 = require("./utils/schoolUtil");
9
+ const mapCourseResult = (courseRound, language) => {
10
+ var _a, _b, _c, _d, _e, _f, _g;
11
+ const benamning = {
12
+ sv: courseRound.index["utbildning.attribut.svensk.benamning"],
13
+ en: courseRound.index["utbildning.attribut.engelsk.benamning"],
14
+ };
15
+ const organisation = (0, ladok_attributvarde_utils_1.extractOrganisation)(courseRound.Attributvarden);
16
+ const utbildningstyp = (0, ladok_attributvarde_utils_1.extractUtbildningstyp)(((_a = courseRound.instans) === null || _a === void 0 ? void 0 : _a.Attributvarden) || courseRound.Attributvarden);
17
+ const studieort = (0, ladok_attributvarde_utils_1.extractGrunddata)(courseRound.Attributvarden, "utbildning.attribut.studieort");
18
+ const undervisningssprak = (0, ladok_attributvarde_utils_1.extractGrunddata)(courseRound.Attributvarden, "utbildning.attribut.undervisningssprak");
19
+ const malgrupp = {
20
+ sv: (0, ladok_attributvarde_utils_1.extractString)(courseRound.Attributvarden, "utbildning.lokalt.attribut.29.malgrupp.sv", "html"),
21
+ en: (0, ladok_attributvarde_utils_1.extractString)(courseRound.Attributvarden, "utbildning.lokalt.attribut.29.malgrupp.en", "html"),
22
+ };
23
+ const startperiod = (0, ladok_attributvarde_utils_1.extractStartPeriod)(courseRound.Attributvarden);
24
+ const studietakt = (0, ladok_attributvarde_utils_1.extractStudietakt)(courseRound.Attributvarden);
25
+ const schoolCode = (0, schoolUtil_1.extractSchoolCodeFromOrganisation)(organisation, language);
26
+ const omfattning = courseRound.index["utbildning.attribut.omfattning"];
27
+ return {
28
+ versionsnummer: courseRound.index.versionsnummer,
29
+ kod: courseRound.index["utbildning.attribut.kod"],
30
+ benamning: benamning[language],
31
+ omfattning: {
32
+ number: omfattning,
33
+ formattedWithUnit: (0, creditsUtil_1.formatCreditsWithUnitLabel)(omfattning, utbildningstyp, language),
34
+ },
35
+ organisation: organisation && (0, languageUtil_1.translateOrganisation)(organisation, language),
36
+ studieort: studieort && (0, languageUtil_1.translateGrunddata)(studieort, language),
37
+ utbildningstyp: utbildningstyp && (0, languageUtil_1.translateUtbildningstyp)(utbildningstyp, language),
38
+ undervisningssprak: undervisningssprak && (0, languageUtil_1.translateGrunddata)(undervisningssprak, language),
39
+ studietakt: studietakt && (0, languageUtil_1.translateStudietakt)(studietakt, language),
40
+ malgrupp: malgrupp[language],
41
+ startperiod: startperiod && {
42
+ code: startperiod.code,
43
+ inDigits: (0, utils_1.transformPeriodInDigits)(startperiod.code),
44
+ },
45
+ period: {
46
+ startperiod: (startperiod === null || startperiod === void 0 ? void 0 : startperiod.code) || "",
47
+ forstaUndervisningsdatum: Object.assign({ date: (_b = courseRound.Tillfallesperioder.at(0)) === null || _b === void 0 ? void 0 : _b.ForstaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_c = courseRound.Tillfallesperioder.at(0)) === null || _c === void 0 ? void 0 : _c.ForstaUndervisningsdatum), {
48
+ code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
49
+ startDate: startperiod && new Date(startperiod.startDay),
50
+ endDate: startperiod && new Date(startperiod.endDay),
51
+ }, "start") }, (0, utils_1.getYearAndWeek)((_d = courseRound.Tillfallesperioder.at(0)) === null || _d === void 0 ? void 0 : _d.ForstaUndervisningsdatum)),
52
+ sistaUndervisningsdatum: Object.assign({ date: (_e = courseRound.Tillfallesperioder.at(-1)) === null || _e === void 0 ? void 0 : _e.SistaUndervisningsdatum, period: (0, utils_1.getKthStudyPeriod)(new Date((_f = courseRound.Tillfallesperioder.at(-1)) === null || _f === void 0 ? void 0 : _f.SistaUndervisningsdatum), {
53
+ code: startperiod === null || startperiod === void 0 ? void 0 : startperiod.code,
54
+ startDate: startperiod && new Date(startperiod.startDay),
55
+ endDate: startperiod && new Date(startperiod.endDay),
56
+ }, "end") }, (0, utils_1.getYearAndWeek)((_g = courseRound.Tillfallesperioder.at(-1)) === null || _g === void 0 ? void 0 : _g.SistaUndervisningsdatum)),
57
+ tillfallesperioderNummer: courseRound.Tillfallesperioder.length,
58
+ },
59
+ schoolCode,
60
+ };
61
+ };
62
+ exports.mapCourseResult = mapCourseResult;
63
+ //# sourceMappingURL=mapSearchResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapSearchResult.js","sourceRoot":"","sources":["../src/mapSearchResult.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { PlanForUtbildning } from "@kth/ladok-mellanlager-client";
2
+ import { Language } from "./utils/languageUtil";
3
+ export type Utbildningsplan = {
4
+ uid: string;
5
+ courseList: {
6
+ year1: string | undefined;
7
+ year2: string | undefined;
8
+ year3: string | undefined;
9
+ year4: string | undefined;
10
+ year5: string | undefined;
11
+ };
12
+ };
13
+ /**
14
+ * TODO: This a PoC for using course list in old programme syllabuses (utbildningsplan).
15
+ * This will be extended with more attributes later.
16
+ */
17
+ export declare const mapUtbildningsplan: (planForUtbildning: PlanForUtbildning, language: Language) => Utbildningsplan;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapUtbildningsplan = void 0;
4
+ const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
5
+ /**
6
+ * TODO: This a PoC for using course list in old programme syllabuses (utbildningsplan).
7
+ * This will be extended with more attributes later.
8
+ */
9
+ const mapUtbildningsplan = (planForUtbildning, language) => {
10
+ const attributeValues = planForUtbildning.AktuellaAttributvarden;
11
+ return {
12
+ uid: planForUtbildning.Uid,
13
+ courseList: {
14
+ year1: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar1.${language}`, "markdown"),
15
+ year2: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar2.${language}`, "markdown"),
16
+ year3: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar3.${language}`, "markdown"),
17
+ year4: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar4.${language}`, "markdown"),
18
+ year5: (0, ladok_attributvarde_utils_1.extractString)(attributeValues, `utbildning.lokalt.attribut.29.kurslistaar5.${language}`, "markdown"),
19
+ },
20
+ };
21
+ };
22
+ exports.mapUtbildningsplan = mapUtbildningsplan;
23
+ //# sourceMappingURL=mapUtbildningsplan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapUtbildningsplan.js","sourceRoot":"","sources":["../src/mapUtbildningsplan.ts"],"names":[],"mappings":";;;AAKA,8EAA+D;AAa/D;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAChC,iBAAoC,EACpC,QAAkB,EACD,EAAE;IACnB,MAAM,eAAe,GAAG,iBAAiB,CAAC,sBAAsB,CAAC;IAEjE,OAAO;QACL,GAAG,EAAE,iBAAiB,CAAC,GAAG;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;YACD,KAAK,EAAE,IAAA,yCAAa,EAClB,eAAe,EACf,8CAA8C,QAAQ,EAAE,EACxD,UAAU,CACX;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,kBAAkB,sBAoC7B"}
@@ -0,0 +1,24 @@
1
+ import { ResponseInfo } from "@kth/ladok-mellanlager-client";
2
+ import { GroupedCourseSearchResult } from "../groupSearchResults";
3
+ import { Course } from "../mapCourse";
4
+ import { CourseRound } from "../mapCourseRound";
5
+ import { Language } from "../utils";
6
+ import { Utbildningsplan } from "../mapUtbildningsplan";
7
+ export type OmKursenLadokApiClient = {
8
+ getLatestCourseVersion: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
9
+ searchCourses: (searchParams: {
10
+ kodEllerBenamning?: string;
11
+ organisation?: string;
12
+ sprak?: string;
13
+ avvecklad?: string;
14
+ startPeriod?: string[];
15
+ utbildningsniva?: string[];
16
+ }, language: Language) => Promise<{
17
+ searchHits?: GroupedCourseSearchResult[] | [];
18
+ errorCode?: string;
19
+ } | string>;
20
+ getActiveCourseRounds: (courseCode: string, language: Language) => Promise<CourseRound[] | undefined>;
21
+ getCourseRoundsFromPeriod: (courseCode: string, fromPeriod: string, language: Language) => Promise<CourseRound[] | undefined>;
22
+ getCourseRoundsForExactStartPeriod: (courseCode: string, startPeriod: string, language: Language) => Promise<CourseRound[] | undefined>;
23
+ getUtbildningsPlan: (uid: string, language: Language) => Promise<Utbildningsplan | undefined>;
24
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=OmKursenLadokApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OmKursenLadokApiClient.js","sourceRoot":"","sources":["../../src/types/OmKursenLadokApiClient.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { Utbildningstyp } from "@kth/ladok-attributvarde-utils";
2
+ import { Language } from "./languageUtil";
3
+ export declare const formatCreditsWithUnitLabel: (omfattning: string, utbildningstyp: Utbildningstyp | undefined, language: Language) => string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatCreditsWithUnitLabel = void 0;
4
+ const getCreditsUnit = (utbildningstyp, language) => {
5
+ switch (utbildningstyp.creditsUnit.code) {
6
+ case "HP":
7
+ return language === "sv" ? "hp" : "credits";
8
+ case "FUP":
9
+ return "fup";
10
+ default:
11
+ return utbildningstyp.creditsUnit.code.toLocaleLowerCase();
12
+ }
13
+ };
14
+ const formatCredits = (omfattning, language) => language === "sv" ? omfattning.replace(".", ",") : omfattning;
15
+ const formatCreditsWithUnitLabel = (omfattning, utbildningstyp, language) => {
16
+ const credits = formatCredits(omfattning, language);
17
+ const unit = utbildningstyp ? getCreditsUnit(utbildningstyp, language) : "";
18
+ return `${credits} ${unit}`;
19
+ };
20
+ exports.formatCreditsWithUnitLabel = formatCreditsWithUnitLabel;
21
+ //# sourceMappingURL=creditsUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creditsUtil.js","sourceRoot":"","sources":["../../src/utils/creditsUtil.ts"],"names":[],"mappings":";;;AAGA,MAAM,cAAc,GAAG,CAAC,cAA8B,EAAE,QAAkB,EAAE,EAAE;IAC5E,QAAQ,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxC,KAAK,IAAI;YACP,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,QAAkB,EAAE,EAAE,CAC/D,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAEzD,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,cAA0C,EAC1C,QAAkB,EAClB,EAAE;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC"}
@@ -0,0 +1,4 @@
1
+ export declare const getYearAndWeek: (dateString: string) => {
2
+ year: number;
3
+ week: number;
4
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getYearAndWeek = void 0;
4
+ const getYearAndWeek = (dateString) => {
5
+ const date = new Date(dateString);
6
+ const year = date.getFullYear();
7
+ const getWeekNumber = (date) => {
8
+ const tempDate = new Date(date.getTime());
9
+ // Set date to nearest Thursday (It is a standard)
10
+ tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7));
11
+ // Start of the year
12
+ const firstDayOfYear = new Date(Date.UTC(tempDate.getUTCFullYear(), 0, 1));
13
+ // Calculate full weeks to nearest Thursday
14
+ const weekNumber = Math.ceil(((tempDate.getTime() - firstDayOfYear.getTime()) / 86400000 + 1) / 7);
15
+ return weekNumber;
16
+ };
17
+ const week = getWeekNumber(date);
18
+ return {
19
+ year: year,
20
+ week: week,
21
+ };
22
+ };
23
+ exports.getYearAndWeek = getYearAndWeek;
24
+ //# sourceMappingURL=dateUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtil.js","sourceRoot":"","sources":["../../src/utils/dateUtil.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAC5B,UAAkB,EACc,EAAE;IAClC,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,GAAW,IAAI,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,aAAa,GAAG,CAAC,IAAU,EAAU,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE1C,kDAAkD;QAClD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3E,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CACrE,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAW,aAAa,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,cAAc,kBA6BzB"}
@@ -0,0 +1,3 @@
1
+ export * from "./dateUtil";
2
+ export * from "./languageUtil";
3
+ export * from "./periodUtil";
@@ -0,0 +1,20 @@
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("./dateUtil"), exports);
18
+ __exportStar(require("./languageUtil"), exports);
19
+ __exportStar(require("./periodUtil"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,+CAA6B"}
@@ -0,0 +1,29 @@
1
+ import { Grunddata, Organisation, Studietakt, Utbildningstyp } from "@kth/ladok-attributvarde-utils";
2
+ export type Language = "sv" | "en";
3
+ export interface TranslatedGrunddata {
4
+ id: string;
5
+ code: string;
6
+ name: string;
7
+ nameOther: string;
8
+ }
9
+ export interface TranslatedOrganisation extends TranslatedGrunddata {
10
+ organisationTypeName: string;
11
+ }
12
+ export interface TranslatedUtbildningstyp extends TranslatedGrunddata {
13
+ creditsUnit: {
14
+ code: string;
15
+ sv: string;
16
+ en: string;
17
+ };
18
+ level: {
19
+ code: string;
20
+ name: string;
21
+ };
22
+ }
23
+ export interface TranslatedStudietakt extends TranslatedGrunddata {
24
+ takt: Studietakt["takt"];
25
+ }
26
+ export declare const translateGrunddata: (grunddata: Grunddata, language: Language) => TranslatedGrunddata;
27
+ export declare const translateOrganisation: (organisation: Organisation, language: Language) => TranslatedOrganisation;
28
+ export declare const translateUtbildningstyp: (utbildningstyp: Utbildningstyp, language: Language) => TranslatedUtbildningstyp;
29
+ export declare const translateStudietakt: (studietakt: Studietakt, language: Language) => TranslatedStudietakt;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.translateStudietakt = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = void 0;
15
+ const translateGrunddata = (grunddata, language) => {
16
+ const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
17
+ return {
18
+ id,
19
+ code,
20
+ name: rest[language],
21
+ nameOther: rest[language === 'sv' ? 'en' : 'sv']
22
+ };
23
+ };
24
+ exports.translateGrunddata = translateGrunddata;
25
+ const translateOrganisation = (organisation, language) => {
26
+ return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(organisation, language)), { organisationTypeName: organisation.organisationType[language] });
27
+ };
28
+ exports.translateOrganisation = translateOrganisation;
29
+ const translateUtbildningstyp = (utbildningstyp, language) => {
30
+ const { sv, en } = utbildningstyp.creditsUnit;
31
+ const _a = utbildningstyp.level, { code } = _a, rest = __rest(_a, ["code"]);
32
+ return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(utbildningstyp, language)), { creditsUnit: {
33
+ code: utbildningstyp.creditsUnit.code,
34
+ sv,
35
+ en,
36
+ }, level: {
37
+ code,
38
+ name: rest[language],
39
+ } });
40
+ };
41
+ exports.translateUtbildningstyp = translateUtbildningstyp;
42
+ const translateStudietakt = (studietakt, language) => {
43
+ return Object.assign(Object.assign({}, (0, exports.translateGrunddata)(studietakt, language)), { takt: studietakt.takt });
44
+ };
45
+ exports.translateStudietakt = translateStudietakt;
46
+ //# sourceMappingURL=languageUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAoCO,MAAM,kBAAkB,GAAG,CAChC,SAAoB,EACpB,QAAkB,EACG,EAAE;IACvB,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAC;IACxC,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEK,MAAM,qBAAqB,GAAG,CACnC,YAA0B,EAC1B,QAAkB,EACM,EAAE;IAC1B,uCACK,IAAA,0BAAkB,EAAC,YAAY,EAAE,QAAQ,CAAC,KAC7C,oBAAoB,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAC7D;AACJ,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEK,MAAM,uBAAuB,GAAG,CACrC,cAA8B,EAC9B,QAAkB,EACQ,EAAE;IAC5B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,WAAW,CAAA;IAC7C,MAAM,KAAoB,cAAc,CAAC,KAAK,EAAxC,EAAE,IAAI,OAAkC,EAA7B,IAAI,cAAf,QAAiB,CAAuB,CAAC;IAC/C,uCACK,IAAA,0BAAkB,EAAC,cAAc,EAAE,QAAQ,CAAC,KAC/C,WAAW,EAAE;YACX,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI;YACrC,EAAE;YACF,EAAE;SACH,EACD,KAAK,EAAE;YACL,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;SACrB,IACD;AACJ,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC;AAEK,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACtB,QAAkB,EACI,EAAE;IACxB,uCACK,IAAA,0BAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,KAC3C,IAAI,EAAE,UAAU,CAAC,IAAI,IACrB;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B"}
@@ -0,0 +1,7 @@
1
+ export declare const transformPeriodInDigits: (period: string) => string | null;
2
+ export declare const getPeriodCodeForDate: (date: Date) => string;
3
+ export declare const getKthStudyPeriod: (date: Date, startPeriod: {
4
+ code: string | undefined;
5
+ startDate: Date | undefined;
6
+ endDate: Date | undefined;
7
+ }, type: "start" | "end") => 4 | 0 | 1 | 2 | 3 | 5 | undefined;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.transformPeriodInDigits = void 0;
4
+ const transformPeriodInDigits = (period) => {
5
+ const validPrefixes = ["HT", "VT"];
6
+ if (validPrefixes.includes(period.slice(0, 2)) && period.length > 2) {
7
+ const suffix = period.startsWith("HT") ? "2" : "1";
8
+ const year = period.slice(2);
9
+ return year + suffix;
10
+ }
11
+ return null;
12
+ };
13
+ exports.transformPeriodInDigits = transformPeriodInDigits;
14
+ const getPeriodCodeForDate = (date) => {
15
+ const JULY = 6;
16
+ const year = date.getFullYear();
17
+ const month = date.getMonth();
18
+ const semester = month < JULY ? "VT" : "HT";
19
+ return `${semester}${year}`;
20
+ };
21
+ exports.getPeriodCodeForDate = getPeriodCodeForDate;
22
+ // The getKthStudyPeriod function generates the KTH specific Läsperiod => https://www.kth.se/student/studier/schema/lasarsindelning-1.912374
23
+ const getKthStudyPeriod = (date, startPeriod, type) => {
24
+ const month = date.getMonth() + 1;
25
+ const day = date.getDate();
26
+ if (!startPeriod.code || !startPeriod.startDate || !startPeriod.endDate)
27
+ return undefined;
28
+ if (type === "start") {
29
+ if (startPeriod.code.startsWith("HT") && date < startPeriod.startDate)
30
+ return 0;
31
+ if (startPeriod.code.startsWith("HT") &&
32
+ date >= startPeriod.startDate &&
33
+ month <= 9)
34
+ return 1;
35
+ if (startPeriod.code.startsWith("HT") && date <= startPeriod.endDate)
36
+ return 2;
37
+ if (startPeriod.code.startsWith("VT") &&
38
+ date >= startPeriod.startDate &&
39
+ month <= 2)
40
+ return 3;
41
+ if (startPeriod.code.startsWith("VT") && date <= startPeriod.endDate)
42
+ return 4;
43
+ if (startPeriod.code.startsWith("VT") && date > startPeriod.endDate)
44
+ return 5;
45
+ }
46
+ else if (type === "end") {
47
+ if ((month == 7 && day > 15) || month == 8)
48
+ return 0;
49
+ if (month >= 9 && month <= 11)
50
+ return 1;
51
+ if (month === 1 || month === 12)
52
+ return 2;
53
+ if (month <= 3)
54
+ return 3;
55
+ if (month <= 5 || (month == 6 && day < 15))
56
+ return 4;
57
+ if ((month == 6 && day > 15) || (month == 7 && day < 15))
58
+ return 5;
59
+ }
60
+ return undefined;
61
+ };
62
+ exports.getKthStudyPeriod = getKthStudyPeriod;
63
+ //# sourceMappingURL=periodUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":";;;AAAO,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,EAAE;IACxD,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEnC,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAVW,QAAA,uBAAuB,2BAUlC;AAEK,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B;AAEF,4IAA4I;AACrI,MAAM,iBAAiB,GAAG,CAC/B,IAAU,EACV,WAIC,EACD,IAAqB,EACrB,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAE3B,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,OAAO;QACrE,OAAO,SAAS,CAAC;IAEnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,SAAS;YACnE,OAAO,CAAC,CAAC;QACX,IACE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,WAAW,CAAC,SAAS;YAC7B,KAAK,IAAI,CAAC;YAEV,OAAO,CAAC,CAAC;QACX,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO;YAClE,OAAO,CAAC,CAAC;QACX,IACE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,WAAW,CAAC,SAAS;YAC7B,KAAK,IAAI,CAAC;YAEV,OAAO,CAAC,CAAC;QACX,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,OAAO;YAClE,OAAO,CAAC,CAAC;QACX,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO;YACjE,OAAO,CAAC,CAAC;IACb,CAAC;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AA7CW,QAAA,iBAAiB,qBA6C5B"}
@@ -0,0 +1,2 @@
1
+ import { Organisation } from "@kth/ladok-attributvarde-utils";
2
+ export declare const extractSchoolCodeFromOrganisation: (organisation: Organisation | undefined, language: string) => string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractSchoolCodeFromOrganisation = void 0;
4
+ const extractSchoolCodeFromOrganisation = (organisation, language) => {
5
+ if (!organisation)
6
+ return "";
7
+ return language == "sv"
8
+ ? organisation.sv.split("/")[0]
9
+ : organisation.en.split("/")[0];
10
+ };
11
+ exports.extractSchoolCodeFromOrganisation = extractSchoolCodeFromOrganisation;
12
+ //# sourceMappingURL=schoolUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schoolUtil.js","sourceRoot":"","sources":["../../src/utils/schoolUtil.ts"],"names":[],"mappings":";;;AAEO,MAAM,iCAAiC,GAAG,CAC/C,YAAsC,EACtC,QAAgB,EAChB,EAAE;IACF,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,QAAQ,IAAI,IAAI;QACrB,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AARW,QAAA,iCAAiC,qCAQ5C"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@kth/om-kursen-ladok-client",
3
+ "version": "0.0.1",
4
+ "description": "Wrapper module for applicationinsights",
5
+ "main": "dist/index.js",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/KTH/studadm-om-kursen-packages.git"
12
+ },
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "test": "jest",
19
+ "test:watch": "jest --watch"
20
+ },
21
+ "dependencies": {
22
+ "@kth/ladok-attributvarde-utils": "0.0.4",
23
+ "@kth/ladok-mellanlager-client": "0.0.3"
24
+ },
25
+ "devDependencies": {
26
+ "@types/jest": "^29.5.12",
27
+ "jest": "^29.7.0",
28
+ "rimraf": "^5.0.10",
29
+ "ts-jest": "^29.2.5",
30
+ "typescript": "^5.5.4"
31
+ }
32
+ }