@webex/internal-plugin-voicea 2.23.0

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/README.md ADDED
@@ -0,0 +1,90 @@
1
+ # @webex/internal-plugin-voicea
2
+
3
+ [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
4
+
5
+ > Plugin for the Voicea service
6
+
7
+ This is an internal Cisco Webex plugin. As such, it does not strictly adhere to semantic versioning. Use at your own risk. If you're not working on one of our first party clients, please look at our [developer api](https://developer.webex.com/) and stick to our public plugins.
8
+
9
+ - [@webex/internal-plugin-voicea](#webexinternal-plugin-voicea)
10
+ - [Install](#install)
11
+ - [Usage](#usage)
12
+ - [Maintainers](#maintainers)
13
+ - [Contribute](#contribute)
14
+ - [License](#license)
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ npm install --save @webex/internal-plugin-voicea
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ ```js
25
+
26
+ import '@webex/internal-plugin-voicea';
27
+
28
+ import WebexCore from '@webex/webex-core';
29
+
30
+ const webex = new WebexCore();
31
+ // locusUrl is got from meeting.locusInfo.url;
32
+ // datachannelUrl is got from meeting.locusInfo.info.datachannelUrl;
33
+ // internally uses LLM plugin
34
+ webex.internal.voicea.registerAndConnect(locusUrl, datachannelUrl);
35
+
36
+ ```
37
+ Toggle Transcribing
38
+
39
+ * Enable/Disable Transcribing in a meeting
40
+ * Automatically activates Closed Captions(CC) if enabled.
41
+ * Triggers voicea:transcribingOn / voicea:transcribingOff
42
+
43
+ ```js
44
+ await webex.internal.voicea.toggleTranscribing(true);
45
+ await webex.internal.voicea.toggleTranscribing(false);
46
+ ```
47
+
48
+
49
+ Toggle Captions
50
+
51
+ * Enable Captioning in a meeting
52
+ * Closed Caption cannot be turned off in a meeting
53
+ * Triggers voicea:captionOn
54
+
55
+ ```js
56
+ await webex.internal.voicea.toggleTranscribing(true);
57
+ await webex.internal.voicea.toggleTranscribing(false);
58
+ ```
59
+
60
+ Set Spoken Language
61
+ * Host can set the spoken language of the meeting
62
+ * Triggers voicea:spokenLanguageSet
63
+ ```js
64
+ webex.internal.voicea.setSpokenLanguage('en');
65
+ ```
66
+
67
+ Set Caption Language
68
+ * Anyone can request caption languages for the meeting
69
+ ```js
70
+ webex.internal.voicea.requestLanguage('en');
71
+ ```
72
+
73
+ Other Triggers:
74
+ * voicea:announcement - Triggered when voicea has
75
+ joined the meeting
76
+ * voicea:captionLanguageUpdate - Triggered when a response for requesting caption language is recieved.
77
+ * voicea:newCaption - Returns a caption sent by voicea
78
+ * voicea:wxa - Triggers whenever WXA is listening or finished listening, along with any action taken
79
+ * voicea:highlightCreated - Returns the created highlight
80
+ ## Maintainers
81
+
82
+ This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
83
+
84
+ ## Contribute
85
+
86
+ Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
87
+
88
+ ## License
89
+
90
+ © 2016-2022 Cisco and/or its affiliates. All Rights Reserved.
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+
9
+ exports.VOICEA_RELAY_TYPES = exports.TRANSCRIPTION_TYPE = exports.EVENT_TRIGGERS = void 0;
10
+ var EVENT_TRIGGERS = {
11
+ VOICEA_ANNOUNCEMENT: 'voicea:announcement',
12
+ CAPTION_LANGUAGE_UPDATE: 'voicea:captionLanguageUpdate',
13
+ SPOKEN_LANGUAGE_UPDATE: 'voicea:spokenLanguageUpdate',
14
+ CAPTIONS_TURNED_ON: 'voicea:captionOn',
15
+ TRANSCRIBING_ON: 'voicea:transcribingOn',
16
+ TRANSCRIBING_OFF: 'voicea:transcribingOff',
17
+ NEW_CAPTION: 'voicea:newCaption',
18
+ EVA_COMMAND: 'voicea:wxa',
19
+ HIGHLIGHT_CREATED: 'voicea:highlightCreated'
20
+ };
21
+ exports.EVENT_TRIGGERS = EVENT_TRIGGERS;
22
+ var VOICEA_RELAY_TYPES = {
23
+ ANNOUNCEMENT: 'voicea.annc',
24
+ CLIENT_ANNOUNCEMENT: 'client.annc',
25
+ TRANSLATION_REQUEST: 'voicea.transl.req',
26
+ TRANSLATION_RESPONSE: 'voicea.transl.rsp',
27
+ TRANSCRIPTION: 'voicea.transcription'
28
+ };
29
+ exports.VOICEA_RELAY_TYPES = VOICEA_RELAY_TYPES;
30
+ var TRANSCRIPTION_TYPE = {
31
+ UNKNOWN: 'unknown',
32
+ EVA_WAKE: 'eva_wake',
33
+ EVA_THANKS: 'eva_thanks',
34
+ EVA_CANCEL: 'eva_cancel',
35
+ HIGHLIGHT_CREATED: 'highlight_created',
36
+ TRANSCRIPT_INTERIM_RESULTS: 'transcript_interim_results',
37
+ TRANSCRIPT_FINAL_RESULT: 'transcript_final_result'
38
+ };
39
+ exports.TRANSCRIPTION_TYPE = TRANSCRIPTION_TYPE;
40
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EVENT_TRIGGERS","VOICEA_ANNOUNCEMENT","CAPTION_LANGUAGE_UPDATE","SPOKEN_LANGUAGE_UPDATE","CAPTIONS_TURNED_ON","TRANSCRIBING_ON","TRANSCRIBING_OFF","NEW_CAPTION","EVA_COMMAND","HIGHLIGHT_CREATED","VOICEA_RELAY_TYPES","ANNOUNCEMENT","CLIENT_ANNOUNCEMENT","TRANSLATION_REQUEST","TRANSLATION_RESPONSE","TRANSCRIPTION","TRANSCRIPTION_TYPE","UNKNOWN","EVA_WAKE","EVA_THANKS","EVA_CANCEL","TRANSCRIPT_INTERIM_RESULTS","TRANSCRIPT_FINAL_RESULT"],"sources":["constants.ts"],"sourcesContent":["export const EVENT_TRIGGERS = {\n VOICEA_ANNOUNCEMENT: 'voicea:announcement',\n CAPTION_LANGUAGE_UPDATE: 'voicea:captionLanguageUpdate',\n SPOKEN_LANGUAGE_UPDATE: 'voicea:spokenLanguageUpdate',\n CAPTIONS_TURNED_ON: 'voicea:captionOn',\n TRANSCRIBING_ON: 'voicea:transcribingOn',\n TRANSCRIBING_OFF: 'voicea:transcribingOff',\n\n NEW_CAPTION: 'voicea:newCaption',\n EVA_COMMAND: 'voicea:wxa',\n HIGHLIGHT_CREATED: 'voicea:highlightCreated'\n};\n\nexport const VOICEA_RELAY_TYPES = {\n ANNOUNCEMENT: 'voicea.annc',\n CLIENT_ANNOUNCEMENT: 'client.annc',\n TRANSLATION_REQUEST: 'voicea.transl.req',\n TRANSLATION_RESPONSE: 'voicea.transl.rsp',\n TRANSCRIPTION: 'voicea.transcription'\n};\n\nexport const TRANSCRIPTION_TYPE = {\n UNKNOWN: 'unknown',\n EVA_WAKE: 'eva_wake',\n EVA_THANKS: 'eva_thanks',\n EVA_CANCEL: 'eva_cancel',\n HIGHLIGHT_CREATED: 'highlight_created',\n TRANSCRIPT_INTERIM_RESULTS: 'transcript_interim_results',\n TRANSCRIPT_FINAL_RESULT: 'transcript_final_result'\n\n};\n"],"mappings":";;;;;;;;;AAAO,IAAMA,cAAc,GAAG;EAC5BC,mBAAmB,EAAE,qBADO;EAE5BC,uBAAuB,EAAE,8BAFG;EAG5BC,sBAAsB,EAAE,6BAHI;EAI5BC,kBAAkB,EAAE,kBAJQ;EAK5BC,eAAe,EAAE,uBALW;EAM5BC,gBAAgB,EAAE,wBANU;EAQ5BC,WAAW,EAAE,mBARe;EAS5BC,WAAW,EAAE,YATe;EAU5BC,iBAAiB,EAAE;AAVS,CAAvB;;AAaA,IAAMC,kBAAkB,GAAG;EAChCC,YAAY,EAAE,aADkB;EAEhCC,mBAAmB,EAAE,aAFW;EAGhCC,mBAAmB,EAAE,mBAHW;EAIhCC,oBAAoB,EAAE,mBAJU;EAKhCC,aAAa,EAAE;AALiB,CAA3B;;AAQA,IAAMC,kBAAkB,GAAG;EAChCC,OAAO,EAAE,SADuB;EAEhCC,QAAQ,EAAE,UAFsB;EAGhCC,UAAU,EAAE,YAHoB;EAIhCC,UAAU,EAAE,YAJoB;EAKhCX,iBAAiB,EAAE,mBALa;EAMhCY,0BAA0B,EAAE,4BANI;EAOhCC,uBAAuB,EAAE;AAPO,CAA3B"}
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
+
5
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
6
+
7
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
8
+
9
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
10
+
11
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
12
+
13
+ _Object$defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+
17
+ _Object$defineProperty(exports, "default", {
18
+ enumerable: true,
19
+ get: function get() {
20
+ return _voicea.default;
21
+ }
22
+ });
23
+
24
+ var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
25
+
26
+ var _voicea = _interopRequireDefault(require("@webex/internal-plugin-voicea/src/voicea"));
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
32
+ WebexCore.registerInternalPlugin('voicea', _voicea.default, {});
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WebexCore","registerInternalPlugin","VoiceaChannel"],"sources":["index.js"],"sourcesContent":["import * as WebexCore from '@webex/webex-core';\nimport VoiceaChannel from '@webex/internal-plugin-voicea/src/voicea';\n\nWebexCore.registerInternalPlugin('voicea', VoiceaChannel, {});\n\nexport {default} from '@webex/internal-plugin-voicea/src/voicea';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEAA,SAAS,CAACC,sBAAV,CAAiC,QAAjC,EAA2CC,eAA3C,EAA0D,EAA1D"}
package/dist/utils.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+
9
+ exports.millisToMinutesAndSeconds = void 0;
10
+
11
+ // eslint-disable-next-line import/prefer-default-export
12
+ var millisToMinutesAndSeconds = function millisToMinutesAndSeconds(millis) {
13
+ var minutes = Math.floor(millis / 60000);
14
+ var seconds = (millis % 60000 / 1000).toFixed(0);
15
+ return "".concat(minutes, ":").concat(+seconds < 10 ? '0' : '').concat(seconds);
16
+ };
17
+
18
+ exports.millisToMinutesAndSeconds = millisToMinutesAndSeconds;
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["millisToMinutesAndSeconds","millis","minutes","Math","floor","seconds","toFixed"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nexport const millisToMinutesAndSeconds = (millis: number) => {\n const minutes = Math.floor(millis / 60000);\n const seconds = ((millis % 60000) / 1000).toFixed(0);\n\n return `${minutes}:${+(seconds) < 10 ? '0' : ''}${seconds}`;\n};\n\n"],"mappings":";;;;;;;;;;AAAA;AACO,IAAMA,yBAAyB,GAAG,SAA5BA,yBAA4B,CAACC,MAAD,EAAoB;EAC3D,IAAMC,OAAO,GAAGC,IAAI,CAACC,KAAL,CAAWH,MAAM,GAAG,KAApB,CAAhB;EACA,IAAMI,OAAO,GAAG,CAAEJ,MAAM,GAAG,KAAV,GAAmB,IAApB,EAA0BK,OAA1B,CAAkC,CAAlC,CAAhB;EAEA,iBAAUJ,OAAV,cAAqB,CAAEG,OAAF,GAAa,EAAb,GAAkB,GAAlB,GAAwB,EAA7C,SAAkDA,OAAlD;AACD,CALM"}
package/dist/voicea.js ADDED
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+
5
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
+
7
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
+
9
+ _Object$defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+
13
+ exports.default = exports.VoiceaChannel = void 0;
14
+
15
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
16
+
17
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
18
+
19
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
+
21
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
22
+
23
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
24
+
25
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
26
+
27
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
28
+
29
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
30
+
31
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
32
+
33
+ var _uuid = _interopRequireDefault(require("uuid"));
34
+
35
+ var _internalPluginLlm = _interopRequireDefault(require("@webex/internal-plugin-llm"));
36
+
37
+ var _config = _interopRequireDefault(require("@webex/webex-core/src/config"));
38
+
39
+ var _triggerProxy = _interopRequireDefault(require("@webex/plugin-meetings/src/common/events/trigger-proxy"));
40
+
41
+ var _constants = require("./constants");
42
+
43
+ var _utils = require("./utils");
44
+
45
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
46
+
47
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
48
+
49
+ /**
50
+ * VoiceaChannel to hold single instance of LLM
51
+ */
52
+ var VoiceaChannel = /*#__PURE__*/function (_LLMChannel) {
53
+ (0, _inherits2.default)(VoiceaChannel, _LLMChannel);
54
+
55
+ var _super = _createSuper(VoiceaChannel);
56
+
57
+ /**
58
+ * Initializes Voicea plugin
59
+ * @param {any} args
60
+ */
61
+ function VoiceaChannel() {
62
+ var _this;
63
+
64
+ (0, _classCallCheck2.default)(this, VoiceaChannel);
65
+
66
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
67
+ args[_key] = arguments[_key];
68
+ }
69
+
70
+ _this = _super.call.apply(_super, [this].concat(args));
71
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "seqNum", void 0);
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasVoiceaJoined", void 0);
73
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "areCaptionsEnabled", void 0);
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isTranscribingEnabled", void 0);
75
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vmcDeviceId", void 0);
76
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processTranscription", function (voiceaPayload) {
77
+ switch (voiceaPayload.type) {
78
+ case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:
79
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
80
+ file: 'voicea',
81
+ function: 'processTranscription'
82
+ }, _constants.EVENT_TRIGGERS.NEW_CAPTION, {
83
+ isFinal: false,
84
+ transcriptId: voiceaPayload.transcript_id,
85
+ translations: voiceaPayload.translations,
86
+ transcript: {
87
+ csis: voiceaPayload.csis,
88
+ text: voiceaPayload.data
89
+ }
90
+ });
91
+
92
+ break;
93
+
94
+ case _constants.TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:
95
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
96
+ file: 'voicea',
97
+ function: 'processTranscription'
98
+ }, _constants.EVENT_TRIGGERS.NEW_CAPTION, {
99
+ isFinal: true,
100
+ transcriptId: voiceaPayload.transcript_id,
101
+ translations: voiceaPayload.translations,
102
+ transcript: {
103
+ csis: voiceaPayload.csis,
104
+ text: voiceaPayload.data
105
+ },
106
+ timestamp: (0, _utils.millisToMinutesAndSeconds)(voiceaPayload.transcript.end_millis - voiceaPayload.transcript.start_millis)
107
+ });
108
+
109
+ break;
110
+
111
+ case _constants.TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:
112
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
113
+ file: 'voicea',
114
+ function: 'processTranscription'
115
+ }, _constants.EVENT_TRIGGERS.HIGHLIGHT_CREATED, {
116
+ csis: voiceaPayload.highlight.csis,
117
+ highlightId: voiceaPayload.highlight.highlight_id,
118
+ text: voiceaPayload.highlight.transcript,
119
+ highlightLabel: voiceaPayload.highlight.highlight_label,
120
+ highlightSource: voiceaPayload.highlight.highlight_source,
121
+ timestamp: (0, _utils.millisToMinutesAndSeconds)(voiceaPayload.highlight.end_millis - voiceaPayload.highlight.start_millis)
122
+ });
123
+
124
+ break;
125
+
126
+ case _constants.TRANSCRIPTION_TYPE.EVA_THANKS:
127
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
128
+ file: 'voicea',
129
+ function: 'processTranscription'
130
+ }, _constants.EVENT_TRIGGERS.EVA_COMMAND, {
131
+ isListening: false,
132
+ text: voiceaPayload.command_response
133
+ });
134
+
135
+ break;
136
+
137
+ case _constants.TRANSCRIPTION_TYPE.EVA_WAKE:
138
+ case _constants.TRANSCRIPTION_TYPE.EVA_CANCEL:
139
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
140
+ file: 'voicea',
141
+ function: 'processTranscription'
142
+ }, _constants.EVENT_TRIGGERS.EVA_COMMAND, {
143
+ isListening: voiceaPayload.type === _constants.TRANSCRIPTION_TYPE.EVA_WAKE
144
+ });
145
+
146
+ break;
147
+
148
+ default:
149
+ break;
150
+ }
151
+ });
152
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processCaptionLanguageResponse", function (voiceaPayload) {
153
+ if (voiceaPayload.statusCode === 200) {
154
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
155
+ file: 'voicea',
156
+ function: 'processCaptionLanguageResponse'
157
+ }, _constants.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {
158
+ statusCode: 200
159
+ });
160
+ } else {
161
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
162
+ file: 'voicea',
163
+ function: 'processCaptionLanguageResponse'
164
+ }, _constants.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {
165
+ statusCode: voiceaPayload.errorCode,
166
+ errorMessage: voiceaPayload.message
167
+ });
168
+ }
169
+ });
170
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "processAnnouncementMessage", function (voiceaPayload) {
171
+ var _voiceaPayload$transl, _voiceaPayload$transl2, _voiceaPayload$transl3, _voiceaPayload$transl4, _voiceaPayload$ASR$sp, _voiceaPayload$ASR;
172
+
173
+ var voiceaLanguageOptions = {
174
+ captionLanguages: (_voiceaPayload$transl = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$transl2 = voiceaPayload.translation) === null || _voiceaPayload$transl2 === void 0 ? void 0 : _voiceaPayload$transl2.allowed_languages) !== null && _voiceaPayload$transl !== void 0 ? _voiceaPayload$transl : [],
175
+ maxLanguages: (_voiceaPayload$transl3 = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$transl4 = voiceaPayload.translation) === null || _voiceaPayload$transl4 === void 0 ? void 0 : _voiceaPayload$transl4.max_languages) !== null && _voiceaPayload$transl3 !== void 0 ? _voiceaPayload$transl3 : 0,
176
+ spokenLanguages: (_voiceaPayload$ASR$sp = voiceaPayload === null || voiceaPayload === void 0 ? void 0 : (_voiceaPayload$ASR = voiceaPayload.ASR) === null || _voiceaPayload$ASR === void 0 ? void 0 : _voiceaPayload$ASR.spoken_languages) !== null && _voiceaPayload$ASR$sp !== void 0 ? _voiceaPayload$ASR$sp : []
177
+ };
178
+
179
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
180
+ file: 'voicea',
181
+ function: 'processAnnouncementMessage'
182
+ }, _constants.EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT, voiceaLanguageOptions);
183
+ });
184
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sendAnnouncement", function () {
185
+ if (_this.hasVoiceaJoined) return;
186
+
187
+ _this.socket.send({
188
+ id: "".concat(_this.seqNum),
189
+ type: 'publishRequest',
190
+ recipients: {
191
+ route: _this.getBinding()
192
+ },
193
+ headers: {},
194
+ data: {
195
+ clientPayload: {
196
+ version: 'v2'
197
+ },
198
+ eventType: 'relay.event',
199
+ relayType: _constants.VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT
200
+ },
201
+ trackingId: "".concat(_config.default.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
202
+ });
203
+
204
+ _this.seqNum += 1;
205
+ });
206
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setSpokenLanguage", function (languageCode) {
207
+ return _this.request({
208
+ method: 'PUT',
209
+ url: "".concat(_this.locusUrl, "/controls/"),
210
+ body: {
211
+ languageCode: languageCode
212
+ }
213
+ }).then(function () {
214
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
215
+ file: 'voicea',
216
+ function: 'setSpokenLanguage'
217
+ }, _constants.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, {
218
+ languageCode: languageCode
219
+ });
220
+ });
221
+ });
222
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "requestLanguage", function (languageCode) {
223
+ _this.socket.send({
224
+ id: "".concat(_this.seqNum),
225
+ type: 'publishRequest',
226
+ recipients: {
227
+ route: _this.getBinding()
228
+ },
229
+ headers: {
230
+ to: _this.vmcDeviceId
231
+ },
232
+ data: {
233
+ clientPayload: {
234
+ translationLanguage: languageCode,
235
+ id: _uuid.default.v4()
236
+ },
237
+ eventType: 'relay.event',
238
+ relayType: _constants.VOICEA_RELAY_TYPES.TRANSLATION_REQUEST
239
+ },
240
+ trackingId: "".concat(_config.default.trackingIdPrefix, "_").concat(_uuid.default.v4().toString())
241
+ });
242
+
243
+ _this.seqNum += 1;
244
+ });
245
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "turnOnCaptions", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
246
+ return _regenerator.default.wrap(function _callee$(_context) {
247
+ while (1) {
248
+ switch (_context.prev = _context.next) {
249
+ case 0:
250
+ if (!(_this.hasVoiceaJoined && _this.areCaptionsEnabled)) {
251
+ _context.next = 2;
252
+ break;
253
+ }
254
+
255
+ return _context.abrupt("return", undefined);
256
+
257
+ case 2:
258
+ return _context.abrupt("return", _this.request({
259
+ method: 'PUT',
260
+ url: "".concat(_this.locusUrl, "/controls/"),
261
+ body: {
262
+ transcribe: {
263
+ caption: true
264
+ }
265
+ }
266
+ }).then(function () {
267
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
268
+ file: 'voicea',
269
+ function: 'turnOnCaptions'
270
+ }, _constants.EVENT_TRIGGERS.CAPTIONS_TURNED_ON);
271
+
272
+ _this.areCaptionsEnabled = true;
273
+
274
+ _this.sendAnnouncement();
275
+ }));
276
+
277
+ case 3:
278
+ case "end":
279
+ return _context.stop();
280
+ }
281
+ }
282
+ }, _callee);
283
+ })));
284
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleTranscribing", /*#__PURE__*/function () {
285
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(activate) {
286
+ return _regenerator.default.wrap(function _callee2$(_context2) {
287
+ while (1) {
288
+ switch (_context2.prev = _context2.next) {
289
+ case 0:
290
+ if (!(_this.isTranscribingEnabled === activate)) {
291
+ _context2.next = 2;
292
+ break;
293
+ }
294
+
295
+ return _context2.abrupt("return", undefined);
296
+
297
+ case 2:
298
+ return _context2.abrupt("return", _this.request({
299
+ method: 'PUT',
300
+ url: "".concat(_this.locusUrl, "/controls/"),
301
+ body: {
302
+ transcribe: {
303
+ transcribing: activate
304
+ }
305
+ }
306
+ }).then(function () {
307
+ _triggerProxy.default.trigger((0, _assertThisInitialized2.default)(_this), {
308
+ file: 'voicea',
309
+ function: 'toggleTranscribing'
310
+ }, activate ? _constants.EVENT_TRIGGERS.TRANSCRIBING_ON : _constants.EVENT_TRIGGERS.TRANSCRIBING_OFF);
311
+
312
+ _this.isTranscribingEnabled = activate;
313
+ if (activate && !_this.areCaptionsEnabled && !_this.hasVoiceaJoined) _this.turnOnCaptions();
314
+ }));
315
+
316
+ case 3:
317
+ case "end":
318
+ return _context2.stop();
319
+ }
320
+ }
321
+ }, _callee2);
322
+ }));
323
+
324
+ return function (_x) {
325
+ return _ref2.apply(this, arguments);
326
+ };
327
+ }());
328
+ _this.seqNum = 1;
329
+ _this.hasVoiceaJoined = false;
330
+ _this.areCaptionsEnabled = false;
331
+ _this.isTranscribingEnabled = false;
332
+ _this.vmcDeviceId = undefined;
333
+
334
+ _this.on('event:relay.event', function (e) {
335
+ _this.seqNum = e.sequenceNumber + 1;
336
+
337
+ switch (e.data.relayType) {
338
+ case _constants.VOICEA_RELAY_TYPES.ANNOUNCEMENT:
339
+ _this.vmcDeviceId = e.headers.from;
340
+ _this.hasVoiceaJoined = true;
341
+
342
+ _this.processAnnouncementMessage(e.voiceaPayload);
343
+
344
+ break;
345
+
346
+ case _constants.VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:
347
+ _this.processCaptionLanguageResponse(e.voiceaPayload);
348
+
349
+ break;
350
+
351
+ case _constants.VOICEA_RELAY_TYPES.TRANSCRIPTION:
352
+ _this.processTranscription(e.voiceaPayload);
353
+
354
+ break;
355
+
356
+ default:
357
+ break;
358
+ }
359
+ });
360
+
361
+ return _this;
362
+ }
363
+ /**
364
+ * Process Transcript and send alert
365
+ * @param {TranscriptionResponse} voiceaPayload
366
+ * @returns {void}
367
+ */
368
+
369
+
370
+ return (0, _createClass2.default)(VoiceaChannel);
371
+ }(_internalPluginLlm.default);
372
+
373
+ exports.VoiceaChannel = VoiceaChannel;
374
+ var _default = VoiceaChannel;
375
+ exports.default = _default;
376
+ //# sourceMappingURL=voicea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VoiceaChannel","args","voiceaPayload","type","TRANSCRIPTION_TYPE","TRANSCRIPT_INTERIM_RESULTS","Trigger","trigger","file","function","EVENT_TRIGGERS","NEW_CAPTION","isFinal","transcriptId","transcript_id","translations","transcript","csis","text","data","TRANSCRIPT_FINAL_RESULT","timestamp","millisToMinutesAndSeconds","end_millis","start_millis","HIGHLIGHT_CREATED","highlight","highlightId","highlight_id","highlightLabel","highlight_label","highlightSource","highlight_source","EVA_THANKS","EVA_COMMAND","isListening","command_response","EVA_WAKE","EVA_CANCEL","statusCode","CAPTION_LANGUAGE_UPDATE","errorCode","errorMessage","message","voiceaLanguageOptions","captionLanguages","translation","allowed_languages","maxLanguages","max_languages","spokenLanguages","ASR","spoken_languages","VOICEA_ANNOUNCEMENT","hasVoiceaJoined","socket","send","id","seqNum","recipients","route","getBinding","headers","clientPayload","version","eventType","relayType","VOICEA_RELAY_TYPES","CLIENT_ANNOUNCEMENT","trackingId","config","trackingIdPrefix","uuid","v4","toString","languageCode","request","method","url","locusUrl","body","then","SPOKEN_LANGUAGE_UPDATE","to","vmcDeviceId","translationLanguage","TRANSLATION_REQUEST","areCaptionsEnabled","undefined","transcribe","caption","CAPTIONS_TURNED_ON","sendAnnouncement","activate","isTranscribingEnabled","transcribing","TRANSCRIBING_ON","TRANSCRIBING_OFF","turnOnCaptions","on","e","sequenceNumber","ANNOUNCEMENT","from","processAnnouncementMessage","TRANSLATION_RESPONSE","processCaptionLanguageResponse","TRANSCRIPTION","processTranscription","LLMChannel"],"sources":["voicea.ts"],"sourcesContent":["import uuid from 'uuid';\nimport LLMChannel from '@webex/internal-plugin-llm';\nimport config from '@webex/webex-core/src/config';\nimport Trigger from '@webex/plugin-meetings/src/common/events/trigger-proxy';\n\nimport {EVENT_TRIGGERS, VOICEA_RELAY_TYPES, TRANSCRIPTION_TYPE} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {AnnouncementPayload, CaptionLanguageResponse, TranscriptionResponse, IVoiceaChannel} from './voicea.types';\nimport {millisToMinutesAndSeconds} from './utils';\n/**\n * VoiceaChannel to hold single instance of LLM\n */\nexport class VoiceaChannel extends LLMChannel implements IVoiceaChannel {\n private seqNum: number;\n\n private hasVoiceaJoined: boolean;\n\n private areCaptionsEnabled: boolean;\n\n private isTranscribingEnabled:boolean;\n\n private vmcDeviceId: string;\n\n /**\n * Initializes Voicea plugin\n * @param {any} args\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n this.hasVoiceaJoined = false;\n this.areCaptionsEnabled = false;\n this.isTranscribingEnabled = false;\n this.vmcDeviceId = undefined;\n\n this.on('event:relay.event', (e) => {\n this.seqNum = e.sequenceNumber + 1;\n switch (e.data.relayType) {\n case VOICEA_RELAY_TYPES.ANNOUNCEMENT:\n this.vmcDeviceId = e.headers.from;\n this.hasVoiceaJoined = true;\n this.processAnnouncementMessage(e.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSLATION_RESPONSE:\n this.processCaptionLanguageResponse(e.voiceaPayload);\n break;\n case VOICEA_RELAY_TYPES.TRANSCRIPTION:\n this.processTranscription(e.voiceaPayload);\n break;\n default:\n break;\n }\n });\n }\n\n /**\n * Process Transcript and send alert\n * @param {TranscriptionResponse} voiceaPayload\n * @returns {void}\n */\n private processTranscription = (voiceaPayload: TranscriptionResponse): void => {\n switch (voiceaPayload.type) {\n case TRANSCRIPTION_TYPE.TRANSCRIPT_INTERIM_RESULTS:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: false,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n });\n break;\n\n case TRANSCRIPTION_TYPE.TRANSCRIPT_FINAL_RESULT:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.NEW_CAPTION, {\n isFinal: true,\n transcriptId: voiceaPayload.transcript_id,\n translations: voiceaPayload.translations,\n transcript: {\n csis: voiceaPayload.csis,\n text: voiceaPayload.data\n },\n timestamp: millisToMinutesAndSeconds(voiceaPayload.transcript.end_millis - voiceaPayload.transcript.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.HIGHLIGHT_CREATED:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.HIGHLIGHT_CREATED, {\n csis: voiceaPayload.highlight.csis,\n highlightId: voiceaPayload.highlight.highlight_id,\n text: voiceaPayload.highlight.transcript,\n highlightLabel: voiceaPayload.highlight.highlight_label,\n highlightSource: voiceaPayload.highlight.highlight_source,\n timestamp: millisToMinutesAndSeconds(voiceaPayload.highlight.end_millis - voiceaPayload.highlight.start_millis)\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_THANKS:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: false, text: voiceaPayload.command_response\n });\n break;\n\n case TRANSCRIPTION_TYPE.EVA_WAKE:\n case TRANSCRIPTION_TYPE.EVA_CANCEL:\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processTranscription'\n },\n EVENT_TRIGGERS.EVA_COMMAND, {\n isListening: voiceaPayload.type === TRANSCRIPTION_TYPE.EVA_WAKE\n });\n break;\n\n default:\n break;\n }\n };\n\n /**\n * Processes Caption Language Response\n * @param {CaptionLanguageResponse} voiceaPayload\n * @returns {void}\n */\n private processCaptionLanguageResponse = (voiceaPayload: CaptionLanguageResponse):void => {\n if (voiceaPayload.statusCode === 200) {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: 200});\n }\n else {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'processCaptionLanguageResponse'\n },\n EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, {statusCode: voiceaPayload.errorCode, errorMessage: voiceaPayload.message});\n }\n };\n\n /**\n * processes voicea announcement response and triggers event\n * @param {Object} voiceaPayload\n * @returns {void}\n */\n private processAnnouncementMessage = (voiceaPayload: AnnouncementPayload):void => {\n const voiceaLanguageOptions = {\n captionLanguages: voiceaPayload?.translation?.allowed_languages ?? [],\n maxLanguages: voiceaPayload?.translation?.max_languages ?? 0,\n spokenLanguages: voiceaPayload?.ASR?.spoken_languages ?? [],\n };\n\n Trigger.trigger(\n this,\n {\n file: 'voicea',\n function: 'processAnnouncementMessage'\n },\n EVENT_TRIGGERS.VOICEA_ANNOUNCEMENT,\n voiceaLanguageOptions\n );\n };\n\n\n /**\n * Sends Announcement to add voicea to the meeting\n * @returns {void}\n */\n private sendAnnouncement = ():void => {\n if (this.hasVoiceaJoined) return;\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.getBinding(),\n },\n headers: {},\n data: {\n clientPayload: {\n version: 'v2',\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.CLIENT_ANNOUNCEMENT,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`\n });\n this.seqNum += 1;\n };\n\n /**\n * Set Spoken Language for the meeting\n * @param {string} languageCode\n * @returns {Promise}\n */\n public setSpokenLanguage = (languageCode: string):Promise<void> => this.request({\n method: 'PUT',\n url: `${this.locusUrl}/controls/`,\n body: {\n languageCode\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'setSpokenLanguage'\n },\n EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE,\n {languageCode});\n });\n\n /**\n * Request Language translation\n * @param {string} languageCode\n * @returns {void}\n */\n public requestLanguage = (languageCode: string): void => {\n this.socket.send({\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n route: this.getBinding(),\n },\n headers: {\n to: this.vmcDeviceId,\n },\n data: {\n clientPayload: {\n translationLanguage: languageCode,\n id: uuid.v4(),\n },\n eventType: 'relay.event',\n relayType: VOICEA_RELAY_TYPES.TRANSLATION_REQUEST,\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`\n });\n this.seqNum += 1;\n };\n\n /**\n * Turn on Captions\n * @returns {Promise}\n */\n public turnOnCaptions = async (): undefined | Promise<void> => {\n if (this.hasVoiceaJoined && this.areCaptionsEnabled) return undefined;\n\n return this.request({\n method: 'PUT',\n url: `${this.locusUrl}/controls/`,\n body: {\n transcribe: {caption: true}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'turnOnCaptions'\n },\n EVENT_TRIGGERS.CAPTIONS_TURNED_ON);\n this.areCaptionsEnabled = true;\n this.sendAnnouncement();\n });\n };\n\n /**\n * Toggle transcribing for highlights\n * @param {bool} activate if true transcribing is turned on\n * @returns {Promise}\n */\n public toggleTranscribing = async (activate:boolean):undefined|Promise<void> => {\n if (this.isTranscribingEnabled === activate) return undefined;\n\n return this.request({\n method: 'PUT',\n url: `${this.locusUrl}/controls/`,\n body: {\n transcribe: {transcribing: activate}\n }\n }).then(() => {\n Trigger.trigger(this, {\n file: 'voicea',\n function: 'toggleTranscribing'\n },\n activate ? EVENT_TRIGGERS.TRANSCRIBING_ON : EVENT_TRIGGERS.TRANSCRIBING_OFF);\n this.isTranscribingEnabled = activate;\n if (activate && !this.areCaptionsEnabled && !this.hasVoiceaJoined) this.turnOnCaptions();\n });\n };\n}\n\nexport default VoiceaChannel;\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ //# sourceMappingURL=voicea.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["voicea.types.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/* eslint-disable no-undef */\n\n/**\n * Type for payload\n */\ninterface AnnouncementPayload {\n translation:{\n max_languages: number;\n allowed_languages: string[]\n };\n\n ASR: {\n spoken_languages: string[];\n };\n}\n\n// eslint-disable-next-line no-undef\ntype TRANSCRIPTION_TYPES = 'unknown'|\n'eva_wake' |\n'eva_thanks' |\n'eva_cancel' |\n'highlight_created'|\n'transcript_interim_results'|\n'transcript_final_result';\n\n/**\n * Class for an Transcription Object\n */\ninterface Transcription {\n start_millis:number;\n end_millis:number;\n text:string;\n transcript_language_code: string;\n translations:{[x:string]:string};\n csis:number[];\n}\n\n/**\n * Highlights\n */\n interface Highlight {\n highlight_id: string;\n transcript: string;\n highlight_label: string;\n highlight_source: string;\n start_millis:number;\n end_millis:number;\n csis:number[];\n}\n/**\n * Type for Transcription message\n */\ninterface TranscriptionResponse {\n type: TRANSCRIPTION_TYPES;\n transcript_id: string;\n translations?: {[x:string]:string};\n transcripts?: Transcription[];\n transcript?: Transcription;\n highlight?: Highlight;\n csis: number[];\n data:string;\n command_response: string;\n}\n/**\n * Type for CaptionLanguageResponse\n */\ninterface CaptionLanguageResponse {\n requestId: string;\n statusCode: number;\n errorCode:number;\n message:string;\n}\n\ninterface IVoiceaChannel {\n setSpokenLanguage: (languageCode: string) => Promise<void>;\n requestLanguage: (languageCode: string) => void;\n turnOnCaptions: () => undefined | Promise<void>;\n toggleTranscribing: (activate:boolean) => undefined|Promise<void>;\n}\nexport {AnnouncementPayload, CaptionLanguageResponse, TranscriptionResponse, Transcription, Highlight, IVoiceaChannel};\n"],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@webex/internal-plugin-voicea",
3
+ "version": "2.23.0",
4
+ "description": "",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "devMain": "src/index.js",
8
+ "repository": "https://github.com/webex/webex-js-sdk/tree/master/packages/node_modules/@webex/internal-plugin-voicea",
9
+ "engines": {
10
+ "node": ">=8"
11
+ },
12
+ "dependencies": {
13
+ "@babel/runtime-corejs2": "^7.14.8",
14
+ "@webex/webex-core": "2.23.0",
15
+ "@webex/internal-plugin-voicea": "2.23.0",
16
+ "envify": "^4.1.0"
17
+ },
18
+ "browserify": {
19
+ "transform": [
20
+ "envify"
21
+ ]
22
+ }
23
+ }