UNPKG

knowmax-quest-utils

Version:

Utilities for creating a Knowmax Quest client.

153 lines 6.03 kB
/** Generates quest id from given IReferenceInfo. * @param referenceInfo Describes document and version to generate quest id for. * @param nodeQuestId Optional quest id of node to add to identification of document specified by referenceInfo. * @param forceVersion Set to true to force version specification even if referenceInfo refers to current version. * @returns QuestId or undefined in case referenceInfo contains no reference to an existing document and/or document version. */ /**export const generateQuestIdFromReference = (referenceInfo: IReferenceInfo, nodeQuestId?: string, forceVersion = false): string | undefined => { return referenceInfo.document && referenceInfo.documentVersion ? generateQuestId(referenceInfo.document.questId, referenceInfo.documentVersion.version, referenceInfo.documentVersion.current, nodeQuestId, forceVersion) : undefined; }*/ export const generateQuestIdFromReference = (referenceInfo, nodeQuestId, forceVersion = false) => { return referenceInfo.document && referenceInfo.documentVersion ? generateQuestId(referenceInfo.document.questId, referenceInfo.documentVersion.version, referenceInfo.documentVersion.current, nodeQuestId, forceVersion) : undefined; }; export const generateQuestId = (documentQuestId, version, current, nodeQuestId, forceVersion = false) => { return `${documentQuestId}${nodeQuestId ? `/${nodeQuestId}` : ''}${generateQuestIdVersionPostfix(version, current ?? false, forceVersion)}`; }; /** Generates version postfix, like [versionumber] or empty in case it's current version. * @param version Quest version specification. Might be number, date or Quest specific version specification. * @param current Boolean indicating if given version is to be known as current version. * @param force Boolean indicating to force version specification output even if this was current document. */ export const generateQuestIdVersionPostfix = (version, current, force = false) => { return !current || force ? `[${version}]` : ''; }; /** Get levels from given quest identification. For example: '1/1.1/1.1.1' => ['1', '1/1.1', '1/1.1/1.1.1'] * @param questId Quest identification to extract levels from. */ export const getLevels = (questId) => { const levels = []; let level = ''; questId.split('/').forEach((value) => { level += level === '' ? value : `/${value}`; levels.push(level); }); return levels; }; /** Return level above given quest identification. For example: '1/1.1/1.1.1' => '1/1.1' * @param questId Quest identification. */ export const levelUp = (questId) => { const index = questId.lastIndexOf('/'); if (index > 0) { return questId.substring(0, index); } else { return ''; } }; /** Returns first level of questId. * @param questId Quest identification. */ export const firstLevel = (questId) => { const index = questId.indexOf('/'); if (index !== -1) { return questId.substring(0, index); } else { return undefined; } }; /** Returns last level of questId. * @param questId Quest identification. */ export const lastLevel = (questId) => { const index = questId.lastIndexOf('/'); if (index !== -1) { if (index < questId.length - 1) { return questId.substring(index + 1); } else { return questId.substring(0, index); } } else { return questId; } }; /** Checks given QuestId for version specification. * @param questId Quest identification. */ export const hasVersionSpecification = (questId) => { return questId.indexOf('[') !== -1; }; /** Return array with QuestId and optional version specification. * @param questId Quest identification with optional version specification */ export const extractIdAndVersion = (questId) => { const startindex = questId.indexOf('['); if (startindex !== -1) { const endindex = questId.indexOf(']', startindex); if (endindex > startindex) { const version = questId.substring(startindex + 1, endindex); let qid = questId.substring(0, startindex); if (endindex < questId.length) { qid += questId.substring(endindex + 1); } return [qid, version.trim() === '' ? undefined : version]; } } return [questId, undefined]; }; /** Return QuestId without version specification. * @param questId Quest identification with optional version specification to be stripped. */ export const extractId = (questId) => { const startindex = questId.indexOf('['); if (startindex !== -1) { const endindex = questId.indexOf(']', startindex); if (endindex > startindex) { let qid = questId.substring(0, startindex); if (endindex < questId.length) { qid += questId.substring(endindex + 1); } return qid; } } return questId; }; /** Return version specification from QuestId. * @param questId Quest identification with optional version specification to be extracted. */ export const extractVersion = (questId) => { const startindex = questId.indexOf('['); if (startindex !== -1) { const endindex = questId.indexOf(']', startindex); if (endindex > startindex) { const version = questId.substring(startindex + 1, endindex); return version.trim() === '' ? undefined : version; } } return undefined; }; /** Get numeric representation of given version. * @param version Either numeric or string representation of version. Version specifications like last/first are ignored. */ export const numericVersion = (version) => { if (typeof version === 'number') { return version; } if (version) { try { const v = parseInt(version); if (!isNaN(v)) { return v; } } catch (e) { } } return undefined; }; //# sourceMappingURL=questid.js.map