@kth/om-kursen-ladok-client 2.1.4 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attributVardenConstants.js +10 -0
- package/dist/attributVardenConstants.js.map +1 -1
- package/dist/kth/KTHPeriod/KTHPeriod.d.ts +19 -0
- package/dist/kth/KTHPeriod/KTHPeriod.js +60 -0
- package/dist/kth/KTHPeriod/KTHPeriod.js.map +1 -0
- package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.d.ts +10 -0
- package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js +41 -0
- package/dist/kth/KTHPeriod/calculateKTHPeriodSemesterFromTillfallesperiod.js.map +1 -0
- package/dist/kth/KTHPeriod/convertToKTHPeriods.d.ts +12 -0
- package/dist/kth/KTHPeriod/convertToKTHPeriods.js +76 -0
- package/dist/kth/KTHPeriod/convertToKTHPeriods.js.map +1 -0
- package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.d.ts +7 -0
- package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js +36 -0
- package/dist/kth/KTHPeriod/extractKTHPeriodSemesterFromLasperiodsfordelning.js.map +1 -0
- package/dist/kth/KTHPeriod/getKTHPeriodSemesters.d.ts +16 -0
- package/dist/kth/KTHPeriod/getKTHPeriodSemesters.js +28 -0
- package/dist/kth/KTHPeriod/getKTHPeriodSemesters.js.map +1 -0
- package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.d.ts +9 -0
- package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.js +21 -0
- package/dist/kth/KTHPeriod/matchDateToKTHPeriodYear.js.map +1 -0
- package/dist/kth/KTHPeriod/testdata/kthPeriods.d.ts +8 -0
- package/dist/kth/KTHPeriod/testdata/kthPeriods.js +43 -0
- package/dist/kth/KTHPeriod/testdata/kthPeriods.js.map +1 -0
- package/dist/kth/extractFunctions/extractBasicCourseData.d.ts +18 -0
- package/dist/kth/extractFunctions/extractBasicCourseData.js +47 -0
- package/dist/kth/extractFunctions/extractBasicCourseData.js.map +1 -0
- package/dist/kth/extractFunctions/extractDiscontinuationData.d.ts +9 -0
- package/dist/kth/extractFunctions/extractDiscontinuationData.js +33 -0
- package/dist/kth/extractFunctions/extractDiscontinuationData.js.map +1 -0
- package/dist/mapCourse.d.ts +1 -10
- package/dist/mapCourse.js +6 -46
- package/dist/mapCourse.js.map +1 -1
- package/dist/mapCourseRound.d.ts +8 -15
- package/dist/mapCourseRound.js.map +1 -1
- package/dist/mapCourseSyllabus.d.ts +15 -44
- package/dist/mapCourseSyllabus.js +39 -43
- package/dist/mapCourseSyllabus.js.map +1 -1
- package/dist/mapProgramSyllabus.js +6 -41
- package/dist/mapProgramSyllabus.js.map +1 -1
- package/dist/search/types.d.ts +4 -1
- package/dist/supportApis/PeriodService.d.ts +8 -0
- package/dist/supportApis/PeriodService.js +46 -0
- package/dist/supportApis/PeriodService.js.map +1 -0
- package/dist/utils/AcademicSemester.d.ts +1 -0
- package/dist/utils/AcademicSemester.js +5 -0
- package/dist/utils/AcademicSemester.js.map +1 -1
- package/dist/utils/courseSyllabusUtil.d.ts +1 -1
- package/dist/utils/courseSyllabusUtil.js +12 -29
- package/dist/utils/courseSyllabusUtil.js.map +1 -1
- package/dist/utils/languageUtil.d.ts +5 -0
- package/dist/utils/languageUtil.js +11 -2
- package/dist/utils/languageUtil.js.map +1 -1
- package/dist/utils/periodUtil.d.ts +6 -0
- package/dist/utils/periodUtil.js +12 -2
- package/dist/utils/periodUtil.js.map +1 -1
- package/dist/utils/syllabusExtractionUtil.d.ts +8 -0
- package/dist/utils/syllabusExtractionUtil.js +71 -0
- package/dist/utils/syllabusExtractionUtil.js.map +1 -0
- package/dist/utils/typeChecking.d.ts +6 -0
- package/dist/utils/typeChecking.js +8 -1
- package/dist/utils/typeChecking.js.map +1 -1
- package/package.json +2 -2
|
@@ -19,35 +19,18 @@ const getSemester = (dateStr) => {
|
|
|
19
19
|
};
|
|
20
20
|
exports.getSemester = getSemester;
|
|
21
21
|
function sortSyllabuses(syllabuses) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
// Step 3: If same course version date, sort by latest syllabus version (descending)
|
|
36
|
-
const getEdition = (obj) => {
|
|
37
|
-
var _a, _b;
|
|
38
|
-
const val = (_b = (_a = obj.AktuellaAttributvarden.find((Attributvarde) => Attributvarde.Attributdefinition.Kod === 'utbildning.lokalt.attribut.29.utgava')) === null || _a === void 0 ? void 0 : _a.Varden) === null || _b === void 0 ? void 0 : _b[0];
|
|
39
|
-
return val ? parseInt(val, 10) : -Infinity; // undefined editions get lowest priority
|
|
40
|
-
};
|
|
41
|
-
const editionA = getEdition(a);
|
|
42
|
-
const editionB = getEdition(b);
|
|
43
|
-
if (editionA !== editionB) {
|
|
44
|
-
return editionB - editionA; // descending: latest comes first
|
|
45
|
-
}
|
|
46
|
-
// Step 3: If same versionsnummer, sort by most recent date the syllabus was saved
|
|
47
|
-
const timestampA = new Date(a.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
|
|
48
|
-
const timestampB = new Date(b.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
|
|
49
|
-
return timestampB - timestampA;
|
|
50
|
-
});
|
|
22
|
+
const getDate = (s) => new Date(s.GiltigFran).getTime();
|
|
23
|
+
const getVersion = (s) => (0, ladok_attributvarde_utils_1.extractVersionNumber)(s.instans.Attributvarden);
|
|
24
|
+
const getEdition = (s) => {
|
|
25
|
+
const val = (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(s.AktuellaAttributvarden, 'utgava', ladok_attributvarde_utils_1.LokaltAttributType.Integer, true);
|
|
26
|
+
return val ? val : -Infinity;
|
|
27
|
+
};
|
|
28
|
+
const getSavedDate = (s) => new Date(s.BeslutsinformationForPlan.Beslutloggposter[0].SenastSparad).getTime();
|
|
29
|
+
return syllabuses.sort((a, b) => getDate(b) - getDate(a) || // Step 1: Sort by most recent GiltigFran date (descending)
|
|
30
|
+
getVersion(b) - getVersion(a) || // Step 2: If same GiltigFran date, sort by latest course version (descending)
|
|
31
|
+
getEdition(b) - getEdition(a) || // Step 3: If same course version date, sort by latest syllabus version (descending)
|
|
32
|
+
getSavedDate(b) - getSavedDate(a) // Step 4: If same versionsnummer, sort by most recent date the syllabus was saved
|
|
33
|
+
);
|
|
51
34
|
}
|
|
52
35
|
function getSyllabusForSemester(semester, syllabuses, periods) {
|
|
53
36
|
const semesterOnLadokFormat = (0, periodUtil_1.transformDigitsInPeriod)(semester);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"courseSyllabusUtil.js","sourceRoot":"","sources":["../../src/utils/courseSyllabusUtil.ts"],"names":[],"mappings":";;;AAmBA,
|
|
1
|
+
{"version":3,"file":"courseSyllabusUtil.js","sourceRoot":"","sources":["../../src/utils/courseSyllabusUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { EduLevel, Grunddata, Organisation, Studietakt, Tilltradesniva, Utbildningstyp } from '@kth/ladok-attributvarde-utils';
|
|
2
2
|
export type Language = 'sv' | 'en';
|
|
3
|
+
export declare enum LadokLanguageName {
|
|
4
|
+
Swedish = "svensk",
|
|
5
|
+
English = "engelsk"
|
|
6
|
+
}
|
|
3
7
|
export declare enum LanguageCode {
|
|
4
8
|
Swedish = "sv",
|
|
5
9
|
English = "en"
|
|
6
10
|
}
|
|
11
|
+
export declare const isEnglish: (language: Language) => language is "en";
|
|
7
12
|
export interface TranslatedGrunddata {
|
|
8
13
|
id: string;
|
|
9
14
|
code: string;
|
|
@@ -11,19 +11,28 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.translateStudietakt = exports.translateEduLevel = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = exports.LanguageCode = void 0;
|
|
14
|
+
exports.translateStudietakt = exports.translateEduLevel = exports.translatedTilltradesniva = exports.translateUtbildningstyp = exports.translateOrganisation = exports.translateGrunddata = exports.isEnglish = exports.LanguageCode = exports.LadokLanguageName = void 0;
|
|
15
|
+
var LadokLanguageName;
|
|
16
|
+
(function (LadokLanguageName) {
|
|
17
|
+
LadokLanguageName["Swedish"] = "svensk";
|
|
18
|
+
LadokLanguageName["English"] = "engelsk";
|
|
19
|
+
})(LadokLanguageName || (exports.LadokLanguageName = LadokLanguageName = {}));
|
|
15
20
|
var LanguageCode;
|
|
16
21
|
(function (LanguageCode) {
|
|
17
22
|
LanguageCode["Swedish"] = "sv";
|
|
18
23
|
LanguageCode["English"] = "en";
|
|
19
24
|
})(LanguageCode || (exports.LanguageCode = LanguageCode = {}));
|
|
25
|
+
const isEnglish = (language) => {
|
|
26
|
+
return language === LanguageCode.English;
|
|
27
|
+
};
|
|
28
|
+
exports.isEnglish = isEnglish;
|
|
20
29
|
const translateGrunddata = (grunddata, language) => {
|
|
21
30
|
const { id, code } = grunddata, rest = __rest(grunddata, ["id", "code"]);
|
|
22
31
|
return {
|
|
23
32
|
id,
|
|
24
33
|
code,
|
|
25
34
|
name: rest[language],
|
|
26
|
-
nameOther: rest[language
|
|
35
|
+
nameOther: rest[(0, exports.isEnglish)(language) ? LanguageCode.Swedish : LanguageCode.English],
|
|
27
36
|
};
|
|
28
37
|
};
|
|
29
38
|
exports.translateGrunddata = translateGrunddata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,8BAAc,CAAA;IACd,8BAAc,CAAA;AAChB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAmCM,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAE,QAAkB,EAAuB,EAAE;IAClG,MAAM,EAAE,EAAE,EAAE,IAAI,KAAc,SAAS,EAAlB,IAAI,UAAK,SAAS,EAAjC,cAAqB,CAAY,CAAA;IACvC,OAAO;QACL,EAAE;QACF,IAAI;QACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"languageUtil.js","sourceRoot":"","sources":["../../src/utils/languageUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { PeriodItem } from '@kth/ladok-mellanlager-client';
|
|
2
2
|
import { ProgrammeVersion } from '../mapProgrammeVersion';
|
|
3
|
+
/**
|
|
4
|
+
* Returns true if the given string is a valid Ladok Period in the format (VT|HT)YYYY
|
|
5
|
+
* @param period
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const isValidLadokPeriod: (period: string) => boolean;
|
|
3
9
|
export declare const parsePeriod: (period: string) => {
|
|
4
10
|
semester: string;
|
|
5
11
|
year: number;
|
package/dist/utils/periodUtil.js
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.findValidProgramForCode = exports.findPeriodByKod = exports.transformDigitsInPeriod = exports.transformPeriodInDigits = exports.parsePeriod = void 0;
|
|
3
|
+
exports.getKthStudyPeriod = exports.getPeriodCodeForDate = exports.findValidProgramForCode = exports.findPeriodByKod = exports.transformDigitsInPeriod = exports.transformPeriodInDigits = exports.parsePeriod = exports.isValidLadokPeriod = void 0;
|
|
4
4
|
const versionUtils_1 = require("./versionUtils");
|
|
5
|
+
const validLadokPeriod = /(VT|HT)(\d{4})/;
|
|
6
|
+
/**
|
|
7
|
+
* Returns true if the given string is a valid Ladok Period in the format (VT|HT)YYYY
|
|
8
|
+
* @param period
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
const isValidLadokPeriod = (period) => {
|
|
12
|
+
return validLadokPeriod.test(period);
|
|
13
|
+
};
|
|
14
|
+
exports.isValidLadokPeriod = isValidLadokPeriod;
|
|
5
15
|
const parsePeriod = (period) => {
|
|
6
|
-
const match = period.match(
|
|
16
|
+
const match = period.match(validLadokPeriod);
|
|
7
17
|
if (!match) {
|
|
8
18
|
console.warn('Unable to parse period due to invalid period format: ', period);
|
|
9
19
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":";;;AAEA,iDAAyD;
|
|
1
|
+
{"version":3,"file":"periodUtil.js","sourceRoot":"","sources":["../../src/utils/periodUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Attributvarde, Attributdefinition, AttributdefinitionSlim } from '@kth/ladok-attributvarde-utils';
|
|
2
|
+
import { Language } from './languageUtil';
|
|
3
|
+
/**
|
|
4
|
+
* Extracts a markdown attribute value, normalizes tables if it's a course list,
|
|
5
|
+
* and converts to HTML. This is specifically designed for program syllabi
|
|
6
|
+
* where course lists need table normalization.
|
|
7
|
+
*/
|
|
8
|
+
export declare const extractAndConvertMarkdownToHtml: (attributvarden: Attributvarde<Attributdefinition | AttributdefinitionSlim>[], attributeName: string, language: Language, useBaseValue?: boolean, isCourseList?: boolean) => string | undefined;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.extractAndConvertMarkdownToHtml = void 0;
|
|
7
|
+
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
8
|
+
const showdown_1 = __importDefault(require("showdown"));
|
|
9
|
+
/**
|
|
10
|
+
* Extracts a markdown attribute value, normalizes tables if it's a course list,
|
|
11
|
+
* and converts to HTML. This is specifically designed for program syllabi
|
|
12
|
+
* where course lists need table normalization.
|
|
13
|
+
*/
|
|
14
|
+
const extractAndConvertMarkdownToHtml = (attributvarden, attributeName, language, useBaseValue = false, isCourseList = false) => {
|
|
15
|
+
// Try Markdown first, then LocalizedString as fallback
|
|
16
|
+
const markdownResult = [ladok_attributvarde_utils_1.LokaltAttributType.Markdown, ladok_attributvarde_utils_1.LokaltAttributType.LocalizedString]
|
|
17
|
+
.map(type => useBaseValue
|
|
18
|
+
? (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, attributeName, type, true)
|
|
19
|
+
: (0, ladok_attributvarde_utils_1.extractLokaltAttribut)(attributvarden, attributeName, type))
|
|
20
|
+
.find(result => result !== undefined);
|
|
21
|
+
if (!markdownResult)
|
|
22
|
+
return undefined;
|
|
23
|
+
// Handle both single string and localized object
|
|
24
|
+
let rawMarkdown;
|
|
25
|
+
if (typeof markdownResult === 'string') {
|
|
26
|
+
rawMarkdown = markdownResult;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// For localized objects, try the requested language first, then fallback to sv -> en
|
|
30
|
+
rawMarkdown = markdownResult[language];
|
|
31
|
+
}
|
|
32
|
+
if (!rawMarkdown)
|
|
33
|
+
return undefined;
|
|
34
|
+
// Only normalize tables for course lists in programs
|
|
35
|
+
const processedMarkdown = isCourseList ? normalizeMarkdownTables(rawMarkdown) : rawMarkdown;
|
|
36
|
+
return convertMarkdownToHtml(processedMarkdown);
|
|
37
|
+
};
|
|
38
|
+
exports.extractAndConvertMarkdownToHtml = extractAndConvertMarkdownToHtml;
|
|
39
|
+
/**
|
|
40
|
+
* Converts markdown text to HTML using showdown converter
|
|
41
|
+
*/
|
|
42
|
+
const convertMarkdownToHtml = (markdownText) => {
|
|
43
|
+
if (!markdownText)
|
|
44
|
+
return undefined;
|
|
45
|
+
const converter = new showdown_1.default.Converter({ tables: true });
|
|
46
|
+
return converter.makeHtml(markdownText);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Normalizes markdown tables for course lists in programs.
|
|
50
|
+
* This implements the specific table normalization logic for program course lists.
|
|
51
|
+
*/
|
|
52
|
+
const normalizeMarkdownTables = (raw) => {
|
|
53
|
+
if (!raw)
|
|
54
|
+
return raw;
|
|
55
|
+
let normalized = raw
|
|
56
|
+
// Step 1: Convert escaped \n to real newlines
|
|
57
|
+
.replace(/\\n/g, '\n')
|
|
58
|
+
// Step 2: Remove unnecessary escapes (but preserve Markdown ones like \*, \_)
|
|
59
|
+
.replace(/\\(?![|*_\\])/g, '')
|
|
60
|
+
// Step 3: Fix escaped pipe characters in full table rows
|
|
61
|
+
.replace(/^\\\|(.+?)\\\|$/gm, (_match, row) => `|${row}|`)
|
|
62
|
+
.replace(/\\\|/g, '|')
|
|
63
|
+
// Step 4: Replace double backslashes with single
|
|
64
|
+
.replace(/\\\\/g, '\\')
|
|
65
|
+
// Step 5: Insert newline between two table rows if they're mashed together
|
|
66
|
+
.replace(/(\|.+?\|)\s*(?=\|)/g, '$1\n')
|
|
67
|
+
// Step 6: Remove \n at the end of the <br>
|
|
68
|
+
.replace(/<br>\n/g, '<br>');
|
|
69
|
+
return normalized;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=syllabusExtractionUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syllabusExtractionUtil.js","sourceRoot":"","sources":["../../src/utils/syllabusExtractionUtil.ts"],"names":[],"mappings":";;;;;;AAAA,8EAMuC;AAEvC,wDAA+B;AAE/B;;;;GAIG;AACI,MAAM,+BAA+B,GAAG,CAC7C,cAA4E,EAC5E,aAAqB,EACrB,QAAkB,EAClB,eAAwB,KAAK,EAC7B,eAAwB,KAAK,EACT,EAAE;IACtB,uDAAuD;IACvD,MAAM,cAAc,GAAI,CAAC,8CAAkB,CAAC,QAAQ,EAAE,8CAAkB,CAAC,eAAe,CAAW;SAChG,GAAG,CAAC,IAAI,CAAC,EAAE,CACV,YAAY;QACV,CAAC,CAAC,IAAA,iDAAqB,EAAC,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC;QAClE,CAAC,CAAC,IAAA,iDAAqB,EAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAC/D;SACA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAA;IAEvC,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAA;IAErC,iDAAiD;IACjD,IAAI,WAA+B,CAAA;IACnC,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,WAAW,GAAG,cAAc,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,qFAAqF;QACrF,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAA;IAElC,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC3F,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;AACjD,CAAC,CAAA;AAhCY,QAAA,+BAA+B,mCAgC3C;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,YAAgC,EAAsB,EAAE;IACrF,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAA;IACnC,MAAM,SAAS,GAAG,IAAI,kBAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACzC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAAC,GAAuB,EAAsB,EAAE;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAA;IAEpB,IAAI,UAAU,GAAG,GAAG;QAClB,8CAA8C;SAC7C,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAEtB,8EAA8E;SAC7E,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAE9B,yDAAyD;SACxD,OAAO,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC;SACzD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QAEtB,iDAAiD;SAChD,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;QAEvB,2EAA2E;SAC1E,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;QAEvC,2CAA2C;SAC1C,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAE7B,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -1 +1,7 @@
|
|
|
1
1
|
export declare const isDefined: <T>(value: T) => value is NonNullable<T>;
|
|
2
|
+
/**
|
|
3
|
+
* Type guard that checks whether a value is a non-empty array with at least one element.
|
|
4
|
+
* @param arr
|
|
5
|
+
* @returns
|
|
6
|
+
*/
|
|
7
|
+
export declare const isArrayWithValues: <T>(arr: readonly T[] | undefined | null) => arr is readonly [T, ...T[]];
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isDefined = void 0;
|
|
3
|
+
exports.isArrayWithValues = exports.isDefined = void 0;
|
|
4
4
|
const isDefined = (value) => {
|
|
5
5
|
return value !== null && value !== undefined;
|
|
6
6
|
};
|
|
7
7
|
exports.isDefined = isDefined;
|
|
8
|
+
/**
|
|
9
|
+
* Type guard that checks whether a value is a non-empty array with at least one element.
|
|
10
|
+
* @param arr
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
const isArrayWithValues = (arr) => Array.isArray(arr) && arr.length > 0;
|
|
14
|
+
exports.isArrayWithValues = isArrayWithValues;
|
|
8
15
|
//# sourceMappingURL=typeChecking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeChecking.js","sourceRoot":"","sources":["../../src/utils/typeChecking.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAI,KAAQ,EAA2B,EAAE;IAChE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAC9C,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB"}
|
|
1
|
+
{"version":3,"file":"typeChecking.js","sourceRoot":"","sources":["../../src/utils/typeChecking.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAI,KAAQ,EAA2B,EAAE;IAChE,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAC9C,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB;AAED;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAI,GAAoC,EAA+B,EAAE,CACxG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;AADzB,QAAA,iBAAiB,qBACQ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kth/om-kursen-ladok-client",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "Om kursen specific logic and mappings, uses both @kth/ladok-mellanlager-client and @kth/ladok-attributevarde-utils.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"build:publish": "npm install --no-workspaces && npm run build"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@kth/ladok-attributvarde-utils": "1.0.
|
|
24
|
+
"@kth/ladok-attributvarde-utils": "1.0.3",
|
|
25
25
|
"@kth/ladok-mellanlager-client": "1.0.2",
|
|
26
26
|
"date-fns": "^4.1.0",
|
|
27
27
|
"showdown": "^2.1.0"
|