@knora/core
Version:
Knora ui module: core
87 lines • 9.37 kB
JavaScript
/**
* Collection of useful utility functions.
*/
import { KnoraConstants } from './api/knora-constants';
// @dynamic
export class Utils {
/**
* Given a Knora entity IRI, gets the ontology Iri.
*
* @param {string} entityIri an entity Iri.
* @return {string} the ontology IRI
*/
static getOntologyIriFromEntityIri(entityIri) {
// split class Iri on "#"
const segments = entityIri.split(KnoraConstants.PathSeparator);
if (segments.length !== 2)
console.error(`Error: ${entityIri} is not a valid entity IRI.`);
return segments[0];
}
/**
* Converts a complex knora-api entity Iri to a knora-api simple entity Iri.
*
* @param {string} complexEntityIri
* @returns {string}
*/
static convertComplexKnoraApiEntityIritoSimple(complexEntityIri) {
// split entity Iri on "#"
const segments = complexEntityIri.split('v2' + KnoraConstants.PathSeparator);
if (segments.length !== 2)
console.error(`Error: ${complexEntityIri} is not a valid entity IRI.`);
// add 'simple' to base path
return segments[0] + 'simple/v2' + KnoraConstants.PathSeparator + segments[1];
}
}
/**
* A regex to validate Email address.
*
* @type {RegExp}
*/
Utils.RegexEmail = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
/**
* A regex to validate Username.
*
* @type {RegExp}
*/
Utils.RegexUsername = /^[a-zA-Z0-9]+$/;
/**
* A regex to validate URLs.
*
* @type {RegExp}
*/
Utils.RegexUrl = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?$/i;
/**
* A regex to validate Passwords
*
* @type {RegExp}
*/
Utils.RegexPassword = /^(?=.*\d)(?=.*[a-zA-Z]).{8,}$/i;
/**
* A regex to validate Hexadecimal values
*
* @type {RegExp}
*/
Utils.RegexHex = /^[0-9A-Fa-f]+$/;
/**
* A regex to validate shortname in projects
*
* @type {RegExp}
*/
Utils.RegexShortname = /^[a-zA-Z]+\S*$/;
/**
* Lambda function eliminating duplicates in a collection to be passed to [[filter]].
*
* @param elem element of an Array that is currently being looked at.
* @param index current elements index.
* @param self reference to the whole Array.
* @returns {boolean} true if the same element does not already exist in the Array.
*/
Utils.filterOutDuplicates = (elem, index, self) => {
// https://stackoverflow.com/questions/16747798/delete-duplicate-elements-from-an-array
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter?v=example
// returns true if the element's index equals the index of the leftmost element
// -> this means that there is no identical element before this index, hence it is not a duplicate
// for all other elements, false is returned
return index === self.indexOf(elem);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa25vcmEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9kZWNsYXJhdGlvbnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsV0FBVztBQUNYLE1BQU0sT0FBTyxLQUFLO0lBZ0VkOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLDJCQUEyQixDQUFDLFNBQWlCO1FBRXZELHlCQUF5QjtRQUN6QixNQUFNLFFBQVEsR0FBYSxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6RSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxTQUFTLDZCQUE2QixDQUFDLENBQUM7UUFFM0YsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHVDQUF1QyxDQUFDLGdCQUF3QjtRQUUxRSwwQkFBMEI7UUFDMUIsTUFBTSxRQUFRLEdBQWEsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdkYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsZ0JBQWdCLDZCQUE2QixDQUFDLENBQUM7UUFFbEcsNEJBQTRCO1FBQzVCLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxjQUFjLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRixDQUFDOztBQWhHRDs7OztHQUlHO0FBQ29CLGdCQUFVLEdBQUcsd0hBQXdILENBQUM7QUFFN0o7Ozs7R0FJRztBQUNvQixtQkFBYSxHQUFHLGdCQUFnQixDQUFDO0FBRXhEOzs7O0dBSUc7QUFDb0IsY0FBUSxHQUFHLDBIQUEwSCxDQUFDO0FBRTdKOzs7O0dBSUc7QUFDb0IsbUJBQWEsR0FBRyxnQ0FBZ0MsQ0FBQztBQUV4RTs7OztHQUlHO0FBQ29CLGNBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUVuRDs7OztHQUlHO0FBQ29CLG9CQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFHekQ7Ozs7Ozs7R0FPRztBQUNXLHlCQUFtQixHQUFHLENBQUMsSUFBSSxFQUFFLEtBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRTtJQUU5RCx1RkFBdUY7SUFDdkYsMEdBQTBHO0lBRTFHLCtFQUErRTtJQUMvRSxrR0FBa0c7SUFDbEcsNENBQTRDO0lBQzVDLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFeEMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb2xsZWN0aW9uIG9mIHVzZWZ1bCB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqL1xuaW1wb3J0IHsgS25vcmFDb25zdGFudHMgfSBmcm9tICcuL2FwaS9rbm9yYS1jb25zdGFudHMnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFV0aWxzIHtcbiAgICAvKipcbiAgICAgKiBBIHJlZ2V4IHRvIHZhbGlkYXRlIEVtYWlsIGFkZHJlc3MuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUmVnZXhFbWFpbCA9IC9eKChbXjw+KClcXFtcXF1cXC4sOzpcXHNAXFxcIl0rKFxcLltePD4oKVxcW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdezIsfSkkL2k7XG5cbiAgICAvKipcbiAgICAgKiBBIHJlZ2V4IHRvIHZhbGlkYXRlIFVzZXJuYW1lLlxuICAgICAqXG4gICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJlZ2V4VXNlcm5hbWUgPSAvXlthLXpBLVowLTldKyQvO1xuXG4gICAgLyoqXG4gICAgICogQSByZWdleCB0byB2YWxpZGF0ZSBVUkxzLlxuICAgICAqXG4gICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJlZ2V4VXJsID0gL14oaHR0cDpcXC9cXC93d3dcXC58aHR0cHM6XFwvXFwvd3d3XFwufGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLyk/W2EtejAtOV0rKFtcXC1cXC5dezF9W2EtejAtOV0rKSpcXC5bYS16XXsyLDZ9KDpbMC05XXsxLDV9KT8oXFwvLiopPyQvaTtcblxuICAgIC8qKlxuICAgICAqIEEgcmVnZXggdG8gdmFsaWRhdGUgUGFzc3dvcmRzXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUmVnZXhQYXNzd29yZCA9IC9eKD89LipcXGQpKD89LipbYS16QS1aXSkuezgsfSQvaTtcblxuICAgIC8qKlxuICAgICAqIEEgcmVnZXggdG8gdmFsaWRhdGUgSGV4YWRlY2ltYWwgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUmVnZXhIZXggPSAvXlswLTlBLUZhLWZdKyQvO1xuXG4gICAgLyoqXG4gICAgICogQSByZWdleCB0byB2YWxpZGF0ZSBzaG9ydG5hbWUgaW4gcHJvamVjdHNcbiAgICAgKlxuICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBSZWdleFNob3J0bmFtZSA9IC9eW2EtekEtWl0rXFxTKiQvO1xuXG5cbiAgICAvKipcbiAgICAgKiBMYW1iZGEgZnVuY3Rpb24gZWxpbWluYXRpbmcgZHVwbGljYXRlcyBpbiBhIGNvbGxlY3Rpb24gdG8gYmUgcGFzc2VkIHRvIFtbZmlsdGVyXV0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZWxlbSBlbGVtZW50IG9mIGFuIEFycmF5IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGxvb2tlZCBhdC5cbiAgICAgKiBAcGFyYW0gaW5kZXggY3VycmVudCBlbGVtZW50cyBpbmRleC5cbiAgICAgKiBAcGFyYW0gc2VsZiByZWZlcmVuY2UgdG8gdGhlIHdob2xlIEFycmF5LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBzYW1lIGVsZW1lbnQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgQXJyYXkuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmaWx0ZXJPdXREdXBsaWNhdGVzID0gKGVsZW0sIGluZGV4OiBudW1iZXIsIHNlbGYpID0+IHtcblxuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNjc0Nzc5OC9kZWxldGUtZHVwbGljYXRlLWVsZW1lbnRzLWZyb20tYW4tYXJyYXlcbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQXJyYXkvZmlsdGVyP3Y9ZXhhbXBsZVxuXG4gICAgICAgIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCdzIGluZGV4IGVxdWFscyB0aGUgaW5kZXggb2YgdGhlIGxlZnRtb3N0IGVsZW1lbnRcbiAgICAgICAgLy8gLT4gdGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGlkZW50aWNhbCBlbGVtZW50IGJlZm9yZSB0aGlzIGluZGV4LCBoZW5jZSBpdCBpcyBub3QgYSBkdXBsaWNhdGVcbiAgICAgICAgLy8gZm9yIGFsbCBvdGhlciBlbGVtZW50cywgZmFsc2UgaXMgcmV0dXJuZWRcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBzZWxmLmluZGV4T2YoZWxlbSk7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIEtub3JhIGVudGl0eSBJUkksIGdldHMgdGhlIG9udG9sb2d5IElyaS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlJcmkgYW4gZW50aXR5IElyaS5cbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBvbnRvbG9neSBJUklcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldE9udG9sb2d5SXJpRnJvbUVudGl0eUlyaShlbnRpdHlJcmk6IHN0cmluZykge1xuXG4gICAgICAgIC8vIHNwbGl0IGNsYXNzIElyaSBvbiBcIiNcIlxuICAgICAgICBjb25zdCBzZWdtZW50czogc3RyaW5nW10gPSBlbnRpdHlJcmkuc3BsaXQoS25vcmFDb25zdGFudHMuUGF0aFNlcGFyYXRvcik7XG5cbiAgICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCAhPT0gMikgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7ZW50aXR5SXJpfSBpcyBub3QgYSB2YWxpZCBlbnRpdHkgSVJJLmApO1xuXG4gICAgICAgIHJldHVybiBzZWdtZW50c1swXTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgY29tcGxleCBrbm9yYS1hcGkgZW50aXR5IElyaSB0byBhIGtub3JhLWFwaSBzaW1wbGUgZW50aXR5IElyaS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb21wbGV4RW50aXR5SXJpXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnRDb21wbGV4S25vcmFBcGlFbnRpdHlJcml0b1NpbXBsZShjb21wbGV4RW50aXR5SXJpOiBzdHJpbmcpIHtcblxuICAgICAgICAvLyBzcGxpdCBlbnRpdHkgSXJpIG9uIFwiI1wiXG4gICAgICAgIGNvbnN0IHNlZ21lbnRzOiBzdHJpbmdbXSA9IGNvbXBsZXhFbnRpdHlJcmkuc3BsaXQoJ3YyJyArIEtub3JhQ29uc3RhbnRzLlBhdGhTZXBhcmF0b3IpO1xuXG4gICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggIT09IDIpIGNvbnNvbGUuZXJyb3IoYEVycm9yOiAke2NvbXBsZXhFbnRpdHlJcml9IGlzIG5vdCBhIHZhbGlkIGVudGl0eSBJUkkuYCk7XG5cbiAgICAgICAgLy8gYWRkICdzaW1wbGUnIHRvIGJhc2UgcGF0aFxuICAgICAgICByZXR1cm4gc2VnbWVudHNbMF0gKyAnc2ltcGxlL3YyJyArIEtub3JhQ29uc3RhbnRzLlBhdGhTZXBhcmF0b3IgKyBzZWdtZW50c1sxXTtcblxuICAgIH1cblxuXG59XG4iXX0=