knowmax-quest-utils
Version:
Utilities for creating a Knowmax Quest client.
168 lines • 6.9 kB
JavaScript
;
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