@webex/plugin-meetings 3.12.0-next.9 → 3.12.0-task-refactor.1
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/annotation/index.js +5 -14
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/config.js +2 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -29
- package/dist/constants.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +29 -1563
- package/dist/hashTree/hashTreeParser.js.map +1 -1
- package/dist/hashTree/types.js +3 -13
- package/dist/hashTree/types.js.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +0 -7
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRouteToken.js +5 -27
- package/dist/interceptors/locusRouteToken.js.map +1 -1
- package/dist/interpretation/index.js +2 -2
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +3 -7
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +247 -642
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +0 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/locus-info/types.js.map +1 -1
- package/dist/media/MediaConnectionAwaiter.js +1 -57
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/properties.js +2 -4
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +1 -7
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1036 -1481
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +0 -50
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +3 -133
- package/dist/meeting/util.js.map +1 -1
- package/dist/meetings/index.js +59 -142
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +7 -11
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +0 -10
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +0 -10
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +60 -9
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +0 -11
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +2 -116
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/reachability/clusterReachability.js +18 -171
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +11 -21
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachabilityPeerConnection.js +1 -1
- package/dist/reachability/reachabilityPeerConnection.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +1 -0
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/types/common/browser-detection.d.ts +0 -1
- package/dist/types/common/events/events-scope.d.ts +0 -1
- package/dist/types/common/events/events.d.ts +0 -1
- package/dist/types/config.d.ts +0 -5
- package/dist/types/constants.d.ts +1 -24
- package/dist/types/hashTree/hashTreeParser.d.ts +11 -260
- package/dist/types/hashTree/types.d.ts +0 -20
- package/dist/types/index.d.ts +0 -1
- package/dist/types/interceptors/index.d.ts +1 -2
- package/dist/types/interceptors/locusRouteToken.d.ts +0 -2
- package/dist/types/locus-info/index.d.ts +47 -68
- package/dist/types/locus-info/types.d.ts +12 -28
- package/dist/types/media/MediaConnectionAwaiter.d.ts +1 -10
- package/dist/types/media/properties.d.ts +1 -2
- package/dist/types/meeting/in-meeting-actions.d.ts +0 -6
- package/dist/types/meeting/index.d.ts +7 -86
- package/dist/types/meeting/request.d.ts +1 -16
- package/dist/types/meeting/request.type.d.ts +0 -5
- package/dist/types/meeting/util.d.ts +0 -31
- package/dist/types/meeting-info/util.d.ts +0 -1
- package/dist/types/meeting-info/utilv2.d.ts +0 -1
- package/dist/types/meetings/index.d.ts +2 -4
- package/dist/types/member/index.d.ts +0 -1
- package/dist/types/member/types.d.ts +4 -4
- package/dist/types/member/util.d.ts +0 -5
- package/dist/types/metrics/constants.d.ts +0 -6
- package/dist/types/multistream/mediaRequestManager.d.ts +23 -0
- package/dist/types/multistream/sendSlotManager.d.ts +1 -23
- package/dist/types/reachability/clusterReachability.d.ts +3 -30
- package/dist/types/reactions/reactions.type.d.ts +0 -1
- package/dist/types/recording-controller/util.d.ts +5 -5
- package/dist/types/roap/index.d.ts +1 -1
- package/dist/webinar/index.js +163 -438
- package/dist/webinar/index.js.map +1 -1
- package/package.json +24 -26
- package/src/annotation/index.ts +7 -27
- package/src/config.ts +0 -5
- package/src/constants.ts +1 -30
- package/src/hashTree/hashTreeParser.ts +25 -1523
- package/src/hashTree/types.ts +1 -24
- package/src/index.ts +1 -8
- package/src/interceptors/index.ts +1 -2
- package/src/interceptors/locusRouteToken.ts +5 -22
- package/src/interpretation/index.ts +2 -2
- package/src/locus-info/controlsUtils.ts +0 -17
- package/src/locus-info/index.ts +213 -707
- package/src/locus-info/selfUtils.ts +0 -1
- package/src/locus-info/types.ts +12 -27
- package/src/media/MediaConnectionAwaiter.ts +1 -41
- package/src/media/properties.ts +1 -3
- package/src/meeting/in-meeting-actions.ts +0 -12
- package/src/meeting/index.ts +84 -461
- package/src/meeting/request.ts +0 -42
- package/src/meeting/request.type.ts +0 -6
- package/src/meeting/util.ts +2 -160
- package/src/meetings/index.ts +60 -180
- package/src/meetings/util.ts +9 -10
- package/src/member/index.ts +0 -10
- package/src/member/util.ts +0 -12
- package/src/metrics/constants.ts +0 -7
- package/src/multistream/mediaRequestManager.ts +54 -4
- package/src/multistream/remoteMediaManager.ts +0 -13
- package/src/multistream/sendSlotManager.ts +3 -97
- package/src/reachability/clusterReachability.ts +27 -153
- package/src/reachability/index.ts +1 -15
- package/src/reachability/reachabilityPeerConnection.ts +1 -3
- package/src/reactions/reactions.type.ts +0 -1
- package/src/reconnection-manager/index.ts +1 -0
- package/src/webinar/index.ts +6 -265
- package/test/unit/spec/annotation/index.ts +7 -69
- package/test/unit/spec/interceptors/locusRouteToken.ts +0 -44
- package/test/unit/spec/locus-info/controlsUtils.js +1 -56
- package/test/unit/spec/locus-info/index.js +90 -1457
- package/test/unit/spec/media/MediaConnectionAwaiter.ts +1 -41
- package/test/unit/spec/media/properties.ts +3 -12
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -8
- package/test/unit/spec/meeting/index.js +128 -981
- package/test/unit/spec/meeting/request.js +0 -70
- package/test/unit/spec/meeting/utils.js +26 -438
- package/test/unit/spec/meetings/index.js +33 -845
- package/test/unit/spec/meetings/utils.js +1 -51
- package/test/unit/spec/member/index.js +4 -28
- package/test/unit/spec/member/util.js +27 -65
- package/test/unit/spec/multistream/mediaRequestManager.ts +85 -2
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -30
- package/test/unit/spec/multistream/sendSlotManager.ts +36 -135
- package/test/unit/spec/reachability/clusterReachability.ts +1 -125
- package/test/unit/spec/reachability/index.ts +3 -26
- package/test/unit/spec/reconnection-manager/index.js +8 -4
- package/test/unit/spec/webinar/index.ts +37 -534
- package/dist/aiEnableRequest/index.js +0 -184
- package/dist/aiEnableRequest/index.js.map +0 -1
- package/dist/aiEnableRequest/utils.js +0 -36
- package/dist/aiEnableRequest/utils.js.map +0 -1
- package/dist/hashTree/constants.js +0 -22
- package/dist/hashTree/constants.js.map +0 -1
- package/dist/hashTree/hashTree.js +0 -533
- package/dist/hashTree/hashTree.js.map +0 -1
- package/dist/hashTree/utils.js +0 -69
- package/dist/hashTree/utils.js.map +0 -1
- package/dist/interceptors/constant.js +0 -12
- package/dist/interceptors/constant.js.map +0 -1
- package/dist/interceptors/dataChannelAuthToken.js +0 -290
- package/dist/interceptors/dataChannelAuthToken.js.map +0 -1
- package/dist/interceptors/utils.js +0 -27
- package/dist/interceptors/utils.js.map +0 -1
- package/dist/types/aiEnableRequest/index.d.ts +0 -5
- package/dist/types/aiEnableRequest/utils.d.ts +0 -2
- package/dist/types/hashTree/constants.d.ts +0 -9
- package/dist/types/hashTree/hashTree.d.ts +0 -136
- package/dist/types/hashTree/utils.d.ts +0 -22
- package/dist/types/interceptors/constant.d.ts +0 -5
- package/dist/types/interceptors/dataChannelAuthToken.d.ts +0 -43
- package/dist/types/interceptors/utils.d.ts +0 -1
- package/dist/types/webinar/utils.d.ts +0 -6
- package/dist/webinar/utils.js +0 -25
- package/dist/webinar/utils.js.map +0 -1
- package/src/aiEnableRequest/README.md +0 -84
- package/src/aiEnableRequest/index.ts +0 -170
- package/src/aiEnableRequest/utils.ts +0 -25
- package/src/hashTree/constants.ts +0 -10
- package/src/hashTree/hashTree.ts +0 -480
- package/src/hashTree/utils.ts +0 -62
- package/src/interceptors/constant.ts +0 -6
- package/src/interceptors/dataChannelAuthToken.ts +0 -170
- package/src/interceptors/utils.ts +0 -16
- package/src/webinar/utils.ts +0 -16
- package/test/unit/spec/aiEnableRequest/index.ts +0 -981
- package/test/unit/spec/aiEnableRequest/utils.ts +0 -130
- package/test/unit/spec/hashTree/hashTree.ts +0 -721
- package/test/unit/spec/hashTree/hashTreeParser.ts +0 -3670
- package/test/unit/spec/hashTree/utils.ts +0 -140
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +0 -210
- package/test/unit/spec/interceptors/utils.ts +0 -75
- package/test/unit/spec/webinar/utils.ts +0 -39
package/dist/hashTree/utils.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.deleteNestedObjectsWithHtMeta = void 0;
|
|
9
|
-
exports.isMetadata = isMetadata;
|
|
10
|
-
exports.isSelf = isSelf;
|
|
11
|
-
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
|
|
12
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
13
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
|
|
14
|
-
var _types = require("./types");
|
|
15
|
-
/* eslint-disable import/prefer-default-export */
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Checks if the given hash tree object is of type "self"
|
|
19
|
-
* @param {HashTreeObject} object object to check
|
|
20
|
-
* @returns {boolean} True if the object is of type "self", false otherwise
|
|
21
|
-
*/
|
|
22
|
-
function isSelf(object) {
|
|
23
|
-
return object.htMeta.elementId.type.toLowerCase() === _types.ObjectType.self;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Checks if the given hash tree object is of type "Metadata"
|
|
28
|
-
* @param {HashTreeObject} object object to check
|
|
29
|
-
* @returns {boolean} True if the object is of type "Metadata", false otherwise
|
|
30
|
-
*/
|
|
31
|
-
function isMetadata(object) {
|
|
32
|
-
return object.htMeta.elementId.type.toLowerCase() === _types.ObjectType.metadata;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Analyzes given part of Locus DTO recursively and delete any nested objects that have their own htMeta
|
|
37
|
-
*
|
|
38
|
-
* @param {Object} currentLocusPart part of locus DTO to analyze
|
|
39
|
-
* @param {Object} parent parent object
|
|
40
|
-
* @param {string|number} currentKey key of the parent object that currentLocusPart is
|
|
41
|
-
* @returns {void}
|
|
42
|
-
*/
|
|
43
|
-
var _deleteNestedObjectsWithHtMeta = exports.deleteNestedObjectsWithHtMeta = function deleteNestedObjectsWithHtMeta(currentLocusPart, parent, currentKey) {
|
|
44
|
-
if ((0, _typeof2.default)(currentLocusPart) !== 'object' || currentLocusPart === null) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (parent && currentKey !== undefined && currentLocusPart.htMeta) {
|
|
48
|
-
if ((0, _isArray.default)(parent)) {
|
|
49
|
-
parent.splice(Number(currentKey), 1);
|
|
50
|
-
} else {
|
|
51
|
-
delete parent[currentKey];
|
|
52
|
-
}
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if ((0, _isArray.default)(currentLocusPart)) {
|
|
56
|
-
// iterate array in reverse, so that indexes remain valid when deleting elements
|
|
57
|
-
for (var i = currentLocusPart.length - 1; i >= 0; i -= 1) {
|
|
58
|
-
_deleteNestedObjectsWithHtMeta(currentLocusPart[i], currentLocusPart, i);
|
|
59
|
-
}
|
|
60
|
-
} else {
|
|
61
|
-
for (var _i = 0, _Object$keys = (0, _keys.default)(currentLocusPart); _i < _Object$keys.length; _i++) {
|
|
62
|
-
var key = _Object$keys[_i];
|
|
63
|
-
if (Object.prototype.hasOwnProperty.call(currentLocusPart, key)) {
|
|
64
|
-
_deleteNestedObjectsWithHtMeta(currentLocusPart[key], currentLocusPart, key);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","isSelf","object","htMeta","elementId","type","toLowerCase","ObjectType","self","isMetadata","metadata","deleteNestedObjectsWithHtMeta","exports","currentLocusPart","parent","currentKey","_typeof2","default","undefined","_isArray","splice","Number","i","length","_i","_Object$keys","_keys","key","Object","prototype","hasOwnProperty","call"],"sources":["utils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\n\nimport {ObjectType, HashTreeObject} from './types';\n\n/**\n * Checks if the given hash tree object is of type \"self\"\n * @param {HashTreeObject} object object to check\n * @returns {boolean} True if the object is of type \"self\", false otherwise\n */\nexport function isSelf(object: HashTreeObject) {\n return object.htMeta.elementId.type.toLowerCase() === ObjectType.self;\n}\n\n/**\n * Checks if the given hash tree object is of type \"Metadata\"\n * @param {HashTreeObject} object object to check\n * @returns {boolean} True if the object is of type \"Metadata\", false otherwise\n */\nexport function isMetadata(object: HashTreeObject) {\n return object.htMeta.elementId.type.toLowerCase() === ObjectType.metadata;\n}\n\n/**\n * Analyzes given part of Locus DTO recursively and delete any nested objects that have their own htMeta\n *\n * @param {Object} currentLocusPart part of locus DTO to analyze\n * @param {Object} parent parent object\n * @param {string|number} currentKey key of the parent object that currentLocusPart is\n * @returns {void}\n */\nexport const deleteNestedObjectsWithHtMeta = (\n currentLocusPart: any,\n parent?: any,\n currentKey?: string | number\n) => {\n if (typeof currentLocusPart !== 'object' || currentLocusPart === null) {\n return;\n }\n\n if (parent && currentKey !== undefined && currentLocusPart.htMeta) {\n if (Array.isArray(parent)) {\n parent.splice(Number(currentKey), 1);\n } else {\n delete parent[currentKey];\n }\n\n return;\n }\n\n if (Array.isArray(currentLocusPart)) {\n // iterate array in reverse, so that indexes remain valid when deleting elements\n for (let i = currentLocusPart.length - 1; i >= 0; i -= 1) {\n deleteNestedObjectsWithHtMeta(currentLocusPart[i], currentLocusPart, i);\n }\n } else {\n for (const key of Object.keys(currentLocusPart)) {\n if (Object.prototype.hasOwnProperty.call(currentLocusPart, key)) {\n deleteNestedObjectsWithHtMeta(currentLocusPart[key], currentLocusPart, key);\n }\n }\n }\n};\n"],"mappings":";;;;;;;;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAACC,MAAsB,EAAE;EAC7C,OAAOA,MAAM,CAACC,MAAM,CAACC,SAAS,CAACC,IAAI,CAACC,WAAW,CAAC,CAAC,KAAKC,iBAAU,CAACC,IAAI;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACP,MAAsB,EAAE;EACjD,OAAOA,MAAM,CAACC,MAAM,CAACC,SAAS,CAACC,IAAI,CAACC,WAAW,CAAC,CAAC,KAAKC,iBAAU,CAACG,QAAQ;AAC3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,8BAA6B,GAAAC,OAAA,CAAAD,6BAAA,GAAG,SAAhCA,6BAA6BA,CACxCE,gBAAqB,EACrBC,MAAY,EACZC,UAA4B,EACzB;EACH,IAAI,IAAAC,QAAA,CAAAC,OAAA,EAAOJ,gBAAgB,MAAK,QAAQ,IAAIA,gBAAgB,KAAK,IAAI,EAAE;IACrE;EACF;EAEA,IAAIC,MAAM,IAAIC,UAAU,KAAKG,SAAS,IAAIL,gBAAgB,CAACV,MAAM,EAAE;IACjE,IAAI,IAAAgB,QAAA,CAAAF,OAAA,EAAcH,MAAM,CAAC,EAAE;MACzBA,MAAM,CAACM,MAAM,CAACC,MAAM,CAACN,UAAU,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,MAAM;MACL,OAAOD,MAAM,CAACC,UAAU,CAAC;IAC3B;IAEA;EACF;EAEA,IAAI,IAAAI,QAAA,CAAAF,OAAA,EAAcJ,gBAAgB,CAAC,EAAE;IACnC;IACA,KAAK,IAAIS,CAAC,GAAGT,gBAAgB,CAACU,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;MACxDX,8BAA6B,CAACE,gBAAgB,CAACS,CAAC,CAAC,EAAET,gBAAgB,EAAES,CAAC,CAAC;IACzE;EACF,CAAC,MAAM;IACL,SAAAE,EAAA,MAAAC,YAAA,GAAkB,IAAAC,KAAA,CAAAT,OAAA,EAAYJ,gBAAgB,CAAC,EAAAW,EAAA,GAAAC,YAAA,CAAAF,MAAA,EAAAC,EAAA,IAAE;MAA5C,IAAMG,GAAG,GAAAF,YAAA,CAAAD,EAAA;MACZ,IAAII,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAAClB,gBAAgB,EAAEc,GAAG,CAAC,EAAE;QAC/DhB,8BAA6B,CAACE,gBAAgB,CAACc,GAAG,CAAC,EAAEd,gBAAgB,EAAEc,GAAG,CAAC;MAC7E;IACF;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.RETRY_KEY = exports.RETRY_INTERVAL = exports.MAX_RETRY = exports.DATA_CHANNEL_AUTH_HEADER = void 0;
|
|
8
|
-
var DATA_CHANNEL_AUTH_HEADER = exports.DATA_CHANNEL_AUTH_HEADER = 'Data-Channel-Auth-Token';
|
|
9
|
-
var MAX_RETRY = exports.MAX_RETRY = 1;
|
|
10
|
-
var RETRY_INTERVAL = exports.RETRY_INTERVAL = 2000;
|
|
11
|
-
var RETRY_KEY = exports.RETRY_KEY = '_dcRetryKey';
|
|
12
|
-
//# sourceMappingURL=constant.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["DATA_CHANNEL_AUTH_HEADER","exports","MAX_RETRY","RETRY_INTERVAL","RETRY_KEY"],"sources":["constant.ts"],"sourcesContent":["const DATA_CHANNEL_AUTH_HEADER = 'Data-Channel-Auth-Token';\nconst MAX_RETRY = 1;\nconst RETRY_INTERVAL = 2000;\nconst RETRY_KEY = '_dcRetryKey';\n\nexport {DATA_CHANNEL_AUTH_HEADER, MAX_RETRY, RETRY_INTERVAL, RETRY_KEY};\n"],"mappings":";;;;;;;AAAA,IAAMA,wBAAwB,GAAAC,OAAA,CAAAD,wBAAA,GAAG,yBAAyB;AAC1D,IAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG,CAAC;AACnB,IAAMC,cAAc,GAAAF,OAAA,CAAAE,cAAA,GAAG,IAAI;AAC3B,IAAMC,SAAS,GAAAH,OAAA,CAAAG,SAAA,GAAG,aAAa","ignoreList":[]}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.default = void 0;
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
13
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
14
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
15
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
16
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
18
|
-
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
19
|
-
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
20
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
21
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
22
|
-
var _httpCore = require("@webex/http-core");
|
|
23
|
-
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
24
|
-
var _constant = require("./constant");
|
|
25
|
-
var _utils = require("./utils");
|
|
26
|
-
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
27
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
|
|
28
|
-
* Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.
|
|
29
|
-
*/
|
|
30
|
-
/*!
|
|
31
|
-
* Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
var retryCountMap = new _map.default();
|
|
35
|
-
/**
|
|
36
|
-
* @class
|
|
37
|
-
*/
|
|
38
|
-
var DataChannelAuthTokenInterceptor = exports.default = /*#__PURE__*/function (_Interceptor) {
|
|
39
|
-
function DataChannelAuthTokenInterceptor(options) {
|
|
40
|
-
var _this;
|
|
41
|
-
(0, _classCallCheck2.default)(this, DataChannelAuthTokenInterceptor);
|
|
42
|
-
_this = _callSuper(this, DataChannelAuthTokenInterceptor, [options]);
|
|
43
|
-
(0, _defineProperty2.default)(_this, "_refreshDataChannelToken", void 0);
|
|
44
|
-
(0, _defineProperty2.default)(_this, "_isDataChannelTokenEnabled", void 0);
|
|
45
|
-
_this._refreshDataChannelToken = options.refreshDataChannelToken;
|
|
46
|
-
_this._isDataChannelTokenEnabled = options.isDataChannelTokenEnabled;
|
|
47
|
-
return _this;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* @returns {DataChannelAuthTokenInterceptor}
|
|
52
|
-
*/
|
|
53
|
-
(0, _inherits2.default)(DataChannelAuthTokenInterceptor, _Interceptor);
|
|
54
|
-
return (0, _createClass2.default)(DataChannelAuthTokenInterceptor, [{
|
|
55
|
-
key: "getRetryKey",
|
|
56
|
-
value: function getRetryKey(options) {
|
|
57
|
-
if (!options[_constant.RETRY_KEY]) {
|
|
58
|
-
options[_constant.RETRY_KEY] = "".concat((0, _now.default)(), "-").concat(Math.random());
|
|
59
|
-
}
|
|
60
|
-
return options[_constant.RETRY_KEY];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Helper function to get header value case insensitively
|
|
64
|
-
}, {
|
|
65
|
-
key: "getHeader",
|
|
66
|
-
value: function getHeader(headers, name) {
|
|
67
|
-
var key = (0, _keys.default)(headers).find(function (k) {
|
|
68
|
-
return k.toLowerCase() === name.toLowerCase();
|
|
69
|
-
});
|
|
70
|
-
return key ? headers[key] : undefined;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Intercepts outgoing requests and refreshes the Data-Channel-Auth-Token
|
|
75
|
-
* if the current JWT token is expired before the request is sent.
|
|
76
|
-
*
|
|
77
|
-
* @param {Object} options - The original request options.
|
|
78
|
-
* @returns {Promise<Object>} Updated request options with refreshed token if needed.
|
|
79
|
-
*/
|
|
80
|
-
}, {
|
|
81
|
-
key: "onRequest",
|
|
82
|
-
value: (function () {
|
|
83
|
-
var _onRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(options) {
|
|
84
|
-
var token, enabled, newToken, _t;
|
|
85
|
-
return _regenerator.default.wrap(function (_context) {
|
|
86
|
-
while (1) switch (_context.prev = _context.next) {
|
|
87
|
-
case 0:
|
|
88
|
-
token = this.getHeader(options.headers, _constant.DATA_CHANNEL_AUTH_HEADER);
|
|
89
|
-
_context.next = 1;
|
|
90
|
-
return this._isDataChannelTokenEnabled();
|
|
91
|
-
case 1:
|
|
92
|
-
enabled = _context.sent;
|
|
93
|
-
if (!(!token || !enabled)) {
|
|
94
|
-
_context.next = 2;
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
return _context.abrupt("return", options);
|
|
98
|
-
case 2:
|
|
99
|
-
if (!(0, _utils.isJwtTokenExpired)(token)) {
|
|
100
|
-
_context.next = 6;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
_context.prev = 3;
|
|
104
|
-
_context.next = 4;
|
|
105
|
-
return this._refreshDataChannelToken();
|
|
106
|
-
case 4:
|
|
107
|
-
newToken = _context.sent;
|
|
108
|
-
options.headers[_constant.DATA_CHANNEL_AUTH_HEADER] = newToken;
|
|
109
|
-
_context.next = 6;
|
|
110
|
-
break;
|
|
111
|
-
case 5:
|
|
112
|
-
_context.prev = 5;
|
|
113
|
-
_t = _context["catch"](3);
|
|
114
|
-
_loggerProxy.default.logger.warn("DataChannelAuthTokenInterceptor: refresh failed: ".concat(_t.message));
|
|
115
|
-
case 6:
|
|
116
|
-
return _context.abrupt("return", options);
|
|
117
|
-
case 7:
|
|
118
|
-
case "end":
|
|
119
|
-
return _context.stop();
|
|
120
|
-
}
|
|
121
|
-
}, _callee, this, [[3, 5]]);
|
|
122
|
-
}));
|
|
123
|
-
function onRequest(_x) {
|
|
124
|
-
return _onRequest.apply(this, arguments);
|
|
125
|
-
}
|
|
126
|
-
return onRequest;
|
|
127
|
-
}()
|
|
128
|
-
/**
|
|
129
|
-
* Intercept responses and, on 401/403 with `Data-Channel-Auth-Token` header,
|
|
130
|
-
* attempt to refresh the data channel token and retry the original request once.
|
|
131
|
-
*
|
|
132
|
-
* @param {Object} options
|
|
133
|
-
* @param {Object} reason
|
|
134
|
-
* @returns {Promise<HttpResponse>}
|
|
135
|
-
*/
|
|
136
|
-
)
|
|
137
|
-
}, {
|
|
138
|
-
key: "onResponseError",
|
|
139
|
-
value: (function () {
|
|
140
|
-
var _onResponseError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(options, reason) {
|
|
141
|
-
var token, enabled, key, retryCount;
|
|
142
|
-
return _regenerator.default.wrap(function (_context2) {
|
|
143
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
144
|
-
case 0:
|
|
145
|
-
token = this.getHeader(options.headers, _constant.DATA_CHANNEL_AUTH_HEADER);
|
|
146
|
-
_context2.next = 1;
|
|
147
|
-
return this._isDataChannelTokenEnabled();
|
|
148
|
-
case 1:
|
|
149
|
-
enabled = _context2.sent;
|
|
150
|
-
if (!(!token || !enabled)) {
|
|
151
|
-
_context2.next = 2;
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
return _context2.abrupt("return", _promise.default.reject(reason));
|
|
155
|
-
case 2:
|
|
156
|
-
if (!(reason.statusCode !== 401 && reason.statusCode !== 403)) {
|
|
157
|
-
_context2.next = 3;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
return _context2.abrupt("return", _promise.default.reject(reason));
|
|
161
|
-
case 3:
|
|
162
|
-
key = this.getRetryKey(options);
|
|
163
|
-
retryCount = retryCountMap.get(key) || 0;
|
|
164
|
-
if (!(retryCount >= _constant.MAX_RETRY)) {
|
|
165
|
-
_context2.next = 4;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
_loggerProxy.default.logger.error("data channel token refresh exceeded max retry (".concat(_constant.MAX_RETRY, ")"));
|
|
169
|
-
retryCountMap.delete(key);
|
|
170
|
-
return _context2.abrupt("return", _promise.default.reject(reason));
|
|
171
|
-
case 4:
|
|
172
|
-
retryCountMap.set(key, retryCount + 1);
|
|
173
|
-
return _context2.abrupt("return", this.refreshTokenAndRetryWithDelay(options));
|
|
174
|
-
case 5:
|
|
175
|
-
case "end":
|
|
176
|
-
return _context2.stop();
|
|
177
|
-
}
|
|
178
|
-
}, _callee2, this);
|
|
179
|
-
}));
|
|
180
|
-
function onResponseError(_x2, _x3) {
|
|
181
|
-
return _onResponseError.apply(this, arguments);
|
|
182
|
-
}
|
|
183
|
-
return onResponseError;
|
|
184
|
-
}()
|
|
185
|
-
/**
|
|
186
|
-
* Retry the failed data channel request after a delay.
|
|
187
|
-
* Refreshes the Data-Channel-Auth-Token and re-sends the original request.
|
|
188
|
-
*
|
|
189
|
-
* @param {Object} options - Original request options.
|
|
190
|
-
* @returns {Promise<HttpResponse>} - Resolves on successful retry.
|
|
191
|
-
*/
|
|
192
|
-
)
|
|
193
|
-
}, {
|
|
194
|
-
key: "refreshTokenAndRetryWithDelay",
|
|
195
|
-
value: function refreshTokenAndRetryWithDelay(options) {
|
|
196
|
-
var _this2 = this;
|
|
197
|
-
return new _promise.default(function (resolve, reject) {
|
|
198
|
-
setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
199
|
-
var key, newToken, res, msg, err, _t2;
|
|
200
|
-
return _regenerator.default.wrap(function (_context3) {
|
|
201
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
202
|
-
case 0:
|
|
203
|
-
key = _this2.getRetryKey(options);
|
|
204
|
-
_context3.prev = 1;
|
|
205
|
-
_context3.next = 2;
|
|
206
|
-
return _this2._refreshDataChannelToken();
|
|
207
|
-
case 2:
|
|
208
|
-
newToken = _context3.sent;
|
|
209
|
-
options.headers[_constant.DATA_CHANNEL_AUTH_HEADER] = newToken;
|
|
210
|
-
|
|
211
|
-
// @ts-ignore
|
|
212
|
-
_context3.next = 3;
|
|
213
|
-
return _this2.webex.request(options);
|
|
214
|
-
case 3:
|
|
215
|
-
res = _context3.sent;
|
|
216
|
-
retryCountMap.delete(key);
|
|
217
|
-
resolve(res);
|
|
218
|
-
_context3.next = 5;
|
|
219
|
-
break;
|
|
220
|
-
case 4:
|
|
221
|
-
_context3.prev = 4;
|
|
222
|
-
_t2 = _context3["catch"](1);
|
|
223
|
-
retryCountMap.delete(key);
|
|
224
|
-
msg = (_t2 === null || _t2 === void 0 ? void 0 : _t2.message) || String(_t2);
|
|
225
|
-
err = new Error("DataChannel token refresh failed: ".concat(msg));
|
|
226
|
-
err.statusCode = _t2 === null || _t2 === void 0 ? void 0 : _t2.statusCode;
|
|
227
|
-
err.original = _t2;
|
|
228
|
-
reject(err);
|
|
229
|
-
case 5:
|
|
230
|
-
case "end":
|
|
231
|
-
return _context3.stop();
|
|
232
|
-
}
|
|
233
|
-
}, _callee3, null, [[1, 4]]);
|
|
234
|
-
})), _constant.RETRY_INTERVAL);
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
}], [{
|
|
238
|
-
key: "create",
|
|
239
|
-
value: function create() {
|
|
240
|
-
var _this3 = this;
|
|
241
|
-
// @ts-ignore
|
|
242
|
-
return new DataChannelAuthTokenInterceptor({
|
|
243
|
-
webex: this,
|
|
244
|
-
isDataChannelTokenEnabled: function () {
|
|
245
|
-
var _isDataChannelTokenEnabled = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
246
|
-
return _regenerator.default.wrap(function (_context4) {
|
|
247
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
248
|
-
case 0:
|
|
249
|
-
return _context4.abrupt("return", _this3.internal.llm.isDataChannelTokenEnabled());
|
|
250
|
-
case 1:
|
|
251
|
-
case "end":
|
|
252
|
-
return _context4.stop();
|
|
253
|
-
}
|
|
254
|
-
}, _callee4);
|
|
255
|
-
}));
|
|
256
|
-
function isDataChannelTokenEnabled() {
|
|
257
|
-
return _isDataChannelTokenEnabled.apply(this, arguments);
|
|
258
|
-
}
|
|
259
|
-
return isDataChannelTokenEnabled;
|
|
260
|
-
}(),
|
|
261
|
-
refreshDataChannelToken: function () {
|
|
262
|
-
var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
263
|
-
var _yield$_this3$interna, body, _ref2, datachannelToken, dataChannelTokenType;
|
|
264
|
-
return _regenerator.default.wrap(function (_context5) {
|
|
265
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
266
|
-
case 0:
|
|
267
|
-
_context5.next = 1;
|
|
268
|
-
return _this3.internal.llm.refreshDataChannelToken();
|
|
269
|
-
case 1:
|
|
270
|
-
_yield$_this3$interna = _context5.sent;
|
|
271
|
-
body = _yield$_this3$interna.body;
|
|
272
|
-
_ref2 = body !== null && body !== void 0 ? body : {}, datachannelToken = _ref2.datachannelToken, dataChannelTokenType = _ref2.dataChannelTokenType; // @ts-ignore
|
|
273
|
-
_this3.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType);
|
|
274
|
-
return _context5.abrupt("return", datachannelToken);
|
|
275
|
-
case 2:
|
|
276
|
-
case "end":
|
|
277
|
-
return _context5.stop();
|
|
278
|
-
}
|
|
279
|
-
}, _callee5);
|
|
280
|
-
}));
|
|
281
|
-
function refreshDataChannelToken() {
|
|
282
|
-
return _refreshDataChannelToken.apply(this, arguments);
|
|
283
|
-
}
|
|
284
|
-
return refreshDataChannelToken;
|
|
285
|
-
}()
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
}]);
|
|
289
|
-
}(_httpCore.Interceptor);
|
|
290
|
-
//# sourceMappingURL=dataChannelAuthToken.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_httpCore","require","_loggerProxy","_interopRequireDefault","_constant","_utils","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","retryCountMap","_map","DataChannelAuthTokenInterceptor","exports","_Interceptor","options","_this","_classCallCheck2","_defineProperty2","_refreshDataChannelToken","refreshDataChannelToken","_isDataChannelTokenEnabled","isDataChannelTokenEnabled","_inherits2","_createClass2","key","value","getRetryKey","RETRY_KEY","concat","_now","Math","random","getHeader","headers","name","_keys","find","k","toLowerCase","undefined","_onRequest","_asyncToGenerator2","_regenerator","mark","_callee","token","enabled","newToken","_t","wrap","_context","prev","next","DATA_CHANNEL_AUTH_HEADER","sent","abrupt","isJwtTokenExpired","LoggerProxy","logger","warn","message","stop","onRequest","_x","arguments","_onResponseError","_callee2","reason","retryCount","_context2","_promise","reject","statusCode","get","MAX_RETRY","error","delete","set","refreshTokenAndRetryWithDelay","onResponseError","_x2","_x3","_this2","resolve","setTimeout","_callee3","res","msg","err","_t2","_context3","webex","request","String","Error","original","RETRY_INTERVAL","create","_this3","_callee4","_context4","internal","llm","_callee5","_yield$_this3$interna","body","_ref2","datachannelToken","dataChannelTokenType","_context5","setDatachannelToken","Interceptor"],"sources":["dataChannelAuthToken.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {DATA_CHANNEL_AUTH_HEADER, MAX_RETRY, RETRY_INTERVAL, RETRY_KEY} from './constant';\nimport {isJwtTokenExpired} from './utils';\n\n/*!\n * Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst retryCountMap = new Map();\ninterface HttpLikeError extends Error {\n statusCode?: number;\n original?: any;\n}\n/**\n * @class\n */\nexport default class DataChannelAuthTokenInterceptor extends Interceptor {\n private _refreshDataChannelToken: () => Promise<string>;\n private _isDataChannelTokenEnabled: () => Promise<boolean>;\n constructor(options) {\n super(options);\n\n this._refreshDataChannelToken = options.refreshDataChannelToken;\n this._isDataChannelTokenEnabled = options.isDataChannelTokenEnabled;\n }\n\n /**\n * @returns {DataChannelAuthTokenInterceptor}\n */\n static create() {\n // @ts-ignore\n return new DataChannelAuthTokenInterceptor({\n webex: this,\n\n isDataChannelTokenEnabled: async () => {\n // @ts-ignore\n return this.internal.llm.isDataChannelTokenEnabled();\n },\n\n refreshDataChannelToken: async () => {\n // @ts-ignore\n const {body} = await this.internal.llm.refreshDataChannelToken();\n const {datachannelToken, dataChannelTokenType} = body ?? {};\n\n // @ts-ignore\n this.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType);\n\n return datachannelToken;\n },\n });\n }\n\n private getRetryKey(options) {\n if (!options[RETRY_KEY]) {\n options[RETRY_KEY] = `${Date.now()}-${Math.random()}`;\n }\n\n return options[RETRY_KEY];\n }\n\n // Helper function to get header value case insensitively\n private getHeader(headers: Record<string, string>, name: string) {\n const key = Object.keys(headers).find((k) => k.toLowerCase() === name.toLowerCase());\n\n return key ? headers[key] : undefined;\n }\n\n /**\n * Intercepts outgoing requests and refreshes the Data-Channel-Auth-Token\n * if the current JWT token is expired before the request is sent.\n *\n * @param {Object} options - The original request options.\n * @returns {Promise<Object>} Updated request options with refreshed token if needed.\n */\n async onRequest(options) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return options;\n }\n\n if (isJwtTokenExpired(token)) {\n try {\n const newToken = await this._refreshDataChannelToken();\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n } catch (e) {\n LoggerProxy.logger.warn(`DataChannelAuthTokenInterceptor: refresh failed: ${e.message}`);\n }\n }\n\n return options;\n }\n\n /**\n * Intercept responses and, on 401/403 with `Data-Channel-Auth-Token` header,\n * attempt to refresh the data channel token and retry the original request once.\n *\n * @param {Object} options\n * @param {Object} reason\n * @returns {Promise<HttpResponse>}\n */\n async onResponseError(options, reason) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return Promise.reject(reason);\n }\n\n if (reason.statusCode !== 401 && reason.statusCode !== 403) {\n return Promise.reject(reason);\n }\n\n const key = this.getRetryKey(options);\n const retryCount = retryCountMap.get(key) || 0;\n\n if (retryCount >= MAX_RETRY) {\n LoggerProxy.logger.error(`data channel token refresh exceeded max retry (${MAX_RETRY})`);\n retryCountMap.delete(key);\n\n return Promise.reject(reason);\n }\n\n retryCountMap.set(key, retryCount + 1);\n\n return this.refreshTokenAndRetryWithDelay(options);\n }\n\n /**\n * Retry the failed data channel request after a delay.\n * Refreshes the Data-Channel-Auth-Token and re-sends the original request.\n *\n * @param {Object} options - Original request options.\n * @returns {Promise<HttpResponse>} - Resolves on successful retry.\n */\n refreshTokenAndRetryWithDelay(options) {\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n const key = this.getRetryKey(options);\n try {\n const newToken = await this._refreshDataChannelToken();\n\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n\n // @ts-ignore\n const res = await this.webex.request(options);\n retryCountMap.delete(key);\n\n resolve(res);\n } catch (e) {\n retryCountMap.delete(key);\n\n const msg = e?.message || String(e);\n\n const err: HttpLikeError = new Error(`DataChannel token refresh failed: ${msg}`);\n err.statusCode = e?.statusCode;\n err.original = e;\n\n reject(err);\n }\n }, RETRY_INTERVAL);\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAA0C,SAAAK,WAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAD,CAAA,OAAAE,gBAAA,CAAAC,OAAA,EAAAH,CAAA,OAAAI,2BAAA,CAAAD,OAAA,EAAAJ,CAAA,EAAAM,yBAAA,KAAAC,kBAAA,CAAAN,CAAA,EAAAC,CAAA,YAAAC,gBAAA,CAAAC,OAAA,EAAAJ,CAAA,EAAAQ,WAAA,IAAAP,CAAA,CAAAQ,KAAA,CAAAT,CAAA,EAAAE,CAAA;AAAA,SAAAI,0BAAA,cAAAN,CAAA,IAAAU,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,kBAAA,CAAAG,OAAA,iCAAAV,CAAA,aAAAM,yBAAA,YAAAA,0BAAA,aAAAN,CAAA,UAP1C;AACA;AACA;AAOA;AACA;AACA;;AAEA,IAAMc,aAAa,GAAG,IAAAC,IAAA,CAAAX,OAAA,CAAQ,CAAC;AAK/B;AACA;AACA;AAFA,IAGqBY,+BAA+B,GAAAC,OAAA,CAAAb,OAAA,0BAAAc,YAAA;EAGlD,SAAAF,gCAAYG,OAAO,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAjB,OAAA,QAAAY,+BAAA;IACnBI,KAAA,GAAArB,UAAA,OAAAiB,+BAAA,GAAMG,OAAO;IAAE,IAAAG,gBAAA,CAAAlB,OAAA,EAAAgB,KAAA;IAAA,IAAAE,gBAAA,CAAAlB,OAAA,EAAAgB,KAAA;IAEfA,KAAA,CAAKG,wBAAwB,GAAGJ,OAAO,CAACK,uBAAuB;IAC/DJ,KAAA,CAAKK,0BAA0B,GAAGN,OAAO,CAACO,yBAAyB;IAAC,OAAAN,KAAA;EACtE;;EAEA;AACF;AACA;EAFE,IAAAO,UAAA,CAAAvB,OAAA,EAAAY,+BAAA,EAAAE,YAAA;EAAA,WAAAU,aAAA,CAAAxB,OAAA,EAAAY,+BAAA;IAAAa,GAAA;IAAAC,KAAA,EA0BA,SAAQC,WAAWA,CAACZ,OAAO,EAAE;MAC3B,IAAI,CAACA,OAAO,CAACa,mBAAS,CAAC,EAAE;QACvBb,OAAO,CAACa,mBAAS,CAAC,MAAAC,MAAA,CAAM,IAAAC,IAAA,CAAA9B,OAAA,EAAS,CAAC,OAAA6B,MAAA,CAAIE,IAAI,CAACC,MAAM,CAAC,CAAC,CAAE;MACvD;MAEA,OAAOjB,OAAO,CAACa,mBAAS,CAAC;IAC3B;;IAEA;EAAA;IAAAH,GAAA;IAAAC,KAAA,EACA,SAAQO,SAASA,CAACC,OAA+B,EAAEC,IAAY,EAAE;MAC/D,IAAMV,GAAG,GAAG,IAAAW,KAAA,CAAApC,OAAA,EAAYkC,OAAO,CAAC,CAACG,IAAI,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,CAACC,WAAW,CAAC,CAAC,KAAKJ,IAAI,CAACI,WAAW,CAAC,CAAC;MAAA,EAAC;MAEpF,OAAOd,GAAG,GAAGS,OAAO,CAACT,GAAG,CAAC,GAAGe,SAAS;IACvC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAf,GAAA;IAAAC,KAAA;MAAA,IAAAe,UAAA,OAAAC,kBAAA,CAAA1C,OAAA,eAAA2C,YAAA,CAAA3C,OAAA,CAAA4C,IAAA,CAOA,SAAAC,QAAgB9B,OAAO;QAAA,IAAA+B,KAAA,EAAAC,OAAA,EAAAC,QAAA,EAAAC,EAAA;QAAA,OAAAN,YAAA,CAAA3C,OAAA,CAAAkD,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACfP,KAAK,GAAG,IAAI,CAACb,SAAS,CAAClB,OAAO,CAACmB,OAAO,EAAEoB,kCAAwB,CAAC;cAAAH,QAAA,CAAAE,IAAA;cAAA,OACjD,IAAI,CAAChC,0BAA0B,CAAC,CAAC;YAAA;cAAjD0B,OAAO,GAAAI,QAAA,CAAAI,IAAA;cAAA,MAET,CAACT,KAAK,IAAI,CAACC,OAAO;gBAAAI,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,OAAAF,QAAA,CAAAK,MAAA,WACbzC,OAAO;YAAA;cAAA,KAGZ,IAAA0C,wBAAiB,EAACX,KAAK,CAAC;gBAAAK,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAED,IAAI,CAAClC,wBAAwB,CAAC,CAAC;YAAA;cAAhD6B,QAAQ,GAAAG,QAAA,CAAAI,IAAA;cACdxC,OAAO,CAACmB,OAAO,CAACoB,kCAAwB,CAAC,GAAGN,QAAQ;cAACG,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAH,EAAA,GAAAE,QAAA;cAErDO,oBAAW,CAACC,MAAM,CAACC,IAAI,qDAAA/B,MAAA,CAAqDoB,EAAA,CAAEY,OAAO,CAAE,CAAC;YAAC;cAAA,OAAAV,QAAA,CAAAK,MAAA,WAItFzC,OAAO;YAAA;YAAA;cAAA,OAAAoC,QAAA,CAAAW,IAAA;UAAA;QAAA,GAAAjB,OAAA;MAAA,CACf;MAAA,SAlBKkB,SAASA,CAAAC,EAAA;QAAA,OAAAvB,UAAA,CAAApC,KAAA,OAAA4D,SAAA;MAAA;MAAA,OAATF,SAAS;IAAA;IAoBf;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAAtC,GAAA;IAAAC,KAAA;MAAA,IAAAwC,gBAAA,OAAAxB,kBAAA,CAAA1C,OAAA,eAAA2C,YAAA,CAAA3C,OAAA,CAAA4C,IAAA,CAQA,SAAAuB,SAAsBpD,OAAO,EAAEqD,MAAM;QAAA,IAAAtB,KAAA,EAAAC,OAAA,EAAAtB,GAAA,EAAA4C,UAAA;QAAA,OAAA1B,YAAA,CAAA3C,OAAA,CAAAkD,IAAA,WAAAoB,SAAA;UAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;YAAA;cAC7BP,KAAK,GAAG,IAAI,CAACb,SAAS,CAAClB,OAAO,CAACmB,OAAO,EAAEoB,kCAAwB,CAAC;cAAAgB,SAAA,CAAAjB,IAAA;cAAA,OACjD,IAAI,CAAChC,0BAA0B,CAAC,CAAC;YAAA;cAAjD0B,OAAO,GAAAuB,SAAA,CAAAf,IAAA;cAAA,MAET,CAACT,KAAK,IAAI,CAACC,OAAO;gBAAAuB,SAAA,CAAAjB,IAAA;gBAAA;cAAA;cAAA,OAAAiB,SAAA,CAAAd,MAAA,WACbe,QAAA,CAAAvE,OAAA,CAAQwE,MAAM,CAACJ,MAAM,CAAC;YAAA;cAAA,MAG3BA,MAAM,CAACK,UAAU,KAAK,GAAG,IAAIL,MAAM,CAACK,UAAU,KAAK,GAAG;gBAAAH,SAAA,CAAAjB,IAAA;gBAAA;cAAA;cAAA,OAAAiB,SAAA,CAAAd,MAAA,WACjDe,QAAA,CAAAvE,OAAA,CAAQwE,MAAM,CAACJ,MAAM,CAAC;YAAA;cAGzB3C,GAAG,GAAG,IAAI,CAACE,WAAW,CAACZ,OAAO,CAAC;cAC/BsD,UAAU,GAAG3D,aAAa,CAACgE,GAAG,CAACjD,GAAG,CAAC,IAAI,CAAC;cAAA,MAE1C4C,UAAU,IAAIM,mBAAS;gBAAAL,SAAA,CAAAjB,IAAA;gBAAA;cAAA;cACzBK,oBAAW,CAACC,MAAM,CAACiB,KAAK,mDAAA/C,MAAA,CAAmD8C,mBAAS,MAAG,CAAC;cACxFjE,aAAa,CAACmE,MAAM,CAACpD,GAAG,CAAC;cAAC,OAAA6C,SAAA,CAAAd,MAAA,WAEnBe,QAAA,CAAAvE,OAAA,CAAQwE,MAAM,CAACJ,MAAM,CAAC;YAAA;cAG/B1D,aAAa,CAACoE,GAAG,CAACrD,GAAG,EAAE4C,UAAU,GAAG,CAAC,CAAC;cAAC,OAAAC,SAAA,CAAAd,MAAA,WAEhC,IAAI,CAACuB,6BAA6B,CAAChE,OAAO,CAAC;YAAA;YAAA;cAAA,OAAAuD,SAAA,CAAAR,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA,CACnD;MAAA,SAzBKa,eAAeA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAhB,gBAAA,CAAA7D,KAAA,OAAA4D,SAAA;MAAA;MAAA,OAAfe,eAAe;IAAA;IA2BrB;AACF;AACA;AACA;AACA;AACA;AACA;IANE;EAAA;IAAAvD,GAAA;IAAAC,KAAA,EAOA,SAAAqD,6BAA6BA,CAAChE,OAAO,EAAE;MAAA,IAAAoE,MAAA;MACrC,OAAO,IAAAZ,QAAA,CAAAvE,OAAA,CAAY,UAACoF,OAAO,EAAEZ,MAAM,EAAK;QACtCa,UAAU,kBAAA3C,kBAAA,CAAA1C,OAAA,eAAA2C,YAAA,CAAA3C,OAAA,CAAA4C,IAAA,CAAC,SAAA0C,SAAA;UAAA,IAAA7D,GAAA,EAAAuB,QAAA,EAAAuC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;UAAA,OAAA/C,YAAA,CAAA3C,OAAA,CAAAkD,IAAA,WAAAyC,SAAA;YAAA,kBAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAAtC,IAAA;cAAA;gBACH5B,GAAG,GAAG0D,MAAI,CAACxD,WAAW,CAACZ,OAAO,CAAC;gBAAA4E,SAAA,CAAAvC,IAAA;gBAAAuC,SAAA,CAAAtC,IAAA;gBAAA,OAEZ8B,MAAI,CAAChE,wBAAwB,CAAC,CAAC;cAAA;gBAAhD6B,QAAQ,GAAA2C,SAAA,CAAApC,IAAA;gBAEdxC,OAAO,CAACmB,OAAO,CAACoB,kCAAwB,CAAC,GAAGN,QAAQ;;gBAEpD;gBAAA2C,SAAA,CAAAtC,IAAA;gBAAA,OACkB8B,MAAI,CAACS,KAAK,CAACC,OAAO,CAAC9E,OAAO,CAAC;cAAA;gBAAvCwE,GAAG,GAAAI,SAAA,CAAApC,IAAA;gBACT7C,aAAa,CAACmE,MAAM,CAACpD,GAAG,CAAC;gBAEzB2D,OAAO,CAACG,GAAG,CAAC;gBAACI,SAAA,CAAAtC,IAAA;gBAAA;cAAA;gBAAAsC,SAAA,CAAAvC,IAAA;gBAAAsC,GAAA,GAAAC,SAAA;gBAEbjF,aAAa,CAACmE,MAAM,CAACpD,GAAG,CAAC;gBAEnB+D,GAAG,GAAG,CAAAE,GAAA,aAAAA,GAAA,uBAAAA,GAAA,CAAG7B,OAAO,KAAIiC,MAAM,CAAAJ,GAAE,CAAC;gBAE7BD,GAAkB,GAAG,IAAIM,KAAK,sCAAAlE,MAAA,CAAsC2D,GAAG,CAAE,CAAC;gBAChFC,GAAG,CAAChB,UAAU,GAAAiB,GAAA,aAAAA,GAAA,uBAAGA,GAAA,CAAGjB,UAAU;gBAC9BgB,GAAG,CAACO,QAAQ,GAAAN,GAAI;gBAEhBlB,MAAM,CAACiB,GAAG,CAAC;cAAC;cAAA;gBAAA,OAAAE,SAAA,CAAA7B,IAAA;YAAA;UAAA,GAAAwB,QAAA;QAAA,CAEf,IAAEW,wBAAc,CAAC;MACpB,CAAC,CAAC;IACJ;EAAC;IAAAxE,GAAA;IAAAC,KAAA,EAtID,SAAOwE,MAAMA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACd;MACA,OAAO,IAAIvF,+BAA+B,CAAC;QACzCgF,KAAK,EAAE,IAAI;QAEXtE,yBAAyB;UAAA,IAAAD,0BAAA,OAAAqB,kBAAA,CAAA1C,OAAA,eAAA2C,YAAA,CAAA3C,OAAA,CAAA4C,IAAA,CAAE,SAAAwD,SAAA;YAAA,OAAAzD,YAAA,CAAA3C,OAAA,CAAAkD,IAAA,WAAAmD,SAAA;cAAA,kBAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;gBAAA;kBAAA,OAAAgD,SAAA,CAAA7C,MAAA,WAElB2C,MAAI,CAACG,QAAQ,CAACC,GAAG,CAACjF,yBAAyB,CAAC,CAAC;gBAAA;gBAAA;kBAAA,OAAA+E,SAAA,CAAAvC,IAAA;cAAA;YAAA,GAAAsC,QAAA;UAAA,CACrD;UAAA,SAHD9E,yBAAyBA,CAAA;YAAA,OAAAD,0BAAA,CAAAhB,KAAA,OAAA4D,SAAA;UAAA;UAAA,OAAzB3C,yBAAyB;QAAA,GAGxB;QAEDF,uBAAuB;UAAA,IAAAD,wBAAA,OAAAuB,kBAAA,CAAA1C,OAAA,eAAA2C,YAAA,CAAA3C,OAAA,CAAA4C,IAAA,CAAE,SAAA4D,SAAA;YAAA,IAAAC,qBAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,gBAAA,EAAAC,oBAAA;YAAA,OAAAlE,YAAA,CAAA3C,OAAA,CAAAkD,IAAA,WAAA4D,SAAA;cAAA,kBAAAA,SAAA,CAAA1D,IAAA,GAAA0D,SAAA,CAAAzD,IAAA;gBAAA;kBAAAyD,SAAA,CAAAzD,IAAA;kBAAA,OAEF8C,MAAI,CAACG,QAAQ,CAACC,GAAG,CAACnF,uBAAuB,CAAC,CAAC;gBAAA;kBAAAqF,qBAAA,GAAAK,SAAA,CAAAvD,IAAA;kBAAzDmD,IAAI,GAAAD,qBAAA,CAAJC,IAAI;kBAAAC,KAAA,GACsCD,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,CAAC,CAAC,EAApDE,gBAAgB,GAAAD,KAAA,CAAhBC,gBAAgB,EAAEC,oBAAoB,GAAAF,KAAA,CAApBE,oBAAoB,EAE7C;kBACAV,MAAI,CAACG,QAAQ,CAACC,GAAG,CAACQ,mBAAmB,CAACH,gBAAgB,EAAEC,oBAAoB,CAAC;kBAAC,OAAAC,SAAA,CAAAtD,MAAA,WAEvEoD,gBAAgB;gBAAA;gBAAA;kBAAA,OAAAE,SAAA,CAAAhD,IAAA;cAAA;YAAA,GAAA0C,QAAA;UAAA,CACxB;UAAA,SATDpF,uBAAuBA,CAAA;YAAA,OAAAD,wBAAA,CAAAd,KAAA,OAAA4D,SAAA;UAAA;UAAA,OAAvB7C,uBAAuB;QAAA;MAUzB,CAAC,CAAC;IACJ;EAAC;AAAA,EAlC0D4F,qBAAW","ignoreList":[]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
|
|
4
|
-
var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
|
|
5
|
-
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
6
|
-
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
7
|
-
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
8
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
9
|
-
value: true
|
|
10
|
-
});
|
|
11
|
-
exports.isJwtTokenExpired = void 0;
|
|
12
|
-
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
13
|
-
var jose = _interopRequireWildcard(require("jose"));
|
|
14
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
15
|
-
var EXPIRY_BUFFER = 30 * 1000;
|
|
16
|
-
|
|
17
|
-
// eslint-disable-next-line import/prefer-default-export
|
|
18
|
-
var isJwtTokenExpired = exports.isJwtTokenExpired = function isJwtTokenExpired(token) {
|
|
19
|
-
try {
|
|
20
|
-
var payload = jose.decodeJwt(token);
|
|
21
|
-
if (!(payload !== null && payload !== void 0 && payload.exp)) return false;
|
|
22
|
-
return payload.exp * 1000 < (0, _now.default)() + EXPIRY_BUFFER;
|
|
23
|
-
} catch (_unused) {
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["jose","_interopRequireWildcard","require","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","EXPIRY_BUFFER","isJwtTokenExpired","exports","token","payload","decodeJwt","exp","_now","_unused"],"sources":["utils.ts"],"sourcesContent":["import * as jose from 'jose';\n\nconst EXPIRY_BUFFER = 30 * 1000;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const isJwtTokenExpired = (token: string): boolean => {\n try {\n const payload = jose.decodeJwt(token);\n\n if (!payload?.exp) return false;\n\n return payload.exp * 1000 < Date.now() + EXPIRY_BUFFER;\n } catch {\n return true;\n }\n};\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,IAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA6B,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAJ,uBAAA,YAAAA,wBAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAE7B,IAAMmB,aAAa,GAAG,EAAE,GAAG,IAAI;;AAE/B;AACO,IAAMC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,SAApBA,iBAAiBA,CAAIE,KAAa,EAAc;EAC3D,IAAI;IACF,IAAMC,OAAO,GAAG3B,IAAI,CAAC4B,SAAS,CAACF,KAAK,CAAC;IAErC,IAAI,EAACC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,GAAG,GAAE,OAAO,KAAK;IAE/B,OAAOF,OAAO,CAACE,GAAG,GAAG,IAAI,GAAG,IAAAC,IAAA,CAAAjB,OAAA,EAAS,CAAC,GAAGU,aAAa;EACxD,CAAC,CAAC,OAAAQ,OAAA,EAAM;IACN,OAAO,IAAI;EACb;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { ObjectType } from './types';
|
|
2
|
-
export type LeafDataItem = {
|
|
3
|
-
type: ObjectType;
|
|
4
|
-
id: number;
|
|
5
|
-
version: number;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* HashTree is a data structure that organizes items into leaves based on their IDs,
|
|
9
|
-
*/
|
|
10
|
-
declare class HashTree {
|
|
11
|
-
leaves: Array<Record<string, Record<number, LeafDataItem>>>;
|
|
12
|
-
leafHashes: Array<string>;
|
|
13
|
-
readonly numLeaves: number;
|
|
14
|
-
/**
|
|
15
|
-
* Constructs a new HashTree.
|
|
16
|
-
* @param {LeafDataItem[]} leafData Initial data to populate the tree.
|
|
17
|
-
* @param {number} numLeaves The number of leaf nodes in the tree. Must be 0 or a power of 2.
|
|
18
|
-
* @throws {Error} If numLeaves is not 0 or a power of 2.
|
|
19
|
-
*/
|
|
20
|
-
constructor(leafData: LeafDataItem[], numLeaves: number);
|
|
21
|
-
/**
|
|
22
|
-
* Internal logic for adding or updating an item, without computing the leaf hash.
|
|
23
|
-
* @param {LeafDataItem} item The item to add or update.
|
|
24
|
-
* @returns {{put: boolean, index: (number|null)}} Object indicating if put and the leaf index.
|
|
25
|
-
* @private
|
|
26
|
-
*/
|
|
27
|
-
private _putItemInternal;
|
|
28
|
-
/**
|
|
29
|
-
* Adds or updates a single item in the hash tree.
|
|
30
|
-
* @param {LeafDataItem} item The item to add or update.
|
|
31
|
-
* @returns {boolean} True if the item was added or updated, false otherwise (e.g., older version or tree has 0 leaves).
|
|
32
|
-
*/
|
|
33
|
-
putItem(item: LeafDataItem): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Adds or updates multiple items in the hash tree.
|
|
36
|
-
* @param {LeafDataItem[]} items The array of items to add or update.
|
|
37
|
-
* @returns {boolean[]} An array of booleans indicating success for each item.
|
|
38
|
-
*/
|
|
39
|
-
putItems(items: LeafDataItem[]): boolean[];
|
|
40
|
-
/**
|
|
41
|
-
* Internal logic for removing an item, without computing the leaf hash.
|
|
42
|
-
* @param {LeafDataItem} item The item to remove.
|
|
43
|
-
* @returns {{removed: boolean, index: (number|null)}} Object indicating if removed and the leaf index.
|
|
44
|
-
* @private
|
|
45
|
-
*/
|
|
46
|
-
private _removeItemInternal;
|
|
47
|
-
/**
|
|
48
|
-
* Removes a single item from the hash tree.
|
|
49
|
-
* The removal is based on matching type, id, and the provided item's version
|
|
50
|
-
* being greater than or equal to the existing item's version.
|
|
51
|
-
* @param {LeafDataItem} item The item to remove.
|
|
52
|
-
* @returns {boolean} True if the item was removed, false otherwise.
|
|
53
|
-
*/
|
|
54
|
-
removeItem(item: LeafDataItem): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* Removes multiple items from the hash tree.
|
|
57
|
-
* @param {LeafDataItem[]} items The array of items to remove.
|
|
58
|
-
* @returns {boolean[]} An array of booleans indicating success for each item.
|
|
59
|
-
*/
|
|
60
|
-
removeItems(items: LeafDataItem[]): boolean[];
|
|
61
|
-
/**
|
|
62
|
-
* Updates multiple items in the hash tree.
|
|
63
|
-
* This method can handle both updating and removing items based on the `operation` flag.
|
|
64
|
-
*
|
|
65
|
-
* @param {object[]} itemUpdates An array of objects containing `operation` flag and the `item` to update.
|
|
66
|
-
* @returns {boolean[]} An array of booleans indicating success for each operation.
|
|
67
|
-
*/
|
|
68
|
-
updateItems(itemUpdates: {
|
|
69
|
-
operation: 'update' | 'remove';
|
|
70
|
-
item: LeafDataItem;
|
|
71
|
-
}[]): boolean[];
|
|
72
|
-
/**
|
|
73
|
-
* Computes the hash for a specific leaf.
|
|
74
|
-
* The hash is based on the sorted items within the leaf.
|
|
75
|
-
* @param {number} index The index of the leaf to compute the hash for.
|
|
76
|
-
* @returns {void}
|
|
77
|
-
*/
|
|
78
|
-
computeLeafHash(index: number): void;
|
|
79
|
-
/**
|
|
80
|
-
* Computes all internal and leaf node hashes of the tree.
|
|
81
|
-
* Internal node hashes are computed bottom-up from the leaf hashes.
|
|
82
|
-
* @returns {string[]} An array of hash strings, with internal node hashes first, followed by leaf hashes.
|
|
83
|
-
* Returns `[EMPTY_HASH]` if the tree has 0 leaves.
|
|
84
|
-
*/
|
|
85
|
-
computeTreeHashes(): string[];
|
|
86
|
-
/**
|
|
87
|
-
* Returns all hashes in the tree (internal nodes then leaf nodes).
|
|
88
|
-
* @returns {string[]} An array of hash strings.
|
|
89
|
-
*/
|
|
90
|
-
getHashes(): string[];
|
|
91
|
-
/**
|
|
92
|
-
* Computes and returns the hash value of the root node.
|
|
93
|
-
* @returns {string} The root hash of the entire tree. Returns `EMPTY_HASH` if the tree has 0 leaves.
|
|
94
|
-
*/
|
|
95
|
-
getRootHash(): string;
|
|
96
|
-
/**
|
|
97
|
-
* Gets the number of leaves in the tree.
|
|
98
|
-
* @returns {number} The number of leaves.
|
|
99
|
-
*/
|
|
100
|
-
getLeafCount(): number;
|
|
101
|
-
/**
|
|
102
|
-
* Calculates the total number of items stored in the tree.
|
|
103
|
-
* @returns {number} The total number of items.
|
|
104
|
-
*/
|
|
105
|
-
getTotalItemCount(): number;
|
|
106
|
-
/**
|
|
107
|
-
* Retrieves all data items from a specific leaf.
|
|
108
|
-
* @param {number} leafIndex The index of the leaf.
|
|
109
|
-
* @returns {LeafDataItem[]} An array of LeafDataItem in the specified leaf, sorted by ID,
|
|
110
|
-
* or an empty array if the index is invalid or leaf is empty.
|
|
111
|
-
*/
|
|
112
|
-
getLeafData(leafIndex: number): LeafDataItem[];
|
|
113
|
-
/**
|
|
114
|
-
* Retrieves the version of a specific item by its id and type.
|
|
115
|
-
* @param {number} id The ID of the item.
|
|
116
|
-
* @param {ObjectType} type The type of the item.
|
|
117
|
-
* @returns {number | undefined} The version of the item if found, undefined otherwise.
|
|
118
|
-
*/
|
|
119
|
-
getItemVersion(id: number, type: ObjectType): number | undefined;
|
|
120
|
-
/**
|
|
121
|
-
* Resizes the HashTree to have a new number of leaf nodes, redistributing all existing items.
|
|
122
|
-
* @param {number} newNumLeaves The new number of leaf nodes (must be 0 or a power of 2).
|
|
123
|
-
* @returns {boolean} true if the tree was resized, false if the size didn't change.
|
|
124
|
-
* @throws {Error} if newNumLeaves is not 0 or a power of 2.
|
|
125
|
-
*/
|
|
126
|
-
resize(newNumLeaves: number): boolean;
|
|
127
|
-
/**
|
|
128
|
-
* Compares the tree's leaf hashes with an external set of hashes and returns the indices of differing leaf nodes.
|
|
129
|
-
* The externalHashes array is expected to contain all node hashes (internal followed by leaves),
|
|
130
|
-
* similar to the output of getHashes().
|
|
131
|
-
* @param {string[]} externalHashes An array of hash strings (internal node hashes then leaf hashes).
|
|
132
|
-
* @returns {number[]} An array of indices of the leaf nodes that have different hashes.
|
|
133
|
-
*/
|
|
134
|
-
diffHashes(externalHashes: string[]): number[];
|
|
135
|
-
}
|
|
136
|
-
export default HashTree;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { HashTreeObject } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Checks if the given hash tree object is of type "self"
|
|
4
|
-
* @param {HashTreeObject} object object to check
|
|
5
|
-
* @returns {boolean} True if the object is of type "self", false otherwise
|
|
6
|
-
*/
|
|
7
|
-
export declare function isSelf(object: HashTreeObject): boolean;
|
|
8
|
-
/**
|
|
9
|
-
* Checks if the given hash tree object is of type "Metadata"
|
|
10
|
-
* @param {HashTreeObject} object object to check
|
|
11
|
-
* @returns {boolean} True if the object is of type "Metadata", false otherwise
|
|
12
|
-
*/
|
|
13
|
-
export declare function isMetadata(object: HashTreeObject): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Analyzes given part of Locus DTO recursively and delete any nested objects that have their own htMeta
|
|
16
|
-
*
|
|
17
|
-
* @param {Object} currentLocusPart part of locus DTO to analyze
|
|
18
|
-
* @param {Object} parent parent object
|
|
19
|
-
* @param {string|number} currentKey key of the parent object that currentLocusPart is
|
|
20
|
-
* @returns {void}
|
|
21
|
-
*/
|
|
22
|
-
export declare const deleteNestedObjectsWithHtMeta: (currentLocusPart: any, parent?: any, currentKey?: string | number) => void;
|