From 1c8cea0b4d2b8d1c615ed07b7449bc9df706f52b Mon Sep 17 00:00:00 2001 From: Brian West Date: Wed, 9 Jul 2025 12:04:58 -0500 Subject: [PATCH 1/4] Fix for issue 559 --- packages/common/src/webrtc/BaseCall.ts | 18 +- .../js/examples/flask-mute-test/README.md | 222 +++++++ packages/js/examples/flask-mute-test/app.py | 125 ++++ .../flask-mute-test/build-and-copy-sdk.sh | 33 + .../examples/flask-mute-test/requirements.txt | 4 + packages/js/examples/flask-mute-test/run.sh | 59 ++ .../flask-mute-test/static/signalwire.js | 588 +++++++++++++++++ .../flask-mute-test/static/signalwire.min.js | 2 + .../flask-mute-test/templates/index.html | 594 ++++++++++++++++++ .../js/examples/flask-mute-test/test_jwt.py | 74 +++ 10 files changed, 1717 insertions(+), 2 deletions(-) create mode 100644 packages/js/examples/flask-mute-test/README.md create mode 100644 packages/js/examples/flask-mute-test/app.py create mode 100755 packages/js/examples/flask-mute-test/build-and-copy-sdk.sh create mode 100644 packages/js/examples/flask-mute-test/requirements.txt create mode 100755 packages/js/examples/flask-mute-test/run.sh create mode 100644 packages/js/examples/flask-mute-test/static/signalwire.js create mode 100644 packages/js/examples/flask-mute-test/static/signalwire.min.js create mode 100644 packages/js/examples/flask-mute-test/templates/index.html create mode 100644 packages/js/examples/flask-mute-test/test_jwt.py diff --git a/packages/common/src/webrtc/BaseCall.ts b/packages/common/src/webrtc/BaseCall.ts index 090a6f78..607cb851 100644 --- a/packages/common/src/webrtc/BaseCall.ts +++ b/packages/common/src/webrtc/BaseCall.ts @@ -266,10 +266,17 @@ export default abstract class BaseCall implements IWebRTCCall { audio: { deviceId: { exact: deviceId } }, }) const audioTrack = newStream.getAudioTracks()[0] + + // Preserve the enabled state from the old audio track + const { localStream } = this.options + const oldAudioTracks = localStream.getAudioTracks() + if (oldAudioTracks.length > 0) { + audioTrack.enabled = oldAudioTracks[0].enabled + } + sender.replaceTrack(audioTrack) this.options.micId = deviceId - const { localStream } = this.options localStream.getAudioTracks().forEach((t) => t.stop()) localStream.getVideoTracks().forEach((t) => newStream.addTrack(t)) this.options.localStream = newStream @@ -299,8 +306,15 @@ export default abstract class BaseCall implements IWebRTCCall { video: { deviceId: { exact: deviceId } }, }) const videoTrack = newStream.getVideoTracks()[0] - sender.replaceTrack(videoTrack) + + // Preserve the enabled state from the old video track const { localElement, localStream } = this.options + const oldVideoTracks = localStream.getVideoTracks() + if (oldVideoTracks.length > 0) { + videoTrack.enabled = oldVideoTracks[0].enabled + } + + sender.replaceTrack(videoTrack) attachMediaStream(localElement, newStream) this.options.camId = deviceId diff --git a/packages/js/examples/flask-mute-test/README.md b/packages/js/examples/flask-mute-test/README.md new file mode 100644 index 00000000..82e7bec9 --- /dev/null +++ b/packages/js/examples/flask-mute-test/README.md @@ -0,0 +1,222 @@ +# SignalWire Audio Mute Fix Test - Flask Edition + +This Flask application provides an automated testing environment for verifying the audio mute state preservation fix in the SignalWire JavaScript SDK. It automatically generates JWT tokens and provides a comprehensive test interface. + +## ๐ŸŽฏ What This Tests + +This application tests the fix for a critical issue where: +- **Problem**: When a call was muted using `call.muteAudio()`, switching audio input devices with `call.setAudioInDevice()` would create a new audio track that was unmuted, losing the mute state. +- **Fix**: The SDK now preserves the `enabled` state from the old audio track when creating a new track during device switching. + +## ๐Ÿš€ Quick Start + +### Prerequisites + +1. **Python 3.7+** installed +2. **SignalWire Account** with: + - Space (e.g., `your-space.signalwire.com`) + - Project ID + - API Token +3. **Multiple Audio Devices** (built-in mic + USB headset, etc.) for testing + +### Setup + +1. **Clone and navigate to the example**: + ```bash + cd packages/js/examples/flask-mute-test + ``` + +2. **Install Python dependencies**: + ```bash + pip install -r requirements.txt + ``` + +3. **Set environment variables**: + ```bash + export SIGNALWIRE_SPACE="your-space.signalwire.com" + export SIGNALWIRE_PROJECT_ID="your-project-id-here" + export SIGNALWIRE_TOKEN="your-api-token-here" + ``` + + Or create a `.env` file: + ```bash + SIGNALWIRE_SPACE=your-space.signalwire.com + SIGNALWIRE_PROJECT_ID=your-project-id-here + SIGNALWIRE_TOKEN=your-api-token-here + ``` + +4. **Build and copy the SDK** (to use the local version with the mute fix): + ```bash + ./build-and-copy-sdk.sh + ``` + +5. **Run the Flask application**: + ```bash + python app.py + ``` + +6. **Open your browser**: + - Navigate to `http://localhost:3000` + - The JWT token will be automatically generated and displayed + +## ๐Ÿงช Running the Test + +### Automated Test + +1. **Connect**: Click "Connect to SignalWire" - JWT is auto-generated +2. **Make a Call**: Enter destination/source numbers and click "Start Call" +3. **Wait for Active**: Once call is active, the test button will be enabled +4. **Run Test**: Click "๐Ÿงช Run Mute Fix Test" to execute the automated test sequence + +### Manual Test + +You can also manually test using the controls that appear when a call is active: +- **Mute/Unmute Audio**: Toggle audio mute state +- **Device Selection**: Switch between available audio input devices +- **Real-time Feedback**: Watch the console log and button states + +## ๐Ÿ“‹ Test Sequence + +The automated test performs these steps: + +1. **Initial State Check**: Verifies audio starts unmuted +2. **Mute Audio**: Calls `muteAudio()` and verifies mute state +3. **๐ŸŽฏ Device Switch While Muted**: Switches audio device and verifies mute state is preserved (THE FIX) +4. **Unmute Audio**: Calls `unmuteAudio()` and verifies unmute state +5. **Device Switch While Unmuted**: Switches audio device and verifies unmute state is preserved + +### Expected Results + +โœ… **All tests should pass if the fix is working**: +- โœ… Initial State: Audio starts unmuted +- โœ… Mute Audio: Audio becomes muted +- โœ… **Mute Preserved After Device Switch**: Audio remains muted (this was the bug!) +- โœ… Unmute Audio: Audio becomes unmuted +- โœ… Unmute Preserved After Device Switch: Audio remains unmuted + +โŒ **If the fix is broken, you'll see**: +- โŒ Mute Preserved After Device Switch: Audio becomes unmuted (the bug returns) + +## ๐Ÿ”ง API Endpoints + +The Flask app provides these endpoints: + +- `GET /` - Main test interface +- `GET /api/token` - Generate JWT token +- `GET /api/config` - Get SignalWire configuration +- `GET /health` - Health check + +## ๐Ÿ“ Project Structure + +``` +flask-mute-test/ +โ”œโ”€โ”€ app.py # Flask application with JWT generation +โ”œโ”€โ”€ requirements.txt # Python dependencies +โ”œโ”€โ”€ templates/ +โ”‚ โ””โ”€โ”€ index.html # Test interface with automated testing +โ””โ”€โ”€ README.md # This file +``` + +## ๐Ÿ” Troubleshooting + +### Common Issues + +1. **"Missing required environment variables"** + - Ensure all three environment variables are set correctly + - Double-check your SignalWire credentials + +2. **"Need at least 2 audio devices to run test"** + - Connect a USB headset or external microphone + - The test requires multiple audio input devices to switch between + +3. **JWT Token Generation Fails** + - Verify your API token has the correct permissions + - Check that your project ID is correct + +4. **Call Fails to Connect** + - Ensure destination number is valid and reachable + - Check your SignalWire project has calling enabled + - Verify browser permissions for microphone access + +### Debug Information + +- **Console Log**: Real-time logging appears in the web interface +- **Browser Console**: Additional debug information in browser dev tools +- **Flask Logs**: Server-side logs in the terminal running the Flask app + +### Health Check + +Visit `http://localhost:3000/health` to verify: +- Flask app is running +- Environment variables are loaded +- SignalWire configuration is valid + +## ๐Ÿงฌ Technical Details + +### JWT Token Generation + +The Flask app generates JWT tokens according to the [SignalWire Browser SDK v2 documentation](https://developer.signalwire.com/sdks/browser-sdk/v2/): + +```python +payload = { + "iss": SIGNALWIRE_PROJECT_ID, # Issuer (your project) + "sub": f"user-{uuid.uuid4()}", # Subject (unique user) + "iat": int(now.timestamp()), # Issued at + "exp": int((now + timedelta(hours=1)).timestamp()), # Expires in 1 hour + "jti": str(uuid.uuid4()), # JWT ID (unique token) + "resource": "browser", # Resource type + "scopes": ["webrtc"] # Required scopes +} +``` + +### The Fix Implementation + +The fix is in `packages/common/src/webrtc/BaseCall.ts`: + +```typescript +async setAudioInDevice(deviceId: string): Promise { + // ... get new stream and track ... + + // ๐ŸŽฏ THE FIX: Preserve enabled state from old track + const { localStream } = this.options + const oldAudioTracks = localStream.getAudioTracks() + if (oldAudioTracks.length > 0) { + audioTrack.enabled = oldAudioTracks[0].enabled // Preserve mute state! + } + + // ... replace track and update stream ... +} +``` + +## ๐Ÿค Contributing + +To test changes to the SDK: + +1. **Make your changes** to the SDK source code in `packages/common/src/` + +2. **Build and copy the SDK**: + ```bash + ./build-and-copy-sdk.sh + ``` + +3. **Restart the Flask app** to serve the new SDK: + ```bash + python app.py + ``` + +4. **Refresh your browser** to load the updated SDK and **run the test** to verify your changes work + +### Development Workflow + +The Flask app is already configured to use the local SDK build. The workflow is: + +1. Edit SDK source code +2. Run `./build-and-copy-sdk.sh` +3. Restart Flask app +4. Test in browser + +This ensures you're always testing against your local changes rather than the CDN version. + +## ๐Ÿ“„ License + +This example is part of the SignalWire Node.js SDK and follows the same MIT license. \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/app.py b/packages/js/examples/flask-mute-test/app.py new file mode 100644 index 00000000..03951152 --- /dev/null +++ b/packages/js/examples/flask-mute-test/app.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +""" +SignalWire Audio Mute Fix Test Server + +This Flask application provides: +1. JWT token generation for SignalWire Browser SDK +2. A test interface for verifying the audio mute state preservation fix +3. Automatic configuration using environment variables + +Usage: + export SIGNALWIRE_SPACE="your-space.signalwire.com" + export SIGNALWIRE_PROJECT_ID="your-project-id" + export SIGNALWIRE_TOKEN="your-api-token" + python app.py +""" + +import os +import time +import uuid +import hmac +import hashlib +import base64 +import json +import requests +from datetime import datetime, timedelta +from flask import Flask, render_template, jsonify, request +from flask_cors import CORS + +app = Flask(__name__) +CORS(app) + +# Configuration from environment variables +SIGNALWIRE_SPACE = os.getenv('SIGNALWIRE_SPACE') +SIGNALWIRE_PROJECT_ID = os.getenv('SIGNALWIRE_PROJECT_ID') +SIGNALWIRE_TOKEN = os.getenv('SIGNALWIRE_TOKEN') + +if not all([SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_TOKEN]): + print("Error: Missing required environment variables:") + print("- SIGNALWIRE_SPACE") + print("- SIGNALWIRE_PROJECT_ID") + print("- SIGNALWIRE_TOKEN") + exit(1) + +def generate_jwt_token(): + """ + Generate a JWT token for SignalWire Browser SDK using the REST API + Based on: https://developer.signalwire.com/sdks/browser-sdk/v2/ + """ + + # Use SignalWire REST API to generate JWT token + url = f"https://{SIGNALWIRE_SPACE}/api/relay/rest/jwt" + + # Set up authentication + auth = (SIGNALWIRE_PROJECT_ID, SIGNALWIRE_TOKEN) + + # Request payload + payload = { + "resource": f"browser-{uuid.uuid4()}", # Unique resource identifier + "expires_in": 60 # Token expires in 60 minutes + } + + # Make the request + response = requests.post( + url, + json=payload, + auth=auth, + headers={'Content-Type': 'application/json'} + ) + + if response.status_code == 200: + data = response.json() + return data.get('jwt_token') + else: + raise Exception(f"Failed to generate JWT token: {response.status_code} - {response.text}") + +@app.route('/') +def index(): + """Serve the main test interface""" + return render_template('index.html', + space=SIGNALWIRE_SPACE, + project_id=SIGNALWIRE_PROJECT_ID) + +@app.route('/api/token', methods=['GET']) +def get_token(): + """Generate and return a new JWT token""" + try: + token = generate_jwt_token() + return jsonify({ + 'success': True, + 'token': token, + 'expires_in': 3600 # 60 minutes in seconds + }) + except Exception as e: + print(f"Error generating JWT token: {str(e)}") + return jsonify({ + 'success': False, + 'error': str(e) + }), 500 + +@app.route('/api/config', methods=['GET']) +def get_config(): + """Return configuration for the frontend""" + return jsonify({ + 'space': SIGNALWIRE_SPACE, + 'project_id': SIGNALWIRE_PROJECT_ID + }) + +@app.route('/health', methods=['GET']) +def health_check(): + """Health check endpoint""" + return jsonify({ + 'status': 'healthy', + 'timestamp': datetime.utcnow().isoformat(), + 'space': SIGNALWIRE_SPACE, + 'project_configured': bool(SIGNALWIRE_PROJECT_ID) + }) + +if __name__ == '__main__': + print(f"Starting SignalWire Mute Fix Test Server...") + print(f"Space: {SIGNALWIRE_SPACE}") + print(f"Project ID: {SIGNALWIRE_PROJECT_ID}") + print(f"Server will be available at: http://localhost:3000") + print(f"Test interface at: http://localhost:3000") + + app.run(debug=True, host='0.0.0.0', port=3000) \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/build-and-copy-sdk.sh b/packages/js/examples/flask-mute-test/build-and-copy-sdk.sh new file mode 100755 index 00000000..a5e15772 --- /dev/null +++ b/packages/js/examples/flask-mute-test/build-and-copy-sdk.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Build and Copy SDK Script +# This script builds the SignalWire SDK and copies it to the Flask app + +set -e + +echo "๐Ÿ”จ Building SignalWire SDK with mute fix..." + +# Navigate to the project root +cd ../../../.. + +# Build the JavaScript SDK +echo "๐Ÿ“ฆ Running npm run setup js..." +npm run setup js + +# Build development version (less minified) +echo "๐Ÿ“ฆ Building development version..." +cd packages/js +NODE_ENV=development npx webpack --mode development +cd ../.. + +# Copy the built SDK to the Flask app +echo "๐Ÿ“‹ Copying built SDK to Flask app..." +cp packages/js/dist/index.min.js packages/js/examples/flask-mute-test/static/signalwire.js + +echo "โœ… SDK built and copied successfully!" +echo "๐ŸŽฏ The Flask app will now use the local SDK with your mute fix." +echo "" +echo "๐Ÿ’ก To test your changes:" +echo " 1. Run this script after making SDK changes" +echo " 2. Restart the Flask app (python app.py)" +echo " 3. Refresh the browser to load the new SDK" \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/requirements.txt b/packages/js/examples/flask-mute-test/requirements.txt new file mode 100644 index 00000000..b3cafaeb --- /dev/null +++ b/packages/js/examples/flask-mute-test/requirements.txt @@ -0,0 +1,4 @@ +Flask==2.3.3 +Flask-CORS==4.0.0 +Werkzeug==2.3.7 +requests==2.31.0 \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/run.sh b/packages/js/examples/flask-mute-test/run.sh new file mode 100755 index 00000000..d7a18425 --- /dev/null +++ b/packages/js/examples/flask-mute-test/run.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# SignalWire Audio Mute Fix Test - Flask Edition +# Quick start script + +set -e + +echo "๐ŸŽค SignalWire Audio Mute Fix Test - Flask Edition" +echo "==================================================" + +# Check if Python is installed +if ! command -v python3 &> /dev/null; then + echo "โŒ Python 3 is required but not installed." + echo "Please install Python 3.7+ and try again." + exit 1 +fi + +# Check if pip is installed +if ! command -v pip3 &> /dev/null; then + echo "โŒ pip3 is required but not installed." + echo "Please install pip3 and try again." + exit 1 +fi + +# Check environment variables +if [ -z "$SIGNALWIRE_SPACE" ] || [ -z "$SIGNALWIRE_PROJECT_ID" ] || [ -z "$SIGNALWIRE_TOKEN" ]; then + echo "โŒ Missing required environment variables:" + echo "" + echo "Please set the following environment variables:" + echo "export SIGNALWIRE_SPACE=\"your-space.signalwire.com\"" + echo "export SIGNALWIRE_PROJECT_ID=\"your-project-id-here\"" + echo "export SIGNALWIRE_TOKEN=\"your-api-token-here\"" + echo "" + echo "Or create a .env file with these values." + exit 1 +fi + +# Install dependencies if requirements.txt exists and is newer than last install +if [ -f "requirements.txt" ]; then + if [ ! -f ".last_install" ] || [ "requirements.txt" -nt ".last_install" ]; then + echo "๐Ÿ“ฆ Installing Python dependencies..." + pip3 install -r requirements.txt + touch .last_install + else + echo "โœ… Dependencies already installed" + fi +fi + +echo "" +echo "๐Ÿš€ Starting Flask application..." +echo "Space: $SIGNALWIRE_SPACE" +echo "Project ID: $SIGNALWIRE_PROJECT_ID" +echo "" +echo "๐ŸŒ Open your browser to: http://localhost:3000" +echo "Press Ctrl+C to stop the server" +echo "" + +# Run the Flask app +python3 app.py \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/static/signalwire.js b/packages/js/examples/flask-mute-test/static/signalwire.js new file mode 100644 index 00000000..daddeb4d --- /dev/null +++ b/packages/js/examples/flask-mute-test/static/signalwire.js @@ -0,0 +1,588 @@ +/*! + * Relay SDK for JavaScript v1.5.1-rc.1 (https://signalwire.com) + * Copyright 2018-2019 SignalWire + * Licensed under MIT(https://github.com/signalwire/signalwire-node/blob/master/LICENSE) + */ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../common/node_modules/loglevel/lib/loglevel.js": +/*!*******************************************************!*\ + !*** ../common/node_modules/loglevel/lib/loglevel.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/loglevel/lib/loglevel.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js": +/*!*******************************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (bytesToUuid);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/index.js": +/*!*************************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ v1: () => (/* reexport safe */ _v1_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ v3: () => (/* reexport safe */ _v3_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ v4: () => (/* reexport safe */ _v4_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ v5: () => (/* reexport safe */ _v5_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _v1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v1.js */ \"../common/node_modules/uuid/dist/esm-browser/v1.js\");\n/* harmony import */ var _v3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./v3.js */ \"../common/node_modules/uuid/dist/esm-browser/v3.js\");\n/* harmony import */ var _v4_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./v4.js */ \"../common/node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var _v5_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./v5.js */ \"../common/node_modules/uuid/dist/esm-browser/v5.js\");\n\n\n\n\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/index.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/md5.js": +/*!***********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/md5.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (md5);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/md5.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/rng.js": +/*!***********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/rng.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rng)\n/* harmony export */ });\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/rng.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/sha1.js": +/*!************************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/sha1.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) {\n W[t] = M[i][t];\n }\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sha1);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/sha1.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/v1.js": +/*!**********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/v1.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rng.js */ \"../common/node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(b);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v1);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v1.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/v3.js": +/*!**********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/v3.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _v35_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v35.js */ \"../common/node_modules/uuid/dist/esm-browser/v35.js\");\n/* harmony import */ var _md5_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./md5.js */ \"../common/node_modules/uuid/dist/esm-browser/md5.js\");\n\n\nvar v3 = (0,_v35_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v3', 0x30, _md5_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v3);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v3.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/v35.js": +/*!***********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/v35.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DNS: () => (/* binding */ DNS),\n/* harmony export */ URL: () => (/* binding */ URL),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nvar DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nvar URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, version, hashfunc) {\n var generateUUID = function generateUUID(value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v35.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/v4.js": +/*!**********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/v4.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rng.js */ \"../common/node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || _rng_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rnds);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v4.js?"); + +/***/ }), + +/***/ "../common/node_modules/uuid/dist/esm-browser/v5.js": +/*!**********************************************************!*\ + !*** ../common/node_modules/uuid/dist/esm-browser/v5.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _v35_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v35.js */ \"../common/node_modules/uuid/dist/esm-browser/v35.js\");\n/* harmony import */ var _sha1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sha1.js */ \"../common/node_modules/uuid/dist/esm-browser/sha1.js\");\n\n\nvar v5 = (0,_v35_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v5', 0x50, _sha1_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v5);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v5.js?"); + +/***/ }), + +/***/ "../common/src/BaseSession.ts": +/*!************************************!*\ + !*** ../common/src/BaseSession.ts ***! + \************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar logger_1 = __importDefault(__webpack_require__(/*! ./util/logger */ \"../common/src/util/logger.ts\"));\nvar Connection_1 = __importDefault(__webpack_require__(/*! ./services/Connection */ \"../common/src/services/Connection.ts\"));\nvar Setup_1 = __importDefault(__webpack_require__(/*! ./services/Setup */ \"../common/src/services/Setup.ts\"));\nvar Handler_1 = __webpack_require__(/*! ./services/Handler */ \"../common/src/services/Handler.ts\");\nvar BroadcastHandler_1 = __importDefault(__webpack_require__(/*! ./services/BroadcastHandler */ \"../common/src/services/BroadcastHandler.ts\"));\nvar constants_1 = __webpack_require__(/*! ./util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar Blade_1 = __webpack_require__(/*! ./messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar helpers_1 = __webpack_require__(/*! ./util/helpers */ \"../common/src/util/helpers.ts\");\nvar storage_1 = __webpack_require__(/*! ./util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar KEEPALIVE_INTERVAL = 10 * 1000;\nvar BaseSession = function () {\n function BaseSession(options) {\n this.options = options;\n this.uuid = (0, uuid_1.v4)();\n this.sessionid = '';\n this.subscriptions = {};\n this.expiresAt = 0;\n this.signature = null;\n this.relayProtocol = null;\n this.contexts = [];\n this.timeoutErrorCode = -32000;\n this.connection = null;\n this._jwtAuth = false;\n this._doKeepAlive = false;\n this._autoReconnect = true;\n this._idle = false;\n this._executeQueue = [];\n if (!this.validateOptions()) {\n throw new Error('Invalid init options');\n }\n this._onSocketOpen = this._onSocketOpen.bind(this);\n this._onSocketCloseOrError = this._onSocketCloseOrError.bind(this);\n this._onSocketMessage = this._onSocketMessage.bind(this);\n this._handleLoginError = this._handleLoginError.bind(this);\n this._checkTokenExpiration = this._checkTokenExpiration.bind(this);\n this._attachListeners();\n this.connection = new Connection_1[\"default\"](this);\n }\n Object.defineProperty(BaseSession.prototype, \"__logger\", {\n get: function get() {\n return logger_1[\"default\"];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"connected\", {\n get: function get() {\n return this.connection && this.connection.connected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"expired\", {\n get: function get() {\n return this.expiresAt && this.expiresAt <= Date.now() / 1000;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"reconnectDelay\", {\n get: function get() {\n return (0, helpers_1.randomInt)(6, 2) * 1000;\n },\n enumerable: false,\n configurable: true\n });\n BaseSession.prototype.execute = function (msg) {\n var _this = this;\n if (this._idle) {\n return new Promise(function (resolve) {\n return _this._executeQueue.push({\n resolve: resolve,\n msg: msg\n });\n });\n }\n if (!this.connected) {\n return new Promise(function (resolve) {\n _this._executeQueue.push({\n resolve: resolve,\n msg: msg\n });\n _this.connect();\n });\n }\n return this.connection.send(msg)[\"catch\"](function (error) {\n if (error.code && error.code === _this.timeoutErrorCode) {\n _this._closeConnection();\n }\n throw error;\n });\n };\n BaseSession.prototype.executeRaw = function (text) {\n if (this._idle) {\n this._executeQueue.push({\n msg: text\n });\n return;\n }\n this.connection.sendRawText(text);\n };\n BaseSession.prototype.validateOptions = function () {\n var _a = this.options,\n _b = _a.project,\n project = _b === void 0 ? false : _b,\n _c = _a.token,\n token = _c === void 0 ? false : _c;\n return Boolean(project && token);\n };\n BaseSession.prototype.broadcast = function (params) {};\n BaseSession.prototype.subscribe = function (_a) {\n var protocol = _a.protocol,\n channels = _a.channels,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var bs, result, _b, failed_channels, _c, subscribe_channels;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n bs = new Blade_1.Subscription({\n command: constants_1.ADD,\n protocol: protocol,\n channels: channels\n });\n return [4, this.execute(bs)];\n case 1:\n result = _d.sent();\n _b = result.failed_channels, failed_channels = _b === void 0 ? [] : _b, _c = result.subscribe_channels, subscribe_channels = _c === void 0 ? [] : _c;\n if (failed_channels.length) {\n failed_channels.forEach(function (channel) {\n return _this._removeSubscription(protocol, channel);\n });\n }\n subscribe_channels.forEach(function (channel) {\n return _this._addSubscription(protocol, handler, channel);\n });\n return [2, result];\n }\n });\n });\n };\n BaseSession.prototype.unsubscribe = function (_a) {\n var protocol = _a.protocol,\n channels = _a.channels,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var bs;\n return __generator(this, function (_b) {\n bs = new Blade_1.Subscription({\n command: constants_1.REMOVE,\n protocol: protocol,\n channels: channels\n });\n return [2, this.execute(bs)];\n });\n });\n };\n BaseSession.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n clearTimeout(this._reconnectTimeout);\n this.subscriptions = {};\n this._autoReconnect = false;\n this.relayProtocol = null;\n this._closeConnection();\n return [4, storage_1.sessionStorage.removeItem(this.signature)];\n case 1:\n _a.sent();\n this._executeQueue = [];\n this._detachListeners();\n return [2];\n }\n });\n });\n };\n BaseSession.prototype.on = function (eventName, callback) {\n (0, Handler_1.register)(eventName, callback, this.uuid);\n return this;\n };\n BaseSession.prototype.off = function (eventName, callback) {\n (0, Handler_1.deRegister)(eventName, callback, this.uuid);\n return this;\n };\n BaseSession.prototype.refreshToken = function (token) {\n return __awaiter(this, void 0, void 0, function () {\n var br, response, _a, _b, _c, expires_at, error_1;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n this.options.token = token;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6,, 7]);\n if (!this.expired) return [3, 3];\n return [4, this.connect()];\n case 2:\n _d.sent();\n return [3, 5];\n case 3:\n br = new Blade_1.Reauthenticate(this.options.project, token, this.sessionid);\n return [4, this.execute(br)];\n case 4:\n response = _d.sent();\n _a = response.authorization, _b = _a === void 0 ? {} : _a, _c = _b.expires_at, expires_at = _c === void 0 ? null : _c;\n this.expiresAt = +expires_at || 0;\n _d.label = 5;\n case 5:\n return [3, 7];\n case 6:\n error_1 = _d.sent();\n logger_1[\"default\"].error('refreshToken error:', error_1);\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, error_1, this.uuid, false);\n return [3, 7];\n case 7:\n return [2];\n }\n });\n });\n };\n BaseSession.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.connection) {\n this.connection = new Connection_1[\"default\"](this);\n }\n this._attachListeners();\n if (!this.connection.isAlive) {\n this.connection.connect();\n }\n return [2];\n });\n });\n };\n BaseSession.prototype._handleLoginError = function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, error, this.uuid);\n };\n BaseSession.prototype._onSocketOpen = function () {\n return __awaiter(this, void 0, void 0, function () {\n var tokenKey, _a, project, token, bc, response, sessionid, nodeid, master_nodeid, _b, _c, _d, expires_at, _e, signature, _f;\n var _g;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n this._idle = false;\n tokenKey = this._jwtAuth ? 'jwt_token' : 'token';\n _a = this.options, project = _a.project, token = _a.token;\n bc = new Blade_1.Connect((_g = {\n project: project\n }, _g[tokenKey] = token, _g), this.sessionid);\n return [4, this.execute(bc)[\"catch\"](this._handleLoginError)];\n case 1:\n response = _h.sent();\n if (!response) return [3, 3];\n this._autoReconnect = true;\n sessionid = response.sessionid, nodeid = response.nodeid, master_nodeid = response.master_nodeid, _b = response.authorization, _c = _b === void 0 ? {} : _b, _d = _c.expires_at, expires_at = _d === void 0 ? null : _d, _e = _c.signature, signature = _e === void 0 ? null : _e;\n this.expiresAt = +expires_at || 0;\n this.signature = signature;\n _f = this;\n return [4, (0, Setup_1[\"default\"])(this)];\n case 2:\n _f.relayProtocol = _h.sent();\n this._checkTokenExpiration();\n this.sessionid = sessionid;\n this.nodeid = nodeid;\n this.master_nodeid = master_nodeid;\n this._emptyExecuteQueues();\n this._pong = null;\n this._keepAlive();\n this._handleBladeConnectResponse(response);\n (0, Handler_1.trigger)(constants_1.SwEvent.Ready, this, this.uuid);\n logger_1[\"default\"].info('Session Ready!');\n _h.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseSession.prototype._handleBladeConnectResponse = function (response) {};\n BaseSession.prototype._onSocketCloseOrError = function (event) {\n var _this = this;\n logger_1[\"default\"].error(\"Socket \".concat(event.type, \" \").concat(event.message));\n if (this.relayProtocol) {\n (0, Handler_1.deRegisterAll)(this.relayProtocol);\n }\n for (var sub in this.subscriptions) {\n (0, Handler_1.deRegisterAll)(sub);\n }\n this.subscriptions = {};\n this.contexts = [];\n if (this.expired) {\n this._idle = true;\n this._autoReconnect = false;\n this.expiresAt = 0;\n }\n if (this._autoReconnect) {\n this._reconnectTimeout = setTimeout(function () {\n return _this.connect();\n }, this.reconnectDelay);\n }\n };\n BaseSession.prototype._onSocketMessage = function (response) {\n var method = response.method,\n params = response.params;\n switch (method) {\n case constants_1.BladeMethod.Broadcast:\n (0, BroadcastHandler_1[\"default\"])(this, params);\n break;\n case constants_1.BladeMethod.Disconnect:\n this._idle = true;\n break;\n }\n };\n BaseSession.prototype._removeSubscription = function (protocol, channel) {\n if (!this._existsSubscription(protocol, channel)) {\n return;\n }\n if (channel) {\n delete this.subscriptions[protocol][channel];\n (0, Handler_1.deRegister)(protocol, null, channel);\n } else {\n delete this.subscriptions[protocol];\n (0, Handler_1.deRegisterAll)(protocol);\n }\n };\n BaseSession.prototype._addSubscription = function (protocol, handler, channel) {\n if (handler === void 0) {\n handler = null;\n }\n if (this._existsSubscription(protocol, channel)) {\n return;\n }\n if (!this._existsSubscription(protocol)) {\n this.subscriptions[protocol] = {};\n }\n this.subscriptions[protocol][channel] = {};\n if ((0, helpers_1.isFunction)(handler)) {\n (0, Handler_1.register)(protocol, handler, channel);\n }\n };\n BaseSession.prototype._existsSubscription = function (protocol, channel) {\n if (this.subscriptions.hasOwnProperty(protocol)) {\n if (!channel || channel && this.subscriptions[protocol].hasOwnProperty(channel)) {\n return true;\n }\n }\n return false;\n };\n BaseSession.prototype._attachListeners = function () {\n this._detachListeners();\n this.on(constants_1.SwEvent.SocketOpen, this._onSocketOpen);\n this.on(constants_1.SwEvent.SocketClose, this._onSocketCloseOrError);\n this.on(constants_1.SwEvent.SocketError, this._onSocketCloseOrError);\n this.on(constants_1.SwEvent.SocketMessage, this._onSocketMessage);\n };\n BaseSession.prototype._detachListeners = function () {\n this.off(constants_1.SwEvent.SocketOpen, this._onSocketOpen);\n this.off(constants_1.SwEvent.SocketClose, this._onSocketCloseOrError);\n this.off(constants_1.SwEvent.SocketError, this._onSocketCloseOrError);\n this.off(constants_1.SwEvent.SocketMessage, this._onSocketMessage);\n };\n BaseSession.prototype._emptyExecuteQueues = function () {\n var _this = this;\n this._executeQueue.forEach(function (_a) {\n var resolve = _a.resolve,\n msg = _a.msg;\n if (typeof msg === 'string') {\n _this.executeRaw(msg);\n } else {\n resolve(_this.execute(msg));\n }\n });\n };\n BaseSession.prototype._closeConnection = function () {\n this._idle = true;\n clearTimeout(this._keepAliveTimeout);\n if (this.connection) {\n this.connection.close();\n }\n };\n BaseSession.prototype._checkTokenExpiration = function () {\n if (!this.expiresAt) {\n return;\n }\n var diff = this.expiresAt - Date.now() / 1000;\n if (diff <= 60) {\n logger_1[\"default\"].warn('Your JWT is going to expire. You should refresh it to keep the session live.');\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, {\n type: constants_2.NOTIFICATION_TYPE.refreshToken,\n session: this\n }, this.uuid, false);\n }\n if (!this.expired) {\n setTimeout(this._checkTokenExpiration, 30 * 1000);\n }\n };\n BaseSession.prototype._keepAlive = function () {\n var _this = this;\n if (this._doKeepAlive !== true) {\n return;\n }\n if (this._pong === false) {\n return this._closeConnection();\n }\n this._pong = false;\n this.execute(new Blade_1.Ping()).then(function () {\n return _this._pong = true;\n })[\"catch\"](function () {\n return _this._pong = false;\n });\n this._keepAliveTimeout = setTimeout(function () {\n return _this._keepAlive();\n }, KEEPALIVE_INTERVAL);\n };\n BaseSession.on = function (eventName, callback) {\n (0, Handler_1.register)(eventName, callback);\n };\n BaseSession.off = function (eventName) {\n (0, Handler_1.deRegister)(eventName);\n };\n BaseSession.uuid = function () {\n return (0, uuid_1.v4)();\n };\n return BaseSession;\n}();\nexports[\"default\"] = BaseSession;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/BaseSession.ts?"); + +/***/ }), + +/***/ "../common/src/BrowserSession.ts": +/*!***************************************!*\ + !*** ../common/src/BrowserSession.ts ***! + \***************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ./util/logger */ \"../common/src/util/logger.ts\"));\nvar BaseSession_1 = __importDefault(__webpack_require__(/*! ./BaseSession */ \"../common/src/BaseSession.ts\"));\nvar Handler_1 = __webpack_require__(/*! ./services/Handler */ \"../common/src/services/Handler.ts\");\nvar constants_1 = __webpack_require__(/*! ./util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar helpers_1 = __webpack_require__(/*! ./webrtc/helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_2 = __webpack_require__(/*! ./util/helpers */ \"../common/src/util/helpers.ts\");\nvar Verto_1 = __webpack_require__(/*! ./messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar storage_1 = __webpack_require__(/*! ./util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar webrtc_1 = __webpack_require__(/*! ./util/webrtc */ \"../common/src/util/webrtc/index.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./webrtc/WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar BrowserSession = function (_super) {\n __extends(BrowserSession, _super);\n function BrowserSession(options) {\n var _this = _super.call(this, options) || this;\n _this.options = options;\n _this.calls = {};\n _this.autoRecoverCalls = true;\n _this._iceServers = [];\n _this._localElement = null;\n _this._remoteElement = null;\n _this._jwtAuth = true;\n _this._devices = {};\n _this._audioConstraints = true;\n _this._videoConstraints = false;\n _this._speaker = null;\n WebRTC_1.WebRTCOverridesManager.getInstance().RTCPeerConnection = options.RTCPeerConnection;\n WebRTC_1.WebRTCOverridesManager.getInstance().enumerateDevices = options.enumerateDevices;\n WebRTC_1.WebRTCOverridesManager.getInstance().getUserMedia = options.getUserMedia;\n WebRTC_1.WebRTCOverridesManager.getInstance().getDisplayMedia = options.getDisplayMedia;\n WebRTC_1.WebRTCOverridesManager.getInstance().getSupportedConstraints = options.getSupportedConstraints;\n WebRTC_1.WebRTCOverridesManager.getInstance().attachMediaStream = options.attachMediaStream;\n WebRTC_1.WebRTCOverridesManager.getInstance().streamIsValid = options.streamIsValid;\n return _this;\n }\n BrowserSession.prototype.validateOptions = function () {\n var _a = this.options,\n RTCPeerConnection = _a.RTCPeerConnection,\n getDisplayMedia = _a.getDisplayMedia,\n getUserMedia = _a.getUserMedia,\n attachMediaStream = _a.attachMediaStream,\n streamIsValid = _a.streamIsValid;\n return (!RTCPeerConnection && !getDisplayMedia && !getUserMedia && !attachMediaStream && !streamIsValid || !!RTCPeerConnection && !!getDisplayMedia && !!getUserMedia && !!attachMediaStream && !!streamIsValid) && _super.prototype.validateOptions.call(this);\n };\n Object.defineProperty(BrowserSession.prototype, \"reconnectDelay\", {\n get: function get() {\n return 1000;\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype._handleBladeConnectResponse = function (response) {\n var _a = response.ice_servers,\n ice_servers = _a === void 0 ? [] : _a;\n this.iceServers = ice_servers;\n };\n BrowserSession.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4, storage_1.localStorage.getItem(constants_1.SESSION_ID)];\n case 1:\n _a.sessionid = _b.sent();\n _super.prototype.connect.call(this);\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.checkPermissions = function (audio, video) {\n if (audio === void 0) {\n audio = true;\n }\n if (video === void 0) {\n video = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var stream, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2,, 3]);\n return [4, (0, helpers_1.getUserMedia)({\n audio: audio,\n video: video\n })];\n case 1:\n stream = _b.sent();\n (0, webrtc_1.stopStream)(stream);\n return [2, true];\n case 2:\n _a = _b.sent();\n return [2, false];\n case 3:\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.logout = function () {\n this.disconnect();\n };\n BrowserSession.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n Object.keys(this.calls).forEach(function (k) {\n return _this.calls[k].setState(constants_2.State.Purge);\n });\n this.calls = {};\n return [4, _super.prototype.disconnect.call(this)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.speedTest = function (bytes) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n (0, Handler_1.registerOnce)(constants_1.SwEvent.SpeedTest, function (speedTestResult) {\n var upDur = speedTestResult.upDur,\n downDur = speedTestResult.downDur;\n var upKps = upDur ? bytes * 8 / (upDur / 1000) / 1024 : 0;\n var downKps = downDur ? bytes * 8 / (downDur / 1000) / 1024 : 0;\n resolve({\n upDur: upDur,\n downDur: downDur,\n upKps: upKps.toFixed(0),\n downKps: downKps.toFixed(0)\n });\n }, _this.uuid);\n bytes = Number(bytes);\n if (!bytes) {\n return reject(\"Invalid parameter 'bytes': \".concat(bytes));\n }\n _this.executeRaw(\"#SPU \".concat(bytes));\n var loops = bytes / 1024;\n if (bytes % 1024) {\n loops++;\n }\n var dots = '.'.repeat(1024);\n for (var i = 0; i < loops; i++) {\n _this.executeRaw(\"#SPB \".concat(dots));\n }\n _this.executeRaw('#SPE');\n });\n };\n BrowserSession.prototype.getDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)()[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getVideoDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.Video)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getAudioInDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.AudioIn)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getAudioOutDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.AudioOut)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.validateDeviceId = function (id, label, kind) {\n return (0, helpers_1.assureDeviceId)(id, label, kind);\n };\n BrowserSession.prototype.refreshDevices = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cache, devices;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger_1[\"default\"].warn('This method has been deprecated. Use getDevices() instead.');\n cache = {};\n ['videoinput', 'audioinput', 'audiooutput'].map(function (kind) {\n cache[kind] = {};\n Object.defineProperty(cache[kind], 'toArray', {\n value: function value() {\n var _this = this;\n return Object.keys(this).map(function (k) {\n return _this[k];\n });\n }\n });\n });\n return [4, this.getDevices()];\n case 1:\n devices = _a.sent();\n devices.forEach(function (t) {\n if (cache.hasOwnProperty(t.kind)) {\n cache[t.kind][t.deviceId] = t;\n }\n });\n this._devices = cache;\n return [2, this.devices];\n }\n });\n });\n };\n Object.defineProperty(BrowserSession.prototype, \"devices\", {\n get: function get() {\n return this._devices || {};\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.getDeviceResolutions = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n return [4, (0, helpers_1.scanResolutions)(deviceId)];\n case 1:\n return [2, _a.sent()];\n case 2:\n error_1 = _a.sent();\n throw error_1;\n case 3:\n return [2];\n }\n });\n });\n };\n Object.defineProperty(BrowserSession.prototype, \"videoDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getVideoDevices() instead.');\n return this._devices.videoinput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"audioInDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getAudioInDevices() instead.');\n return this._devices.audioinput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"audioOutDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getAudioOutDevices() instead.');\n return this._devices.audiooutput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"mediaConstraints\", {\n get: function get() {\n return {\n audio: this._audioConstraints,\n video: this._videoConstraints\n };\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.setAudioSettings = function (settings) {\n return __awaiter(this, void 0, void 0, function () {\n var micId, micLabel, constraints, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n micId = settings.micId, micLabel = settings.micLabel, constraints = __rest(settings, [\"micId\", \"micLabel\"]);\n (0, helpers_1.removeUnsupportedConstraints)(constraints);\n _a = this;\n return [4, (0, helpers_1.checkDeviceIdConstraints)(micId, micLabel, 'audioinput', constraints)];\n case 1:\n _a._audioConstraints = _b.sent();\n this.micId = micId;\n this.micLabel = micLabel;\n return [2, this._audioConstraints];\n }\n });\n });\n };\n BrowserSession.prototype.disableMicrophone = function () {\n this._audioConstraints = false;\n };\n BrowserSession.prototype.enableMicrophone = function () {\n this._audioConstraints = true;\n };\n BrowserSession.prototype.setVideoSettings = function (settings) {\n return __awaiter(this, void 0, void 0, function () {\n var camId, camLabel, constraints, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n camId = settings.camId, camLabel = settings.camLabel, constraints = __rest(settings, [\"camId\", \"camLabel\"]);\n (0, helpers_1.removeUnsupportedConstraints)(constraints);\n _a = this;\n return [4, (0, helpers_1.checkDeviceIdConstraints)(camId, camLabel, 'videoinput', constraints)];\n case 1:\n _a._videoConstraints = _b.sent();\n this.camId = camId;\n this.camLabel = camLabel;\n return [2, this._videoConstraints];\n }\n });\n });\n };\n BrowserSession.prototype.disableWebcam = function () {\n this._videoConstraints = false;\n };\n BrowserSession.prototype.enableWebcam = function () {\n this._videoConstraints = true;\n };\n Object.defineProperty(BrowserSession.prototype, \"iceServers\", {\n get: function get() {\n return this._iceServers;\n },\n set: function set(servers) {\n if (typeof servers === 'boolean') {\n this._iceServers = servers ? [{\n urls: ['stun:stun.l.google.com:19302']\n }] : [];\n } else {\n this._iceServers = servers;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"speaker\", {\n get: function get() {\n return this._speaker;\n },\n set: function set(deviceId) {\n this._speaker = deviceId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"localElement\", {\n get: function get() {\n return this._localElement;\n },\n set: function set(tag) {\n this._localElement = (0, helpers_2.findElementByType)(tag);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"remoteElement\", {\n get: function get() {\n return this._remoteElement;\n },\n set: function set(tag) {\n this._remoteElement = (0, helpers_2.findElementByType)(tag);\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.vertoBroadcast = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channel,\n eventChannel = _b === void 0 ? '' : _b,\n data = _a.data;\n if (!eventChannel) {\n throw new Error('Invalid channel for broadcast: ' + eventChannel);\n }\n var msg = new Verto_1.Broadcast({\n sessid: this.sessionid,\n eventChannel: eventChannel,\n data: data\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n this.execute(msg)[\"catch\"](function (error) {\n return error;\n });\n };\n BrowserSession.prototype.vertoSubscribe = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channels,\n eventChannel = _b === void 0 ? [] : _b,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var msg, response, _c, _d, unauthorized, _e, subscribed;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n eventChannel = eventChannel.filter(function (channel) {\n return channel && !_this._existsSubscription(_this.relayProtocol, channel);\n });\n if (!eventChannel.length) {\n return [2, {}];\n }\n msg = new Verto_1.Subscribe({\n sessid: this.sessionid,\n eventChannel: eventChannel\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n return [4, this.execute(msg)];\n case 1:\n response = _f.sent();\n _c = (0, helpers_1.destructSubscribeResponse)(response), _d = _c.unauthorized, unauthorized = _d === void 0 ? [] : _d, _e = _c.subscribed, subscribed = _e === void 0 ? [] : _e;\n if (unauthorized.length) {\n unauthorized.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n }\n subscribed.forEach(function (channel) {\n return _this._addSubscription(_this.relayProtocol, handler, channel);\n });\n return [2, response];\n }\n });\n });\n };\n BrowserSession.prototype.vertoUnsubscribe = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channels,\n eventChannel = _b === void 0 ? [] : _b;\n return __awaiter(this, void 0, void 0, function () {\n var msg, response, _c, _d, unsubscribed, _e, notSubscribed;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n eventChannel = eventChannel.filter(function (channel) {\n return channel && _this._existsSubscription(_this.relayProtocol, channel);\n });\n if (!eventChannel.length) {\n return [2, {}];\n }\n msg = new Verto_1.Unsubscribe({\n sessid: this.sessionid,\n eventChannel: eventChannel\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n return [4, this.execute(msg)];\n case 1:\n response = _f.sent();\n _c = (0, helpers_1.destructSubscribeResponse)(response), _d = _c.unsubscribed, unsubscribed = _d === void 0 ? [] : _d, _e = _c.notSubscribed, notSubscribed = _e === void 0 ? [] : _e;\n unsubscribed.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n notSubscribed.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n return [2, response];\n }\n });\n });\n };\n return BrowserSession;\n}(BaseSession_1[\"default\"]);\nexports[\"default\"] = BrowserSession;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/BrowserSession.ts?"); + +/***/ }), + +/***/ "../common/src/messages/BaseMessage.ts": +/*!*********************************************!*\ + !*** ../common/src/messages/BaseMessage.ts ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar BaseMessage = function () {\n function BaseMessage() {}\n BaseMessage.prototype.buildRequest = function (params) {\n this.request = __assign({\n jsonrpc: '2.0',\n id: (0, uuid_1.v4)()\n }, params);\n };\n return BaseMessage;\n}();\nexports[\"default\"] = BaseMessage;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/BaseMessage.ts?"); + +/***/ }), + +/***/ "../common/src/messages/Blade.ts": +/*!***************************************!*\ + !*** ../common/src/messages/Blade.ts ***! + \***************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Ping = exports.Reauthenticate = exports.Execute = exports.Subscription = exports.Connect = void 0;\nvar Connect_1 = __webpack_require__(/*! ./blade/Connect */ \"../common/src/messages/blade/Connect.ts\");\nObject.defineProperty(exports, \"Connect\", ({\n enumerable: true,\n get: function get() {\n return Connect_1.Connect;\n }\n}));\nvar Execute_1 = __webpack_require__(/*! ./blade/Execute */ \"../common/src/messages/blade/Execute.ts\");\nObject.defineProperty(exports, \"Execute\", ({\n enumerable: true,\n get: function get() {\n return Execute_1.Execute;\n }\n}));\nvar Subscription_1 = __webpack_require__(/*! ./blade/Subscription */ \"../common/src/messages/blade/Subscription.ts\");\nObject.defineProperty(exports, \"Subscription\", ({\n enumerable: true,\n get: function get() {\n return Subscription_1.Subscription;\n }\n}));\nvar Reauthenticate_1 = __webpack_require__(/*! ./blade/Reauthenticate */ \"../common/src/messages/blade/Reauthenticate.ts\");\nObject.defineProperty(exports, \"Reauthenticate\", ({\n enumerable: true,\n get: function get() {\n return Reauthenticate_1.Reauthenticate;\n }\n}));\nvar Ping_1 = __webpack_require__(/*! ./blade/Ping */ \"../common/src/messages/blade/Ping.ts\");\nObject.defineProperty(exports, \"Ping\", ({\n enumerable: true,\n get: function get() {\n return Ping_1.Ping;\n }\n}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/Blade.ts?"); + +/***/ }), + +/***/ "../common/src/messages/Verto.ts": +/*!***************************************!*\ + !*** ../common/src/messages/Verto.ts ***! + \***************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Result = exports.Unsubscribe = exports.Subscribe = exports.Broadcast = exports.Info = exports.Modify = exports.Bye = exports.Attach = exports.Answer = exports.Invite = exports.Login = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./verto/BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Login_1 = __webpack_require__(/*! ./verto/Login */ \"../common/src/messages/verto/Login.ts\");\nObject.defineProperty(exports, \"Login\", ({\n enumerable: true,\n get: function get() {\n return Login_1.Login;\n }\n}));\nvar Result_1 = __webpack_require__(/*! ./verto/Result */ \"../common/src/messages/verto/Result.ts\");\nObject.defineProperty(exports, \"Result\", ({\n enumerable: true,\n get: function get() {\n return Result_1.Result;\n }\n}));\nvar constants_1 = __webpack_require__(/*! ../webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar Invite = function (_super) {\n __extends(Invite, _super);\n function Invite() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Invite.prototype.toString = function () {\n return constants_1.VertoMethod.Invite;\n };\n return Invite;\n}(BaseRequest_1[\"default\"]);\nexports.Invite = Invite;\nvar Answer = function (_super) {\n __extends(Answer, _super);\n function Answer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Answer.prototype.toString = function () {\n return constants_1.VertoMethod.Answer;\n };\n return Answer;\n}(BaseRequest_1[\"default\"]);\nexports.Answer = Answer;\nvar Attach = function (_super) {\n __extends(Attach, _super);\n function Attach() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Attach.prototype.toString = function () {\n return constants_1.VertoMethod.Attach;\n };\n return Attach;\n}(BaseRequest_1[\"default\"]);\nexports.Attach = Attach;\nvar Bye = function (_super) {\n __extends(Bye, _super);\n function Bye() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Bye.prototype.toString = function () {\n return constants_1.VertoMethod.Bye;\n };\n return Bye;\n}(BaseRequest_1[\"default\"]);\nexports.Bye = Bye;\nvar Modify = function (_super) {\n __extends(Modify, _super);\n function Modify() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Modify.prototype.toString = function () {\n return constants_1.VertoMethod.Modify;\n };\n return Modify;\n}(BaseRequest_1[\"default\"]);\nexports.Modify = Modify;\nvar Info = function (_super) {\n __extends(Info, _super);\n function Info() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Info.prototype.toString = function () {\n return constants_1.VertoMethod.Info;\n };\n return Info;\n}(BaseRequest_1[\"default\"]);\nexports.Info = Info;\nvar Broadcast = function (_super) {\n __extends(Broadcast, _super);\n function Broadcast() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Broadcast.prototype.toString = function () {\n return constants_1.VertoMethod.Broadcast;\n };\n return Broadcast;\n}(BaseRequest_1[\"default\"]);\nexports.Broadcast = Broadcast;\nvar Subscribe = function (_super) {\n __extends(Subscribe, _super);\n function Subscribe() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Subscribe.prototype.toString = function () {\n return constants_1.VertoMethod.Subscribe;\n };\n return Subscribe;\n}(BaseRequest_1[\"default\"]);\nexports.Subscribe = Subscribe;\nvar Unsubscribe = function (_super) {\n __extends(Unsubscribe, _super);\n function Unsubscribe() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Unsubscribe.prototype.toString = function () {\n return constants_1.VertoMethod.Unsubscribe;\n };\n return Unsubscribe;\n}(BaseRequest_1[\"default\"]);\nexports.Unsubscribe = Unsubscribe;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/Verto.ts?"); + +/***/ }), + +/***/ "../common/src/messages/blade/Connect.ts": +/*!***********************************************!*\ + !*** ../common/src/messages/blade/Connect.ts ***! + \***********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setAgentName = exports.Connect = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar major = 2;\nvar minor = 1;\nvar revision = 0;\nvar agent = null;\nvar setAgentName = function setAgentName(name) {\n agent = name;\n};\nexports.setAgentName = setAgentName;\nvar Connect = function (_super) {\n __extends(Connect, _super);\n function Connect(authentication, sessionid) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.connect';\n var params = {\n version: {\n major: major,\n minor: minor,\n revision: revision\n },\n authentication: authentication\n };\n if (sessionid) {\n params.sessionid = sessionid;\n }\n if (agent) {\n params.agent = agent;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Connect;\n}(BaseMessage_1[\"default\"]);\nexports.Connect = Connect;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Connect.ts?"); + +/***/ }), + +/***/ "../common/src/messages/blade/Execute.ts": +/*!***********************************************!*\ + !*** ../common/src/messages/blade/Execute.ts ***! + \***********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Execute = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Execute = function (_super) {\n __extends(Execute, _super);\n function Execute(params, id) {\n if (id === void 0) {\n id = '';\n }\n var _this = _super.call(this) || this;\n _this.method = 'blade.execute';\n var tmp;\n if (params.hasOwnProperty('result')) {\n tmp = {\n result: params\n };\n } else {\n tmp = {\n method: _this.method,\n params: params\n };\n }\n if (id) {\n tmp.id = id;\n }\n _this.buildRequest(tmp);\n return _this;\n }\n return Execute;\n}(BaseMessage_1[\"default\"]);\nexports.Execute = Execute;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Execute.ts?"); + +/***/ }), + +/***/ "../common/src/messages/blade/Ping.ts": +/*!********************************************!*\ + !*** ../common/src/messages/blade/Ping.ts ***! + \********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Ping = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Ping = function (_super) {\n __extends(Ping, _super);\n function Ping() {\n var _this = _super.call(this) || this;\n _this.method = 'blade.ping';\n _this.buildRequest({\n method: _this.method,\n params: {}\n });\n return _this;\n }\n return Ping;\n}(BaseMessage_1[\"default\"]);\nexports.Ping = Ping;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Ping.ts?"); + +/***/ }), + +/***/ "../common/src/messages/blade/Reauthenticate.ts": +/*!******************************************************!*\ + !*** ../common/src/messages/blade/Reauthenticate.ts ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Reauthenticate = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Reauthenticate = function (_super) {\n __extends(Reauthenticate, _super);\n function Reauthenticate(project, jwt_token, sessionid) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.reauthenticate';\n var params = {\n sessionid: sessionid,\n authentication: {\n project: project,\n jwt_token: jwt_token\n }\n };\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Reauthenticate;\n}(BaseMessage_1[\"default\"]);\nexports.Reauthenticate = Reauthenticate;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Reauthenticate.ts?"); + +/***/ }), + +/***/ "../common/src/messages/blade/Subscription.ts": +/*!****************************************************!*\ + !*** ../common/src/messages/blade/Subscription.ts ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Subscription = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Subscription = function (_super) {\n __extends(Subscription, _super);\n function Subscription(params) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.subscription';\n if (params.hasOwnProperty('auto_create') && !params.auto_create) {\n delete params.auto_create;\n }\n if (params.hasOwnProperty('downstream') && !params.downstream) {\n delete params.downstream;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Subscription;\n}(BaseMessage_1[\"default\"]);\nexports.Subscription = Subscription;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Subscription.ts?"); + +/***/ }), + +/***/ "../common/src/messages/verto/BaseRequest.ts": +/*!***************************************************!*\ + !*** ../common/src/messages/verto/BaseRequest.ts ***! + \***************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar tmpMap = {\n id: 'callID',\n destinationNumber: 'destination_number',\n remoteCallerName: 'remote_caller_id_name',\n remoteCallerNumber: 'remote_caller_id_number',\n callerName: 'caller_id_name',\n callerNumber: 'caller_id_number'\n};\nvar BaseRequest = function (_super) {\n __extends(BaseRequest, _super);\n function BaseRequest(params) {\n if (params === void 0) {\n params = {};\n }\n var _this = _super.call(this) || this;\n if (params.hasOwnProperty('dialogParams')) {\n var _a = params.dialogParams,\n remoteSdp = _a.remoteSdp,\n localStream = _a.localStream,\n remoteStream = _a.remoteStream,\n onNotification = _a.onNotification,\n camId = _a.camId,\n micId = _a.micId,\n speakerId = _a.speakerId,\n dialogParams = __rest(_a, [\"remoteSdp\", \"localStream\", \"remoteStream\", \"onNotification\", \"camId\", \"micId\", \"speakerId\"]);\n for (var key in tmpMap) {\n if (key && dialogParams.hasOwnProperty(key)) {\n dialogParams[tmpMap[key]] = dialogParams[key];\n delete dialogParams[key];\n }\n }\n params.dialogParams = dialogParams;\n }\n _this.buildRequest({\n method: _this.toString(),\n params: params\n });\n return _this;\n }\n return BaseRequest;\n}(BaseMessage_1[\"default\"]);\nexports[\"default\"] = BaseRequest;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/BaseRequest.ts?"); + +/***/ }), + +/***/ "../common/src/messages/verto/Login.ts": +/*!*********************************************!*\ + !*** ../common/src/messages/verto/Login.ts ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Login = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Login = function (_super) {\n __extends(Login, _super);\n function Login(login, passwd, sessionid, userVariables) {\n if (userVariables === void 0) {\n userVariables = {};\n }\n var _this = _super.call(this) || this;\n _this.method = 'login';\n var params = {\n login: login,\n passwd: passwd,\n userVariables: userVariables,\n loginParams: {}\n };\n if (sessionid) {\n params.sessid = sessionid;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Login;\n}(BaseRequest_1[\"default\"]);\nexports.Login = Login;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/Login.ts?"); + +/***/ }), + +/***/ "../common/src/messages/verto/Result.ts": +/*!**********************************************!*\ + !*** ../common/src/messages/verto/Result.ts ***! + \**********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Result = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Result = function (_super) {\n __extends(Result, _super);\n function Result(id, method) {\n var _this = _super.call(this) || this;\n _this.buildRequest({\n id: id,\n result: {\n method: method\n }\n });\n return _this;\n }\n return Result;\n}(BaseRequest_1[\"default\"]);\nexports.Result = Result;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/Result.ts?"); + +/***/ }), + +/***/ "../common/src/services/BroadcastHandler.ts": +/*!**************************************************!*\ + !*** ../common/src/services/BroadcastHandler.ts ***! + \**************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar VertoHandler_1 = __importDefault(__webpack_require__(/*! ../webrtc/VertoHandler */ \"../common/src/webrtc/VertoHandler.ts\"));\nexports[\"default\"] = function (session, broadcastParams) {\n var protocol = broadcastParams.protocol,\n event = broadcastParams.event,\n params = broadcastParams.params;\n var event_type = params.event_type,\n node_id = params.node_id;\n if (protocol !== session.relayProtocol) {\n return logger_1[\"default\"].error('Session protocol mismatch.');\n }\n switch (event) {\n case 'queuing.relay.events':\n if (event_type === 'webrtc.message') {\n var handler = new VertoHandler_1[\"default\"](session);\n handler.nodeId = node_id;\n handler.handleMessage(params.params);\n } else {\n session.calling.notificationHandler(params);\n }\n break;\n case 'queuing.relay.tasks':\n session.tasking.notificationHandler(params);\n break;\n case 'queuing.relay.messaging':\n session.messaging.notificationHandler(params);\n break;\n default:\n return logger_1[\"default\"].error(\"Unknown notification type: \".concat(event_type));\n }\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/BroadcastHandler.ts?"); + +/***/ }), + +/***/ "../common/src/services/Connection.ts": +/*!********************************************!*\ + !*** ../common/src/services/Connection.ts ***! + \********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setWebSocket = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebSocketClass = typeof WebSocket !== 'undefined' ? WebSocket : null;\nvar setWebSocket = function setWebSocket(websocket) {\n WebSocketClass = websocket;\n};\nexports.setWebSocket = setWebSocket;\nvar WS_STATE = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n};\nvar TIMEOUT_MS = 10 * 1000;\nvar Connection = function () {\n function Connection(session) {\n this.session = session;\n this._wsClient = null;\n this._host = 'wss://relay.signalwire.com';\n this._timers = {};\n this.upDur = null;\n this.downDur = null;\n var host = session.options.host;\n if (host) {\n this._host = (0, helpers_1.checkWebSocketHost)(host);\n }\n }\n Object.defineProperty(Connection.prototype, \"connected\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.OPEN;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"connecting\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CONNECTING;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"closing\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CLOSING;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"closed\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CLOSED;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"isAlive\", {\n get: function get() {\n return this.connecting || this.connected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"isDead\", {\n get: function get() {\n return this.closing || this.closed;\n },\n enumerable: false,\n configurable: true\n });\n Connection.prototype.connect = function () {\n var _this = this;\n this._wsClient = new WebSocketClass(this._host);\n this._wsClient.onopen = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketOpen, event, _this.session.uuid);\n };\n this._wsClient.onclose = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketClose, event, _this.session.uuid);\n };\n this._wsClient.onerror = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketError, event, _this.session.uuid);\n };\n this._wsClient.onmessage = function (event) {\n var msg = (0, helpers_1.safeParseJson)(event.data);\n if (typeof msg === 'string') {\n _this._handleStringResponse(msg);\n return;\n }\n _this._unsetTimer(msg.id);\n logger_1[\"default\"].debug('RECV: \\n', JSON.stringify(msg, null, 2), '\\n');\n if (!(0, Handler_1.trigger)(msg.id, msg)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.SocketMessage, msg, _this.session.uuid);\n }\n };\n };\n Connection.prototype.sendRawText = function (request) {\n this._wsClient.send(request);\n };\n Connection.prototype.send = function (bladeObj) {\n var _this = this;\n var request = bladeObj.request;\n var promise = new Promise(function (resolve, reject) {\n if (request.hasOwnProperty('result')) {\n return resolve();\n }\n (0, Handler_1.registerOnce)(request.id, function (response) {\n var _a = (0, helpers_1.destructResponse)(response),\n result = _a.result,\n error = _a.error;\n return error ? reject(error) : resolve(result);\n });\n _this._setTimer(request.id);\n });\n logger_1[\"default\"].debug('SEND: \\n', JSON.stringify(request, null, 2), '\\n');\n this._wsClient.send(JSON.stringify(request));\n return promise;\n };\n Connection.prototype.close = function () {\n if (this._wsClient) {\n (0, helpers_2.isFunction)(this._wsClient._beginClose) ? this._wsClient._beginClose() : this._wsClient.close();\n }\n this._wsClient = null;\n };\n Connection.prototype._unsetTimer = function (id) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n };\n Connection.prototype._setTimer = function (id) {\n var _this = this;\n this._timers[id] = setTimeout(function () {\n (0, Handler_1.trigger)(id, {\n error: {\n code: _this.session.timeoutErrorCode,\n message: 'Timeout'\n }\n });\n _this._unsetTimer(id);\n }, TIMEOUT_MS);\n };\n Connection.prototype._handleStringResponse = function (response) {\n if (/^#SP/.test(response)) {\n switch (response[3]) {\n case 'U':\n this.upDur = parseInt(response.substring(4));\n break;\n case 'D':\n this.downDur = parseInt(response.substring(4));\n (0, Handler_1.trigger)(constants_1.SwEvent.SpeedTest, {\n upDur: this.upDur,\n downDur: this.downDur\n }, this.session.uuid);\n break;\n }\n } else {\n logger_1[\"default\"].warn('Unknown message from socket', response);\n }\n };\n return Connection;\n}();\nexports[\"default\"] = Connection;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Connection.ts?"); + +/***/ }), + +/***/ "../common/src/services/Handler.ts": +/*!*****************************************!*\ + !*** ../common/src/services/Handler.ts ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.queueLength = exports.isQueued = exports.deRegisterAll = exports.deRegister = exports.registerOnce = exports.register = exports.trigger = void 0;\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar GLOBAL = 'GLOBAL';\nvar queue = {};\nvar isQueued = function isQueued(eventName, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n return queue.hasOwnProperty(eventName) && queue[eventName].hasOwnProperty(uniqueId);\n};\nexports.isQueued = isQueued;\nvar queueLength = function queueLength(eventName, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!isQueued(eventName, uniqueId)) {\n return 0;\n }\n return queue[eventName][uniqueId].length;\n};\nexports.queueLength = queueLength;\nvar register = function register(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!queue.hasOwnProperty(eventName)) {\n queue[eventName] = {};\n }\n if (!queue[eventName].hasOwnProperty(uniqueId)) {\n queue[eventName][uniqueId] = [];\n }\n queue[eventName][uniqueId].push(callback);\n};\nexports.register = register;\nvar registerOnce = function registerOnce(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n var cb = function cb(data) {\n deRegister(eventName, cb, uniqueId);\n callback(data);\n };\n cb.prototype.targetRef = callback;\n return register(eventName, cb, uniqueId);\n};\nexports.registerOnce = registerOnce;\nvar deRegister = function deRegister(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!isQueued(eventName, uniqueId)) {\n return false;\n }\n if ((0, helpers_1.isFunction)(callback)) {\n var len = queue[eventName][uniqueId].length;\n for (var i = len - 1; i >= 0; i--) {\n var fn = queue[eventName][uniqueId][i];\n if (callback === fn || fn.prototype && callback === fn.prototype.targetRef) {\n queue[eventName][uniqueId].splice(i, 1);\n }\n }\n } else {\n queue[eventName][uniqueId] = [];\n }\n if (queue[eventName][uniqueId].length === 0) {\n delete queue[eventName][uniqueId];\n if ((0, helpers_1.objEmpty)(queue[eventName])) {\n delete queue[eventName];\n }\n }\n return true;\n};\nexports.deRegister = deRegister;\nvar trigger = function trigger(eventName, data, uniqueId, globalPropagation) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (globalPropagation === void 0) {\n globalPropagation = true;\n }\n var _propagate = globalPropagation && uniqueId !== GLOBAL;\n if (!isQueued(eventName, uniqueId)) {\n if (_propagate) {\n trigger(eventName, data);\n }\n return false;\n }\n var len = queue[eventName][uniqueId].length;\n if (!len) {\n if (_propagate) {\n trigger(eventName, data);\n }\n return false;\n }\n for (var i = len - 1; i >= 0; i--) {\n queue[eventName][uniqueId][i](data);\n }\n if (_propagate) {\n trigger(eventName, data);\n }\n return true;\n};\nexports.trigger = trigger;\nvar deRegisterAll = function deRegisterAll(eventName) {\n delete queue[eventName];\n};\nexports.deRegisterAll = deRegisterAll;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Handler.ts?"); + +/***/ }), + +/***/ "../common/src/services/Setup.ts": +/*!***************************************!*\ + !*** ../common/src/services/Setup.ts ***! + \***************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Blade_1 = __webpack_require__(/*! ../messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar storage_1 = __webpack_require__(/*! ../util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar SETUP_PROTOCOL = 'signalwire';\nvar SETUP_METHOD = 'setup';\nvar SETUP_CHANNEL = 'notifications';\nexports[\"default\"] = function (session) {\n return __awaiter(void 0, void 0, void 0, function () {\n var params, signature, relayProtocol, prevProtocol, be, _a, protocol;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n params = {};\n signature = session.signature, relayProtocol = session.relayProtocol;\n if (!(relayProtocol && relayProtocol.split('_')[1] === signature)) return [3, 1];\n params.protocol = relayProtocol;\n return [3, 3];\n case 1:\n return [4, storage_1.sessionStorage.getItem(signature)];\n case 2:\n prevProtocol = _b.sent();\n if (prevProtocol) {\n params.protocol = prevProtocol;\n }\n _b.label = 3;\n case 3:\n be = new Blade_1.Execute({\n protocol: SETUP_PROTOCOL,\n method: SETUP_METHOD,\n params: params\n });\n return [4, session.execute(be)];\n case 4:\n _a = _b.sent().protocol, protocol = _a === void 0 ? null : _a;\n if (!protocol) return [3, 7];\n return [4, session.subscribe({\n protocol: protocol,\n channels: [SETUP_CHANNEL]\n })];\n case 5:\n _b.sent();\n return [4, storage_1.sessionStorage.setItem(signature, protocol)];\n case 6:\n _b.sent();\n return [3, 8];\n case 7:\n logger_1[\"default\"].error('Error during setup the session protocol.');\n _b.label = 8;\n case 8:\n return [2, protocol];\n }\n });\n });\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Setup.ts?"); + +/***/ }), + +/***/ "../common/src/util/constants/index.ts": +/*!*********************************************!*\ + !*** ../common/src/util/constants/index.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BladeMethod = exports.SwEvent = exports.SESSION_ID = exports.REMOVE = exports.ADD = exports.STORAGE_PREFIX = void 0;\nexports.STORAGE_PREFIX = '@signalwire:';\nexports.ADD = 'add';\nexports.REMOVE = 'remove';\nexports.SESSION_ID = 'sessId';\nvar SwEvent;\n(function (SwEvent) {\n SwEvent[\"SocketOpen\"] = \"signalwire.socket.open\";\n SwEvent[\"SocketClose\"] = \"signalwire.socket.close\";\n SwEvent[\"SocketError\"] = \"signalwire.socket.error\";\n SwEvent[\"SocketMessage\"] = \"signalwire.socket.message\";\n SwEvent[\"SpeedTest\"] = \"signalwire.internal.speedtest\";\n SwEvent[\"Ready\"] = \"signalwire.ready\";\n SwEvent[\"Error\"] = \"signalwire.error\";\n SwEvent[\"Notification\"] = \"signalwire.notification\";\n SwEvent[\"Messages\"] = \"signalwire.messages\";\n SwEvent[\"Calls\"] = \"signalwire.calls\";\n SwEvent[\"MediaError\"] = \"signalwire.rtc.mediaError\";\n})(SwEvent || (exports.SwEvent = SwEvent = {}));\nvar BladeMethod;\n(function (BladeMethod) {\n BladeMethod[\"Broadcast\"] = \"blade.broadcast\";\n BladeMethod[\"Disconnect\"] = \"blade.disconnect\";\n})(BladeMethod || (exports.BladeMethod = BladeMethod = {}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/constants/index.ts?"); + +/***/ }), + +/***/ "../common/src/util/helpers.ts": +/*!*************************************!*\ + !*** ../common/src/util/helpers.ts ***! + \*************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.stackTrace = exports.normalizeAsyncAPIs = exports.randomInt = exports.destructResponse = exports.checkWebSocketHost = exports.findElementByType = exports.isFunction = exports.isDefined = exports.safeParseJson = exports.mutateLiveArrayData = exports.mutateStorageKey = exports.objEmpty = exports.deepCopy = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ./logger */ \"../common/src/util/logger.ts\"));\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/util/constants/index.ts\");\nvar deepCopy = function deepCopy(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\nexports.deepCopy = deepCopy;\nvar objEmpty = function objEmpty(obj) {\n return Object.keys(obj).length === 0;\n};\nexports.objEmpty = objEmpty;\nvar mutateStorageKey = function mutateStorageKey(key) {\n return \"\".concat(constants_1.STORAGE_PREFIX).concat(key);\n};\nexports.mutateStorageKey = mutateStorageKey;\nvar mutateLiveArrayData = function mutateLiveArrayData(data) {\n var _a = __read(data, 6),\n participantId = _a[0],\n participantNumber = _a[1],\n participantName = _a[2],\n codec = _a[3],\n mediaJson = _a[4],\n participantData = _a[5];\n var media = {};\n try {\n media = JSON.parse(mediaJson.replace(/ID\"/g, 'Id\"'));\n } catch (error) {\n logger_1[\"default\"].warn('Verto LA invalid media JSON string:', mediaJson);\n }\n return {\n participantId: Number(participantId),\n participantNumber: participantNumber,\n participantName: participantName,\n codec: codec,\n media: media,\n participantData: participantData\n };\n};\nexports.mutateLiveArrayData = mutateLiveArrayData;\nvar safeParseJson = function safeParseJson(value) {\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(value);\n } catch (error) {\n return value;\n }\n};\nexports.safeParseJson = safeParseJson;\nvar isDefined = function isDefined(variable) {\n return typeof variable !== 'undefined';\n};\nexports.isDefined = isDefined;\nvar isFunction = function isFunction(variable) {\n return variable instanceof Function || typeof variable === 'function';\n};\nexports.isFunction = isFunction;\nvar findElementByType = function findElementByType(tag) {\n if ((typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== 'object' || !('getElementById' in document)) {\n return null;\n }\n if (typeof tag === 'string') {\n return document.getElementById(tag) || null;\n } else if (typeof tag === 'function') {\n return tag();\n } else if (tag instanceof HTMLMediaElement) {\n return tag;\n }\n return null;\n};\nexports.findElementByType = findElementByType;\nvar PROTOCOL_PATTERN = /^(ws|wss):\\/\\//;\nvar checkWebSocketHost = function checkWebSocketHost(host) {\n var protocol = PROTOCOL_PATTERN.test(host) ? '' : 'wss://';\n return \"\".concat(protocol).concat(host);\n};\nexports.checkWebSocketHost = checkWebSocketHost;\nvar destructResponse = function destructResponse(response, nodeId) {\n if (nodeId === void 0) {\n nodeId = null;\n }\n var _a = response.result,\n result = _a === void 0 ? {} : _a,\n error = response.error;\n if (error) {\n return {\n error: error\n };\n }\n var _b = result.result,\n nestedResult = _b === void 0 ? null : _b;\n if (nestedResult === null) {\n if (nodeId !== null) {\n result.node_id = nodeId;\n }\n return {\n result: result\n };\n }\n var _c = nestedResult.code,\n code = _c === void 0 ? null : _c,\n _d = nestedResult.node_id,\n node_id = _d === void 0 ? null : _d,\n _e = nestedResult.result,\n vertoResult = _e === void 0 ? null : _e;\n if (code && code !== '200') {\n return {\n error: nestedResult\n };\n }\n if (vertoResult) {\n return (0, exports.destructResponse)(vertoResult, node_id);\n }\n return {\n result: nestedResult\n };\n};\nexports.destructResponse = destructResponse;\nvar randomInt = function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexports.randomInt = randomInt;\nvar normalizeAsyncAPIs = function normalizeAsyncAPIs(target, promisifyTargetMethods, asyncAlternativeSuffix) {\n if (promisifyTargetMethods === void 0) {\n promisifyTargetMethods = [];\n }\n if (asyncAlternativeSuffix === void 0) {\n asyncAlternativeSuffix = 'Async';\n }\n var promisify = new Set(promisifyTargetMethods);\n return new Proxy(target, {\n get: function get(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor && descriptor.get) {\n return Reflect.get(obj, prop);\n }\n if (typeof obj[prop] === 'function') {\n var impl_1 = obj[\"\".concat(String(prop)).concat(asyncAlternativeSuffix)] || obj[prop];\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = impl_1.apply(obj, args);\n if (promisify.has(String(prop)) && !(result instanceof Promise)) {\n return Promise.resolve(result);\n }\n return result;\n };\n }\n return Reflect.get(obj, prop);\n },\n set: function set(obj, prop, value) {\n return Reflect.set(obj, prop, value);\n }\n });\n};\nexports.normalizeAsyncAPIs = normalizeAsyncAPIs;\nvar stackTrace = function stackTrace() {\n var obj = {\n stack: null\n };\n if (Boolean(Error.captureStackTrace)) {\n Error.captureStackTrace(obj, exports.stackTrace);\n }\n return (obj.stack || '').split('\\n').slice(2).join('\\n');\n};\nexports.stackTrace = stackTrace;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/helpers.ts?"); + +/***/ }), + +/***/ "../common/src/util/interfaces.ts": +/*!****************************************!*\ + !*** ../common/src/util/interfaces.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/interfaces.ts?"); + +/***/ }), + +/***/ "../common/src/util/logger.ts": +/*!************************************!*\ + !*** ../common/src/util/logger.ts ***! + \************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar loglevel_1 = __importDefault(__webpack_require__(/*! loglevel */ \"../common/node_modules/loglevel/lib/loglevel.js\"));\nvar datetime = function datetime() {\n return new Date().toISOString().replace('T', ' ').replace('Z', '');\n};\nvar logger = loglevel_1[\"default\"].getLogger('signalwire');\nvar originalFactory = logger.methodFactory;\nlogger.methodFactory = function (methodName, logLevel, loggerName) {\n var rawMethod = originalFactory(methodName, logLevel, loggerName);\n return function () {\n var messages = [datetime(), '-'];\n for (var i = 0; i < arguments.length; i++) {\n messages.push(arguments[i]);\n }\n rawMethod.apply(undefined, messages);\n };\n};\nlogger.setLevel(logger.getLevel());\nexports[\"default\"] = logger;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/logger.ts?"); + +/***/ }), + +/***/ "../common/src/util/storage/index.ts": +/*!*******************************************!*\ + !*** ../common/src/util/storage/index.ts ***! + \*******************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sessionStorage = exports.localStorage = void 0;\nvar helpers_1 = __webpack_require__(/*! ../helpers */ \"../common/src/util/helpers.ts\");\nvar _inNode = function _inNode() {\n return typeof window === 'undefined' && typeof process !== 'undefined';\n};\nvar _get = function _get(storageType, key) {\n return __awaiter(void 0, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n res = window[storageType].getItem((0, helpers_1.mutateStorageKey)(key));\n return [2, (0, helpers_1.safeParseJson)(res)];\n });\n });\n};\nvar _set = function _set(storageType, key, value) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n if (_typeof(value) === 'object') {\n value = JSON.stringify(value);\n }\n window[storageType].setItem((0, helpers_1.mutateStorageKey)(key), value);\n return [2];\n });\n });\n};\nvar _remove = function _remove(storageType, key) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n return [2, window[storageType].removeItem((0, helpers_1.mutateStorageKey)(key))];\n });\n });\n};\nexports.localStorage = {\n getItem: function getItem(key) {\n return _get('localStorage', key);\n },\n setItem: function setItem(key, value) {\n return _set('localStorage', key, value);\n },\n removeItem: function removeItem(key) {\n return _remove('localStorage', key);\n }\n};\nexports.sessionStorage = {\n getItem: function getItem(key) {\n return _get('sessionStorage', key);\n },\n setItem: function setItem(key, value) {\n return _set('sessionStorage', key, value);\n },\n removeItem: function removeItem(key) {\n return _remove('sessionStorage', key);\n }\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/storage/index.ts?"); + +/***/ }), + +/***/ "../common/src/util/webrtc/index.ts": +/*!******************************************!*\ + !*** ../common/src/util/webrtc/index.ts ***! + \******************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setMediaElementSinkId = exports.toggleMuteMediaElement = exports.unmuteMediaElement = exports.muteMediaElement = exports.stopStream = exports.sdpToJsonHack = exports.detachMediaStream = exports.attachMediaStream = exports.streamIsValid = exports.getSupportedConstraints = exports.enumerateDevices = exports.getDisplayMedia = exports.getUserMedia = exports.RTCPeerConnection = void 0;\nvar helpers_1 = __webpack_require__(/*! ../helpers */ \"../common/src/util/helpers.ts\");\nvar RTCPeerConnection = function RTCPeerConnection(config) {\n return new window.RTCPeerConnection(config);\n};\nexports.RTCPeerConnection = RTCPeerConnection;\nvar getUserMedia = function getUserMedia(constraints) {\n return navigator.mediaDevices.getUserMedia(constraints);\n};\nexports.getUserMedia = getUserMedia;\nvar getDisplayMedia = function getDisplayMedia(constraints) {\n return navigator.mediaDevices.getDisplayMedia(constraints);\n};\nexports.getDisplayMedia = getDisplayMedia;\nvar enumerateDevices = function enumerateDevices() {\n return navigator.mediaDevices.enumerateDevices();\n};\nexports.enumerateDevices = enumerateDevices;\nvar getSupportedConstraints = function getSupportedConstraints() {\n return navigator.mediaDevices.getSupportedConstraints();\n};\nexports.getSupportedConstraints = getSupportedConstraints;\nvar streamIsValid = function streamIsValid(stream) {\n return stream && stream instanceof MediaStream;\n};\nexports.streamIsValid = streamIsValid;\nvar attachMediaStream = function attachMediaStream(tag, stream) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element === null) {\n return;\n }\n if (!element.getAttribute('autoplay')) {\n element.setAttribute('autoplay', 'autoplay');\n }\n if (!element.getAttribute('playsinline')) {\n element.setAttribute('playsinline', 'playsinline');\n }\n element.srcObject = stream;\n};\nexports.attachMediaStream = attachMediaStream;\nvar detachMediaStream = function detachMediaStream(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.srcObject = null;\n }\n};\nexports.detachMediaStream = detachMediaStream;\nvar muteMediaElement = function muteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = true;\n }\n};\nexports.muteMediaElement = muteMediaElement;\nvar unmuteMediaElement = function unmuteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = false;\n }\n};\nexports.unmuteMediaElement = unmuteMediaElement;\nvar toggleMuteMediaElement = function toggleMuteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = !element.muted;\n }\n};\nexports.toggleMuteMediaElement = toggleMuteMediaElement;\nvar setMediaElementSinkId = function setMediaElementSinkId(tag, deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n var element, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n element = (0, helpers_1.findElementByType)(tag);\n if (element === null) {\n return [2, false];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4, element.setSinkId(deviceId)];\n case 2:\n _a.sent();\n return [2, true];\n case 3:\n error_1 = _a.sent();\n return [2, false];\n case 4:\n return [2];\n }\n });\n });\n};\nexports.setMediaElementSinkId = setMediaElementSinkId;\nvar sdpToJsonHack = function sdpToJsonHack(sdp) {\n return sdp;\n};\nexports.sdpToJsonHack = sdpToJsonHack;\nvar stopStream = function stopStream(stream) {\n if (streamIsValid(stream)) {\n stream.getTracks().forEach(function (t) {\n return t.stop();\n });\n }\n stream = null;\n};\nexports.stopStream = stopStream;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/webrtc/index.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/BaseCall.ts": +/*!****************************************!*\ + !*** ../common/src/webrtc/BaseCall.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Verto_1 = __webpack_require__(/*! ../messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar Peer_1 = __importDefault(__webpack_require__(/*! ./Peer */ \"../common/src/webrtc/Peer.ts\"));\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar LayoutHandler_1 = __webpack_require__(/*! ./LayoutHandler */ \"../common/src/webrtc/LayoutHandler.ts\");\nvar BaseCall = function () {\n function BaseCall(session, opts) {\n var _this = this;\n this.session = session;\n this.id = '';\n this.state = constants_2.State[constants_2.State.New];\n this.prevState = '';\n this.channels = [];\n this.role = constants_2.Role.Participant;\n this.extension = null;\n this._state = constants_2.State.New;\n this._prevState = constants_2.State.New;\n this.gotAnswer = false;\n this.gotEarly = false;\n this._lastSerno = 0;\n this._targetNodeId = null;\n this._iceTimeout = null;\n this._iceDone = false;\n this._checkConferenceSerno = function (serno) {\n var check = serno < 0 || !_this._lastSerno || _this._lastSerno && serno === _this._lastSerno + 1;\n if (check && serno >= 0) {\n _this._lastSerno = serno;\n }\n return check;\n };\n var iceServers = session.iceServers,\n speakerId = session.speaker,\n micId = session.micId,\n micLabel = session.micLabel,\n camId = session.camId,\n camLabel = session.camLabel,\n localElement = session.localElement,\n remoteElement = session.remoteElement,\n _a = session.mediaConstraints,\n audio = _a.audio,\n video = _a.video;\n this.options = Object.assign({}, constants_2.DEFAULT_CALL_OPTIONS, {\n audio: audio,\n video: video,\n iceServers: iceServers,\n localElement: localElement,\n remoteElement: remoteElement,\n micId: micId,\n micLabel: micLabel,\n camId: camId,\n camLabel: camLabel,\n speakerId: speakerId\n }, opts);\n this._onMediaError = this._onMediaError.bind(this);\n this._init();\n }\n Object.defineProperty(BaseCall.prototype, \"nodeId\", {\n get: function get() {\n return this._targetNodeId;\n },\n set: function set(what) {\n this._targetNodeId = what;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"localStream\", {\n get: function get() {\n return this.options.localStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"remoteStream\", {\n get: function get() {\n return this.options.remoteStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"memberChannel\", {\n get: function get() {\n return \"conference-member.\".concat(this.id);\n },\n enumerable: false,\n configurable: true\n });\n BaseCall.prototype.invite = function () {\n this.direction = constants_2.Direction.Outbound;\n this.peer = new Peer_1[\"default\"](constants_2.PeerType.Offer, this.options);\n this._registerPeerEvents();\n };\n BaseCall.prototype.answer = function (params) {\n if (params && (params === null || params === void 0 ? void 0 : params.iceTransportPolicy)) {\n this.options.iceTransportPolicy = params === null || params === void 0 ? void 0 : params.iceTransportPolicy;\n }\n this.direction = constants_2.Direction.Inbound;\n this.peer = new Peer_1[\"default\"](constants_2.PeerType.Answer, this.options);\n this._registerPeerEvents();\n };\n BaseCall.prototype.applyMediaConstraints = function (params) {\n var _this = this;\n var mediaParams = params.mediaParams;\n if (mediaParams) {\n Object.keys(mediaParams).forEach(function (kind) {\n return _this.peer.applyMediaConstraints(kind, mediaParams[kind]);\n });\n }\n };\n BaseCall.prototype.hangup = function (params, execute) {\n var _this = this;\n if (params === void 0) {\n params = {};\n }\n if (execute === void 0) {\n execute = true;\n }\n logger_1[\"default\"].trace('hangup requested with execute:', execute);\n this.cause = params.cause || 'NORMAL_CLEARING';\n this.causeCode = params.causeCode || 16;\n this.setState(constants_2.State.Hangup);\n var _close = function _close() {\n _this.peer ? _this.peer.instance.close() : null;\n _this.setState(constants_2.State.Destroy);\n };\n if (execute) {\n logger_1[\"default\"].debug(\"execute hangup on call \".concat(this.id, \" with cause:\"), this.cause);\n var bye = new Verto_1.Bye({\n sessid: this.session.sessionid,\n dialogParams: this.options\n });\n logger_1[\"default\"].trace('Verto Bye stacktrace:', (0, helpers_2.stackTrace)());\n this._execute(bye)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('verto.bye failed!', error);\n }).then(_close.bind(this));\n } else {\n _close();\n }\n };\n BaseCall.prototype.transfer = function (destination) {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'transfer',\n destination: destination,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.replace = function (replaceCallID) {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'replace',\n replaceCallID: replaceCallID,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.hold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'hold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.unhold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'unhold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.toggleHold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'toggleHold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.dtmf = function (dtmf) {\n var msg = new Verto_1.Info({\n sessid: this.session.sessionid,\n dtmf: dtmf,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.message = function (to, body) {\n var msg = {\n from: this.session.options.login,\n to: to,\n body: body\n };\n var info = new Verto_1.Info({\n sessid: this.session.sessionid,\n msg: msg,\n dialogParams: this.options\n });\n this._execute(info);\n };\n BaseCall.prototype.muteAudio = function () {\n (0, helpers_1.disableAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.unmuteAudio = function () {\n (0, helpers_1.enableAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.toggleAudioMute = function () {\n (0, helpers_1.toggleAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.setAudioInDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var instance, senders, sender, newStream_1, audioTrack, localStream, oldAudioTracks;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n instance = this.peer.instance;\n return [4, instance.getSenders()];\n case 1:\n senders = _a.sent();\n sender = senders.find(function (_a) {\n var kind = _a.track.kind;\n return kind === 'audio';\n });\n if (!sender) return [3, 3];\n return [4, (0, WebRTC_1.getUserMedia)({\n audio: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 2:\n newStream_1 = _a.sent();\n audioTrack = newStream_1.getAudioTracks()[0];\n localStream = this.options.localStream;\n oldAudioTracks = localStream.getAudioTracks();\n if (oldAudioTracks.length > 0) {\n audioTrack.enabled = oldAudioTracks[0].enabled;\n }\n sender.replaceTrack(audioTrack);\n this.options.micId = deviceId;\n localStream.getAudioTracks().forEach(function (t) {\n return t.stop();\n });\n localStream.getVideoTracks().forEach(function (t) {\n return newStream_1.addTrack(t);\n });\n this.options.localStream = newStream_1;\n _a.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype.muteVideo = function () {\n (0, helpers_1.disableVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.unmuteVideo = function () {\n (0, helpers_1.enableVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.toggleVideoMute = function () {\n (0, helpers_1.toggleVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.setVideoDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var instance, senders, sender, newStream_2, videoTrack, _a, localElement, localStream, oldVideoTracks;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n instance = this.peer.instance;\n return [4, instance.getSenders()];\n case 1:\n senders = _b.sent();\n sender = senders.find(function (_a) {\n var kind = _a.track.kind;\n return kind === 'video';\n });\n if (!sender) return [3, 3];\n return [4, (0, WebRTC_1.getUserMedia)({\n video: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 2:\n newStream_2 = _b.sent();\n videoTrack = newStream_2.getVideoTracks()[0];\n _a = this.options, localElement = _a.localElement, localStream = _a.localStream;\n oldVideoTracks = localStream.getVideoTracks();\n if (oldVideoTracks.length > 0) {\n videoTrack.enabled = oldVideoTracks[0].enabled;\n }\n sender.replaceTrack(videoTrack);\n (0, WebRTC_1.attachMediaStream)(localElement, newStream_2);\n this.options.camId = deviceId;\n localStream.getAudioTracks().forEach(function (t) {\n return newStream_2.addTrack(t);\n });\n localStream.getVideoTracks().forEach(function (t) {\n return t.stop();\n });\n this.options.localStream = newStream_2;\n _b.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype.deaf = function () {\n (0, helpers_1.disableAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.undeaf = function () {\n (0, helpers_1.enableAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.toggleDeaf = function () {\n (0, helpers_1.toggleAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.setState = function (state) {\n var _this = this;\n this._prevState = this._state;\n this._state = state;\n this.state = constants_2.State[this._state].toLowerCase();\n this.prevState = constants_2.State[this._prevState].toLowerCase();\n logger_1[\"default\"].info(\"Call \".concat(this.id, \" state change from \").concat(this.prevState, \" to \").concat(this.state));\n this._dispatchNotification({\n type: constants_2.NOTIFICATION_TYPE.callUpdate,\n call: this\n });\n switch (state) {\n case constants_2.State.Purge:\n logger_1[\"default\"].debug(\"Purging call \".concat(this.id));\n this.hangup({\n cause: 'PURGE',\n causeCode: '01'\n }, false);\n break;\n case constants_2.State.Active:\n {\n setTimeout(function () {\n var _a = _this.options,\n remoteElement = _a.remoteElement,\n speakerId = _a.speakerId;\n if (remoteElement && speakerId) {\n (0, WebRTC_1.setMediaElementSinkId)(remoteElement, speakerId);\n }\n }, 0);\n break;\n }\n case constants_2.State.Destroy:\n this._finalize();\n break;\n }\n };\n BaseCall.prototype.handleMessage = function (msg) {\n var method = msg.method,\n params = msg.params;\n switch (method) {\n case constants_2.VertoMethod.Answer:\n {\n this.gotAnswer = true;\n if (this._state >= constants_2.State.Active) {\n return;\n }\n if (this._state >= constants_2.State.Early) {\n this.setState(constants_2.State.Active);\n }\n if (!this.gotEarly) {\n this._onRemoteSdp(params.sdp);\n }\n break;\n }\n case constants_2.VertoMethod.Media:\n {\n if (this._state >= constants_2.State.Early) {\n return;\n }\n this.gotEarly = true;\n this._onRemoteSdp(params.sdp);\n break;\n }\n case constants_2.VertoMethod.Display:\n case constants_2.VertoMethod.Attach:\n {\n var displayName = params.display_name,\n displayNumber = params.display_number,\n display_direction = params.display_direction;\n this.extension = displayNumber;\n var displayDirection = display_direction === constants_2.Direction.Inbound ? constants_2.Direction.Outbound : constants_2.Direction.Inbound;\n var notification = {\n type: constants_2.NOTIFICATION_TYPE[method],\n call: this,\n displayName: displayName,\n displayNumber: displayNumber,\n displayDirection: displayDirection\n };\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n break;\n }\n case constants_2.VertoMethod.Info:\n case constants_2.VertoMethod.Event:\n {\n var notification = __assign(__assign({}, params), {\n type: constants_2.NOTIFICATION_TYPE.generic,\n call: this\n });\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n break;\n }\n case constants_2.VertoMethod.MediaParams:\n this.applyMediaConstraints(params);\n break;\n case constants_2.VertoMethod.Bye:\n logger_1[\"default\"].debug(\"Hanging up call \".concat(this.id));\n this.hangup(params, false);\n break;\n }\n };\n BaseCall.prototype.handleConferenceUpdate = function (packet, initialPvtData) {\n return __awaiter(this, void 0, void 0, function () {\n var action, data, _a, callId, index, _b, chatID, chatChannel, infoChannel, modChannel, laName, conferenceMemberID, role, participants, i;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this._checkConferenceSerno(packet.wireSerno) && packet.name !== initialPvtData.laName) {\n logger_1[\"default\"].error('ConferenceUpdate invalid wireSerno or packet name:', packet);\n return [2, 'INVALID_PACKET'];\n }\n action = packet.action, data = packet.data, _a = packet.hashKey, callId = _a === void 0 ? String(this._lastSerno) : _a, index = packet.arrIndex;\n _b = action;\n switch (_b) {\n case 'bootObj':\n return [3, 1];\n case 'add':\n return [3, 8];\n case 'modify':\n return [3, 9];\n case 'del':\n return [3, 10];\n case 'clear':\n return [3, 11];\n }\n return [3, 12];\n case 1:\n this._lastSerno = 0;\n chatID = initialPvtData.chatID, chatChannel = initialPvtData.chatChannel, infoChannel = initialPvtData.infoChannel, modChannel = initialPvtData.modChannel, laName = initialPvtData.laName, conferenceMemberID = initialPvtData.conferenceMemberID, role = initialPvtData.role;\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Join,\n conferenceName: laName,\n participantId: Number(conferenceMemberID),\n role: role\n });\n if (!chatChannel) return [3, 3];\n return [4, this._subscribeConferenceChat(chatChannel)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n if (!infoChannel) return [3, 5];\n return [4, this._subscribeConferenceInfo(infoChannel)];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5:\n if (!(modChannel && role === constants_2.Role.Moderator)) return [3, 7];\n return [4, this._subscribeConferenceModerator(modChannel)];\n case 6:\n _c.sent();\n _c.label = 7;\n case 7:\n participants = [];\n for (i in data) {\n participants.push(__assign({\n callId: data[i][0],\n index: Number(i)\n }, (0, helpers_2.mutateLiveArrayData)(data[i][1])));\n }\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Bootstrap,\n participants: participants\n });\n return [3, 13];\n case 8:\n {\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Add,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n }\n _c.label = 9;\n case 9:\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Modify,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n case 10:\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Delete,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n case 11:\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Clear\n });\n return [3, 13];\n case 12:\n this._dispatchConferenceUpdate({\n action: action,\n data: data,\n callId: callId,\n index: index\n });\n return [3, 13];\n case 13:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._addChannel = function (channel) {\n if (!this.channels.includes(channel)) {\n this.channels.push(channel);\n }\n var protocol = this.session.relayProtocol;\n if (this.session._existsSubscription(protocol, channel)) {\n this.session.subscriptions[protocol][channel] = __assign(__assign({}, this.session.subscriptions[protocol][channel]), {\n callId: this.id\n });\n }\n };\n BaseCall.prototype._subscribeConferenceChat = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var _a = params.data,\n direction = _a.direction,\n participantNumber = _a.from,\n participantName = _a.fromDisplay,\n messageText = _a.message,\n messageType = _a.type;\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.ChatMessage,\n direction: direction,\n participantNumber: participantNumber,\n participantName: participantName,\n messageText: messageText,\n messageType: messageType,\n messageId: params.eventSerno\n });\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfChat subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this._addChannel(channel);\n Object.defineProperties(this, {\n sendChatMessage: {\n configurable: true,\n value: function value(message, type) {\n _this.session.vertoBroadcast({\n nodeId: _this.nodeId,\n channel: channel,\n data: {\n action: 'send',\n message: message,\n type: type\n }\n });\n }\n }\n });\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._subscribeConferenceInfo = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var eventData = params.eventData;\n switch (eventData.contentType) {\n case 'layout-info':\n eventData.callID = _this.id;\n (0, LayoutHandler_1.MCULayoutEventHandler)(_this.session, eventData);\n break;\n default:\n logger_1[\"default\"].error('Conference-Info unknown contentType', params);\n }\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfInfo subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this._addChannel(channel);\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._confControl = function (channel, params) {\n if (params === void 0) {\n params = {};\n }\n var data = __assign({\n application: 'conf-control',\n callID: this.id,\n value: null\n }, params);\n this.session.vertoBroadcast({\n nodeId: this.nodeId,\n channel: channel,\n data: data\n });\n };\n BaseCall.prototype._subscribeConferenceModerator = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var _modCommand, _videoRequired, tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _modCommand = function _modCommand(command, memberID, value) {\n if (memberID === void 0) {\n memberID = null;\n }\n if (value === void 0) {\n value = null;\n }\n var id = parseInt(memberID) || null;\n _this._confControl(channel, {\n command: command,\n id: id,\n value: value\n });\n };\n _videoRequired = function _videoRequired() {\n var video = _this.options.video;\n if (typeof video === 'boolean' && !video || _typeof(video) === 'object' && (0, helpers_2.objEmpty)(video)) {\n throw \"Conference \".concat(_this.id, \" has no video!\");\n }\n };\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var data = params.data;\n switch (data['conf-command']) {\n case 'list-videoLayouts':\n if (data.responseData) {\n var tmp_1 = JSON.stringify(data.responseData).replace(/IDS\"/g, 'Ids\"');\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.LayoutList,\n layouts: JSON.parse(tmp_1)\n });\n }\n break;\n default:\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.ModCmdResponse,\n command: data['conf-command'],\n response: data.response\n });\n }\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfMod subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this.role = constants_2.Role.Moderator;\n this._addChannel(channel);\n Object.defineProperties(this, {\n listVideoLayouts: {\n configurable: true,\n value: function value() {\n _modCommand('list-videoLayouts');\n }\n },\n playMedia: {\n configurable: true,\n value: function value(file) {\n _modCommand('play', null, file);\n }\n },\n stopMedia: {\n configurable: true,\n value: function value() {\n _modCommand('stop', null, 'all');\n }\n },\n deaf: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('deaf', memberID);\n }\n },\n undeaf: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('undeaf', memberID);\n }\n },\n startRecord: {\n configurable: true,\n value: function value(file) {\n _modCommand('recording', null, ['start', file]);\n }\n },\n stopRecord: {\n configurable: true,\n value: function value() {\n _modCommand('recording', null, ['stop', 'all']);\n }\n },\n snapshot: {\n configurable: true,\n value: function value(file) {\n _videoRequired();\n _modCommand('vid-write-png', null, file);\n }\n },\n setVideoLayout: {\n configurable: true,\n value: function value(layout, canvasID) {\n _videoRequired();\n var value = canvasID ? [layout, canvasID] : layout;\n _modCommand('vid-layout', null, value);\n }\n },\n kick: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('kick', memberID);\n }\n },\n muteMic: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('tmute', memberID);\n }\n },\n muteVideo: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('tvmute', memberID);\n }\n },\n presenter: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('vid-res-id', memberID, 'presenter');\n }\n },\n videoFloor: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('vid-floor', memberID, 'force');\n }\n },\n banner: {\n configurable: true,\n value: function value(memberID, text) {\n _videoRequired();\n _modCommand('vid-banner', memberID, encodeURI(text));\n }\n },\n volumeDown: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_out', memberID, 'down');\n }\n },\n volumeUp: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_out', memberID, 'up');\n }\n },\n gainDown: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_in', memberID, 'down');\n }\n },\n gainUp: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_in', memberID, 'up');\n }\n },\n transfer: {\n configurable: true,\n value: function value(memberID, exten) {\n _modCommand('transfer', memberID, exten);\n }\n }\n });\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._handleChangeHoldStateSuccess = function (response) {\n response.holdState === 'active' ? this.setState(constants_2.State.Active) : this.setState(constants_2.State.Held);\n return true;\n };\n BaseCall.prototype._handleChangeHoldStateError = function (error) {\n logger_1[\"default\"].error(\"Failed to \".concat(error.action, \" on call \").concat(this.id));\n return false;\n };\n BaseCall.prototype._onRemoteSdp = function (remoteSdp) {\n var _this = this;\n var sdp = (0, helpers_1.sdpMediaOrderHack)(remoteSdp, this.peer.instance.localDescription.sdp);\n if (this.options.useStereo) {\n sdp = (0, helpers_1.sdpStereoHack)(sdp);\n }\n var sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Answer\n });\n this.peer.instance.setRemoteDescription(sessionDescr).then(function () {\n if (_this.gotEarly) {\n _this.setState(constants_2.State.Early);\n }\n if (_this.gotAnswer) {\n _this.setState(constants_2.State.Active);\n }\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error('Call setRemoteDescription Error: ', error);\n _this.hangup();\n });\n };\n BaseCall.prototype._requestAnotherLocalDescription = function () {\n logger_1[\"default\"].debug('_requestAnotherLocalDescription');\n if ((0, helpers_2.isFunction)(this.peer.onSdpReadyTwice)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, new Error('SDP without candidates for the second time!'), this.session.uuid);\n return;\n }\n Object.defineProperty(this.peer, 'onSdpReadyTwice', {\n value: this._onIceSdp.bind(this)\n });\n this._iceDone = false;\n this.peer.startNegotiation();\n };\n BaseCall.prototype._onIceSdp = function (data) {\n var _this = this;\n logger_1[\"default\"].debug('_onIceSdp');\n if (this._iceTimeout) {\n clearTimeout(this._iceTimeout);\n }\n this._iceTimeout = null;\n this._iceDone = true;\n this.peer.resetNegotiating();\n var sdp = data.sdp,\n type = data.type;\n if (sdp.indexOf('candidate') === -1) {\n this._requestAnotherLocalDescription();\n return;\n }\n var msg = null;\n var tmpParams = {\n sessid: this.session.sessionid,\n sdp: sdp,\n dialogParams: this.options\n };\n switch (type) {\n case constants_2.PeerType.Offer:\n this.setState(constants_2.State.Requesting);\n msg = new Verto_1.Invite(tmpParams);\n break;\n case constants_2.PeerType.Answer:\n this.setState(constants_2.State.Answering);\n msg = this.options.attach === true ? new Verto_1.Attach(tmpParams) : new Verto_1.Answer(tmpParams);\n break;\n default:\n logger_1[\"default\"].error(\"\".concat(this.id, \" - Unknown local SDP type:\"), data);\n return this.hangup({}, false);\n }\n this._execute(msg).then(function (response) {\n var _a = response.node_id,\n node_id = _a === void 0 ? null : _a;\n _this._targetNodeId = node_id;\n type === constants_2.PeerType.Offer ? _this.setState(constants_2.State.Trying) : _this.setState(constants_2.State.Active);\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error(\"\".concat(_this.id, \" - Sending \").concat(type, \" error:\"), error);\n _this.hangup();\n });\n };\n BaseCall.prototype._registerPeerEvents = function () {\n var _this = this;\n var instance = this.peer.instance;\n this._iceDone = false;\n instance.onicecandidate = function (event) {\n if (_this._iceDone) {\n return;\n }\n if (_this._iceTimeout === null) {\n logger_1[\"default\"].debug('Setting _iceTimeout to 1 second');\n _this._iceTimeout = setTimeout(function () {\n return _this._onIceSdp(instance.localDescription);\n }, 1000);\n }\n if (event.candidate) {\n logger_1[\"default\"].debug('IceCandidate: address:', event.candidate.address, ' - port:', event.candidate.port, ' - type:', event.candidate.type);\n } else {\n _this._onIceSdp(instance.localDescription);\n }\n };\n instance.addEventListener('track', function (event) {\n _this.options.remoteStream = event.streams[0];\n var _a = _this.options,\n remoteElement = _a.remoteElement,\n remoteStream = _a.remoteStream,\n screenShare = _a.screenShare;\n if (screenShare === false) {\n (0, WebRTC_1.attachMediaStream)(remoteElement, remoteStream);\n }\n });\n instance.addEventListener('addstream', function (event) {\n _this.options.remoteStream = event.stream;\n });\n };\n BaseCall.prototype._onMediaError = function (error) {\n this._dispatchNotification({\n type: constants_2.NOTIFICATION_TYPE.userMediaError,\n error: error\n });\n logger_1[\"default\"].debug(\"Call \".concat(this.id, \" media error\"));\n this.hangup({}, false);\n };\n BaseCall.prototype._dispatchConferenceUpdate = function (params) {\n this._dispatchNotification(__assign({\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n call: this\n }, params));\n };\n BaseCall.prototype._dispatchNotification = function (notification) {\n if (this.options.screenShare === true) {\n return;\n }\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id, false)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n };\n BaseCall.prototype._execute = function (msg) {\n if (this.nodeId) {\n msg.targetNodeId = this.nodeId;\n }\n return this.session.execute(msg);\n };\n BaseCall.prototype._init = function () {\n var _a = this.options,\n id = _a.id,\n userVariables = _a.userVariables,\n remoteCallerNumber = _a.remoteCallerNumber,\n onNotification = _a.onNotification;\n if (!id) {\n this.options.id = (0, uuid_1.v4)();\n }\n this.id = this.options.id;\n if (!userVariables || (0, helpers_2.objEmpty)(userVariables)) {\n this.options.userVariables = this.session.options.userVariables || {};\n }\n if (!remoteCallerNumber) {\n this.options.remoteCallerNumber = this.options.destinationNumber;\n }\n this.session.calls[this.id] = this;\n (0, Handler_1.register)(constants_1.SwEvent.MediaError, this._onMediaError, this.id);\n if ((0, helpers_2.isFunction)(onNotification)) {\n (0, Handler_1.register)(constants_1.SwEvent.Notification, onNotification.bind(this), this.id);\n }\n this.setState(constants_2.State.New);\n logger_1[\"default\"].info('New Call with Options:', this.options);\n };\n BaseCall.prototype._finalize = function () {\n var _a = this.options,\n remoteStream = _a.remoteStream,\n localStream = _a.localStream,\n remoteElement = _a.remoteElement,\n localElement = _a.localElement;\n (0, WebRTC_1.stopStream)(remoteStream);\n (0, WebRTC_1.stopStream)(localStream);\n if (this.options.screenShare !== true) {\n (0, WebRTC_1.detachMediaStream)(remoteElement);\n (0, WebRTC_1.detachMediaStream)(localElement);\n }\n (0, Handler_1.deRegister)(constants_1.SwEvent.MediaError, null, this.id);\n this.peer = null;\n this.session.calls[this.id] = null;\n delete this.session.calls[this.id];\n };\n return BaseCall;\n}();\nexports[\"default\"] = BaseCall;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/BaseCall.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/Call.ts": +/*!************************************!*\ + !*** ../common/src/webrtc/Call.ts ***! + \************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar BaseCall_1 = __importDefault(__webpack_require__(/*! ./BaseCall */ \"../common/src/webrtc/BaseCall.ts\"));\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar Call = function (_super) {\n __extends(Call, _super);\n function Call() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._statsInterval = null;\n return _this;\n }\n Call.prototype.hangup = function (params, execute) {\n if (params === void 0) {\n params = {};\n }\n if (execute === void 0) {\n execute = true;\n }\n if (this.screenShare instanceof Call) {\n this.screenShare.hangup(params, execute);\n }\n _super.prototype.hangup.call(this, params, execute);\n };\n Call.prototype.startScreenShare = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var displayStream, _a, remoteCallerName, remoteCallerNumber, callerName, callerNumber, options;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4, (0, WebRTC_1.getDisplayMedia)({\n video: true\n })];\n case 1:\n displayStream = _b.sent();\n displayStream.getTracks().forEach(function (t) {\n t.addEventListener('ended', function () {\n if (_this.screenShare) {\n _this.screenShare.hangup();\n }\n });\n });\n _a = this.options, remoteCallerName = _a.remoteCallerName, remoteCallerNumber = _a.remoteCallerNumber, callerName = _a.callerName, callerNumber = _a.callerNumber;\n options = __assign({\n screenShare: true,\n localStream: displayStream,\n destinationNumber: \"\".concat(this.extension, \"-screen\"),\n remoteCallerName: remoteCallerName,\n remoteCallerNumber: \"\".concat(remoteCallerNumber, \"-screen\"),\n callerName: \"\".concat(callerName, \" (Screen)\"),\n callerNumber: \"\".concat(callerNumber, \" (Screen)\")\n }, opts);\n this.screenShare = new Call(this.session, options);\n this.screenShare.invite();\n return [2, this.screenShare];\n }\n });\n });\n };\n Call.prototype.stopScreenShare = function () {\n if (this.screenShare instanceof Call) {\n this.screenShare.hangup();\n }\n };\n Call.prototype.setAudioOutDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, remoteElement, speakerId;\n return __generator(this, function (_b) {\n this.options.speakerId = deviceId;\n _a = this.options, remoteElement = _a.remoteElement, speakerId = _a.speakerId;\n if (remoteElement && speakerId) {\n return [2, (0, WebRTC_1.setMediaElementSinkId)(remoteElement, speakerId)];\n }\n return [2, false];\n });\n });\n };\n Call.prototype._finalize = function () {\n this._stats(false);\n _super.prototype._finalize.call(this);\n };\n Call.prototype._stats = function (what) {\n var _this = this;\n if (what === void 0) {\n what = true;\n }\n if (what === false) {\n return clearInterval(this._statsInterval);\n }\n logger_1[\"default\"].setLevel(2);\n this._statsInterval = window.setInterval(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var stats, statsOutput, invalidReport, invalidStat;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this.peer.instance.getStats(null)];\n case 1:\n stats = _a.sent();\n statsOutput = '';\n invalidReport = ['certificate', 'codec', 'peer-connection', 'stream', 'local-candidate', 'remote-candidate'];\n invalidStat = ['id', 'type', 'timestamp'];\n stats.forEach(function (report) {\n if (invalidReport.includes(report.type)) {\n return;\n }\n statsOutput += \"\\n\".concat(report.type, \"\\n\");\n Object.keys(report).forEach(function (statName) {\n if (!invalidStat.includes(statName)) {\n statsOutput += \"\\t\".concat(statName, \": \").concat(report[statName], \"\\n\");\n }\n });\n });\n logger_1[\"default\"].info(statsOutput);\n return [2];\n }\n });\n });\n }, 2000);\n };\n return Call;\n}(BaseCall_1[\"default\"]);\nexports[\"default\"] = Call;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/Call.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/CantinaAuth.ts": +/*!*******************************************!*\ + !*** ../common/src/webrtc/CantinaAuth.ts ***! + \*******************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar FETCH_OPTIONS = {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n }\n};\nvar CantinaAuth = function () {\n function CantinaAuth(params) {\n var _this = this;\n if (params === void 0) {\n params = {};\n }\n this.params = params;\n this.baseUrl = 'https://cantina-backend.signalwire.com';\n this._fetch = function (url, options) {\n return fetch(url, options).then(function (response) {\n return __awaiter(_this, void 0, void 0, function () {\n var payload, errorMessage, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, response.json()];\n case 1:\n payload = _a.sent();\n if (response.status >= 200 && response.status < 300) {\n return [2, payload];\n } else {\n errorMessage = \"HTTP Request failed with status \".concat(response.status);\n error = new Error(errorMessage);\n error.payload = payload;\n return [2, Promise.reject(error)];\n }\n return [2];\n }\n });\n });\n });\n };\n var _a = params.hostname,\n hostname = _a === void 0 ? location.hostname : _a;\n this.hostname = hostname;\n }\n CantinaAuth.prototype.userLogin = function (username, password) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/login/user\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n username: username,\n password: password,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('userLogin response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.guestLogin = function (name, email, token) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/login/guest\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n name: name,\n email: email,\n token: token,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('guestLogin response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.refresh = function () {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/refresh\"), __assign(__assign({}, FETCH_OPTIONS), {\n method: 'PUT',\n body: JSON.stringify({\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('refresh response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.checkInviteToken = function (token) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/check-token\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n token: token,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('checkInviteToken response', response);\n return [2, response];\n }\n });\n });\n };\n return CantinaAuth;\n}();\nexports[\"default\"] = CantinaAuth;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/CantinaAuth.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/LayoutHandler.ts": +/*!*********************************************!*\ + !*** ../common/src/webrtc/LayoutHandler.ts ***! + \*********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MCULayoutEventHandler = void 0;\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar constants_2 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar MCULayoutEventHandler = function MCULayoutEventHandler(session, eventData) {\n var contentType = eventData.contentType,\n canvasType = eventData.canvasType,\n callID = eventData.callID,\n _a = eventData.canvasInfo,\n canvasInfo = _a === void 0 ? null : _a,\n _b = eventData.currentLayerIdx,\n currentLayerIdx = _b === void 0 ? -1 : _b;\n if (canvasInfo && canvasType !== 'mcu-personal-canvas') {\n delete canvasInfo.memberID;\n }\n var data = {\n type: constants_1.NOTIFICATION_TYPE.conferenceUpdate,\n call: session.calls[callID],\n canvasInfo: _clearCanvasInfo(canvasInfo),\n currentLayerIdx: currentLayerIdx\n };\n switch (contentType) {\n case 'layer-info':\n {\n var notification = __assign({\n action: constants_1.ConferenceAction.LayerInfo\n }, data);\n (0, Handler_1.trigger)(constants_2.SwEvent.Notification, notification, session.uuid);\n break;\n }\n case 'layout-info':\n {\n var notification = __assign({\n action: constants_1.ConferenceAction.LayoutInfo\n }, data);\n (0, Handler_1.trigger)(constants_2.SwEvent.Notification, notification, session.uuid);\n break;\n }\n }\n};\nexports.MCULayoutEventHandler = MCULayoutEventHandler;\nvar _clearCanvasInfo = function _clearCanvasInfo(canvasInfo) {\n var tmp = JSON.stringify(canvasInfo).replace(/memberID/g, 'participantId').replace(/ID\"/g, 'Id\"').replace(/POS\"/g, 'Pos\"');\n return (0, helpers_1.safeParseJson)(tmp);\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/LayoutHandler.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/Peer.ts": +/*!************************************!*\ + !*** ../common/src/webrtc/Peer.ts ***! + \************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_3 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_4 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar Peer = function () {\n function Peer(type, options) {\n this.type = type;\n this.options = options;\n this.onSdpReadyTwice = null;\n this._negotiating = false;\n logger_1[\"default\"].info('New Peer with type:', this.type, 'Options:', this.options);\n this._constraints = {\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n };\n this._sdpReady = this._sdpReady.bind(this);\n this._init();\n }\n Peer.prototype.resetNegotiating = function () {\n this._negotiating = false;\n };\n Object.defineProperty(Peer.prototype, \"isNegotiating\", {\n get: function get() {\n return this._negotiating;\n },\n enumerable: false,\n configurable: true\n });\n Peer.prototype.startNegotiation = function () {\n this._negotiating = true;\n if (this._isOffer()) {\n this._createOffer();\n } else {\n this._createAnswer();\n }\n };\n Peer.prototype._init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, localElement, _c, localStream, _d, screenShare, tracks, tracks_1, tracks_1_1, track, e_1_1;\n var e_1, _e;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n this.instance = (0, WebRTC_1.RTCPeerConnection)(this._config());\n this.instance.onsignalingstatechange = function (event) {\n switch (_this.instance.signalingState) {\n case 'stable':\n break;\n case 'closed':\n _this.instance = null;\n break;\n default:\n _this._negotiating = true;\n }\n };\n this.instance.onnegotiationneeded = function (event) {\n if (_this._negotiating) {\n logger_1[\"default\"].debug('Skip twice onnegotiationneeded..');\n return;\n }\n _this.startNegotiation();\n };\n _a = this.options;\n return [4, this._retrieveLocalStream()[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.options.id);\n return null;\n })];\n case 1:\n _a.localStream = _f.sent();\n _b = this.options, localElement = _b.localElement, _c = _b.localStream, localStream = _c === void 0 ? null : _c, _d = _b.screenShare, screenShare = _d === void 0 ? false : _d;\n if (!(0, WebRTC_1.streamIsValid)(localStream)) return [3, 12];\n if (!(typeof this.instance.addTrack === 'function')) return [3, 10];\n tracks = localStream.getTracks();\n _f.label = 2;\n case 2:\n _f.trys.push([2, 7, 8, 9]);\n tracks_1 = __values(tracks), tracks_1_1 = tracks_1.next();\n _f.label = 3;\n case 3:\n if (!!tracks_1_1.done) return [3, 6];\n track = tracks_1_1.value;\n return [4, this.instance.addTrack(track, localStream)];\n case 4:\n _f.sent();\n _f.label = 5;\n case 5:\n tracks_1_1 = tracks_1.next();\n return [3, 3];\n case 6:\n return [3, 9];\n case 7:\n e_1_1 = _f.sent();\n e_1 = {\n error: e_1_1\n };\n return [3, 9];\n case 8:\n try {\n if (tracks_1_1 && !tracks_1_1.done && (_e = tracks_1[\"return\"])) _e.call(tracks_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n return [7];\n case 9:\n return [3, 11];\n case 10:\n this.instance.addStream(localStream);\n _f.label = 11;\n case 11:\n if (screenShare !== true) {\n (0, WebRTC_1.muteMediaElement)(localElement);\n (0, WebRTC_1.attachMediaStream)(localElement, localStream);\n }\n return [3, 13];\n case 12:\n if (localStream === null) {\n this.startNegotiation();\n }\n _f.label = 13;\n case 13:\n return [2];\n }\n });\n });\n };\n Peer.prototype._createOffer = function () {\n if (!this._isOffer()) {\n return;\n }\n this.instance.createOffer(this._constraints).then(this._setLocalDescription.bind(this)).then(this._sdpReady)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('Peer _createOffer error:', error);\n });\n };\n Peer.prototype._createAnswer = function () {\n var _this = this;\n if (!this._isAnswer()) {\n return;\n }\n var _a = this.options,\n remoteSdp = _a.remoteSdp,\n useStereo = _a.useStereo;\n var sdp = useStereo ? (0, helpers_1.sdpStereoHack)(remoteSdp) : remoteSdp;\n var sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Offer\n });\n this.instance.setRemoteDescription(sessionDescr).then(function () {\n return _this.instance.createAnswer();\n }).then(this._setLocalDescription.bind(this)).then(this._sdpReady)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('Peer _createAnswer error:', error);\n });\n };\n Peer.prototype._setLocalDescription = function (sessionDescription) {\n var _a = this.options,\n useStereo = _a.useStereo,\n googleMaxBitrate = _a.googleMaxBitrate,\n googleMinBitrate = _a.googleMinBitrate,\n googleStartBitrate = _a.googleStartBitrate;\n if (useStereo) {\n sessionDescription.sdp = (0, helpers_1.sdpStereoHack)(sessionDescription.sdp);\n }\n if (googleMaxBitrate && googleMinBitrate && googleStartBitrate) {\n sessionDescription.sdp = (0, helpers_1.sdpBitrateHack)(sessionDescription.sdp, googleMaxBitrate, googleMinBitrate, googleStartBitrate);\n }\n logger_1[\"default\"].debug('calling setLocalDescription with SDP:', sessionDescription.sdp);\n return this.instance.setLocalDescription(sessionDescription);\n };\n Peer.prototype._sdpReady = function () {\n if ((0, helpers_2.isFunction)(this.onSdpReadyTwice)) {\n this.onSdpReadyTwice(this.instance.localDescription);\n }\n };\n Peer.prototype._getSharedConstraints = function (localConstraints, sdp) {\n var _a, _b;\n if (sdp === void 0) {\n sdp = '';\n }\n var localAudio = (_a = localConstraints === null || localConstraints === void 0 ? void 0 : localConstraints.audio) !== null && _a !== void 0 ? _a : false;\n var remoteAudio = sdp ? (0, helpers_4.sdpHasAudio)(sdp) : false;\n var localVideo = (_b = localConstraints === null || localConstraints === void 0 ? void 0 : localConstraints.video) !== null && _b !== void 0 ? _b : false;\n var remoteVideo = sdp ? (0, helpers_4.sdpHasVideo)(sdp) : false;\n var sharedConstraints = {\n audio: localAudio && remoteAudio,\n video: localVideo && remoteVideo\n };\n return sharedConstraints;\n };\n Peer.prototype._retrieveLocalStream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var localConstraints, sharedConstraints, _a, remoteSdp, useStereo, sdp, sessionDescr;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if ((0, WebRTC_1.streamIsValid)(this.options.localStream)) {\n return [2, this.options.localStream];\n }\n return [4, (0, helpers_1.getMediaConstraints)(this.options)];\n case 1:\n localConstraints = _b.sent();\n sharedConstraints = localConstraints;\n if (this._isAnswer()) {\n _a = this.options, remoteSdp = _a.remoteSdp, useStereo = _a.useStereo;\n sdp = useStereo ? (0, helpers_1.sdpStereoHack)(remoteSdp) : remoteSdp;\n sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Offer\n });\n sharedConstraints = this._getSharedConstraints(localConstraints, sessionDescr.sdp);\n }\n return [2, (0, helpers_1.getUserMedia)(sharedConstraints)];\n }\n });\n });\n };\n Peer.prototype._isOffer = function () {\n return this.type === constants_2.PeerType.Offer;\n };\n Peer.prototype._isAnswer = function () {\n return this.type === constants_2.PeerType.Answer;\n };\n Peer.prototype._config = function () {\n var _a = this.options,\n _b = _a.iceServers,\n iceServers = _b === void 0 ? [] : _b,\n _c = _a.iceTransportPolicy,\n iceTransportPolicy = _c === void 0 ? 'all' : _c,\n _d = _a.disableUdpIceServers,\n disableUdpIceServers = _d === void 0 ? false : _d;\n var filteredIceServers = (0, helpers_3.filterIceServers)(iceServers, {\n disableUdpIceServers: disableUdpIceServers\n });\n var config = {\n iceTransportPolicy: iceTransportPolicy,\n sdpSemantics: 'unified-plan',\n bundlePolicy: 'max-compat',\n iceServers: filteredIceServers\n };\n logger_1[\"default\"].info('RTC config', config);\n return config;\n };\n Peer.prototype._getSenderByKind = function (kind) {\n return __awaiter(this, void 0, void 0, function () {\n var senders;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.instance) return [3, 2];\n return [4, this.instance.getSenders()];\n case 1:\n senders = _a.sent();\n return [2, senders.find(function (_a) {\n var track = _a.track;\n return track && track.kind === kind;\n })];\n case 2:\n return [2];\n }\n });\n });\n };\n Peer.prototype.applyMediaConstraints = function (kind, constraints) {\n return __awaiter(this, void 0, void 0, function () {\n var sender, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4,, 5]);\n return [4, this._getSenderByKind(kind)];\n case 1:\n sender = _a.sent();\n if (!sender || !sender.track) {\n return [2, logger_1[\"default\"].info('No sender to apply constraints', kind, constraints)];\n }\n if (!(sender.track.readyState === 'live')) return [3, 3];\n logger_1[\"default\"].info(\"Apply \".concat(kind, \" constraints\"), this.options.id, constraints);\n return [4, sender.track.applyConstraints(constraints)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n return [3, 5];\n case 4:\n error_1 = _a.sent();\n logger_1[\"default\"].error('Error applying constraints', kind, constraints);\n return [3, 5];\n case 5:\n return [2];\n }\n });\n });\n };\n return Peer;\n}();\nexports[\"default\"] = Peer;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/Peer.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/VertoHandler.ts": +/*!********************************************!*\ + !*** ../common/src/webrtc/VertoHandler.ts ***! + \********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Call_1 = __importDefault(__webpack_require__(/*! ./Call */ \"../common/src/webrtc/Call.ts\"));\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar Verto_1 = __webpack_require__(/*! ../messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar constants_3 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar LayoutHandler_1 = __webpack_require__(/*! ./LayoutHandler */ \"../common/src/webrtc/LayoutHandler.ts\");\nvar VertoHandler = function () {\n function VertoHandler(session) {\n this.session = session;\n }\n VertoHandler.prototype._ack = function (id, method) {\n var msg = new Verto_1.Result(id, method);\n if (this.nodeId) {\n msg.targetNodeId = this.nodeId;\n }\n this.session.execute(msg);\n };\n VertoHandler.prototype.handleMessage = function (msg) {\n var _this = this;\n var session = this.session;\n var id = msg.id,\n method = msg.method,\n params = msg.params;\n var callID = params.callID,\n eventChannel = params.eventChannel,\n eventType = params.eventType;\n var attach = method === constants_2.VertoMethod.Attach;\n if (eventType === 'channelPvtData') {\n return this._handlePvtEvent(params.pvtData);\n }\n if (callID && session.calls.hasOwnProperty(callID)) {\n if (attach) {\n session.calls[callID].hangup({}, false);\n } else {\n session.calls[callID].handleMessage(msg);\n this._ack(id, method);\n return;\n }\n }\n var _buildCall = function _buildCall() {\n var call = new Call_1[\"default\"](session, {\n id: callID,\n remoteSdp: params.sdp,\n destinationNumber: params.callee_id_number,\n remoteCallerName: params.caller_id_name,\n remoteCallerNumber: params.caller_id_number,\n callerName: params.callee_id_name,\n callerNumber: params.callee_id_number,\n attach: attach\n });\n call.nodeId = _this.nodeId;\n return call;\n };\n switch (method) {\n case constants_2.VertoMethod.Punt:\n session.disconnect();\n break;\n case constants_2.VertoMethod.Invite:\n {\n var call = _buildCall();\n call.setState(constants_3.State.Ringing);\n this._ack(id, method);\n break;\n }\n case constants_2.VertoMethod.Attach:\n {\n var call = _buildCall();\n if (this.session.autoRecoverCalls) {\n call.answer();\n } else {\n call.setState(constants_3.State.Recovering);\n }\n call.handleMessage(msg);\n break;\n }\n case constants_2.VertoMethod.Event:\n case 'webrtc.event':\n if (!eventChannel) {\n logger_1[\"default\"].error('Verto received an unknown event:', params);\n return;\n }\n var protocol = session.relayProtocol;\n var firstValue = eventChannel.split('.')[0];\n if (session._existsSubscription(protocol, eventChannel)) {\n (0, Handler_1.trigger)(protocol, params, eventChannel);\n } else if (eventChannel === session.sessionid) {\n this._handleSessionEvent(params.eventData);\n } else if (session._existsSubscription(protocol, firstValue)) {\n (0, Handler_1.trigger)(protocol, params, firstValue);\n } else if (session.calls.hasOwnProperty(eventChannel)) {\n session.calls[eventChannel].handleMessage(msg);\n } else {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n }\n break;\n case constants_2.VertoMethod.Info:\n params.type = constants_2.NOTIFICATION_TYPE.generic;\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n break;\n case constants_2.VertoMethod.ClientReady:\n params.type = constants_2.NOTIFICATION_TYPE.vertoClientReady;\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n break;\n default:\n logger_1[\"default\"].warn('Verto message unknown method:', msg);\n }\n };\n VertoHandler.prototype._retrieveCallId = function (packet, laChannel) {\n var _this = this;\n var callIds = Object.keys(this.session.calls);\n if (packet.action === 'bootObj') {\n var me = packet.data.find(function (pr) {\n return callIds.includes(pr[0]);\n });\n if (me instanceof Array) {\n return me[0];\n }\n } else {\n return callIds.find(function (id) {\n return _this.session.calls[id].channels.includes(laChannel);\n });\n }\n };\n VertoHandler.prototype._handlePvtEvent = function (pvtData) {\n return __awaiter(this, void 0, void 0, function () {\n var session, protocol, action, laChannel, laName, chatChannel, infoChannel, modChannel, conferenceMemberID, role, callID, _a, _liveArrayBootstrap_1, tmp, result, call_1, _b, callId, notification, channels;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n session = this.session;\n protocol = session.relayProtocol;\n action = pvtData.action, laChannel = pvtData.laChannel, laName = pvtData.laName, chatChannel = pvtData.chatChannel, infoChannel = pvtData.infoChannel, modChannel = pvtData.modChannel, conferenceMemberID = pvtData.conferenceMemberID, role = pvtData.role, callID = pvtData.callID;\n _a = action;\n switch (_a) {\n case 'conference-liveArray-join':\n return [3, 1];\n case 'conference-liveArray-part':\n return [3, 3];\n }\n return [3, 4];\n case 1:\n _liveArrayBootstrap_1 = function _liveArrayBootstrap_1() {\n session.vertoBroadcast({\n nodeId: _this.nodeId,\n channel: laChannel,\n data: {\n liveArray: {\n command: 'bootstrap',\n context: laChannel,\n name: laName\n }\n }\n });\n };\n tmp = {\n nodeId: this.nodeId,\n channels: [laChannel],\n handler: function handler(_a) {\n var packet = _a.data;\n var id = callID || _this._retrieveCallId(packet, laChannel);\n if (id && session.calls.hasOwnProperty(id)) {\n var call = session.calls[id];\n call._addChannel(laChannel);\n call.extension = laName;\n call.handleConferenceUpdate(packet, pvtData).then(function (error) {\n if (error === 'INVALID_PACKET') {\n _liveArrayBootstrap_1();\n }\n });\n }\n }\n };\n return [4, session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('liveArray subscription error:', error);\n })];\n case 2:\n result = _c.sent();\n if ((0, helpers_1.checkSubscribeResponse)(result, laChannel)) {\n _liveArrayBootstrap_1();\n }\n return [3, 4];\n case 3:\n {\n call_1 = null;\n if (laChannel && session._existsSubscription(protocol, laChannel)) {\n _b = session.subscriptions[protocol][laChannel].callId, callId = _b === void 0 ? null : _b;\n call_1 = session.calls[callId] || null;\n if (callId !== null) {\n notification = {\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n action: constants_3.ConferenceAction.Leave,\n conferenceName: laName,\n participantId: Number(conferenceMemberID),\n role: role\n };\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, callId, false)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, session.uuid);\n }\n if (call_1 === null) {\n (0, Handler_1.deRegister)(constants_1.SwEvent.Notification, null, callId);\n }\n }\n }\n channels = [laChannel, chatChannel, infoChannel, modChannel];\n session.vertoUnsubscribe({\n nodeId: this.nodeId,\n channels: channels\n }).then(function (_a) {\n var _b = _a.unsubscribedChannels,\n unsubscribedChannels = _b === void 0 ? [] : _b;\n if (call_1) {\n call_1.channels = call_1.channels.filter(function (c) {\n return !unsubscribedChannels.includes(c);\n });\n }\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error('liveArray unsubscribe error:', error);\n });\n return [3, 4];\n }\n _c.label = 4;\n case 4:\n return [2];\n }\n });\n });\n };\n VertoHandler.prototype._handleSessionEvent = function (eventData) {\n switch (eventData.contentType) {\n case 'layout-info':\n case 'layer-info':\n (0, LayoutHandler_1.MCULayoutEventHandler)(this.session, eventData);\n break;\n case 'logo-info':\n {\n var notification = {\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n action: constants_3.ConferenceAction.LogoInfo,\n logo: eventData.logoURL\n };\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n break;\n }\n }\n };\n return VertoHandler;\n}();\nexports[\"default\"] = VertoHandler;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/VertoHandler.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/WebRTC.ts": +/*!**************************************!*\ + !*** ../common/src/webrtc/WebRTC.ts ***! + \**************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setMediaElementSinkId = exports.toggleMuteMediaElement = exports.unmuteMediaElement = exports.muteMediaElement = exports.stopStream = exports.sdpToJsonHack = exports.detachMediaStream = exports.attachMediaStream = exports.streamIsValid = exports.getSupportedConstraints = exports.enumerateDevices = exports.getDisplayMedia = exports.getUserMedia = exports.RTCPeerConnection = exports.WebRTCOverridesManager = void 0;\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebRTC = __importStar(__webpack_require__(/*! ../util/webrtc */ \"../common/src/util/webrtc/index.ts\"));\nvar WebRTCOverridesManager = function () {\n function WebRTCOverridesManager() {}\n WebRTCOverridesManager.getInstance = function () {\n if (!this._instance) {\n this._instance = new WebRTCOverridesManager();\n }\n return this._instance;\n };\n Object.defineProperty(WebRTCOverridesManager.prototype, \"RTCPeerConnection\", {\n get: function get() {\n var _this = this;\n return function (params) {\n var _a;\n var peerConnectionBuilder = (_a = _this._RTCPeerConnection) !== null && _a !== void 0 ? _a : WebRTC.RTCPeerConnection;\n var peerConnectionInstance = peerConnectionBuilder(params);\n return (0, helpers_1.normalizeAsyncAPIs)(peerConnectionInstance, ['addTrack', 'getSender']);\n };\n },\n set: function set(value) {\n this._RTCPeerConnection = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getUserMedia\", {\n get: function get() {\n var _a;\n return (_a = this._getUserMedia) !== null && _a !== void 0 ? _a : WebRTC.getUserMedia;\n },\n set: function set(value) {\n this._getUserMedia = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getDisplayMedia\", {\n get: function get() {\n var _a;\n return (_a = this._getDisplayMedia) !== null && _a !== void 0 ? _a : WebRTC.getDisplayMedia;\n },\n set: function set(value) {\n this._getDisplayMedia = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"enumerateDevices\", {\n get: function get() {\n var _a;\n return (_a = this._enumerateDevices) !== null && _a !== void 0 ? _a : WebRTC.enumerateDevices;\n },\n set: function set(value) {\n this._enumerateDevices = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getSupportedConstraints\", {\n get: function get() {\n var _a;\n return (_a = this._getSupportedConstraints) !== null && _a !== void 0 ? _a : WebRTC.getSupportedConstraints;\n },\n set: function set(value) {\n this._getSupportedConstraints = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"attachMediaStream\", {\n get: function get() {\n var _a;\n return (_a = this._attachMediaStream) !== null && _a !== void 0 ? _a : WebRTC.attachMediaStream;\n },\n set: function set(value) {\n this._attachMediaStream = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"streamIsValid\", {\n get: function get() {\n var _a;\n return (_a = this._streamIsValid) !== null && _a !== void 0 ? _a : WebRTC.streamIsValid;\n },\n set: function set(value) {\n this._streamIsValid = value;\n },\n enumerable: false,\n configurable: true\n });\n return WebRTCOverridesManager;\n}();\nexports.WebRTCOverridesManager = WebRTCOverridesManager;\nvar RTCPeerConnection = function RTCPeerConnection(params) {\n return WebRTCOverridesManager.getInstance().RTCPeerConnection(params);\n};\nexports.RTCPeerConnection = RTCPeerConnection;\nvar getUserMedia = function getUserMedia(params) {\n return WebRTCOverridesManager.getInstance().getUserMedia(params);\n};\nexports.getUserMedia = getUserMedia;\nvar getDisplayMedia = function getDisplayMedia(params) {\n return WebRTCOverridesManager.getInstance().getDisplayMedia(params);\n};\nexports.getDisplayMedia = getDisplayMedia;\nvar enumerateDevices = function enumerateDevices() {\n return WebRTCOverridesManager.getInstance().enumerateDevices();\n};\nexports.enumerateDevices = enumerateDevices;\nvar getSupportedConstraints = function getSupportedConstraints() {\n return WebRTCOverridesManager.getInstance().getSupportedConstraints();\n};\nexports.getSupportedConstraints = getSupportedConstraints;\nvar streamIsValid = function streamIsValid(stream) {\n return WebRTCOverridesManager.getInstance().streamIsValid(stream);\n};\nexports.streamIsValid = streamIsValid;\nvar attachMediaStream = function attachMediaStream(tag, stream) {\n return WebRTCOverridesManager.getInstance().attachMediaStream(tag, stream);\n};\nexports.attachMediaStream = attachMediaStream;\nvar detachMediaStream = function detachMediaStream(tag) {\n return WebRTC.detachMediaStream(tag);\n};\nexports.detachMediaStream = detachMediaStream;\nvar muteMediaElement = function muteMediaElement(tag) {\n return WebRTC.muteMediaElement(tag);\n};\nexports.muteMediaElement = muteMediaElement;\nvar unmuteMediaElement = function unmuteMediaElement(tag) {\n return WebRTC.unmuteMediaElement(tag);\n};\nexports.unmuteMediaElement = unmuteMediaElement;\nvar toggleMuteMediaElement = function toggleMuteMediaElement(tag) {\n return WebRTC.toggleMuteMediaElement(tag);\n};\nexports.toggleMuteMediaElement = toggleMuteMediaElement;\nvar setMediaElementSinkId = function setMediaElementSinkId(tag, deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, WebRTC.setMediaElementSinkId(tag, deviceId)];\n });\n });\n};\nexports.setMediaElementSinkId = setMediaElementSinkId;\nvar sdpToJsonHack = function sdpToJsonHack(sdp) {\n return WebRTC.sdpToJsonHack(sdp);\n};\nexports.sdpToJsonHack = sdpToJsonHack;\nvar stopStream = function stopStream(stream) {\n return WebRTC.stopStream(stream);\n};\nexports.stopStream = stopStream;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/WebRTC.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/constants.ts": +/*!*****************************************!*\ + !*** ../common/src/webrtc/constants.ts ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\n\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DeviceType = exports.ConferenceAction = exports.Role = exports.State = exports.DEFAULT_CALL_OPTIONS = exports.NOTIFICATION_TYPE = exports.VertoMethod = exports.Direction = exports.PeerType = void 0;\nvar PeerType;\n(function (PeerType) {\n PeerType[\"Offer\"] = \"offer\";\n PeerType[\"Answer\"] = \"answer\";\n})(PeerType || (exports.PeerType = PeerType = {}));\nvar Direction;\n(function (Direction) {\n Direction[\"Inbound\"] = \"inbound\";\n Direction[\"Outbound\"] = \"outbound\";\n})(Direction || (exports.Direction = Direction = {}));\nvar VertoMethod;\n(function (VertoMethod) {\n VertoMethod[\"Invite\"] = \"verto.invite\";\n VertoMethod[\"Attach\"] = \"verto.attach\";\n VertoMethod[\"Answer\"] = \"verto.answer\";\n VertoMethod[\"Info\"] = \"verto.info\";\n VertoMethod[\"Display\"] = \"verto.display\";\n VertoMethod[\"Media\"] = \"verto.media\";\n VertoMethod[\"Event\"] = \"verto.event\";\n VertoMethod[\"Bye\"] = \"verto.bye\";\n VertoMethod[\"Punt\"] = \"verto.punt\";\n VertoMethod[\"Broadcast\"] = \"verto.broadcast\";\n VertoMethod[\"Subscribe\"] = \"verto.subscribe\";\n VertoMethod[\"Unsubscribe\"] = \"verto.unsubscribe\";\n VertoMethod[\"ClientReady\"] = \"verto.clientReady\";\n VertoMethod[\"Modify\"] = \"verto.modify\";\n VertoMethod[\"MediaParams\"] = \"verto.mediaParams\";\n})(VertoMethod || (exports.VertoMethod = VertoMethod = {}));\nexports.NOTIFICATION_TYPE = (_a = {\n generic: 'event'\n}, _a[VertoMethod.Display] = 'participantData', _a[VertoMethod.Attach] = 'participantData', _a.conferenceUpdate = 'conferenceUpdate', _a.callUpdate = 'callUpdate', _a.vertoClientReady = 'vertoClientReady', _a.userMediaError = 'userMediaError', _a.refreshToken = 'refreshToken', _a);\nexports.DEFAULT_CALL_OPTIONS = {\n destinationNumber: '',\n remoteCallerName: 'Outbound Call',\n remoteCallerNumber: '',\n callerName: '',\n callerNumber: '',\n audio: true,\n video: false,\n useStereo: false,\n attach: false,\n screenShare: false,\n userVariables: {}\n};\nvar State;\n(function (State) {\n State[State[\"New\"] = 0] = \"New\";\n State[State[\"Requesting\"] = 1] = \"Requesting\";\n State[State[\"Trying\"] = 2] = \"Trying\";\n State[State[\"Recovering\"] = 3] = \"Recovering\";\n State[State[\"Ringing\"] = 4] = \"Ringing\";\n State[State[\"Answering\"] = 5] = \"Answering\";\n State[State[\"Early\"] = 6] = \"Early\";\n State[State[\"Active\"] = 7] = \"Active\";\n State[State[\"Held\"] = 8] = \"Held\";\n State[State[\"Hangup\"] = 9] = \"Hangup\";\n State[State[\"Destroy\"] = 10] = \"Destroy\";\n State[State[\"Purge\"] = 11] = \"Purge\";\n})(State || (exports.State = State = {}));\nvar Role;\n(function (Role) {\n Role[\"Participant\"] = \"participant\";\n Role[\"Moderator\"] = \"moderator\";\n})(Role || (exports.Role = Role = {}));\nvar ConferenceAction;\n(function (ConferenceAction) {\n ConferenceAction[\"Join\"] = \"join\";\n ConferenceAction[\"Leave\"] = \"leave\";\n ConferenceAction[\"Bootstrap\"] = \"bootstrap\";\n ConferenceAction[\"Add\"] = \"add\";\n ConferenceAction[\"Modify\"] = \"modify\";\n ConferenceAction[\"Delete\"] = \"delete\";\n ConferenceAction[\"Clear\"] = \"clear\";\n ConferenceAction[\"ChatMessage\"] = \"chatMessage\";\n ConferenceAction[\"LayerInfo\"] = \"layerInfo\";\n ConferenceAction[\"LogoInfo\"] = \"logoInfo\";\n ConferenceAction[\"LayoutInfo\"] = \"layoutInfo\";\n ConferenceAction[\"LayoutList\"] = \"layoutList\";\n ConferenceAction[\"ModCmdResponse\"] = \"modCommandResponse\";\n})(ConferenceAction || (exports.ConferenceAction = ConferenceAction = {}));\nvar DeviceType;\n(function (DeviceType) {\n DeviceType[\"Video\"] = \"videoinput\";\n DeviceType[\"AudioIn\"] = \"audioinput\";\n DeviceType[\"AudioOut\"] = \"audiooutput\";\n})(DeviceType || (exports.DeviceType = DeviceType = {}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/constants.ts?"); + +/***/ }), + +/***/ "../common/src/webrtc/helpers.ts": +/*!***************************************!*\ + !*** ../common/src/webrtc/helpers.ts ***! + \***************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sdpHasVideo = exports.sdpHasAudio = exports.filterIceServers = exports.toggleVideoTracks = exports.disableVideoTracks = exports.enableVideoTracks = exports.toggleAudioTracks = exports.disableAudioTracks = exports.enableAudioTracks = exports.destructSubscribeResponse = exports.checkSubscribeResponse = exports.sdpBitrateHack = exports.sdpMediaOrderHack = exports.sdpStereoHack = exports.checkDeviceIdConstraints = exports.removeUnsupportedConstraints = exports.assureDeviceId = exports.getMediaConstraints = exports.scanResolutions = exports.getDevices = exports.getUserMedia = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar WebRTC = __importStar(__webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\"));\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar getUserMedia = function getUserMedia(constraints) {\n return __awaiter(void 0, void 0, void 0, function () {\n var audio, video, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger_1[\"default\"].info('RTCService.getUserMedia', constraints);\n audio = constraints.audio, video = constraints.video;\n if (!audio && !video) {\n return [2, null];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4, WebRTC.getUserMedia(constraints)];\n case 2:\n return [2, _a.sent()];\n case 3:\n error_1 = _a.sent();\n logger_1[\"default\"].error('getUserMedia error: ', error_1);\n throw error_1;\n case 4:\n return [2];\n }\n });\n });\n};\nexports.getUserMedia = getUserMedia;\nvar _constraintsByKind = function _constraintsByKind(kind) {\n if (kind === void 0) {\n kind = null;\n }\n return {\n audio: !kind || kind === constants_1.DeviceType.AudioIn,\n video: !kind || kind === constants_1.DeviceType.Video\n };\n};\nvar getDevices = function getDevices(kind, fullList) {\n if (kind === void 0) {\n kind = null;\n }\n if (fullList === void 0) {\n fullList = false;\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var devices, valid, stream, found;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, WebRTC.enumerateDevices()[\"catch\"](function (error) {\n return [];\n })];\n case 1:\n devices = _a.sent();\n if (kind) {\n devices = devices.filter(function (d) {\n return d.kind === kind;\n });\n }\n valid = devices.length && devices.every(function (d) {\n return d.deviceId && d.label;\n });\n if (!!valid) return [3, 3];\n return [4, WebRTC.getUserMedia(_constraintsByKind(kind))];\n case 2:\n stream = _a.sent();\n WebRTC.stopStream(stream);\n return [2, getDevices(kind)];\n case 3:\n if (fullList === true) {\n return [2, devices];\n }\n found = [];\n devices = devices.filter(function (_a) {\n var kind = _a.kind,\n groupId = _a.groupId;\n if (!groupId) {\n return true;\n }\n var key = \"\".concat(kind, \"-\").concat(groupId);\n if (!found.includes(key)) {\n found.push(key);\n return true;\n }\n return false;\n });\n return [2, devices];\n }\n });\n });\n};\nexports.getDevices = getDevices;\nvar resolutionList = [[320, 240], [640, 360], [640, 480], [1280, 720], [1920, 1080]];\nvar scanResolutions = function scanResolutions(deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n var supported, stream, videoTrack, i, _a, width, height, success;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n supported = [];\n return [4, getUserMedia({\n video: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 1:\n stream = _b.sent();\n videoTrack = stream.getVideoTracks()[0];\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < resolutionList.length)) return [3, 5];\n _a = __read(resolutionList[i], 2), width = _a[0], height = _a[1];\n return [4, videoTrack.applyConstraints({\n width: {\n exact: width\n },\n height: {\n exact: height\n }\n }).then(function () {\n return true;\n })[\"catch\"](function () {\n return false;\n })];\n case 3:\n success = _b.sent();\n if (success) {\n supported.push({\n resolution: \"\".concat(width, \"x\").concat(height),\n width: width,\n height: height\n });\n }\n _b.label = 4;\n case 4:\n i++;\n return [3, 2];\n case 5:\n WebRTC.stopStream(stream);\n return [2, supported];\n }\n });\n });\n};\nexports.scanResolutions = scanResolutions;\nvar getMediaConstraints = function getMediaConstraints(options) {\n return __awaiter(void 0, void 0, void 0, function () {\n var _a, audio, micId, _b, micLabel, _c, video, camId, _d, camLabel;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = options.audio, audio = _a === void 0 ? true : _a, micId = options.micId;\n _b = options.micLabel, micLabel = _b === void 0 ? '' : _b;\n if (!micId) return [3, 2];\n return [4, assureDeviceId(micId, micLabel, constants_1.DeviceType.AudioIn)[\"catch\"](function (error) {\n return null;\n })];\n case 1:\n micId = _e.sent();\n if (micId) {\n if (typeof audio === 'boolean') {\n audio = {};\n }\n audio.deviceId = {\n exact: micId\n };\n }\n _e.label = 2;\n case 2:\n _c = options.video, video = _c === void 0 ? false : _c, camId = options.camId;\n _d = options.camLabel, camLabel = _d === void 0 ? '' : _d;\n if (!camId) return [3, 4];\n return [4, assureDeviceId(camId, camLabel, constants_1.DeviceType.Video)[\"catch\"](function (error) {\n return null;\n })];\n case 3:\n camId = _e.sent();\n if (camId) {\n if (typeof video === 'boolean') {\n video = {};\n }\n video.deviceId = {\n exact: camId\n };\n }\n _e.label = 4;\n case 4:\n return [2, {\n audio: audio,\n video: video\n }];\n }\n });\n });\n};\nexports.getMediaConstraints = getMediaConstraints;\nvar assureDeviceId = function assureDeviceId(id, label, kind) {\n return __awaiter(void 0, void 0, void 0, function () {\n var devices, i, _a, deviceId, deviceLabel;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4, getDevices(kind, true)];\n case 1:\n devices = _b.sent();\n for (i = 0; i < devices.length; i++) {\n _a = devices[i], deviceId = _a.deviceId, deviceLabel = _a.label;\n if (id === deviceId || label === deviceLabel) {\n return [2, deviceId];\n }\n }\n return [2, null];\n }\n });\n });\n};\nexports.assureDeviceId = assureDeviceId;\nvar removeUnsupportedConstraints = function removeUnsupportedConstraints(constraints) {\n var supported = WebRTC.getSupportedConstraints();\n Object.keys(constraints).map(function (key) {\n if (!supported.hasOwnProperty(key) || constraints[key] === null || constraints[key] === undefined) {\n delete constraints[key];\n }\n });\n};\nexports.removeUnsupportedConstraints = removeUnsupportedConstraints;\nvar checkDeviceIdConstraints = function checkDeviceIdConstraints(id, label, kind, constraints) {\n return __awaiter(void 0, void 0, void 0, function () {\n var deviceId, deviceId_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n deviceId = constraints.deviceId;\n if (!(!(0, helpers_1.isDefined)(deviceId) && (id || label))) return [3, 2];\n return [4, assureDeviceId(id, label, kind)[\"catch\"](function (error) {\n return null;\n })];\n case 1:\n deviceId_1 = _a.sent();\n if (deviceId_1) {\n constraints.deviceId = {\n exact: deviceId_1\n };\n }\n _a.label = 2;\n case 2:\n return [2, constraints];\n }\n });\n });\n};\nexports.checkDeviceIdConstraints = checkDeviceIdConstraints;\nvar sdpStereoHack = function sdpStereoHack(sdp) {\n var endOfLine = '\\r\\n';\n var sdpLines = sdp.split(endOfLine);\n var opusIndex = sdpLines.findIndex(function (s) {\n return /^a=rtpmap/.test(s) && /opus\\/48000/.test(s);\n });\n if (opusIndex < 0) {\n return sdp;\n }\n var getCodecPayloadType = function getCodecPayloadType(line) {\n var pattern = new RegExp('a=rtpmap:(\\\\d+) \\\\w+\\\\/\\\\d+');\n var result = line.match(pattern);\n return result && result.length == 2 ? result[1] : null;\n };\n var opusPayload = getCodecPayloadType(sdpLines[opusIndex]);\n var pattern = new RegExp(\"a=fmtp:\".concat(opusPayload));\n var fmtpLineIndex = sdpLines.findIndex(function (s) {\n return pattern.test(s);\n });\n if (fmtpLineIndex >= 0) {\n if (!/stereo=1;/.test(sdpLines[fmtpLineIndex])) {\n sdpLines[fmtpLineIndex] += '; stereo=1; sprop-stereo=1';\n }\n } else {\n sdpLines[opusIndex] += \"\".concat(endOfLine, \"a=fmtp:\").concat(opusPayload, \" stereo=1; sprop-stereo=1\");\n }\n return sdpLines.join(endOfLine);\n};\nexports.sdpStereoHack = sdpStereoHack;\nvar _isAudioLine = function _isAudioLine(line) {\n return /^m=audio/.test(line);\n};\nvar _isVideoLine = function _isVideoLine(line) {\n return /^m=video/.test(line);\n};\nvar sdpMediaOrderHack = function sdpMediaOrderHack(answer, localOffer) {\n var endOfLine = '\\r\\n';\n var offerLines = localOffer.split(endOfLine);\n var offerAudioIndex = offerLines.findIndex(_isAudioLine);\n var offerVideoIndex = offerLines.findIndex(_isVideoLine);\n if (offerAudioIndex < offerVideoIndex) {\n return answer;\n }\n var answerLines = answer.split(endOfLine);\n var answerAudioIndex = answerLines.findIndex(_isAudioLine);\n var answerVideoIndex = answerLines.findIndex(_isVideoLine);\n var audioLines = answerLines.slice(answerAudioIndex, answerVideoIndex);\n var videoLines = answerLines.slice(answerVideoIndex, answerLines.length - 1);\n var beginLines = answerLines.slice(0, answerAudioIndex);\n return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(beginLines), false), __read(videoLines), false), __read(audioLines), false), [''], false).join(endOfLine);\n};\nexports.sdpMediaOrderHack = sdpMediaOrderHack;\nvar checkSubscribeResponse = function checkSubscribeResponse(response, channel) {\n if (!response) {\n return false;\n }\n var _a = destructSubscribeResponse(response),\n subscribed = _a.subscribed,\n alreadySubscribed = _a.alreadySubscribed;\n return subscribed.includes(channel) || alreadySubscribed.includes(channel);\n};\nexports.checkSubscribeResponse = checkSubscribeResponse;\nvar destructSubscribeResponse = function destructSubscribeResponse(response) {\n var tmp = {\n subscribed: [],\n alreadySubscribed: [],\n unauthorized: [],\n unsubscribed: [],\n notSubscribed: []\n };\n Object.keys(tmp).forEach(function (k) {\n tmp[k] = response[\"\".concat(k, \"Channels\")] || [];\n });\n return tmp;\n};\nexports.destructSubscribeResponse = destructSubscribeResponse;\nvar enableAudioTracks = function enableAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', true);\n};\nexports.enableAudioTracks = enableAudioTracks;\nvar disableAudioTracks = function disableAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', false);\n};\nexports.disableAudioTracks = disableAudioTracks;\nvar toggleAudioTracks = function toggleAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', null);\n};\nexports.toggleAudioTracks = toggleAudioTracks;\nvar enableVideoTracks = function enableVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', true);\n};\nexports.enableVideoTracks = enableVideoTracks;\nvar disableVideoTracks = function disableVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', false);\n};\nexports.disableVideoTracks = disableVideoTracks;\nvar toggleVideoTracks = function toggleVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', null);\n};\nexports.toggleVideoTracks = toggleVideoTracks;\nvar _updateMediaStreamTracks = function _updateMediaStreamTracks(stream, kind, enabled) {\n if (kind === void 0) {\n kind = null;\n }\n if (enabled === void 0) {\n enabled = null;\n }\n if (!WebRTC.streamIsValid(stream)) {\n return null;\n }\n var tracks = [];\n switch (kind) {\n case 'audio':\n tracks = stream.getAudioTracks();\n break;\n case 'video':\n tracks = stream.getVideoTracks();\n break;\n default:\n tracks = stream.getTracks();\n break;\n }\n tracks.forEach(function (track) {\n switch (enabled) {\n case 'on':\n case true:\n track.enabled = true;\n break;\n case 'off':\n case false:\n track.enabled = false;\n break;\n default:\n track.enabled = !track.enabled;\n break;\n }\n });\n};\nvar sdpBitrateHack = function sdpBitrateHack(sdp, max, min, start) {\n var endOfLine = '\\r\\n';\n var lines = sdp.split(endOfLine);\n lines.forEach(function (line, i) {\n if (/^a=fmtp:\\d*/.test(line)) {\n lines[i] += \";x-google-max-bitrate=\".concat(max, \";x-google-min-bitrate=\").concat(min, \";x-google-start-bitrate=\").concat(start);\n } else if (/^a=mid:(1|video)/.test(line)) {\n lines[i] += \"\\r\\nb=AS:\".concat(max);\n }\n });\n return lines.join(endOfLine);\n};\nexports.sdpBitrateHack = sdpBitrateHack;\nvar filterIceServers = function filterIceServers(servers, options) {\n if (options === void 0) {\n options = {\n disableUdpIceServers: false\n };\n }\n var _a = options.disableUdpIceServers,\n disableUdpIceServers = _a === void 0 ? false : _a;\n var filterNonTransportTCP = function filterNonTransportTCP(urls) {\n var transportParam = 'transport=tcp';\n if (urls instanceof Array) {\n return urls.filter(function (url) {\n return url.includes(transportParam);\n });\n } else {\n return urls.includes(transportParam) ? urls : '';\n }\n };\n return servers.map(function (server) {\n return __assign(__assign({}, server), {\n urls: disableUdpIceServers ? filterNonTransportTCP(server.urls) : server.urls\n });\n });\n};\nexports.filterIceServers = filterIceServers;\nvar sdpHasAudio = function sdpHasAudio(sdp) {\n if (sdp === void 0) {\n sdp = '';\n }\n return /m=audio/.test(sdp);\n};\nexports.sdpHasAudio = sdpHasAudio;\nvar sdpHasVideo = function sdpHasVideo(sdp) {\n if (sdp === void 0) {\n sdp = '';\n }\n return /m=video/.test(sdp);\n};\nexports.sdpHasVideo = sdpHasVideo;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/helpers.ts?"); + +/***/ }), + +/***/ "./index.ts": +/*!******************!*\ + !*** ./index.ts ***! + \******************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CantinaAuth = exports.Verto = exports.Relay = exports.VERSION = void 0;\nvar SignalWire_1 = __importDefault(__webpack_require__(/*! ./src/SignalWire */ \"./src/SignalWire.ts\"));\nexports.Relay = SignalWire_1[\"default\"];\nvar Verto_1 = __importDefault(__webpack_require__(/*! ./src/Verto */ \"./src/Verto.ts\"));\nexports.Verto = Verto_1[\"default\"];\nvar Connect_1 = __webpack_require__(/*! ../common/src/messages/blade/Connect */ \"../common/src/messages/blade/Connect.ts\");\nvar CantinaAuth_1 = __importDefault(__webpack_require__(/*! ../common/src/webrtc/CantinaAuth */ \"../common/src/webrtc/CantinaAuth.ts\"));\nexports.CantinaAuth = CantinaAuth_1[\"default\"];\nexports.VERSION = '1.5.1-rc.1';\n(0, Connect_1.setAgentName)(\"JavaScript SDK/\".concat(exports.VERSION));\n__exportStar(__webpack_require__(/*! ../common/src/util/interfaces */ \"../common/src/util/interfaces.ts\"), exports);\n\n//# sourceURL=webpack://@signalwire/js/./index.ts?"); + +/***/ }), + +/***/ "./src/SignalWire.ts": +/*!***************************!*\ + !*** ./src/SignalWire.ts ***! + \***************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar BrowserSession_1 = __importDefault(__webpack_require__(/*! ../../common/src/BrowserSession */ \"../common/src/BrowserSession.ts\"));\nvar Blade_1 = __webpack_require__(/*! ../../common/src/messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ../../common/src/messages/verto/BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Call_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/Call */ \"../common/src/webrtc/Call.ts\"));\nvar SignalWire = function (_super) {\n __extends(SignalWire, _super);\n function SignalWire() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SignalWire.prototype.execute = function (message) {\n var msg = message;\n if (message instanceof BaseRequest_1[\"default\"]) {\n var params = {\n message: message.request\n };\n if (message.targetNodeId) {\n params.node_id = message.targetNodeId;\n }\n msg = new Blade_1.Execute({\n protocol: this.relayProtocol,\n method: 'message',\n params: params\n });\n }\n return _super.prototype.execute.call(this, msg);\n };\n SignalWire.prototype.newCall = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, destinationNumber, call;\n return __generator(this, function (_b) {\n _a = options.destinationNumber, destinationNumber = _a === void 0 ? null : _a;\n if (!destinationNumber) {\n throw new TypeError('destinationNumber is required');\n }\n call = new Call_1[\"default\"](this, options);\n call.invite();\n return [2, call];\n });\n });\n };\n return SignalWire;\n}(BrowserSession_1[\"default\"]);\nexports[\"default\"] = SignalWire;\n\n//# sourceURL=webpack://@signalwire/js/./src/SignalWire.ts?"); + +/***/ }), + +/***/ "./src/Verto.ts": +/*!**********************!*\ + !*** ./src/Verto.ts ***! + \**********************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VERTO_PROTOCOL = void 0;\nvar BrowserSession_1 = __importDefault(__webpack_require__(/*! ../../common/src/BrowserSession */ \"../common/src/BrowserSession.ts\"));\nvar Verto_1 = __webpack_require__(/*! ../../common/src/messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar Call_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/Call */ \"../common/src/webrtc/Call.ts\"));\nvar constants_1 = __webpack_require__(/*! ../../common/src/util/constants */ \"../common/src/util/constants/index.ts\");\nvar Handler_1 = __webpack_require__(/*! ../../common/src/services/Handler */ \"../common/src/services/Handler.ts\");\nvar storage_1 = __webpack_require__(/*! ../../common/src/util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar VertoHandler_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/VertoHandler */ \"../common/src/webrtc/VertoHandler.ts\"));\nexports.VERTO_PROTOCOL = 'verto-protocol';\nvar Verto = function (_super) {\n __extends(Verto, _super);\n function Verto() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.relayProtocol = exports.VERTO_PROTOCOL;\n _this.timeoutErrorCode = -329990;\n return _this;\n }\n Verto.prototype.validateOptions = function () {\n var _a = this.options,\n host = _a.host,\n login = _a.login,\n passwd = _a.passwd,\n password = _a.password;\n return Boolean(host) && Boolean(login && (passwd || password));\n };\n Verto.prototype.newCall = function (options) {\n var _a = options.destinationNumber,\n destinationNumber = _a === void 0 ? null : _a;\n if (!destinationNumber) {\n throw new Error('Verto.newCall() error: destinationNumber is required.');\n }\n var call = new Call_1[\"default\"](this, options);\n call.invite();\n return call;\n };\n Verto.prototype.broadcast = function (params) {\n return this.vertoBroadcast(params);\n };\n Verto.prototype.subscribe = function (params) {\n return this.vertoSubscribe(params);\n };\n Verto.prototype.unsubscribe = function (params) {\n return this.vertoUnsubscribe(params);\n };\n Verto.prototype._onSocketOpen = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, login, password, passwd, userVariables, sessidLogin, msg, response;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this._idle = false;\n _a = this.options, login = _a.login, password = _a.password, passwd = _a.passwd, userVariables = _a.userVariables;\n if (!this.sessionid) return [3, 2];\n sessidLogin = new Verto_1.Login(undefined, undefined, this.sessionid, undefined);\n return [4, this.execute(sessidLogin)[\"catch\"](console.error)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n msg = new Verto_1.Login(login, password || passwd, this.sessionid, userVariables);\n return [4, this.execute(msg)[\"catch\"](this._handleLoginError)];\n case 3:\n response = _b.sent();\n if (response) {\n this._autoReconnect = true;\n this.sessionid = response.sessid;\n storage_1.localStorage.setItem(constants_1.SESSION_ID, this.sessionid);\n (0, Handler_1.trigger)(constants_1.SwEvent.Ready, this, this.uuid);\n }\n return [2];\n }\n });\n });\n };\n Verto.prototype._onSocketMessage = function (msg) {\n var handler = new VertoHandler_1[\"default\"](this);\n handler.handleMessage(msg);\n };\n return Verto;\n}(BrowserSession_1[\"default\"]);\nexports[\"default\"] = Verto;\n\n//# sourceURL=webpack://@signalwire/js/./src/Verto.ts?"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./index.ts"); +/******/ var __webpack_export_target__ = this; +/******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; +/******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/static/signalwire.min.js b/packages/js/examples/flask-mute-test/static/signalwire.min.js new file mode 100644 index 00000000..38f7694a --- /dev/null +++ b/packages/js/examples/flask-mute-test/static/signalwire.min.js @@ -0,0 +1,2 @@ +/*! For license information please see index.min.js.LICENSE.txt */ +(()=>{var e={188:function(e,t,n){var r,o;!function(){"use strict";r=function(){var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function o(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function i(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(t,n){for(var o=0;o=0&&n<=s.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(i=n,!1!==o&&function(e){var n=(r[e]||"silent").toUpperCase();if(typeof window!==t){try{return void(window.localStorage[u]=n)}catch(e){}try{window.document.cookie=encodeURIComponent(u)+"="+n+";"}catch(e){}}}(n),a.call(s,n,e),typeof console===t&&n{"use strict";n.r(t),n.d(t,{v1:()=>p,v3:()=>w,v4:()=>S,v5:()=>k});var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),o=new Uint8Array(16);function i(){if(!r)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(o)}for(var a=[],s=0;s<256;++s)a[s]=(s+256).toString(16).substr(1);const c=function(e,t){var n=t||0,r=a;return[r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]]].join("")};var u,l,d=0,f=0;const p=function(e,t,n){var r=t&&n||0,o=t||[],a=(e=e||{}).node||u,s=void 0!==e.clockseq?e.clockseq:l;if(null==a||null==s){var p=e.random||(e.rng||i)();null==a&&(a=u=[1|p[0],p[1],p[2],p[3],p[4],p[5]]),null==s&&(s=l=16383&(p[6]<<8|p[7]))}var h=void 0!==e.msecs?e.msecs:(new Date).getTime(),v=void 0!==e.nsecs?e.nsecs:f+1,y=h-d+(v-f)/1e4;if(y<0&&void 0===e.clockseq&&(s=s+1&16383),(y<0||h>d)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=h,f=v,l=s;var b=(1e4*(268435455&(h+=122192928e5))+v)%4294967296;o[r++]=b>>>24&255,o[r++]=b>>>16&255,o[r++]=b>>>8&255,o[r++]=255&b;var g=h/4294967296*1e4&268435455;o[r++]=g>>>8&255,o[r++]=255&g,o[r++]=g>>>24&15|16,o[r++]=g>>>16&255,o[r++]=s>>>8|128,o[r++]=255&s;for(var _=0;_<6;++_)o[r+_]=a[_];return t||c(o)};function h(e,t,n){var r=function(e,r,o,i){var a=o&&i||0;if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=new Array(e.length),n=0;n>16)+(t>>16)+(n>>16)<<16|65535&n}function y(e,t,n,r,o,i){return v((a=v(v(t,e),v(r,i)))<<(s=o)|a>>>32-s,n);var a,s}function b(e,t,n,r,o,i,a){return y(t&n|~t&r,e,t,o,i,a)}function g(e,t,n,r,o,i,a){return y(t&r|n&~r,e,t,o,i,a)}function _(e,t,n,r,o,i,a){return y(t^n^r,e,t,o,i,a)}function m(e,t,n,r,o,i,a){return y(n^(t|~r),e,t,o,i,a)}const w=h("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Array(t.length);for(var n=0;n>5]>>>t%32&255,r=parseInt(a.charAt(n>>>4&15)+a.charAt(15&n),16),o.push(r);return o}(function(e,t){var n,r,o,i,a;e[t>>5]|=128<>>9<<4)]=t;var s=1732584193,c=-271733879,u=-1732584194,l=271733878;for(n=0;n>2)-1]=void 0,t=0;t>5]|=(255&e[t/8])<>>32-t}const k=h("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var r=unescape(encodeURIComponent(e));e=new Array(r.length);for(var o=0;o>>0;v=h,h=p,p=I(f,30)>>>0,f=d,d=b}n[0]=n[0]+d>>>0,n[1]=n[1]+f>>>0,n[2]=n[2]+p>>>0,n[3]=n[3]+h>>>0,n[4]=n[4]+v>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}))},401:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Ping=t.Reauthenticate=t.Execute=t.Subscription=t.Connect=void 0;var r=n(68);Object.defineProperty(t,"Connect",{enumerable:!0,get:function(){return r.Connect}});var o=n(821);Object.defineProperty(t,"Execute",{enumerable:!0,get:function(){return o.Execute}});var i=n(921);Object.defineProperty(t,"Subscription",{enumerable:!0,get:function(){return i.Subscription}});var a=n(408);Object.defineProperty(t,"Reauthenticate",{enumerable:!0,get:function(){return a.Reauthenticate}});var s=n(748);Object.defineProperty(t,"Ping",{enumerable:!0,get:function(){return s.Ping}})},503:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Result=t.Unsubscribe=t.Subscribe=t.Broadcast=t.Info=t.Modify=t.Bye=t.Attach=t.Answer=t.Invite=t.Login=void 0;var a=i(n(10)),s=n(521);Object.defineProperty(t,"Login",{enumerable:!0,get:function(){return s.Login}});var c=n(827);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return c.Result}});var u=n(291),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Invite},t}(a.default);t.Invite=l;var d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Answer},t}(a.default);t.Answer=d;var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Attach},t}(a.default);t.Attach=f;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Bye},t}(a.default);t.Bye=p;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Modify},t}(a.default);t.Modify=h;var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Info},t}(a.default);t.Info=v;var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Broadcast},t}(a.default);t.Broadcast=y;var b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Subscribe},t}(a.default);t.Subscribe=b;var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Unsubscribe},t}(a.default);t.Unsubscribe=g},68:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setAgentName=t.Connect=void 0;var a=i(n(119)),s=null;t.setAgentName=function(e){s=e};var c=function(e){function t(t,n){var r=e.call(this)||this;r.method="blade.connect";var o={version:{major:2,minor:1,revision:0},authentication:t};return n&&(o.sessionid=n),s&&(o.agent=s),r.buildRequest({method:r.method,params:o}),r}return o(t,e),t}(a.default);t.Connect=c},821:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Execute=void 0;var a=function(e){function t(t,n){void 0===n&&(n="");var r,o=e.call(this)||this;return o.method="blade.execute",r=t.hasOwnProperty("result")?{result:t}:{method:o.method,params:t},n&&(r.id=n),o.buildRequest(r),o}return o(t,e),t}(i(n(119)).default);t.Execute=a},748:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ping=void 0;var a=function(e){function t(){var t=e.call(this)||this;return t.method="blade.ping",t.buildRequest({method:t.method,params:{}}),t}return o(t,e),t}(i(n(119)).default);t.Ping=a},408:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Reauthenticate=void 0;var a=function(e){function t(t,n,r){var o=e.call(this)||this;o.method="blade.reauthenticate";var i={sessionid:r,authentication:{project:t,jwt_token:n}};return o.buildRequest({method:o.method,params:i}),o}return o(t,e),t}(i(n(119)).default);t.Reauthenticate=a},921:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Subscription=void 0;var a=function(e){function t(t){var n=e.call(this)||this;return n.method="blade.subscription",t.hasOwnProperty("auto_create")&&!t.auto_create&&delete t.auto_create,t.hasOwnProperty("downstream")&&!t.downstream&&delete t.downstream,n.buildRequest({method:n.method,params:t}),n}return o(t,e),t}(i(n(119)).default);t.Subscription=a},10:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.queueLength=t.isQueued=t.deRegisterAll=t.deRegister=t.registerOnce=t.register=t.trigger=void 0;var r=n(858),o="GLOBAL",i={},a=function(e,t){return void 0===t&&(t=o),i.hasOwnProperty(e)&&i[e].hasOwnProperty(t)};t.isQueued=a,t.queueLength=function(e,t){return void 0===t&&(t=o),a(e,t)?i[e][t].length:0};var s=function(e,t,n){void 0===n&&(n=o),i.hasOwnProperty(e)||(i[e]={}),i[e].hasOwnProperty(n)||(i[e][n]=[]),i[e][n].push(t)};t.register=s,t.registerOnce=function(e,t,n){void 0===n&&(n=o);var r=function r(o){c(e,r,n),t(o)};return r.prototype.targetRef=t,s(e,r,n)};var c=function(e,t,n){if(void 0===n&&(n=o),!a(e,n))return!1;if((0,r.isFunction)(t))for(var s=i[e][n].length-1;s>=0;s--){var c=i[e][n][s];(t===c||c.prototype&&t===c.prototype.targetRef)&&i[e][n].splice(s,1)}else i[e][n]=[];return 0===i[e][n].length&&(delete i[e][n],(0,r.objEmpty)(i[e])&&delete i[e]),!0};t.deRegister=c,t.trigger=function e(t,n,r,s){void 0===r&&(r=o),void 0===s&&(s=!0);var c=s&&r!==o;if(!a(t,r))return c&&e(t,n),!1;var u=i[t][r].length;if(!u)return c&&e(t,n),!1;for(var l=u-1;l>=0;l--)i[t][r][l](n);return c&&e(t,n),!0},t.deRegisterAll=function(e){delete i[e]}},6:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.BladeMethod=t.SwEvent=t.SESSION_ID=t.REMOVE=t.ADD=t.STORAGE_PREFIX=void 0,t.STORAGE_PREFIX="@signalwire:",t.ADD="add",t.REMOVE="remove",t.SESSION_ID="sessId",function(e){e.SocketOpen="signalwire.socket.open",e.SocketClose="signalwire.socket.close",e.SocketError="signalwire.socket.error",e.SocketMessage="signalwire.socket.message",e.SpeedTest="signalwire.internal.speedtest",e.Ready="signalwire.ready",e.Error="signalwire.error",e.Notification="signalwire.notification",e.Messages="signalwire.messages",e.Calls="signalwire.calls",e.MediaError="signalwire.rtc.mediaError"}(n||(t.SwEvent=n={})),function(e){e.Broadcast="blade.broadcast",e.Disconnect="blade.disconnect"}(r||(t.BladeMethod=r={}))},858:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}var o=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.stackTrace=t.normalizeAsyncAPIs=t.randomInt=t.destructResponse=t.checkWebSocketHost=t.findElementByType=t.isFunction=t.isDefined=t.safeParseJson=t.mutateLiveArrayData=t.mutateStorageKey=t.objEmpty=t.deepCopy=void 0;var a=i(n(955)),s=n(789);t.deepCopy=function(e){return JSON.parse(JSON.stringify(e))},t.objEmpty=function(e){return 0===Object.keys(e).length},t.mutateStorageKey=function(e){return"".concat(s.STORAGE_PREFIX).concat(e)},t.mutateLiveArrayData=function(e){var t=o(e,6),n=t[0],r=t[1],i=t[2],s=t[3],c=t[4],u=t[5],l={};try{l=JSON.parse(c.replace(/ID"/g,'Id"'))}catch(e){a.default.warn("Verto LA invalid media JSON string:",c)}return{participantId:Number(n),participantNumber:r,participantName:i,codec:s,media:l,participantData:u}},t.safeParseJson=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}},t.isDefined=function(e){return void 0!==e},t.isFunction=function(e){return e instanceof Function||"function"==typeof e},t.findElementByType=function(e){return"object"===("undefined"==typeof document?"undefined":r(document))&&"getElementById"in document?"string"==typeof e?document.getElementById(e)||null:"function"==typeof e?e():e instanceof HTMLMediaElement?e:null:null};var c=/^(ws|wss):\/\//;t.checkWebSocketHost=function(e){var t=c.test(e)?"":"wss://";return"".concat(t).concat(e)},t.destructResponse=function(e,n){void 0===n&&(n=null);var r=e.result,o=void 0===r?{}:r,i=e.error;if(i)return{error:i};var a=o.result,s=void 0===a?null:a;if(null===s)return null!==n&&(o.node_id=n),{result:o};var c=s.code,u=void 0===c?null:c,l=s.node_id,d=void 0===l?null:l,f=s.result,p=void 0===f?null:f;return u&&"200"!==u?{error:s}:p?(0,t.destructResponse)(p,d):{result:s}},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.normalizeAsyncAPIs=function(e,t,n){void 0===t&&(t=[]),void 0===n&&(n="Async");var r=new Set(t);return new Proxy(e,{get:function(e,t){var o=Object.getOwnPropertyDescriptor(e,t);if(o&&o.get)return Reflect.get(e,t);if("function"==typeof e[t]){var i=e["".concat(String(t)).concat(n)]||e[t];return function(){for(var n=[],o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},955:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(188)).default.getLogger("signalwire"),i=o.methodFactory;o.methodFactory=function(e,t,n){var r=i(e,t,n);return function(){for(var e=[(new Date).toISOString().replace("T"," ").replace("Z",""),"-"],t=0;t0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=0&&(n._lastSerno=e),t};var r=e.iceServers,o=e.speaker,i=e.micId,a=e.micLabel,s=e.camId,c=e.camLabel,u=e.localElement,l=e.remoteElement,d=e.mediaConstraints,f=d.audio,h=d.video;this.options=Object.assign({},p.DEFAULT_CALL_OPTIONS,{audio:f,video:h,iceServers:r,localElement:u,remoteElement:l,micId:i,micLabel:a,camId:s,camLabel:c,speakerId:o},t),this._onMediaError=this._onMediaError.bind(this),this._init()}return Object.defineProperty(e.prototype,"nodeId",{get:function(){return this._targetNodeId},set:function(e){this._targetNodeId=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this.options.localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this.options.remoteStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"memberChannel",{get:function(){return"conference-member.".concat(this.id)},enumerable:!1,configurable:!0}),e.prototype.invite=function(){this.direction=p.Direction.Outbound,this.peer=new d.default(p.PeerType.Offer,this.options),this._registerPeerEvents()},e.prototype.answer=function(e){e&&(null==e?void 0:e.iceTransportPolicy)&&(this.options.iceTransportPolicy=null==e?void 0:e.iceTransportPolicy),this.direction=p.Direction.Inbound,this.peer=new d.default(p.PeerType.Answer,this.options),this._registerPeerEvents()},e.prototype.applyMediaConstraints=function(e){var t=this,n=e.mediaParams;n&&Object.keys(n).forEach((function(e){return t.peer.applyMediaConstraints(e,n[e])}))},e.prototype.hangup=function(e,t){var n=this;void 0===e&&(e={}),void 0===t&&(t=!0),u.default.trace("hangup requested with execute:",t),this.cause=e.cause||"NORMAL_CLEARING",this.causeCode=e.causeCode||16,this.setState(p.State.Hangup);var r=function(){n.peer&&n.peer.instance.close(),n.setState(p.State.Destroy)};if(t){u.default.debug("execute hangup on call ".concat(this.id," with cause:"),this.cause);var o=new l.Bye({sessid:this.session.sessionid,dialogParams:this.options});u.default.trace("Verto Bye stacktrace:",(0,y.stackTrace)()),this._execute(o).catch((function(e){return u.default.error("verto.bye failed!",e)})).then(r.bind(this))}else r()},e.prototype.transfer=function(e){var t=new l.Modify({sessid:this.session.sessionid,action:"transfer",destination:e,dialogParams:this.options});this._execute(t)},e.prototype.replace=function(e){var t=new l.Modify({sessid:this.session.sessionid,action:"replace",replaceCallID:e,dialogParams:this.options});this._execute(t)},e.prototype.hold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"hold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.unhold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"unhold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.toggleHold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"toggleHold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.dtmf=function(e){var t=new l.Info({sessid:this.session.sessionid,dtmf:e,dialogParams:this.options});this._execute(t)},e.prototype.message=function(e,t){var n={from:this.session.options.login,to:e,body:t},r=new l.Info({sessid:this.session.sessionid,msg:n,dialogParams:this.options});this._execute(r)},e.prototype.muteAudio=function(){(0,v.disableAudioTracks)(this.options.localStream)},e.prototype.unmuteAudio=function(){(0,v.enableAudioTracks)(this.options.localStream)},e.prototype.toggleAudioMute=function(){(0,v.toggleAudioTracks)(this.options.localStream)},e.prototype.setAudioInDevice=function(e){return i(this,void 0,void 0,(function(){var t,n,r,o,i,s;return a(this,(function(a){switch(a.label){case 0:return[4,this.peer.instance.getSenders()];case 1:return t=a.sent(),n=t.find((function(e){return"audio"===e.track.kind})),n?[4,(0,b.getUserMedia)({audio:{deviceId:{exact:e}}})]:[3,3];case 2:r=a.sent(),o=r.getAudioTracks()[0],i=this.options.localStream,(s=i.getAudioTracks()).length>0&&(o.enabled=s[0].enabled),n.replaceTrack(o),this.options.micId=e,i.getAudioTracks().forEach((function(e){return e.stop()})),i.getVideoTracks().forEach((function(e){return r.addTrack(e)})),this.options.localStream=r,a.label=3;case 3:return[2]}}))}))},e.prototype.muteVideo=function(){(0,v.disableVideoTracks)(this.options.localStream)},e.prototype.unmuteVideo=function(){(0,v.enableVideoTracks)(this.options.localStream)},e.prototype.toggleVideoMute=function(){(0,v.toggleVideoTracks)(this.options.localStream)},e.prototype.setVideoDevice=function(e){return i(this,void 0,void 0,(function(){var t,n,r,o,i,s,c,u;return a(this,(function(a){switch(a.label){case 0:return[4,this.peer.instance.getSenders()];case 1:return t=a.sent(),n=t.find((function(e){return"video"===e.track.kind})),n?[4,(0,b.getUserMedia)({video:{deviceId:{exact:e}}})]:[3,3];case 2:r=a.sent(),o=r.getVideoTracks()[0],i=this.options,s=i.localElement,c=i.localStream,(u=c.getVideoTracks()).length>0&&(o.enabled=u[0].enabled),n.replaceTrack(o),(0,b.attachMediaStream)(s,r),this.options.camId=e,c.getAudioTracks().forEach((function(e){return r.addTrack(e)})),c.getVideoTracks().forEach((function(e){return e.stop()})),this.options.localStream=r,a.label=3;case 3:return[2]}}))}))},e.prototype.deaf=function(){(0,v.disableAudioTracks)(this.options.remoteStream)},e.prototype.undeaf=function(){(0,v.enableAudioTracks)(this.options.remoteStream)},e.prototype.toggleDeaf=function(){(0,v.toggleAudioTracks)(this.options.remoteStream)},e.prototype.setState=function(e){var t=this;switch(this._prevState=this._state,this._state=e,this.state=p.State[this._state].toLowerCase(),this.prevState=p.State[this._prevState].toLowerCase(),u.default.info("Call ".concat(this.id," state change from ").concat(this.prevState," to ").concat(this.state)),this._dispatchNotification({type:p.NOTIFICATION_TYPE.callUpdate,call:this}),e){case p.State.Purge:u.default.debug("Purging call ".concat(this.id)),this.hangup({cause:"PURGE",causeCode:"01"},!1);break;case p.State.Active:setTimeout((function(){var e=t.options,n=e.remoteElement,r=e.speakerId;n&&r&&(0,b.setMediaElementSinkId)(n,r)}),0);break;case p.State.Destroy:this._finalize()}},e.prototype.handleMessage=function(e){var t=e.method,n=e.params;switch(t){case p.VertoMethod.Answer:if(this.gotAnswer=!0,this._state>=p.State.Active)return;this._state>=p.State.Early&&this.setState(p.State.Active),this.gotEarly||this._onRemoteSdp(n.sdp);break;case p.VertoMethod.Media:if(this._state>=p.State.Early)return;this.gotEarly=!0,this._onRemoteSdp(n.sdp);break;case p.VertoMethod.Display:case p.VertoMethod.Attach:var r=n.display_name,i=n.display_number,a=n.display_direction;this.extension=i;var s=a===p.Direction.Inbound?p.Direction.Outbound:p.Direction.Inbound,c={type:p.NOTIFICATION_TYPE[t],call:this,displayName:r,displayNumber:i,displayDirection:s};(0,h.trigger)(f.SwEvent.Notification,c,this.id)||(0,h.trigger)(f.SwEvent.Notification,c,this.session.uuid);break;case p.VertoMethod.Info:case p.VertoMethod.Event:c=o(o({},n),{type:p.NOTIFICATION_TYPE.generic,call:this}),(0,h.trigger)(f.SwEvent.Notification,c,this.id)||(0,h.trigger)(f.SwEvent.Notification,c,this.session.uuid);break;case p.VertoMethod.MediaParams:this.applyMediaConstraints(n);break;case p.VertoMethod.Bye:u.default.debug("Hanging up call ".concat(this.id)),this.hangup(n,!1)}},e.prototype.handleConferenceUpdate=function(e,t){return i(this,void 0,void 0,(function(){var n,r,i,s,c,l,d,f,h,v,b,g,_;return a(this,(function(a){switch(a.label){case 0:if(!this._checkConferenceSerno(e.wireSerno)&&e.name!==t.laName)return u.default.error("ConferenceUpdate invalid wireSerno or packet name:",e),[2,"INVALID_PACKET"];switch(n=e.action,r=e.data,i=e.hashKey,s=void 0===i?String(this._lastSerno):i,c=e.arrIndex,n){case"bootObj":return[3,1];case"add":return[3,8];case"modify":return[3,9];case"del":return[3,10];case"clear":return[3,11]}return[3,12];case 1:return this._lastSerno=0,t.chatID,l=t.chatChannel,d=t.infoChannel,f=t.modChannel,h=t.laName,v=t.conferenceMemberID,b=t.role,this._dispatchConferenceUpdate({action:p.ConferenceAction.Join,conferenceName:h,participantId:Number(v),role:b}),l?[4,this._subscribeConferenceChat(l)]:[3,3];case 2:a.sent(),a.label=3;case 3:return d?[4,this._subscribeConferenceInfo(d)]:[3,5];case 4:a.sent(),a.label=5;case 5:return f&&b===p.Role.Moderator?[4,this._subscribeConferenceModerator(f)]:[3,7];case 6:a.sent(),a.label=7;case 7:for(_ in g=[],r)g.push(o({callId:r[_][0],index:Number(_)},(0,y.mutateLiveArrayData)(r[_][1])));return this._dispatchConferenceUpdate({action:p.ConferenceAction.Bootstrap,participants:g}),[3,13];case 8:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Add,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 9:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Modify,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 10:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Delete,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 11:return this._dispatchConferenceUpdate({action:p.ConferenceAction.Clear}),[3,13];case 12:return this._dispatchConferenceUpdate({action:n,data:r,callId:s,index:c}),[3,13];case 13:return[2]}}))}))},e.prototype._addChannel=function(e){this.channels.includes(e)||this.channels.push(e);var t=this.session.relayProtocol;this.session._existsSubscription(t,e)&&(this.session.subscriptions[t][e]=o(o({},this.session.subscriptions[t][e]),{callId:this.id}))},e.prototype._subscribeConferenceChat=function(e){return i(this,void 0,void 0,(function(){var t,n,r=this;return a(this,(function(o){switch(o.label){case 0:return t={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.data,n=t.direction,o=t.from,i=t.fromDisplay,a=t.message,s=t.type;r._dispatchConferenceUpdate({action:p.ConferenceAction.ChatMessage,direction:n,participantNumber:o,participantName:i,messageText:a,messageType:s,messageId:e.eventSerno})}},[4,this.session.vertoSubscribe(t).catch((function(e){u.default.error("ConfChat subscription error:",e)}))];case 1:return n=o.sent(),(0,v.checkSubscribeResponse)(n,e)&&(this._addChannel(e),Object.defineProperties(this,{sendChatMessage:{configurable:!0,value:function(t,n){r.session.vertoBroadcast({nodeId:r.nodeId,channel:e,data:{action:"send",message:t,type:n}})}}})),[2]}}))}))},e.prototype._subscribeConferenceInfo=function(e){return i(this,void 0,void 0,(function(){var t,n,r=this;return a(this,(function(o){switch(o.label){case 0:return t={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.eventData;"layout-info"===t.contentType?(t.callID=r.id,(0,g.MCULayoutEventHandler)(r.session,t)):u.default.error("Conference-Info unknown contentType",e)}},[4,this.session.vertoSubscribe(t).catch((function(e){u.default.error("ConfInfo subscription error:",e)}))];case 1:return n=o.sent(),(0,v.checkSubscribeResponse)(n,e)&&this._addChannel(e),[2]}}))}))},e.prototype._confControl=function(e,t){void 0===t&&(t={});var n=o({application:"conf-control",callID:this.id,value:null},t);this.session.vertoBroadcast({nodeId:this.nodeId,channel:e,data:n})},e.prototype._subscribeConferenceModerator=function(e){return i(this,void 0,void 0,(function(){var t,n,o,i,s=this;return a(this,(function(a){switch(a.label){case 0:return t=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o=parseInt(n)||null;s._confControl(e,{command:t,id:o,value:r})},n=function(){var e=s.options.video;if("boolean"==typeof e&&!e||"object"===r(e)&&(0,y.objEmpty)(e))throw"Conference ".concat(s.id," has no video!")},o={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.data;if("list-videoLayouts"===t["conf-command"]){if(t.responseData){var n=JSON.stringify(t.responseData).replace(/IDS"/g,'Ids"');s._dispatchConferenceUpdate({action:p.ConferenceAction.LayoutList,layouts:JSON.parse(n)})}}else s._dispatchConferenceUpdate({action:p.ConferenceAction.ModCmdResponse,command:t["conf-command"],response:t.response})}},[4,this.session.vertoSubscribe(o).catch((function(e){u.default.error("ConfMod subscription error:",e)}))];case 1:return i=a.sent(),(0,v.checkSubscribeResponse)(i,e)&&(this.role=p.Role.Moderator,this._addChannel(e),Object.defineProperties(this,{listVideoLayouts:{configurable:!0,value:function(){t("list-videoLayouts")}},playMedia:{configurable:!0,value:function(e){t("play",null,e)}},stopMedia:{configurable:!0,value:function(){t("stop",null,"all")}},deaf:{configurable:!0,value:function(e){t("deaf",e)}},undeaf:{configurable:!0,value:function(e){t("undeaf",e)}},startRecord:{configurable:!0,value:function(e){t("recording",null,["start",e])}},stopRecord:{configurable:!0,value:function(){t("recording",null,["stop","all"])}},snapshot:{configurable:!0,value:function(e){n(),t("vid-write-png",null,e)}},setVideoLayout:{configurable:!0,value:function(e,r){n(),t("vid-layout",null,r?[e,r]:e)}},kick:{configurable:!0,value:function(e){t("kick",e)}},muteMic:{configurable:!0,value:function(e){t("tmute",e)}},muteVideo:{configurable:!0,value:function(e){n(),t("tvmute",e)}},presenter:{configurable:!0,value:function(e){n(),t("vid-res-id",e,"presenter")}},videoFloor:{configurable:!0,value:function(e){n(),t("vid-floor",e,"force")}},banner:{configurable:!0,value:function(e,r){n(),t("vid-banner",e,encodeURI(r))}},volumeDown:{configurable:!0,value:function(e){t("volume_out",e,"down")}},volumeUp:{configurable:!0,value:function(e){t("volume_out",e,"up")}},gainDown:{configurable:!0,value:function(e){t("volume_in",e,"down")}},gainUp:{configurable:!0,value:function(e){t("volume_in",e,"up")}},transfer:{configurable:!0,value:function(e,n){t("transfer",e,n)}}})),[2]}}))}))},e.prototype._handleChangeHoldStateSuccess=function(e){return"active"===e.holdState?this.setState(p.State.Active):this.setState(p.State.Held),!0},e.prototype._handleChangeHoldStateError=function(e){return u.default.error("Failed to ".concat(e.action," on call ").concat(this.id)),!1},e.prototype._onRemoteSdp=function(e){var t=this,n=(0,v.sdpMediaOrderHack)(e,this.peer.instance.localDescription.sdp);this.options.useStereo&&(n=(0,v.sdpStereoHack)(n));var r=(0,b.sdpToJsonHack)({sdp:n,type:p.PeerType.Answer});this.peer.instance.setRemoteDescription(r).then((function(){t.gotEarly&&t.setState(p.State.Early),t.gotAnswer&&t.setState(p.State.Active)})).catch((function(e){u.default.error("Call setRemoteDescription Error: ",e),t.hangup()}))},e.prototype._requestAnotherLocalDescription=function(){u.default.debug("_requestAnotherLocalDescription"),(0,y.isFunction)(this.peer.onSdpReadyTwice)?(0,h.trigger)(f.SwEvent.Error,new Error("SDP without candidates for the second time!"),this.session.uuid):(Object.defineProperty(this.peer,"onSdpReadyTwice",{value:this._onIceSdp.bind(this)}),this._iceDone=!1,this.peer.startNegotiation())},e.prototype._onIceSdp=function(e){var t=this;u.default.debug("_onIceSdp"),this._iceTimeout&&clearTimeout(this._iceTimeout),this._iceTimeout=null,this._iceDone=!0,this.peer.resetNegotiating();var n=e.sdp,r=e.type;if(-1!==n.indexOf("candidate")){var o=null,i={sessid:this.session.sessionid,sdp:n,dialogParams:this.options};switch(r){case p.PeerType.Offer:this.setState(p.State.Requesting),o=new l.Invite(i);break;case p.PeerType.Answer:this.setState(p.State.Answering),o=!0===this.options.attach?new l.Attach(i):new l.Answer(i);break;default:return u.default.error("".concat(this.id," - Unknown local SDP type:"),e),this.hangup({},!1)}this._execute(o).then((function(e){var n=e.node_id,o=void 0===n?null:n;t._targetNodeId=o,r===p.PeerType.Offer?t.setState(p.State.Trying):t.setState(p.State.Active)})).catch((function(e){u.default.error("".concat(t.id," - Sending ").concat(r," error:"),e),t.hangup()}))}else this._requestAnotherLocalDescription()},e.prototype._registerPeerEvents=function(){var e=this,t=this.peer.instance;this._iceDone=!1,t.onicecandidate=function(n){e._iceDone||(null===e._iceTimeout&&(u.default.debug("Setting _iceTimeout to 1 second"),e._iceTimeout=setTimeout((function(){return e._onIceSdp(t.localDescription)}),1e3)),n.candidate?u.default.debug("IceCandidate: address:",n.candidate.address," - port:",n.candidate.port," - type:",n.candidate.type):e._onIceSdp(t.localDescription))},t.addEventListener("track",(function(t){e.options.remoteStream=t.streams[0];var n=e.options,r=n.remoteElement,o=n.remoteStream;!1===n.screenShare&&(0,b.attachMediaStream)(r,o)})),t.addEventListener("addstream",(function(t){e.options.remoteStream=t.stream}))},e.prototype._onMediaError=function(e){this._dispatchNotification({type:p.NOTIFICATION_TYPE.userMediaError,error:e}),u.default.debug("Call ".concat(this.id," media error")),this.hangup({},!1)},e.prototype._dispatchConferenceUpdate=function(e){this._dispatchNotification(o({type:p.NOTIFICATION_TYPE.conferenceUpdate,call:this},e))},e.prototype._dispatchNotification=function(e){!0!==this.options.screenShare&&((0,h.trigger)(f.SwEvent.Notification,e,this.id,!1)||(0,h.trigger)(f.SwEvent.Notification,e,this.session.uuid))},e.prototype._execute=function(e){return this.nodeId&&(e.targetNodeId=this.nodeId),this.session.execute(e)},e.prototype._init=function(){var e=this.options,t=e.id,n=e.userVariables,r=e.remoteCallerNumber,o=e.onNotification;t||(this.options.id=(0,c.v4)()),this.id=this.options.id,n&&!(0,y.objEmpty)(n)||(this.options.userVariables=this.session.options.userVariables||{}),r||(this.options.remoteCallerNumber=this.options.destinationNumber),this.session.calls[this.id]=this,(0,h.register)(f.SwEvent.MediaError,this._onMediaError,this.id),(0,y.isFunction)(o)&&(0,h.register)(f.SwEvent.Notification,o.bind(this),this.id),this.setState(p.State.New),u.default.info("New Call with Options:",this.options)},e.prototype._finalize=function(){var e=this.options,t=e.remoteStream,n=e.localStream,r=e.remoteElement,o=e.localElement;(0,b.stopStream)(t),(0,b.stopStream)(n),!0!==this.options.screenShare&&((0,b.detachMediaStream)(r),(0,b.detachMediaStream)(o)),(0,h.deRegister)(f.SwEvent.MediaError,null,this.id),this.peer=null,this.session.calls[this.id]=null,delete this.session.calls[this.id]},e}();t.default=_},960:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=200&&e.status<300?[2,t]:(n="HTTP Request failed with status ".concat(e.status),(r=new Error(n)).payload=t,[2,Promise.reject(r)])}}))}))}))};var n=e.hostname,r=void 0===n?location.hostname:n;this.hostname=r}return e.prototype.userLogin=function(e,t){return o(this,void 0,void 0,(function(){var n;return i(this,(function(o){switch(o.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/login/user"),r(r({},c),{body:JSON.stringify({username:e,password:t,hostname:this.hostname})}))];case 1:return n=o.sent(),s.default.info("userLogin response",n),[2,n]}}))}))},e.prototype.guestLogin=function(e,t,n){return o(this,void 0,void 0,(function(){var o;return i(this,(function(i){switch(i.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/login/guest"),r(r({},c),{body:JSON.stringify({name:e,email:t,token:n,hostname:this.hostname})}))];case 1:return o=i.sent(),s.default.info("guestLogin response",o),[2,o]}}))}))},e.prototype.refresh=function(){return o(this,void 0,void 0,(function(){var e;return i(this,(function(t){switch(t.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/refresh"),r(r({},c),{method:"PUT",body:JSON.stringify({hostname:this.hostname})}))];case 1:return e=t.sent(),s.default.info("refresh response",e),[2,e]}}))}))},e.prototype.checkInviteToken=function(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/check-token"),r(r({},c),{body:JSON.stringify({token:e,hostname:this.hostname})}))];case 1:return t=n.sent(),s.default.info("checkInviteToken response",t),[2,t]}}))}))},e}();t.default=u},616:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=a(n(955)),c=n(203),u=n(789),l=n(291),d=n(317),f=n(858),p=n(403),h=n(203),v=n(203),y=function(){function e(e,t){this.type=e,this.options=t,this.onSdpReadyTwice=null,this._negotiating=!1,s.default.info("New Peer with type:",this.type,"Options:",this.options),this._constraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._sdpReady=this._sdpReady.bind(this),this._init()}return e.prototype.resetNegotiating=function(){this._negotiating=!1},Object.defineProperty(e.prototype,"isNegotiating",{get:function(){return this._negotiating},enumerable:!1,configurable:!0}),e.prototype.startNegotiation=function(){this._negotiating=!0,this._isOffer()?this._createOffer():this._createAnswer()},e.prototype._init=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,a,c,l,f,h,v,y,b,g,_,m=this;return o(this,(function(o){switch(o.label){case 0:return this.instance=(0,d.RTCPeerConnection)(this._config()),this.instance.onsignalingstatechange=function(e){switch(m.instance.signalingState){case"stable":break;case"closed":m.instance=null;break;default:m._negotiating=!0}},this.instance.onnegotiationneeded=function(e){m._negotiating?s.default.debug("Skip twice onnegotiationneeded.."):m.startNegotiation()},e=this.options,[4,this._retrieveLocalStream().catch((function(e){return(0,p.trigger)(u.SwEvent.MediaError,e,m.options.id),null}))];case 1:if(e.localStream=o.sent(),t=this.options,n=t.localElement,r=t.localStream,a=void 0===r?null:r,c=t.screenShare,l=void 0!==c&&c,!(0,d.streamIsValid)(a))return[3,12];if("function"!=typeof this.instance.addTrack)return[3,10];f=a.getTracks(),o.label=2;case 2:o.trys.push([2,7,8,9]),h=i(f),v=h.next(),o.label=3;case 3:return v.done?[3,6]:(y=v.value,[4,this.instance.addTrack(y,a)]);case 4:o.sent(),o.label=5;case 5:return v=h.next(),[3,3];case 6:return[3,9];case 7:return b=o.sent(),g={error:b},[3,9];case 8:try{v&&!v.done&&(_=h.return)&&_.call(h)}finally{if(g)throw g.error}return[7];case 9:return[3,11];case 10:this.instance.addStream(a),o.label=11;case 11:return!0!==l&&((0,d.muteMediaElement)(n),(0,d.attachMediaStream)(n,a)),[3,13];case 12:null===a&&this.startNegotiation(),o.label=13;case 13:return[2]}}))}))},e.prototype._createOffer=function(){this._isOffer()&&this.instance.createOffer(this._constraints).then(this._setLocalDescription.bind(this)).then(this._sdpReady).catch((function(e){return s.default.error("Peer _createOffer error:",e)}))},e.prototype._createAnswer=function(){var e=this;if(this._isAnswer()){var t=this.options,n=t.remoteSdp,r=t.useStereo?(0,c.sdpStereoHack)(n):n,o=(0,d.sdpToJsonHack)({sdp:r,type:l.PeerType.Offer});this.instance.setRemoteDescription(o).then((function(){return e.instance.createAnswer()})).then(this._setLocalDescription.bind(this)).then(this._sdpReady).catch((function(e){return s.default.error("Peer _createAnswer error:",e)}))}},e.prototype._setLocalDescription=function(e){var t=this.options,n=t.useStereo,r=t.googleMaxBitrate,o=t.googleMinBitrate,i=t.googleStartBitrate;return n&&(e.sdp=(0,c.sdpStereoHack)(e.sdp)),r&&o&&i&&(e.sdp=(0,c.sdpBitrateHack)(e.sdp,r,o,i)),s.default.debug("calling setLocalDescription with SDP:",e.sdp),this.instance.setLocalDescription(e)},e.prototype._sdpReady=function(){(0,f.isFunction)(this.onSdpReadyTwice)&&this.onSdpReadyTwice(this.instance.localDescription)},e.prototype._getSharedConstraints=function(e,t){var n,r;void 0===t&&(t="");var o=null!==(n=null==e?void 0:e.audio)&&void 0!==n&&n,i=!!t&&(0,v.sdpHasAudio)(t),a=null!==(r=null==e?void 0:e.video)&&void 0!==r&&r,s=!!t&&(0,v.sdpHasVideo)(t);return{audio:o&&i,video:a&&s}},e.prototype._retrieveLocalStream=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,i,a,s;return o(this,(function(o){switch(o.label){case 0:return(0,d.streamIsValid)(this.options.localStream)?[2,this.options.localStream]:[4,(0,c.getMediaConstraints)(this.options)];case 1:return e=o.sent(),t=e,this._isAnswer()&&(n=this.options,r=n.remoteSdp,i=n.useStereo,a=i?(0,c.sdpStereoHack)(r):r,s=(0,d.sdpToJsonHack)({sdp:a,type:l.PeerType.Offer}),t=this._getSharedConstraints(e,s.sdp)),[2,(0,c.getUserMedia)(t)]}}))}))},e.prototype._isOffer=function(){return this.type===l.PeerType.Offer},e.prototype._isAnswer=function(){return this.type===l.PeerType.Answer},e.prototype._config=function(){var e=this.options,t=e.iceServers,n=void 0===t?[]:t,r=e.iceTransportPolicy,o=void 0===r?"all":r,i=e.disableUdpIceServers,a=void 0!==i&&i,c={iceTransportPolicy:o,sdpSemantics:"unified-plan",bundlePolicy:"max-compat",iceServers:(0,h.filterIceServers)(n,{disableUdpIceServers:a})};return s.default.info("RTC config",c),c},e.prototype._getSenderByKind=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return this.instance?[4,this.instance.getSenders()]:[3,2];case 1:return[2,t.sent().find((function(t){var n=t.track;return n&&n.kind===e}))];case 2:return[2]}}))}))},e.prototype.applyMediaConstraints=function(e,t){return r(this,void 0,void 0,(function(){var n;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,4,,5]),[4,this._getSenderByKind(e)];case 1:return(n=r.sent())&&n.track?"live"!==n.track.readyState?[3,3]:(s.default.info("Apply ".concat(e," constraints"),this.options.id,t),[4,n.track.applyConstraints(t)]):[2,s.default.info("No sender to apply constraints",e,t)];case 2:r.sent(),r.label=3;case 3:return[3,5];case 4:return r.sent(),s.default.error("Error applying constraints",e,t),[3,5];case 5:return[2]}}))}))},e}();t.default=y},232:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";var n,r,o,i,a,s,c,u;Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceType=t.ConferenceAction=t.Role=t.State=t.DEFAULT_CALL_OPTIONS=t.NOTIFICATION_TYPE=t.VertoMethod=t.Direction=t.PeerType=void 0,function(e){e.Offer="offer",e.Answer="answer"}(r||(t.PeerType=r={})),function(e){e.Inbound="inbound",e.Outbound="outbound"}(o||(t.Direction=o={})),function(e){e.Invite="verto.invite",e.Attach="verto.attach",e.Answer="verto.answer",e.Info="verto.info",e.Display="verto.display",e.Media="verto.media",e.Event="verto.event",e.Bye="verto.bye",e.Punt="verto.punt",e.Broadcast="verto.broadcast",e.Subscribe="verto.subscribe",e.Unsubscribe="verto.unsubscribe",e.ClientReady="verto.clientReady",e.Modify="verto.modify",e.MediaParams="verto.mediaParams"}(i||(t.VertoMethod=i={})),t.NOTIFICATION_TYPE=((n={generic:"event"})[i.Display]="participantData",n[i.Attach]="participantData",n.conferenceUpdate="conferenceUpdate",n.callUpdate="callUpdate",n.vertoClientReady="vertoClientReady",n.userMediaError="userMediaError",n.refreshToken="refreshToken",n),t.DEFAULT_CALL_OPTIONS={destinationNumber:"",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:!1,useStereo:!1,attach:!1,screenShare:!1,userVariables:{}},function(e){e[e.New=0]="New",e[e.Requesting=1]="Requesting",e[e.Trying=2]="Trying",e[e.Recovering=3]="Recovering",e[e.Ringing=4]="Ringing",e[e.Answering=5]="Answering",e[e.Early=6]="Early",e[e.Active=7]="Active",e[e.Held=8]="Held",e[e.Hangup=9]="Hangup",e[e.Destroy=10]="Destroy",e[e.Purge=11]="Purge"}(a||(t.State=a={})),function(e){e.Participant="participant",e.Moderator="moderator"}(s||(t.Role=s={})),function(e){e.Join="join",e.Leave="leave",e.Bootstrap="bootstrap",e.Add="add",e.Modify="modify",e.Delete="delete",e.Clear="clear",e.ChatMessage="chatMessage",e.LayerInfo="layerInfo",e.LogoInfo="logoInfo",e.LayoutInfo="layoutInfo",e.LayoutList="layoutList",e.ModCmdResponse="modCommandResponse"}(c||(t.ConferenceAction=c={})),function(e){e.Video="videoinput",e.AudioIn="audioinput",e.AudioOut="audiooutput"}(u||(t.DeviceType=u={}))},203:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},l=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=0?/stereo=1;/.test(n[a])||(n[a]+="; stereo=1; sprop-stereo=1"):n[r]+="".concat(t,"a=fmtp:").concat(o," stereo=1; sprop-stereo=1"),n.join(t)};var w=function(e){return/^m=audio/.test(e)},S=function(e){return/^m=video/.test(e)};t.sdpMediaOrderHack=function(e,t){var n="\r\n",r=t.split(n);if(r.findIndex(w)0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=n(605);for(var o in r)this[o]=r[o];r.__esModule&&Object.defineProperty(this,"__esModule",{value:!0})})(); \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/templates/index.html b/packages/js/examples/flask-mute-test/templates/index.html new file mode 100644 index 00000000..3a16bfec --- /dev/null +++ b/packages/js/examples/flask-mute-test/templates/index.html @@ -0,0 +1,594 @@ + + + + SignalWire Audio Mute Fix Test + + + + + + + + + + + + + + + + +
+
+
+

๐ŸŽค SignalWire Audio Mute Fix Test

+

+ Automated test for verifying that audio mute state is preserved when switching input devices. +

+
+ Space: {{ space }}
+ Project ID: {{ project_id }}
+ JWT: Loading...
+ SDK: Local Build with Mute Fix +
+
+
+ +
+
+ +
+
+
Connection
+ + +
+ Status: Not Connected +
+
+
+ + +
+
+
Call Control
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+ Call Status: None +
+
+
+ + +
+
+
Automated Test
+ +
+ Test not started +
+
+
+
+ +
+ +
+
+
Local Video
+ +
+
+
Remote Video
+ +
+
+ + + + + +
+
+
Test Results
+
+

No tests run yet. Click "Run Mute Fix Test" to start.

+
+
+
+ + +
+
+
Console Log
+
+
Waiting for connection...
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/test_jwt.py b/packages/js/examples/flask-mute-test/test_jwt.py new file mode 100644 index 00000000..17a0c0d8 --- /dev/null +++ b/packages/js/examples/flask-mute-test/test_jwt.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +""" +Test script to verify JWT generation works correctly +""" + +import os +import sys +import requests +import uuid + +# Configuration from environment variables +SIGNALWIRE_SPACE = os.getenv('SIGNALWIRE_SPACE') +SIGNALWIRE_PROJECT_ID = os.getenv('SIGNALWIRE_PROJECT_ID') +SIGNALWIRE_TOKEN = os.getenv('SIGNALWIRE_TOKEN') + +def test_jwt_generation(): + """Test JWT token generation using SignalWire REST API""" + + print(f"Testing JWT generation...") + print(f"Space: {SIGNALWIRE_SPACE}") + print(f"Project ID: {SIGNALWIRE_PROJECT_ID}") + print(f"Token: {SIGNALWIRE_TOKEN[:10]}...") + + # Use SignalWire REST API to generate JWT token + url = f"https://{SIGNALWIRE_SPACE}/api/relay/rest/jwt" + + # Set up authentication + auth = (SIGNALWIRE_PROJECT_ID, SIGNALWIRE_TOKEN) + + # Request payload + payload = { + "resource": f"browser-{uuid.uuid4()}", # Unique resource identifier + "expires_in": 60 # Token expires in 60 minutes + } + + print(f"Making request to: {url}") + print(f"Payload: {payload}") + + # Make the request + try: + response = requests.post( + url, + json=payload, + auth=auth, + headers={'Content-Type': 'application/json'} + ) + + print(f"Response status: {response.status_code}") + print(f"Response headers: {dict(response.headers)}") + print(f"Response text: {response.text}") + + if response.status_code == 200: + data = response.json() + jwt_token = data.get('jwt_token') + print(f"โœ… JWT token generated successfully!") + print(f"Token: {jwt_token[:50]}...") + return jwt_token + else: + print(f"โŒ Failed to generate JWT token: {response.status_code} - {response.text}") + return None + + except Exception as e: + print(f"โŒ Exception during JWT generation: {str(e)}") + return None + +if __name__ == '__main__': + if not all([SIGNALWIRE_SPACE, SIGNALWIRE_PROJECT_ID, SIGNALWIRE_TOKEN]): + print("โŒ Missing required environment variables:") + print("- SIGNALWIRE_SPACE") + print("- SIGNALWIRE_PROJECT_ID") + print("- SIGNALWIRE_TOKEN") + sys.exit(1) + + test_jwt_generation() \ No newline at end of file From 63526fb0966bba89067ec8097d87611be3a6e568 Mon Sep 17 00:00:00 2001 From: Brian West Date: Wed, 9 Jul 2025 12:09:38 -0500 Subject: [PATCH 2/4] Update README --- .../js/examples/flask-mute-test/README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/js/examples/flask-mute-test/README.md b/packages/js/examples/flask-mute-test/README.md index 82e7bec9..9b232bb5 100644 --- a/packages/js/examples/flask-mute-test/README.md +++ b/packages/js/examples/flask-mute-test/README.md @@ -155,20 +155,23 @@ Visit `http://localhost:3000/health` to verify: ### JWT Token Generation -The Flask app generates JWT tokens according to the [SignalWire Browser SDK v2 documentation](https://developer.signalwire.com/sdks/browser-sdk/v2/): +The Flask app generates JWT tokens using the SignalWire REST API endpoint: ```python +# Request to SignalWire REST API +url = f"https://{SIGNALWIRE_SPACE}/api/relay/rest/jwt" payload = { - "iss": SIGNALWIRE_PROJECT_ID, # Issuer (your project) - "sub": f"user-{uuid.uuid4()}", # Subject (unique user) - "iat": int(now.timestamp()), # Issued at - "exp": int((now + timedelta(hours=1)).timestamp()), # Expires in 1 hour - "jti": str(uuid.uuid4()), # JWT ID (unique token) - "resource": "browser", # Resource type - "scopes": ["webrtc"] # Required scopes + "resource": f"browser-{uuid.uuid4()}", # Unique resource identifier + "expires_in": 60 # Token expires in 60 minutes } + +# Authentication using project ID and token +auth = (SIGNALWIRE_PROJECT_ID, SIGNALWIRE_TOKEN) +response = requests.post(url, json=payload, auth=auth) ``` +This approach uses SignalWire's official JWT generation endpoint rather than manually creating JWT tokens. + ### The Fix Implementation The fix is in `packages/common/src/webrtc/BaseCall.ts`: From c61231aab4bc08c596f57c4cecfc485fd237b071 Mon Sep 17 00:00:00 2001 From: Brian West Date: Thu, 10 Jul 2025 13:01:25 -0500 Subject: [PATCH 3/4] remove built files --- .../flask-mute-test/static/signalwire.js | 588 ------------------ .../flask-mute-test/static/signalwire.min.js | 2 - 2 files changed, 590 deletions(-) delete mode 100644 packages/js/examples/flask-mute-test/static/signalwire.js delete mode 100644 packages/js/examples/flask-mute-test/static/signalwire.min.js diff --git a/packages/js/examples/flask-mute-test/static/signalwire.js b/packages/js/examples/flask-mute-test/static/signalwire.js deleted file mode 100644 index daddeb4d..00000000 --- a/packages/js/examples/flask-mute-test/static/signalwire.js +++ /dev/null @@ -1,588 +0,0 @@ -/*! - * Relay SDK for JavaScript v1.5.1-rc.1 (https://signalwire.com) - * Copyright 2018-2019 SignalWire - * Licensed under MIT(https://github.com/signalwire/signalwire-node/blob/master/LICENSE) - */ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "../common/node_modules/loglevel/lib/loglevel.js": -/*!*******************************************************!*\ - !*** ../common/node_modules/loglevel/lib/loglevel.js ***! - \*******************************************************/ -/***/ (function(module, exports, __webpack_require__) { - -eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n return defaultLogger;\n}));\n\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/loglevel/lib/loglevel.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js": -/*!*******************************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (bytesToUuid);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/index.js": -/*!*************************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/index.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ v1: () => (/* reexport safe */ _v1_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ v3: () => (/* reexport safe */ _v3_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ v4: () => (/* reexport safe */ _v4_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ v5: () => (/* reexport safe */ _v5_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _v1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v1.js */ \"../common/node_modules/uuid/dist/esm-browser/v1.js\");\n/* harmony import */ var _v3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./v3.js */ \"../common/node_modules/uuid/dist/esm-browser/v3.js\");\n/* harmony import */ var _v4_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./v4.js */ \"../common/node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var _v5_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./v5.js */ \"../common/node_modules/uuid/dist/esm-browser/v5.js\");\n\n\n\n\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/index.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/md5.js": -/*!***********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/md5.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (md5);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/md5.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/rng.js": -/*!***********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/rng.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rng)\n/* harmony export */ });\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/rng.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/sha1.js": -/*!************************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/sha1.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) {\n W[t] = M[i][t];\n }\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sha1);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/sha1.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/v1.js": -/*!**********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/v1.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rng.js */ \"../common/node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(b);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v1);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v1.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/v3.js": -/*!**********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/v3.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _v35_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v35.js */ \"../common/node_modules/uuid/dist/esm-browser/v35.js\");\n/* harmony import */ var _md5_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./md5.js */ \"../common/node_modules/uuid/dist/esm-browser/md5.js\");\n\n\nvar v3 = (0,_v35_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v3', 0x30, _md5_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v3);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v3.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/v35.js": -/*!***********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/v35.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DNS: () => (/* binding */ DNS),\n/* harmony export */ URL: () => (/* binding */ URL),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nvar DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nvar URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, version, hashfunc) {\n var generateUUID = function generateUUID(value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v35.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/v4.js": -/*!**********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/v4.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rng.js */ \"../common/node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bytesToUuid.js */ \"../common/node_modules/uuid/dist/esm-browser/bytesToUuid.js\");\n\n\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || _rng_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0,_bytesToUuid_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rnds);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v4.js?"); - -/***/ }), - -/***/ "../common/node_modules/uuid/dist/esm-browser/v5.js": -/*!**********************************************************!*\ - !*** ../common/node_modules/uuid/dist/esm-browser/v5.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _v35_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v35.js */ \"../common/node_modules/uuid/dist/esm-browser/v35.js\");\n/* harmony import */ var _sha1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sha1.js */ \"../common/node_modules/uuid/dist/esm-browser/sha1.js\");\n\n\nvar v5 = (0,_v35_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v5', 0x50, _sha1_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v5);\n\n//# sourceURL=webpack://@signalwire/js/../common/node_modules/uuid/dist/esm-browser/v5.js?"); - -/***/ }), - -/***/ "../common/src/BaseSession.ts": -/*!************************************!*\ - !*** ../common/src/BaseSession.ts ***! - \************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar logger_1 = __importDefault(__webpack_require__(/*! ./util/logger */ \"../common/src/util/logger.ts\"));\nvar Connection_1 = __importDefault(__webpack_require__(/*! ./services/Connection */ \"../common/src/services/Connection.ts\"));\nvar Setup_1 = __importDefault(__webpack_require__(/*! ./services/Setup */ \"../common/src/services/Setup.ts\"));\nvar Handler_1 = __webpack_require__(/*! ./services/Handler */ \"../common/src/services/Handler.ts\");\nvar BroadcastHandler_1 = __importDefault(__webpack_require__(/*! ./services/BroadcastHandler */ \"../common/src/services/BroadcastHandler.ts\"));\nvar constants_1 = __webpack_require__(/*! ./util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar Blade_1 = __webpack_require__(/*! ./messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar helpers_1 = __webpack_require__(/*! ./util/helpers */ \"../common/src/util/helpers.ts\");\nvar storage_1 = __webpack_require__(/*! ./util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar KEEPALIVE_INTERVAL = 10 * 1000;\nvar BaseSession = function () {\n function BaseSession(options) {\n this.options = options;\n this.uuid = (0, uuid_1.v4)();\n this.sessionid = '';\n this.subscriptions = {};\n this.expiresAt = 0;\n this.signature = null;\n this.relayProtocol = null;\n this.contexts = [];\n this.timeoutErrorCode = -32000;\n this.connection = null;\n this._jwtAuth = false;\n this._doKeepAlive = false;\n this._autoReconnect = true;\n this._idle = false;\n this._executeQueue = [];\n if (!this.validateOptions()) {\n throw new Error('Invalid init options');\n }\n this._onSocketOpen = this._onSocketOpen.bind(this);\n this._onSocketCloseOrError = this._onSocketCloseOrError.bind(this);\n this._onSocketMessage = this._onSocketMessage.bind(this);\n this._handleLoginError = this._handleLoginError.bind(this);\n this._checkTokenExpiration = this._checkTokenExpiration.bind(this);\n this._attachListeners();\n this.connection = new Connection_1[\"default\"](this);\n }\n Object.defineProperty(BaseSession.prototype, \"__logger\", {\n get: function get() {\n return logger_1[\"default\"];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"connected\", {\n get: function get() {\n return this.connection && this.connection.connected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"expired\", {\n get: function get() {\n return this.expiresAt && this.expiresAt <= Date.now() / 1000;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseSession.prototype, \"reconnectDelay\", {\n get: function get() {\n return (0, helpers_1.randomInt)(6, 2) * 1000;\n },\n enumerable: false,\n configurable: true\n });\n BaseSession.prototype.execute = function (msg) {\n var _this = this;\n if (this._idle) {\n return new Promise(function (resolve) {\n return _this._executeQueue.push({\n resolve: resolve,\n msg: msg\n });\n });\n }\n if (!this.connected) {\n return new Promise(function (resolve) {\n _this._executeQueue.push({\n resolve: resolve,\n msg: msg\n });\n _this.connect();\n });\n }\n return this.connection.send(msg)[\"catch\"](function (error) {\n if (error.code && error.code === _this.timeoutErrorCode) {\n _this._closeConnection();\n }\n throw error;\n });\n };\n BaseSession.prototype.executeRaw = function (text) {\n if (this._idle) {\n this._executeQueue.push({\n msg: text\n });\n return;\n }\n this.connection.sendRawText(text);\n };\n BaseSession.prototype.validateOptions = function () {\n var _a = this.options,\n _b = _a.project,\n project = _b === void 0 ? false : _b,\n _c = _a.token,\n token = _c === void 0 ? false : _c;\n return Boolean(project && token);\n };\n BaseSession.prototype.broadcast = function (params) {};\n BaseSession.prototype.subscribe = function (_a) {\n var protocol = _a.protocol,\n channels = _a.channels,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var bs, result, _b, failed_channels, _c, subscribe_channels;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n bs = new Blade_1.Subscription({\n command: constants_1.ADD,\n protocol: protocol,\n channels: channels\n });\n return [4, this.execute(bs)];\n case 1:\n result = _d.sent();\n _b = result.failed_channels, failed_channels = _b === void 0 ? [] : _b, _c = result.subscribe_channels, subscribe_channels = _c === void 0 ? [] : _c;\n if (failed_channels.length) {\n failed_channels.forEach(function (channel) {\n return _this._removeSubscription(protocol, channel);\n });\n }\n subscribe_channels.forEach(function (channel) {\n return _this._addSubscription(protocol, handler, channel);\n });\n return [2, result];\n }\n });\n });\n };\n BaseSession.prototype.unsubscribe = function (_a) {\n var protocol = _a.protocol,\n channels = _a.channels,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var bs;\n return __generator(this, function (_b) {\n bs = new Blade_1.Subscription({\n command: constants_1.REMOVE,\n protocol: protocol,\n channels: channels\n });\n return [2, this.execute(bs)];\n });\n });\n };\n BaseSession.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n clearTimeout(this._reconnectTimeout);\n this.subscriptions = {};\n this._autoReconnect = false;\n this.relayProtocol = null;\n this._closeConnection();\n return [4, storage_1.sessionStorage.removeItem(this.signature)];\n case 1:\n _a.sent();\n this._executeQueue = [];\n this._detachListeners();\n return [2];\n }\n });\n });\n };\n BaseSession.prototype.on = function (eventName, callback) {\n (0, Handler_1.register)(eventName, callback, this.uuid);\n return this;\n };\n BaseSession.prototype.off = function (eventName, callback) {\n (0, Handler_1.deRegister)(eventName, callback, this.uuid);\n return this;\n };\n BaseSession.prototype.refreshToken = function (token) {\n return __awaiter(this, void 0, void 0, function () {\n var br, response, _a, _b, _c, expires_at, error_1;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n this.options.token = token;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6,, 7]);\n if (!this.expired) return [3, 3];\n return [4, this.connect()];\n case 2:\n _d.sent();\n return [3, 5];\n case 3:\n br = new Blade_1.Reauthenticate(this.options.project, token, this.sessionid);\n return [4, this.execute(br)];\n case 4:\n response = _d.sent();\n _a = response.authorization, _b = _a === void 0 ? {} : _a, _c = _b.expires_at, expires_at = _c === void 0 ? null : _c;\n this.expiresAt = +expires_at || 0;\n _d.label = 5;\n case 5:\n return [3, 7];\n case 6:\n error_1 = _d.sent();\n logger_1[\"default\"].error('refreshToken error:', error_1);\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, error_1, this.uuid, false);\n return [3, 7];\n case 7:\n return [2];\n }\n });\n });\n };\n BaseSession.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.connection) {\n this.connection = new Connection_1[\"default\"](this);\n }\n this._attachListeners();\n if (!this.connection.isAlive) {\n this.connection.connect();\n }\n return [2];\n });\n });\n };\n BaseSession.prototype._handleLoginError = function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, error, this.uuid);\n };\n BaseSession.prototype._onSocketOpen = function () {\n return __awaiter(this, void 0, void 0, function () {\n var tokenKey, _a, project, token, bc, response, sessionid, nodeid, master_nodeid, _b, _c, _d, expires_at, _e, signature, _f;\n var _g;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n this._idle = false;\n tokenKey = this._jwtAuth ? 'jwt_token' : 'token';\n _a = this.options, project = _a.project, token = _a.token;\n bc = new Blade_1.Connect((_g = {\n project: project\n }, _g[tokenKey] = token, _g), this.sessionid);\n return [4, this.execute(bc)[\"catch\"](this._handleLoginError)];\n case 1:\n response = _h.sent();\n if (!response) return [3, 3];\n this._autoReconnect = true;\n sessionid = response.sessionid, nodeid = response.nodeid, master_nodeid = response.master_nodeid, _b = response.authorization, _c = _b === void 0 ? {} : _b, _d = _c.expires_at, expires_at = _d === void 0 ? null : _d, _e = _c.signature, signature = _e === void 0 ? null : _e;\n this.expiresAt = +expires_at || 0;\n this.signature = signature;\n _f = this;\n return [4, (0, Setup_1[\"default\"])(this)];\n case 2:\n _f.relayProtocol = _h.sent();\n this._checkTokenExpiration();\n this.sessionid = sessionid;\n this.nodeid = nodeid;\n this.master_nodeid = master_nodeid;\n this._emptyExecuteQueues();\n this._pong = null;\n this._keepAlive();\n this._handleBladeConnectResponse(response);\n (0, Handler_1.trigger)(constants_1.SwEvent.Ready, this, this.uuid);\n logger_1[\"default\"].info('Session Ready!');\n _h.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseSession.prototype._handleBladeConnectResponse = function (response) {};\n BaseSession.prototype._onSocketCloseOrError = function (event) {\n var _this = this;\n logger_1[\"default\"].error(\"Socket \".concat(event.type, \" \").concat(event.message));\n if (this.relayProtocol) {\n (0, Handler_1.deRegisterAll)(this.relayProtocol);\n }\n for (var sub in this.subscriptions) {\n (0, Handler_1.deRegisterAll)(sub);\n }\n this.subscriptions = {};\n this.contexts = [];\n if (this.expired) {\n this._idle = true;\n this._autoReconnect = false;\n this.expiresAt = 0;\n }\n if (this._autoReconnect) {\n this._reconnectTimeout = setTimeout(function () {\n return _this.connect();\n }, this.reconnectDelay);\n }\n };\n BaseSession.prototype._onSocketMessage = function (response) {\n var method = response.method,\n params = response.params;\n switch (method) {\n case constants_1.BladeMethod.Broadcast:\n (0, BroadcastHandler_1[\"default\"])(this, params);\n break;\n case constants_1.BladeMethod.Disconnect:\n this._idle = true;\n break;\n }\n };\n BaseSession.prototype._removeSubscription = function (protocol, channel) {\n if (!this._existsSubscription(protocol, channel)) {\n return;\n }\n if (channel) {\n delete this.subscriptions[protocol][channel];\n (0, Handler_1.deRegister)(protocol, null, channel);\n } else {\n delete this.subscriptions[protocol];\n (0, Handler_1.deRegisterAll)(protocol);\n }\n };\n BaseSession.prototype._addSubscription = function (protocol, handler, channel) {\n if (handler === void 0) {\n handler = null;\n }\n if (this._existsSubscription(protocol, channel)) {\n return;\n }\n if (!this._existsSubscription(protocol)) {\n this.subscriptions[protocol] = {};\n }\n this.subscriptions[protocol][channel] = {};\n if ((0, helpers_1.isFunction)(handler)) {\n (0, Handler_1.register)(protocol, handler, channel);\n }\n };\n BaseSession.prototype._existsSubscription = function (protocol, channel) {\n if (this.subscriptions.hasOwnProperty(protocol)) {\n if (!channel || channel && this.subscriptions[protocol].hasOwnProperty(channel)) {\n return true;\n }\n }\n return false;\n };\n BaseSession.prototype._attachListeners = function () {\n this._detachListeners();\n this.on(constants_1.SwEvent.SocketOpen, this._onSocketOpen);\n this.on(constants_1.SwEvent.SocketClose, this._onSocketCloseOrError);\n this.on(constants_1.SwEvent.SocketError, this._onSocketCloseOrError);\n this.on(constants_1.SwEvent.SocketMessage, this._onSocketMessage);\n };\n BaseSession.prototype._detachListeners = function () {\n this.off(constants_1.SwEvent.SocketOpen, this._onSocketOpen);\n this.off(constants_1.SwEvent.SocketClose, this._onSocketCloseOrError);\n this.off(constants_1.SwEvent.SocketError, this._onSocketCloseOrError);\n this.off(constants_1.SwEvent.SocketMessage, this._onSocketMessage);\n };\n BaseSession.prototype._emptyExecuteQueues = function () {\n var _this = this;\n this._executeQueue.forEach(function (_a) {\n var resolve = _a.resolve,\n msg = _a.msg;\n if (typeof msg === 'string') {\n _this.executeRaw(msg);\n } else {\n resolve(_this.execute(msg));\n }\n });\n };\n BaseSession.prototype._closeConnection = function () {\n this._idle = true;\n clearTimeout(this._keepAliveTimeout);\n if (this.connection) {\n this.connection.close();\n }\n };\n BaseSession.prototype._checkTokenExpiration = function () {\n if (!this.expiresAt) {\n return;\n }\n var diff = this.expiresAt - Date.now() / 1000;\n if (diff <= 60) {\n logger_1[\"default\"].warn('Your JWT is going to expire. You should refresh it to keep the session live.');\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, {\n type: constants_2.NOTIFICATION_TYPE.refreshToken,\n session: this\n }, this.uuid, false);\n }\n if (!this.expired) {\n setTimeout(this._checkTokenExpiration, 30 * 1000);\n }\n };\n BaseSession.prototype._keepAlive = function () {\n var _this = this;\n if (this._doKeepAlive !== true) {\n return;\n }\n if (this._pong === false) {\n return this._closeConnection();\n }\n this._pong = false;\n this.execute(new Blade_1.Ping()).then(function () {\n return _this._pong = true;\n })[\"catch\"](function () {\n return _this._pong = false;\n });\n this._keepAliveTimeout = setTimeout(function () {\n return _this._keepAlive();\n }, KEEPALIVE_INTERVAL);\n };\n BaseSession.on = function (eventName, callback) {\n (0, Handler_1.register)(eventName, callback);\n };\n BaseSession.off = function (eventName) {\n (0, Handler_1.deRegister)(eventName);\n };\n BaseSession.uuid = function () {\n return (0, uuid_1.v4)();\n };\n return BaseSession;\n}();\nexports[\"default\"] = BaseSession;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/BaseSession.ts?"); - -/***/ }), - -/***/ "../common/src/BrowserSession.ts": -/*!***************************************!*\ - !*** ../common/src/BrowserSession.ts ***! - \***************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ./util/logger */ \"../common/src/util/logger.ts\"));\nvar BaseSession_1 = __importDefault(__webpack_require__(/*! ./BaseSession */ \"../common/src/BaseSession.ts\"));\nvar Handler_1 = __webpack_require__(/*! ./services/Handler */ \"../common/src/services/Handler.ts\");\nvar constants_1 = __webpack_require__(/*! ./util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar helpers_1 = __webpack_require__(/*! ./webrtc/helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_2 = __webpack_require__(/*! ./util/helpers */ \"../common/src/util/helpers.ts\");\nvar Verto_1 = __webpack_require__(/*! ./messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar storage_1 = __webpack_require__(/*! ./util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar webrtc_1 = __webpack_require__(/*! ./util/webrtc */ \"../common/src/util/webrtc/index.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./webrtc/WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar BrowserSession = function (_super) {\n __extends(BrowserSession, _super);\n function BrowserSession(options) {\n var _this = _super.call(this, options) || this;\n _this.options = options;\n _this.calls = {};\n _this.autoRecoverCalls = true;\n _this._iceServers = [];\n _this._localElement = null;\n _this._remoteElement = null;\n _this._jwtAuth = true;\n _this._devices = {};\n _this._audioConstraints = true;\n _this._videoConstraints = false;\n _this._speaker = null;\n WebRTC_1.WebRTCOverridesManager.getInstance().RTCPeerConnection = options.RTCPeerConnection;\n WebRTC_1.WebRTCOverridesManager.getInstance().enumerateDevices = options.enumerateDevices;\n WebRTC_1.WebRTCOverridesManager.getInstance().getUserMedia = options.getUserMedia;\n WebRTC_1.WebRTCOverridesManager.getInstance().getDisplayMedia = options.getDisplayMedia;\n WebRTC_1.WebRTCOverridesManager.getInstance().getSupportedConstraints = options.getSupportedConstraints;\n WebRTC_1.WebRTCOverridesManager.getInstance().attachMediaStream = options.attachMediaStream;\n WebRTC_1.WebRTCOverridesManager.getInstance().streamIsValid = options.streamIsValid;\n return _this;\n }\n BrowserSession.prototype.validateOptions = function () {\n var _a = this.options,\n RTCPeerConnection = _a.RTCPeerConnection,\n getDisplayMedia = _a.getDisplayMedia,\n getUserMedia = _a.getUserMedia,\n attachMediaStream = _a.attachMediaStream,\n streamIsValid = _a.streamIsValid;\n return (!RTCPeerConnection && !getDisplayMedia && !getUserMedia && !attachMediaStream && !streamIsValid || !!RTCPeerConnection && !!getDisplayMedia && !!getUserMedia && !!attachMediaStream && !!streamIsValid) && _super.prototype.validateOptions.call(this);\n };\n Object.defineProperty(BrowserSession.prototype, \"reconnectDelay\", {\n get: function get() {\n return 1000;\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype._handleBladeConnectResponse = function (response) {\n var _a = response.ice_servers,\n ice_servers = _a === void 0 ? [] : _a;\n this.iceServers = ice_servers;\n };\n BrowserSession.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4, storage_1.localStorage.getItem(constants_1.SESSION_ID)];\n case 1:\n _a.sessionid = _b.sent();\n _super.prototype.connect.call(this);\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.checkPermissions = function (audio, video) {\n if (audio === void 0) {\n audio = true;\n }\n if (video === void 0) {\n video = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var stream, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2,, 3]);\n return [4, (0, helpers_1.getUserMedia)({\n audio: audio,\n video: video\n })];\n case 1:\n stream = _b.sent();\n (0, webrtc_1.stopStream)(stream);\n return [2, true];\n case 2:\n _a = _b.sent();\n return [2, false];\n case 3:\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.logout = function () {\n this.disconnect();\n };\n BrowserSession.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n Object.keys(this.calls).forEach(function (k) {\n return _this.calls[k].setState(constants_2.State.Purge);\n });\n this.calls = {};\n return [4, _super.prototype.disconnect.call(this)];\n case 1:\n _a.sent();\n return [2];\n }\n });\n });\n };\n BrowserSession.prototype.speedTest = function (bytes) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n (0, Handler_1.registerOnce)(constants_1.SwEvent.SpeedTest, function (speedTestResult) {\n var upDur = speedTestResult.upDur,\n downDur = speedTestResult.downDur;\n var upKps = upDur ? bytes * 8 / (upDur / 1000) / 1024 : 0;\n var downKps = downDur ? bytes * 8 / (downDur / 1000) / 1024 : 0;\n resolve({\n upDur: upDur,\n downDur: downDur,\n upKps: upKps.toFixed(0),\n downKps: downKps.toFixed(0)\n });\n }, _this.uuid);\n bytes = Number(bytes);\n if (!bytes) {\n return reject(\"Invalid parameter 'bytes': \".concat(bytes));\n }\n _this.executeRaw(\"#SPU \".concat(bytes));\n var loops = bytes / 1024;\n if (bytes % 1024) {\n loops++;\n }\n var dots = '.'.repeat(1024);\n for (var i = 0; i < loops; i++) {\n _this.executeRaw(\"#SPB \".concat(dots));\n }\n _this.executeRaw('#SPE');\n });\n };\n BrowserSession.prototype.getDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)()[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getVideoDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.Video)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getAudioInDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.AudioIn)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.getAudioOutDevices = function () {\n var _this = this;\n return (0, helpers_1.getDevices)(constants_2.DeviceType.AudioOut)[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.uuid);\n return [];\n });\n };\n BrowserSession.prototype.validateDeviceId = function (id, label, kind) {\n return (0, helpers_1.assureDeviceId)(id, label, kind);\n };\n BrowserSession.prototype.refreshDevices = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cache, devices;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger_1[\"default\"].warn('This method has been deprecated. Use getDevices() instead.');\n cache = {};\n ['videoinput', 'audioinput', 'audiooutput'].map(function (kind) {\n cache[kind] = {};\n Object.defineProperty(cache[kind], 'toArray', {\n value: function value() {\n var _this = this;\n return Object.keys(this).map(function (k) {\n return _this[k];\n });\n }\n });\n });\n return [4, this.getDevices()];\n case 1:\n devices = _a.sent();\n devices.forEach(function (t) {\n if (cache.hasOwnProperty(t.kind)) {\n cache[t.kind][t.deviceId] = t;\n }\n });\n this._devices = cache;\n return [2, this.devices];\n }\n });\n });\n };\n Object.defineProperty(BrowserSession.prototype, \"devices\", {\n get: function get() {\n return this._devices || {};\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.getDeviceResolutions = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n return [4, (0, helpers_1.scanResolutions)(deviceId)];\n case 1:\n return [2, _a.sent()];\n case 2:\n error_1 = _a.sent();\n throw error_1;\n case 3:\n return [2];\n }\n });\n });\n };\n Object.defineProperty(BrowserSession.prototype, \"videoDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getVideoDevices() instead.');\n return this._devices.videoinput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"audioInDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getAudioInDevices() instead.');\n return this._devices.audioinput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"audioOutDevices\", {\n get: function get() {\n logger_1[\"default\"].warn('This property has been deprecated. Use getAudioOutDevices() instead.');\n return this._devices.audiooutput || {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"mediaConstraints\", {\n get: function get() {\n return {\n audio: this._audioConstraints,\n video: this._videoConstraints\n };\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.setAudioSettings = function (settings) {\n return __awaiter(this, void 0, void 0, function () {\n var micId, micLabel, constraints, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n micId = settings.micId, micLabel = settings.micLabel, constraints = __rest(settings, [\"micId\", \"micLabel\"]);\n (0, helpers_1.removeUnsupportedConstraints)(constraints);\n _a = this;\n return [4, (0, helpers_1.checkDeviceIdConstraints)(micId, micLabel, 'audioinput', constraints)];\n case 1:\n _a._audioConstraints = _b.sent();\n this.micId = micId;\n this.micLabel = micLabel;\n return [2, this._audioConstraints];\n }\n });\n });\n };\n BrowserSession.prototype.disableMicrophone = function () {\n this._audioConstraints = false;\n };\n BrowserSession.prototype.enableMicrophone = function () {\n this._audioConstraints = true;\n };\n BrowserSession.prototype.setVideoSettings = function (settings) {\n return __awaiter(this, void 0, void 0, function () {\n var camId, camLabel, constraints, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n camId = settings.camId, camLabel = settings.camLabel, constraints = __rest(settings, [\"camId\", \"camLabel\"]);\n (0, helpers_1.removeUnsupportedConstraints)(constraints);\n _a = this;\n return [4, (0, helpers_1.checkDeviceIdConstraints)(camId, camLabel, 'videoinput', constraints)];\n case 1:\n _a._videoConstraints = _b.sent();\n this.camId = camId;\n this.camLabel = camLabel;\n return [2, this._videoConstraints];\n }\n });\n });\n };\n BrowserSession.prototype.disableWebcam = function () {\n this._videoConstraints = false;\n };\n BrowserSession.prototype.enableWebcam = function () {\n this._videoConstraints = true;\n };\n Object.defineProperty(BrowserSession.prototype, \"iceServers\", {\n get: function get() {\n return this._iceServers;\n },\n set: function set(servers) {\n if (typeof servers === 'boolean') {\n this._iceServers = servers ? [{\n urls: ['stun:stun.l.google.com:19302']\n }] : [];\n } else {\n this._iceServers = servers;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"speaker\", {\n get: function get() {\n return this._speaker;\n },\n set: function set(deviceId) {\n this._speaker = deviceId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"localElement\", {\n get: function get() {\n return this._localElement;\n },\n set: function set(tag) {\n this._localElement = (0, helpers_2.findElementByType)(tag);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserSession.prototype, \"remoteElement\", {\n get: function get() {\n return this._remoteElement;\n },\n set: function set(tag) {\n this._remoteElement = (0, helpers_2.findElementByType)(tag);\n },\n enumerable: false,\n configurable: true\n });\n BrowserSession.prototype.vertoBroadcast = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channel,\n eventChannel = _b === void 0 ? '' : _b,\n data = _a.data;\n if (!eventChannel) {\n throw new Error('Invalid channel for broadcast: ' + eventChannel);\n }\n var msg = new Verto_1.Broadcast({\n sessid: this.sessionid,\n eventChannel: eventChannel,\n data: data\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n this.execute(msg)[\"catch\"](function (error) {\n return error;\n });\n };\n BrowserSession.prototype.vertoSubscribe = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channels,\n eventChannel = _b === void 0 ? [] : _b,\n handler = _a.handler;\n return __awaiter(this, void 0, void 0, function () {\n var msg, response, _c, _d, unauthorized, _e, subscribed;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n eventChannel = eventChannel.filter(function (channel) {\n return channel && !_this._existsSubscription(_this.relayProtocol, channel);\n });\n if (!eventChannel.length) {\n return [2, {}];\n }\n msg = new Verto_1.Subscribe({\n sessid: this.sessionid,\n eventChannel: eventChannel\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n return [4, this.execute(msg)];\n case 1:\n response = _f.sent();\n _c = (0, helpers_1.destructSubscribeResponse)(response), _d = _c.unauthorized, unauthorized = _d === void 0 ? [] : _d, _e = _c.subscribed, subscribed = _e === void 0 ? [] : _e;\n if (unauthorized.length) {\n unauthorized.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n }\n subscribed.forEach(function (channel) {\n return _this._addSubscription(_this.relayProtocol, handler, channel);\n });\n return [2, response];\n }\n });\n });\n };\n BrowserSession.prototype.vertoUnsubscribe = function (_a) {\n var nodeId = _a.nodeId,\n _b = _a.channels,\n eventChannel = _b === void 0 ? [] : _b;\n return __awaiter(this, void 0, void 0, function () {\n var msg, response, _c, _d, unsubscribed, _e, notSubscribed;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n eventChannel = eventChannel.filter(function (channel) {\n return channel && _this._existsSubscription(_this.relayProtocol, channel);\n });\n if (!eventChannel.length) {\n return [2, {}];\n }\n msg = new Verto_1.Unsubscribe({\n sessid: this.sessionid,\n eventChannel: eventChannel\n });\n if (nodeId) {\n msg.targetNodeId = nodeId;\n }\n return [4, this.execute(msg)];\n case 1:\n response = _f.sent();\n _c = (0, helpers_1.destructSubscribeResponse)(response), _d = _c.unsubscribed, unsubscribed = _d === void 0 ? [] : _d, _e = _c.notSubscribed, notSubscribed = _e === void 0 ? [] : _e;\n unsubscribed.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n notSubscribed.forEach(function (channel) {\n return _this._removeSubscription(_this.relayProtocol, channel);\n });\n return [2, response];\n }\n });\n });\n };\n return BrowserSession;\n}(BaseSession_1[\"default\"]);\nexports[\"default\"] = BrowserSession;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/BrowserSession.ts?"); - -/***/ }), - -/***/ "../common/src/messages/BaseMessage.ts": -/*!*********************************************!*\ - !*** ../common/src/messages/BaseMessage.ts ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar BaseMessage = function () {\n function BaseMessage() {}\n BaseMessage.prototype.buildRequest = function (params) {\n this.request = __assign({\n jsonrpc: '2.0',\n id: (0, uuid_1.v4)()\n }, params);\n };\n return BaseMessage;\n}();\nexports[\"default\"] = BaseMessage;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/BaseMessage.ts?"); - -/***/ }), - -/***/ "../common/src/messages/Blade.ts": -/*!***************************************!*\ - !*** ../common/src/messages/Blade.ts ***! - \***************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Ping = exports.Reauthenticate = exports.Execute = exports.Subscription = exports.Connect = void 0;\nvar Connect_1 = __webpack_require__(/*! ./blade/Connect */ \"../common/src/messages/blade/Connect.ts\");\nObject.defineProperty(exports, \"Connect\", ({\n enumerable: true,\n get: function get() {\n return Connect_1.Connect;\n }\n}));\nvar Execute_1 = __webpack_require__(/*! ./blade/Execute */ \"../common/src/messages/blade/Execute.ts\");\nObject.defineProperty(exports, \"Execute\", ({\n enumerable: true,\n get: function get() {\n return Execute_1.Execute;\n }\n}));\nvar Subscription_1 = __webpack_require__(/*! ./blade/Subscription */ \"../common/src/messages/blade/Subscription.ts\");\nObject.defineProperty(exports, \"Subscription\", ({\n enumerable: true,\n get: function get() {\n return Subscription_1.Subscription;\n }\n}));\nvar Reauthenticate_1 = __webpack_require__(/*! ./blade/Reauthenticate */ \"../common/src/messages/blade/Reauthenticate.ts\");\nObject.defineProperty(exports, \"Reauthenticate\", ({\n enumerable: true,\n get: function get() {\n return Reauthenticate_1.Reauthenticate;\n }\n}));\nvar Ping_1 = __webpack_require__(/*! ./blade/Ping */ \"../common/src/messages/blade/Ping.ts\");\nObject.defineProperty(exports, \"Ping\", ({\n enumerable: true,\n get: function get() {\n return Ping_1.Ping;\n }\n}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/Blade.ts?"); - -/***/ }), - -/***/ "../common/src/messages/Verto.ts": -/*!***************************************!*\ - !*** ../common/src/messages/Verto.ts ***! - \***************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Result = exports.Unsubscribe = exports.Subscribe = exports.Broadcast = exports.Info = exports.Modify = exports.Bye = exports.Attach = exports.Answer = exports.Invite = exports.Login = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./verto/BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Login_1 = __webpack_require__(/*! ./verto/Login */ \"../common/src/messages/verto/Login.ts\");\nObject.defineProperty(exports, \"Login\", ({\n enumerable: true,\n get: function get() {\n return Login_1.Login;\n }\n}));\nvar Result_1 = __webpack_require__(/*! ./verto/Result */ \"../common/src/messages/verto/Result.ts\");\nObject.defineProperty(exports, \"Result\", ({\n enumerable: true,\n get: function get() {\n return Result_1.Result;\n }\n}));\nvar constants_1 = __webpack_require__(/*! ../webrtc/constants */ \"../common/src/webrtc/constants.ts\");\nvar Invite = function (_super) {\n __extends(Invite, _super);\n function Invite() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Invite.prototype.toString = function () {\n return constants_1.VertoMethod.Invite;\n };\n return Invite;\n}(BaseRequest_1[\"default\"]);\nexports.Invite = Invite;\nvar Answer = function (_super) {\n __extends(Answer, _super);\n function Answer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Answer.prototype.toString = function () {\n return constants_1.VertoMethod.Answer;\n };\n return Answer;\n}(BaseRequest_1[\"default\"]);\nexports.Answer = Answer;\nvar Attach = function (_super) {\n __extends(Attach, _super);\n function Attach() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Attach.prototype.toString = function () {\n return constants_1.VertoMethod.Attach;\n };\n return Attach;\n}(BaseRequest_1[\"default\"]);\nexports.Attach = Attach;\nvar Bye = function (_super) {\n __extends(Bye, _super);\n function Bye() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Bye.prototype.toString = function () {\n return constants_1.VertoMethod.Bye;\n };\n return Bye;\n}(BaseRequest_1[\"default\"]);\nexports.Bye = Bye;\nvar Modify = function (_super) {\n __extends(Modify, _super);\n function Modify() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Modify.prototype.toString = function () {\n return constants_1.VertoMethod.Modify;\n };\n return Modify;\n}(BaseRequest_1[\"default\"]);\nexports.Modify = Modify;\nvar Info = function (_super) {\n __extends(Info, _super);\n function Info() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Info.prototype.toString = function () {\n return constants_1.VertoMethod.Info;\n };\n return Info;\n}(BaseRequest_1[\"default\"]);\nexports.Info = Info;\nvar Broadcast = function (_super) {\n __extends(Broadcast, _super);\n function Broadcast() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Broadcast.prototype.toString = function () {\n return constants_1.VertoMethod.Broadcast;\n };\n return Broadcast;\n}(BaseRequest_1[\"default\"]);\nexports.Broadcast = Broadcast;\nvar Subscribe = function (_super) {\n __extends(Subscribe, _super);\n function Subscribe() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Subscribe.prototype.toString = function () {\n return constants_1.VertoMethod.Subscribe;\n };\n return Subscribe;\n}(BaseRequest_1[\"default\"]);\nexports.Subscribe = Subscribe;\nvar Unsubscribe = function (_super) {\n __extends(Unsubscribe, _super);\n function Unsubscribe() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Unsubscribe.prototype.toString = function () {\n return constants_1.VertoMethod.Unsubscribe;\n };\n return Unsubscribe;\n}(BaseRequest_1[\"default\"]);\nexports.Unsubscribe = Unsubscribe;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/Verto.ts?"); - -/***/ }), - -/***/ "../common/src/messages/blade/Connect.ts": -/*!***********************************************!*\ - !*** ../common/src/messages/blade/Connect.ts ***! - \***********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setAgentName = exports.Connect = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar major = 2;\nvar minor = 1;\nvar revision = 0;\nvar agent = null;\nvar setAgentName = function setAgentName(name) {\n agent = name;\n};\nexports.setAgentName = setAgentName;\nvar Connect = function (_super) {\n __extends(Connect, _super);\n function Connect(authentication, sessionid) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.connect';\n var params = {\n version: {\n major: major,\n minor: minor,\n revision: revision\n },\n authentication: authentication\n };\n if (sessionid) {\n params.sessionid = sessionid;\n }\n if (agent) {\n params.agent = agent;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Connect;\n}(BaseMessage_1[\"default\"]);\nexports.Connect = Connect;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Connect.ts?"); - -/***/ }), - -/***/ "../common/src/messages/blade/Execute.ts": -/*!***********************************************!*\ - !*** ../common/src/messages/blade/Execute.ts ***! - \***********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Execute = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Execute = function (_super) {\n __extends(Execute, _super);\n function Execute(params, id) {\n if (id === void 0) {\n id = '';\n }\n var _this = _super.call(this) || this;\n _this.method = 'blade.execute';\n var tmp;\n if (params.hasOwnProperty('result')) {\n tmp = {\n result: params\n };\n } else {\n tmp = {\n method: _this.method,\n params: params\n };\n }\n if (id) {\n tmp.id = id;\n }\n _this.buildRequest(tmp);\n return _this;\n }\n return Execute;\n}(BaseMessage_1[\"default\"]);\nexports.Execute = Execute;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Execute.ts?"); - -/***/ }), - -/***/ "../common/src/messages/blade/Ping.ts": -/*!********************************************!*\ - !*** ../common/src/messages/blade/Ping.ts ***! - \********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Ping = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Ping = function (_super) {\n __extends(Ping, _super);\n function Ping() {\n var _this = _super.call(this) || this;\n _this.method = 'blade.ping';\n _this.buildRequest({\n method: _this.method,\n params: {}\n });\n return _this;\n }\n return Ping;\n}(BaseMessage_1[\"default\"]);\nexports.Ping = Ping;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Ping.ts?"); - -/***/ }), - -/***/ "../common/src/messages/blade/Reauthenticate.ts": -/*!******************************************************!*\ - !*** ../common/src/messages/blade/Reauthenticate.ts ***! - \******************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Reauthenticate = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Reauthenticate = function (_super) {\n __extends(Reauthenticate, _super);\n function Reauthenticate(project, jwt_token, sessionid) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.reauthenticate';\n var params = {\n sessionid: sessionid,\n authentication: {\n project: project,\n jwt_token: jwt_token\n }\n };\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Reauthenticate;\n}(BaseMessage_1[\"default\"]);\nexports.Reauthenticate = Reauthenticate;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Reauthenticate.ts?"); - -/***/ }), - -/***/ "../common/src/messages/blade/Subscription.ts": -/*!****************************************************!*\ - !*** ../common/src/messages/blade/Subscription.ts ***! - \****************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Subscription = void 0;\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar Subscription = function (_super) {\n __extends(Subscription, _super);\n function Subscription(params) {\n var _this = _super.call(this) || this;\n _this.method = 'blade.subscription';\n if (params.hasOwnProperty('auto_create') && !params.auto_create) {\n delete params.auto_create;\n }\n if (params.hasOwnProperty('downstream') && !params.downstream) {\n delete params.downstream;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Subscription;\n}(BaseMessage_1[\"default\"]);\nexports.Subscription = Subscription;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/blade/Subscription.ts?"); - -/***/ }), - -/***/ "../common/src/messages/verto/BaseRequest.ts": -/*!***************************************************!*\ - !*** ../common/src/messages/verto/BaseRequest.ts ***! - \***************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar BaseMessage_1 = __importDefault(__webpack_require__(/*! ../BaseMessage */ \"../common/src/messages/BaseMessage.ts\"));\nvar tmpMap = {\n id: 'callID',\n destinationNumber: 'destination_number',\n remoteCallerName: 'remote_caller_id_name',\n remoteCallerNumber: 'remote_caller_id_number',\n callerName: 'caller_id_name',\n callerNumber: 'caller_id_number'\n};\nvar BaseRequest = function (_super) {\n __extends(BaseRequest, _super);\n function BaseRequest(params) {\n if (params === void 0) {\n params = {};\n }\n var _this = _super.call(this) || this;\n if (params.hasOwnProperty('dialogParams')) {\n var _a = params.dialogParams,\n remoteSdp = _a.remoteSdp,\n localStream = _a.localStream,\n remoteStream = _a.remoteStream,\n onNotification = _a.onNotification,\n camId = _a.camId,\n micId = _a.micId,\n speakerId = _a.speakerId,\n dialogParams = __rest(_a, [\"remoteSdp\", \"localStream\", \"remoteStream\", \"onNotification\", \"camId\", \"micId\", \"speakerId\"]);\n for (var key in tmpMap) {\n if (key && dialogParams.hasOwnProperty(key)) {\n dialogParams[tmpMap[key]] = dialogParams[key];\n delete dialogParams[key];\n }\n }\n params.dialogParams = dialogParams;\n }\n _this.buildRequest({\n method: _this.toString(),\n params: params\n });\n return _this;\n }\n return BaseRequest;\n}(BaseMessage_1[\"default\"]);\nexports[\"default\"] = BaseRequest;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/BaseRequest.ts?"); - -/***/ }), - -/***/ "../common/src/messages/verto/Login.ts": -/*!*********************************************!*\ - !*** ../common/src/messages/verto/Login.ts ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Login = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Login = function (_super) {\n __extends(Login, _super);\n function Login(login, passwd, sessionid, userVariables) {\n if (userVariables === void 0) {\n userVariables = {};\n }\n var _this = _super.call(this) || this;\n _this.method = 'login';\n var params = {\n login: login,\n passwd: passwd,\n userVariables: userVariables,\n loginParams: {}\n };\n if (sessionid) {\n params.sessid = sessionid;\n }\n _this.buildRequest({\n method: _this.method,\n params: params\n });\n return _this;\n }\n return Login;\n}(BaseRequest_1[\"default\"]);\nexports.Login = Login;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/Login.ts?"); - -/***/ }), - -/***/ "../common/src/messages/verto/Result.ts": -/*!**********************************************!*\ - !*** ../common/src/messages/verto/Result.ts ***! - \**********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Result = void 0;\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ./BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Result = function (_super) {\n __extends(Result, _super);\n function Result(id, method) {\n var _this = _super.call(this) || this;\n _this.buildRequest({\n id: id,\n result: {\n method: method\n }\n });\n return _this;\n }\n return Result;\n}(BaseRequest_1[\"default\"]);\nexports.Result = Result;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/messages/verto/Result.ts?"); - -/***/ }), - -/***/ "../common/src/services/BroadcastHandler.ts": -/*!**************************************************!*\ - !*** ../common/src/services/BroadcastHandler.ts ***! - \**************************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar VertoHandler_1 = __importDefault(__webpack_require__(/*! ../webrtc/VertoHandler */ \"../common/src/webrtc/VertoHandler.ts\"));\nexports[\"default\"] = function (session, broadcastParams) {\n var protocol = broadcastParams.protocol,\n event = broadcastParams.event,\n params = broadcastParams.params;\n var event_type = params.event_type,\n node_id = params.node_id;\n if (protocol !== session.relayProtocol) {\n return logger_1[\"default\"].error('Session protocol mismatch.');\n }\n switch (event) {\n case 'queuing.relay.events':\n if (event_type === 'webrtc.message') {\n var handler = new VertoHandler_1[\"default\"](session);\n handler.nodeId = node_id;\n handler.handleMessage(params.params);\n } else {\n session.calling.notificationHandler(params);\n }\n break;\n case 'queuing.relay.tasks':\n session.tasking.notificationHandler(params);\n break;\n case 'queuing.relay.messaging':\n session.messaging.notificationHandler(params);\n break;\n default:\n return logger_1[\"default\"].error(\"Unknown notification type: \".concat(event_type));\n }\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/BroadcastHandler.ts?"); - -/***/ }), - -/***/ "../common/src/services/Connection.ts": -/*!********************************************!*\ - !*** ../common/src/services/Connection.ts ***! - \********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setWebSocket = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebSocketClass = typeof WebSocket !== 'undefined' ? WebSocket : null;\nvar setWebSocket = function setWebSocket(websocket) {\n WebSocketClass = websocket;\n};\nexports.setWebSocket = setWebSocket;\nvar WS_STATE = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n};\nvar TIMEOUT_MS = 10 * 1000;\nvar Connection = function () {\n function Connection(session) {\n this.session = session;\n this._wsClient = null;\n this._host = 'wss://relay.signalwire.com';\n this._timers = {};\n this.upDur = null;\n this.downDur = null;\n var host = session.options.host;\n if (host) {\n this._host = (0, helpers_1.checkWebSocketHost)(host);\n }\n }\n Object.defineProperty(Connection.prototype, \"connected\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.OPEN;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"connecting\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CONNECTING;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"closing\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CLOSING;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"closed\", {\n get: function get() {\n return this._wsClient && this._wsClient.readyState === WS_STATE.CLOSED;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"isAlive\", {\n get: function get() {\n return this.connecting || this.connected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connection.prototype, \"isDead\", {\n get: function get() {\n return this.closing || this.closed;\n },\n enumerable: false,\n configurable: true\n });\n Connection.prototype.connect = function () {\n var _this = this;\n this._wsClient = new WebSocketClass(this._host);\n this._wsClient.onopen = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketOpen, event, _this.session.uuid);\n };\n this._wsClient.onclose = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketClose, event, _this.session.uuid);\n };\n this._wsClient.onerror = function (event) {\n return (0, Handler_1.trigger)(constants_1.SwEvent.SocketError, event, _this.session.uuid);\n };\n this._wsClient.onmessage = function (event) {\n var msg = (0, helpers_1.safeParseJson)(event.data);\n if (typeof msg === 'string') {\n _this._handleStringResponse(msg);\n return;\n }\n _this._unsetTimer(msg.id);\n logger_1[\"default\"].debug('RECV: \\n', JSON.stringify(msg, null, 2), '\\n');\n if (!(0, Handler_1.trigger)(msg.id, msg)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.SocketMessage, msg, _this.session.uuid);\n }\n };\n };\n Connection.prototype.sendRawText = function (request) {\n this._wsClient.send(request);\n };\n Connection.prototype.send = function (bladeObj) {\n var _this = this;\n var request = bladeObj.request;\n var promise = new Promise(function (resolve, reject) {\n if (request.hasOwnProperty('result')) {\n return resolve();\n }\n (0, Handler_1.registerOnce)(request.id, function (response) {\n var _a = (0, helpers_1.destructResponse)(response),\n result = _a.result,\n error = _a.error;\n return error ? reject(error) : resolve(result);\n });\n _this._setTimer(request.id);\n });\n logger_1[\"default\"].debug('SEND: \\n', JSON.stringify(request, null, 2), '\\n');\n this._wsClient.send(JSON.stringify(request));\n return promise;\n };\n Connection.prototype.close = function () {\n if (this._wsClient) {\n (0, helpers_2.isFunction)(this._wsClient._beginClose) ? this._wsClient._beginClose() : this._wsClient.close();\n }\n this._wsClient = null;\n };\n Connection.prototype._unsetTimer = function (id) {\n clearTimeout(this._timers[id]);\n delete this._timers[id];\n };\n Connection.prototype._setTimer = function (id) {\n var _this = this;\n this._timers[id] = setTimeout(function () {\n (0, Handler_1.trigger)(id, {\n error: {\n code: _this.session.timeoutErrorCode,\n message: 'Timeout'\n }\n });\n _this._unsetTimer(id);\n }, TIMEOUT_MS);\n };\n Connection.prototype._handleStringResponse = function (response) {\n if (/^#SP/.test(response)) {\n switch (response[3]) {\n case 'U':\n this.upDur = parseInt(response.substring(4));\n break;\n case 'D':\n this.downDur = parseInt(response.substring(4));\n (0, Handler_1.trigger)(constants_1.SwEvent.SpeedTest, {\n upDur: this.upDur,\n downDur: this.downDur\n }, this.session.uuid);\n break;\n }\n } else {\n logger_1[\"default\"].warn('Unknown message from socket', response);\n }\n };\n return Connection;\n}();\nexports[\"default\"] = Connection;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Connection.ts?"); - -/***/ }), - -/***/ "../common/src/services/Handler.ts": -/*!*****************************************!*\ - !*** ../common/src/services/Handler.ts ***! - \*****************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.queueLength = exports.isQueued = exports.deRegisterAll = exports.deRegister = exports.registerOnce = exports.register = exports.trigger = void 0;\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar GLOBAL = 'GLOBAL';\nvar queue = {};\nvar isQueued = function isQueued(eventName, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n return queue.hasOwnProperty(eventName) && queue[eventName].hasOwnProperty(uniqueId);\n};\nexports.isQueued = isQueued;\nvar queueLength = function queueLength(eventName, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!isQueued(eventName, uniqueId)) {\n return 0;\n }\n return queue[eventName][uniqueId].length;\n};\nexports.queueLength = queueLength;\nvar register = function register(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!queue.hasOwnProperty(eventName)) {\n queue[eventName] = {};\n }\n if (!queue[eventName].hasOwnProperty(uniqueId)) {\n queue[eventName][uniqueId] = [];\n }\n queue[eventName][uniqueId].push(callback);\n};\nexports.register = register;\nvar registerOnce = function registerOnce(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n var cb = function cb(data) {\n deRegister(eventName, cb, uniqueId);\n callback(data);\n };\n cb.prototype.targetRef = callback;\n return register(eventName, cb, uniqueId);\n};\nexports.registerOnce = registerOnce;\nvar deRegister = function deRegister(eventName, callback, uniqueId) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (!isQueued(eventName, uniqueId)) {\n return false;\n }\n if ((0, helpers_1.isFunction)(callback)) {\n var len = queue[eventName][uniqueId].length;\n for (var i = len - 1; i >= 0; i--) {\n var fn = queue[eventName][uniqueId][i];\n if (callback === fn || fn.prototype && callback === fn.prototype.targetRef) {\n queue[eventName][uniqueId].splice(i, 1);\n }\n }\n } else {\n queue[eventName][uniqueId] = [];\n }\n if (queue[eventName][uniqueId].length === 0) {\n delete queue[eventName][uniqueId];\n if ((0, helpers_1.objEmpty)(queue[eventName])) {\n delete queue[eventName];\n }\n }\n return true;\n};\nexports.deRegister = deRegister;\nvar trigger = function trigger(eventName, data, uniqueId, globalPropagation) {\n if (uniqueId === void 0) {\n uniqueId = GLOBAL;\n }\n if (globalPropagation === void 0) {\n globalPropagation = true;\n }\n var _propagate = globalPropagation && uniqueId !== GLOBAL;\n if (!isQueued(eventName, uniqueId)) {\n if (_propagate) {\n trigger(eventName, data);\n }\n return false;\n }\n var len = queue[eventName][uniqueId].length;\n if (!len) {\n if (_propagate) {\n trigger(eventName, data);\n }\n return false;\n }\n for (var i = len - 1; i >= 0; i--) {\n queue[eventName][uniqueId][i](data);\n }\n if (_propagate) {\n trigger(eventName, data);\n }\n return true;\n};\nexports.trigger = trigger;\nvar deRegisterAll = function deRegisterAll(eventName) {\n delete queue[eventName];\n};\nexports.deRegisterAll = deRegisterAll;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Handler.ts?"); - -/***/ }), - -/***/ "../common/src/services/Setup.ts": -/*!***************************************!*\ - !*** ../common/src/services/Setup.ts ***! - \***************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Blade_1 = __webpack_require__(/*! ../messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar storage_1 = __webpack_require__(/*! ../util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar SETUP_PROTOCOL = 'signalwire';\nvar SETUP_METHOD = 'setup';\nvar SETUP_CHANNEL = 'notifications';\nexports[\"default\"] = function (session) {\n return __awaiter(void 0, void 0, void 0, function () {\n var params, signature, relayProtocol, prevProtocol, be, _a, protocol;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n params = {};\n signature = session.signature, relayProtocol = session.relayProtocol;\n if (!(relayProtocol && relayProtocol.split('_')[1] === signature)) return [3, 1];\n params.protocol = relayProtocol;\n return [3, 3];\n case 1:\n return [4, storage_1.sessionStorage.getItem(signature)];\n case 2:\n prevProtocol = _b.sent();\n if (prevProtocol) {\n params.protocol = prevProtocol;\n }\n _b.label = 3;\n case 3:\n be = new Blade_1.Execute({\n protocol: SETUP_PROTOCOL,\n method: SETUP_METHOD,\n params: params\n });\n return [4, session.execute(be)];\n case 4:\n _a = _b.sent().protocol, protocol = _a === void 0 ? null : _a;\n if (!protocol) return [3, 7];\n return [4, session.subscribe({\n protocol: protocol,\n channels: [SETUP_CHANNEL]\n })];\n case 5:\n _b.sent();\n return [4, storage_1.sessionStorage.setItem(signature, protocol)];\n case 6:\n _b.sent();\n return [3, 8];\n case 7:\n logger_1[\"default\"].error('Error during setup the session protocol.');\n _b.label = 8;\n case 8:\n return [2, protocol];\n }\n });\n });\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/services/Setup.ts?"); - -/***/ }), - -/***/ "../common/src/util/constants/index.ts": -/*!*********************************************!*\ - !*** ../common/src/util/constants/index.ts ***! - \*********************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BladeMethod = exports.SwEvent = exports.SESSION_ID = exports.REMOVE = exports.ADD = exports.STORAGE_PREFIX = void 0;\nexports.STORAGE_PREFIX = '@signalwire:';\nexports.ADD = 'add';\nexports.REMOVE = 'remove';\nexports.SESSION_ID = 'sessId';\nvar SwEvent;\n(function (SwEvent) {\n SwEvent[\"SocketOpen\"] = \"signalwire.socket.open\";\n SwEvent[\"SocketClose\"] = \"signalwire.socket.close\";\n SwEvent[\"SocketError\"] = \"signalwire.socket.error\";\n SwEvent[\"SocketMessage\"] = \"signalwire.socket.message\";\n SwEvent[\"SpeedTest\"] = \"signalwire.internal.speedtest\";\n SwEvent[\"Ready\"] = \"signalwire.ready\";\n SwEvent[\"Error\"] = \"signalwire.error\";\n SwEvent[\"Notification\"] = \"signalwire.notification\";\n SwEvent[\"Messages\"] = \"signalwire.messages\";\n SwEvent[\"Calls\"] = \"signalwire.calls\";\n SwEvent[\"MediaError\"] = \"signalwire.rtc.mediaError\";\n})(SwEvent || (exports.SwEvent = SwEvent = {}));\nvar BladeMethod;\n(function (BladeMethod) {\n BladeMethod[\"Broadcast\"] = \"blade.broadcast\";\n BladeMethod[\"Disconnect\"] = \"blade.disconnect\";\n})(BladeMethod || (exports.BladeMethod = BladeMethod = {}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/constants/index.ts?"); - -/***/ }), - -/***/ "../common/src/util/helpers.ts": -/*!*************************************!*\ - !*** ../common/src/util/helpers.ts ***! - \*************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.stackTrace = exports.normalizeAsyncAPIs = exports.randomInt = exports.destructResponse = exports.checkWebSocketHost = exports.findElementByType = exports.isFunction = exports.isDefined = exports.safeParseJson = exports.mutateLiveArrayData = exports.mutateStorageKey = exports.objEmpty = exports.deepCopy = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ./logger */ \"../common/src/util/logger.ts\"));\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/util/constants/index.ts\");\nvar deepCopy = function deepCopy(obj) {\n return JSON.parse(JSON.stringify(obj));\n};\nexports.deepCopy = deepCopy;\nvar objEmpty = function objEmpty(obj) {\n return Object.keys(obj).length === 0;\n};\nexports.objEmpty = objEmpty;\nvar mutateStorageKey = function mutateStorageKey(key) {\n return \"\".concat(constants_1.STORAGE_PREFIX).concat(key);\n};\nexports.mutateStorageKey = mutateStorageKey;\nvar mutateLiveArrayData = function mutateLiveArrayData(data) {\n var _a = __read(data, 6),\n participantId = _a[0],\n participantNumber = _a[1],\n participantName = _a[2],\n codec = _a[3],\n mediaJson = _a[4],\n participantData = _a[5];\n var media = {};\n try {\n media = JSON.parse(mediaJson.replace(/ID\"/g, 'Id\"'));\n } catch (error) {\n logger_1[\"default\"].warn('Verto LA invalid media JSON string:', mediaJson);\n }\n return {\n participantId: Number(participantId),\n participantNumber: participantNumber,\n participantName: participantName,\n codec: codec,\n media: media,\n participantData: participantData\n };\n};\nexports.mutateLiveArrayData = mutateLiveArrayData;\nvar safeParseJson = function safeParseJson(value) {\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(value);\n } catch (error) {\n return value;\n }\n};\nexports.safeParseJson = safeParseJson;\nvar isDefined = function isDefined(variable) {\n return typeof variable !== 'undefined';\n};\nexports.isDefined = isDefined;\nvar isFunction = function isFunction(variable) {\n return variable instanceof Function || typeof variable === 'function';\n};\nexports.isFunction = isFunction;\nvar findElementByType = function findElementByType(tag) {\n if ((typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== 'object' || !('getElementById' in document)) {\n return null;\n }\n if (typeof tag === 'string') {\n return document.getElementById(tag) || null;\n } else if (typeof tag === 'function') {\n return tag();\n } else if (tag instanceof HTMLMediaElement) {\n return tag;\n }\n return null;\n};\nexports.findElementByType = findElementByType;\nvar PROTOCOL_PATTERN = /^(ws|wss):\\/\\//;\nvar checkWebSocketHost = function checkWebSocketHost(host) {\n var protocol = PROTOCOL_PATTERN.test(host) ? '' : 'wss://';\n return \"\".concat(protocol).concat(host);\n};\nexports.checkWebSocketHost = checkWebSocketHost;\nvar destructResponse = function destructResponse(response, nodeId) {\n if (nodeId === void 0) {\n nodeId = null;\n }\n var _a = response.result,\n result = _a === void 0 ? {} : _a,\n error = response.error;\n if (error) {\n return {\n error: error\n };\n }\n var _b = result.result,\n nestedResult = _b === void 0 ? null : _b;\n if (nestedResult === null) {\n if (nodeId !== null) {\n result.node_id = nodeId;\n }\n return {\n result: result\n };\n }\n var _c = nestedResult.code,\n code = _c === void 0 ? null : _c,\n _d = nestedResult.node_id,\n node_id = _d === void 0 ? null : _d,\n _e = nestedResult.result,\n vertoResult = _e === void 0 ? null : _e;\n if (code && code !== '200') {\n return {\n error: nestedResult\n };\n }\n if (vertoResult) {\n return (0, exports.destructResponse)(vertoResult, node_id);\n }\n return {\n result: nestedResult\n };\n};\nexports.destructResponse = destructResponse;\nvar randomInt = function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n};\nexports.randomInt = randomInt;\nvar normalizeAsyncAPIs = function normalizeAsyncAPIs(target, promisifyTargetMethods, asyncAlternativeSuffix) {\n if (promisifyTargetMethods === void 0) {\n promisifyTargetMethods = [];\n }\n if (asyncAlternativeSuffix === void 0) {\n asyncAlternativeSuffix = 'Async';\n }\n var promisify = new Set(promisifyTargetMethods);\n return new Proxy(target, {\n get: function get(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor && descriptor.get) {\n return Reflect.get(obj, prop);\n }\n if (typeof obj[prop] === 'function') {\n var impl_1 = obj[\"\".concat(String(prop)).concat(asyncAlternativeSuffix)] || obj[prop];\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = impl_1.apply(obj, args);\n if (promisify.has(String(prop)) && !(result instanceof Promise)) {\n return Promise.resolve(result);\n }\n return result;\n };\n }\n return Reflect.get(obj, prop);\n },\n set: function set(obj, prop, value) {\n return Reflect.set(obj, prop, value);\n }\n });\n};\nexports.normalizeAsyncAPIs = normalizeAsyncAPIs;\nvar stackTrace = function stackTrace() {\n var obj = {\n stack: null\n };\n if (Boolean(Error.captureStackTrace)) {\n Error.captureStackTrace(obj, exports.stackTrace);\n }\n return (obj.stack || '').split('\\n').slice(2).join('\\n');\n};\nexports.stackTrace = stackTrace;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/helpers.ts?"); - -/***/ }), - -/***/ "../common/src/util/interfaces.ts": -/*!****************************************!*\ - !*** ../common/src/util/interfaces.ts ***! - \****************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/interfaces.ts?"); - -/***/ }), - -/***/ "../common/src/util/logger.ts": -/*!************************************!*\ - !*** ../common/src/util/logger.ts ***! - \************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar loglevel_1 = __importDefault(__webpack_require__(/*! loglevel */ \"../common/node_modules/loglevel/lib/loglevel.js\"));\nvar datetime = function datetime() {\n return new Date().toISOString().replace('T', ' ').replace('Z', '');\n};\nvar logger = loglevel_1[\"default\"].getLogger('signalwire');\nvar originalFactory = logger.methodFactory;\nlogger.methodFactory = function (methodName, logLevel, loggerName) {\n var rawMethod = originalFactory(methodName, logLevel, loggerName);\n return function () {\n var messages = [datetime(), '-'];\n for (var i = 0; i < arguments.length; i++) {\n messages.push(arguments[i]);\n }\n rawMethod.apply(undefined, messages);\n };\n};\nlogger.setLevel(logger.getLevel());\nexports[\"default\"] = logger;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/logger.ts?"); - -/***/ }), - -/***/ "../common/src/util/storage/index.ts": -/*!*******************************************!*\ - !*** ../common/src/util/storage/index.ts ***! - \*******************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sessionStorage = exports.localStorage = void 0;\nvar helpers_1 = __webpack_require__(/*! ../helpers */ \"../common/src/util/helpers.ts\");\nvar _inNode = function _inNode() {\n return typeof window === 'undefined' && typeof process !== 'undefined';\n};\nvar _get = function _get(storageType, key) {\n return __awaiter(void 0, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n res = window[storageType].getItem((0, helpers_1.mutateStorageKey)(key));\n return [2, (0, helpers_1.safeParseJson)(res)];\n });\n });\n};\nvar _set = function _set(storageType, key, value) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n if (_typeof(value) === 'object') {\n value = JSON.stringify(value);\n }\n window[storageType].setItem((0, helpers_1.mutateStorageKey)(key), value);\n return [2];\n });\n });\n};\nvar _remove = function _remove(storageType, key) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (_inNode()) return [2, null];\n return [2, window[storageType].removeItem((0, helpers_1.mutateStorageKey)(key))];\n });\n });\n};\nexports.localStorage = {\n getItem: function getItem(key) {\n return _get('localStorage', key);\n },\n setItem: function setItem(key, value) {\n return _set('localStorage', key, value);\n },\n removeItem: function removeItem(key) {\n return _remove('localStorage', key);\n }\n};\nexports.sessionStorage = {\n getItem: function getItem(key) {\n return _get('sessionStorage', key);\n },\n setItem: function setItem(key, value) {\n return _set('sessionStorage', key, value);\n },\n removeItem: function removeItem(key) {\n return _remove('sessionStorage', key);\n }\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/storage/index.ts?"); - -/***/ }), - -/***/ "../common/src/util/webrtc/index.ts": -/*!******************************************!*\ - !*** ../common/src/util/webrtc/index.ts ***! - \******************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setMediaElementSinkId = exports.toggleMuteMediaElement = exports.unmuteMediaElement = exports.muteMediaElement = exports.stopStream = exports.sdpToJsonHack = exports.detachMediaStream = exports.attachMediaStream = exports.streamIsValid = exports.getSupportedConstraints = exports.enumerateDevices = exports.getDisplayMedia = exports.getUserMedia = exports.RTCPeerConnection = void 0;\nvar helpers_1 = __webpack_require__(/*! ../helpers */ \"../common/src/util/helpers.ts\");\nvar RTCPeerConnection = function RTCPeerConnection(config) {\n return new window.RTCPeerConnection(config);\n};\nexports.RTCPeerConnection = RTCPeerConnection;\nvar getUserMedia = function getUserMedia(constraints) {\n return navigator.mediaDevices.getUserMedia(constraints);\n};\nexports.getUserMedia = getUserMedia;\nvar getDisplayMedia = function getDisplayMedia(constraints) {\n return navigator.mediaDevices.getDisplayMedia(constraints);\n};\nexports.getDisplayMedia = getDisplayMedia;\nvar enumerateDevices = function enumerateDevices() {\n return navigator.mediaDevices.enumerateDevices();\n};\nexports.enumerateDevices = enumerateDevices;\nvar getSupportedConstraints = function getSupportedConstraints() {\n return navigator.mediaDevices.getSupportedConstraints();\n};\nexports.getSupportedConstraints = getSupportedConstraints;\nvar streamIsValid = function streamIsValid(stream) {\n return stream && stream instanceof MediaStream;\n};\nexports.streamIsValid = streamIsValid;\nvar attachMediaStream = function attachMediaStream(tag, stream) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element === null) {\n return;\n }\n if (!element.getAttribute('autoplay')) {\n element.setAttribute('autoplay', 'autoplay');\n }\n if (!element.getAttribute('playsinline')) {\n element.setAttribute('playsinline', 'playsinline');\n }\n element.srcObject = stream;\n};\nexports.attachMediaStream = attachMediaStream;\nvar detachMediaStream = function detachMediaStream(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.srcObject = null;\n }\n};\nexports.detachMediaStream = detachMediaStream;\nvar muteMediaElement = function muteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = true;\n }\n};\nexports.muteMediaElement = muteMediaElement;\nvar unmuteMediaElement = function unmuteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = false;\n }\n};\nexports.unmuteMediaElement = unmuteMediaElement;\nvar toggleMuteMediaElement = function toggleMuteMediaElement(tag) {\n var element = (0, helpers_1.findElementByType)(tag);\n if (element) {\n element.muted = !element.muted;\n }\n};\nexports.toggleMuteMediaElement = toggleMuteMediaElement;\nvar setMediaElementSinkId = function setMediaElementSinkId(tag, deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n var element, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n element = (0, helpers_1.findElementByType)(tag);\n if (element === null) {\n return [2, false];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4, element.setSinkId(deviceId)];\n case 2:\n _a.sent();\n return [2, true];\n case 3:\n error_1 = _a.sent();\n return [2, false];\n case 4:\n return [2];\n }\n });\n });\n};\nexports.setMediaElementSinkId = setMediaElementSinkId;\nvar sdpToJsonHack = function sdpToJsonHack(sdp) {\n return sdp;\n};\nexports.sdpToJsonHack = sdpToJsonHack;\nvar stopStream = function stopStream(stream) {\n if (streamIsValid(stream)) {\n stream.getTracks().forEach(function (t) {\n return t.stop();\n });\n }\n stream = null;\n};\nexports.stopStream = stopStream;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/util/webrtc/index.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/BaseCall.ts": -/*!****************************************!*\ - !*** ../common/src/webrtc/BaseCall.ts ***! - \****************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar uuid_1 = __webpack_require__(/*! uuid */ \"../common/node_modules/uuid/dist/esm-browser/index.js\");\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Verto_1 = __webpack_require__(/*! ../messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar Peer_1 = __importDefault(__webpack_require__(/*! ./Peer */ \"../common/src/webrtc/Peer.ts\"));\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar LayoutHandler_1 = __webpack_require__(/*! ./LayoutHandler */ \"../common/src/webrtc/LayoutHandler.ts\");\nvar BaseCall = function () {\n function BaseCall(session, opts) {\n var _this = this;\n this.session = session;\n this.id = '';\n this.state = constants_2.State[constants_2.State.New];\n this.prevState = '';\n this.channels = [];\n this.role = constants_2.Role.Participant;\n this.extension = null;\n this._state = constants_2.State.New;\n this._prevState = constants_2.State.New;\n this.gotAnswer = false;\n this.gotEarly = false;\n this._lastSerno = 0;\n this._targetNodeId = null;\n this._iceTimeout = null;\n this._iceDone = false;\n this._checkConferenceSerno = function (serno) {\n var check = serno < 0 || !_this._lastSerno || _this._lastSerno && serno === _this._lastSerno + 1;\n if (check && serno >= 0) {\n _this._lastSerno = serno;\n }\n return check;\n };\n var iceServers = session.iceServers,\n speakerId = session.speaker,\n micId = session.micId,\n micLabel = session.micLabel,\n camId = session.camId,\n camLabel = session.camLabel,\n localElement = session.localElement,\n remoteElement = session.remoteElement,\n _a = session.mediaConstraints,\n audio = _a.audio,\n video = _a.video;\n this.options = Object.assign({}, constants_2.DEFAULT_CALL_OPTIONS, {\n audio: audio,\n video: video,\n iceServers: iceServers,\n localElement: localElement,\n remoteElement: remoteElement,\n micId: micId,\n micLabel: micLabel,\n camId: camId,\n camLabel: camLabel,\n speakerId: speakerId\n }, opts);\n this._onMediaError = this._onMediaError.bind(this);\n this._init();\n }\n Object.defineProperty(BaseCall.prototype, \"nodeId\", {\n get: function get() {\n return this._targetNodeId;\n },\n set: function set(what) {\n this._targetNodeId = what;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"localStream\", {\n get: function get() {\n return this.options.localStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"remoteStream\", {\n get: function get() {\n return this.options.remoteStream;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BaseCall.prototype, \"memberChannel\", {\n get: function get() {\n return \"conference-member.\".concat(this.id);\n },\n enumerable: false,\n configurable: true\n });\n BaseCall.prototype.invite = function () {\n this.direction = constants_2.Direction.Outbound;\n this.peer = new Peer_1[\"default\"](constants_2.PeerType.Offer, this.options);\n this._registerPeerEvents();\n };\n BaseCall.prototype.answer = function (params) {\n if (params && (params === null || params === void 0 ? void 0 : params.iceTransportPolicy)) {\n this.options.iceTransportPolicy = params === null || params === void 0 ? void 0 : params.iceTransportPolicy;\n }\n this.direction = constants_2.Direction.Inbound;\n this.peer = new Peer_1[\"default\"](constants_2.PeerType.Answer, this.options);\n this._registerPeerEvents();\n };\n BaseCall.prototype.applyMediaConstraints = function (params) {\n var _this = this;\n var mediaParams = params.mediaParams;\n if (mediaParams) {\n Object.keys(mediaParams).forEach(function (kind) {\n return _this.peer.applyMediaConstraints(kind, mediaParams[kind]);\n });\n }\n };\n BaseCall.prototype.hangup = function (params, execute) {\n var _this = this;\n if (params === void 0) {\n params = {};\n }\n if (execute === void 0) {\n execute = true;\n }\n logger_1[\"default\"].trace('hangup requested with execute:', execute);\n this.cause = params.cause || 'NORMAL_CLEARING';\n this.causeCode = params.causeCode || 16;\n this.setState(constants_2.State.Hangup);\n var _close = function _close() {\n _this.peer ? _this.peer.instance.close() : null;\n _this.setState(constants_2.State.Destroy);\n };\n if (execute) {\n logger_1[\"default\"].debug(\"execute hangup on call \".concat(this.id, \" with cause:\"), this.cause);\n var bye = new Verto_1.Bye({\n sessid: this.session.sessionid,\n dialogParams: this.options\n });\n logger_1[\"default\"].trace('Verto Bye stacktrace:', (0, helpers_2.stackTrace)());\n this._execute(bye)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('verto.bye failed!', error);\n }).then(_close.bind(this));\n } else {\n _close();\n }\n };\n BaseCall.prototype.transfer = function (destination) {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'transfer',\n destination: destination,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.replace = function (replaceCallID) {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'replace',\n replaceCallID: replaceCallID,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.hold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'hold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.unhold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'unhold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.toggleHold = function () {\n var msg = new Verto_1.Modify({\n sessid: this.session.sessionid,\n action: 'toggleHold',\n dialogParams: this.options\n });\n return this._execute(msg).then(this._handleChangeHoldStateSuccess.bind(this))[\"catch\"](this._handleChangeHoldStateError.bind(this));\n };\n BaseCall.prototype.dtmf = function (dtmf) {\n var msg = new Verto_1.Info({\n sessid: this.session.sessionid,\n dtmf: dtmf,\n dialogParams: this.options\n });\n this._execute(msg);\n };\n BaseCall.prototype.message = function (to, body) {\n var msg = {\n from: this.session.options.login,\n to: to,\n body: body\n };\n var info = new Verto_1.Info({\n sessid: this.session.sessionid,\n msg: msg,\n dialogParams: this.options\n });\n this._execute(info);\n };\n BaseCall.prototype.muteAudio = function () {\n (0, helpers_1.disableAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.unmuteAudio = function () {\n (0, helpers_1.enableAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.toggleAudioMute = function () {\n (0, helpers_1.toggleAudioTracks)(this.options.localStream);\n };\n BaseCall.prototype.setAudioInDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var instance, senders, sender, newStream_1, audioTrack, localStream, oldAudioTracks;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n instance = this.peer.instance;\n return [4, instance.getSenders()];\n case 1:\n senders = _a.sent();\n sender = senders.find(function (_a) {\n var kind = _a.track.kind;\n return kind === 'audio';\n });\n if (!sender) return [3, 3];\n return [4, (0, WebRTC_1.getUserMedia)({\n audio: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 2:\n newStream_1 = _a.sent();\n audioTrack = newStream_1.getAudioTracks()[0];\n localStream = this.options.localStream;\n oldAudioTracks = localStream.getAudioTracks();\n if (oldAudioTracks.length > 0) {\n audioTrack.enabled = oldAudioTracks[0].enabled;\n }\n sender.replaceTrack(audioTrack);\n this.options.micId = deviceId;\n localStream.getAudioTracks().forEach(function (t) {\n return t.stop();\n });\n localStream.getVideoTracks().forEach(function (t) {\n return newStream_1.addTrack(t);\n });\n this.options.localStream = newStream_1;\n _a.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype.muteVideo = function () {\n (0, helpers_1.disableVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.unmuteVideo = function () {\n (0, helpers_1.enableVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.toggleVideoMute = function () {\n (0, helpers_1.toggleVideoTracks)(this.options.localStream);\n };\n BaseCall.prototype.setVideoDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var instance, senders, sender, newStream_2, videoTrack, _a, localElement, localStream, oldVideoTracks;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n instance = this.peer.instance;\n return [4, instance.getSenders()];\n case 1:\n senders = _b.sent();\n sender = senders.find(function (_a) {\n var kind = _a.track.kind;\n return kind === 'video';\n });\n if (!sender) return [3, 3];\n return [4, (0, WebRTC_1.getUserMedia)({\n video: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 2:\n newStream_2 = _b.sent();\n videoTrack = newStream_2.getVideoTracks()[0];\n _a = this.options, localElement = _a.localElement, localStream = _a.localStream;\n oldVideoTracks = localStream.getVideoTracks();\n if (oldVideoTracks.length > 0) {\n videoTrack.enabled = oldVideoTracks[0].enabled;\n }\n sender.replaceTrack(videoTrack);\n (0, WebRTC_1.attachMediaStream)(localElement, newStream_2);\n this.options.camId = deviceId;\n localStream.getAudioTracks().forEach(function (t) {\n return newStream_2.addTrack(t);\n });\n localStream.getVideoTracks().forEach(function (t) {\n return t.stop();\n });\n this.options.localStream = newStream_2;\n _b.label = 3;\n case 3:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype.deaf = function () {\n (0, helpers_1.disableAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.undeaf = function () {\n (0, helpers_1.enableAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.toggleDeaf = function () {\n (0, helpers_1.toggleAudioTracks)(this.options.remoteStream);\n };\n BaseCall.prototype.setState = function (state) {\n var _this = this;\n this._prevState = this._state;\n this._state = state;\n this.state = constants_2.State[this._state].toLowerCase();\n this.prevState = constants_2.State[this._prevState].toLowerCase();\n logger_1[\"default\"].info(\"Call \".concat(this.id, \" state change from \").concat(this.prevState, \" to \").concat(this.state));\n this._dispatchNotification({\n type: constants_2.NOTIFICATION_TYPE.callUpdate,\n call: this\n });\n switch (state) {\n case constants_2.State.Purge:\n logger_1[\"default\"].debug(\"Purging call \".concat(this.id));\n this.hangup({\n cause: 'PURGE',\n causeCode: '01'\n }, false);\n break;\n case constants_2.State.Active:\n {\n setTimeout(function () {\n var _a = _this.options,\n remoteElement = _a.remoteElement,\n speakerId = _a.speakerId;\n if (remoteElement && speakerId) {\n (0, WebRTC_1.setMediaElementSinkId)(remoteElement, speakerId);\n }\n }, 0);\n break;\n }\n case constants_2.State.Destroy:\n this._finalize();\n break;\n }\n };\n BaseCall.prototype.handleMessage = function (msg) {\n var method = msg.method,\n params = msg.params;\n switch (method) {\n case constants_2.VertoMethod.Answer:\n {\n this.gotAnswer = true;\n if (this._state >= constants_2.State.Active) {\n return;\n }\n if (this._state >= constants_2.State.Early) {\n this.setState(constants_2.State.Active);\n }\n if (!this.gotEarly) {\n this._onRemoteSdp(params.sdp);\n }\n break;\n }\n case constants_2.VertoMethod.Media:\n {\n if (this._state >= constants_2.State.Early) {\n return;\n }\n this.gotEarly = true;\n this._onRemoteSdp(params.sdp);\n break;\n }\n case constants_2.VertoMethod.Display:\n case constants_2.VertoMethod.Attach:\n {\n var displayName = params.display_name,\n displayNumber = params.display_number,\n display_direction = params.display_direction;\n this.extension = displayNumber;\n var displayDirection = display_direction === constants_2.Direction.Inbound ? constants_2.Direction.Outbound : constants_2.Direction.Inbound;\n var notification = {\n type: constants_2.NOTIFICATION_TYPE[method],\n call: this,\n displayName: displayName,\n displayNumber: displayNumber,\n displayDirection: displayDirection\n };\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n break;\n }\n case constants_2.VertoMethod.Info:\n case constants_2.VertoMethod.Event:\n {\n var notification = __assign(__assign({}, params), {\n type: constants_2.NOTIFICATION_TYPE.generic,\n call: this\n });\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n break;\n }\n case constants_2.VertoMethod.MediaParams:\n this.applyMediaConstraints(params);\n break;\n case constants_2.VertoMethod.Bye:\n logger_1[\"default\"].debug(\"Hanging up call \".concat(this.id));\n this.hangup(params, false);\n break;\n }\n };\n BaseCall.prototype.handleConferenceUpdate = function (packet, initialPvtData) {\n return __awaiter(this, void 0, void 0, function () {\n var action, data, _a, callId, index, _b, chatID, chatChannel, infoChannel, modChannel, laName, conferenceMemberID, role, participants, i;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this._checkConferenceSerno(packet.wireSerno) && packet.name !== initialPvtData.laName) {\n logger_1[\"default\"].error('ConferenceUpdate invalid wireSerno or packet name:', packet);\n return [2, 'INVALID_PACKET'];\n }\n action = packet.action, data = packet.data, _a = packet.hashKey, callId = _a === void 0 ? String(this._lastSerno) : _a, index = packet.arrIndex;\n _b = action;\n switch (_b) {\n case 'bootObj':\n return [3, 1];\n case 'add':\n return [3, 8];\n case 'modify':\n return [3, 9];\n case 'del':\n return [3, 10];\n case 'clear':\n return [3, 11];\n }\n return [3, 12];\n case 1:\n this._lastSerno = 0;\n chatID = initialPvtData.chatID, chatChannel = initialPvtData.chatChannel, infoChannel = initialPvtData.infoChannel, modChannel = initialPvtData.modChannel, laName = initialPvtData.laName, conferenceMemberID = initialPvtData.conferenceMemberID, role = initialPvtData.role;\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Join,\n conferenceName: laName,\n participantId: Number(conferenceMemberID),\n role: role\n });\n if (!chatChannel) return [3, 3];\n return [4, this._subscribeConferenceChat(chatChannel)];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n if (!infoChannel) return [3, 5];\n return [4, this._subscribeConferenceInfo(infoChannel)];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5:\n if (!(modChannel && role === constants_2.Role.Moderator)) return [3, 7];\n return [4, this._subscribeConferenceModerator(modChannel)];\n case 6:\n _c.sent();\n _c.label = 7;\n case 7:\n participants = [];\n for (i in data) {\n participants.push(__assign({\n callId: data[i][0],\n index: Number(i)\n }, (0, helpers_2.mutateLiveArrayData)(data[i][1])));\n }\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Bootstrap,\n participants: participants\n });\n return [3, 13];\n case 8:\n {\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Add,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n }\n _c.label = 9;\n case 9:\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Modify,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n case 10:\n this._dispatchConferenceUpdate(__assign({\n action: constants_2.ConferenceAction.Delete,\n callId: callId,\n index: index\n }, (0, helpers_2.mutateLiveArrayData)(data)));\n return [3, 13];\n case 11:\n this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.Clear\n });\n return [3, 13];\n case 12:\n this._dispatchConferenceUpdate({\n action: action,\n data: data,\n callId: callId,\n index: index\n });\n return [3, 13];\n case 13:\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._addChannel = function (channel) {\n if (!this.channels.includes(channel)) {\n this.channels.push(channel);\n }\n var protocol = this.session.relayProtocol;\n if (this.session._existsSubscription(protocol, channel)) {\n this.session.subscriptions[protocol][channel] = __assign(__assign({}, this.session.subscriptions[protocol][channel]), {\n callId: this.id\n });\n }\n };\n BaseCall.prototype._subscribeConferenceChat = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var _a = params.data,\n direction = _a.direction,\n participantNumber = _a.from,\n participantName = _a.fromDisplay,\n messageText = _a.message,\n messageType = _a.type;\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.ChatMessage,\n direction: direction,\n participantNumber: participantNumber,\n participantName: participantName,\n messageText: messageText,\n messageType: messageType,\n messageId: params.eventSerno\n });\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfChat subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this._addChannel(channel);\n Object.defineProperties(this, {\n sendChatMessage: {\n configurable: true,\n value: function value(message, type) {\n _this.session.vertoBroadcast({\n nodeId: _this.nodeId,\n channel: channel,\n data: {\n action: 'send',\n message: message,\n type: type\n }\n });\n }\n }\n });\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._subscribeConferenceInfo = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var eventData = params.eventData;\n switch (eventData.contentType) {\n case 'layout-info':\n eventData.callID = _this.id;\n (0, LayoutHandler_1.MCULayoutEventHandler)(_this.session, eventData);\n break;\n default:\n logger_1[\"default\"].error('Conference-Info unknown contentType', params);\n }\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfInfo subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this._addChannel(channel);\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._confControl = function (channel, params) {\n if (params === void 0) {\n params = {};\n }\n var data = __assign({\n application: 'conf-control',\n callID: this.id,\n value: null\n }, params);\n this.session.vertoBroadcast({\n nodeId: this.nodeId,\n channel: channel,\n data: data\n });\n };\n BaseCall.prototype._subscribeConferenceModerator = function (channel) {\n return __awaiter(this, void 0, void 0, function () {\n var _modCommand, _videoRequired, tmp, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _modCommand = function _modCommand(command, memberID, value) {\n if (memberID === void 0) {\n memberID = null;\n }\n if (value === void 0) {\n value = null;\n }\n var id = parseInt(memberID) || null;\n _this._confControl(channel, {\n command: command,\n id: id,\n value: value\n });\n };\n _videoRequired = function _videoRequired() {\n var video = _this.options.video;\n if (typeof video === 'boolean' && !video || _typeof(video) === 'object' && (0, helpers_2.objEmpty)(video)) {\n throw \"Conference \".concat(_this.id, \" has no video!\");\n }\n };\n tmp = {\n nodeId: this.nodeId,\n channels: [channel],\n handler: function handler(params) {\n var data = params.data;\n switch (data['conf-command']) {\n case 'list-videoLayouts':\n if (data.responseData) {\n var tmp_1 = JSON.stringify(data.responseData).replace(/IDS\"/g, 'Ids\"');\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.LayoutList,\n layouts: JSON.parse(tmp_1)\n });\n }\n break;\n default:\n _this._dispatchConferenceUpdate({\n action: constants_2.ConferenceAction.ModCmdResponse,\n command: data['conf-command'],\n response: data.response\n });\n }\n }\n };\n return [4, this.session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('ConfMod subscription error:', error);\n })];\n case 1:\n response = _a.sent();\n if ((0, helpers_1.checkSubscribeResponse)(response, channel)) {\n this.role = constants_2.Role.Moderator;\n this._addChannel(channel);\n Object.defineProperties(this, {\n listVideoLayouts: {\n configurable: true,\n value: function value() {\n _modCommand('list-videoLayouts');\n }\n },\n playMedia: {\n configurable: true,\n value: function value(file) {\n _modCommand('play', null, file);\n }\n },\n stopMedia: {\n configurable: true,\n value: function value() {\n _modCommand('stop', null, 'all');\n }\n },\n deaf: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('deaf', memberID);\n }\n },\n undeaf: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('undeaf', memberID);\n }\n },\n startRecord: {\n configurable: true,\n value: function value(file) {\n _modCommand('recording', null, ['start', file]);\n }\n },\n stopRecord: {\n configurable: true,\n value: function value() {\n _modCommand('recording', null, ['stop', 'all']);\n }\n },\n snapshot: {\n configurable: true,\n value: function value(file) {\n _videoRequired();\n _modCommand('vid-write-png', null, file);\n }\n },\n setVideoLayout: {\n configurable: true,\n value: function value(layout, canvasID) {\n _videoRequired();\n var value = canvasID ? [layout, canvasID] : layout;\n _modCommand('vid-layout', null, value);\n }\n },\n kick: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('kick', memberID);\n }\n },\n muteMic: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('tmute', memberID);\n }\n },\n muteVideo: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('tvmute', memberID);\n }\n },\n presenter: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('vid-res-id', memberID, 'presenter');\n }\n },\n videoFloor: {\n configurable: true,\n value: function value(memberID) {\n _videoRequired();\n _modCommand('vid-floor', memberID, 'force');\n }\n },\n banner: {\n configurable: true,\n value: function value(memberID, text) {\n _videoRequired();\n _modCommand('vid-banner', memberID, encodeURI(text));\n }\n },\n volumeDown: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_out', memberID, 'down');\n }\n },\n volumeUp: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_out', memberID, 'up');\n }\n },\n gainDown: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_in', memberID, 'down');\n }\n },\n gainUp: {\n configurable: true,\n value: function value(memberID) {\n _modCommand('volume_in', memberID, 'up');\n }\n },\n transfer: {\n configurable: true,\n value: function value(memberID, exten) {\n _modCommand('transfer', memberID, exten);\n }\n }\n });\n }\n return [2];\n }\n });\n });\n };\n BaseCall.prototype._handleChangeHoldStateSuccess = function (response) {\n response.holdState === 'active' ? this.setState(constants_2.State.Active) : this.setState(constants_2.State.Held);\n return true;\n };\n BaseCall.prototype._handleChangeHoldStateError = function (error) {\n logger_1[\"default\"].error(\"Failed to \".concat(error.action, \" on call \").concat(this.id));\n return false;\n };\n BaseCall.prototype._onRemoteSdp = function (remoteSdp) {\n var _this = this;\n var sdp = (0, helpers_1.sdpMediaOrderHack)(remoteSdp, this.peer.instance.localDescription.sdp);\n if (this.options.useStereo) {\n sdp = (0, helpers_1.sdpStereoHack)(sdp);\n }\n var sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Answer\n });\n this.peer.instance.setRemoteDescription(sessionDescr).then(function () {\n if (_this.gotEarly) {\n _this.setState(constants_2.State.Early);\n }\n if (_this.gotAnswer) {\n _this.setState(constants_2.State.Active);\n }\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error('Call setRemoteDescription Error: ', error);\n _this.hangup();\n });\n };\n BaseCall.prototype._requestAnotherLocalDescription = function () {\n logger_1[\"default\"].debug('_requestAnotherLocalDescription');\n if ((0, helpers_2.isFunction)(this.peer.onSdpReadyTwice)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Error, new Error('SDP without candidates for the second time!'), this.session.uuid);\n return;\n }\n Object.defineProperty(this.peer, 'onSdpReadyTwice', {\n value: this._onIceSdp.bind(this)\n });\n this._iceDone = false;\n this.peer.startNegotiation();\n };\n BaseCall.prototype._onIceSdp = function (data) {\n var _this = this;\n logger_1[\"default\"].debug('_onIceSdp');\n if (this._iceTimeout) {\n clearTimeout(this._iceTimeout);\n }\n this._iceTimeout = null;\n this._iceDone = true;\n this.peer.resetNegotiating();\n var sdp = data.sdp,\n type = data.type;\n if (sdp.indexOf('candidate') === -1) {\n this._requestAnotherLocalDescription();\n return;\n }\n var msg = null;\n var tmpParams = {\n sessid: this.session.sessionid,\n sdp: sdp,\n dialogParams: this.options\n };\n switch (type) {\n case constants_2.PeerType.Offer:\n this.setState(constants_2.State.Requesting);\n msg = new Verto_1.Invite(tmpParams);\n break;\n case constants_2.PeerType.Answer:\n this.setState(constants_2.State.Answering);\n msg = this.options.attach === true ? new Verto_1.Attach(tmpParams) : new Verto_1.Answer(tmpParams);\n break;\n default:\n logger_1[\"default\"].error(\"\".concat(this.id, \" - Unknown local SDP type:\"), data);\n return this.hangup({}, false);\n }\n this._execute(msg).then(function (response) {\n var _a = response.node_id,\n node_id = _a === void 0 ? null : _a;\n _this._targetNodeId = node_id;\n type === constants_2.PeerType.Offer ? _this.setState(constants_2.State.Trying) : _this.setState(constants_2.State.Active);\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error(\"\".concat(_this.id, \" - Sending \").concat(type, \" error:\"), error);\n _this.hangup();\n });\n };\n BaseCall.prototype._registerPeerEvents = function () {\n var _this = this;\n var instance = this.peer.instance;\n this._iceDone = false;\n instance.onicecandidate = function (event) {\n if (_this._iceDone) {\n return;\n }\n if (_this._iceTimeout === null) {\n logger_1[\"default\"].debug('Setting _iceTimeout to 1 second');\n _this._iceTimeout = setTimeout(function () {\n return _this._onIceSdp(instance.localDescription);\n }, 1000);\n }\n if (event.candidate) {\n logger_1[\"default\"].debug('IceCandidate: address:', event.candidate.address, ' - port:', event.candidate.port, ' - type:', event.candidate.type);\n } else {\n _this._onIceSdp(instance.localDescription);\n }\n };\n instance.addEventListener('track', function (event) {\n _this.options.remoteStream = event.streams[0];\n var _a = _this.options,\n remoteElement = _a.remoteElement,\n remoteStream = _a.remoteStream,\n screenShare = _a.screenShare;\n if (screenShare === false) {\n (0, WebRTC_1.attachMediaStream)(remoteElement, remoteStream);\n }\n });\n instance.addEventListener('addstream', function (event) {\n _this.options.remoteStream = event.stream;\n });\n };\n BaseCall.prototype._onMediaError = function (error) {\n this._dispatchNotification({\n type: constants_2.NOTIFICATION_TYPE.userMediaError,\n error: error\n });\n logger_1[\"default\"].debug(\"Call \".concat(this.id, \" media error\"));\n this.hangup({}, false);\n };\n BaseCall.prototype._dispatchConferenceUpdate = function (params) {\n this._dispatchNotification(__assign({\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n call: this\n }, params));\n };\n BaseCall.prototype._dispatchNotification = function (notification) {\n if (this.options.screenShare === true) {\n return;\n }\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.id, false)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n }\n };\n BaseCall.prototype._execute = function (msg) {\n if (this.nodeId) {\n msg.targetNodeId = this.nodeId;\n }\n return this.session.execute(msg);\n };\n BaseCall.prototype._init = function () {\n var _a = this.options,\n id = _a.id,\n userVariables = _a.userVariables,\n remoteCallerNumber = _a.remoteCallerNumber,\n onNotification = _a.onNotification;\n if (!id) {\n this.options.id = (0, uuid_1.v4)();\n }\n this.id = this.options.id;\n if (!userVariables || (0, helpers_2.objEmpty)(userVariables)) {\n this.options.userVariables = this.session.options.userVariables || {};\n }\n if (!remoteCallerNumber) {\n this.options.remoteCallerNumber = this.options.destinationNumber;\n }\n this.session.calls[this.id] = this;\n (0, Handler_1.register)(constants_1.SwEvent.MediaError, this._onMediaError, this.id);\n if ((0, helpers_2.isFunction)(onNotification)) {\n (0, Handler_1.register)(constants_1.SwEvent.Notification, onNotification.bind(this), this.id);\n }\n this.setState(constants_2.State.New);\n logger_1[\"default\"].info('New Call with Options:', this.options);\n };\n BaseCall.prototype._finalize = function () {\n var _a = this.options,\n remoteStream = _a.remoteStream,\n localStream = _a.localStream,\n remoteElement = _a.remoteElement,\n localElement = _a.localElement;\n (0, WebRTC_1.stopStream)(remoteStream);\n (0, WebRTC_1.stopStream)(localStream);\n if (this.options.screenShare !== true) {\n (0, WebRTC_1.detachMediaStream)(remoteElement);\n (0, WebRTC_1.detachMediaStream)(localElement);\n }\n (0, Handler_1.deRegister)(constants_1.SwEvent.MediaError, null, this.id);\n this.peer = null;\n this.session.calls[this.id] = null;\n delete this.session.calls[this.id];\n };\n return BaseCall;\n}();\nexports[\"default\"] = BaseCall;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/BaseCall.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/Call.ts": -/*!************************************!*\ - !*** ../common/src/webrtc/Call.ts ***! - \************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar BaseCall_1 = __importDefault(__webpack_require__(/*! ./BaseCall */ \"../common/src/webrtc/BaseCall.ts\"));\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar Call = function (_super) {\n __extends(Call, _super);\n function Call() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._statsInterval = null;\n return _this;\n }\n Call.prototype.hangup = function (params, execute) {\n if (params === void 0) {\n params = {};\n }\n if (execute === void 0) {\n execute = true;\n }\n if (this.screenShare instanceof Call) {\n this.screenShare.hangup(params, execute);\n }\n _super.prototype.hangup.call(this, params, execute);\n };\n Call.prototype.startScreenShare = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var displayStream, _a, remoteCallerName, remoteCallerNumber, callerName, callerNumber, options;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4, (0, WebRTC_1.getDisplayMedia)({\n video: true\n })];\n case 1:\n displayStream = _b.sent();\n displayStream.getTracks().forEach(function (t) {\n t.addEventListener('ended', function () {\n if (_this.screenShare) {\n _this.screenShare.hangup();\n }\n });\n });\n _a = this.options, remoteCallerName = _a.remoteCallerName, remoteCallerNumber = _a.remoteCallerNumber, callerName = _a.callerName, callerNumber = _a.callerNumber;\n options = __assign({\n screenShare: true,\n localStream: displayStream,\n destinationNumber: \"\".concat(this.extension, \"-screen\"),\n remoteCallerName: remoteCallerName,\n remoteCallerNumber: \"\".concat(remoteCallerNumber, \"-screen\"),\n callerName: \"\".concat(callerName, \" (Screen)\"),\n callerNumber: \"\".concat(callerNumber, \" (Screen)\")\n }, opts);\n this.screenShare = new Call(this.session, options);\n this.screenShare.invite();\n return [2, this.screenShare];\n }\n });\n });\n };\n Call.prototype.stopScreenShare = function () {\n if (this.screenShare instanceof Call) {\n this.screenShare.hangup();\n }\n };\n Call.prototype.setAudioOutDevice = function (deviceId) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, remoteElement, speakerId;\n return __generator(this, function (_b) {\n this.options.speakerId = deviceId;\n _a = this.options, remoteElement = _a.remoteElement, speakerId = _a.speakerId;\n if (remoteElement && speakerId) {\n return [2, (0, WebRTC_1.setMediaElementSinkId)(remoteElement, speakerId)];\n }\n return [2, false];\n });\n });\n };\n Call.prototype._finalize = function () {\n this._stats(false);\n _super.prototype._finalize.call(this);\n };\n Call.prototype._stats = function (what) {\n var _this = this;\n if (what === void 0) {\n what = true;\n }\n if (what === false) {\n return clearInterval(this._statsInterval);\n }\n logger_1[\"default\"].setLevel(2);\n this._statsInterval = window.setInterval(function () {\n return __awaiter(_this, void 0, void 0, function () {\n var stats, statsOutput, invalidReport, invalidStat;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this.peer.instance.getStats(null)];\n case 1:\n stats = _a.sent();\n statsOutput = '';\n invalidReport = ['certificate', 'codec', 'peer-connection', 'stream', 'local-candidate', 'remote-candidate'];\n invalidStat = ['id', 'type', 'timestamp'];\n stats.forEach(function (report) {\n if (invalidReport.includes(report.type)) {\n return;\n }\n statsOutput += \"\\n\".concat(report.type, \"\\n\");\n Object.keys(report).forEach(function (statName) {\n if (!invalidStat.includes(statName)) {\n statsOutput += \"\\t\".concat(statName, \": \").concat(report[statName], \"\\n\");\n }\n });\n });\n logger_1[\"default\"].info(statsOutput);\n return [2];\n }\n });\n });\n }, 2000);\n };\n return Call;\n}(BaseCall_1[\"default\"]);\nexports[\"default\"] = Call;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/Call.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/CantinaAuth.ts": -/*!*******************************************!*\ - !*** ../common/src/webrtc/CantinaAuth.ts ***! - \*******************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar FETCH_OPTIONS = {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n }\n};\nvar CantinaAuth = function () {\n function CantinaAuth(params) {\n var _this = this;\n if (params === void 0) {\n params = {};\n }\n this.params = params;\n this.baseUrl = 'https://cantina-backend.signalwire.com';\n this._fetch = function (url, options) {\n return fetch(url, options).then(function (response) {\n return __awaiter(_this, void 0, void 0, function () {\n var payload, errorMessage, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, response.json()];\n case 1:\n payload = _a.sent();\n if (response.status >= 200 && response.status < 300) {\n return [2, payload];\n } else {\n errorMessage = \"HTTP Request failed with status \".concat(response.status);\n error = new Error(errorMessage);\n error.payload = payload;\n return [2, Promise.reject(error)];\n }\n return [2];\n }\n });\n });\n });\n };\n var _a = params.hostname,\n hostname = _a === void 0 ? location.hostname : _a;\n this.hostname = hostname;\n }\n CantinaAuth.prototype.userLogin = function (username, password) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/login/user\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n username: username,\n password: password,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('userLogin response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.guestLogin = function (name, email, token) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/login/guest\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n name: name,\n email: email,\n token: token,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('guestLogin response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.refresh = function () {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/refresh\"), __assign(__assign({}, FETCH_OPTIONS), {\n method: 'PUT',\n body: JSON.stringify({\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('refresh response', response);\n return [2, response];\n }\n });\n });\n };\n CantinaAuth.prototype.checkInviteToken = function (token) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._fetch(\"\".concat(this.baseUrl, \"/check-token\"), __assign(__assign({}, FETCH_OPTIONS), {\n body: JSON.stringify({\n token: token,\n hostname: this.hostname\n })\n }))];\n case 1:\n response = _a.sent();\n logger_1[\"default\"].info('checkInviteToken response', response);\n return [2, response];\n }\n });\n });\n };\n return CantinaAuth;\n}();\nexports[\"default\"] = CantinaAuth;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/CantinaAuth.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/LayoutHandler.ts": -/*!*********************************************!*\ - !*** ../common/src/webrtc/LayoutHandler.ts ***! - \*********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MCULayoutEventHandler = void 0;\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar constants_2 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar MCULayoutEventHandler = function MCULayoutEventHandler(session, eventData) {\n var contentType = eventData.contentType,\n canvasType = eventData.canvasType,\n callID = eventData.callID,\n _a = eventData.canvasInfo,\n canvasInfo = _a === void 0 ? null : _a,\n _b = eventData.currentLayerIdx,\n currentLayerIdx = _b === void 0 ? -1 : _b;\n if (canvasInfo && canvasType !== 'mcu-personal-canvas') {\n delete canvasInfo.memberID;\n }\n var data = {\n type: constants_1.NOTIFICATION_TYPE.conferenceUpdate,\n call: session.calls[callID],\n canvasInfo: _clearCanvasInfo(canvasInfo),\n currentLayerIdx: currentLayerIdx\n };\n switch (contentType) {\n case 'layer-info':\n {\n var notification = __assign({\n action: constants_1.ConferenceAction.LayerInfo\n }, data);\n (0, Handler_1.trigger)(constants_2.SwEvent.Notification, notification, session.uuid);\n break;\n }\n case 'layout-info':\n {\n var notification = __assign({\n action: constants_1.ConferenceAction.LayoutInfo\n }, data);\n (0, Handler_1.trigger)(constants_2.SwEvent.Notification, notification, session.uuid);\n break;\n }\n }\n};\nexports.MCULayoutEventHandler = MCULayoutEventHandler;\nvar _clearCanvasInfo = function _clearCanvasInfo(canvasInfo) {\n var tmp = JSON.stringify(canvasInfo).replace(/memberID/g, 'participantId').replace(/ID\"/g, 'Id\"').replace(/POS\"/g, 'Pos\"');\n return (0, helpers_1.safeParseJson)(tmp);\n};\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/LayoutHandler.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/Peer.ts": -/*!************************************!*\ - !*** ../common/src/webrtc/Peer.ts ***! - \************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __values = this && this.__values || function (o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar WebRTC_1 = __webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\");\nvar helpers_2 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar helpers_3 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar helpers_4 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar Peer = function () {\n function Peer(type, options) {\n this.type = type;\n this.options = options;\n this.onSdpReadyTwice = null;\n this._negotiating = false;\n logger_1[\"default\"].info('New Peer with type:', this.type, 'Options:', this.options);\n this._constraints = {\n offerToReceiveAudio: true,\n offerToReceiveVideo: true\n };\n this._sdpReady = this._sdpReady.bind(this);\n this._init();\n }\n Peer.prototype.resetNegotiating = function () {\n this._negotiating = false;\n };\n Object.defineProperty(Peer.prototype, \"isNegotiating\", {\n get: function get() {\n return this._negotiating;\n },\n enumerable: false,\n configurable: true\n });\n Peer.prototype.startNegotiation = function () {\n this._negotiating = true;\n if (this._isOffer()) {\n this._createOffer();\n } else {\n this._createAnswer();\n }\n };\n Peer.prototype._init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, localElement, _c, localStream, _d, screenShare, tracks, tracks_1, tracks_1_1, track, e_1_1;\n var e_1, _e;\n var _this = this;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n this.instance = (0, WebRTC_1.RTCPeerConnection)(this._config());\n this.instance.onsignalingstatechange = function (event) {\n switch (_this.instance.signalingState) {\n case 'stable':\n break;\n case 'closed':\n _this.instance = null;\n break;\n default:\n _this._negotiating = true;\n }\n };\n this.instance.onnegotiationneeded = function (event) {\n if (_this._negotiating) {\n logger_1[\"default\"].debug('Skip twice onnegotiationneeded..');\n return;\n }\n _this.startNegotiation();\n };\n _a = this.options;\n return [4, this._retrieveLocalStream()[\"catch\"](function (error) {\n (0, Handler_1.trigger)(constants_1.SwEvent.MediaError, error, _this.options.id);\n return null;\n })];\n case 1:\n _a.localStream = _f.sent();\n _b = this.options, localElement = _b.localElement, _c = _b.localStream, localStream = _c === void 0 ? null : _c, _d = _b.screenShare, screenShare = _d === void 0 ? false : _d;\n if (!(0, WebRTC_1.streamIsValid)(localStream)) return [3, 12];\n if (!(typeof this.instance.addTrack === 'function')) return [3, 10];\n tracks = localStream.getTracks();\n _f.label = 2;\n case 2:\n _f.trys.push([2, 7, 8, 9]);\n tracks_1 = __values(tracks), tracks_1_1 = tracks_1.next();\n _f.label = 3;\n case 3:\n if (!!tracks_1_1.done) return [3, 6];\n track = tracks_1_1.value;\n return [4, this.instance.addTrack(track, localStream)];\n case 4:\n _f.sent();\n _f.label = 5;\n case 5:\n tracks_1_1 = tracks_1.next();\n return [3, 3];\n case 6:\n return [3, 9];\n case 7:\n e_1_1 = _f.sent();\n e_1 = {\n error: e_1_1\n };\n return [3, 9];\n case 8:\n try {\n if (tracks_1_1 && !tracks_1_1.done && (_e = tracks_1[\"return\"])) _e.call(tracks_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n return [7];\n case 9:\n return [3, 11];\n case 10:\n this.instance.addStream(localStream);\n _f.label = 11;\n case 11:\n if (screenShare !== true) {\n (0, WebRTC_1.muteMediaElement)(localElement);\n (0, WebRTC_1.attachMediaStream)(localElement, localStream);\n }\n return [3, 13];\n case 12:\n if (localStream === null) {\n this.startNegotiation();\n }\n _f.label = 13;\n case 13:\n return [2];\n }\n });\n });\n };\n Peer.prototype._createOffer = function () {\n if (!this._isOffer()) {\n return;\n }\n this.instance.createOffer(this._constraints).then(this._setLocalDescription.bind(this)).then(this._sdpReady)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('Peer _createOffer error:', error);\n });\n };\n Peer.prototype._createAnswer = function () {\n var _this = this;\n if (!this._isAnswer()) {\n return;\n }\n var _a = this.options,\n remoteSdp = _a.remoteSdp,\n useStereo = _a.useStereo;\n var sdp = useStereo ? (0, helpers_1.sdpStereoHack)(remoteSdp) : remoteSdp;\n var sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Offer\n });\n this.instance.setRemoteDescription(sessionDescr).then(function () {\n return _this.instance.createAnswer();\n }).then(this._setLocalDescription.bind(this)).then(this._sdpReady)[\"catch\"](function (error) {\n return logger_1[\"default\"].error('Peer _createAnswer error:', error);\n });\n };\n Peer.prototype._setLocalDescription = function (sessionDescription) {\n var _a = this.options,\n useStereo = _a.useStereo,\n googleMaxBitrate = _a.googleMaxBitrate,\n googleMinBitrate = _a.googleMinBitrate,\n googleStartBitrate = _a.googleStartBitrate;\n if (useStereo) {\n sessionDescription.sdp = (0, helpers_1.sdpStereoHack)(sessionDescription.sdp);\n }\n if (googleMaxBitrate && googleMinBitrate && googleStartBitrate) {\n sessionDescription.sdp = (0, helpers_1.sdpBitrateHack)(sessionDescription.sdp, googleMaxBitrate, googleMinBitrate, googleStartBitrate);\n }\n logger_1[\"default\"].debug('calling setLocalDescription with SDP:', sessionDescription.sdp);\n return this.instance.setLocalDescription(sessionDescription);\n };\n Peer.prototype._sdpReady = function () {\n if ((0, helpers_2.isFunction)(this.onSdpReadyTwice)) {\n this.onSdpReadyTwice(this.instance.localDescription);\n }\n };\n Peer.prototype._getSharedConstraints = function (localConstraints, sdp) {\n var _a, _b;\n if (sdp === void 0) {\n sdp = '';\n }\n var localAudio = (_a = localConstraints === null || localConstraints === void 0 ? void 0 : localConstraints.audio) !== null && _a !== void 0 ? _a : false;\n var remoteAudio = sdp ? (0, helpers_4.sdpHasAudio)(sdp) : false;\n var localVideo = (_b = localConstraints === null || localConstraints === void 0 ? void 0 : localConstraints.video) !== null && _b !== void 0 ? _b : false;\n var remoteVideo = sdp ? (0, helpers_4.sdpHasVideo)(sdp) : false;\n var sharedConstraints = {\n audio: localAudio && remoteAudio,\n video: localVideo && remoteVideo\n };\n return sharedConstraints;\n };\n Peer.prototype._retrieveLocalStream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var localConstraints, sharedConstraints, _a, remoteSdp, useStereo, sdp, sessionDescr;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if ((0, WebRTC_1.streamIsValid)(this.options.localStream)) {\n return [2, this.options.localStream];\n }\n return [4, (0, helpers_1.getMediaConstraints)(this.options)];\n case 1:\n localConstraints = _b.sent();\n sharedConstraints = localConstraints;\n if (this._isAnswer()) {\n _a = this.options, remoteSdp = _a.remoteSdp, useStereo = _a.useStereo;\n sdp = useStereo ? (0, helpers_1.sdpStereoHack)(remoteSdp) : remoteSdp;\n sessionDescr = (0, WebRTC_1.sdpToJsonHack)({\n sdp: sdp,\n type: constants_2.PeerType.Offer\n });\n sharedConstraints = this._getSharedConstraints(localConstraints, sessionDescr.sdp);\n }\n return [2, (0, helpers_1.getUserMedia)(sharedConstraints)];\n }\n });\n });\n };\n Peer.prototype._isOffer = function () {\n return this.type === constants_2.PeerType.Offer;\n };\n Peer.prototype._isAnswer = function () {\n return this.type === constants_2.PeerType.Answer;\n };\n Peer.prototype._config = function () {\n var _a = this.options,\n _b = _a.iceServers,\n iceServers = _b === void 0 ? [] : _b,\n _c = _a.iceTransportPolicy,\n iceTransportPolicy = _c === void 0 ? 'all' : _c,\n _d = _a.disableUdpIceServers,\n disableUdpIceServers = _d === void 0 ? false : _d;\n var filteredIceServers = (0, helpers_3.filterIceServers)(iceServers, {\n disableUdpIceServers: disableUdpIceServers\n });\n var config = {\n iceTransportPolicy: iceTransportPolicy,\n sdpSemantics: 'unified-plan',\n bundlePolicy: 'max-compat',\n iceServers: filteredIceServers\n };\n logger_1[\"default\"].info('RTC config', config);\n return config;\n };\n Peer.prototype._getSenderByKind = function (kind) {\n return __awaiter(this, void 0, void 0, function () {\n var senders;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.instance) return [3, 2];\n return [4, this.instance.getSenders()];\n case 1:\n senders = _a.sent();\n return [2, senders.find(function (_a) {\n var track = _a.track;\n return track && track.kind === kind;\n })];\n case 2:\n return [2];\n }\n });\n });\n };\n Peer.prototype.applyMediaConstraints = function (kind, constraints) {\n return __awaiter(this, void 0, void 0, function () {\n var sender, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4,, 5]);\n return [4, this._getSenderByKind(kind)];\n case 1:\n sender = _a.sent();\n if (!sender || !sender.track) {\n return [2, logger_1[\"default\"].info('No sender to apply constraints', kind, constraints)];\n }\n if (!(sender.track.readyState === 'live')) return [3, 3];\n logger_1[\"default\"].info(\"Apply \".concat(kind, \" constraints\"), this.options.id, constraints);\n return [4, sender.track.applyConstraints(constraints)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n return [3, 5];\n case 4:\n error_1 = _a.sent();\n logger_1[\"default\"].error('Error applying constraints', kind, constraints);\n return [3, 5];\n case 5:\n return [2];\n }\n });\n });\n };\n return Peer;\n}();\nexports[\"default\"] = Peer;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/Peer.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/VertoHandler.ts": -/*!********************************************!*\ - !*** ../common/src/webrtc/VertoHandler.ts ***! - \********************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar Call_1 = __importDefault(__webpack_require__(/*! ./Call */ \"../common/src/webrtc/Call.ts\"));\nvar helpers_1 = __webpack_require__(/*! ./helpers */ \"../common/src/webrtc/helpers.ts\");\nvar Verto_1 = __webpack_require__(/*! ../messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar constants_1 = __webpack_require__(/*! ../util/constants */ \"../common/src/util/constants/index.ts\");\nvar constants_2 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar Handler_1 = __webpack_require__(/*! ../services/Handler */ \"../common/src/services/Handler.ts\");\nvar constants_3 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar LayoutHandler_1 = __webpack_require__(/*! ./LayoutHandler */ \"../common/src/webrtc/LayoutHandler.ts\");\nvar VertoHandler = function () {\n function VertoHandler(session) {\n this.session = session;\n }\n VertoHandler.prototype._ack = function (id, method) {\n var msg = new Verto_1.Result(id, method);\n if (this.nodeId) {\n msg.targetNodeId = this.nodeId;\n }\n this.session.execute(msg);\n };\n VertoHandler.prototype.handleMessage = function (msg) {\n var _this = this;\n var session = this.session;\n var id = msg.id,\n method = msg.method,\n params = msg.params;\n var callID = params.callID,\n eventChannel = params.eventChannel,\n eventType = params.eventType;\n var attach = method === constants_2.VertoMethod.Attach;\n if (eventType === 'channelPvtData') {\n return this._handlePvtEvent(params.pvtData);\n }\n if (callID && session.calls.hasOwnProperty(callID)) {\n if (attach) {\n session.calls[callID].hangup({}, false);\n } else {\n session.calls[callID].handleMessage(msg);\n this._ack(id, method);\n return;\n }\n }\n var _buildCall = function _buildCall() {\n var call = new Call_1[\"default\"](session, {\n id: callID,\n remoteSdp: params.sdp,\n destinationNumber: params.callee_id_number,\n remoteCallerName: params.caller_id_name,\n remoteCallerNumber: params.caller_id_number,\n callerName: params.callee_id_name,\n callerNumber: params.callee_id_number,\n attach: attach\n });\n call.nodeId = _this.nodeId;\n return call;\n };\n switch (method) {\n case constants_2.VertoMethod.Punt:\n session.disconnect();\n break;\n case constants_2.VertoMethod.Invite:\n {\n var call = _buildCall();\n call.setState(constants_3.State.Ringing);\n this._ack(id, method);\n break;\n }\n case constants_2.VertoMethod.Attach:\n {\n var call = _buildCall();\n if (this.session.autoRecoverCalls) {\n call.answer();\n } else {\n call.setState(constants_3.State.Recovering);\n }\n call.handleMessage(msg);\n break;\n }\n case constants_2.VertoMethod.Event:\n case 'webrtc.event':\n if (!eventChannel) {\n logger_1[\"default\"].error('Verto received an unknown event:', params);\n return;\n }\n var protocol = session.relayProtocol;\n var firstValue = eventChannel.split('.')[0];\n if (session._existsSubscription(protocol, eventChannel)) {\n (0, Handler_1.trigger)(protocol, params, eventChannel);\n } else if (eventChannel === session.sessionid) {\n this._handleSessionEvent(params.eventData);\n } else if (session._existsSubscription(protocol, firstValue)) {\n (0, Handler_1.trigger)(protocol, params, firstValue);\n } else if (session.calls.hasOwnProperty(eventChannel)) {\n session.calls[eventChannel].handleMessage(msg);\n } else {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n }\n break;\n case constants_2.VertoMethod.Info:\n params.type = constants_2.NOTIFICATION_TYPE.generic;\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n break;\n case constants_2.VertoMethod.ClientReady:\n params.type = constants_2.NOTIFICATION_TYPE.vertoClientReady;\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, params, session.uuid);\n break;\n default:\n logger_1[\"default\"].warn('Verto message unknown method:', msg);\n }\n };\n VertoHandler.prototype._retrieveCallId = function (packet, laChannel) {\n var _this = this;\n var callIds = Object.keys(this.session.calls);\n if (packet.action === 'bootObj') {\n var me = packet.data.find(function (pr) {\n return callIds.includes(pr[0]);\n });\n if (me instanceof Array) {\n return me[0];\n }\n } else {\n return callIds.find(function (id) {\n return _this.session.calls[id].channels.includes(laChannel);\n });\n }\n };\n VertoHandler.prototype._handlePvtEvent = function (pvtData) {\n return __awaiter(this, void 0, void 0, function () {\n var session, protocol, action, laChannel, laName, chatChannel, infoChannel, modChannel, conferenceMemberID, role, callID, _a, _liveArrayBootstrap_1, tmp, result, call_1, _b, callId, notification, channels;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n session = this.session;\n protocol = session.relayProtocol;\n action = pvtData.action, laChannel = pvtData.laChannel, laName = pvtData.laName, chatChannel = pvtData.chatChannel, infoChannel = pvtData.infoChannel, modChannel = pvtData.modChannel, conferenceMemberID = pvtData.conferenceMemberID, role = pvtData.role, callID = pvtData.callID;\n _a = action;\n switch (_a) {\n case 'conference-liveArray-join':\n return [3, 1];\n case 'conference-liveArray-part':\n return [3, 3];\n }\n return [3, 4];\n case 1:\n _liveArrayBootstrap_1 = function _liveArrayBootstrap_1() {\n session.vertoBroadcast({\n nodeId: _this.nodeId,\n channel: laChannel,\n data: {\n liveArray: {\n command: 'bootstrap',\n context: laChannel,\n name: laName\n }\n }\n });\n };\n tmp = {\n nodeId: this.nodeId,\n channels: [laChannel],\n handler: function handler(_a) {\n var packet = _a.data;\n var id = callID || _this._retrieveCallId(packet, laChannel);\n if (id && session.calls.hasOwnProperty(id)) {\n var call = session.calls[id];\n call._addChannel(laChannel);\n call.extension = laName;\n call.handleConferenceUpdate(packet, pvtData).then(function (error) {\n if (error === 'INVALID_PACKET') {\n _liveArrayBootstrap_1();\n }\n });\n }\n }\n };\n return [4, session.vertoSubscribe(tmp)[\"catch\"](function (error) {\n logger_1[\"default\"].error('liveArray subscription error:', error);\n })];\n case 2:\n result = _c.sent();\n if ((0, helpers_1.checkSubscribeResponse)(result, laChannel)) {\n _liveArrayBootstrap_1();\n }\n return [3, 4];\n case 3:\n {\n call_1 = null;\n if (laChannel && session._existsSubscription(protocol, laChannel)) {\n _b = session.subscriptions[protocol][laChannel].callId, callId = _b === void 0 ? null : _b;\n call_1 = session.calls[callId] || null;\n if (callId !== null) {\n notification = {\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n action: constants_3.ConferenceAction.Leave,\n conferenceName: laName,\n participantId: Number(conferenceMemberID),\n role: role\n };\n if (!(0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, callId, false)) {\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, session.uuid);\n }\n if (call_1 === null) {\n (0, Handler_1.deRegister)(constants_1.SwEvent.Notification, null, callId);\n }\n }\n }\n channels = [laChannel, chatChannel, infoChannel, modChannel];\n session.vertoUnsubscribe({\n nodeId: this.nodeId,\n channels: channels\n }).then(function (_a) {\n var _b = _a.unsubscribedChannels,\n unsubscribedChannels = _b === void 0 ? [] : _b;\n if (call_1) {\n call_1.channels = call_1.channels.filter(function (c) {\n return !unsubscribedChannels.includes(c);\n });\n }\n })[\"catch\"](function (error) {\n logger_1[\"default\"].error('liveArray unsubscribe error:', error);\n });\n return [3, 4];\n }\n _c.label = 4;\n case 4:\n return [2];\n }\n });\n });\n };\n VertoHandler.prototype._handleSessionEvent = function (eventData) {\n switch (eventData.contentType) {\n case 'layout-info':\n case 'layer-info':\n (0, LayoutHandler_1.MCULayoutEventHandler)(this.session, eventData);\n break;\n case 'logo-info':\n {\n var notification = {\n type: constants_2.NOTIFICATION_TYPE.conferenceUpdate,\n action: constants_3.ConferenceAction.LogoInfo,\n logo: eventData.logoURL\n };\n (0, Handler_1.trigger)(constants_1.SwEvent.Notification, notification, this.session.uuid);\n break;\n }\n }\n };\n return VertoHandler;\n}();\nexports[\"default\"] = VertoHandler;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/VertoHandler.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/WebRTC.ts": -/*!**************************************!*\ - !*** ../common/src/webrtc/WebRTC.ts ***! - \**************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setMediaElementSinkId = exports.toggleMuteMediaElement = exports.unmuteMediaElement = exports.muteMediaElement = exports.stopStream = exports.sdpToJsonHack = exports.detachMediaStream = exports.attachMediaStream = exports.streamIsValid = exports.getSupportedConstraints = exports.enumerateDevices = exports.getDisplayMedia = exports.getUserMedia = exports.RTCPeerConnection = exports.WebRTCOverridesManager = void 0;\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar WebRTC = __importStar(__webpack_require__(/*! ../util/webrtc */ \"../common/src/util/webrtc/index.ts\"));\nvar WebRTCOverridesManager = function () {\n function WebRTCOverridesManager() {}\n WebRTCOverridesManager.getInstance = function () {\n if (!this._instance) {\n this._instance = new WebRTCOverridesManager();\n }\n return this._instance;\n };\n Object.defineProperty(WebRTCOverridesManager.prototype, \"RTCPeerConnection\", {\n get: function get() {\n var _this = this;\n return function (params) {\n var _a;\n var peerConnectionBuilder = (_a = _this._RTCPeerConnection) !== null && _a !== void 0 ? _a : WebRTC.RTCPeerConnection;\n var peerConnectionInstance = peerConnectionBuilder(params);\n return (0, helpers_1.normalizeAsyncAPIs)(peerConnectionInstance, ['addTrack', 'getSender']);\n };\n },\n set: function set(value) {\n this._RTCPeerConnection = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getUserMedia\", {\n get: function get() {\n var _a;\n return (_a = this._getUserMedia) !== null && _a !== void 0 ? _a : WebRTC.getUserMedia;\n },\n set: function set(value) {\n this._getUserMedia = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getDisplayMedia\", {\n get: function get() {\n var _a;\n return (_a = this._getDisplayMedia) !== null && _a !== void 0 ? _a : WebRTC.getDisplayMedia;\n },\n set: function set(value) {\n this._getDisplayMedia = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"enumerateDevices\", {\n get: function get() {\n var _a;\n return (_a = this._enumerateDevices) !== null && _a !== void 0 ? _a : WebRTC.enumerateDevices;\n },\n set: function set(value) {\n this._enumerateDevices = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"getSupportedConstraints\", {\n get: function get() {\n var _a;\n return (_a = this._getSupportedConstraints) !== null && _a !== void 0 ? _a : WebRTC.getSupportedConstraints;\n },\n set: function set(value) {\n this._getSupportedConstraints = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"attachMediaStream\", {\n get: function get() {\n var _a;\n return (_a = this._attachMediaStream) !== null && _a !== void 0 ? _a : WebRTC.attachMediaStream;\n },\n set: function set(value) {\n this._attachMediaStream = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebRTCOverridesManager.prototype, \"streamIsValid\", {\n get: function get() {\n var _a;\n return (_a = this._streamIsValid) !== null && _a !== void 0 ? _a : WebRTC.streamIsValid;\n },\n set: function set(value) {\n this._streamIsValid = value;\n },\n enumerable: false,\n configurable: true\n });\n return WebRTCOverridesManager;\n}();\nexports.WebRTCOverridesManager = WebRTCOverridesManager;\nvar RTCPeerConnection = function RTCPeerConnection(params) {\n return WebRTCOverridesManager.getInstance().RTCPeerConnection(params);\n};\nexports.RTCPeerConnection = RTCPeerConnection;\nvar getUserMedia = function getUserMedia(params) {\n return WebRTCOverridesManager.getInstance().getUserMedia(params);\n};\nexports.getUserMedia = getUserMedia;\nvar getDisplayMedia = function getDisplayMedia(params) {\n return WebRTCOverridesManager.getInstance().getDisplayMedia(params);\n};\nexports.getDisplayMedia = getDisplayMedia;\nvar enumerateDevices = function enumerateDevices() {\n return WebRTCOverridesManager.getInstance().enumerateDevices();\n};\nexports.enumerateDevices = enumerateDevices;\nvar getSupportedConstraints = function getSupportedConstraints() {\n return WebRTCOverridesManager.getInstance().getSupportedConstraints();\n};\nexports.getSupportedConstraints = getSupportedConstraints;\nvar streamIsValid = function streamIsValid(stream) {\n return WebRTCOverridesManager.getInstance().streamIsValid(stream);\n};\nexports.streamIsValid = streamIsValid;\nvar attachMediaStream = function attachMediaStream(tag, stream) {\n return WebRTCOverridesManager.getInstance().attachMediaStream(tag, stream);\n};\nexports.attachMediaStream = attachMediaStream;\nvar detachMediaStream = function detachMediaStream(tag) {\n return WebRTC.detachMediaStream(tag);\n};\nexports.detachMediaStream = detachMediaStream;\nvar muteMediaElement = function muteMediaElement(tag) {\n return WebRTC.muteMediaElement(tag);\n};\nexports.muteMediaElement = muteMediaElement;\nvar unmuteMediaElement = function unmuteMediaElement(tag) {\n return WebRTC.unmuteMediaElement(tag);\n};\nexports.unmuteMediaElement = unmuteMediaElement;\nvar toggleMuteMediaElement = function toggleMuteMediaElement(tag) {\n return WebRTC.toggleMuteMediaElement(tag);\n};\nexports.toggleMuteMediaElement = toggleMuteMediaElement;\nvar setMediaElementSinkId = function setMediaElementSinkId(tag, deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, WebRTC.setMediaElementSinkId(tag, deviceId)];\n });\n });\n};\nexports.setMediaElementSinkId = setMediaElementSinkId;\nvar sdpToJsonHack = function sdpToJsonHack(sdp) {\n return WebRTC.sdpToJsonHack(sdp);\n};\nexports.sdpToJsonHack = sdpToJsonHack;\nvar stopStream = function stopStream(stream) {\n return WebRTC.stopStream(stream);\n};\nexports.stopStream = stopStream;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/WebRTC.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/constants.ts": -/*!*****************************************!*\ - !*** ../common/src/webrtc/constants.ts ***! - \*****************************************/ -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -eval("\n\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DeviceType = exports.ConferenceAction = exports.Role = exports.State = exports.DEFAULT_CALL_OPTIONS = exports.NOTIFICATION_TYPE = exports.VertoMethod = exports.Direction = exports.PeerType = void 0;\nvar PeerType;\n(function (PeerType) {\n PeerType[\"Offer\"] = \"offer\";\n PeerType[\"Answer\"] = \"answer\";\n})(PeerType || (exports.PeerType = PeerType = {}));\nvar Direction;\n(function (Direction) {\n Direction[\"Inbound\"] = \"inbound\";\n Direction[\"Outbound\"] = \"outbound\";\n})(Direction || (exports.Direction = Direction = {}));\nvar VertoMethod;\n(function (VertoMethod) {\n VertoMethod[\"Invite\"] = \"verto.invite\";\n VertoMethod[\"Attach\"] = \"verto.attach\";\n VertoMethod[\"Answer\"] = \"verto.answer\";\n VertoMethod[\"Info\"] = \"verto.info\";\n VertoMethod[\"Display\"] = \"verto.display\";\n VertoMethod[\"Media\"] = \"verto.media\";\n VertoMethod[\"Event\"] = \"verto.event\";\n VertoMethod[\"Bye\"] = \"verto.bye\";\n VertoMethod[\"Punt\"] = \"verto.punt\";\n VertoMethod[\"Broadcast\"] = \"verto.broadcast\";\n VertoMethod[\"Subscribe\"] = \"verto.subscribe\";\n VertoMethod[\"Unsubscribe\"] = \"verto.unsubscribe\";\n VertoMethod[\"ClientReady\"] = \"verto.clientReady\";\n VertoMethod[\"Modify\"] = \"verto.modify\";\n VertoMethod[\"MediaParams\"] = \"verto.mediaParams\";\n})(VertoMethod || (exports.VertoMethod = VertoMethod = {}));\nexports.NOTIFICATION_TYPE = (_a = {\n generic: 'event'\n}, _a[VertoMethod.Display] = 'participantData', _a[VertoMethod.Attach] = 'participantData', _a.conferenceUpdate = 'conferenceUpdate', _a.callUpdate = 'callUpdate', _a.vertoClientReady = 'vertoClientReady', _a.userMediaError = 'userMediaError', _a.refreshToken = 'refreshToken', _a);\nexports.DEFAULT_CALL_OPTIONS = {\n destinationNumber: '',\n remoteCallerName: 'Outbound Call',\n remoteCallerNumber: '',\n callerName: '',\n callerNumber: '',\n audio: true,\n video: false,\n useStereo: false,\n attach: false,\n screenShare: false,\n userVariables: {}\n};\nvar State;\n(function (State) {\n State[State[\"New\"] = 0] = \"New\";\n State[State[\"Requesting\"] = 1] = \"Requesting\";\n State[State[\"Trying\"] = 2] = \"Trying\";\n State[State[\"Recovering\"] = 3] = \"Recovering\";\n State[State[\"Ringing\"] = 4] = \"Ringing\";\n State[State[\"Answering\"] = 5] = \"Answering\";\n State[State[\"Early\"] = 6] = \"Early\";\n State[State[\"Active\"] = 7] = \"Active\";\n State[State[\"Held\"] = 8] = \"Held\";\n State[State[\"Hangup\"] = 9] = \"Hangup\";\n State[State[\"Destroy\"] = 10] = \"Destroy\";\n State[State[\"Purge\"] = 11] = \"Purge\";\n})(State || (exports.State = State = {}));\nvar Role;\n(function (Role) {\n Role[\"Participant\"] = \"participant\";\n Role[\"Moderator\"] = \"moderator\";\n})(Role || (exports.Role = Role = {}));\nvar ConferenceAction;\n(function (ConferenceAction) {\n ConferenceAction[\"Join\"] = \"join\";\n ConferenceAction[\"Leave\"] = \"leave\";\n ConferenceAction[\"Bootstrap\"] = \"bootstrap\";\n ConferenceAction[\"Add\"] = \"add\";\n ConferenceAction[\"Modify\"] = \"modify\";\n ConferenceAction[\"Delete\"] = \"delete\";\n ConferenceAction[\"Clear\"] = \"clear\";\n ConferenceAction[\"ChatMessage\"] = \"chatMessage\";\n ConferenceAction[\"LayerInfo\"] = \"layerInfo\";\n ConferenceAction[\"LogoInfo\"] = \"logoInfo\";\n ConferenceAction[\"LayoutInfo\"] = \"layoutInfo\";\n ConferenceAction[\"LayoutList\"] = \"layoutList\";\n ConferenceAction[\"ModCmdResponse\"] = \"modCommandResponse\";\n})(ConferenceAction || (exports.ConferenceAction = ConferenceAction = {}));\nvar DeviceType;\n(function (DeviceType) {\n DeviceType[\"Video\"] = \"videoinput\";\n DeviceType[\"AudioIn\"] = \"audioinput\";\n DeviceType[\"AudioOut\"] = \"audiooutput\";\n})(DeviceType || (exports.DeviceType = DeviceType = {}));\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/constants.ts?"); - -/***/ }), - -/***/ "../common/src/webrtc/helpers.ts": -/*!***************************************!*\ - !*** ../common/src/webrtc/helpers.ts ***! - \***************************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.sdpHasVideo = exports.sdpHasAudio = exports.filterIceServers = exports.toggleVideoTracks = exports.disableVideoTracks = exports.enableVideoTracks = exports.toggleAudioTracks = exports.disableAudioTracks = exports.enableAudioTracks = exports.destructSubscribeResponse = exports.checkSubscribeResponse = exports.sdpBitrateHack = exports.sdpMediaOrderHack = exports.sdpStereoHack = exports.checkDeviceIdConstraints = exports.removeUnsupportedConstraints = exports.assureDeviceId = exports.getMediaConstraints = exports.scanResolutions = exports.getDevices = exports.getUserMedia = void 0;\nvar logger_1 = __importDefault(__webpack_require__(/*! ../util/logger */ \"../common/src/util/logger.ts\"));\nvar WebRTC = __importStar(__webpack_require__(/*! ./WebRTC */ \"../common/src/webrtc/WebRTC.ts\"));\nvar helpers_1 = __webpack_require__(/*! ../util/helpers */ \"../common/src/util/helpers.ts\");\nvar constants_1 = __webpack_require__(/*! ./constants */ \"../common/src/webrtc/constants.ts\");\nvar getUserMedia = function getUserMedia(constraints) {\n return __awaiter(void 0, void 0, void 0, function () {\n var audio, video, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger_1[\"default\"].info('RTCService.getUserMedia', constraints);\n audio = constraints.audio, video = constraints.video;\n if (!audio && !video) {\n return [2, null];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4, WebRTC.getUserMedia(constraints)];\n case 2:\n return [2, _a.sent()];\n case 3:\n error_1 = _a.sent();\n logger_1[\"default\"].error('getUserMedia error: ', error_1);\n throw error_1;\n case 4:\n return [2];\n }\n });\n });\n};\nexports.getUserMedia = getUserMedia;\nvar _constraintsByKind = function _constraintsByKind(kind) {\n if (kind === void 0) {\n kind = null;\n }\n return {\n audio: !kind || kind === constants_1.DeviceType.AudioIn,\n video: !kind || kind === constants_1.DeviceType.Video\n };\n};\nvar getDevices = function getDevices(kind, fullList) {\n if (kind === void 0) {\n kind = null;\n }\n if (fullList === void 0) {\n fullList = false;\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var devices, valid, stream, found;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, WebRTC.enumerateDevices()[\"catch\"](function (error) {\n return [];\n })];\n case 1:\n devices = _a.sent();\n if (kind) {\n devices = devices.filter(function (d) {\n return d.kind === kind;\n });\n }\n valid = devices.length && devices.every(function (d) {\n return d.deviceId && d.label;\n });\n if (!!valid) return [3, 3];\n return [4, WebRTC.getUserMedia(_constraintsByKind(kind))];\n case 2:\n stream = _a.sent();\n WebRTC.stopStream(stream);\n return [2, getDevices(kind)];\n case 3:\n if (fullList === true) {\n return [2, devices];\n }\n found = [];\n devices = devices.filter(function (_a) {\n var kind = _a.kind,\n groupId = _a.groupId;\n if (!groupId) {\n return true;\n }\n var key = \"\".concat(kind, \"-\").concat(groupId);\n if (!found.includes(key)) {\n found.push(key);\n return true;\n }\n return false;\n });\n return [2, devices];\n }\n });\n });\n};\nexports.getDevices = getDevices;\nvar resolutionList = [[320, 240], [640, 360], [640, 480], [1280, 720], [1920, 1080]];\nvar scanResolutions = function scanResolutions(deviceId) {\n return __awaiter(void 0, void 0, void 0, function () {\n var supported, stream, videoTrack, i, _a, width, height, success;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n supported = [];\n return [4, getUserMedia({\n video: {\n deviceId: {\n exact: deviceId\n }\n }\n })];\n case 1:\n stream = _b.sent();\n videoTrack = stream.getVideoTracks()[0];\n i = 0;\n _b.label = 2;\n case 2:\n if (!(i < resolutionList.length)) return [3, 5];\n _a = __read(resolutionList[i], 2), width = _a[0], height = _a[1];\n return [4, videoTrack.applyConstraints({\n width: {\n exact: width\n },\n height: {\n exact: height\n }\n }).then(function () {\n return true;\n })[\"catch\"](function () {\n return false;\n })];\n case 3:\n success = _b.sent();\n if (success) {\n supported.push({\n resolution: \"\".concat(width, \"x\").concat(height),\n width: width,\n height: height\n });\n }\n _b.label = 4;\n case 4:\n i++;\n return [3, 2];\n case 5:\n WebRTC.stopStream(stream);\n return [2, supported];\n }\n });\n });\n};\nexports.scanResolutions = scanResolutions;\nvar getMediaConstraints = function getMediaConstraints(options) {\n return __awaiter(void 0, void 0, void 0, function () {\n var _a, audio, micId, _b, micLabel, _c, video, camId, _d, camLabel;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = options.audio, audio = _a === void 0 ? true : _a, micId = options.micId;\n _b = options.micLabel, micLabel = _b === void 0 ? '' : _b;\n if (!micId) return [3, 2];\n return [4, assureDeviceId(micId, micLabel, constants_1.DeviceType.AudioIn)[\"catch\"](function (error) {\n return null;\n })];\n case 1:\n micId = _e.sent();\n if (micId) {\n if (typeof audio === 'boolean') {\n audio = {};\n }\n audio.deviceId = {\n exact: micId\n };\n }\n _e.label = 2;\n case 2:\n _c = options.video, video = _c === void 0 ? false : _c, camId = options.camId;\n _d = options.camLabel, camLabel = _d === void 0 ? '' : _d;\n if (!camId) return [3, 4];\n return [4, assureDeviceId(camId, camLabel, constants_1.DeviceType.Video)[\"catch\"](function (error) {\n return null;\n })];\n case 3:\n camId = _e.sent();\n if (camId) {\n if (typeof video === 'boolean') {\n video = {};\n }\n video.deviceId = {\n exact: camId\n };\n }\n _e.label = 4;\n case 4:\n return [2, {\n audio: audio,\n video: video\n }];\n }\n });\n });\n};\nexports.getMediaConstraints = getMediaConstraints;\nvar assureDeviceId = function assureDeviceId(id, label, kind) {\n return __awaiter(void 0, void 0, void 0, function () {\n var devices, i, _a, deviceId, deviceLabel;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4, getDevices(kind, true)];\n case 1:\n devices = _b.sent();\n for (i = 0; i < devices.length; i++) {\n _a = devices[i], deviceId = _a.deviceId, deviceLabel = _a.label;\n if (id === deviceId || label === deviceLabel) {\n return [2, deviceId];\n }\n }\n return [2, null];\n }\n });\n });\n};\nexports.assureDeviceId = assureDeviceId;\nvar removeUnsupportedConstraints = function removeUnsupportedConstraints(constraints) {\n var supported = WebRTC.getSupportedConstraints();\n Object.keys(constraints).map(function (key) {\n if (!supported.hasOwnProperty(key) || constraints[key] === null || constraints[key] === undefined) {\n delete constraints[key];\n }\n });\n};\nexports.removeUnsupportedConstraints = removeUnsupportedConstraints;\nvar checkDeviceIdConstraints = function checkDeviceIdConstraints(id, label, kind, constraints) {\n return __awaiter(void 0, void 0, void 0, function () {\n var deviceId, deviceId_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n deviceId = constraints.deviceId;\n if (!(!(0, helpers_1.isDefined)(deviceId) && (id || label))) return [3, 2];\n return [4, assureDeviceId(id, label, kind)[\"catch\"](function (error) {\n return null;\n })];\n case 1:\n deviceId_1 = _a.sent();\n if (deviceId_1) {\n constraints.deviceId = {\n exact: deviceId_1\n };\n }\n _a.label = 2;\n case 2:\n return [2, constraints];\n }\n });\n });\n};\nexports.checkDeviceIdConstraints = checkDeviceIdConstraints;\nvar sdpStereoHack = function sdpStereoHack(sdp) {\n var endOfLine = '\\r\\n';\n var sdpLines = sdp.split(endOfLine);\n var opusIndex = sdpLines.findIndex(function (s) {\n return /^a=rtpmap/.test(s) && /opus\\/48000/.test(s);\n });\n if (opusIndex < 0) {\n return sdp;\n }\n var getCodecPayloadType = function getCodecPayloadType(line) {\n var pattern = new RegExp('a=rtpmap:(\\\\d+) \\\\w+\\\\/\\\\d+');\n var result = line.match(pattern);\n return result && result.length == 2 ? result[1] : null;\n };\n var opusPayload = getCodecPayloadType(sdpLines[opusIndex]);\n var pattern = new RegExp(\"a=fmtp:\".concat(opusPayload));\n var fmtpLineIndex = sdpLines.findIndex(function (s) {\n return pattern.test(s);\n });\n if (fmtpLineIndex >= 0) {\n if (!/stereo=1;/.test(sdpLines[fmtpLineIndex])) {\n sdpLines[fmtpLineIndex] += '; stereo=1; sprop-stereo=1';\n }\n } else {\n sdpLines[opusIndex] += \"\".concat(endOfLine, \"a=fmtp:\").concat(opusPayload, \" stereo=1; sprop-stereo=1\");\n }\n return sdpLines.join(endOfLine);\n};\nexports.sdpStereoHack = sdpStereoHack;\nvar _isAudioLine = function _isAudioLine(line) {\n return /^m=audio/.test(line);\n};\nvar _isVideoLine = function _isVideoLine(line) {\n return /^m=video/.test(line);\n};\nvar sdpMediaOrderHack = function sdpMediaOrderHack(answer, localOffer) {\n var endOfLine = '\\r\\n';\n var offerLines = localOffer.split(endOfLine);\n var offerAudioIndex = offerLines.findIndex(_isAudioLine);\n var offerVideoIndex = offerLines.findIndex(_isVideoLine);\n if (offerAudioIndex < offerVideoIndex) {\n return answer;\n }\n var answerLines = answer.split(endOfLine);\n var answerAudioIndex = answerLines.findIndex(_isAudioLine);\n var answerVideoIndex = answerLines.findIndex(_isVideoLine);\n var audioLines = answerLines.slice(answerAudioIndex, answerVideoIndex);\n var videoLines = answerLines.slice(answerVideoIndex, answerLines.length - 1);\n var beginLines = answerLines.slice(0, answerAudioIndex);\n return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(beginLines), false), __read(videoLines), false), __read(audioLines), false), [''], false).join(endOfLine);\n};\nexports.sdpMediaOrderHack = sdpMediaOrderHack;\nvar checkSubscribeResponse = function checkSubscribeResponse(response, channel) {\n if (!response) {\n return false;\n }\n var _a = destructSubscribeResponse(response),\n subscribed = _a.subscribed,\n alreadySubscribed = _a.alreadySubscribed;\n return subscribed.includes(channel) || alreadySubscribed.includes(channel);\n};\nexports.checkSubscribeResponse = checkSubscribeResponse;\nvar destructSubscribeResponse = function destructSubscribeResponse(response) {\n var tmp = {\n subscribed: [],\n alreadySubscribed: [],\n unauthorized: [],\n unsubscribed: [],\n notSubscribed: []\n };\n Object.keys(tmp).forEach(function (k) {\n tmp[k] = response[\"\".concat(k, \"Channels\")] || [];\n });\n return tmp;\n};\nexports.destructSubscribeResponse = destructSubscribeResponse;\nvar enableAudioTracks = function enableAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', true);\n};\nexports.enableAudioTracks = enableAudioTracks;\nvar disableAudioTracks = function disableAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', false);\n};\nexports.disableAudioTracks = disableAudioTracks;\nvar toggleAudioTracks = function toggleAudioTracks(stream) {\n _updateMediaStreamTracks(stream, 'audio', null);\n};\nexports.toggleAudioTracks = toggleAudioTracks;\nvar enableVideoTracks = function enableVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', true);\n};\nexports.enableVideoTracks = enableVideoTracks;\nvar disableVideoTracks = function disableVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', false);\n};\nexports.disableVideoTracks = disableVideoTracks;\nvar toggleVideoTracks = function toggleVideoTracks(stream) {\n _updateMediaStreamTracks(stream, 'video', null);\n};\nexports.toggleVideoTracks = toggleVideoTracks;\nvar _updateMediaStreamTracks = function _updateMediaStreamTracks(stream, kind, enabled) {\n if (kind === void 0) {\n kind = null;\n }\n if (enabled === void 0) {\n enabled = null;\n }\n if (!WebRTC.streamIsValid(stream)) {\n return null;\n }\n var tracks = [];\n switch (kind) {\n case 'audio':\n tracks = stream.getAudioTracks();\n break;\n case 'video':\n tracks = stream.getVideoTracks();\n break;\n default:\n tracks = stream.getTracks();\n break;\n }\n tracks.forEach(function (track) {\n switch (enabled) {\n case 'on':\n case true:\n track.enabled = true;\n break;\n case 'off':\n case false:\n track.enabled = false;\n break;\n default:\n track.enabled = !track.enabled;\n break;\n }\n });\n};\nvar sdpBitrateHack = function sdpBitrateHack(sdp, max, min, start) {\n var endOfLine = '\\r\\n';\n var lines = sdp.split(endOfLine);\n lines.forEach(function (line, i) {\n if (/^a=fmtp:\\d*/.test(line)) {\n lines[i] += \";x-google-max-bitrate=\".concat(max, \";x-google-min-bitrate=\").concat(min, \";x-google-start-bitrate=\").concat(start);\n } else if (/^a=mid:(1|video)/.test(line)) {\n lines[i] += \"\\r\\nb=AS:\".concat(max);\n }\n });\n return lines.join(endOfLine);\n};\nexports.sdpBitrateHack = sdpBitrateHack;\nvar filterIceServers = function filterIceServers(servers, options) {\n if (options === void 0) {\n options = {\n disableUdpIceServers: false\n };\n }\n var _a = options.disableUdpIceServers,\n disableUdpIceServers = _a === void 0 ? false : _a;\n var filterNonTransportTCP = function filterNonTransportTCP(urls) {\n var transportParam = 'transport=tcp';\n if (urls instanceof Array) {\n return urls.filter(function (url) {\n return url.includes(transportParam);\n });\n } else {\n return urls.includes(transportParam) ? urls : '';\n }\n };\n return servers.map(function (server) {\n return __assign(__assign({}, server), {\n urls: disableUdpIceServers ? filterNonTransportTCP(server.urls) : server.urls\n });\n });\n};\nexports.filterIceServers = filterIceServers;\nvar sdpHasAudio = function sdpHasAudio(sdp) {\n if (sdp === void 0) {\n sdp = '';\n }\n return /m=audio/.test(sdp);\n};\nexports.sdpHasAudio = sdpHasAudio;\nvar sdpHasVideo = function sdpHasVideo(sdp) {\n if (sdp === void 0) {\n sdp = '';\n }\n return /m=video/.test(sdp);\n};\nexports.sdpHasVideo = sdpHasVideo;\n\n//# sourceURL=webpack://@signalwire/js/../common/src/webrtc/helpers.ts?"); - -/***/ }), - -/***/ "./index.ts": -/*!******************!*\ - !*** ./index.ts ***! - \******************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CantinaAuth = exports.Verto = exports.Relay = exports.VERSION = void 0;\nvar SignalWire_1 = __importDefault(__webpack_require__(/*! ./src/SignalWire */ \"./src/SignalWire.ts\"));\nexports.Relay = SignalWire_1[\"default\"];\nvar Verto_1 = __importDefault(__webpack_require__(/*! ./src/Verto */ \"./src/Verto.ts\"));\nexports.Verto = Verto_1[\"default\"];\nvar Connect_1 = __webpack_require__(/*! ../common/src/messages/blade/Connect */ \"../common/src/messages/blade/Connect.ts\");\nvar CantinaAuth_1 = __importDefault(__webpack_require__(/*! ../common/src/webrtc/CantinaAuth */ \"../common/src/webrtc/CantinaAuth.ts\"));\nexports.CantinaAuth = CantinaAuth_1[\"default\"];\nexports.VERSION = '1.5.1-rc.1';\n(0, Connect_1.setAgentName)(\"JavaScript SDK/\".concat(exports.VERSION));\n__exportStar(__webpack_require__(/*! ../common/src/util/interfaces */ \"../common/src/util/interfaces.ts\"), exports);\n\n//# sourceURL=webpack://@signalwire/js/./index.ts?"); - -/***/ }), - -/***/ "./src/SignalWire.ts": -/*!***************************!*\ - !*** ./src/SignalWire.ts ***! - \***************************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar BrowserSession_1 = __importDefault(__webpack_require__(/*! ../../common/src/BrowserSession */ \"../common/src/BrowserSession.ts\"));\nvar Blade_1 = __webpack_require__(/*! ../../common/src/messages/Blade */ \"../common/src/messages/Blade.ts\");\nvar BaseRequest_1 = __importDefault(__webpack_require__(/*! ../../common/src/messages/verto/BaseRequest */ \"../common/src/messages/verto/BaseRequest.ts\"));\nvar Call_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/Call */ \"../common/src/webrtc/Call.ts\"));\nvar SignalWire = function (_super) {\n __extends(SignalWire, _super);\n function SignalWire() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SignalWire.prototype.execute = function (message) {\n var msg = message;\n if (message instanceof BaseRequest_1[\"default\"]) {\n var params = {\n message: message.request\n };\n if (message.targetNodeId) {\n params.node_id = message.targetNodeId;\n }\n msg = new Blade_1.Execute({\n protocol: this.relayProtocol,\n method: 'message',\n params: params\n });\n }\n return _super.prototype.execute.call(this, msg);\n };\n SignalWire.prototype.newCall = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, destinationNumber, call;\n return __generator(this, function (_b) {\n _a = options.destinationNumber, destinationNumber = _a === void 0 ? null : _a;\n if (!destinationNumber) {\n throw new TypeError('destinationNumber is required');\n }\n call = new Call_1[\"default\"](this, options);\n call.invite();\n return [2, call];\n });\n });\n };\n return SignalWire;\n}(BrowserSession_1[\"default\"]);\nexports[\"default\"] = SignalWire;\n\n//# sourceURL=webpack://@signalwire/js/./src/SignalWire.ts?"); - -/***/ }), - -/***/ "./src/Verto.ts": -/*!**********************!*\ - !*** ./src/Verto.ts ***! - \**********************/ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return _extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n _extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VERTO_PROTOCOL = void 0;\nvar BrowserSession_1 = __importDefault(__webpack_require__(/*! ../../common/src/BrowserSession */ \"../common/src/BrowserSession.ts\"));\nvar Verto_1 = __webpack_require__(/*! ../../common/src/messages/Verto */ \"../common/src/messages/Verto.ts\");\nvar Call_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/Call */ \"../common/src/webrtc/Call.ts\"));\nvar constants_1 = __webpack_require__(/*! ../../common/src/util/constants */ \"../common/src/util/constants/index.ts\");\nvar Handler_1 = __webpack_require__(/*! ../../common/src/services/Handler */ \"../common/src/services/Handler.ts\");\nvar storage_1 = __webpack_require__(/*! ../../common/src/util/storage/ */ \"../common/src/util/storage/index.ts\");\nvar VertoHandler_1 = __importDefault(__webpack_require__(/*! ../../common/src/webrtc/VertoHandler */ \"../common/src/webrtc/VertoHandler.ts\"));\nexports.VERTO_PROTOCOL = 'verto-protocol';\nvar Verto = function (_super) {\n __extends(Verto, _super);\n function Verto() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.relayProtocol = exports.VERTO_PROTOCOL;\n _this.timeoutErrorCode = -329990;\n return _this;\n }\n Verto.prototype.validateOptions = function () {\n var _a = this.options,\n host = _a.host,\n login = _a.login,\n passwd = _a.passwd,\n password = _a.password;\n return Boolean(host) && Boolean(login && (passwd || password));\n };\n Verto.prototype.newCall = function (options) {\n var _a = options.destinationNumber,\n destinationNumber = _a === void 0 ? null : _a;\n if (!destinationNumber) {\n throw new Error('Verto.newCall() error: destinationNumber is required.');\n }\n var call = new Call_1[\"default\"](this, options);\n call.invite();\n return call;\n };\n Verto.prototype.broadcast = function (params) {\n return this.vertoBroadcast(params);\n };\n Verto.prototype.subscribe = function (params) {\n return this.vertoSubscribe(params);\n };\n Verto.prototype.unsubscribe = function (params) {\n return this.vertoUnsubscribe(params);\n };\n Verto.prototype._onSocketOpen = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, login, password, passwd, userVariables, sessidLogin, msg, response;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this._idle = false;\n _a = this.options, login = _a.login, password = _a.password, passwd = _a.passwd, userVariables = _a.userVariables;\n if (!this.sessionid) return [3, 2];\n sessidLogin = new Verto_1.Login(undefined, undefined, this.sessionid, undefined);\n return [4, this.execute(sessidLogin)[\"catch\"](console.error)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n msg = new Verto_1.Login(login, password || passwd, this.sessionid, userVariables);\n return [4, this.execute(msg)[\"catch\"](this._handleLoginError)];\n case 3:\n response = _b.sent();\n if (response) {\n this._autoReconnect = true;\n this.sessionid = response.sessid;\n storage_1.localStorage.setItem(constants_1.SESSION_ID, this.sessionid);\n (0, Handler_1.trigger)(constants_1.SwEvent.Ready, this, this.uuid);\n }\n return [2];\n }\n });\n });\n };\n Verto.prototype._onSocketMessage = function (msg) {\n var handler = new VertoHandler_1[\"default\"](this);\n handler.handleMessage(msg);\n };\n return Verto;\n}(BrowserSession_1[\"default\"]);\nexports[\"default\"] = Verto;\n\n//# sourceURL=webpack://@signalwire/js/./src/Verto.ts?"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module is referenced by other modules so it can't be inlined -/******/ var __webpack_exports__ = __webpack_require__("./index.ts"); -/******/ var __webpack_export_target__ = this; -/******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; -/******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); -/******/ -/******/ })() -; \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/static/signalwire.min.js b/packages/js/examples/flask-mute-test/static/signalwire.min.js deleted file mode 100644 index 38f7694a..00000000 --- a/packages/js/examples/flask-mute-test/static/signalwire.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see index.min.js.LICENSE.txt */ -(()=>{var e={188:function(e,t,n){var r,o;!function(){"use strict";r=function(){var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function o(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function i(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(t,n){for(var o=0;o=0&&n<=s.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(i=n,!1!==o&&function(e){var n=(r[e]||"silent").toUpperCase();if(typeof window!==t){try{return void(window.localStorage[u]=n)}catch(e){}try{window.document.cookie=encodeURIComponent(u)+"="+n+";"}catch(e){}}}(n),a.call(s,n,e),typeof console===t&&n{"use strict";n.r(t),n.d(t,{v1:()=>p,v3:()=>w,v4:()=>S,v5:()=>k});var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),o=new Uint8Array(16);function i(){if(!r)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(o)}for(var a=[],s=0;s<256;++s)a[s]=(s+256).toString(16).substr(1);const c=function(e,t){var n=t||0,r=a;return[r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]]].join("")};var u,l,d=0,f=0;const p=function(e,t,n){var r=t&&n||0,o=t||[],a=(e=e||{}).node||u,s=void 0!==e.clockseq?e.clockseq:l;if(null==a||null==s){var p=e.random||(e.rng||i)();null==a&&(a=u=[1|p[0],p[1],p[2],p[3],p[4],p[5]]),null==s&&(s=l=16383&(p[6]<<8|p[7]))}var h=void 0!==e.msecs?e.msecs:(new Date).getTime(),v=void 0!==e.nsecs?e.nsecs:f+1,y=h-d+(v-f)/1e4;if(y<0&&void 0===e.clockseq&&(s=s+1&16383),(y<0||h>d)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=h,f=v,l=s;var b=(1e4*(268435455&(h+=122192928e5))+v)%4294967296;o[r++]=b>>>24&255,o[r++]=b>>>16&255,o[r++]=b>>>8&255,o[r++]=255&b;var g=h/4294967296*1e4&268435455;o[r++]=g>>>8&255,o[r++]=255&g,o[r++]=g>>>24&15|16,o[r++]=g>>>16&255,o[r++]=s>>>8|128,o[r++]=255&s;for(var _=0;_<6;++_)o[r+_]=a[_];return t||c(o)};function h(e,t,n){var r=function(e,r,o,i){var a=o&&i||0;if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=new Array(e.length),n=0;n>16)+(t>>16)+(n>>16)<<16|65535&n}function y(e,t,n,r,o,i){return v((a=v(v(t,e),v(r,i)))<<(s=o)|a>>>32-s,n);var a,s}function b(e,t,n,r,o,i,a){return y(t&n|~t&r,e,t,o,i,a)}function g(e,t,n,r,o,i,a){return y(t&r|n&~r,e,t,o,i,a)}function _(e,t,n,r,o,i,a){return y(t^n^r,e,t,o,i,a)}function m(e,t,n,r,o,i,a){return y(n^(t|~r),e,t,o,i,a)}const w=h("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Array(t.length);for(var n=0;n>5]>>>t%32&255,r=parseInt(a.charAt(n>>>4&15)+a.charAt(15&n),16),o.push(r);return o}(function(e,t){var n,r,o,i,a;e[t>>5]|=128<>>9<<4)]=t;var s=1732584193,c=-271733879,u=-1732584194,l=271733878;for(n=0;n>2)-1]=void 0,t=0;t>5]|=(255&e[t/8])<>>32-t}const k=h("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var r=unescape(encodeURIComponent(e));e=new Array(r.length);for(var o=0;o>>0;v=h,h=p,p=I(f,30)>>>0,f=d,d=b}n[0]=n[0]+d>>>0,n[1]=n[1]+f>>>0,n[2]=n[2]+p>>>0,n[3]=n[3]+h>>>0,n[4]=n[4]+v>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}))},401:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Ping=t.Reauthenticate=t.Execute=t.Subscription=t.Connect=void 0;var r=n(68);Object.defineProperty(t,"Connect",{enumerable:!0,get:function(){return r.Connect}});var o=n(821);Object.defineProperty(t,"Execute",{enumerable:!0,get:function(){return o.Execute}});var i=n(921);Object.defineProperty(t,"Subscription",{enumerable:!0,get:function(){return i.Subscription}});var a=n(408);Object.defineProperty(t,"Reauthenticate",{enumerable:!0,get:function(){return a.Reauthenticate}});var s=n(748);Object.defineProperty(t,"Ping",{enumerable:!0,get:function(){return s.Ping}})},503:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Result=t.Unsubscribe=t.Subscribe=t.Broadcast=t.Info=t.Modify=t.Bye=t.Attach=t.Answer=t.Invite=t.Login=void 0;var a=i(n(10)),s=n(521);Object.defineProperty(t,"Login",{enumerable:!0,get:function(){return s.Login}});var c=n(827);Object.defineProperty(t,"Result",{enumerable:!0,get:function(){return c.Result}});var u=n(291),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Invite},t}(a.default);t.Invite=l;var d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Answer},t}(a.default);t.Answer=d;var f=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Attach},t}(a.default);t.Attach=f;var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Bye},t}(a.default);t.Bye=p;var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Modify},t}(a.default);t.Modify=h;var v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Info},t}(a.default);t.Info=v;var y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Broadcast},t}(a.default);t.Broadcast=y;var b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Subscribe},t}(a.default);t.Subscribe=b;var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.toString=function(){return u.VertoMethod.Unsubscribe},t}(a.default);t.Unsubscribe=g},68:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setAgentName=t.Connect=void 0;var a=i(n(119)),s=null;t.setAgentName=function(e){s=e};var c=function(e){function t(t,n){var r=e.call(this)||this;r.method="blade.connect";var o={version:{major:2,minor:1,revision:0},authentication:t};return n&&(o.sessionid=n),s&&(o.agent=s),r.buildRequest({method:r.method,params:o}),r}return o(t,e),t}(a.default);t.Connect=c},821:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Execute=void 0;var a=function(e){function t(t,n){void 0===n&&(n="");var r,o=e.call(this)||this;return o.method="blade.execute",r=t.hasOwnProperty("result")?{result:t}:{method:o.method,params:t},n&&(r.id=n),o.buildRequest(r),o}return o(t,e),t}(i(n(119)).default);t.Execute=a},748:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ping=void 0;var a=function(e){function t(){var t=e.call(this)||this;return t.method="blade.ping",t.buildRequest({method:t.method,params:{}}),t}return o(t,e),t}(i(n(119)).default);t.Ping=a},408:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Reauthenticate=void 0;var a=function(e){function t(t,n,r){var o=e.call(this)||this;o.method="blade.reauthenticate";var i={sessionid:r,authentication:{project:t,jwt_token:n}};return o.buildRequest({method:o.method,params:i}),o}return o(t,e),t}(i(n(119)).default);t.Reauthenticate=a},921:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Subscription=void 0;var a=function(e){function t(t){var n=e.call(this)||this;return n.method="blade.subscription",t.hasOwnProperty("auto_create")&&!t.auto_create&&delete t.auto_create,t.hasOwnProperty("downstream")&&!t.downstream&&delete t.downstream,n.buildRequest({method:n.method,params:t}),n}return o(t,e),t}(i(n(119)).default);t.Subscription=a},10:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.queueLength=t.isQueued=t.deRegisterAll=t.deRegister=t.registerOnce=t.register=t.trigger=void 0;var r=n(858),o="GLOBAL",i={},a=function(e,t){return void 0===t&&(t=o),i.hasOwnProperty(e)&&i[e].hasOwnProperty(t)};t.isQueued=a,t.queueLength=function(e,t){return void 0===t&&(t=o),a(e,t)?i[e][t].length:0};var s=function(e,t,n){void 0===n&&(n=o),i.hasOwnProperty(e)||(i[e]={}),i[e].hasOwnProperty(n)||(i[e][n]=[]),i[e][n].push(t)};t.register=s,t.registerOnce=function(e,t,n){void 0===n&&(n=o);var r=function r(o){c(e,r,n),t(o)};return r.prototype.targetRef=t,s(e,r,n)};var c=function(e,t,n){if(void 0===n&&(n=o),!a(e,n))return!1;if((0,r.isFunction)(t))for(var s=i[e][n].length-1;s>=0;s--){var c=i[e][n][s];(t===c||c.prototype&&t===c.prototype.targetRef)&&i[e][n].splice(s,1)}else i[e][n]=[];return 0===i[e][n].length&&(delete i[e][n],(0,r.objEmpty)(i[e])&&delete i[e]),!0};t.deRegister=c,t.trigger=function e(t,n,r,s){void 0===r&&(r=o),void 0===s&&(s=!0);var c=s&&r!==o;if(!a(t,r))return c&&e(t,n),!1;var u=i[t][r].length;if(!u)return c&&e(t,n),!1;for(var l=u-1;l>=0;l--)i[t][r][l](n);return c&&e(t,n),!0},t.deRegisterAll=function(e){delete i[e]}},6:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.BladeMethod=t.SwEvent=t.SESSION_ID=t.REMOVE=t.ADD=t.STORAGE_PREFIX=void 0,t.STORAGE_PREFIX="@signalwire:",t.ADD="add",t.REMOVE="remove",t.SESSION_ID="sessId",function(e){e.SocketOpen="signalwire.socket.open",e.SocketClose="signalwire.socket.close",e.SocketError="signalwire.socket.error",e.SocketMessage="signalwire.socket.message",e.SpeedTest="signalwire.internal.speedtest",e.Ready="signalwire.ready",e.Error="signalwire.error",e.Notification="signalwire.notification",e.Messages="signalwire.messages",e.Calls="signalwire.calls",e.MediaError="signalwire.rtc.mediaError"}(n||(t.SwEvent=n={})),function(e){e.Broadcast="blade.broadcast",e.Disconnect="blade.disconnect"}(r||(t.BladeMethod=r={}))},858:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}var o=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.stackTrace=t.normalizeAsyncAPIs=t.randomInt=t.destructResponse=t.checkWebSocketHost=t.findElementByType=t.isFunction=t.isDefined=t.safeParseJson=t.mutateLiveArrayData=t.mutateStorageKey=t.objEmpty=t.deepCopy=void 0;var a=i(n(955)),s=n(789);t.deepCopy=function(e){return JSON.parse(JSON.stringify(e))},t.objEmpty=function(e){return 0===Object.keys(e).length},t.mutateStorageKey=function(e){return"".concat(s.STORAGE_PREFIX).concat(e)},t.mutateLiveArrayData=function(e){var t=o(e,6),n=t[0],r=t[1],i=t[2],s=t[3],c=t[4],u=t[5],l={};try{l=JSON.parse(c.replace(/ID"/g,'Id"'))}catch(e){a.default.warn("Verto LA invalid media JSON string:",c)}return{participantId:Number(n),participantNumber:r,participantName:i,codec:s,media:l,participantData:u}},t.safeParseJson=function(e){if("string"!=typeof e)return e;try{return JSON.parse(e)}catch(t){return e}},t.isDefined=function(e){return void 0!==e},t.isFunction=function(e){return e instanceof Function||"function"==typeof e},t.findElementByType=function(e){return"object"===("undefined"==typeof document?"undefined":r(document))&&"getElementById"in document?"string"==typeof e?document.getElementById(e)||null:"function"==typeof e?e():e instanceof HTMLMediaElement?e:null:null};var c=/^(ws|wss):\/\//;t.checkWebSocketHost=function(e){var t=c.test(e)?"":"wss://";return"".concat(t).concat(e)},t.destructResponse=function(e,n){void 0===n&&(n=null);var r=e.result,o=void 0===r?{}:r,i=e.error;if(i)return{error:i};var a=o.result,s=void 0===a?null:a;if(null===s)return null!==n&&(o.node_id=n),{result:o};var c=s.code,u=void 0===c?null:c,l=s.node_id,d=void 0===l?null:l,f=s.result,p=void 0===f?null:f;return u&&"200"!==u?{error:s}:p?(0,t.destructResponse)(p,d):{result:s}},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.normalizeAsyncAPIs=function(e,t,n){void 0===t&&(t=[]),void 0===n&&(n="Async");var r=new Set(t);return new Proxy(e,{get:function(e,t){var o=Object.getOwnPropertyDescriptor(e,t);if(o&&o.get)return Reflect.get(e,t);if("function"==typeof e[t]){var i=e["".concat(String(t)).concat(n)]||e[t];return function(){for(var n=[],o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},955:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(188)).default.getLogger("signalwire"),i=o.methodFactory;o.methodFactory=function(e,t,n){var r=i(e,t,n);return function(){for(var e=[(new Date).toISOString().replace("T"," ").replace("Z",""),"-"],t=0;t0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=0&&(n._lastSerno=e),t};var r=e.iceServers,o=e.speaker,i=e.micId,a=e.micLabel,s=e.camId,c=e.camLabel,u=e.localElement,l=e.remoteElement,d=e.mediaConstraints,f=d.audio,h=d.video;this.options=Object.assign({},p.DEFAULT_CALL_OPTIONS,{audio:f,video:h,iceServers:r,localElement:u,remoteElement:l,micId:i,micLabel:a,camId:s,camLabel:c,speakerId:o},t),this._onMediaError=this._onMediaError.bind(this),this._init()}return Object.defineProperty(e.prototype,"nodeId",{get:function(){return this._targetNodeId},set:function(e){this._targetNodeId=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this.options.localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this.options.remoteStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"memberChannel",{get:function(){return"conference-member.".concat(this.id)},enumerable:!1,configurable:!0}),e.prototype.invite=function(){this.direction=p.Direction.Outbound,this.peer=new d.default(p.PeerType.Offer,this.options),this._registerPeerEvents()},e.prototype.answer=function(e){e&&(null==e?void 0:e.iceTransportPolicy)&&(this.options.iceTransportPolicy=null==e?void 0:e.iceTransportPolicy),this.direction=p.Direction.Inbound,this.peer=new d.default(p.PeerType.Answer,this.options),this._registerPeerEvents()},e.prototype.applyMediaConstraints=function(e){var t=this,n=e.mediaParams;n&&Object.keys(n).forEach((function(e){return t.peer.applyMediaConstraints(e,n[e])}))},e.prototype.hangup=function(e,t){var n=this;void 0===e&&(e={}),void 0===t&&(t=!0),u.default.trace("hangup requested with execute:",t),this.cause=e.cause||"NORMAL_CLEARING",this.causeCode=e.causeCode||16,this.setState(p.State.Hangup);var r=function(){n.peer&&n.peer.instance.close(),n.setState(p.State.Destroy)};if(t){u.default.debug("execute hangup on call ".concat(this.id," with cause:"),this.cause);var o=new l.Bye({sessid:this.session.sessionid,dialogParams:this.options});u.default.trace("Verto Bye stacktrace:",(0,y.stackTrace)()),this._execute(o).catch((function(e){return u.default.error("verto.bye failed!",e)})).then(r.bind(this))}else r()},e.prototype.transfer=function(e){var t=new l.Modify({sessid:this.session.sessionid,action:"transfer",destination:e,dialogParams:this.options});this._execute(t)},e.prototype.replace=function(e){var t=new l.Modify({sessid:this.session.sessionid,action:"replace",replaceCallID:e,dialogParams:this.options});this._execute(t)},e.prototype.hold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"hold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.unhold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"unhold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.toggleHold=function(){var e=new l.Modify({sessid:this.session.sessionid,action:"toggleHold",dialogParams:this.options});return this._execute(e).then(this._handleChangeHoldStateSuccess.bind(this)).catch(this._handleChangeHoldStateError.bind(this))},e.prototype.dtmf=function(e){var t=new l.Info({sessid:this.session.sessionid,dtmf:e,dialogParams:this.options});this._execute(t)},e.prototype.message=function(e,t){var n={from:this.session.options.login,to:e,body:t},r=new l.Info({sessid:this.session.sessionid,msg:n,dialogParams:this.options});this._execute(r)},e.prototype.muteAudio=function(){(0,v.disableAudioTracks)(this.options.localStream)},e.prototype.unmuteAudio=function(){(0,v.enableAudioTracks)(this.options.localStream)},e.prototype.toggleAudioMute=function(){(0,v.toggleAudioTracks)(this.options.localStream)},e.prototype.setAudioInDevice=function(e){return i(this,void 0,void 0,(function(){var t,n,r,o,i,s;return a(this,(function(a){switch(a.label){case 0:return[4,this.peer.instance.getSenders()];case 1:return t=a.sent(),n=t.find((function(e){return"audio"===e.track.kind})),n?[4,(0,b.getUserMedia)({audio:{deviceId:{exact:e}}})]:[3,3];case 2:r=a.sent(),o=r.getAudioTracks()[0],i=this.options.localStream,(s=i.getAudioTracks()).length>0&&(o.enabled=s[0].enabled),n.replaceTrack(o),this.options.micId=e,i.getAudioTracks().forEach((function(e){return e.stop()})),i.getVideoTracks().forEach((function(e){return r.addTrack(e)})),this.options.localStream=r,a.label=3;case 3:return[2]}}))}))},e.prototype.muteVideo=function(){(0,v.disableVideoTracks)(this.options.localStream)},e.prototype.unmuteVideo=function(){(0,v.enableVideoTracks)(this.options.localStream)},e.prototype.toggleVideoMute=function(){(0,v.toggleVideoTracks)(this.options.localStream)},e.prototype.setVideoDevice=function(e){return i(this,void 0,void 0,(function(){var t,n,r,o,i,s,c,u;return a(this,(function(a){switch(a.label){case 0:return[4,this.peer.instance.getSenders()];case 1:return t=a.sent(),n=t.find((function(e){return"video"===e.track.kind})),n?[4,(0,b.getUserMedia)({video:{deviceId:{exact:e}}})]:[3,3];case 2:r=a.sent(),o=r.getVideoTracks()[0],i=this.options,s=i.localElement,c=i.localStream,(u=c.getVideoTracks()).length>0&&(o.enabled=u[0].enabled),n.replaceTrack(o),(0,b.attachMediaStream)(s,r),this.options.camId=e,c.getAudioTracks().forEach((function(e){return r.addTrack(e)})),c.getVideoTracks().forEach((function(e){return e.stop()})),this.options.localStream=r,a.label=3;case 3:return[2]}}))}))},e.prototype.deaf=function(){(0,v.disableAudioTracks)(this.options.remoteStream)},e.prototype.undeaf=function(){(0,v.enableAudioTracks)(this.options.remoteStream)},e.prototype.toggleDeaf=function(){(0,v.toggleAudioTracks)(this.options.remoteStream)},e.prototype.setState=function(e){var t=this;switch(this._prevState=this._state,this._state=e,this.state=p.State[this._state].toLowerCase(),this.prevState=p.State[this._prevState].toLowerCase(),u.default.info("Call ".concat(this.id," state change from ").concat(this.prevState," to ").concat(this.state)),this._dispatchNotification({type:p.NOTIFICATION_TYPE.callUpdate,call:this}),e){case p.State.Purge:u.default.debug("Purging call ".concat(this.id)),this.hangup({cause:"PURGE",causeCode:"01"},!1);break;case p.State.Active:setTimeout((function(){var e=t.options,n=e.remoteElement,r=e.speakerId;n&&r&&(0,b.setMediaElementSinkId)(n,r)}),0);break;case p.State.Destroy:this._finalize()}},e.prototype.handleMessage=function(e){var t=e.method,n=e.params;switch(t){case p.VertoMethod.Answer:if(this.gotAnswer=!0,this._state>=p.State.Active)return;this._state>=p.State.Early&&this.setState(p.State.Active),this.gotEarly||this._onRemoteSdp(n.sdp);break;case p.VertoMethod.Media:if(this._state>=p.State.Early)return;this.gotEarly=!0,this._onRemoteSdp(n.sdp);break;case p.VertoMethod.Display:case p.VertoMethod.Attach:var r=n.display_name,i=n.display_number,a=n.display_direction;this.extension=i;var s=a===p.Direction.Inbound?p.Direction.Outbound:p.Direction.Inbound,c={type:p.NOTIFICATION_TYPE[t],call:this,displayName:r,displayNumber:i,displayDirection:s};(0,h.trigger)(f.SwEvent.Notification,c,this.id)||(0,h.trigger)(f.SwEvent.Notification,c,this.session.uuid);break;case p.VertoMethod.Info:case p.VertoMethod.Event:c=o(o({},n),{type:p.NOTIFICATION_TYPE.generic,call:this}),(0,h.trigger)(f.SwEvent.Notification,c,this.id)||(0,h.trigger)(f.SwEvent.Notification,c,this.session.uuid);break;case p.VertoMethod.MediaParams:this.applyMediaConstraints(n);break;case p.VertoMethod.Bye:u.default.debug("Hanging up call ".concat(this.id)),this.hangup(n,!1)}},e.prototype.handleConferenceUpdate=function(e,t){return i(this,void 0,void 0,(function(){var n,r,i,s,c,l,d,f,h,v,b,g,_;return a(this,(function(a){switch(a.label){case 0:if(!this._checkConferenceSerno(e.wireSerno)&&e.name!==t.laName)return u.default.error("ConferenceUpdate invalid wireSerno or packet name:",e),[2,"INVALID_PACKET"];switch(n=e.action,r=e.data,i=e.hashKey,s=void 0===i?String(this._lastSerno):i,c=e.arrIndex,n){case"bootObj":return[3,1];case"add":return[3,8];case"modify":return[3,9];case"del":return[3,10];case"clear":return[3,11]}return[3,12];case 1:return this._lastSerno=0,t.chatID,l=t.chatChannel,d=t.infoChannel,f=t.modChannel,h=t.laName,v=t.conferenceMemberID,b=t.role,this._dispatchConferenceUpdate({action:p.ConferenceAction.Join,conferenceName:h,participantId:Number(v),role:b}),l?[4,this._subscribeConferenceChat(l)]:[3,3];case 2:a.sent(),a.label=3;case 3:return d?[4,this._subscribeConferenceInfo(d)]:[3,5];case 4:a.sent(),a.label=5;case 5:return f&&b===p.Role.Moderator?[4,this._subscribeConferenceModerator(f)]:[3,7];case 6:a.sent(),a.label=7;case 7:for(_ in g=[],r)g.push(o({callId:r[_][0],index:Number(_)},(0,y.mutateLiveArrayData)(r[_][1])));return this._dispatchConferenceUpdate({action:p.ConferenceAction.Bootstrap,participants:g}),[3,13];case 8:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Add,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 9:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Modify,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 10:return this._dispatchConferenceUpdate(o({action:p.ConferenceAction.Delete,callId:s,index:c},(0,y.mutateLiveArrayData)(r))),[3,13];case 11:return this._dispatchConferenceUpdate({action:p.ConferenceAction.Clear}),[3,13];case 12:return this._dispatchConferenceUpdate({action:n,data:r,callId:s,index:c}),[3,13];case 13:return[2]}}))}))},e.prototype._addChannel=function(e){this.channels.includes(e)||this.channels.push(e);var t=this.session.relayProtocol;this.session._existsSubscription(t,e)&&(this.session.subscriptions[t][e]=o(o({},this.session.subscriptions[t][e]),{callId:this.id}))},e.prototype._subscribeConferenceChat=function(e){return i(this,void 0,void 0,(function(){var t,n,r=this;return a(this,(function(o){switch(o.label){case 0:return t={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.data,n=t.direction,o=t.from,i=t.fromDisplay,a=t.message,s=t.type;r._dispatchConferenceUpdate({action:p.ConferenceAction.ChatMessage,direction:n,participantNumber:o,participantName:i,messageText:a,messageType:s,messageId:e.eventSerno})}},[4,this.session.vertoSubscribe(t).catch((function(e){u.default.error("ConfChat subscription error:",e)}))];case 1:return n=o.sent(),(0,v.checkSubscribeResponse)(n,e)&&(this._addChannel(e),Object.defineProperties(this,{sendChatMessage:{configurable:!0,value:function(t,n){r.session.vertoBroadcast({nodeId:r.nodeId,channel:e,data:{action:"send",message:t,type:n}})}}})),[2]}}))}))},e.prototype._subscribeConferenceInfo=function(e){return i(this,void 0,void 0,(function(){var t,n,r=this;return a(this,(function(o){switch(o.label){case 0:return t={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.eventData;"layout-info"===t.contentType?(t.callID=r.id,(0,g.MCULayoutEventHandler)(r.session,t)):u.default.error("Conference-Info unknown contentType",e)}},[4,this.session.vertoSubscribe(t).catch((function(e){u.default.error("ConfInfo subscription error:",e)}))];case 1:return n=o.sent(),(0,v.checkSubscribeResponse)(n,e)&&this._addChannel(e),[2]}}))}))},e.prototype._confControl=function(e,t){void 0===t&&(t={});var n=o({application:"conf-control",callID:this.id,value:null},t);this.session.vertoBroadcast({nodeId:this.nodeId,channel:e,data:n})},e.prototype._subscribeConferenceModerator=function(e){return i(this,void 0,void 0,(function(){var t,n,o,i,s=this;return a(this,(function(a){switch(a.label){case 0:return t=function(t,n,r){void 0===n&&(n=null),void 0===r&&(r=null);var o=parseInt(n)||null;s._confControl(e,{command:t,id:o,value:r})},n=function(){var e=s.options.video;if("boolean"==typeof e&&!e||"object"===r(e)&&(0,y.objEmpty)(e))throw"Conference ".concat(s.id," has no video!")},o={nodeId:this.nodeId,channels:[e],handler:function(e){var t=e.data;if("list-videoLayouts"===t["conf-command"]){if(t.responseData){var n=JSON.stringify(t.responseData).replace(/IDS"/g,'Ids"');s._dispatchConferenceUpdate({action:p.ConferenceAction.LayoutList,layouts:JSON.parse(n)})}}else s._dispatchConferenceUpdate({action:p.ConferenceAction.ModCmdResponse,command:t["conf-command"],response:t.response})}},[4,this.session.vertoSubscribe(o).catch((function(e){u.default.error("ConfMod subscription error:",e)}))];case 1:return i=a.sent(),(0,v.checkSubscribeResponse)(i,e)&&(this.role=p.Role.Moderator,this._addChannel(e),Object.defineProperties(this,{listVideoLayouts:{configurable:!0,value:function(){t("list-videoLayouts")}},playMedia:{configurable:!0,value:function(e){t("play",null,e)}},stopMedia:{configurable:!0,value:function(){t("stop",null,"all")}},deaf:{configurable:!0,value:function(e){t("deaf",e)}},undeaf:{configurable:!0,value:function(e){t("undeaf",e)}},startRecord:{configurable:!0,value:function(e){t("recording",null,["start",e])}},stopRecord:{configurable:!0,value:function(){t("recording",null,["stop","all"])}},snapshot:{configurable:!0,value:function(e){n(),t("vid-write-png",null,e)}},setVideoLayout:{configurable:!0,value:function(e,r){n(),t("vid-layout",null,r?[e,r]:e)}},kick:{configurable:!0,value:function(e){t("kick",e)}},muteMic:{configurable:!0,value:function(e){t("tmute",e)}},muteVideo:{configurable:!0,value:function(e){n(),t("tvmute",e)}},presenter:{configurable:!0,value:function(e){n(),t("vid-res-id",e,"presenter")}},videoFloor:{configurable:!0,value:function(e){n(),t("vid-floor",e,"force")}},banner:{configurable:!0,value:function(e,r){n(),t("vid-banner",e,encodeURI(r))}},volumeDown:{configurable:!0,value:function(e){t("volume_out",e,"down")}},volumeUp:{configurable:!0,value:function(e){t("volume_out",e,"up")}},gainDown:{configurable:!0,value:function(e){t("volume_in",e,"down")}},gainUp:{configurable:!0,value:function(e){t("volume_in",e,"up")}},transfer:{configurable:!0,value:function(e,n){t("transfer",e,n)}}})),[2]}}))}))},e.prototype._handleChangeHoldStateSuccess=function(e){return"active"===e.holdState?this.setState(p.State.Active):this.setState(p.State.Held),!0},e.prototype._handleChangeHoldStateError=function(e){return u.default.error("Failed to ".concat(e.action," on call ").concat(this.id)),!1},e.prototype._onRemoteSdp=function(e){var t=this,n=(0,v.sdpMediaOrderHack)(e,this.peer.instance.localDescription.sdp);this.options.useStereo&&(n=(0,v.sdpStereoHack)(n));var r=(0,b.sdpToJsonHack)({sdp:n,type:p.PeerType.Answer});this.peer.instance.setRemoteDescription(r).then((function(){t.gotEarly&&t.setState(p.State.Early),t.gotAnswer&&t.setState(p.State.Active)})).catch((function(e){u.default.error("Call setRemoteDescription Error: ",e),t.hangup()}))},e.prototype._requestAnotherLocalDescription=function(){u.default.debug("_requestAnotherLocalDescription"),(0,y.isFunction)(this.peer.onSdpReadyTwice)?(0,h.trigger)(f.SwEvent.Error,new Error("SDP without candidates for the second time!"),this.session.uuid):(Object.defineProperty(this.peer,"onSdpReadyTwice",{value:this._onIceSdp.bind(this)}),this._iceDone=!1,this.peer.startNegotiation())},e.prototype._onIceSdp=function(e){var t=this;u.default.debug("_onIceSdp"),this._iceTimeout&&clearTimeout(this._iceTimeout),this._iceTimeout=null,this._iceDone=!0,this.peer.resetNegotiating();var n=e.sdp,r=e.type;if(-1!==n.indexOf("candidate")){var o=null,i={sessid:this.session.sessionid,sdp:n,dialogParams:this.options};switch(r){case p.PeerType.Offer:this.setState(p.State.Requesting),o=new l.Invite(i);break;case p.PeerType.Answer:this.setState(p.State.Answering),o=!0===this.options.attach?new l.Attach(i):new l.Answer(i);break;default:return u.default.error("".concat(this.id," - Unknown local SDP type:"),e),this.hangup({},!1)}this._execute(o).then((function(e){var n=e.node_id,o=void 0===n?null:n;t._targetNodeId=o,r===p.PeerType.Offer?t.setState(p.State.Trying):t.setState(p.State.Active)})).catch((function(e){u.default.error("".concat(t.id," - Sending ").concat(r," error:"),e),t.hangup()}))}else this._requestAnotherLocalDescription()},e.prototype._registerPeerEvents=function(){var e=this,t=this.peer.instance;this._iceDone=!1,t.onicecandidate=function(n){e._iceDone||(null===e._iceTimeout&&(u.default.debug("Setting _iceTimeout to 1 second"),e._iceTimeout=setTimeout((function(){return e._onIceSdp(t.localDescription)}),1e3)),n.candidate?u.default.debug("IceCandidate: address:",n.candidate.address," - port:",n.candidate.port," - type:",n.candidate.type):e._onIceSdp(t.localDescription))},t.addEventListener("track",(function(t){e.options.remoteStream=t.streams[0];var n=e.options,r=n.remoteElement,o=n.remoteStream;!1===n.screenShare&&(0,b.attachMediaStream)(r,o)})),t.addEventListener("addstream",(function(t){e.options.remoteStream=t.stream}))},e.prototype._onMediaError=function(e){this._dispatchNotification({type:p.NOTIFICATION_TYPE.userMediaError,error:e}),u.default.debug("Call ".concat(this.id," media error")),this.hangup({},!1)},e.prototype._dispatchConferenceUpdate=function(e){this._dispatchNotification(o({type:p.NOTIFICATION_TYPE.conferenceUpdate,call:this},e))},e.prototype._dispatchNotification=function(e){!0!==this.options.screenShare&&((0,h.trigger)(f.SwEvent.Notification,e,this.id,!1)||(0,h.trigger)(f.SwEvent.Notification,e,this.session.uuid))},e.prototype._execute=function(e){return this.nodeId&&(e.targetNodeId=this.nodeId),this.session.execute(e)},e.prototype._init=function(){var e=this.options,t=e.id,n=e.userVariables,r=e.remoteCallerNumber,o=e.onNotification;t||(this.options.id=(0,c.v4)()),this.id=this.options.id,n&&!(0,y.objEmpty)(n)||(this.options.userVariables=this.session.options.userVariables||{}),r||(this.options.remoteCallerNumber=this.options.destinationNumber),this.session.calls[this.id]=this,(0,h.register)(f.SwEvent.MediaError,this._onMediaError,this.id),(0,y.isFunction)(o)&&(0,h.register)(f.SwEvent.Notification,o.bind(this),this.id),this.setState(p.State.New),u.default.info("New Call with Options:",this.options)},e.prototype._finalize=function(){var e=this.options,t=e.remoteStream,n=e.localStream,r=e.remoteElement,o=e.localElement;(0,b.stopStream)(t),(0,b.stopStream)(n),!0!==this.options.screenShare&&((0,b.detachMediaStream)(r),(0,b.detachMediaStream)(o)),(0,h.deRegister)(f.SwEvent.MediaError,null,this.id),this.peer=null,this.session.calls[this.id]=null,delete this.session.calls[this.id]},e}();t.default=_},960:function(e,t,n){"use strict";var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=200&&e.status<300?[2,t]:(n="HTTP Request failed with status ".concat(e.status),(r=new Error(n)).payload=t,[2,Promise.reject(r)])}}))}))}))};var n=e.hostname,r=void 0===n?location.hostname:n;this.hostname=r}return e.prototype.userLogin=function(e,t){return o(this,void 0,void 0,(function(){var n;return i(this,(function(o){switch(o.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/login/user"),r(r({},c),{body:JSON.stringify({username:e,password:t,hostname:this.hostname})}))];case 1:return n=o.sent(),s.default.info("userLogin response",n),[2,n]}}))}))},e.prototype.guestLogin=function(e,t,n){return o(this,void 0,void 0,(function(){var o;return i(this,(function(i){switch(i.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/login/guest"),r(r({},c),{body:JSON.stringify({name:e,email:t,token:n,hostname:this.hostname})}))];case 1:return o=i.sent(),s.default.info("guestLogin response",o),[2,o]}}))}))},e.prototype.refresh=function(){return o(this,void 0,void 0,(function(){var e;return i(this,(function(t){switch(t.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/refresh"),r(r({},c),{method:"PUT",body:JSON.stringify({hostname:this.hostname})}))];case 1:return e=t.sent(),s.default.info("refresh response",e),[2,e]}}))}))},e.prototype.checkInviteToken=function(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(n){switch(n.label){case 0:return[4,this._fetch("".concat(this.baseUrl,"/check-token"),r(r({},c),{body:JSON.stringify({token:e,hostname:this.hostname})}))];case 1:return t=n.sent(),s.default.info("checkInviteToken response",t),[2,t]}}))}))},e}();t.default=u},616:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var s=a(n(955)),c=n(203),u=n(789),l=n(291),d=n(317),f=n(858),p=n(403),h=n(203),v=n(203),y=function(){function e(e,t){this.type=e,this.options=t,this.onSdpReadyTwice=null,this._negotiating=!1,s.default.info("New Peer with type:",this.type,"Options:",this.options),this._constraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._sdpReady=this._sdpReady.bind(this),this._init()}return e.prototype.resetNegotiating=function(){this._negotiating=!1},Object.defineProperty(e.prototype,"isNegotiating",{get:function(){return this._negotiating},enumerable:!1,configurable:!0}),e.prototype.startNegotiation=function(){this._negotiating=!0,this._isOffer()?this._createOffer():this._createAnswer()},e.prototype._init=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,a,c,l,f,h,v,y,b,g,_,m=this;return o(this,(function(o){switch(o.label){case 0:return this.instance=(0,d.RTCPeerConnection)(this._config()),this.instance.onsignalingstatechange=function(e){switch(m.instance.signalingState){case"stable":break;case"closed":m.instance=null;break;default:m._negotiating=!0}},this.instance.onnegotiationneeded=function(e){m._negotiating?s.default.debug("Skip twice onnegotiationneeded.."):m.startNegotiation()},e=this.options,[4,this._retrieveLocalStream().catch((function(e){return(0,p.trigger)(u.SwEvent.MediaError,e,m.options.id),null}))];case 1:if(e.localStream=o.sent(),t=this.options,n=t.localElement,r=t.localStream,a=void 0===r?null:r,c=t.screenShare,l=void 0!==c&&c,!(0,d.streamIsValid)(a))return[3,12];if("function"!=typeof this.instance.addTrack)return[3,10];f=a.getTracks(),o.label=2;case 2:o.trys.push([2,7,8,9]),h=i(f),v=h.next(),o.label=3;case 3:return v.done?[3,6]:(y=v.value,[4,this.instance.addTrack(y,a)]);case 4:o.sent(),o.label=5;case 5:return v=h.next(),[3,3];case 6:return[3,9];case 7:return b=o.sent(),g={error:b},[3,9];case 8:try{v&&!v.done&&(_=h.return)&&_.call(h)}finally{if(g)throw g.error}return[7];case 9:return[3,11];case 10:this.instance.addStream(a),o.label=11;case 11:return!0!==l&&((0,d.muteMediaElement)(n),(0,d.attachMediaStream)(n,a)),[3,13];case 12:null===a&&this.startNegotiation(),o.label=13;case 13:return[2]}}))}))},e.prototype._createOffer=function(){this._isOffer()&&this.instance.createOffer(this._constraints).then(this._setLocalDescription.bind(this)).then(this._sdpReady).catch((function(e){return s.default.error("Peer _createOffer error:",e)}))},e.prototype._createAnswer=function(){var e=this;if(this._isAnswer()){var t=this.options,n=t.remoteSdp,r=t.useStereo?(0,c.sdpStereoHack)(n):n,o=(0,d.sdpToJsonHack)({sdp:r,type:l.PeerType.Offer});this.instance.setRemoteDescription(o).then((function(){return e.instance.createAnswer()})).then(this._setLocalDescription.bind(this)).then(this._sdpReady).catch((function(e){return s.default.error("Peer _createAnswer error:",e)}))}},e.prototype._setLocalDescription=function(e){var t=this.options,n=t.useStereo,r=t.googleMaxBitrate,o=t.googleMinBitrate,i=t.googleStartBitrate;return n&&(e.sdp=(0,c.sdpStereoHack)(e.sdp)),r&&o&&i&&(e.sdp=(0,c.sdpBitrateHack)(e.sdp,r,o,i)),s.default.debug("calling setLocalDescription with SDP:",e.sdp),this.instance.setLocalDescription(e)},e.prototype._sdpReady=function(){(0,f.isFunction)(this.onSdpReadyTwice)&&this.onSdpReadyTwice(this.instance.localDescription)},e.prototype._getSharedConstraints=function(e,t){var n,r;void 0===t&&(t="");var o=null!==(n=null==e?void 0:e.audio)&&void 0!==n&&n,i=!!t&&(0,v.sdpHasAudio)(t),a=null!==(r=null==e?void 0:e.video)&&void 0!==r&&r,s=!!t&&(0,v.sdpHasVideo)(t);return{audio:o&&i,video:a&&s}},e.prototype._retrieveLocalStream=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,i,a,s;return o(this,(function(o){switch(o.label){case 0:return(0,d.streamIsValid)(this.options.localStream)?[2,this.options.localStream]:[4,(0,c.getMediaConstraints)(this.options)];case 1:return e=o.sent(),t=e,this._isAnswer()&&(n=this.options,r=n.remoteSdp,i=n.useStereo,a=i?(0,c.sdpStereoHack)(r):r,s=(0,d.sdpToJsonHack)({sdp:a,type:l.PeerType.Offer}),t=this._getSharedConstraints(e,s.sdp)),[2,(0,c.getUserMedia)(t)]}}))}))},e.prototype._isOffer=function(){return this.type===l.PeerType.Offer},e.prototype._isAnswer=function(){return this.type===l.PeerType.Answer},e.prototype._config=function(){var e=this.options,t=e.iceServers,n=void 0===t?[]:t,r=e.iceTransportPolicy,o=void 0===r?"all":r,i=e.disableUdpIceServers,a=void 0!==i&&i,c={iceTransportPolicy:o,sdpSemantics:"unified-plan",bundlePolicy:"max-compat",iceServers:(0,h.filterIceServers)(n,{disableUdpIceServers:a})};return s.default.info("RTC config",c),c},e.prototype._getSenderByKind=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return this.instance?[4,this.instance.getSenders()]:[3,2];case 1:return[2,t.sent().find((function(t){var n=t.track;return n&&n.kind===e}))];case 2:return[2]}}))}))},e.prototype.applyMediaConstraints=function(e,t){return r(this,void 0,void 0,(function(){var n;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,4,,5]),[4,this._getSenderByKind(e)];case 1:return(n=r.sent())&&n.track?"live"!==n.track.readyState?[3,3]:(s.default.info("Apply ".concat(e," constraints"),this.options.id,t),[4,n.track.applyConstraints(t)]):[2,s.default.info("No sender to apply constraints",e,t)];case 2:r.sent(),r.label=3;case 3:return[3,5];case 4:return r.sent(),s.default.error("Error applying constraints",e,t),[3,5];case 5:return[2]}}))}))},e}();t.default=y},232:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function s(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((r=r.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{"use strict";var n,r,o,i,a,s,c,u;Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceType=t.ConferenceAction=t.Role=t.State=t.DEFAULT_CALL_OPTIONS=t.NOTIFICATION_TYPE=t.VertoMethod=t.Direction=t.PeerType=void 0,function(e){e.Offer="offer",e.Answer="answer"}(r||(t.PeerType=r={})),function(e){e.Inbound="inbound",e.Outbound="outbound"}(o||(t.Direction=o={})),function(e){e.Invite="verto.invite",e.Attach="verto.attach",e.Answer="verto.answer",e.Info="verto.info",e.Display="verto.display",e.Media="verto.media",e.Event="verto.event",e.Bye="verto.bye",e.Punt="verto.punt",e.Broadcast="verto.broadcast",e.Subscribe="verto.subscribe",e.Unsubscribe="verto.unsubscribe",e.ClientReady="verto.clientReady",e.Modify="verto.modify",e.MediaParams="verto.mediaParams"}(i||(t.VertoMethod=i={})),t.NOTIFICATION_TYPE=((n={generic:"event"})[i.Display]="participantData",n[i.Attach]="participantData",n.conferenceUpdate="conferenceUpdate",n.callUpdate="callUpdate",n.vertoClientReady="vertoClientReady",n.userMediaError="userMediaError",n.refreshToken="refreshToken",n),t.DEFAULT_CALL_OPTIONS={destinationNumber:"",remoteCallerName:"Outbound Call",remoteCallerNumber:"",callerName:"",callerNumber:"",audio:!0,video:!1,useStereo:!1,attach:!1,screenShare:!1,userVariables:{}},function(e){e[e.New=0]="New",e[e.Requesting=1]="Requesting",e[e.Trying=2]="Trying",e[e.Recovering=3]="Recovering",e[e.Ringing=4]="Ringing",e[e.Answering=5]="Answering",e[e.Early=6]="Early",e[e.Active=7]="Active",e[e.Held=8]="Held",e[e.Hangup=9]="Hangup",e[e.Destroy=10]="Destroy",e[e.Purge=11]="Purge"}(a||(t.State=a={})),function(e){e.Participant="participant",e.Moderator="moderator"}(s||(t.Role=s={})),function(e){e.Join="join",e.Leave="leave",e.Bootstrap="bootstrap",e.Add="add",e.Modify="modify",e.Delete="delete",e.Clear="clear",e.ChatMessage="chatMessage",e.LayerInfo="layerInfo",e.LogoInfo="logoInfo",e.LayoutInfo="layoutInfo",e.LayoutList="layoutList",e.ModCmdResponse="modCommandResponse"}(c||(t.ConferenceAction=c={})),function(e){e.Video="videoinput",e.AudioIn="audioinput",e.AudioOut="audiooutput"}(u||(t.DeviceType=u={}))},203:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a},l=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o=0?/stereo=1;/.test(n[a])||(n[a]+="; stereo=1; sprop-stereo=1"):n[r]+="".concat(t,"a=fmtp:").concat(o," stereo=1; sprop-stereo=1"),n.join(t)};var w=function(e){return/^m=audio/.test(e)},S=function(e){return/^m=video/.test(e)};t.sdpMediaOrderHack=function(e,t){var n="\r\n",r=t.split(n);if(r.findIndex(w)0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=n(605);for(var o in r)this[o]=r[o];r.__esModule&&Object.defineProperty(this,"__esModule",{value:!0})})(); \ No newline at end of file From 817a0fb84fc7f70629968d34d8eaffa8856ef218 Mon Sep 17 00:00:00 2001 From: Brian West Date: Thu, 10 Jul 2025 13:03:07 -0500 Subject: [PATCH 4/4] update gitignore and static folder --- packages/js/examples/flask-mute-test/.gitignore | 1 + packages/js/examples/flask-mute-test/static/.keep | 0 2 files changed, 1 insertion(+) create mode 100644 packages/js/examples/flask-mute-test/.gitignore create mode 100644 packages/js/examples/flask-mute-test/static/.keep diff --git a/packages/js/examples/flask-mute-test/.gitignore b/packages/js/examples/flask-mute-test/.gitignore new file mode 100644 index 00000000..93a464bb --- /dev/null +++ b/packages/js/examples/flask-mute-test/.gitignore @@ -0,0 +1 @@ +static/ \ No newline at end of file diff --git a/packages/js/examples/flask-mute-test/static/.keep b/packages/js/examples/flask-mute-test/static/.keep new file mode 100644 index 00000000..e69de29b