@webex/plugin-meetings 3.0.0-beta.241 → 3.0.0-beta.243
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +25 -1
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +5 -0
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/meeting/request.js +1 -1
- package/dist/meeting/request.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/metrics/constants.d.ts +2 -0
- package/package.json +19 -19
- package/src/constants.ts +1 -0
- package/src/locus-info/index.ts +33 -2
- package/src/locus-info/parser.ts +7 -0
- package/src/meeting/request.ts +1 -1
- package/src/metrics/constants.ts +2 -0
- package/test/unit/spec/locus-info/index.js +118 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MAX_OOO_DELTA_COUNT","OOO_DELTA_WAIT_TIME","OOO_DELTA_WAIT_TIME_RANDOM_DELAY","Parser","deltaCompareFunc","left","right","loci","LT","GT","extract","extractComparisonState","isSequenceEmpty","result","compareSequence","baseSequence","queue","SortedQueue","status","onDeltaAction","workingCopy","syncTimer","incomingFullDto","isLoci","LoggerProxy","logger","info","comparisonResult","compareFullDtoSequence","USE_INCOMING","newLoci","isValid","size","processDeltaEvent","action","locus","enqueue","triggerSync","reason","stopSyncTimer","pause","DESYNC","timeout","Math","random","setTimeout","clearTimeout","WAIT","dequeue","isValidLocus","nextEvent","compare","lociComparison","debug","needToWait","startSyncTimer","locus2string","sequence","entries","length","at","current","incoming","comparison","min","max","currentIsNotUnique","unique","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","currentIsUnique","incomingIsUnique","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","pack","packComparisonResult","compareDelta","compareToAction","slice","USE_CURRENT","local","getMetaData","delta","getUniqueSequences","rules","checkSequenceOverlap","checkUnequalRanges","checkForUniqueEntries","checkIfOutOfSync","rule","ERROR","lociComparisonResult","split","first","last","rangeStart","rangeEnd","baseLoci","otherLoci","diff","getNumbersOutOfRange","output","filter","num","sort","a","b","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","call","newData","oldData","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution"],"sources":["parser.ts"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SortedQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nconst MAX_OOO_DELTA_COUNT = 5; // when we receive an out-of-order delta and the queue builds up to MAX_OOO_DELTA_COUNT, we do a sync with Locus\nconst OOO_DELTA_WAIT_TIME = 10000; // [ms] minimum wait time before we do a sync if we get out-of-order deltas\nconst OOO_DELTA_WAIT_TIME_RANDOM_DELAY = 5000; // [ms] max random delay added to OOO_DELTA_WAIT_TIME\n\ntype LocusDeltaDto = {\n baseSequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n sequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n syncUrl: string;\n};\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n status:\n | 'IDLE' // not doing anything\n | 'PAUSED' // paused, because we are doing a sync\n | 'WORKING' // processing a delta event\n | 'BLOCKED'; // received an out-of-order delta, so waiting for the missing one\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n WAIT: 'WAIT',\n ERROR: 'ERROR',\n };\n\n queue: SortedQueue<LocusDeltaDto>;\n workingCopy: any;\n syncTimer: null | number | NodeJS.Timeout;\n\n /**\n * @constructs Parser\n */\n constructor() {\n const deltaCompareFunc = (left: LocusDeltaDto, right: LocusDeltaDto) => {\n const {LT, GT} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n\n if (Parser.isSequenceEmpty(left)) {\n return -1;\n }\n if (Parser.isSequenceEmpty(right)) {\n return 1;\n }\n const result = extract(Parser.compareSequence(left.baseSequence, right.baseSequence));\n\n if (result === LT) {\n return -1;\n }\n if (result === GT) {\n return 1;\n }\n\n return 0;\n };\n\n this.queue = new SortedQueue<LocusDeltaDto>(deltaCompareFunc);\n this.status = 'IDLE';\n this.onDeltaAction = null;\n this.workingCopy = null;\n this.syncTimer = null;\n }\n\n /**\n * Returns a debug string representing a locus delta - useful for logging\n *\n * @param {LocusDeltaDto} locus Locus delta\n * @returns {string}\n */\n static locus2string(locus: LocusDeltaDto) {\n if (!locus.sequence?.entries) {\n return 'invalid';\n }\n\n return locus.sequence.entries.length ? `seq=${locus.sequence.entries.at(-1)}` : 'empty';\n }\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n } else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n } else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n } else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n private static compareDelta(current, incoming) {\n const {LT, GT, EQ, DESYNC, USE_INCOMING, WAIT} = Parser.loci;\n\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n case LT:\n if (extract(Parser.compareSequence(incoming.baseSequence, incoming.sequence)) === EQ) {\n // special case where Locus sends a delta with baseSequence === sequence to trigger a sync,\n // because the delta event is too large to be sent over mercury connection\n comparison = DESYNC;\n } else {\n // the incoming locus has baseSequence from the future, so it is out-of-order,\n // we are missing 1 or more locus that should be in front of it, we need to wait for it\n comparison = WAIT;\n }\n break;\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n /**\n * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas\n *\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n static compareFullDtoSequence(current, incomingFullDto) {\n if (Parser.isSequenceEmpty(current) || Parser.isSequenceEmpty(incomingFullDto)) {\n return Parser.loci.USE_INCOMING;\n }\n\n // the sequence.entries list will always contain at least 1 entry\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n return incomingFullDto.sequence.entries.slice(-1)[0] > current.sequence.entries.slice(-1)[0]\n ? Parser.loci.USE_INCOMING\n : Parser.loci.USE_CURRENT;\n }\n\n /**\n * Returns true if the incoming full locus DTO is newer than the current working copy\n *\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n isNewFullLocus(incomingFullDto) {\n if (!Parser.isLoci(incomingFullDto)) {\n LoggerProxy.logger.info('Locus-info:parser#isNewFullLocus --> Ignoring non-locus object.');\n\n return false;\n }\n\n if (!this.workingCopy) {\n // we don't have a working copy yet, so any full locus is better than nothing\n return true;\n }\n\n const comparisonResult = Parser.compareFullDtoSequence(this.workingCopy, incomingFullDto);\n\n return comparisonResult === Parser.loci.USE_INCOMING;\n }\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local: any = Parser.getMetaData(current);\n const delta: any = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync,\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result: string) {\n const {DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING} = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`\n );\n }\n\n return action;\n }\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult: string) {\n return lociComparisonResult.split(':')[0];\n }\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence: any) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries,\n };\n }\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci: any, otherLoci: any) {\n const diff: any = difference(baseLoci.entries, otherLoci.entries);\n\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {isLoci} = Parser;\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n LoggerProxy.logger.info(\n 'Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:',\n this.workingCopy,\n 'newLoci:',\n newLoci\n );\n } else {\n isValid = true;\n }\n\n return isValid;\n }\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) => Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n if (this.status === 'PAUSED') {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n if (this.status === 'BLOCKED') {\n LoggerProxy.logger.info(\n 'Locus-info:parser#nextEvent --> Locus parser blocked by out-of-order delta.'\n );\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n } else {\n this.status = 'IDLE';\n }\n }\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDeltaAction(action: string, locus) {}\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n\n if (this.onDeltaAction) {\n if (this.status === 'BLOCKED') {\n if (this.queue.size() > MAX_OOO_DELTA_COUNT) {\n this.triggerSync('queue too big, blocked on out-of-order delta');\n } else {\n this.processDeltaEvent();\n }\n } else if (this.status === 'IDLE') {\n // Update status, ensure we only process one event at a time.\n this.status = 'WORKING';\n\n this.processDeltaEvent();\n }\n }\n }\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData: string, oldData: string) {\n return `${newData}:${oldData}`;\n }\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n this.status = 'PAUSED';\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n /**\n * Triggers a sync with Locus\n *\n * @param {string} reason used just for logging\n * @returns {undefined}\n */\n private triggerSync(reason: string) {\n LoggerProxy.logger.info(`Locus-info:parser#triggerSync --> doing sync, reason: ${reason}`);\n this.stopSyncTimer();\n this.pause();\n this.onDeltaAction(Parser.loci.DESYNC, this.workingCopy);\n }\n\n /**\n * Starts a timer with a random delay. When that timer expires we will do a sync.\n *\n * The main purpose of this timer is to handle a case when we get some out-of-order deltas,\n * so we start waiting to receive the missing delta. If that delta never arrives, this timer\n * will trigger a sync with Locus.\n *\n * @returns {undefined}\n */\n private startSyncTimer() {\n if (this.syncTimer === null) {\n const timeout = OOO_DELTA_WAIT_TIME + Math.random() * OOO_DELTA_WAIT_TIME_RANDOM_DELAY;\n\n this.syncTimer = setTimeout(() => {\n this.syncTimer = null;\n this.triggerSync('timer expired, blocked on out-of-order delta');\n }, timeout);\n }\n }\n\n /**\n * Stops the timer for triggering a sync\n *\n * @returns {undefined}\n */\n private stopSyncTimer() {\n if (this.syncTimer !== null) {\n clearTimeout(this.syncTimer);\n this.syncTimer = null;\n }\n }\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING, WAIT} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n this.nextEvent();\n\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n let needToWait = false;\n\n if (lociComparison === DESYNC) {\n // wait for desync response\n this.pause();\n } else if (lociComparison === USE_INCOMING) {\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING locus.\n this.workingCopy = newLoci;\n } else if (lociComparison === WAIT) {\n // we've taken newLoci from the front of the queue, so put it back there as we have to wait\n // for the one that should be in front of it, before we can process it\n this.queue.enqueue(newLoci);\n needToWait = true;\n }\n\n if (needToWait) {\n this.status = 'BLOCKED';\n this.startSyncTimer();\n } else {\n this.stopSyncTimer();\n\n if (this.status === 'BLOCKED') {\n // we are not blocked anymore\n this.status = 'WORKING';\n\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> received delta that we were waiting for ${Parser.locus2string(\n newLoci\n )}, not blocked anymore`\n );\n }\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> Locus Delta ${Parser.locus2string(\n newLoci\n )}, Action: ${lociComparison}`\n );\n\n this.onDeltaAction(lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n this.status = 'WORKING';\n this.nextEvent();\n }\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode: string, comparison: string) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`,\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max',\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min',\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange',\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange',\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange',\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique',\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique',\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap',\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin',\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)',\n },\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MAX_OOO_DELTA_COUNT","OOO_DELTA_WAIT_TIME","OOO_DELTA_WAIT_TIME_RANDOM_DELAY","Parser","deltaCompareFunc","left","right","loci","LT","GT","extract","extractComparisonState","isSequenceEmpty","result","compareSequence","baseSequence","queue","SortedQueue","status","onDeltaAction","workingCopy","syncTimer","incomingFullDto","isLoci","LoggerProxy","logger","info","comparisonResult","compareFullDtoSequence","USE_INCOMING","newLoci","isValid","size","processDeltaEvent","action","locus","enqueue","triggerSync","reason","stopSyncTimer","pause","DESYNC","timeout","Math","random","setTimeout","clearTimeout","WAIT","dequeue","isValidLocus","nextEvent","compare","lociComparison","debug","needToWait","startSyncTimer","locus2string","sequence","entries","length","at","current","incoming","comparison","min","max","currentIsNotUnique","unique","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","currentIsUnique","incomingIsUnique","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","pack","packComparisonResult","compareDelta","compareToAction","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_OUT_OF_ORDER","stack","Error","slice","USE_CURRENT","local","getMetaData","delta","getUniqueSequences","rules","checkSequenceOverlap","checkUnequalRanges","checkForUniqueEntries","checkIfOutOfSync","rule","ERROR","lociComparisonResult","split","first","last","rangeStart","rangeEnd","baseLoci","otherLoci","diff","getNumbersOutOfRange","output","filter","num","sort","a","b","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","call","newData","oldData","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution"],"sources":["parser.ts"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SortedQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nconst MAX_OOO_DELTA_COUNT = 5; // when we receive an out-of-order delta and the queue builds up to MAX_OOO_DELTA_COUNT, we do a sync with Locus\nconst OOO_DELTA_WAIT_TIME = 10000; // [ms] minimum wait time before we do a sync if we get out-of-order deltas\nconst OOO_DELTA_WAIT_TIME_RANDOM_DELAY = 5000; // [ms] max random delay added to OOO_DELTA_WAIT_TIME\n\ntype LocusDeltaDto = {\n baseSequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n sequence: {\n rangeStart: number;\n rangeEnd: number;\n entries: number[];\n };\n syncUrl: string;\n};\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n status:\n | 'IDLE' // not doing anything\n | 'PAUSED' // paused, because we are doing a sync\n | 'WORKING' // processing a delta event\n | 'BLOCKED'; // received an out-of-order delta, so waiting for the missing one\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n WAIT: 'WAIT',\n ERROR: 'ERROR',\n };\n\n queue: SortedQueue<LocusDeltaDto>;\n workingCopy: any;\n syncTimer: null | number | NodeJS.Timeout;\n\n /**\n * @constructs Parser\n */\n constructor() {\n const deltaCompareFunc = (left: LocusDeltaDto, right: LocusDeltaDto) => {\n const {LT, GT} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n\n if (Parser.isSequenceEmpty(left)) {\n return -1;\n }\n if (Parser.isSequenceEmpty(right)) {\n return 1;\n }\n const result = extract(Parser.compareSequence(left.baseSequence, right.baseSequence));\n\n if (result === LT) {\n return -1;\n }\n if (result === GT) {\n return 1;\n }\n\n return 0;\n };\n\n this.queue = new SortedQueue<LocusDeltaDto>(deltaCompareFunc);\n this.status = 'IDLE';\n this.onDeltaAction = null;\n this.workingCopy = null;\n this.syncTimer = null;\n }\n\n /**\n * Returns a debug string representing a locus delta - useful for logging\n *\n * @param {LocusDeltaDto} locus Locus delta\n * @returns {string}\n */\n static locus2string(locus: LocusDeltaDto) {\n if (!locus.sequence?.entries) {\n return 'invalid';\n }\n\n return locus.sequence.entries.length ? `seq=${locus.sequence.entries.at(-1)}` : 'empty';\n }\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n } else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n } else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n } else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n private static compareDelta(current, incoming) {\n const {LT, GT, EQ, DESYNC, USE_INCOMING, WAIT} = Parser.loci;\n\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n case LT:\n if (extract(Parser.compareSequence(incoming.baseSequence, incoming.sequence)) === EQ) {\n // special case where Locus sends a delta with baseSequence === sequence to trigger a sync,\n // because the delta event is too large to be sent over mercury connection\n comparison = DESYNC;\n } else {\n // the incoming locus has baseSequence from the future, so it is out-of-order,\n // we are missing 1 or more locus that should be in front of it, we need to wait for it\n comparison = WAIT;\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_OUT_OF_ORDER, {\n stack: new Error().stack,\n });\n }\n break;\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n /**\n * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas\n *\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n static compareFullDtoSequence(current, incomingFullDto) {\n if (Parser.isSequenceEmpty(current) || Parser.isSequenceEmpty(incomingFullDto)) {\n return Parser.loci.USE_INCOMING;\n }\n\n // the sequence.entries list will always contain at least 1 entry\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n return incomingFullDto.sequence.entries.slice(-1)[0] > current.sequence.entries.slice(-1)[0]\n ? Parser.loci.USE_INCOMING\n : Parser.loci.USE_CURRENT;\n }\n\n /**\n * Returns true if the incoming full locus DTO is newer than the current working copy\n *\n * @param {Types~Locus} incomingFullDto New Full Locus DTO\n * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT\n */\n isNewFullLocus(incomingFullDto) {\n if (!Parser.isLoci(incomingFullDto)) {\n LoggerProxy.logger.info('Locus-info:parser#isNewFullLocus --> Ignoring non-locus object.');\n\n return false;\n }\n\n if (!this.workingCopy) {\n // we don't have a working copy yet, so any full locus is better than nothing\n return true;\n }\n\n const comparisonResult = Parser.compareFullDtoSequence(this.workingCopy, incomingFullDto);\n\n return comparisonResult === Parser.loci.USE_INCOMING;\n }\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local: any = Parser.getMetaData(current);\n const delta: any = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync,\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result: string) {\n const {DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING} = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`\n );\n }\n\n return action;\n }\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult: string) {\n return lociComparisonResult.split(':')[0];\n }\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence: any) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries,\n };\n }\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci: any, otherLoci: any) {\n const diff: any = difference(baseLoci.entries, otherLoci.entries);\n\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {isLoci} = Parser;\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n LoggerProxy.logger.info(\n 'Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:',\n this.workingCopy,\n 'newLoci:',\n newLoci\n );\n } else {\n isValid = true;\n }\n\n return isValid;\n }\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) => Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n if (this.status === 'PAUSED') {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n if (this.status === 'BLOCKED') {\n LoggerProxy.logger.info(\n 'Locus-info:parser#nextEvent --> Locus parser blocked by out-of-order delta.'\n );\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n } else {\n this.status = 'IDLE';\n }\n }\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDeltaAction(action: string, locus) {}\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n\n if (this.onDeltaAction) {\n if (this.status === 'BLOCKED') {\n if (this.queue.size() > MAX_OOO_DELTA_COUNT) {\n this.triggerSync('queue too big, blocked on out-of-order delta');\n } else {\n this.processDeltaEvent();\n }\n } else if (this.status === 'IDLE') {\n // Update status, ensure we only process one event at a time.\n this.status = 'WORKING';\n\n this.processDeltaEvent();\n }\n }\n }\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData: string, oldData: string) {\n return `${newData}:${oldData}`;\n }\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n this.status = 'PAUSED';\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n /**\n * Triggers a sync with Locus\n *\n * @param {string} reason used just for logging\n * @returns {undefined}\n */\n private triggerSync(reason: string) {\n LoggerProxy.logger.info(`Locus-info:parser#triggerSync --> doing sync, reason: ${reason}`);\n this.stopSyncTimer();\n this.pause();\n this.onDeltaAction(Parser.loci.DESYNC, this.workingCopy);\n }\n\n /**\n * Starts a timer with a random delay. When that timer expires we will do a sync.\n *\n * The main purpose of this timer is to handle a case when we get some out-of-order deltas,\n * so we start waiting to receive the missing delta. If that delta never arrives, this timer\n * will trigger a sync with Locus.\n *\n * @returns {undefined}\n */\n private startSyncTimer() {\n if (this.syncTimer === null) {\n const timeout = OOO_DELTA_WAIT_TIME + Math.random() * OOO_DELTA_WAIT_TIME_RANDOM_DELAY;\n\n this.syncTimer = setTimeout(() => {\n this.syncTimer = null;\n this.triggerSync('timer expired, blocked on out-of-order delta');\n }, timeout);\n }\n }\n\n /**\n * Stops the timer for triggering a sync\n *\n * @returns {undefined}\n */\n private stopSyncTimer() {\n if (this.syncTimer !== null) {\n clearTimeout(this.syncTimer);\n this.syncTimer = null;\n }\n }\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING, WAIT} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n this.nextEvent();\n\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n let needToWait = false;\n\n if (lociComparison === DESYNC) {\n // wait for desync response\n this.pause();\n } else if (lociComparison === USE_INCOMING) {\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING locus.\n this.workingCopy = newLoci;\n } else if (lociComparison === WAIT) {\n // we've taken newLoci from the front of the queue, so put it back there as we have to wait\n // for the one that should be in front of it, before we can process it\n this.queue.enqueue(newLoci);\n needToWait = true;\n }\n\n if (needToWait) {\n this.status = 'BLOCKED';\n this.startSyncTimer();\n } else {\n this.stopSyncTimer();\n\n if (this.status === 'BLOCKED') {\n // we are not blocked anymore\n this.status = 'WORKING';\n\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> received delta that we were waiting for ${Parser.locus2string(\n newLoci\n )}, not blocked anymore`\n );\n }\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> Locus Delta ${Parser.locus2string(\n newLoci\n )}, Action: ${lociComparison}`\n );\n\n this.onDeltaAction(lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n this.status = 'WORKING';\n this.nextEvent();\n }\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode: string, comparison: string) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`,\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max',\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min',\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange',\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange',\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange',\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique',\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique',\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap',\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin',\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)',\n },\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAEA;AACA;AAEA;AACA;AAAsD;AAEtD,IAAMA,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAMC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACnC,IAAMC,gCAAgC,GAAG,IAAI,CAAC,CAAC;AAgB/C;AACA;AACA;AACA;AACA;AAJA,IAKqBC,MAAM;EACzB;;EAKe;;EAEf;;EAgBA;AACF;AACA;EACE,kBAAc;IAAA;IAAA;IAAA;IAAA;IAAA;IACZ,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,IAAmB,EAAEC,KAAoB,EAAK;MACtE,mBAAiBH,MAAM,CAACI,IAAI;QAArBC,EAAE,gBAAFA,EAAE;QAAEC,EAAE,gBAAFA,EAAE;MACb,IAA+BC,OAAO,GAAIP,MAAM,CAAzCQ,sBAAsB;MAE7B,IAAIR,MAAM,CAACS,eAAe,CAACP,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,CAAC;MACX;MACA,IAAIF,MAAM,CAACS,eAAe,CAACN,KAAK,CAAC,EAAE;QACjC,OAAO,CAAC;MACV;MACA,IAAMO,MAAM,GAAGH,OAAO,CAACP,MAAM,CAACW,eAAe,CAACT,IAAI,CAACU,YAAY,EAAET,KAAK,CAACS,YAAY,CAAC,CAAC;MAErF,IAAIF,MAAM,KAAKL,EAAE,EAAE;QACjB,OAAO,CAAC,CAAC;MACX;MACA,IAAIK,MAAM,KAAKJ,EAAE,EAAE;QACjB,OAAO,CAAC;MACV;MAEA,OAAO,CAAC;IACV,CAAC;IAED,IAAI,CAACO,KAAK,GAAG,IAAIC,cAAW,CAAgBb,gBAAgB,CAAC;IAC7D,IAAI,CAACc,MAAM,GAAG,MAAM;IACpB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA;IAmPA;AACF;AACA;AACA;AACA;AACA;IACE,wBAAeC,eAAe,EAAE;MAC9B,IAAI,CAACnB,MAAM,CAACoB,MAAM,CAACD,eAAe,CAAC,EAAE;QACnCE,oBAAW,CAACC,MAAM,CAACC,IAAI,CAAC,iEAAiE,CAAC;QAE1F,OAAO,KAAK;MACd;MAEA,IAAI,CAAC,IAAI,CAACN,WAAW,EAAE;QACrB;QACA,OAAO,IAAI;MACb;MAEA,IAAMO,gBAAgB,GAAGxB,MAAM,CAACyB,sBAAsB,CAAC,IAAI,CAACR,WAAW,EAAEE,eAAe,CAAC;MAEzF,OAAOK,gBAAgB,KAAKxB,MAAM,CAACI,IAAI,CAACsB,YAAY;IACtD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA;IAuJA;AACF;AACA;AACA;AACA;IACE,sBAAaC,OAAO,EAAE;MACpB,IAAIC,OAAO,GAAG,KAAK;MACnB,IAAOR,MAAM,GAAIpB,MAAM,CAAhBoB,MAAM;;MAEb;MACA,IAAI,CAACA,MAAM,CAAC,IAAI,CAACH,WAAW,CAAC,IAAI,CAACG,MAAM,CAACO,OAAO,CAAC,EAAE;QACjDN,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,iFAAiF,EACjF,IAAI,CAACN,WAAW,EAChB,UAAU,EACVU,OAAO,CACR;MACH,CAAC,MAAM;QACLC,OAAO,GAAG,IAAI;MAChB;MAEA,OAAOA,OAAO;IAChB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA;IAgCA;AACF;AACA;AACA;AACA;IACE,qBAAY;MACV,IAAI,IAAI,CAACb,MAAM,KAAK,QAAQ,EAAE;QAC5BM,oBAAW,CAACC,MAAM,CAACC,IAAI,CAAC,sDAAsD,CAAC;QAE/E;MACF;MAEA,IAAI,IAAI,CAACR,MAAM,KAAK,SAAS,EAAE;QAC7BM,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,6EAA6E,CAC9E;QAED;MACF;;MAEA;MACA,IAAI,IAAI,CAACV,KAAK,CAACgB,IAAI,EAAE,GAAG,CAAC,EAAE;QACzB,IAAI,CAACC,iBAAiB,EAAE;MAC1B,CAAC,MAAM;QACL,IAAI,CAACf,MAAM,GAAG,MAAM;MACtB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;IACE;EAAA;IAAA;IAAA,OACA,uBAAcgB,MAAc,EAAEC,KAAK,EAAE,CAAC;;IAEtC;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,sBAAa5B,IAAI,EAAE;MACjB;MACA,IAAI,CAACS,KAAK,CAACoB,OAAO,CAAC7B,IAAI,CAAC;MAExB,IAAI,IAAI,CAACY,aAAa,EAAE;QACtB,IAAI,IAAI,CAACD,MAAM,KAAK,SAAS,EAAE;UAC7B,IAAI,IAAI,CAACF,KAAK,CAACgB,IAAI,EAAE,GAAGhC,mBAAmB,EAAE;YAC3C,IAAI,CAACqC,WAAW,CAAC,8CAA8C,CAAC;UAClE,CAAC,MAAM;YACL,IAAI,CAACJ,iBAAiB,EAAE;UAC1B;QACF,CAAC,MAAM,IAAI,IAAI,CAACf,MAAM,KAAK,MAAM,EAAE;UACjC;UACA,IAAI,CAACA,MAAM,GAAG,SAAS;UAEvB,IAAI,CAACe,iBAAiB,EAAE;QAC1B;MACF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA;IAUA;AACF;AACA;AACA;IACE,iBAAQ;MACN,IAAI,CAACf,MAAM,GAAG,QAAQ;MACtBM,oBAAW,CAACC,MAAM,CAACC,IAAI,CAAC,kDAAkD,CAAC;IAC7E;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,qBAAoBY,MAAc,EAAE;MAClCd,oBAAW,CAACC,MAAM,CAACC,IAAI,iEAA0DY,MAAM,EAAG;MAC1F,IAAI,CAACC,aAAa,EAAE;MACpB,IAAI,CAACC,KAAK,EAAE;MACZ,IAAI,CAACrB,aAAa,CAAChB,MAAM,CAACI,IAAI,CAACkC,MAAM,EAAE,IAAI,CAACrB,WAAW,CAAC;IAC1D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA;IAAA,OASA,0BAAyB;MAAA;MACvB,IAAI,IAAI,CAACC,SAAS,KAAK,IAAI,EAAE;QAC3B,IAAMqB,OAAO,GAAGzC,mBAAmB,GAAG0C,IAAI,CAACC,MAAM,EAAE,GAAG1C,gCAAgC;QAEtF,IAAI,CAACmB,SAAS,GAAGwB,UAAU,CAAC,YAAM;UAChC,KAAI,CAACxB,SAAS,GAAG,IAAI;UACrB,KAAI,CAACgB,WAAW,CAAC,8CAA8C,CAAC;QAClE,CAAC,EAAEK,OAAO,CAAC;MACb;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,yBAAwB;MACtB,IAAI,IAAI,CAACrB,SAAS,KAAK,IAAI,EAAE;QAC3ByB,YAAY,CAAC,IAAI,CAACzB,SAAS,CAAC;QAC5B,IAAI,CAACA,SAAS,GAAG,IAAI;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,6BAAoB;MAClB,oBAAqClB,MAAM,CAACI,IAAI;QAAzCkC,MAAM,iBAANA,MAAM;QAAEZ,YAAY,iBAAZA,YAAY;QAAEkB,IAAI,iBAAJA,IAAI;MACjC,IAA+BrC,OAAO,GAAIP,MAAM,CAAzCQ,sBAAsB;MAC7B,IAAMmB,OAAO,GAAG,IAAI,CAACd,KAAK,CAACgC,OAAO,EAAE;MAEpC,IAAI,CAAC,IAAI,CAACC,YAAY,CAACnB,OAAO,CAAC,EAAE;QAC/B,IAAI,CAACoB,SAAS,EAAE;QAEhB;MACF;MAEA,IAAMrC,MAAM,GAAGV,MAAM,CAACgD,OAAO,CAAC,IAAI,CAAC/B,WAAW,EAAEU,OAAO,CAAC;MACxD,IAAMsB,cAAc,GAAG1C,OAAO,CAACG,MAAM,CAAC;;MAEtC;MACA;MACAW,oBAAW,CAACC,MAAM,CAAC4B,KAAK,gEAAyDxC,MAAM,EAAG;MAE1F,IAAIyC,UAAU,GAAG,KAAK;MAEtB,IAAIF,cAAc,KAAKX,MAAM,EAAE;QAC7B;QACA,IAAI,CAACD,KAAK,EAAE;MACd,CAAC,MAAM,IAAIY,cAAc,KAAKvB,YAAY,EAAE;QAC1C;QACA;QACA;QACA,IAAI,CAACT,WAAW,GAAGU,OAAO;MAC5B,CAAC,MAAM,IAAIsB,cAAc,KAAKL,IAAI,EAAE;QAClC;QACA;QACA,IAAI,CAAC/B,KAAK,CAACoB,OAAO,CAACN,OAAO,CAAC;QAC3BwB,UAAU,GAAG,IAAI;MACnB;MAEA,IAAIA,UAAU,EAAE;QACd,IAAI,CAACpC,MAAM,GAAG,SAAS;QACvB,IAAI,CAACqC,cAAc,EAAE;MACvB,CAAC,MAAM;QACL,IAAI,CAAChB,aAAa,EAAE;QAEpB,IAAI,IAAI,CAACrB,MAAM,KAAK,SAAS,EAAE;UAC7B;UACA,IAAI,CAACA,MAAM,GAAG,SAAS;UAEvBM,oBAAW,CAACC,MAAM,CAACC,IAAI,2FAC8DvB,MAAM,CAACqD,YAAY,CACpG1B,OAAO,CACR,2BACF;QACH;MACF;MAEA,IAAI,IAAI,CAACX,aAAa,EAAE;QACtBK,oBAAW,CAACC,MAAM,CAACC,IAAI,+DACkCvB,MAAM,CAACqD,YAAY,CACxE1B,OAAO,CACR,uBAAasB,cAAc,EAC7B;QAED,IAAI,CAACjC,aAAa,CAACiC,cAAc,EAAEtB,OAAO,CAAC;MAC7C;MAEA,IAAI,CAACoB,SAAS,EAAE;IAClB;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,kBAAS;MACP1B,oBAAW,CAACC,MAAM,CAACC,IAAI,CAAC,oDAAoD,CAAC;MAC7E,IAAI,CAACR,MAAM,GAAG,SAAS;MACvB,IAAI,CAACgC,SAAS,EAAE;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OApqBA,sBAAoBf,KAAoB,EAAE;MAAA;MACxC,IAAI,qBAACA,KAAK,CAACsB,QAAQ,4CAAd,gBAAgBC,OAAO,GAAE;QAC5B,OAAO,SAAS;MAClB;MAEA,OAAOvB,KAAK,CAACsB,QAAQ,CAACC,OAAO,CAACC,MAAM,iBAAUxB,KAAK,CAACsB,QAAQ,CAACC,OAAO,CAACE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAK,OAAO;IACzF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,8BAA4BC,OAAO,EAAEC,QAAQ,EAAE;MAC7C,IAAIC,UAAU,GAAG,IAAI;;MAErB;MACA,IAAIF,OAAO,CAACG,GAAG,GAAGF,QAAQ,CAACG,GAAG,EAAE;QAC9B;QACAF,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACE,EAAE,WAAQ;MACxC;MACA;MAAA,KACK,IAAIoD,OAAO,CAACI,GAAG,GAAGH,QAAQ,CAACE,GAAG,EAAE;QACnC;QACAD,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACC,EAAE,WAAQ;MACxC;;MAEA;MACA,OAAOuD,UAAU;IACnB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,4BAA0BF,OAAO,EAAEC,QAAQ,EAAE;MAC3C,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAMG,kBAAkB,GAAGL,OAAO,CAACM,MAAM,CAACR,MAAM,KAAK,CAAC;MACtD,IAAMS,mBAAmB,GAAGN,QAAQ,CAACK,MAAM,CAACR,MAAM,KAAK,CAAC;MACxD,IAAMU,iBAAiB,GAAGR,OAAO,CAACS,GAAG,GAAGT,OAAO,CAACG,GAAG;MACnD,IAAMO,kBAAkB,GAAGT,QAAQ,CAACQ,GAAG,GAAGR,QAAQ,CAACE,GAAG;;MAEtD;MACA,IAAIE,kBAAkB,IAAIE,mBAAmB,EAAE;QAC7C;QACA,IAAIC,iBAAiB,GAAGE,kBAAkB,EAAE;UAC1C;UACAR,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACE,EAAE,WAAQ;QACxC;QACA;QAAA,KACK,IAAI4D,iBAAiB,GAAGE,kBAAkB,EAAE;UAC/C;UACAR,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACC,EAAE,WAAQ;QACxC,CAAC,MAAM;UACL;UACA;UACAuD,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACiE,EAAE,WAAQ;QACxC;MACF;MAEA,OAAOT,UAAU;IACnB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA;IAAA,OASA,+BAA6BF,OAAO,EAAEC,QAAQ,EAAE;MAC9C,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAMU,eAAe,GAAGZ,OAAO,CAACM,MAAM,CAACR,MAAM,GAAG,CAAC;MACjD,IAAMe,gBAAgB,GAAGZ,QAAQ,CAACK,MAAM,CAACR,MAAM,GAAG,CAAC;;MAEnD;MACA,IAAIc,eAAe,IAAI,CAACC,gBAAgB,EAAE;QACxC;QACAX,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACE,EAAE,WAAQ;MACxC;MACA;MAAA,KACK,IAAI,CAACgE,eAAe,IAAIC,gBAAgB,EAAE;QAC7C;QACAX,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACC,EAAE,WAAQ;MACxC;MAEA,OAAOuD,UAAU;IACnB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,0BAAwBF,OAAO,EAAEC,QAAQ,EAAE;MACzC,IAAIC,UAAU,GAAG,IAAI;MACrB,IAAMY,gBAAgB,GAAGd,OAAO,CAACM,MAAM,CAAC,CAAC,CAAC;MAC1C,IAAMS,iBAAiB,GAAGd,QAAQ,CAACK,MAAM,CAAC,CAAC,CAAC;MAE5C,IAAMU,iBAAiB,GAAG,CAAChB,OAAO,CAACiB,KAAK,IAAI,CAACjB,OAAO,CAACS,GAAG;MACxD,IAAMS,kBAAkB,GAAG,CAACjB,QAAQ,CAACgB,KAAK,IAAI,CAAChB,QAAQ,CAACQ,GAAG;MAC3D,IAAMU,kBAAkB,GAAGH,iBAAiB,IAAIE,kBAAkB;MAElE,IAAME,cAAc,GAAG,SAAjBA,cAAc,CAAIC,IAAI,EAAElB,GAAG,EAAEC,GAAG;QAAA,OAAKiB,IAAI,CAACC,IAAI,CAAC,UAACC,GAAG;UAAA,OAAKpB,GAAG,GAAGoB,GAAG,IAAIA,GAAG,GAAGnB,GAAG;QAAA,EAAC;MAAA;MACrF;MACA,IAAMoB,kBAAkB,GAAGJ,cAAc,CAACpB,OAAO,CAACM,MAAM,EAAEL,QAAQ,CAACE,GAAG,EAAEF,QAAQ,CAACG,GAAG,CAAC;MACrF;MACA,IAAMqB,mBAAmB,GAAGL,cAAc,CAACnB,QAAQ,CAACK,MAAM,EAAEN,OAAO,CAACG,GAAG,EAAEH,OAAO,CAACI,GAAG,CAAC;MAErF,IAAIe,kBAAkB,IAAIK,kBAAkB,IAAIC,mBAAmB,EAAE;QACnE;QACA,IAAMC,SAAS,aAAM,CAACP,kBAAkB,cAAI,CAACK,kBAAkB,cAAI,CAACC,mBAAmB,CAAE;;QAEzF;QACAvB,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACkC,MAAM,qBAAW8C,SAAS,CAAE;MAC1D,CAAC,MAAM,IAAIZ,gBAAgB,GAAGC,iBAAiB,EAAE;QAC/C;QACAb,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACE,EAAE,YAAS;MACzC,CAAC,MAAM;QACL;QACAsD,UAAU,aAAM5D,MAAM,CAACI,IAAI,CAACC,EAAE,YAAS;MACzC;MAEA,OAAOuD,UAAU;IACnB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,iBAAeF,OAAO,EAAEC,QAAQ,EAAE;MAChC,IAAOlD,eAAe,GAAIT,MAAM,CAAzBS,eAAe;MACtB,IAA+BF,OAAO,GAAIP,MAAM,CAAzCQ,sBAAsB;MAC7B,IAA6B6E,IAAI,GAAIrF,MAAM,CAApCsF,oBAAoB;MAE3B,IAAI7E,eAAe,CAACiD,OAAO,CAAC,IAAIjD,eAAe,CAACkD,QAAQ,CAAC,EAAE;QACzD,OAAO0B,IAAI,CAACrF,MAAM,CAACI,IAAI,CAACsB,YAAY,EAAE,MAAM,CAAC;MAC/C;MAEA,IAAIiC,QAAQ,CAAC/C,YAAY,EAAE;QACzB,OAAOyE,IAAI,CAACrF,MAAM,CAACuF,YAAY,CAAC7B,OAAO,EAAEC,QAAQ,CAAC,EAAE,MAAM,CAAC;MAC7D;MAEA,IAAMjD,MAAM,GAAGV,MAAM,CAACW,eAAe,CAAC+C,OAAO,CAACJ,QAAQ,EAAEK,QAAQ,CAACL,QAAQ,CAAC;MAC1E,IAAMvB,MAAM,GAAG/B,MAAM,CAACwF,eAAe,CAACjF,OAAO,CAACG,MAAM,CAAC,CAAC;MAEtD,OAAO2E,IAAI,CAACtD,MAAM,EAAErB,MAAM,CAAC;IAC7B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAA;IAAA,OAUA,sBAA4BgD,OAAO,EAAEC,QAAQ,EAAE;MAC7C,oBAAiD3D,MAAM,CAACI,IAAI;QAArDC,EAAE,iBAAFA,EAAE;QAAEC,EAAE,iBAAFA,EAAE;QAAE+D,EAAE,iBAAFA,EAAE;QAAE/B,MAAM,iBAANA,MAAM;QAAEZ,YAAY,iBAAZA,YAAY;QAAEkB,IAAI,iBAAJA,IAAI;MAE7C,IAA+BrC,OAAO,GAAIP,MAAM,CAAzCQ,sBAAsB;MAC7B,IAA6B6E,IAAI,GAAIrF,MAAM,CAApCsF,oBAAoB;MAE3B,IAAM5E,MAAM,GAAGV,MAAM,CAACW,eAAe,CAAC+C,OAAO,CAACJ,QAAQ,EAAEK,QAAQ,CAACL,QAAQ,CAAC;MAC1E,IAAIM,UAAU,GAAGrD,OAAO,CAACG,MAAM,CAAC;MAEhC,IAAIkD,UAAU,KAAKvD,EAAE,EAAE;QACrB,OAAOgF,IAAI,CAACrF,MAAM,CAACwF,eAAe,CAAC5B,UAAU,CAAC,EAAElD,MAAM,CAAC;MACzD;MAEAkD,UAAU,GAAG5D,MAAM,CAACW,eAAe,CAAC+C,OAAO,CAACJ,QAAQ,EAAEK,QAAQ,CAAC/C,YAAY,CAAC;MAE5E,QAAQL,OAAO,CAACqD,UAAU,CAAC;QACzB,KAAKtD,EAAE;QACP,KAAK+D,EAAE;UACLT,UAAU,GAAGlC,YAAY;UACzB;QAEF,KAAKrB,EAAE;UACL,IAAIE,OAAO,CAACP,MAAM,CAACW,eAAe,CAACgD,QAAQ,CAAC/C,YAAY,EAAE+C,QAAQ,CAACL,QAAQ,CAAC,CAAC,KAAKe,EAAE,EAAE;YACpF;YACA;YACAT,UAAU,GAAGtB,MAAM;UACrB,CAAC,MAAM;YACL;YACA;YACAsB,UAAU,GAAGhB,IAAI;YAEjB6C,gBAAO,CAACC,oBAAoB,CAACC,kBAAkB,CAACC,wBAAwB,EAAE;cACxEC,KAAK,EAAE,IAAIC,KAAK,EAAE,CAACD;YACrB,CAAC,CAAC;UACJ;UACA;QACF;UACEjC,UAAU,GAAGtB,MAAM;MAAC;MAGxB,OAAO+C,IAAI,CAACzB,UAAU,EAAElD,MAAM,CAAC;IACjC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,gCAA8BgD,OAAO,EAAEvC,eAAe,EAAE;MACtD,IAAInB,MAAM,CAACS,eAAe,CAACiD,OAAO,CAAC,IAAI1D,MAAM,CAACS,eAAe,CAACU,eAAe,CAAC,EAAE;QAC9E,OAAOnB,MAAM,CAACI,IAAI,CAACsB,YAAY;MACjC;;MAEA;MACA;;MAEA,OAAOP,eAAe,CAACmC,QAAQ,CAACC,OAAO,CAACwC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGrC,OAAO,CAACJ,QAAQ,CAACC,OAAO,CAACwC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxF/F,MAAM,CAACI,IAAI,CAACsB,YAAY,GACxB1B,MAAM,CAACI,IAAI,CAAC4F,WAAW;IAC7B;EAAC;IAAA;IAAA,OA+BD,yBAAuBtC,OAAO,EAAEC,QAAQ,EAAE;MACxC;MACA;;MAEA,IAAMsC,KAAU,GAAGjG,MAAM,CAACkG,WAAW,CAACxC,OAAO,CAAC;MAC9C,IAAMyC,KAAU,GAAGnG,MAAM,CAACkG,WAAW,CAACvC,QAAQ,CAAC;;MAE/C;MACAsC,KAAK,CAACjC,MAAM,GAAGhE,MAAM,CAACoG,kBAAkB,CAACH,KAAK,EAAEE,KAAK,CAAC;MACtDA,KAAK,CAACnC,MAAM,GAAGhE,MAAM,CAACoG,kBAAkB,CAACD,KAAK,EAAEF,KAAK,CAAC;;MAEtD;MACA;MACA,IAAMI,KAAK,GAAG,CACZrG,MAAM,CAACsG,oBAAoB,EAC3BtG,MAAM,CAACuG,kBAAkB,EACzBvG,MAAM,CAACwG,qBAAqB,EAC5BxG,MAAM,CAACyG,gBAAgB,CACxB;MAED,0BAAmBJ,KAAK,4BAAE;QAArB,IAAMK,IAAI;QACb;QACA;QACA,IAAMhG,MAAM,GAAGgG,IAAI,CAACT,KAAK,EAAEE,KAAK,CAAC;QAEjC,IAAIzF,MAAM,EAAE;UACV,OAAOA,MAAM;QACf;MACF;;MAEA;MACA;MACA;MACA,OAAOV,MAAM,CAACI,IAAI,CAACuG,KAAK;IAC1B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,yBAAuBjG,MAAc,EAAE;MACrC,oBAA+DV,MAAM,CAACI,IAAI;QAAnEkC,MAAM,iBAANA,MAAM;QAAE+B,EAAE,iBAAFA,EAAE;QAAEsC,KAAK,iBAALA,KAAK;QAAErG,EAAE,iBAAFA,EAAE;QAAED,EAAE,iBAAFA,EAAE;QAAE2F,WAAW,iBAAXA,WAAW;QAAEtE,YAAY,iBAAZA,YAAY;MAE3D,IAAIK,MAAM,GAAG4E,KAAK;MAElB,QAAQjG,MAAM;QACZ,KAAK2D,EAAE;QACP,KAAK/D,EAAE;UACLyB,MAAM,GAAGiE,WAAW;UACpB;QACF,KAAK3F,EAAE;UACL0B,MAAM,GAAGL,YAAY;UACrB;QACF,KAAKY,MAAM;UACTP,MAAM,GAAGO,MAAM;UACf;QACF;UACEjB,oBAAW,CAACC,MAAM,CAACC,IAAI,wDAC2Bb,MAAM,sDACvD;MAAC;MAGN,OAAOqB,MAAM;IACf;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,gCAA8B6E,oBAA4B,EAAE;MAC1D,OAAOA,oBAAoB,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEE;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,qBAAmBvD,QAAa,EAAE;MAChC,IAAOC,OAAO,GAAID,QAAQ,CAAnBC,OAAO;MACd,IAAMuD,KAAK,GAAGvD,OAAO,CAAC,CAAC,CAAC;MACxB,IAAMwD,IAAI,GAAGxD,OAAO,CAACwC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;MAEjC;MACA,IAAMpB,KAAK,GAAGrB,QAAQ,CAAC0D,UAAU;MACjC,IAAM7C,GAAG,GAAGb,QAAQ,CAAC2D,QAAQ;;MAE7B;MACA,OAAO;QACLtC,KAAK,EAALA,KAAK;QACLR,GAAG,EAAHA,GAAG;QACH2C,KAAK,EAALA,KAAK;QACLC,IAAI,EAAJA,IAAI;QACJ;QACAlD,GAAG,EAAEc,KAAK,IAAImC,KAAK;QACnB;QACAhD,GAAG,EAAEiD,IAAI,IAAI5C,GAAG;QAChB;QACAZ,OAAO,EAAPA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,4BAA0B2D,QAAa,EAAEC,SAAc,EAAE;MACvD,IAAMC,IAAS,GAAG,0BAAWF,QAAQ,CAAC3D,OAAO,EAAE4D,SAAS,CAAC5D,OAAO,CAAC;MAEjE,IAAOoB,KAAK,GAASwC,SAAS,CAAvBxC,KAAK;QAAER,GAAG,GAAIgD,SAAS,CAAhBhD,GAAG;MAEjB,OAAOnE,MAAM,CAACqH,oBAAoB,CAACD,IAAI,EAAEzC,KAAK,EAAER,GAAG,CAAC;IACtD;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,8BAA4BY,IAAmB,EAAEiC,UAAkB,EAAEC,QAAgB,EAAE;MACrF;MACA,IAAMK,MAAM,GAAGvC,IAAI,CAACwC,MAAM,CAAC,UAACC,GAAG;QAAA,OAAKA,GAAG,GAAGR,UAAU,IAAIQ,GAAG,GAAGP,QAAQ;MAAA,EAAC;;MAEvE;MACA,OAAOK,MAAM,CAACG,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC;QAAA,OAAKD,CAAC,GAAGC,CAAC;MAAA,EAAC;IACrC;EAAC;IAAA;IAAA,OA+BD,yBAAuB3F,KAAK,EAAE;MAAA;MAC5B,IAAOsB,QAAQ,GAAItB,KAAK,CAAjBsB,QAAQ;MACf,IAAMsE,eAAe,GAAG,uBAACtE,QAAQ,CAACC,OAAO,8CAAhB,kBAAkBC,MAAM;MACjD,IAAMqE,aAAa,GAAGvE,QAAQ,CAAC0D,UAAU,KAAK,CAAC,IAAI1D,QAAQ,CAAC2D,QAAQ,KAAK,CAAC;MAE1E,OAAOW,eAAe,IAAIC,aAAa;IACzC;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,gBAAczH,IAAI,EAAE;MAClB,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACkD,QAAQ,EAAE;QAC3B,OAAO,KAAK;MACd;MACA,IAAMwE,OAAO,GAAG,SAAVA,OAAO,CAAIC,IAAI;QAAA,OAAKC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC/H,IAAI,CAACkD,QAAQ,EAAEyE,IAAI,CAAC;MAAA;MAEnF,IAAID,OAAO,CAAC,YAAY,CAAC,IAAIA,OAAO,CAAC,UAAU,CAAC,EAAE;QAChD,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;EAAC;IAAA;IAAA,OAuED,8BAA4BM,OAAe,EAAEC,OAAe,EAAE;MAC5D,iBAAUD,OAAO,cAAIC,OAAO;IAC9B;EAAC;IAAA;IAAA,OAgJD,yBAAuBC,SAAiB,EAAE1E,UAAkB,EAAE;MAC5D;MACA,IAAM2E,IAAI,GAAG,SAAPA,IAAI,CAAIC,OAAO;QAAA,OAAKA,OAAO,CAACC,IAAI,CAAC,EAAE,CAAC,CAACC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MAAA;MAElE,IAAMC,aAAa,GAAG;QACpBtE,EAAE,YAAKrE,MAAM,CAACI,IAAI,CAACC,EAAE,sCAAmC;QACxDA,EAAE,YAAKL,MAAM,CAACI,IAAI,CAACC,EAAE,oCAAiC;QACtDC,EAAE,YAAKN,MAAM,CAACI,IAAI,CAACE,EAAE;MACvB,CAAC;MAED,IAAMsI,QAAQ,GAAG;QACfC,KAAK,EAAE;UACLC,KAAK,EAAE,0BAA0B;UACjCC,WAAW,EAAER,IAAI,6RACuB;UACxCS,KAAK,EAAE;QACT,CAAC;QAEDC,KAAK,EAAE;UACLH,KAAK,EAAE,0BAA0B;UACjCC,WAAW,EAAER,IAAI,+QACa;UAC9BS,KAAK,EAAE;QACT,CAAC;QAEDE,KAAK,EAAE;UACLJ,KAAK,EAAE,wBAAwB;UAC/BC,WAAW,EAAER,IAAI,qUACuC;UACxDS,KAAK,EAAE;QACT,CAAC;QAEDG,KAAK,EAAE;UACLL,KAAK,EAAE,wBAAwB;UAC/BC,WAAW,EAAER,IAAI,yTACiC;UAClDS,KAAK,EAAE;QACT,CAAC;QAEDI,KAAK,EAAE;UACLN,KAAK,EAAE,wBAAwB;UAC/BC,WAAW,EAAER,IAAI,+ZAEO;UACxBS,KAAK,EAAE;QACT,CAAC;QAEDK,KAAK,EAAE;UACLP,KAAK,EAAE,2BAA2B;UAClCC,WAAW,EAAER,IAAI,2cAE2C;UAC5DS,KAAK,EAAE;QACT,CAAC;QAEDM,KAAK,EAAE;UACLR,KAAK,EAAE,2BAA2B;UAClCC,WAAW,EAAER,IAAI,+bAE2C;UAC5DS,KAAK,EAAE;QACT,CAAC;QAEDO,MAAM,EAAE;UACNT,KAAK,EAAE,sBAAsB;UAC7BC,WAAW,EAAER,IAAI,+jBAGsB;UACvCS,KAAK,EAAE;QACT,CAAC;QAEDQ,MAAM,EAAE;UACNV,KAAK,EAAE,sBAAsB;UAC7BC,WAAW,EAAER,IAAI,qdAEiC;UAClDS,KAAK,EAAE;QACT,CAAC;QAEDS,MAAM,EAAE;UACNX,KAAK,EAAE,sBAAsB;UAC7BC,WAAW,EAAER,IAAI,yPACI;UACrBS,KAAK,EAAE;QACT;MACF,CAAC;MAED,IAAMU,QAAQ,GAAGd,QAAQ,CAACN,SAAS,CAAC;MAEpCoB,QAAQ,CAACZ,KAAK,oBAAaY,QAAQ,CAACZ,KAAK,CAAE;MAC3CY,QAAQ,CAACC,UAAU,GAAGhB,aAAa,CAAC/E,UAAU,CAAC;MAE/C,OAAO8F,QAAQ;IACjB;EAAC;EAAA;AAAA;AAAA;AAAA,8BAv0BkB1J,MAAM,UASX;EACZqE,EAAE,EAAE,OAAO;EACX/D,EAAE,EAAE,cAAc;EAClBD,EAAE,EAAE,WAAW;EACfiC,MAAM,EAAE,QAAQ;EAChBZ,YAAY,EAAE,cAAc;EAC5BsE,WAAW,EAAE,aAAa;EAC1BpD,IAAI,EAAE,MAAM;EACZ+D,KAAK,EAAE;AACT,CAAC"}
|
package/dist/meeting/request.js
CHANGED
|
@@ -385,7 +385,7 @@ var MeetingRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
385
385
|
uri: url
|
|
386
386
|
}).catch(function (err) {
|
|
387
387
|
_loggerProxy.default.logger.error("Meeting:request#getLocusDTO --> Error getting latest locus, error ".concat(err));
|
|
388
|
-
|
|
388
|
+
throw err;
|
|
389
389
|
});
|
|
390
390
|
}
|
|
391
391
|
return _promise.default.reject();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","undefined","PARTICIPANT","clusterUrl","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n ipver: ipVersion,\n },\n };\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n return err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MeetingRequest","attrs","options","meeting","otherAttrs","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","joinCookieRaw","joinCookie","JSON","parse","LoggerProxy","logger","error","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","changeVideoLayout","leading","trailing","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","preferTranscoding","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","ipVersion","info","url","getJoinCookie","body","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","clientMediaPreferences","ipver","push","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","length","geoHintInfo","countryCode","regionCode","undefined","PARTICIPANT","clusterUrl","internal","services","waitForCatalog","LOCI","CALL","invitee","address","concat","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","request","method","HTTP_VERBS","POST","uri","captchaRefreshUrl","captchaId","err","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","GET","reject","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","ALERT","CONTROLS","lock","locked","PATCH","DECLINE","reason","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","resourceToken","annotationInfo","annotation","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","END","keepAliveUrl","reactionChannelUrl","reaction","participantId","sender","enable","requestingParticipantId","reactions","enabled","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n IP_VERSION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n ipVersion?: IP_VERSION;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n preferTranscoding,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n ipVersion,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const joinCookie = await this.getJoinCookie();\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences: {\n preferTranscoding: preferTranscoding ?? true,\n joinCookie,\n ipver: ipVersion,\n },\n };\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage) {\n body.localMedias = roapMessage.localMedias;\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -60,7 +60,9 @@ var BEHAVIORAL_METRICS = {
|
|
|
60
60
|
MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',
|
|
61
61
|
MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',
|
|
62
62
|
TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',
|
|
63
|
-
MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error'
|
|
63
|
+
MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',
|
|
64
|
+
LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',
|
|
65
|
+
LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo'
|
|
64
66
|
};
|
|
65
67
|
exports.default = BEHAVIORAL_METRICS;
|
|
66
68
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;EAE1DC,4BAA4B,EAAE,qCAAqC;EACnEC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,mCAAmC;EAC9DC,0BAA0B,EAAE,mCAAmC;EAC/DC,qBAAqB,EAAE,+BAA+B;EACtDC,sCAAsC,EAAE,gDAAgD;EACxFC,qCAAqC,EAAE,+CAA+C;EACtFC,kBAAkB,EAAE,4BAA4B;EAChDC,kBAAkB,EAAE,4BAA4B;EAChDC,2BAA2B,EAAE,qCAAqC;EAClEC,0BAA0B,EAAE,oCAAoC;EAChEC,mBAAmB,EAAE,4BAA4B;EACjDC,oBAAoB,EAAE,6BAA6B;EACnDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,mBAAmB,EAAE,6BAA6B;EAClDC,oBAAoB,EAAE,4BAA4B;EAClDC,sBAAsB,EAAE,gCAAgC;EACxDC,qBAAqB,EAAE,8BAA8B;EACrDC,mBAAmB,EAAE,4BAA4B;EACjDC,mBAAmB,EAAE,4BAA4B;EACjDC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,qBAAqB,EAAE,8BAA8B;EACrDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,gCAAgC;EACzDC,qBAAqB,EAAE,8BAA8B;EACrDC,oBAAoB,EAAE,6BAA6B;EACnDC,eAAe,EAAE,wBAAwB;EACzCC,eAAe,EAAE,wBAAwB;EACzCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,0BAA0B;EAC7CC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE;
|
|
1
|
+
{"version":3,"names":["BEHAVIORAL_METRICS","MEETINGS_REGISTRATION_FAILED","MEETINGS_REGISTRATION_SUCCESS","MERCURY_CONNECTION_FAILURE","MERCURY_CONNECTION_RESTORED","JOIN_SUCCESS","JOIN_FAILURE","ADD_MEDIA_SUCCESS","ADD_MEDIA_FAILURE","ROAP_MERCURY_EVENT_RECEIVED","CONNECTION_SUCCESS","CONNECTION_FAILURE","MEETING_LEAVE_FAILURE","MEETING_END_ALL_FAILURE","MEETING_END_ALL_INITIATED","GET_USER_MEDIA_FAILURE","GET_DISPLAY_MEDIA_FAILURE","JOIN_WITH_MEDIA_FAILURE","DISCONNECT_DUE_TO_INACTIVITY","MEETING_MEDIA_INACTIVE","MEETING_RECONNECT_FAILURE","MEETING_MAX_REJOIN_FAILURE","MEETING_SHARE_FAILURE","MEETING_START_WHITEBOARD_SHARE_FAILURE","MEETING_STOP_WHITEBOARD_SHARE_FAILURE","MUTE_AUDIO_FAILURE","MUTE_VIDEO_FAILURE","SET_MEETING_QUALITY_FAILURE","STOP_FLOOR_REQUEST_FAILURE","ADD_DIAL_IN_FAILURE","ADD_DIAL_OUT_FAILURE","UPDATE_MEDIA_FAILURE","UNMUTE_AUDIO_FAILURE","UNMUTE_VIDEO_FAILURE","ROAP_ANSWER_FAILURE","ROAP_GLARE_CONDITION","PEERCONNECTION_FAILURE","INVALID_ICE_CANDIDATE","UPLOAD_LOGS_FAILURE","UPLOAD_LOGS_SUCCESS","RECEIVE_TRANSCRIPTION_FAILURE","FETCH_MEETING_INFO_V1_SUCCESS","FETCH_MEETING_INFO_V1_FAILURE","ADHOC_MEETING_SUCCESS","ADHOC_MEETING_FAILURE","VERIFY_PASSWORD_SUCCESS","VERIFY_PASSWORD_ERROR","VERIFY_CAPTCHA_ERROR","MOVE_TO_SUCCESS","MOVE_TO_FAILURE","MOVE_FROM_SUCCESS","MOVE_FROM_FAILURE","TURN_DISCOVERY_FAILURE","MEETING_INFO_POLICY_ERROR","LOCUS_DELTA_SYNC_FAILED","LOCUS_DELTA_OUT_OF_ORDER"],"sources":["constants.ts"],"sourcesContent":["// Metrics constants ----------------------------------------------------------\n\nconst BEHAVIORAL_METRICS = {\n MEETINGS_REGISTRATION_FAILED: 'js_sdk_meetings_registration_failed',\n MEETINGS_REGISTRATION_SUCCESS: 'js_sdk_meetings_registration_success',\n MERCURY_CONNECTION_FAILURE: 'js_sdk_mercury_connection_failure',\n MERCURY_CONNECTION_RESTORED: 'js_sdk_mercury_connection_restored',\n JOIN_SUCCESS: 'js_sdk_join_success',\n JOIN_FAILURE: 'js_sdk_join_failures',\n ADD_MEDIA_SUCCESS: 'js_sdk_add_media_success',\n ADD_MEDIA_FAILURE: 'js_sdk_add_media_failures',\n ROAP_MERCURY_EVENT_RECEIVED: 'js_sdk_roap_mercury_received',\n CONNECTION_SUCCESS: 'js_sdk_connection_success',\n CONNECTION_FAILURE: 'js_sdk_connection_failures',\n MEETING_LEAVE_FAILURE: 'js_sdk_meeting_leave_failure',\n MEETING_END_ALL_FAILURE: 'js_sdk_meeting_end_for_all_failure',\n MEETING_END_ALL_INITIATED: 'js_sdk_meeting_end_for_all_initiated',\n GET_USER_MEDIA_FAILURE: 'js_sdk_get_user_media_failures',\n GET_DISPLAY_MEDIA_FAILURE: 'js_sdk_get_display_media_failures',\n JOIN_WITH_MEDIA_FAILURE: 'js_sdk_join_with_media_failures',\n\n DISCONNECT_DUE_TO_INACTIVITY: 'js_sdk_disconnect_due_to_inactivity',\n MEETING_MEDIA_INACTIVE: 'js_sdk_meeting_media_inactive',\n MEETING_RECONNECT_FAILURE: 'js_sdk_meeting_reconnect_failures',\n MEETING_MAX_REJOIN_FAILURE: 'js_sdk_meeting_max_rejoin_failure',\n MEETING_SHARE_FAILURE: 'js_sdk_meeting_share_failures',\n MEETING_START_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_start_whiteboard_share_failures',\n MEETING_STOP_WHITEBOARD_SHARE_FAILURE: 'js_sdk_meeting_stop_whiteboard_share_failures',\n MUTE_AUDIO_FAILURE: 'js_sdk_mute_audio_failures',\n MUTE_VIDEO_FAILURE: 'js_sdk_mute_video_failures',\n SET_MEETING_QUALITY_FAILURE: 'js_sdk_set_meeting_quality_failures',\n STOP_FLOOR_REQUEST_FAILURE: 'js_sdk_stop_floor_request_failures',\n ADD_DIAL_IN_FAILURE: 'js_sdk_add_dial_in_failure',\n ADD_DIAL_OUT_FAILURE: 'js_sdk_add_dial_out_failure',\n UPDATE_MEDIA_FAILURE: 'js_sdk_update_media_failures',\n UNMUTE_AUDIO_FAILURE: 'js_sdk_unmute_audio_failures',\n UNMUTE_VIDEO_FAILURE: 'js_sdk_unmute_video_failures',\n ROAP_ANSWER_FAILURE: 'js_sdk_roap_answer_failures',\n ROAP_GLARE_CONDITION: 'js_sdk_roap_glar_condition',\n PEERCONNECTION_FAILURE: 'js_sdk_peerConnection_failures',\n INVALID_ICE_CANDIDATE: 'js_sdk_invalid_ice_candidate',\n UPLOAD_LOGS_FAILURE: 'js_sdk_upload_logs_failure',\n UPLOAD_LOGS_SUCCESS: 'js_sdk_upload_logs_success',\n RECEIVE_TRANSCRIPTION_FAILURE: 'js_sdk_receive_transcription_failure',\n FETCH_MEETING_INFO_V1_SUCCESS: 'js_sdk_fetch_meeting_info_v1_success',\n FETCH_MEETING_INFO_V1_FAILURE: 'js_sdk_fetch_meeting_info_v1_failure',\n ADHOC_MEETING_SUCCESS: 'js_sdk_adhoc_meeting_success',\n ADHOC_MEETING_FAILURE: 'js_sdk_adhoc_meeting_failure',\n VERIFY_PASSWORD_SUCCESS: 'js_sdk_verify_password_success',\n VERIFY_PASSWORD_ERROR: 'js_sdk_verify_password_error',\n VERIFY_CAPTCHA_ERROR: 'js_sdk_verify_captcha_error',\n MOVE_TO_SUCCESS: 'js_sdk_move_to_success',\n MOVE_TO_FAILURE: 'js_sdk_move_to_failure',\n MOVE_FROM_SUCCESS: 'js_sdk_move_from_success',\n MOVE_FROM_FAILURE: 'js_sdk_move_from_failure',\n TURN_DISCOVERY_FAILURE: 'js_sdk_turn_discovery_failure',\n MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',\n LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',\n LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',\n};\n\nexport {BEHAVIORAL_METRICS as default};\n"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,kBAAkB,GAAG;EACzBC,4BAA4B,EAAE,qCAAqC;EACnEC,6BAA6B,EAAE,sCAAsC;EACrEC,0BAA0B,EAAE,mCAAmC;EAC/DC,2BAA2B,EAAE,oCAAoC;EACjEC,YAAY,EAAE,qBAAqB;EACnCC,YAAY,EAAE,sBAAsB;EACpCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,2BAA2B;EAC9CC,2BAA2B,EAAE,8BAA8B;EAC3DC,kBAAkB,EAAE,2BAA2B;EAC/CC,kBAAkB,EAAE,4BAA4B;EAChDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,oCAAoC;EAC7DC,yBAAyB,EAAE,sCAAsC;EACjEC,sBAAsB,EAAE,gCAAgC;EACxDC,yBAAyB,EAAE,mCAAmC;EAC9DC,uBAAuB,EAAE,iCAAiC;EAE1DC,4BAA4B,EAAE,qCAAqC;EACnEC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,mCAAmC;EAC9DC,0BAA0B,EAAE,mCAAmC;EAC/DC,qBAAqB,EAAE,+BAA+B;EACtDC,sCAAsC,EAAE,gDAAgD;EACxFC,qCAAqC,EAAE,+CAA+C;EACtFC,kBAAkB,EAAE,4BAA4B;EAChDC,kBAAkB,EAAE,4BAA4B;EAChDC,2BAA2B,EAAE,qCAAqC;EAClEC,0BAA0B,EAAE,oCAAoC;EAChEC,mBAAmB,EAAE,4BAA4B;EACjDC,oBAAoB,EAAE,6BAA6B;EACnDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,oBAAoB,EAAE,8BAA8B;EACpDC,mBAAmB,EAAE,6BAA6B;EAClDC,oBAAoB,EAAE,4BAA4B;EAClDC,sBAAsB,EAAE,gCAAgC;EACxDC,qBAAqB,EAAE,8BAA8B;EACrDC,mBAAmB,EAAE,4BAA4B;EACjDC,mBAAmB,EAAE,4BAA4B;EACjDC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,6BAA6B,EAAE,sCAAsC;EACrEC,qBAAqB,EAAE,8BAA8B;EACrDC,qBAAqB,EAAE,8BAA8B;EACrDC,uBAAuB,EAAE,gCAAgC;EACzDC,qBAAqB,EAAE,8BAA8B;EACrDC,oBAAoB,EAAE,6BAA6B;EACnDC,eAAe,EAAE,wBAAwB;EACzCC,eAAe,EAAE,wBAAwB;EACzCC,iBAAiB,EAAE,0BAA0B;EAC7CC,iBAAiB,EAAE,0BAA0B;EAC7CC,sBAAsB,EAAE,+BAA+B;EACvDC,yBAAyB,EAAE,kCAAkC;EAC7DC,uBAAuB,EAAE,gCAAgC;EACzDC,wBAAwB,EAAE;AAC5B,CAAC;AAAC"}
|
|
@@ -275,6 +275,7 @@ export declare const MEETING_REMOVED_REASON: {
|
|
|
275
275
|
USER_ENDED_SHARE_STREAMS: string;
|
|
276
276
|
NO_MEETINGS_TO_SYNC: string;
|
|
277
277
|
MEETING_CONNECTION_FAILED: string;
|
|
278
|
+
LOCUS_DTO_SYNC_FAILED: string;
|
|
278
279
|
};
|
|
279
280
|
export declare const CALL_REMOVED_REASON: {
|
|
280
281
|
CALL_INACTIVE: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.243",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.243",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.243",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.243",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.243",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.243",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.243",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.243",
|
|
50
50
|
"@webex/internal-media-core": "1.39.3",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.243",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.243",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.243",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.243",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.243",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.243",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.243",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.243",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.243",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.243",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.243",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/constants.ts
CHANGED
|
@@ -386,6 +386,7 @@ export const MEETING_REMOVED_REASON = {
|
|
|
386
386
|
USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
|
|
387
387
|
NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
|
|
388
388
|
MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
|
|
389
|
+
LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
|
|
389
390
|
};
|
|
390
391
|
|
|
391
392
|
// One one one calls ends for the following reasons
|