Skip to content
Snippets Groups Projects
Commit 0a0afa25 authored by rhenck's avatar rhenck
Browse files

Refactor imported unit version to not rely on semver package

The package was not a proper ECMA Script package and therefore can not 
be tree shaken properly and would unnecessarily increase the package 
size.
parent e1644795
No related branches found
No related tags found
No related merge requests found
...@@ -2287,12 +2287,6 @@ ...@@ -2287,12 +2287,6 @@
"@types/prosemirror-transform": "*" "@types/prosemirror-transform": "*"
} }
}, },
"@types/semver": {
"version": "7.3.9",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz",
"integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==",
"dev": true
},
"@types/source-list-map": { "@types/source-list-map": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
...@@ -8073,6 +8067,7 @@ ...@@ -8073,6 +8067,7 @@
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": { "requires": {
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }
...@@ -11631,6 +11626,7 @@ ...@@ -11631,6 +11626,7 @@
"version": "7.3.5", "version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"dev": true,
"requires": { "requires": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
} }
...@@ -14671,7 +14667,8 @@ ...@@ -14671,7 +14667,8 @@
"yallist": { "yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}, },
"yaml": { "yaml": {
"version": "1.10.2", "version": "1.10.2",
......
...@@ -79,7 +79,6 @@ ...@@ -79,7 +79,6 @@
"ngx-tiptap": "^3.0.4", "ngx-tiptap": "^3.0.4",
"prosemirror-state": "^1.3.4", "prosemirror-state": "^1.3.4",
"rxjs": "~6.6.0", "rxjs": "~6.6.0",
"semver": "^7.3.5",
"testcafe": "^1.17.0", "testcafe": "^1.17.0",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
...@@ -91,7 +90,6 @@ ...@@ -91,7 +90,6 @@
"@iqb/eslint-config": "^1.0.2", "@iqb/eslint-config": "^1.0.2",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1", "@types/node": "^12.11.1",
"@types/semver": "^7.3.9",
"iqb-dev-components": "^1.4.0", "iqb-dev-components": "^1.4.0",
"jasmine-core": "^3.8.0", "jasmine-core": "^3.8.0",
"karma": "~6.3.0", "karma": "~6.3.0",
......
export class ImportModuleVersion { export class ImportedModuleVersion {
private static unitLoaded: boolean; static unitLoaded: boolean;
private static version: string; static version: string | null = null; // null for invalid
static setVersion(importedModuleVersion: string): void { static setVersion(importedModuleVersion: string | undefined): void {
ImportModuleVersion.unitLoaded = false; ImportedModuleVersion.unitLoaded = false;
ImportModuleVersion.version = importedModuleVersion; if (importedModuleVersion) {
} ImportedModuleVersion.verifyVersionString(importedModuleVersion) ?
ImportedModuleVersion.version = importedModuleVersion.split('@')[1] :
static setUnitLoaded(): void { ImportedModuleVersion.version = null;
ImportModuleVersion.unitLoaded = true; }
}
static isUnitLoaded(): boolean {
return ImportModuleVersion.unitLoaded;
}
static getVersion(): { fullName: string, type: string, version: number[] } {
return {
fullName: ImportModuleVersion.version,
type: ImportModuleVersion.getVersionType(),
version: ImportModuleVersion.getVersionNumbers()
};
} }
private static getVersionType(): string { /*
if (ImportModuleVersion.version && ImportModuleVersion.version.length) { Checks for existence of parts before and after the @ sign. The first part has to be
const importedModuleVersionArray = ImportModuleVersion.version.split('@'); 'iqb-aspect-definition', which indicates a known and supported version.
if (importedModuleVersionArray.length === 2) { The second part has to have exactly 3 numbers, split at the . (dot) sign.
return importedModuleVersionArray[0]; */
} static verifyVersionString(versionString: string): boolean {
} if (versionString.split('@').length !== 2 ||
return 'none'; versionString.split('@')[0] !== 'iqb-aspect-definition' ||
versionString.split('@')[1].split('.').length !== 3) {
console.error('Error reading the unit definition!');
return false;
}
return true;
} }
private static getVersionNumbers(): number[] { static isGreaterThanOrEqualTo(versionString: string): boolean {
if (ImportModuleVersion.version && ImportModuleVersion.version.length) { if (!ImportedModuleVersion.version) {
const importedModuleVersionArray = ImportModuleVersion.version.split('@'); return false;
if (importedModuleVersionArray.length === 2) { }
const versionArray = importedModuleVersionArray[1].split('.');
if (versionArray.length === 3) {
return versionArray.map(number => Number(number));
}
}
}
return [0, 0, 0];
}
static verifyVersion(): boolean { if (ImportedModuleVersion.version[0] < versionString[0]) {
if (!ImportModuleVersion.getVersion().fullName) {
return false; return false;
} }
if (ImportModuleVersion.getVersionType() !== 'iqb-aspect-definition') { if (ImportedModuleVersion.version[0] > versionString[0]) {
return true;
}
if (ImportedModuleVersion.version[1] < versionString[1]) {
return false; return false;
} }
const numbers = ImportModuleVersion.getVersionNumbers(); if (ImportedModuleVersion.version[1] > versionString[1]) {
if (numbers[0] < 1) { return true;
}
if (ImportedModuleVersion.version[2] < versionString[2]) {
return false; return false;
} }
return numbers[1] >= 1;
return true;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment