UNPKG

knowmax-quest-utils

Version:

Utilities for creating a Knowmax Quest client.

168 lines 6.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.numericVersion = exports.extractVersion = exports.extractId = exports.extractIdAndVersion = exports.hasVersionSpecification = exports.lastLevel = exports.firstLevel = exports.levelUp = exports.getLevels = exports.generateQuestIdVersionPostfix = exports.generateQuestId = exports.generateQuestIdFromReference = void 0; /** 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; }*/ const generateQuestIdFromReference = (referenceInfo, nodeQuestId, forceVersion = false) => { return referenceInfo.document && referenceInfo.documentVersion ? (0, exports.generateQuestId)(referenceInfo.document.questId, referenceInfo.documentVersion.version, referenceInfo.documentVersion.current, nodeQuestId, forceVersion) : undefined; }; exports.generateQuestIdFromReference = generateQuestIdFromReference; const generateQuestId = (documentQuestId, version, current, nodeQuestId, forceVersion = false) => { return `${documentQuestId}${nodeQuestId ? `/${nodeQuestId}` : ''}${(0, exports.generateQuestIdVersionPostfix)(version, current ?? false, forceVersion)}`; }; exports.generateQuestId = generateQuestId; /** 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. */ const generateQuestIdVersionPostfix = (version, current, force = false) => { return !current || force ? `[${version}]` : ''; }; exports.generateQuestIdVersionPostfix = generateQuestIdVersionPostfix; /** 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. */ const getLevels = (questId) => { const levels = []; let level = ''; questId.split('/').forEach((value) => { level += level === '' ? value : `/${value}`; levels.push(level); }); return levels; }; exports.getLevels = getLevels; /** Return level above given quest identification. For example: '1/1.1/1.1.1' => '1/1.1' * @param questId Quest identification. */ const levelUp = (questId) => { const index = questId.lastIndexOf('/'); if (index > 0) { return questId.substring(0, index); } else { return ''; } }; exports.levelUp = levelUp; /** Returns first level of questId. * @param questId Quest identification. */ const firstLevel = (questId) => { const index = questId.indexOf('/'); if (index !== -1) { return questId.substring(0, index); } else { return undefined; } }; exports.firstLevel = firstLevel; /** Returns last level of questId. * @param questId Quest identification. */ 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; } }; exports.lastLevel = lastLevel; /** Checks given QuestId for version specification. * @param questId Quest identification. */ const hasVersionSpecification = (questId) => { return questId.indexOf('[') !== -1; }; exports.hasVersionSpecification = hasVersionSpecification; /** Return array with QuestId and optional version specification. * @param questId Quest identification with optional version specification */ 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]; }; exports.extractIdAndVersion = extractIdAndVersion; /** Return QuestId without version specification. * @param questId Quest identification with optional version specification to be stripped. */ 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; }; exports.extractId = extractId; /** Return version specification from QuestId. * @param questId Quest identification with optional version specification to be extracted. */ 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; }; exports.extractVersion = extractVersion; /** Get numeric representation of given version. * @param version Either numeric or string representation of version. Version specifications like last/first are ignored. */ 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; }; exports.numericVersion = numericVersion; //# sourceMappingURL=questid.js.map