@dialstack/sdk-native 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/dist/index.d.ts +2367 -0
- package/dist/index.js +5668 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../webrtc/dist/pagination.js","../../webrtc/dist/errors.js","../../webrtc/dist/logger.js","../../webrtc/dist/platform.js","../../webrtc/dist/ringback.js","../../webrtc/dist/call.js","../../webrtc/dist/connect-handshake.js","../../webrtc/dist/transport.js","../../webrtc/dist/phone.js","../../react/src/react/softphone/hooks/useLatestRef.ts","../../react/src/react/softphone/hooks/usePhone.ts","../../react/src/react/softphone/core/view-model.ts","../../react/src/react/softphone/hooks/useCalls.ts","../../react/src/react/softphone/hooks/useCallActions.ts","../../react/src/react/softphone/hooks/useCallOverlays.ts","../../react/src/react/softphone/hooks/useCallDuration.ts","../../react/src/react/softphone/hooks/useEmergencyBinding.ts","../../react/src/react/softphone/hooks/useLastError.ts","../../react/src/react/softphone/hooks/useDialInput.ts","../../react/src/react/softphone/core/theme.ts","../../js/dist/pure-pure-D8bEzX6U.mjs","../../react/src/react/softphone/provider/SoftphoneProviderBase.tsx","../../react/src/react/softphone/core/icons.ts","../../react/src/react/softphone/core/emergency-address-form.ts","../src/SoftphoneProvider.tsx","../src/softphone/primitives.tsx","../src/softphone/CallErrorChip.tsx","../src/softphone/DialPad.tsx","../src/softphone/EmergencyBanner.tsx","../src/softphone/IncomingCallCard.tsx","../src/softphone/IncomingCall.tsx","../src/softphone/OngoingCall.tsx","../src/softphone/Softphone.tsx"],"sourcesContent":["// Auto-pagination for this package's list methods: `await` the returned value for\n// the first page envelope, or iterate the whole collection with\n// `autoPagingEach()` / `autoPagingToArray()`.\n//\n// Deliberately duplicated rather than shared. This package publishes with no\n// runtime dependencies and builds with plain tsc, which leaves imports as\n// imports — so importing this from a sibling would either add a dependency edge\n// or emit a path outside the tarball. Duplication is safe *here* because the\n// file is pure: interfaces plus one factory, no module state, nothing compared\n// by identity, so two copies cannot skew.\n//\n// It does not scale. If a second helper wants sharing, or anything\n// identity-bearing does, publish a real shared core instead of copying again.\n/**\n * Wrap a first-page promise with auto-pagination. `fetchNextPage` receives the\n * `next_page_url` from the previous page (a path relative to the API base).\n */\nexport function createPaginatedList(firstPagePromise, fetchNextPage) {\n const paginatedList = firstPagePromise;\n paginatedList.autoPagingEach = async function* () {\n let response = await firstPagePromise;\n // P extends Page<unknown>, so data is unknown[] under the constraint;\n // PageItem<P> recovers the concrete item type for callers.\n yield* response.data;\n while (response.next_page_url) {\n response = await fetchNextPage(response.next_page_url);\n yield* response.data;\n }\n };\n paginatedList.autoPagingToArray = async function (options) {\n const limit = options?.limit ?? 10000;\n const results = [];\n for await (const item of this.autoPagingEach()) {\n results.push(item);\n if (results.length >= limit) {\n break;\n }\n }\n return results;\n };\n return paginatedList;\n}\n//# sourceMappingURL=pagination.js.map","export class PhoneError extends Error {\n constructor(opts) {\n super(opts.message);\n this.name = 'PhoneError';\n this.code = opts.code;\n this.callId = opts.callId ?? null;\n this.fatal = opts.fatal ?? false;\n }\n}\nexport class NotImplementedError extends Error {\n constructor(method) {\n super(`${method} is not yet implemented`);\n this.name = 'NotImplementedError';\n }\n}\nconst PERMISSION_DENIAL_NAMES = ['NotAllowedError', 'SecurityError'];\n// The requested device doesn't exist or can't satisfy the constraint. Asking for a\n// different (or no) device can succeed, so these are worth retrying.\nconst DEVICE_UNAVAILABLE_NAMES = ['NotFoundError', 'OverconstrainedError'];\n// Every device of the kind was reachable but locked — another application holds the mic\n// exclusively. Per the getUserMedia algorithm this means the candidate set was exhausted\n// across ALL devices, so retrying on looser constraints is futile.\nconst DEVICE_IN_USE_NAMES = ['NotReadableError'];\nconst errorName = (cause) => cause?.name;\n/**\n * Whether a `getUserMedia` rejection is the user (or policy) refusing access, as\n * opposed to a problem with the requested device. Retrying this would re-prompt and\n * fail again; retrying an unavailable device on looser constraints can succeed.\n */\nexport function isPermissionDenial(cause) {\n return PERMISSION_DENIAL_NAMES.includes(errorName(cause) ?? '');\n}\n/**\n * Whether re-requesting on looser constraints could plausibly succeed. False for a\n * permission denial (same answer, plus a second prompt) and for a locked device: the\n * getUserMedia algorithm only reports that once no device of the kind is readable, so\n * dropping the deviceId constraint has nothing left to find.\n */\nexport function isRetryableWithoutDevice(cause) {\n const name = errorName(cause) ?? '';\n return !PERMISSION_DENIAL_NAMES.includes(name) && !DEVICE_IN_USE_NAMES.includes(name);\n}\n/**\n * Classify a `getUserMedia` rejection. Not collapsed to `call_failed` because the\n * outcomes want different UI: a denied permission is re-promptable, an unavailable\n * device is re-pickable, anything else is neither.\n */\nexport function devicePhoneError(opts) {\n const { cause, deviceId, callId, permissionMessage, fallbackMessage } = opts;\n const name = errorName(cause) ?? '';\n if (PERMISSION_DENIAL_NAMES.includes(name)) {\n return new PhoneError({\n code: 'mic_permission_denied',\n message: permissionMessage ?? 'Microphone permission is required',\n callId,\n });\n }\n if (DEVICE_IN_USE_NAMES.includes(name)) {\n // Deliberately says nothing about which device: the failure is that no microphone\n // could be read, so naming the requested one sends the user to re-pick a device\n // when the fix is to quit whatever is holding the mic.\n return new PhoneError({\n code: 'audio_device_in_use',\n message: 'Another application is using your microphone',\n callId,\n });\n }\n if (DEVICE_UNAVAILABLE_NAMES.includes(name)) {\n return new PhoneError({\n code: 'audio_device_unavailable',\n message: deviceId\n ? `The selected microphone is unavailable (${deviceId})`\n : 'The selected microphone is unavailable',\n callId,\n });\n }\n return new PhoneError({\n code: 'call_failed',\n message: `${fallbackMessage ?? 'Could not acquire the microphone'}: ${cause?.message ?? 'unknown error'}`,\n callId,\n });\n}\n//# sourceMappingURL=errors.js.map","// Error reporting for the WebRTC core. We deliberately log ONLY errors, and\n// always (no opt-in flag): a failed connect / call / send is something a\n// developer needs to see in the console without turning anything on, while\n// success-path chatter would just be noise. Uses only `console`, so it is safe\n// on React Native as well as the web.\n/**\n * Log a softphone error to the console, tagged `[dialstack]`. `data` is an\n * optional structured context object (codes, ids) passed as a second console\n * argument so it stays inspectable.\n */\nexport function logError(message, data) {\n const sink = console.error ?? console.log;\n if (!sink)\n return;\n const line = `[dialstack] ${message}`;\n if (data === undefined)\n sink(line);\n else\n sink(line, data);\n}\n/**\n * Log a softphone warning to the console, tagged `[dialstack]`. Same always-on,\n * console-only contract as `logError` — reserved for developer misconfigurations\n * that silently degrade a feature (e.g. a missing capability) and that a\n * developer needs to see without opting in.\n */\nexport function logWarn(message, data) {\n const sink = console.warn ?? console.log;\n if (!sink)\n return;\n const line = `[dialstack] ${message}`;\n if (data === undefined)\n sink(line);\n else\n sink(line, data);\n}\n//# sourceMappingURL=logger.js.map","/**\n * WebRTC platform primitives + types the call/signaling core builds on.\n *\n * There is no longer a `.native` counterpart to this module. The core is written\n * to the standard browser WebRTC surface (`globalThis.RTCPeerConnection`,\n * `MediaStream`, `navigator.mediaDevices`); React Native makes that surface exist\n * at runtime by calling `react-native-webrtc`'s `registerGlobals()` at app\n * startup (see the RN example apps). The two genuinely-RN-only gaps — ringback\n * audio (WebAudio vs InCallManager) and key/value persistence (localStorage vs a\n * host store) — are NOT resolved here; they are injected by the caller\n * (`PhoneOptions.ringback` / `PhoneOptions.storage`).\n *\n * The factory functions read the relevant global *lazily* (at call time, not at\n * module load) so a test harness that swaps `globalThis.RTCPeerConnection` /\n * `MediaStream` / `navigator` in a `beforeEach` still takes effect — capturing\n * the constructors in module-scope `const`s would bind whatever existed when\n * this module was first imported (often `undefined` under jsdom).\n *\n * WebRTC TYPES are re-exported here so the core imports them from `./platform`\n * rather than depending on the ambient `lib.dom.d.ts` names directly.\n */\n// --- WebRTC primitives -----------------------------------------------------\n/** Construct a peer connection with the given ICE servers. */\nexport function createPeerConnection(iceServers) {\n return new globalThis.RTCPeerConnection({ iceServers });\n}\n/** Construct an empty media stream (tracks are added as they're acquired). */\nexport function createMediaStream() {\n return new globalThis.MediaStream();\n}\n/** Acquire local capture (the mic) — wraps `navigator.mediaDevices.getUserMedia`. */\nexport function getUserMedia(constraints) {\n return globalThis.navigator.mediaDevices.getUserMedia(constraints);\n}\n/**\n * Wraps `enumerateDevices`, resolving to `[]` rather than rejecting where it's absent\n * or partial (some WebViews, React Native) so a picker needn't handle a throw.\n */\nexport async function enumerateDevices() {\n const mediaDevices = globalThis.navigator?.mediaDevices;\n if (typeof mediaDevices?.enumerateDevices !== 'function')\n return [];\n try {\n return await mediaDevices.enumerateDevices();\n }\n catch {\n return [];\n }\n}\n/**\n * Subscribe to `devicechange`; returns an unsubscribe function.\n *\n * `mediaDevices` is not an EventTarget on every host (React Native, test stubs), so a\n * missing `addEventListener` yields a no-op unsubscriber — deciding both halves behind\n * one check leaves no \"subscribed but can't unsubscribe\" state.\n */\nexport function onDeviceChange(handler) {\n const mediaDevices = globalThis.navigator?.mediaDevices;\n if (typeof mediaDevices?.addEventListener !== 'function')\n return () => { };\n mediaDevices.addEventListener('devicechange', handler);\n return () => {\n try {\n mediaDevices.removeEventListener('devicechange', handler);\n }\n catch {\n // The host may have been swapped out underneath us (tests).\n }\n };\n}\n// --- pranswer capability probe ---------------------------------------------\n/**\n * Whether this WebRTC stack can apply a JSEP provisional answer\n * (`setRemoteDescription({type:'pranswer'})`), used to relay carrier network\n * early media so ringback/announcements play before the callee picks up.\n *\n * Firefox has never implemented pranswer — it rejects with `NotSupportedError:\n * pranswer not yet implemented` (Mozilla bug 1004510, open since 2014). There is\n * no feature flag or interface to test for it, so the only honest probe is to\n * attempt the operation on a throwaway peer connection and see whether the stack\n * refuses. The probe result is cached: it's a per-engine constant, and building a\n * PeerConnection per call would be wasteful.\n *\n * A *remote* pranswer is only legal from `have-local-offer` (webrtc-pc: for type\n * \"pranswer\"/\"answer\" the state must be have-local-offer or have-remote-pranswer;\n * see the WPT RTCPeerConnection-setRemoteDescription-pranswer tests). So the probe\n * mirrors the real outbound flow: createOffer → setLocalDescription(offer) → apply\n * a pranswer as the REMOTE description. Chrome/Safari accept it; Firefox rejects\n * with NotSupportedError. Any failure before that step is inconclusive, so we\n * report `true` and let the real call path surface a genuine error rather than\n * silently disabling early media everywhere.\n *\n * The SDP fed back is this PC's own answer-shaped description. Rolling our own\n * offer back in as the remote description would land in have-remote-offer, where\n * a remote pranswer is an illegal transition — that misread Chrome as unsupported.\n */\nlet pranswerSupport = null;\nexport function supportsPranswer() {\n pranswerSupport ?? (pranswerSupport = probePranswerSupport());\n return pranswerSupport;\n}\nasync function probePranswerSupport() {\n const PC = globalThis.RTCPeerConnection;\n // Inconclusive, not a refusal — same policy as every other pre-pranswer failure\n // below. The globals are read lazily precisely because hosts install them late\n // (React Native's registerGlobals(), WebView shims), and connect() warms this\n // probe eagerly — so a missing constructor here means \"we couldn't tell yet\",\n // not \"unsupported\". Caching false would strand the whole session with early\n // media disabled and a misleading Firefox warning on a capable stack.\n if (typeof PC !== 'function')\n return true;\n let pc = null;\n let peer = null;\n try {\n pc = new PC({});\n pc.addTransceiver('audio', { direction: 'recvonly' });\n const offer = await pc.createOffer();\n // setLocalDescription (not setRemoteDescription) — this is what puts us in\n // have-local-offer, the state a remote pranswer is legal from.\n await pc.setLocalDescription(offer);\n // A second throwaway PC answers our offer, purely to obtain answer-shaped SDP\n // that matches it. Deriving it on `pc` itself isn't possible: createAnswer\n // requires a remote offer, and applying one would leave have-local-offer.\n peer = new PC({});\n await peer.setRemoteDescription({ type: 'offer', sdp: offer.sdp });\n const answer = await peer.createAnswer();\n try {\n await pc.setRemoteDescription({ type: 'pranswer', sdp: answer.sdp });\n }\n catch {\n // The stack refused a legal pranswer transition — the Firefox case.\n return false;\n }\n return true;\n }\n catch {\n // The probe could not be set up (headless/stub stack, no transceiver support,\n // …). Inconclusive, not a refusal — assume supported.\n return true;\n }\n finally {\n for (const conn of [pc, peer]) {\n try {\n conn?.close();\n }\n catch {\n // Already closed.\n }\n }\n }\n}\n/** Test seam: forget the cached probe result so a suite can re-probe. */\nexport function resetPranswerSupportForTests() {\n pranswerSupport = null;\n}\nexport const storage = {\n getItem(key) {\n try {\n return globalThis.localStorage?.getItem(key) ?? null;\n }\n catch {\n return null;\n }\n },\n setItem(key, value) {\n try {\n globalThis.localStorage?.setItem(key, value);\n }\n catch {\n // No localStorage (Node / restricted host) — persistence is best-effort.\n }\n },\n removeItem(key) {\n try {\n globalThis.localStorage?.removeItem(key);\n }\n catch {\n // No localStorage — best-effort.\n }\n },\n};\n//# sourceMappingURL=platform.js.map","// North-American ringback (440 + 480 Hz, 2 s on / 4 s off), synthesized with\n// WebAudio so the softphone has audible ringing when the network sends none.\nconst TONE_FREQUENCIES_HZ = [440, 480];\nconst ON_SECONDS = 2;\nconst OFF_SECONDS = 4;\nconst CADENCE_SECONDS = ON_SECONDS + OFF_SECONDS;\n// How far ahead of the audio clock to keep cadence windows scheduled. Larger\n// than the re-arm interval so timer jitter (or a throttled background tab)\n// can't leave a gap before the next top-up runs.\nconst SCHEDULE_AHEAD_SECONDS = 2 * CADENCE_SECONDS;\n// Per-oscillator; the two sum at the gain node, so keep well below 1.0.\nconst ON_GAIN = 0.12;\nfunction resolveAudioContext() {\n const g = globalThis;\n const Ctor = g.AudioContext ?? g.webkitAudioContext;\n return Ctor ?? null;\n}\nexport class RingbackTone {\n constructor() {\n this.ctx = null;\n this.gain = null;\n this.oscillators = [];\n this.cadenceTimer = null;\n this.started = false;\n // Audio-clock time of the next on-window to schedule. Tracked (rather than\n // re-read from currentTime each tick) so windows stay on a fixed cadence\n // lattice and never drift or overlap, even if the re-arm timer fires late.\n this.nextCadenceTime = 0;\n this.sinkId = null;\n }\n get isPlaying() {\n return this.started;\n }\n /**\n * Applied at AudioContext *construction* in start(), not after: the async setter\n * would let the first milliseconds out of the default device. A context already\n * running is re-routed live — the one case the setter is needed for.\n */\n setSinkId(deviceId) {\n this.sinkId = deviceId;\n const ctx = this.ctx;\n if (!ctx || typeof ctx.setSinkId !== 'function')\n return;\n // '' is the spec's default sink; bailing on null left a live tone on the old device.\n void Promise.resolve(ctx.setSinkId(deviceId ?? '')).catch(() => undefined);\n }\n // Idempotent; no-ops without throwing when WebAudio is unavailable (e.g. a\n // Node/test environment) so callers never have to guard the call site.\n start() {\n if (this.started)\n return;\n const Ctor = resolveAudioContext();\n if (!Ctor)\n return;\n let ctx;\n try {\n // Re-passed every start(): stop() closes the context, so once-only silently reverts.\n ctx = new Ctor(this.sinkId ? { sinkId: this.sinkId } : undefined);\n }\n catch {\n // Some engines reject an unusable sink at construction. Chrome instead reroutes\n // itself to the default device, so this is a guard for the stricter ones: tone on\n // the default rather than not at all, and forget the id so it isn't retried.\n this.sinkId = null;\n try {\n ctx = new Ctor();\n }\n catch {\n return;\n }\n }\n this.ctx = ctx;\n // Outbound calls start from a user gesture, so a suspended context can be\n // resumed without tripping autoplay policy. Best-effort; failure is silence.\n if (ctx.state === 'suspended' && typeof ctx.resume === 'function') {\n void Promise.resolve(ctx.resume()).catch(() => undefined);\n }\n try {\n const gain = ctx.createGain();\n gain.gain.value = 0;\n gain.connect(ctx.destination);\n this.gain = gain;\n for (const frequency of TONE_FREQUENCIES_HZ) {\n const osc = ctx.createOscillator();\n osc.frequency.value = frequency;\n osc.connect(gain);\n osc.start();\n this.oscillators.push(osc);\n }\n // Anchor the cadence lattice to the clock, then top it up each cadence so\n // the ring repeats for as long as the call rings.\n this.nextCadenceTime = ctx.currentTime;\n this.scheduleCadenceAhead();\n this.cadenceTimer = setInterval(() => this.scheduleCadenceAhead(), CADENCE_SECONDS * 1000);\n // Set last: a throw above leaves started=false so isPlaying stays honest\n // and the instance can be retried rather than reporting a silent \"playing\".\n this.started = true;\n }\n catch {\n this.teardown();\n }\n }\n // Idempotent.\n stop() {\n if (!this.started)\n return;\n this.started = false;\n this.teardown();\n }\n teardown() {\n if (this.cadenceTimer) {\n clearInterval(this.cadenceTimer);\n this.cadenceTimer = null;\n }\n for (const osc of this.oscillators) {\n try {\n osc.stop();\n osc.disconnect();\n }\n catch {\n // Already stopped/disconnected.\n }\n }\n this.oscillators = [];\n if (this.gain) {\n try {\n this.gain.disconnect();\n }\n catch {\n // Already disconnected.\n }\n this.gain = null;\n }\n const ctx = this.ctx;\n this.ctx = null;\n if (ctx && typeof ctx.close === 'function') {\n void Promise.resolve(ctx.close()).catch(() => undefined);\n }\n }\n // Schedule on/off windows up to SCHEDULE_AHEAD_SECONDS past the audio clock,\n // continuing from nextCadenceTime so the grid is contiguous across re-arms.\n scheduleCadenceAhead() {\n const ctx = this.ctx;\n const gain = this.gain;\n if (!ctx || !gain)\n return;\n // Drop windows that already fully elapsed (e.g. the timer was throttled\n // while backgrounded), staying on the lattice rather than re-anchoring.\n while (this.nextCadenceTime + CADENCE_SECONDS <= ctx.currentTime) {\n this.nextCadenceTime += CADENCE_SECONDS;\n }\n const horizon = ctx.currentTime + SCHEDULE_AHEAD_SECONDS;\n while (this.nextCadenceTime < horizon) {\n gain.gain.setValueAtTime(ON_GAIN, this.nextCadenceTime);\n gain.gain.setValueAtTime(0, this.nextCadenceTime + ON_SECONDS);\n this.nextCadenceTime += CADENCE_SECONDS;\n }\n }\n}\n//# sourceMappingURL=ringback.js.map","import { devicePhoneError, isRetryableWithoutDevice, PhoneError } from './errors.js';\nimport { logWarn } from './logger.js';\nimport { createMediaStream, createPeerConnection, getUserMedia, supportsPranswer, } from './platform.js';\nimport { RingbackTone } from './ringback.js';\n// Fires at most once per process: an audio sender with no `.dtmf` on React Native\n// means the app installed a WebRTC package without the `RTCRtpSender.dtmf` bridge\n// (DialStack's fork has it; LiveKit's and Stream's don't), so DTMF is\n// unavailable. Guarded so it can't spam per call.\nlet warnedMissingDtmfBridge = false;\nfunction warnMissingDtmfBridgeOnce() {\n if (warnedMissingDtmfBridge)\n return;\n warnedMissingDtmfBridge = true;\n logWarn('DTMF is unavailable: the audio sender exposes no RTCDTMFSender. On React ' +\n \"Native, install DialStack's react-native-webrtc fork (which adds \" +\n 'RTCRtpSender.dtmf) — see the @dialstack/sdk-native README.');\n}\n// Always `exact` for a real request: Chrome's own device-picker preference overrides\n// `ideal`, so a lenient constraint can silently capture a mic that was never asked for\n// and leave the recorded preference naming a device that was never opened. Leniency\n// belongs in the caller's fallback (acquireLocalMedia retries unconstrained), not here.\nfunction audioConstraintsFor(deviceId) {\n if (!deviceId)\n return { audio: true };\n return { audio: { deviceId: { exact: deviceId } } };\n}\nfunction stopTrack(track) {\n try {\n track.stop();\n }\n catch {\n // Some hosts throw on a second stop.\n }\n}\n// Fires at most once per process. Network early media (the carrier's pre-answer\n// ringback/announcement) can't be rendered on a stack without JSEP pranswer\n// support — Firefox, which has never implemented it (Mozilla bug 1004510). The\n// call itself is unaffected; the caller hears local synthetic ringback instead of\n// the carrier's audio, so this is a logged degradation, not a call failure.\nlet warnedPranswerUnsupported = false;\nfunction warnPranswerUnsupportedOnce() {\n if (warnedPranswerUnsupported)\n return;\n warnedPranswerUnsupported = true;\n logWarn('Network early media (carrier pre-answer audio) is unavailable: this browser ' +\n 'does not implement JSEP provisional answers (setRemoteDescription with ' +\n \"type:'pranswer') — known Firefox limitation, Mozilla bug 1004510. Calls \" +\n 'still connect normally and play local ringback while alerting.');\n}\nexport class Call {\n get isHeld() {\n return this.state === 'held';\n }\n /**\n * Whether the call is a live, connected conversation — answered and not ended.\n * Hold is a media modifier, not a separate lifecycle, so BOTH `active` and\n * `held` count as connected; `trying`/`ringing` (not yet up) and `ended` do\n * not. This is the single source of truth for \"is this call\n * transferable / bridgeable / controllable\" — every such gate (transfer,\n * completeTransfer, the in-call control row, isCallActive) reads it so the\n * rule can't drift between call sites.\n */\n get isConnected() {\n return this.state === 'active' || this.state === 'held';\n }\n /**\n * Whether DTMF can be sent on this call — the gate the softphone UI uses for\n * its in-call keypad. False when the audio sender exposes no `.dtmf` (e.g. a\n * connected call that never got a usable sender). Only meaningful once the\n * call is active — the sender is attached during answer/offer negotiation\n * (attachDtmfSender). `sendDtmf()` still throws if called anyway. Both web and\n * native go through the same sender: web via the browser RTCDTMFSender, native\n * via react-native-webrtc's `RTCRtpSender.dtmf` (provided by the DialStack fork).\n */\n get canSendDtmf() {\n return this.dtmfSender !== null;\n }\n constructor(init) {\n this.isMuted = false;\n this.duration = 0;\n this.dtmfSender = null;\n this.durationTimer = null;\n this.answeredAt = null;\n this.listeners = {};\n this.endedSettled = false;\n this.pendingAnswerSdp = null;\n this.answerSent = false;\n // Set when answer() is called before the answer SDP is ready (offer still\n // arriving, mic-permission prompt open, or ICE still gathering). The answer\n // is then sent automatically from prepareAnswerForOffer once ready, rather\n // than answer() throwing on an eager first click.\n this.wantsAnswer = false;\n // Remote ICE candidates that arrive before the remote description is set\n // (e.g. an ice.candidate processed before prepareAnswerForOffer's\n // setRemoteDescription resolves) — applied once the description is in place.\n this.pendingRemoteCandidates = [];\n this.remoteDescriptionSet = false;\n // Rejecters for the in-flight waitForIceGatheringComplete promises, so teardown\n // can settle a wait that no ICE event will ever reach.\n this.gatheringAborts = new Set();\n // Suppression keys on REAL received audio, not SDP negotiation. A remote track\n // arriving (or an sdp.pranswer being applied) only means early media was\n // negotiated — the carrier may negotiate it and never send a packet, which\n // would leave the caller with dead air during alerting. So we keep ringing\n // until the remote audio track actually unmutes (RTP starts flowing); a brief\n // tone/early-media overlap is preferable to silence.\n this.remoteAudioFlowing = false;\n // Serializes device switches: two overlapping switches would otherwise interleave\n // their acquire/replace/stop steps, and one could stop the track the other installed.\n this.switchChain = Promise.resolve();\n this.id = init.id;\n this.direction = init.direction;\n this.from = init.from;\n this.fromName = init.fromName;\n this.to = init.to;\n this.state = init.initialState;\n this.transport = init.transport;\n this.startConsult = init.startConsult;\n this.ringback = init.ringback ?? new RingbackTone();\n this.ringback.setSinkId?.(init.audioOutputDeviceId ?? null);\n this.localStream = createMediaStream();\n this.remoteStream = createMediaStream();\n this.audioInputDeviceId_ = init.audioInputDeviceId ?? null;\n this.peerConnection = createPeerConnection(init.iceServers);\n this.wirePeerConnection();\n this.localMediaReady = this.acquireLocalMedia();\n }\n // whenLocalMediaReady lets the owner (phone.ts) surface a mic-permission\n // failure for an inbound call without having awaited getUserMedia before the\n // Call existed.\n whenLocalMediaReady() {\n return this.localMediaReady;\n }\n async acquireLocalMedia() {\n const preferred = this.audioInputDeviceId_;\n let stream;\n try {\n stream = await getUserMedia(audioConstraintsFor(preferred));\n }\n catch (e) {\n // A saved id that no longer resolves must not fail the call — ids rotate per\n // origin and devices get unplugged between sessions — so retry unconstrained and\n // let the OS choose. Skipped for a permission denial (re-prompts, same answer)\n // and for a locked mic (no device of the kind is readable, so there is nothing\n // looser constraints could find).\n if (!preferred || !isRetryableWithoutDevice(e))\n throw e;\n stream = await getUserMedia({ audio: true });\n }\n stream.getTracks().forEach((t) => {\n this.localStream.addTrack(t);\n this.watchCaptureTrack(t);\n });\n }\n /** The selected mic, or null for the OS default. */\n get audioInputDeviceId() {\n return this.audioInputDeviceId_;\n }\n /**\n * The device actually captured. May differ from `audioInputDeviceId` at acquisition,\n * where the constraint is `ideal` — how a caller detects a substitution.\n */\n get effectiveAudioInputDeviceId() {\n const [track] = this.localStream.getAudioTracks();\n return track?.getSettings?.().deviceId ?? null;\n }\n /** Internal — the phone-level setter broadcasts this to every live call. */\n async setAudioInputDevice(deviceId) {\n // The stored link swallows, so one failure can't poison the chain.\n const run = this.switchChain.then(() => this.switchAudioInput(deviceId), () => this.switchAudioInput(deviceId));\n this.switchChain = run.catch(() => { });\n return run;\n }\n async switchAudioInput(deviceId) {\n // Against what's CAPTURED and still live, never the recorded preference: `ideal`\n // acquisition can hand back a different device than was asked for, and a track that\n // ended keeps its deviceId — trusting the preference turned both the unplug-recovery\n // re-pick and that correction into no-ops that resolved without switching anything.\n const [capturedTrack] = this.localStream.getAudioTracks();\n const captured = this.effectiveAudioInputDeviceId;\n const capturedIsLive = capturedTrack?.readyState === 'live';\n if (deviceId !== null && deviceId === captured && capturedIsLive)\n return;\n // Don't also skip on non-null `captured`: the OS may hand back a specific device for\n // an unconstrained request, and the user must still be able to move off it.\n if (deviceId === null && this.audioInputDeviceId_ === null && captured === null)\n return;\n if (this.isFinished) {\n this.audioInputDeviceId_ = deviceId;\n return;\n }\n // A second getUserMedia while the prompt is open double-prompts on some browsers.\n let hadInitialMedia = true;\n try {\n await this.localMediaReady;\n }\n catch {\n hadInitialMedia = false;\n }\n if (this.isFinished) {\n this.audioInputDeviceId_ = deviceId;\n return;\n }\n let next;\n try {\n const stream = await getUserMedia(audioConstraintsFor(deviceId));\n const [track] = stream.getAudioTracks();\n if (!track)\n throw new Error('the acquired stream carried no audio track');\n next = track;\n }\n catch (e) {\n throw devicePhoneError({ cause: e, deviceId, callId: this.id });\n }\n // releaseMedia can't see this track; unstopped, the mic indicator stays lit.\n if (this.isFinished) {\n stopTrack(next);\n this.audioInputDeviceId_ = deviceId;\n return;\n }\n // A fresh track arrives enabled, so a muted call would start transmitting again.\n next.enabled = !this.isMuted;\n const sender = this.peerConnection.getSenders().find((s) => s.track?.kind === 'audio');\n const previous = this.localStream.getAudioTracks();\n let recoveredMedia = false;\n if (sender) {\n // replaceTrack changes only the sender's track, which is not an input to the\n // negotiation-needed check, so it can never ask for a renegotiation this client\n // couldn't service (it offers once per call and has no negotiationneeded\n // listener). A track the negotiated envelope can't carry — a different channel\n // count, say — rejects with InvalidModificationError instead, which is what the\n // catch below is for: the old track is still attached and sending at that point.\n try {\n await sender.replaceTrack(next);\n }\n catch (e) {\n stopTrack(next);\n throw new PhoneError({\n code: 'call_failed',\n message: `Could not switch microphone: ${e.message}`,\n callId: this.id,\n });\n }\n }\n else if (!hadInitialMedia) {\n // The original acquisition failed, so `localMediaReady` stays rejected and every\n // later await aborts — negotiation would never answer despite a working track.\n this.localMediaReady = Promise.resolve();\n recoveredMedia = true;\n }\n this.localStream.addTrack(next);\n this.watchCaptureTrack(next);\n previous.forEach((track) => {\n this.localStream.removeTrack(track);\n // Stop only after replaceTrack: an output-disabled sender sends no audio at all,\n // so stopping a track still attached to the sender would cut the stream rather\n // than mute it. Stopping is mandatory once detached, or the old device's mic\n // indicator stays lit for the rest of the call.\n stopTrack(track);\n });\n // Re-applied now that `next` is in localStream: a mute()/unmute() landing during the\n // replaceTrack await above mutated only the old track, and nothing else re-reads\n // isMuted, so the call would transmit against what the UI and server both believe.\n next.enabled = !this.isMuted;\n this.attachDtmfSender();\n this.audioInputDeviceId_ = deviceId;\n this.emit('audioInputChanged', deviceId);\n // An inbound call whose mic was denied has already consumed and discarded its offer\n // (the server sends sdp.offer right after call.incoming), so the recovered track has\n // no answer to ride out on. Rebuild one now.\n if (recoveredMedia && this.remoteDescriptionSet && !this.answerSent) {\n await this.buildAnswer();\n }\n }\n /** Route this call's ringback tone to `deviceId` (null = OS default). */\n setAudioOutputDevice(deviceId) {\n this.ringback.setSinkId?.(deviceId);\n }\n // A capture track that ends on its own (device unplugged, OS revoked it) leaves the\n // sender attached to a dead track: the far end hears silence and nothing throws.\n watchCaptureTrack(track) {\n track.addEventListener?.('ended', () => {\n if (this.isFinished)\n return;\n // Only for a track that is still ours — a track we stopped during a switch\n // also fires 'ended', and reporting that would cry wolf on every switch.\n if (!this.localStream.getAudioTracks().includes(track))\n return;\n this.emit('audioInputLost');\n });\n }\n // True once the call is over by either path: the server's call.ended (which sets\n // endedSettled) or a local dispose().\n get isFinished() {\n return this.endedSettled || this.state === 'ended';\n }\n on(event, handler) {\n let set = this.listeners[event];\n if (!set) {\n set = new Set();\n this.listeners[event] = set;\n }\n set.add(handler);\n }\n off(event, handler) {\n if (!handler) {\n delete this.listeners[event];\n return;\n }\n this.listeners[event]?.delete(handler);\n }\n answer() {\n if (this.direction !== 'inbound') {\n throw new PhoneError({\n code: 'invalid_message',\n message: 'Only inbound calls can be answered',\n callId: this.id,\n });\n }\n if (this.answerSent)\n return;\n // If the answer SDP isn't ready yet (the offer is still arriving, the mic\n // prompt is open, or ICE is still gathering), don't throw — record the\n // intent and let prepareAnswerForOffer send the answer the moment it's\n // ready. This makes an eager first click \"just work\".\n if (this.pendingAnswerSdp) {\n this.sendAnswer();\n }\n else {\n this.wantsAnswer = true;\n }\n }\n // Sends the buffered answer SDP. Idempotent; no-ops if already answered, the\n // call has ended, or the answer SDP isn't ready. Called from answer() (when\n // ready) and from prepareAnswerForOffer() (to flush a deferred answer).\n sendAnswer() {\n if (this.answerSent || this.state === 'ended' || !this.pendingAnswerSdp)\n return;\n this.transport.send({ type: 'call.answer', call_id: this.id });\n this.transport.send({ type: 'sdp.answer', call_id: this.id, sdp: this.pendingAnswerSdp });\n this.answerSent = true;\n }\n reject(reason = 'decline') {\n this.transport.send({ type: 'call.reject', call_id: this.id, reason });\n }\n hangup() {\n if (this.endedSettled)\n return;\n this.transport.send({ type: 'call.hangup', call_id: this.id });\n }\n hold() {\n // Only an active call can be held. A no-op otherwise (e.g. a still-ringing\n // outbound the multi-call layer auto-holds when the user answers a second\n // call) — sending call.hold for a non-active call draws a server\n // `invalid_message: call is not active` that surfaces as a spurious error.\n if (this.state !== 'active')\n return;\n this.transport.send({ type: 'call.hold', call_id: this.id });\n }\n resume() {\n // Symmetric to hold(): only a held call can be resumed.\n if (this.state !== 'held')\n return;\n this.transport.send({ type: 'call.resume', call_id: this.id });\n }\n mute() {\n this.transport.send({ type: 'call.mute', call_id: this.id });\n this.localStream.getAudioTracks().forEach((t) => (t.enabled = false));\n this.isMuted = true;\n }\n unmute() {\n this.transport.send({ type: 'call.unmute', call_id: this.id });\n this.localStream.getAudioTracks().forEach((t) => (t.enabled = true));\n this.isMuted = false;\n }\n sendDtmf(digits, duration = 100, interToneGap = 70) {\n if (!this.dtmfSender) {\n throw new PhoneError({\n code: 'call_failed',\n message: 'DTMF sender not available',\n callId: this.id,\n });\n }\n this.dtmfSender.insertDTMF(digits, duration, interToneGap);\n }\n /**\n * Blind transfer: immediately redirect the remote party to `destination`.\n * Fire-and-forget — on success the call ends with reason 'transferred';\n * on failure a non-fatal error is emitted and the call stays active.\n * The call must be active.\n */\n transfer(destination) {\n this.assertTransferable();\n this.transport.send({ type: 'call.transfer', call_id: this.id, destination });\n }\n /**\n * Attended (consultative) transfer, step 1: hold this call and dial\n * `destination` as a consult leg. Resolves with the consult Call. Once the\n * consult party answers, call `completeTransfer()` on THIS call to bridge\n * them; or hang up the consult and `resume()` to abandon the transfer.\n */\n attendedTransfer(destination) {\n this.assertTransferable();\n return this.startConsult(this, destination);\n }\n /**\n * Attended transfer, step 2: bridge the remote party to the consult leg's\n * party. Valid once the consult call (started via `attendedTransfer`) is\n * answered; this call is held at that point. On success both calls end\n * with reason 'transferred'.\n */\n completeTransfer() {\n // Called on the ORIGINAL leg (the server REFERs it to the consult, Replacing\n // the consult dialog). The original just has to be a live, connected call —\n // it's usually held (the consult is what you're talking to), but with\n // switchable focus the user may have switched TO the original, making it\n // active and the consult held. Either way the server keeps it StateActive and\n // the complete REFER is valid, so accept active OR held; only reject the\n // not-connected states.\n if (!this.isConnected) {\n throw new PhoneError({\n code: 'invalid_message',\n message: 'completeTransfer requires a connected call with an answered consult leg',\n callId: this.id,\n });\n }\n this.transport.send({ type: 'call.transfer.attended', call_id: this.id, step: 'complete' });\n }\n assertTransferable() {\n // A transfer needs a live, connected call (active OR held — see isConnected).\n if (!this.isConnected) {\n throw new PhoneError({\n code: 'invalid_message',\n message: 'Only a connected call can be transferred',\n callId: this.id,\n });\n }\n }\n get remoteMediaStream() {\n return this.remoteStream;\n }\n async startOutbound() {\n await this.localMediaReady;\n this.localStream.getTracks().forEach((t) => this.peerConnection.addTrack(t, this.localStream));\n this.attachDtmfSender();\n const offer = await this.peerConnection.createOffer();\n await this.peerConnection.setLocalDescription(offer);\n // Half trickle (RFC 8838 § 16): wait for a usable candidate set rather than\n // a complete one. The offer must carry at least one a=candidate — a\n // candidate-less offer reads to the far end as \"no ICE\" and comes back with\n // an answer that has no ICE block, which the browser cannot apply.\n // Candidates gathered after this point are trickled separately and are\n // negotiated into the session where the path supports it.\n await this.waitForIceGatheringComplete();\n return this.localDescriptionOr(offer);\n }\n async prepareAnswerForOffer(sdp) {\n // Set the remote description first (no mic needed) so any ICE candidates\n // buffered while the mic prompt was open can be applied, then wait for the\n // local mic before building the answer — the offer may have arrived while\n // getUserMedia was still pending.\n await this.peerConnection.setRemoteDescription({ type: 'offer', sdp });\n this.remoteDescriptionSet = true;\n await this.flushPendingRemoteCandidates();\n try {\n await this.localMediaReady;\n }\n catch {\n // Mic acquisition failed. handleIncoming already surfaces this via\n // whenLocalMediaReady().catch, so abort answer preparation here without\n // rejecting — otherwise the owner would emit a duplicate 'error' for the\n // same denial.\n return;\n }\n await this.buildAnswer();\n }\n // Builds (or rebuilds) the answer from an already-set remote description. Split\n // out of prepareAnswerForOffer so a mic acquired late — after a denial the user\n // recovered from — can still produce one: the server sends sdp.offer right after\n // call.incoming, so by then the offer has already been consumed and discarded.\n async buildAnswer() {\n // setRemoteDescription(offer) above already created a track-less sender for\n // each offered m-line, so getSenders() is non-empty here even though no mic\n // is attached yet. Guard on whether a sender actually has a track — keying\n // off getSenders().length would skip addTrack and yield an a=recvonly answer\n // (browser receives but never sends, i.e. one-way \"no audio to the far end\").\n // addTrack reuses the existing track-less transceiver and flips it to sendrecv.\n if (!this.peerConnection.getSenders().some((s) => s.track)) {\n this.localStream\n .getTracks()\n .forEach((t) => this.peerConnection.addTrack(t, this.localStream));\n }\n this.attachDtmfSender();\n const answer = await this.peerConnection.createAnswer();\n await this.peerConnection.setLocalDescription(answer);\n // Same requirement as startOutbound: the answer must carry at least one\n // candidate, or the negotiated session has no ICE.\n await this.waitForIceGatheringComplete();\n this.pendingAnswerSdp = this.peerConnection.localDescription?.sdp ?? answer.sdp ?? null;\n // Flush a deferred answer: answer() may have been clicked before the SDP\n // was ready, in which case it set wantsAnswer instead of sending.\n if (this.wantsAnswer)\n this.sendAnswer();\n }\n // Applies network early media (the carrier's 183 SDP) as a JSEP provisional\n // answer so RTP can play before answer; acceptRemoteAnswer replaces it at\n // pickup. The server may forward several pranswers; the browser's operations\n // chain (WebRTC 1.0 §4.4.1) serializes the setRemoteDescription calls FIFO and\n // the WS handler dispatches them in arrival order, so they apply in order\n // without overlapping. Setting remoteDescriptionSet lets buffered ICE flow.\n //\n // Ordering precondition: the FIFO argument holds from the point\n // setRemoteDescription is ENQUEUED on the operations chain, and the\n // supportsPranswer() await below delays enqueueing by at least a microtask —\n // whereas acceptRemoteAnswer enqueues synchronously. That is safe only because\n // the probe has already settled by the time any 18x can arrive: connect() warms\n // it before the ICE fetch and the WS authenticate round trip, dialling is\n // refused until connected, and the probe is purely local. A settled promise\n // yields only microtasks, which drain between WS frames. If the probe ever\n // becomes slow or moves later than connect(), a pranswer could be enqueued\n // after a subsequent final answer — gate on a synchronously-readable verdict\n // instead of relying on this timing.\n //\n // Returns whether the provisional answer was applied. `false` means this stack\n // cannot do pranswer at all (Firefox — see supportsPranswer) and the frame was\n // skipped: the call is unaffected and proceeds to the final sdp.answer, it just\n // plays local synthetic ringback in place of whatever the carrier was sending\n // (see the trade-off note below — that audio is not always ringback). Skipping\n // must NOT touch remoteDescriptionSet — no remote description was applied, so\n // buffered ICE candidates have to keep waiting for the final answer, and\n // flushing them here would throw inside addIceCandidate.\n async acceptRemoteProvisionalAnswer(sdp) {\n if (!(await supportsPranswer())) {\n warnPranswerUnsupportedOnce();\n // Substitute local ringback for the carrier audio we can't render. Without\n // this a 183-only call (early media, no 180 — so no call.ringing ever fires;\n // see the outbound_early_media server test) would be dead air from dial to\n // pickup on a pranswer-less stack.\n //\n // Early media is NOT always ringback: a 183 can carry a SIT tone, a\n // \"number you dialed is not in service\" announcement, or a pre-answer IVR.\n // A pranswer-less stack can't render any of it, and SDP describes only\n // codec/direction — never the audio's meaning — so we cannot tell which\n // case this is. We therefore play ringback unconditionally, which means a\n // failure announcement is replaced by a ringing tone until the carrier\n // tears the call down. That is the accepted trade: dead air during\n // alerting reads as \"the call broke\" and is the worse failure, so ringing\n // when we shouldn't beats silence when we should — the same ordering the\n // local-ringback arbitration settled on.\n //\n // Same guards as the call.ringing path: an outbound call still pre-answer,\n // not ended, with no real remote audio.\n if (this.direction === 'outbound' &&\n this.answeredAt === null &&\n !this.endedSettled &&\n !this.remoteAudioFlowing) {\n this.ringback.start();\n }\n return false;\n }\n await this.peerConnection.setRemoteDescription({ type: 'pranswer', sdp });\n this.remoteDescriptionSet = true;\n await this.flushPendingRemoteCandidates();\n return true;\n }\n async acceptRemoteAnswer(sdp) {\n await this.peerConnection.setRemoteDescription({ type: 'answer', sdp });\n this.remoteDescriptionSet = true;\n await this.flushPendingRemoteCandidates();\n }\n async addRemoteCandidate(candidate, sdpMid, sdpMLineIndex) {\n const init = candidate == null\n ? null\n : { candidate, sdpMid: sdpMid ?? undefined, sdpMLineIndex: sdpMLineIndex ?? undefined };\n // addIceCandidate throws if the remote description isn't set yet. The server\n // sends sdp.offer/answer just before ICE, but those are processed\n // asynchronously, so a candidate can land first — buffer until the\n // description is in place (flushed by prepare/acceptRemote*).\n if (!this.remoteDescriptionSet) {\n this.pendingRemoteCandidates.push(init);\n return;\n }\n await this.peerConnection.addIceCandidate(init);\n }\n async flushPendingRemoteCandidates() {\n const pending = this.pendingRemoteCandidates;\n this.pendingRemoteCandidates = [];\n for (const init of pending) {\n await this.peerConnection.addIceCandidate(init);\n }\n }\n handleServerMessage(msg) {\n switch (msg.type) {\n case 'call.trying':\n this.state = 'trying';\n this.emit('trying');\n return;\n case 'call.ringing':\n this.state = 'ringing';\n // call.ringing fires on alerting (SIP 180). Play local ringback only for\n // an outbound call still in its pre-answer ringing phase with no real\n // remote media: a late/rogue 180 after answer or end must not restart the\n // tone, and network early media (provisional answer / live remote track)\n // suppresses it since the forwarded media is what's audible.\n if (this.direction === 'outbound' &&\n this.answeredAt === null &&\n !this.endedSettled &&\n !this.remoteAudioFlowing) {\n this.ringback.start();\n }\n this.emit('ringing');\n return;\n case 'call.answered':\n this.state = 'active';\n this.answeredAt = Date.now();\n this.ringback.stop();\n this.startDurationTimer();\n this.emit('answered');\n return;\n case 'call.held':\n this.state = 'held';\n this.emit('held', msg.held_by);\n return;\n case 'call.resumed':\n this.state = 'active';\n this.emit('resumed');\n return;\n case 'call.ended':\n this.settleEnded(msg.reason);\n return;\n default:\n return;\n }\n }\n dispose() {\n // Before releasing media: releaseMedia stops tracks without removing them, so the\n // `ended` handlers would report the device as lost during ordinary teardown.\n this.endedSettled = true;\n this.ringback.stop();\n this.stopDurationTimer();\n this.releaseMedia();\n }\n settleEnded(reason) {\n if (this.endedSettled)\n return;\n this.endedSettled = true;\n this.state = 'ended';\n this.ringback.stop();\n this.stopDurationTimer();\n this.releaseMedia();\n this.emit('ended', reason);\n }\n // Stop the captured mic tracks and close the peer connection. Without\n // stopping the local tracks, the browser's mic-active indicator stays\n // lit after the call ends and the MediaStreamTrack handles leak until\n // the page is unloaded.\n releaseMedia() {\n // Before close(), while ICE events can still be observed to have stopped:\n // a closed connection fires none, so a wait started here would never end.\n this.abortIceGathering();\n try {\n this.peerConnection.close();\n }\n catch {\n // Ignore: peer connection may already be closed.\n }\n this.localStream.getTracks().forEach((t) => {\n try {\n t.stop();\n }\n catch {\n // Ignore: track may already be stopped.\n }\n });\n }\n // Marks real audio as flowing and stops any synthetic ringback. Driven by the\n // remote track's `unmute` (RTP actually started), never by track arrival.\n onRemoteAudioFlowing() {\n this.remoteAudioFlowing = true;\n this.ringback.stop();\n }\n wirePeerConnection() {\n this.peerConnection.addEventListener('track', (evt) => {\n evt.streams[0]?.getTracks().forEach((t) => {\n if (!this.remoteStream.getTracks().includes(t))\n this.remoteStream.addTrack(t);\n });\n // Stop the synthetic tone only when real audio is actually received: the\n // remote audio track's `unmute` (RTP started), not its arrival (which is\n // SDP-negotiation time). An already-unmuted track means media is flowing\n // now. Keying on negotiation would cut the tone to dead air when a carrier\n // negotiates early media but sends no packets.\n const track = evt.track;\n if (track?.kind !== 'audio')\n return;\n if (track.muted === false) {\n this.onRemoteAudioFlowing();\n }\n else {\n track.addEventListener('unmute', () => this.onRemoteAudioFlowing(), { once: true });\n }\n });\n this.peerConnection.addEventListener('icecandidate', (evt) => {\n // ICE candidates fire asynchronously from the peer connection and can\n // arrive while the socket is mid-reconnect or closed. Use best-effort\n // trySend so a late candidate doesn't throw an uncaught PhoneError into\n // this handler (trickle ICE tolerates loss; a closed socket means the\n // call is already tearing down).\n if (evt.candidate) {\n this.transport.trySend({\n type: 'ice.candidate',\n call_id: this.id,\n candidate: evt.candidate.candidate,\n sdp_mid: evt.candidate.sdpMid ?? null,\n sdp_m_line_index: evt.candidate.sdpMLineIndex ?? null,\n });\n }\n else {\n this.transport.trySend({ type: 'ice.done', call_id: this.id });\n }\n });\n }\n // Resolve once ICE gathering reaches 'complete', or after a timeout so a\n // slow/unreachable STUN/TURN server can't stall call setup — host candidates\n // (gathered near-instantly) are enough for the SDP to be ICE-valid, and any\n // server-reflexive candidates that arrive later are a bonus we don't block on.\n //\n // The timeout MUST NOT release a description with no candidates in it. That\n // is a well-formed trickle offer as far as the spec goes, but the far end\n // reads a candidate-less offer as \"this peer does not do ICE\" and answers\n // with no ICE block at all, at which point the browser cannot apply the\n // answer and no media is ever established. It looks intermittent because it\n // is a race against gathering: fast networks beat the cap, slow ones don't.\n // First seen on a React Native client, where gathering is slower than in a\n // browser and so loses the race more often.\n //\n // So the cap is a cap on waiting for a COMPLETE generation, not on waiting\n // for a usable one. If it fires with nothing gathered we keep waiting for the\n // first candidate — that is the half trickle of RFC 8838 § 16, and it is what\n // makes the offer safe against any peer, whether or not it supports trickle.\n // Waiting past the cap is only safe because two things can still end the wait\n // when no candidate ever arrives: the hard deadline below, and abortIceGathering()\n // on teardown. A closed peer connection fires no further ICE events, so without\n // those the promise would neither resolve nor reject and the caller's call()/\n // answer() would hang with no error to surface.\n waitForIceGatheringComplete(timeoutMs = 2000, hardTimeoutMs = 15000) {\n if (this.peerConnection.iceGatheringState === 'complete')\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n let settled = false;\n const cleanup = () => {\n settled = true;\n clearTimeout(timer);\n clearTimeout(hardTimer);\n this.gatheringAborts.delete(abort);\n this.peerConnection.removeEventListener('icegatheringstatechange', onChange);\n this.peerConnection.removeEventListener('icecandidate', onCandidate);\n };\n const finish = () => {\n if (settled)\n return;\n // Never hand back a candidate-less description. The listener stays\n // attached and the first candidate resolves us instead.\n if (!this.hasLocalCandidate())\n return;\n cleanup();\n resolve();\n };\n const onChange = () => {\n if (settled)\n return;\n if (this.peerConnection.iceGatheringState === 'complete') {\n // Gathering really is finished. Nothing more is coming, so release\n // even if it produced nothing — continuing to wait would hang the\n // call outright, which is worse than an offer the far end rejects.\n cleanup();\n resolve();\n }\n };\n const onCandidate = () => finish();\n // Nothing was gathered and nothing ever will be: the peer connection went\n // away (call cancelled, socket dropped) or the platform never produced a\n // candidate at all. Fail the setup rather than leave the caller waiting.\n const fail = (message) => {\n if (settled)\n return;\n cleanup();\n reject(new PhoneError({ code: 'call_failed', message, callId: this.id }));\n };\n const abort = () => fail('the call ended before any ICE candidate was gathered');\n const timer = setTimeout(finish, timeoutMs);\n const hardTimer = setTimeout(() => fail('ICE gathering produced no candidate'), hardTimeoutMs);\n this.gatheringAborts.add(abort);\n this.peerConnection.addEventListener('icegatheringstatechange', onChange);\n this.peerConnection.addEventListener('icecandidate', onCandidate);\n });\n }\n // Settles every in-flight gathering wait. Must run before the peer connection\n // is closed, since a closed connection emits no further ICE events.\n abortIceGathering() {\n const aborts = [...this.gatheringAborts];\n this.gatheringAborts.clear();\n aborts.forEach((abort) => abort());\n }\n // Whether the local description carries at least one candidate. Read off the\n // description rather than counted from icecandidate events, because that is\n // what actually goes on the wire.\n hasLocalCandidate() {\n const sdp = this.peerConnection.localDescription?.sdp;\n return !!sdp && /^a=candidate:/m.test(sdp);\n }\n // localDescription holds the gathered candidates after waitForIceGatheringComplete;\n // fall back to the pre-gathering description if the browser hasn't populated it.\n localDescriptionOr(fallback) {\n const local = this.peerConnection.localDescription;\n return local ? { type: local.type, sdp: local.sdp } : fallback;\n }\n attachDtmfSender() {\n const sender = this.peerConnection.getSenders().find((s) => s.track?.kind === 'audio');\n this.dtmfSender = sender?.dtmf ?? null;\n // Diagnostic: an audio sender with no `.dtmf` means the WebRTC impl lacks a\n // DTMFSender. On web this never happens (browsers always expose it); on React\n // Native it means the app installed a react-native-webrtc WITHOUT the DialStack\n // fork that adds `RTCRtpSender.dtmf`, so DTMF is silently unavailable. Warn\n // once so a misconfigured install surfaces instead of just a hidden keypad.\n if (sender && this.dtmfSender === null)\n warnMissingDtmfBridgeOnce();\n }\n startDurationTimer() {\n this.stopDurationTimer();\n this.durationTimer = setInterval(() => {\n if (this.answeredAt)\n this.duration = Math.floor((Date.now() - this.answeredAt) / 1000);\n }, 1000);\n }\n stopDurationTimer() {\n if (this.durationTimer) {\n clearInterval(this.durationTimer);\n this.durationTimer = null;\n }\n }\n emit(event, ...args) {\n this.listeners[event]?.forEach((h) => {\n h(...args);\n });\n }\n}\n//# sourceMappingURL=call.js.map","import { PhoneError } from './errors.js';\n// All state for the single in-flight connect(), in one object so the three guards\n// that used to be loose fields on DialStackPhone move together. connect() spans\n// two windows no single signal covers, plus the promise waiter:\n// 1. `token` — the pre-socket ICE-fetch window (no frame exists yet, so a\n// mid-fetch disconnect() is detected by object identity). Also the\n// concurrent-connect guard.\n// 2. `authReqId` — the post-open authenticate wait; the `authenticated`/`error`\n// must echo it to be ours.\n// 3. `resolvers` — the connect() promise, settled on the correlated reply.\nexport class ConnectHandshake {\n constructor() {\n this.token = null;\n this.authReqId = null;\n this.resolvers = null;\n }\n begin() {\n const token = {};\n this.token = token;\n return token;\n }\n get inFlight() {\n return this.token !== null;\n }\n isTokenCurrent(token) {\n return this.token === token;\n }\n // No-op if a later begin() already replaced the token (its window owns it now).\n releaseToken(token) {\n if (this.token === token)\n this.token = null;\n }\n stampAuth(reqId) {\n this.authReqId = reqId;\n }\n matches(reqId) {\n return this.authReqId !== null && reqId === this.authReqId;\n }\n // A frame is a stale echo only if it carries a DIFFERENT id than the outstanding\n // one. A frame omitting req_id is NOT stale — the server echoes it only when\n // present, and dropping an unattributed frame would hang connect() to its timeout.\n isStaleEcho(reqId) {\n return this.authReqId !== null && reqId != null && reqId !== this.authReqId;\n }\n get isAuthOutstanding() {\n return this.authReqId !== null;\n }\n clearAuth() {\n this.authReqId = null;\n }\n // `onSettle` (clears the timeout/token) is a callback so the timeout wiring stays\n // in connect().\n awaitAuth(resolve, reject, onSettle) {\n this.resolvers = {\n resolve: () => {\n onSettle();\n this.resolvers = null;\n resolve();\n },\n reject: (err) => {\n onSettle();\n this.resolvers = null;\n reject(err);\n },\n };\n }\n get hasWaiter() {\n return this.resolvers !== null;\n }\n resolve() {\n this.resolvers?.resolve();\n }\n reject(err) {\n this.resolvers?.reject(err);\n }\n // Detach the waiter without settling it, so the caller can reject with a specific\n // error after tearing the socket down (else disconnect()'s abort() would reject\n // it first with a generic transport_closed).\n takeWaiter() {\n const r = this.resolvers;\n this.resolvers = null;\n return r;\n }\n // Abort any in-flight connect() from disconnect(): a resumed connect() bails on\n // the cleared token, no late frame matches the cleared id, and the waiter rejects.\n abort() {\n this.token = null;\n this.authReqId = null;\n this.reject(new PhoneError({\n code: 'transport_closed',\n message: 'Disconnected before the softphone finished connecting',\n }));\n }\n}\n//# sourceMappingURL=connect-handshake.js.map","import { PhoneError } from './errors.js';\nimport { logError } from './logger.js';\nconst defaultSignalingSocket = (url, protocols) => new WebSocket(url, protocols);\n// Web default: fire on the DOM lifecycle events that signal a resume. Every\n// global is read lazily and guarded so a non-browser host (Node/tests, or the\n// RN bundle before it injects its own) degrades to a no-op unsubscribe. Events\n// are coalesced (one wake commonly emits several) into a single microtask-\n// deferred cb.\nconst defaultAppResume = (cb) => {\n const w = globalThis.window;\n const doc = globalThis.document;\n if (!w || typeof w.addEventListener !== 'function')\n return () => { };\n let scheduled = false;\n const fire = () => {\n if (scheduled)\n return;\n scheduled = true;\n queueMicrotask(() => {\n scheduled = false;\n cb();\n });\n };\n const onVisible = () => {\n if (!doc || doc.visibilityState === 'visible')\n fire();\n };\n w.addEventListener('online', fire);\n w.addEventListener('pageshow', fire);\n w.addEventListener('focus', fire);\n doc?.addEventListener('visibilitychange', onVisible);\n return () => {\n w.removeEventListener('online', fire);\n w.removeEventListener('pageshow', fire);\n w.removeEventListener('focus', fire);\n doc?.removeEventListener('visibilitychange', onVisible);\n };\n};\nconst BACKOFF_STEPS_MS = [1000, 2000, 4000, 8000, 16000, 30000];\n// How long to wait for a `pong` after a wake-probe `ping` before declaring the\n// socket dead and forcing a reconnect.\nconst PROBE_TIMEOUT_MS = 5000;\n// Fatal error codes a reconnect genuinely cannot recover: the credential is\n// dead server-side (session_revoked / auth_expired), or a newer connection has\n// taken over this user's slot (session_replaced) and reconnecting would start a\n// takeover war. Every OTHER fatal eviction (idle_timeout, session_limit,\n// slow_consumer, going_away) is transient and must still auto-reconnect.\nconst TERMINAL_ERROR_CODES = new Set([\n 'session_revoked',\n 'auth_expired',\n 'session_replaced',\n]);\nfunction isTerminalErrorCode(code) {\n return TERMINAL_ERROR_CODES.has(code);\n}\nexport class Transport {\n constructor(url, autoReconnect, createSocket, subscribeResume) {\n this.ws = null;\n this.listeners = {};\n // Advanced on every scheduled reconnect and reset only when a session\n // fully authenticates (see the message handler) — never on bare socket\n // `open`, or backoff can't escalate past the first step.\n this.reconnectAttempts = 0;\n this.closedByUser = false;\n // Set when the server sends a TERMINAL fatal error (session_revoked /\n // auth_expired): the token is dead server-side, so reconnecting with it can\n // only fail or loop. Suppresses auto-reconnect (and the wake-probe's\n // force-reconnect) on the subsequent close. Other fatal evictions are\n // recoverable and deliberately do NOT set this.\n this.terminalError = null;\n // Wake-probe state. `unsubscribeResume` is the resume subscription, held for\n // the transport's lifetime and released in close(). `probeTimer`/\n // `probeInFlight` bound a single in-flight probe (one wake fires several\n // lifecycle events; we want one probe per resume).\n this.unsubscribeResume = null;\n this.probeTimer = null;\n this.probeInFlight = false;\n // True between scheduling a reconnect and that reconnect opening a socket, so\n // a wake can't kick a second reconnect while a backoff one is pending.\n this.reconnectPending = false;\n // Latched when a wake-probe forced a teardown but autoReconnect is off: no\n // reconnect follows, so a later wake must not re-enter and emit a duplicate\n // `closed`.\n this.stopped = false;\n this.url = url;\n this.autoReconnect = autoReconnect;\n this.createSocket = createSocket ?? defaultSignalingSocket;\n this.subscribeResume = subscribeResume ?? defaultAppResume;\n }\n on(event, handler) {\n this.listeners[event] = handler;\n }\n connect() {\n this.closedByUser = false;\n // Subscribe once per transport lifetime — not per socket — so a reconnect\n // doesn't stack duplicate listeners. Released in close().\n if (!this.unsubscribeResume) {\n this.unsubscribeResume = this.subscribeResume(() => this.onWake());\n }\n this.openSocket();\n }\n /** True when the socket is open and a send() would succeed. */\n isOpen() {\n return !!this.ws && this.ws.readyState === WebSocket.OPEN;\n }\n send(msg) {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n logError('WebSocket send failed: socket not open', {\n type: msg.type,\n readyState: this.ws?.readyState ?? null,\n });\n throw new PhoneError({ code: 'transport_closed', message: 'WebSocket is not open' });\n }\n this.ws.send(JSON.stringify(msg));\n }\n /**\n * Best-effort send for messages emitted on their own async timeline (ICE\n * candidates fire from the peer connection, and can arrive while the socket is\n * mid-reconnect or closed). Silently drops when the socket isn't open rather\n * than throwing an uncaught error into an event handler. Trickle ICE tolerates\n * loss, and a closed socket means the call is already tearing down.\n */\n trySend(msg) {\n if (this.isOpen()) {\n this.ws.send(JSON.stringify(msg));\n }\n }\n close() {\n this.closedByUser = true;\n this.clearProbe();\n if (this.unsubscribeResume) {\n this.unsubscribeResume();\n this.unsubscribeResume = null;\n }\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n openSocket() {\n const ws = this.createSocket(this.url, ['dialstack.webrtc.v1']);\n this.ws = ws;\n ws.addEventListener('open', () => {\n this.listeners.open?.();\n });\n ws.addEventListener('message', (evt) => {\n // Ignore a frame from a socket we've already moved on from (forceReconnect\n // nulls this.ws and opens a new one without waiting for close). A late\n // buffered frame from the dead socket must not clear the new connection's\n // probe or reset reconnectPending — same freshness guard the close handler\n // applies.\n if (this.ws !== ws)\n return;\n let parsed;\n try {\n parsed = JSON.parse(evt.data);\n }\n catch {\n logError('WebSocket received an unparseable frame');\n return;\n }\n // Any inbound frame proves the socket is alive, so it settles a pending\n // wake-probe. `pong` is the probe's own reply — consume it here and do NOT\n // forward it to the phone (it's transport-internal, not an app message).\n this.clearProbe();\n if (parsed.type === 'pong')\n return;\n if (parsed.type === 'authenticated') {\n // Reset the backoff only once the session is fully established, NOT on\n // socket `open`. The socket opens (TCP + WS upgrade) before the auth\n // handshake and the server-side REGISTER; a REGISTER rejected because\n // the user's contacts are already at the cap closes the socket *after*\n // open. Resetting on open pinned every retry at the first backoff step,\n // so a client stuck against a full registration reconnected roughly\n // once per second forever instead of escalating its backoff.\n this.reconnectAttempts = 0;\n this.reconnectPending = false;\n }\n if (parsed.type === 'error' && parsed.fatal && isTerminalErrorCode(parsed.code)) {\n // Terminal ONLY for codes a reconnect can't recover: the token is dead\n // server-side (session_revoked) or lapsed (auth_expired), so re-auth with\n // it would just fail or loop; and session_replaced, where a newer\n // connection took over this user's session slot — reconnecting would\n // evict that newer session in turn (a takeover war), so stay closed and\n // let the app surface \"phone moved to your newer tab\" (a manual\n // reconnect is still allowed if the user returns to this tab). Every\n // OTHER fatal eviction — idle_timeout (the reap this watchdog exists to\n // recover from), session_limit (another tab freed a slot),\n // slow_consumer, going_away (deploy/drain) — is recoverable, so it must\n // fall through to auto-reconnect.\n this.terminalError = new PhoneError({\n code: parsed.code,\n message: parsed.message,\n fatal: true,\n });\n }\n this.listeners.message?.(parsed);\n });\n ws.addEventListener('close', () => {\n // Ignore a close from a socket we've already moved on from — forceReconnect\n // nulls this.ws and opens a new socket without waiting for the OS `close`,\n // so the dead socket's late close must not fire a second reconnect (or flip\n // state) over the replacement.\n if (this.ws !== ws)\n return;\n this.ws = null;\n // A pending probe is moot once the socket is gone — its timer would just\n // call forceReconnect, which this close path already handles.\n this.clearProbe();\n if (this.terminalError) {\n this.listeners.closed?.({ fatal: true, error: this.terminalError });\n return;\n }\n if (this.closedByUser) {\n this.listeners.closed?.({ fatal: false });\n return;\n }\n if (!this.autoReconnect) {\n // No reconnect will follow. Latch `stopped` so a later wake can't\n // re-enter forceReconnect and emit a second `closed` (→ duplicate\n // `disconnected`) — symmetric with forceReconnect's own no-reconnect\n // branch, which sets it too.\n this.stopped = true;\n this.listeners.closed?.({ fatal: false });\n return;\n }\n this.scheduleReconnect();\n });\n ws.addEventListener('error', () => {\n // Surface via the subsequent 'close' event; nothing to do here.\n });\n }\n scheduleReconnect() {\n const step = BACKOFF_STEPS_MS[Math.min(this.reconnectAttempts, BACKOFF_STEPS_MS.length - 1)];\n // Equal jitter (AWS \"Exponential Backoff And Jitter\"): hold half the step\n // as a floor and randomise the other half → delay ∈ [step/2, step]. Several\n // sessions for one user (e.g. multiple tabs) that drop in lockstep against\n // a full registration would otherwise retry in perfect sync every cycle and\n // keep re-colliding; jitter spreads them so they stop resynchronising.\n const delay = Math.round(step / 2 + Math.random() * (step / 2));\n this.reconnectAttempts += 1;\n this.reconnectPending = true;\n this.listeners.reconnecting?.(this.reconnectAttempts, delay);\n setTimeout(() => {\n this.reconnectPending = false;\n if (!this.closedByUser)\n this.openSocket();\n }, delay);\n }\n // Called when the environment resumes (tab foregrounded, network regained).\n // The socket may look OPEN but be dead — a backgrounded tab never ran the\n // `close` handler. Reconcile: if the socket is already gone, reconnect now; if\n // it claims to be open, probe it with a `ping` and force a reconnect only if\n // no `pong` (or any other frame) comes back in time.\n onWake() {\n if (this.closedByUser || this.stopped || this.terminalError || this.reconnectPending)\n return;\n if (!this.isOpen()) {\n // Already-dead socket (ws null). A reconnect isn't already pending\n // (guarded above), so kick one.\n //\n // A socket still in CONNECTING (ws present, not OPEN) is deliberately left\n // alone: forcing a reconnect could kill a handshake that's about to\n // succeed. A handshake that never completes is bounded elsewhere — the\n // initial connect by phone.ts's CONNECT_TIMEOUT_MS, and a reconnect\n // attempt by the backoff cadence re-firing — so it can't wedge silently.\n if (!this.ws)\n this.forceReconnect();\n return;\n }\n if (this.probeInFlight)\n return;\n this.probeInFlight = true;\n this.probeTimer = setTimeout(() => {\n this.probeTimer = null;\n this.probeInFlight = false;\n // No reply to the probe — treat the socket as dead.\n this.forceReconnect();\n }, PROBE_TIMEOUT_MS);\n try {\n this.ws.send(JSON.stringify({ type: 'ping' }));\n }\n catch {\n // Send threw synchronously → the socket is dead now, don't wait for the\n // probe timeout.\n this.clearProbe();\n this.forceReconnect();\n }\n }\n // Tear down a socket the wake-probe found dead and start a reconnect, WITHOUT\n // waiting for the OS `close` event (the whole point — that event may never\n // fire on a throttled/half-open connection). Idempotent and guarded so it\n // can't reconnect a user-closed, stopped, or terminally-errored transport.\n forceReconnect() {\n if (this.closedByUser || this.stopped || this.terminalError || this.reconnectPending)\n return;\n // Close the dead socket in BOTH branches — otherwise the OS socket and its\n // attached listeners leak. Null this.ws first so the socket's own late\n // `close`/`message` (guarded on identity) is a no-op against the replacement.\n const dead = this.ws;\n this.ws = null;\n if (dead) {\n try {\n dead.close();\n }\n catch {\n // Already closing/closed — nothing to do.\n }\n }\n if (!this.autoReconnect) {\n // No reconnect will follow, so this is the end of the line. Latch it so a\n // later wake can't re-enter forceReconnect and emit a duplicate `closed`.\n this.stopped = true;\n this.listeners.closed?.({ fatal: false });\n return;\n }\n this.scheduleReconnect();\n }\n clearProbe() {\n if (this.probeTimer !== null) {\n clearTimeout(this.probeTimer);\n this.probeTimer = null;\n }\n this.probeInFlight = false;\n }\n}\n//# sourceMappingURL=transport.js.map","import { createPaginatedList } from './pagination.js';\nimport { Call } from './call.js';\nimport { ConnectHandshake } from './connect-handshake.js';\nimport { devicePhoneError, NotImplementedError, PhoneError } from './errors.js';\nimport { logError, logWarn } from './logger.js';\nimport { enumerateDevices, getUserMedia, onDeviceChange, storage as defaultStorage, supportsPranswer, } from './platform.js';\nimport { Transport } from './transport.js';\nconst DEFAULT_API_BASE_URL = 'https://api.dialstack.ai';\n// Max users a single presence.subscribe may watch; mirrors the server's\n// maxPresenceTargets (a standing dialog per user is per-session cost). The\n// server rejects an over-cap list, so we reject client-side first.\nconst MAX_PRESENCE_TARGETS = 100;\n// How long to wait for the server's call.trying (or an error) after sending\n// call.create before giving up on an outbound call. Generous — it covers a real\n// PSTN setup round-trip — but finite, so a wedged session surfaces as a failure\n// instead of a promise that never settles.\nconst OUTBOUND_CALL_TIMEOUT_MS = 30000;\n// How long to wait for the server's `authenticated` frame after the socket opens\n// before failing connect(). A dead/half-open socket otherwise leaves connect()\n// pending forever.\nconst CONNECT_TIMEOUT_MS = 20000;\n// How long to wait for the ICE-servers HTTP fetch before failing connect(). This\n// runs before the socket opens, so CONNECT_TIMEOUT_MS (which only arms after) does\n// not cover it — a stalled/half-open fetch would otherwise leave connect() (and a\n// rebind awaiting it) pending forever with no error.\nconst ICE_FETCH_TIMEOUT_MS = 10000;\n// How far ahead of the token's `exp` to fire onTokenExpiring and refresh in-band.\n// The server enforces `exp` for the whole connection; refreshing this far before\n// it leaves headroom for the consumer's re-mint round-trip and the auth.refresh\n// exchange so the swap completes before the server's expiry timer would fire. A\n// token already inside this window at connect time refreshes (near-)immediately\n// (the scheduled delay is clamped to >= 0).\nconst TOKEN_REFRESH_LEAD_MS = 60000;\n// Floor on the scheduled refresh delay. A token whose remaining life is already\n// within the lead window would otherwise schedule at 0, and if the consumer keeps\n// minting short-lived tokens (the mint API enforces no minimum TTL) each refresh\n// would re-arm at 0 — a tight loop hammering the consumer's mint endpoint and the\n// server. The floor bounds a misconfigured consumer to one refresh per interval\n// instead of a spin; a well-behaved (hours/days) token is unaffected.\nconst TOKEN_REFRESH_MIN_DELAY_MS = 5000;\n// How long to wait for `auth.refreshed` after sending `auth.refresh` before\n// treating the refresh as lost. Without this, a dropped reply on an otherwise-open\n// socket would leave the refresh pending forever and permanently stop the refresh\n// cadence — the token would then lapse to a fatal auth_expired, the exact outcome\n// this feature prevents. On expiry we surface an error and re-schedule so a single\n// lost reply can't wedge the cadence. Mirrors the bounded-wait pattern used by\n// connect() and outbound calls (armTimeout).\nconst TOKEN_REFRESH_TIMEOUT_MS = 15000;\n/**\n * A one-shot timeout for a request awaiting a server reply. `onExpire` runs once\n * if nothing settles within `ms`; `settle()` (called from the resolve/reject\n * paths) cancels the timer and blocks a later expiry. Centralizes the\n * settled-flag + setTimeout/clearTimeout bookkeeping shared by connect() and the\n * outbound-call promise so the two can't drift.\n */\nfunction armTimeout(ms, onExpire) {\n let settled = false;\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n onExpire();\n }, ms);\n return {\n settle: () => {\n settled = true;\n clearTimeout(timer);\n },\n };\n}\n// AbortSignal that fires after `ms`. Falls back to AbortController + setTimeout\n// because AbortSignal.timeout is absent on some React Native runtimes and throws\n// synchronously there — which would fail every connect() at the ICE fetch.\nfunction timeoutSignal(ms) {\n if (typeof AbortSignal !== 'undefined' && typeof AbortSignal.timeout === 'function') {\n return AbortSignal.timeout(ms);\n }\n const controller = new AbortController();\n setTimeout(() => controller.abort(), ms);\n return controller.signal;\n}\n// localStorage key prefix for the persisted emergency-address id.\n// Lets a softphone re-present the same address across reconnects/sessions so a\n// returning device re-binds without re-prompting the user. Namespaced by the\n// user id (the token's `sub` claim) so two users sharing a browser don't\n// inherit each other's saved address — the server would reject a foreign id\n// anyway (user-scoped), but presenting it would trigger a spurious\n// `network.changed` prompt.\nconst EMERGENCY_ADDRESS_STORAGE_KEY_PREFIX = 'dialstack.webrtc.emergency_address_id.';\nexport class DialStackPhone {\n constructor(options) {\n this.isConnected = false;\n this.activeCalls = [];\n this.transport = null;\n // All state for the connect() currently in flight (ICE-window token, the\n // authenticate req_id, and the promise waiter). See ConnectHandshake.\n this.handshake = new ConnectHandshake();\n this.iceServers = [];\n this.listeners = {};\n this.pendingOutbound = null;\n this.pendingCall = null;\n this.hasConnectedOnce = false;\n this.reqSeq = 0;\n // Armed pre-`exp` refresh timer, and the in-flight refresh awaiting an\n // auth.refreshed reply. `pendingRefresh` carries the req_id we correlate the\n // reply against, the exact token we sent (so a success adopts that token, never\n // a different one), and `settle` to cancel the reply-timeout once the exchange\n // resolves (success or a correlated error). A reply for a stale req is ignored.\n this.tokenRefreshTimer = null;\n this.pendingRefresh = null;\n // The emergency-address id actually sent in the CURRENT socket's authenticate\n // frame — latched in transport.on('open'), NOT the mutable selection above.\n // The E911 gate keys off this so \"presented this session\" means what the live\n // socket carried, not what happens to be selected right now.\n this.presentedEmergencyAddressId_ = null;\n this.deviceChangeUnsubscribe = null;\n this.token = options.token;\n this.apiBaseUrl = options.apiBaseUrl ?? DEFAULT_API_BASE_URL;\n this.signalingUrl = resolveSignalingUrl(options.signalingBaseUrl, this.apiBaseUrl);\n this.autoReconnect = options.autoReconnect ?? true;\n this.iceServersOverride = options.iceServers ?? null;\n this.storage = options.storage ?? defaultStorage;\n this.storageUserId = userIdFromToken(options.token);\n this.emergencyAddressId =\n options.emergencyAddressId ??\n loadStoredId(this.storage, this.storageUserId, EMERGENCY_ADDRESS_STORAGE_KEY_PREFIX);\n this.onTokenExpiring = options.onTokenExpiring ?? null;\n this.ringback = options.ringback ?? null;\n this.createSignalingSocket = options.createSignalingSocket ?? null;\n this.onAppResume = options.onAppResume ?? null;\n this.audioInputDeviceId_ = options.audioInputDeviceId ?? null;\n this.audioOutputDeviceId_ = options.audioOutputDeviceId ?? null;\n }\n /** The microphone `deviceId` new calls capture, or null for the OS default. */\n get audioInputDeviceId() {\n return this.audioInputDeviceId_;\n }\n /** The speaker `deviceId` the ringback plays through, or null for the OS default. */\n get audioOutputDeviceId() {\n return this.audioOutputDeviceId_;\n }\n /**\n * Record a microphone preference WITHOUT acquiring it — for a host restoring a saved\n * selection at construction time. `setAudioInputDevice` probes the device, which\n * prompts for permission when no call is up; this doesn't, so a returning user isn't\n * asked for the mic on page load. An id that no longer resolves falls back to the\n * default at the next call's acquisition.\n */\n seedAudioInputDevice(deviceId) {\n if (this.activeCalls.length > 0)\n return;\n this.audioInputDeviceId_ = deviceId;\n }\n /**\n * Select the microphone: seeds future calls and live-switches calls already up. Held\n * for this phone's lifetime only — saving the choice across sessions is the host's\n * (the React softphone does it). Rejects without recording the id when the device\n * can't be acquired. A single live call's failure surfaces on `error` rather than\n * rejecting, so one bad call can't leave the others behind.\n */\n async setAudioInputDevice(deviceId) {\n // Probe so a broken id can't be recorded and then fail every future call — but only\n if (deviceId !== null && this.activeCalls.length === 0) {\n try {\n const probe = await getUserMedia({ audio: { deviceId: { exact: deviceId } } });\n probe.getTracks().forEach((t) => {\n try {\n t.stop();\n }\n catch {\n // Some hosts throw on a second stop.\n }\n });\n }\n catch (e) {\n throw devicePhoneError({ cause: e, deviceId });\n }\n }\n // Include the pending outbound call: it isn't in `activeCalls` until `call.trying`\n // lands (up to OUTBOUND_CALL_TIMEOUT_MS), and skipping it committed the preference\n // while that call kept the old mic for its whole duration. `Call.setAudioInputDevice`\n // awaits `localMediaReady` rather than racing the initial acquisition.\n const targets = new Set(this.activeCalls);\n if (this.pendingCall)\n targets.add(this.pendingCall);\n const results = await Promise.allSettled([...targets].map((call) => call.setAudioInputDevice(deviceId)));\n results.forEach((result) => {\n if (result.status !== 'rejected')\n return;\n this.emit('error', result.reason instanceof PhoneError\n ? result.reason\n : new PhoneError({\n code: 'call_failed',\n message: `Could not switch microphone on a live call: ${result.reason?.message ?? 'unknown error'}`,\n }));\n });\n const allRejected = results.length > 0 && results.every((r) => r.status === 'rejected');\n if (allRejected) {\n const first = results.find((r) => r.status === 'rejected');\n throw first.reason instanceof PhoneError\n ? first.reason\n : new PhoneError({ code: 'call_failed', message: 'Could not switch microphone' });\n }\n this.audioInputDeviceId_ = deviceId;\n }\n /**\n * Select the speaker for the ringback tone. Does NOT route remote call audio — that\n * plays through a media element the host owns, and only its owner can call\n * `setSinkId`. Void-returning because nothing here is verified or awaited.\n */\n setAudioOutputDevice(deviceId) {\n this.audioOutputDeviceId_ = deviceId;\n // Same pending-call reasoning as setAudioInputDevice above.\n const targets = new Set(this.activeCalls);\n if (this.pendingCall)\n targets.add(this.pendingCall);\n targets.forEach((call) => call.setAudioOutputDevice(deviceId));\n }\n /**\n * The available audio devices. Deliberately does not prompt for mic access — opening\n * a picker shouldn't spring a permission dialog — so names stay hidden until\n * permission has been granted once (`labelsAvailable: false`).\n */\n async listAudioDevices() {\n const all = await enumerateDevices();\n const pick = (kind) => all\n .filter((d) => d.kind === kind)\n .map((d) => ({\n deviceId: d.deviceId,\n label: d.label ?? '',\n groupId: d.groupId ?? '',\n isDefault: d.deviceId === 'default',\n }));\n const inputs = pick('audioinput');\n return {\n inputs,\n outputs: pick('audiooutput'),\n labelsAvailable: inputs.length > 0 && inputs.some((d) => d.label !== ''),\n // A working mediaDevices always reports at least a default placeholder, so empty\n supported: all.length > 0,\n };\n }\n on(event, handler) {\n let set = this.listeners[event];\n if (!set) {\n set = new Set();\n this.listeners[event] = set;\n }\n set.add(handler);\n this.syncDeviceChangeSubscription();\n }\n off(event, handler) {\n if (!handler) {\n delete this.listeners[event];\n this.syncDeviceChangeSubscription();\n return;\n }\n this.listeners[event]?.delete(handler);\n this.syncDeviceChangeSubscription();\n }\n /**\n * Reference-counted off the existing listener set.\n *\n * Deliberately NOT tied to connect/disconnect: `reconnect()` calls `disconnect()`, so\n * releasing there would permanently kill device events after any reconnect.\n */\n syncDeviceChangeSubscription() {\n const wanted = (this.listeners.audioDevicesChanged?.size ?? 0) > 0;\n if (wanted && !this.deviceChangeUnsubscribe) {\n this.deviceChangeUnsubscribe = onDeviceChange(() => {\n void this.listAudioDevices().then((devices) => {\n this.emit('audioDevicesChanged', devices);\n });\n });\n }\n else if (!wanted && this.deviceChangeUnsubscribe) {\n this.deviceChangeUnsubscribe();\n this.deviceChangeUnsubscribe = null;\n }\n }\n async connect() {\n if (this.transport)\n throw new PhoneError({ code: 'invalid_message', message: 'Phone is already connected' });\n if (this.handshake.inFlight)\n throw new PhoneError({ code: 'invalid_message', message: 'Phone is already connecting' });\n // Claim the in-flight slot with a fresh token. A disconnect() during the ICE\n // fetch below clears it (no socket exists yet to cancel), so on resume we bail.\n const token = this.handshake.begin();\n // Warm the pranswer capability probe once per session, off the call path, so\n // the first early-media frame doesn't pay for it. Cheap but not inert: it\n // builds throwaway PeerConnections and setLocalDescription starts host-candidate\n // gathering (DTLS cert generation, and on Chrome an mDNS registration for the\n // host candidate). No ICE servers are configured, so no STUN/TURN traffic, and\n // no getUserMedia, so no mic prompt. Deliberately not awaited: the probe\n // resolves rather than rejects, and a stalled WebRTC stack must never block or\n // fail connect().\n void supportsPranswer();\n let iceServers;\n try {\n iceServers = this.iceServersOverride ?? (await this.fetchIceServers());\n }\n catch (e) {\n this.handshake.releaseToken(token);\n throw e;\n }\n if (!this.handshake.isTokenCurrent(token)) {\n throw new PhoneError({\n code: 'transport_closed',\n message: 'Disconnected before the softphone finished connecting',\n });\n }\n this.iceServers = iceServers;\n const transport = new Transport(this.signalingUrl, this.autoReconnect, this.createSignalingSocket ?? undefined, this.onAppResume ?? undefined);\n this.transport = transport;\n // A superseded transport (after disconnect()/reconnect() swapped in a new\n // one) can still fire async callbacks — its `closed` in particular. Ignore\n // any callback from a transport that is no longer the current one, or a late\n // close from the old socket would flip `isConnected`/emit `disconnected`\n // over a freshly-authenticated new socket.\n const isCurrent = () => this.transport === transport;\n transport.on('open', () => {\n if (!isCurrent())\n return;\n // Fresh req_id per authenticate (fires on initial connect and every\n // auto-reconnect); the `authenticated` echoing it is ours. Snapshot the\n // presented id so presentedEmergencyAddressId reflects this frame.\n const reqId = this.nextReqId();\n this.handshake.stampAuth(reqId);\n this.presentedEmergencyAddressId_ = this.emergencyAddressId;\n transport.send({\n type: 'authenticate',\n req_id: reqId,\n token: this.token,\n ...(this.emergencyAddressId ? { emergency_address_id: this.emergencyAddressId } : {}),\n });\n });\n transport.on('message', (msg) => {\n if (!isCurrent())\n return;\n this.handleMessage(msg);\n });\n transport.on('reconnecting', (attempt, delayMs) => {\n if (!isCurrent())\n return;\n this.isConnected = false;\n this.emit('reconnecting', attempt, delayMs);\n });\n transport.on('closed', (reason) => {\n if (!isCurrent())\n return;\n this.isConnected = false;\n // Forward the fatal error (session_replaced / session_revoked) so the app\n // can distinguish a takeover/revocation from an ordinary drop. Undefined\n // for a non-fatal close (a reconnect will follow) or a user disconnect.\n this.emit('disconnected', reason?.error);\n });\n return new Promise((resolve, reject) => {\n // Bound the wait for `authenticated`. A dead/half-open socket (or a server\n // that accepts the TCP connection but never completes the handshake) would\n // otherwise leave connect() pending forever with no rejection.\n const timeout = armTimeout(CONNECT_TIMEOUT_MS, () => {\n logError('Timed out connecting to the softphone', { timeoutMs: CONNECT_TIMEOUT_MS });\n // Settle through the handshake waiter (which nulls it), so a racing\n // disconnect() can't also reject with transport_closed regardless of order.\n this.handshake.reject(new PhoneError({ code: 'auth_failed', message: 'Timed out connecting to the softphone' }));\n this.disconnect();\n });\n this.handshake.awaitAuth(resolve, reject, () => {\n timeout.settle();\n this.handshake.releaseToken(token);\n });\n transport.connect();\n });\n }\n disconnect() {\n // Abort any in-flight connect(): clears the ICE-window token (a resumed\n // connect() bails), clears the outstanding authenticate id (no late frame\n // matches), and rejects the promise waiter with transport_closed now (else it\n // hangs until CONNECT_TIMEOUT ~20s later with a misleading auth_failed).\n this.handshake.abort();\n // Stop the refresh timer first so it can't fire against the socket we're\n // about to tear down (or leak past it).\n this.clearTokenRefreshTimer();\n // Settle an in-flight outbound (awaiting call.trying) that isn't in\n // activeCalls yet — otherwise its promise hangs forever and its timeout\n // timer + Call leak until it fires. reject() clears the timer, disposes the\n // Call, and nulls pendingOutbound/pendingCall.\n this.pendingOutbound?.reject(new PhoneError({\n code: 'transport_closed',\n message: 'Disconnected before the call connected',\n }));\n for (const call of [...this.activeCalls]) {\n try {\n call.hangup();\n }\n catch {\n // Ignore: transport may already be closed.\n }\n call.dispose();\n }\n this.activeCalls.length = 0;\n this.transport?.close();\n this.transport = null;\n this.isConnected = false;\n }\n /**\n * Tear down and reconnect, re-running the `authenticate` handshake. The new\n * session presents the current `emergencyAddressId`, which is where the server\n * binds the emergency address to the connection's network — so this is how an\n * app applies a just-selected/created address (or re-binds after a network\n * move). Safe to call while idle; any live calls are torn down.\n */\n async reconnect() {\n // Emit an explicit `reconnecting` before tearing down. The old transport's\n // async `closed` no longer surfaces `disconnected` (the transport-staleness\n // guard drops it once disconnect() nulls this.transport), so without this the\n // connection state would never leave `connected` across a reconnect — and a\n // consumer watching for a connected→…→connected transition (e.g. the E911\n // binding re-check) would never see one. This drives the observable\n // transition that the subsequent `authenticated` (→ `reconnected`) completes.\n this.emit('reconnecting', 0, 0);\n this.isConnected = false;\n this.disconnect();\n try {\n await this.connect();\n }\n catch (e) {\n // connect() can reject before a transport exists (ICE-fetch failure), so no\n // `closed` fires to move the state off 'reconnecting' — emit it here.\n this.emit('disconnected');\n throw e;\n }\n }\n /**\n * Re-present a chosen `emergencyAddressId` on a fresh authenticate handshake, in\n * one call. Rebinding requires a fresh socket (the server binds E911 once per\n * connection, after REGISTER), so this tears down and reconnects like\n * `reconnect()`; resolves once the server confirms the new binding.\n */\n reconnectWithEmergency(emergencyAddressId) {\n this.selectEmergencyAddress(emergencyAddressId);\n return this.reconnect();\n }\n call(destination) {\n const reqId = this.nextReqId();\n return this.placeOutbound(destination, reqId, (offerSdp) => {\n this.transport.send({\n type: 'call.create',\n req_id: reqId,\n destination,\n sdp: offerSdp,\n });\n });\n }\n // startConsult dials the consult leg of an attended transfer:\n // same outbound machinery as call(), but signalled via\n // call.transfer.attended{step:consult} so the server holds the parent\n // first. The consult's call.trying is the direct reply to the consult\n // frame and echoes its req_id, so it resolves exactly like a normal\n // outbound call.\n startConsult(parent, destination) {\n const reqId = this.nextReqId();\n return this.placeOutbound(destination, reqId, (offerSdp) => {\n this.transport.send({\n type: 'call.transfer.attended',\n req_id: reqId,\n call_id: parent.id,\n step: 'consult',\n destination,\n sdp: offerSdp,\n });\n });\n }\n async placeOutbound(destination, reqId, sendCreate) {\n if (!this.transport || !this.isConnected) {\n throw new PhoneError({ code: 'transport_closed', message: 'Phone is not connected' });\n }\n if (this.pendingOutbound) {\n throw new PhoneError({\n code: 'rate_limited',\n message: 'Another outbound call is still being placed',\n });\n }\n const call = new Call({\n // Provisional id until call.trying delivers the server-assigned one.\n id: reqId,\n direction: 'outbound',\n from: '',\n fromName: null,\n to: destination,\n initialState: 'trying',\n transport: this.transport,\n iceServers: this.iceServers,\n startConsult: (p, d) => this.startConsult(p, d),\n ringback: this.ringback ?? undefined,\n audioInputDeviceId: this.audioInputDeviceId_ ?? undefined,\n audioOutputDeviceId: this.audioOutputDeviceId_ ?? undefined,\n });\n // startOutbound acquires the mic (getUserMedia) internally and gathers ICE\n // before returning the offer; surface a mic-denied / no-SDP failure as a\n // PhoneError and tear the call down.\n let offer;\n try {\n offer = await call.startOutbound();\n }\n catch (e) {\n call.dispose();\n throw devicePhoneError({\n cause: e,\n deviceId: this.audioInputDeviceId,\n permissionMessage: 'Microphone permission is required to place a call',\n fallbackMessage: 'Could not start the call',\n });\n }\n if (!offer.sdp) {\n call.dispose();\n throw new PhoneError({\n code: 'call_failed',\n message: 'RTCPeerConnection.createOffer produced no SDP',\n });\n }\n const offerSdp = offer.sdp;\n return new Promise((resolve, reject) => {\n // Bound the wait for the server's call.trying (or an error) reply. Without\n // this, a wedged/half-open session (socket open, server silent) leaves the\n // promise pending forever — placeCall's caller never learns the dial failed\n // and the UI silently no-ops. On expiry we reject so the failure surfaces.\n const timeout = armTimeout(OUTBOUND_CALL_TIMEOUT_MS, () => {\n // Only fire if THIS outbound is still the pending one (a later dial may\n // have replaced it).\n if (this.pendingOutbound?.reqId !== reqId)\n return;\n logError('Timed out waiting for the server to accept the call', {\n timeoutMs: OUTBOUND_CALL_TIMEOUT_MS,\n });\n this.pendingOutbound.reject(new PhoneError({\n code: 'call_failed',\n message: 'Timed out waiting for the server to accept the call',\n }));\n });\n this.pendingOutbound = {\n reqId,\n destination,\n resolve: (placed) => {\n timeout.settle();\n this.pendingOutbound = null;\n this.pendingCall = null;\n this.activeCalls.push(placed);\n resolve(placed);\n },\n reject: (err) => {\n timeout.settle();\n this.pendingOutbound = null;\n this.pendingCall = null;\n call.dispose();\n reject(err);\n },\n };\n sendCreate(offerSdp);\n this.pendingCall = call;\n });\n }\n getCall(callId) {\n return this.activeCalls.find((c) => c.id === callId);\n }\n /**\n * Subscribe to presence (BLF) for an explicit, bounded set of users. The\n * watch set is required and non-empty — there is no whole-account default —\n * and is capped at {@link MAX_PRESENCE_TARGETS}; both bounds mirror the\n * server, which rejects a bad list with a non-fatal `invalid_message` error.\n *\n * The server replies with a `presence.list` snapshot (emitted as\n * `presenceList`), always before any `presence.update` delta\n * (`presenceUpdate`) for the users that snapshot introduces. Deltas follow as\n * those users' status changes.\n *\n * A status is `available`, `on_call`, or `offline` — `offline` meaning the user\n * has no registered device and so cannot currently receive calls. The first\n * delta after a snapshot may restate a status the snapshot already reported, so\n * key the roster by `userId` and upsert.\n *\n * Users whose subscription can't be established are omitted from the snapshot\n * and named in a non-fatal `presence_unavailable` error (its `PhoneError`\n * carries no user list; listen on `error` for the code).\n */\n subscribePresence(userIds) {\n if (!this.transport || !this.isConnected) {\n throw new PhoneError({ code: 'transport_closed', message: 'Phone is not connected' });\n }\n if (userIds.length === 0) {\n throw new PhoneError({\n code: 'invalid_message',\n message: 'subscribePresence requires a non-empty users list',\n });\n }\n if (userIds.length > MAX_PRESENCE_TARGETS) {\n throw new PhoneError({\n code: 'invalid_message',\n message: `subscribePresence accepts at most ${MAX_PRESENCE_TARGETS} users (got ${userIds.length})`,\n });\n }\n this.transport.send({ type: 'presence.subscribe', req_id: this.nextReqId(), users: userIds });\n }\n setPresence(_status, _statusText) {\n throw new NotImplementedError('DialStackPhone.setPresence');\n }\n /**\n * Register and validate an emergency (E911) address. Creates the\n * resource via the REST API (validated against the carrier MSAG), persists\n * its id, and presents it on the next connect so the server binds it to the\n * device's network. This does not alter an already-authenticated session. To\n * apply a new address there (e.g. responding to a `network.changed` event),\n * pass the returned id to `reconnectWithEmergency()`.\n *\n * Rejects with a `PhoneError` (code `invalid_message`) when the address\n * can't be validated.\n */\n async setEmergencyAddress(address) {\n const created = await this.apiRequest('POST', '/v1/me/emergency-addresses', address);\n this.emergencyAddressId = created.id;\n persistId(this.storage, this.storageUserId, EMERGENCY_ADDRESS_STORAGE_KEY_PREFIX, created.id);\n return created;\n }\n /**\n * Select an already-saved emergency address to present on the next\n * (re)connect (sets + persists it). The server binds it at the authenticate\n * handshake, so call `reconnect()` afterwards for it to take effect.\n */\n selectEmergencyAddress(id) {\n this.emergencyAddressId = id;\n persistId(this.storage, this.storageUserId, EMERGENCY_ADDRESS_STORAGE_KEY_PREFIX, id);\n }\n /**\n * The emergency-address id actually sent in the CURRENT socket's authenticate\n * frame (latched at send time), or null. This is what the E911 gate keys off —\n * a saved address's `registered_ip`, or a selection made without a reconnect,\n * does NOT mean this session bound it.\n */\n get presentedEmergencyAddressId() {\n return this.presentedEmergencyAddressId_;\n }\n /** Fetch a saved emergency address (defaults to the one this phone uses). */\n getEmergencyAddress(id) {\n const target = id ?? this.emergencyAddressId;\n if (!target) {\n return Promise.reject(new PhoneError({ code: 'invalid_message', message: 'No emergency address id' }));\n }\n return this.apiRequest('GET', `/v1/me/emergency-addresses/${encodeURIComponent(target)}`);\n }\n /**\n * List the user's saved emergency addresses (location profiles).\n *\n * Auto-paginating: `await` it for the first page envelope, or iterate the\n * full collection with `autoPagingEach()` / `autoPagingToArray()` —\n * subsequent pages are fetched lazily.\n */\n listEmergencyAddresses() {\n const fetchPage = (url) => this.apiRequest('GET', url);\n return createPaginatedList(fetchPage('/v1/me/emergency-addresses'), fetchPage);\n }\n /**\n * List the account directory — the colleagues this user may see, by name\n * (`GET /v1/me/directory`). Resolved from the session token alone (no account\n * context needed), so a softphone can discover who to watch for presence, or\n * populate a contact / transfer picker, without its backend supplying the set.\n *\n * Auto-paginates the whole directory and returns a flat list. To watch every\n * colleague's presence: `phone.subscribePresence((await phone.listDirectory()).map(e => e.user))`.\n * Note presence subscription accepts at most 100 users at once, so watching a\n * very large directory means subscribing to a subset.\n */\n async listDirectory() {\n const fetchPage = (url) => this.apiRequest('GET', url);\n const rows = await createPaginatedList(fetchPage('/v1/me/directory'), fetchPage).autoPagingToArray();\n return rows.map((r) => ({ user: r.user, displayName: r.display_name }));\n }\n /** Delete a saved emergency address. Clears the local selection if it matched. */\n async deleteEmergencyAddress(id) {\n await this.apiRequest('DELETE', `/v1/me/emergency-addresses/${encodeURIComponent(id)}`);\n if (this.emergencyAddressId === id) {\n this.emergencyAddressId = null;\n persistId(this.storage, this.storageUserId, EMERGENCY_ADDRESS_STORAGE_KEY_PREFIX, null);\n }\n }\n /**\n * Clear an address's network binding (registered_ip) via the REST API. The\n * next connect re-registers the current network. Useful after a move so the\n * address re-binds where the device now is.\n */\n clearEmergencyAddressRegisteredIp(id) {\n return this.apiRequest('DELETE', `/v1/me/emergency-addresses/${encodeURIComponent(id)}/registered_ip`);\n }\n nextReqId() {\n this.reqSeq += 1;\n return `req_${Date.now().toString(36)}_${this.reqSeq}`;\n }\n // adoptToken makes a new token the current one: it re-derives the token-scoped\n // local state (localStorage namespace) and re-arms the pre-`exp` refresh off the\n // new expiry, from a SINGLE decode. Scheduling is folded in so \"a new token is\n // live\" always implies \"its refresh is scheduled\" — the two can't drift apart.\n adoptToken(token) {\n this.token = token;\n const { userId, exp } = decodeTokenClaims(token);\n // Only overwrite the persistence namespace when the new token yields a usable\n // user id. A consumer's refresh token could be opaque/undecodable here; nulling\n // a previously-valid storageUserId would silently disable emergency-address\n // persistence for the rest of an otherwise-healthy session.\n if (userId !== null)\n this.storageUserId = userId;\n this.scheduleTokenRefresh(exp);\n }\n // Arm the pre-`exp` refresh. Idempotent: clears any prior timer/pending refresh\n // first. No-ops when onTokenExpiring is unset (back-compat) or the token has no\n // decodable exp (nothing to schedule against). `exp` may be passed by adoptToken\n // (which already decoded it); otherwise it's read from the current token — this\n // is the path taken on every `authenticated`, re-arming after each (re)connect.\n scheduleTokenRefresh(exp = decodeTokenClaims(this.token).exp) {\n this.clearTokenRefreshTimer();\n if (!this.onTokenExpiring)\n return;\n if (exp === null)\n return;\n // Floor the delay: a token already inside the lead window would otherwise\n // schedule at 0 and, if the consumer keeps minting short-lived tokens, re-arm\n // at 0 on each adoption — a spin. The floor bounds that to one refresh per\n // interval while leaving normal (hours/days) tokens scheduled far out.\n const delay = Math.max(TOKEN_REFRESH_MIN_DELAY_MS, exp * 1000 - Date.now() - TOKEN_REFRESH_LEAD_MS);\n this.tokenRefreshTimer = setTimeout(() => {\n this.tokenRefreshTimer = null;\n void this.fireTokenRefresh();\n }, delay);\n }\n // Timer body: ask the consumer for a fresh token and hand it to the server via\n // an in-band auth.refresh. The new token is NOT adopted here — only on the\n // matching auth.refreshed (handleMessage) — so a rejected refresh never swaps\n // the live token, and the server's original expiry timer keeps governing.\n async fireTokenRefresh() {\n if (!this.onTokenExpiring || !this.transport || !this.isConnected)\n return;\n // Capture the transport this refresh is for. A reconnect during the await\n // below swaps in a new transport that runs its own scheduleTokenRefresh on\n // re-auth; sending this stale refresh on it would race that fresh cadence.\n const transport = this.transport;\n let fresh;\n try {\n fresh = await this.onTokenExpiring();\n }\n catch (e) {\n // The connection is still valid; do NOT tear it down. Surface the failure\n // so the app can trigger its sign-in flow; the server's expiry timer still\n // governs, and a later reconnect can re-mint.\n this.emit('error', new PhoneError({\n code: 'auth_failed',\n message: `onTokenExpiring failed; token was not refreshed: ${e.message}`,\n }));\n return;\n }\n // Bail if the socket was torn down/replaced while awaiting: transport identity\n // must still match (guards against a reconnect), and it must still be live.\n if (this.transport !== transport || !this.isConnected)\n return;\n const reqId = this.nextReqId();\n // Bound the wait for auth.refreshed. If the server accepts the frame but the\n // reply is lost on an otherwise-open socket, without this the pending refresh\n // would stick forever and the cadence would stop for good. On expiry, surface\n // an error and re-schedule off the current (still-live) token so one lost\n // reply can't permanently defeat the refresh.\n const timeout = armTimeout(TOKEN_REFRESH_TIMEOUT_MS, () => {\n if (this.pendingRefresh?.reqId !== reqId)\n return;\n this.pendingRefresh = null;\n logError('Timed out waiting for auth.refreshed', { timeoutMs: TOKEN_REFRESH_TIMEOUT_MS });\n this.emit('error', new PhoneError({\n code: 'auth_failed',\n message: 'Timed out waiting for the server to confirm the token refresh',\n }));\n // Re-arm off the current token so the refresh cadence resumes (the token was\n // never swapped — a lost reply never extends the session).\n if (this.isConnected)\n this.scheduleTokenRefresh();\n });\n this.pendingRefresh = { reqId, token: fresh, settle: timeout.settle };\n transport.send({ type: 'auth.refresh', req_id: reqId, token: fresh });\n }\n clearTokenRefreshTimer() {\n if (this.tokenRefreshTimer !== null) {\n clearTimeout(this.tokenRefreshTimer);\n this.tokenRefreshTimer = null;\n }\n // Cancel the reply-timeout for any in-flight refresh so it can't fire after\n // the exchange has been torn down or resolved elsewhere.\n this.pendingRefresh?.settle();\n this.pendingRefresh = null;\n }\n // apiRequest is the shared REST helper for the /v1/me/emergency-addresses\n // surface (Bearer auth, JSON). A 422 (carrier MSAG validation failure)\n // surfaces as invalid_message carrying the server detail; 204 returns void.\n async apiRequest(method, path, body) {\n let resp;\n try {\n resp = await fetch(`${this.apiBaseUrl}${path}`, {\n method,\n headers: {\n Authorization: `Bearer ${this.token}`,\n ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n catch (e) {\n throw new PhoneError({\n code: 'internal_error',\n message: `request failed: ${e.message}`,\n });\n }\n if (resp.status === 422) {\n const detail = await resp.text().catch(() => '');\n throw new PhoneError({\n code: 'invalid_message',\n message: `emergency address validation failed: ${detail || resp.statusText}`,\n });\n }\n if (!resp.ok) {\n throw new PhoneError({\n code: 'internal_error',\n message: `request failed: status ${resp.status}`,\n });\n }\n if (resp.status === 204)\n return undefined;\n return (await resp.json());\n }\n async fetchIceServers() {\n try {\n // Bound the fetch: it runs before the socket opens, so connect()'s\n // authenticate timeout doesn't cover it — a stalled fetch would hang forever.\n const resp = await fetch(`${this.apiBaseUrl}/v1/webrtc/ice-servers`, {\n headers: { Authorization: `Bearer ${this.token}` },\n signal: timeoutSignal(ICE_FETCH_TIMEOUT_MS),\n });\n if (!resp.ok)\n throw new Error(`status ${resp.status}`);\n const body = (await resp.json());\n return body.ice_servers;\n }\n catch (e) {\n throw new PhoneError({\n code: 'ice_fetch_failed',\n message: `Failed to fetch ICE servers: ${e.message}`,\n });\n }\n }\n handleMessage(msg) {\n switch (msg.type) {\n case 'authenticated': {\n // Ignore only a frame that echoes a DIFFERENT id than our outstanding\n // authenticate — a stale reply from a superseded socket. A frame that omits\n // req_id is accepted (the server may not echo it), so an unattributed\n // authenticated can't hang connect() to its timeout.\n if (this.handshake.isStaleEcho(msg.req_id))\n return;\n // Whether this frame answers an authenticate we actually sent (id stamped in\n // on('open')). No outstanding id means no authenticate is pending, so don't\n // treat the frame as our handshake reply.\n const isOurHandshake = this.handshake.isAuthOutstanding;\n this.handshake.clearAuth();\n this.isConnected = true;\n // A session just came up (initial connect or reconnect); the current\n // token is unchanged, so this is a bare re-arm rather than an adoptToken.\n this.scheduleTokenRefresh();\n // Resolve the in-flight connect() when its authenticate is answered. A frame\n // with no waiting connect is an auto-reconnect re-auth.\n if (isOurHandshake && this.handshake.hasWaiter) {\n this.handshake.resolve();\n }\n if (this.hasConnectedOnce)\n this.emit('reconnected');\n else\n this.emit('connected');\n this.hasConnectedOnce = true;\n return;\n }\n case 'auth.refreshed': {\n // Correlate against the in-flight refresh, then adopt the exact token we\n // sent for this req_id (never a mismatched one) — adoptToken re-arms the\n // next refresh off its new exp. A reply for a stale/unknown req_id is\n // ignored.\n if (this.pendingRefresh && msg.req_id === this.pendingRefresh.reqId) {\n const token = this.pendingRefresh.token;\n this.pendingRefresh.settle(); // cancel the reply-timeout; the reply arrived\n this.pendingRefresh = null;\n this.adoptToken(token);\n }\n return;\n }\n case 'network.changed': {\n // The emergency address bound at connect no longer applies on this\n // network. The session stays usable — 911/933 still go out —\n // but non-emergency PSTN is gated until the app confirms/registers an\n // address valid here. Surfaced as an event for the app to prompt on.\n this.emit('network.changed');\n return;\n }\n case 'error': {\n const err = new PhoneError({\n code: msg.code ?? 'internal_error',\n message: msg.message,\n callId: msg.call_id ?? null,\n fatal: msg.fatal ?? false,\n });\n logError('Softphone server error', {\n code: err.code,\n message: err.message,\n fatal: err.fatal,\n });\n // A non-fatal error echoing the in-flight refresh's req_id is the server\n // rejecting that refresh (bad/expired/cross-identity token). Clear the\n // pending state so a late auth.refreshed can't adopt the rejected token;\n // leave this.token and the (server's original) expiry timer untouched —\n // a failed refresh never extends the session. The emitted `error` below\n // surfaces it; the connection stays open.\n if (this.pendingRefresh && msg.req_id === this.pendingRefresh.reqId) {\n this.pendingRefresh.settle(); // cancel the reply-timeout; the reply arrived\n this.pendingRefresh = null;\n }\n // Reject the in-flight connect() on a fatal error, or on one echoing our\n // outstanding authenticate's req_id (the server rejecting it). Either way\n // the socket is unusable, so tear it down — otherwise a stray later\n // `authenticated` for this dead handshake could still flip isConnected.\n // Detach the waiter first so disconnect()'s transport_closed doesn't win\n // over the server's specific error we want the caller to see.\n if (this.handshake.hasWaiter && (err.fatal || this.handshake.matches(msg.req_id))) {\n const waiter = this.handshake.takeWaiter();\n this.disconnect();\n waiter?.reject(err);\n }\n // A pending outbound is rejected by an error echoing the creating\n // frame's req_id (the server echoes it on every immediate create /\n // consult failure), or by any fatal error — the connection is dying\n // and call.trying will never arrive.\n if (this.pendingOutbound && (msg.req_id === this.pendingOutbound.reqId || err.fatal)) {\n // reject() clears the timer and nulls pendingOutbound/pendingCall.\n this.pendingOutbound.reject(err);\n }\n this.emit('error', err);\n return;\n }\n case 'call.trying': {\n // call.trying is the direct reply to the call-creating frame\n // (call.create or the consult step of call.transfer.attended) and\n // echoes its req_id.\n if (this.pendingOutbound && msg.req_id === this.pendingOutbound.reqId && this.pendingCall) {\n const placed = this.pendingCall;\n placed.id = msg.call_id;\n // resolve() clears the timer and nulls pendingOutbound/pendingCall.\n this.pendingOutbound.resolve(placed);\n placed.handleServerMessage(msg);\n }\n else {\n this.getCall(msg.call_id)?.handleServerMessage(msg);\n }\n return;\n }\n case 'call.incoming': {\n this.handleIncoming(msg);\n return;\n }\n case 'call.restored': {\n // Not yet implemented. Surface a non-fatal error so consumers know.\n this.emit('error', new PhoneError({\n code: 'internal_error',\n message: 'call.restored received but reconnect/restore is not yet implemented',\n callId: msg.call_id,\n }));\n return;\n }\n case 'sdp.offer': {\n const call = this.getCall(msg.call_id);\n // Surface non-mic prepare failures (e.g. createAnswer error) via the\n // error event — otherwise the rejection is unhandled. The mic-permission\n // failure is owned by handleIncoming (whenLocalMediaReady().catch) and\n // is swallowed inside prepareAnswerForOffer, so it is not double-emitted\n // here.\n if (call) {\n void call.prepareAnswerForOffer(msg.sdp).catch((e) => this.emit('error', new PhoneError({\n code: 'call_failed',\n message: `Failed to prepare answer for incoming call: ${e.message}`,\n callId: msg.call_id,\n })));\n }\n return;\n }\n case 'sdp.pranswer': {\n // Network early media (carrier 183): apply it as a provisional answer\n // so audio plays during ringing. The final sdp.answer replaces it at\n // pickup. Opaque to the app — no separate event.\n //\n // A provisional answer is an enhancement, never a precondition: the call\n // proceeds on the 200 OK's sdp.answer whether or not this lands. So a\n // failure here must NOT surface as 'call_failed' — that painted a \"Call\n // failed\" chip over a call that was connecting normally (every Firefox\n // outbound call hit it). Log it and let the call run;\n // acceptRemoteProvisionalAnswer already reports an unsupported stack once.\n const call = this.getCall(msg.call_id);\n if (call) {\n void call.acceptRemoteProvisionalAnswer(msg.sdp).catch((e) => logWarn('Failed to apply provisional answer; continuing without early media', {\n callId: msg.call_id,\n error: e.message,\n }));\n }\n return;\n }\n case 'sdp.answer': {\n const call = this.getCall(msg.call_id);\n if (call) {\n // Surface a failed setRemoteDescription(answer) instead of a silent\n // unhandled rejection — the browser may reject or ICE-restart on a\n // final answer that's incompatible with the applied provisional.\n void call.acceptRemoteAnswer(msg.sdp).catch((e) => this.emit('error', new PhoneError({\n code: 'call_failed',\n message: `Failed to apply answer: ${e.message}`,\n callId: msg.call_id,\n })));\n }\n return;\n }\n case 'ice.candidate': {\n const call = this.getCall(msg.call_id);\n if (call)\n void call.addRemoteCandidate(msg.candidate, msg.sdp_mid, msg.sdp_m_line_index);\n return;\n }\n case 'ice.done':\n return;\n case 'call.ringing':\n case 'call.answered':\n case 'call.held':\n case 'call.resumed':\n case 'call.ended': {\n const call = this.getCall(msg.call_id);\n if (!call)\n return;\n call.handleServerMessage(msg);\n if (msg.type === 'call.ended') {\n const idx = this.activeCalls.indexOf(call);\n if (idx >= 0)\n this.activeCalls.splice(idx, 1);\n }\n return;\n }\n case 'presence.list': {\n this.emit('presenceList', msg.users.map((u) => ({\n userId: u.user_id,\n name: u.name,\n status: u.status,\n doNotDisturb: u.do_not_disturb ?? false,\n statusText: u.status_text ?? null,\n updatedAt: u.updated_at,\n })));\n return;\n }\n case 'presence.update': {\n this.emit('presenceUpdate', {\n userId: msg.user_id,\n name: msg.name,\n status: msg.status,\n doNotDisturb: msg.do_not_disturb ?? false,\n statusText: msg.status_text ?? null,\n updatedAt: msg.updated_at,\n });\n return;\n }\n default:\n return;\n }\n }\n handleIncoming(msg) {\n const call = new Call({\n id: msg.call_id,\n direction: 'inbound',\n from: msg.from,\n fromName: msg.from_name,\n to: msg.to,\n initialState: 'ringing',\n transport: this.transport,\n iceServers: this.iceServers,\n startConsult: (p, d) => this.startConsult(p, d),\n ringback: this.ringback ?? undefined,\n audioInputDeviceId: this.audioInputDeviceId_ ?? undefined,\n audioOutputDeviceId: this.audioOutputDeviceId_ ?? undefined,\n });\n // Register the Call synchronously so the sdp.offer + ICE the server sends\n // immediately after call.incoming are routed to it, not dropped via\n // getCall() → undefined while the mic permission prompt is open. The Call\n // acquires the mic itself and gates answer creation on it.\n this.activeCalls.push(call);\n this.emit('incoming', call);\n call.whenLocalMediaReady().catch((e) => {\n this.emit('error', new PhoneError({\n code: 'call_failed',\n message: `Microphone unavailable for incoming call: ${e.message}`,\n callId: msg.call_id,\n }));\n });\n }\n emit(event, ...args) {\n this.listeners[event]?.forEach((h) => {\n h(...args);\n });\n }\n}\n// Resolves the WebSocket signaling URL the phone connects to.\n//\n// Precedence: a non-empty `signalingBaseUrl` wins; otherwise the default is\n// derived from `apiBaseUrl` by swapping the leading `api.` host label for\n// `webrtc.` (the signaling host is a separate, region-aware hostname). Hosts\n// that don't start with `api.` (self-host, proxies) are left unchanged. The\n// base is upgraded http(s)→ws(s) (case-insensitive) and gets the `/v1/webrtc`\n// path appended if it isn't already present.\n//\n// `||` (not `??`) so an explicit empty string falls back to the derived\n// default rather than producing a scheme-less relative URL.\nexport function resolveSignalingUrl(signalingBaseUrl, apiBaseUrl) {\n const base = signalingBaseUrl || deriveDefaultSignalingBaseUrl(apiBaseUrl);\n // Normalize the scheme token case-insensitively: http(s)->ws(s), lowercased.\n // (A naive /^http/i would turn \"HTTPS://\" into the invalid \"wsS://\".)\n let url = base\n .replace(/^(https?|wss?):/i, (m) => {\n const s = m.toLowerCase();\n return s === 'http:' ? 'ws:' : s === 'https:' ? 'wss:' : s;\n })\n .replace(/\\/+$/, '');\n if (!url.endsWith('/v1/webrtc'))\n url += '/v1/webrtc';\n return url;\n}\nfunction deriveDefaultSignalingBaseUrl(apiBaseUrl) {\n try {\n const u = new URL(apiBaseUrl);\n if (u.hostname.startsWith('api.')) {\n u.hostname = 'webrtc.' + u.hostname.slice('api.'.length);\n }\n // Preserve any path prefix (e.g. a proxied `https://gw.example.com/api`)\n // so the WS path matches where REST calls go; `.origin` would drop it.\n // Trailing slashes are trimmed by resolveSignalingUrl.\n return `${u.protocol}//${u.host}${u.pathname}`;\n }\n catch {\n // Not a parseable absolute URL (e.g. a relative base in a test harness) —\n // fall back to the raw value; resolveSignalingUrl still normalises it.\n return apiBaseUrl;\n }\n}\n// Unverified base64url decode of a JWT's payload segment. Deliberately does NOT\n// verify the signature: the SDK never trusts these claims (the server verifies\n// the token independently), it only reads them for local bookkeeping —\n// namespacing localStorage by `sub`, and scheduling a refresh off `exp`. Returns\n// null for any token that isn't a decodable three-part JWT.\nfunction decodeJwtPayload(token) {\n try {\n const payload = token.split('.')[1];\n if (!payload)\n return null;\n const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));\n const parsed = JSON.parse(json);\n return typeof parsed === 'object' && parsed !== null\n ? parsed\n : null;\n }\n catch {\n return null;\n }\n}\n// decodeTokenClaims decodes both claims the SDK reads (`sub` → user id for the\n// localStorage namespace, `exp` → refresh scheduling) in a SINGLE unverified\n// payload decode, so adopting a token doesn't decode it twice. Each claim is null\n// when absent/ill-typed; callers treat a null `userId` as \"persistence disabled\"\n// and a null `exp` as \"can't schedule a refresh\".\nfunction decodeTokenClaims(token) {\n const payload = decodeJwtPayload(token);\n const sub = payload?.sub;\n const exp = payload?.exp;\n return {\n userId: typeof sub === 'string' && sub.startsWith('user_') ? sub : null,\n exp: typeof exp === 'number' && Number.isFinite(exp) ? exp : null,\n };\n}\nfunction userIdFromToken(token) {\n return decodeTokenClaims(token).userId;\n}\n// Persistence helpers for the emergency-address id, namespaced per user so\n// shared browsers don't leak one user's saved address into another's session.\n// Backed by the platform storage shim (localStorage on web, AsyncStorage-backed\n// cache on native), which is itself guarded so the SDK works in non-browser\n// hosts where storage is absent — there (or when the token can't be decoded)\n// the id must be supplied via PhoneOptions.emergencyAddressId.\nfunction loadStoredId(storage, userId, prefix) {\n if (!userId)\n return null;\n return storage.getItem(prefix + userId);\n}\nfunction persistId(storage, userId, prefix, id) {\n if (!userId)\n return;\n const key = prefix + userId;\n if (id)\n storage.setItem(key, id);\n else\n storage.removeItem(key);\n}\n//# sourceMappingURL=phone.js.map",null,null,null,null,null,null,null,null,null,null,null,"import{AsYouType as e,parsePhoneNumberFromString as t}from\"libphonenumber-js\";function i(e,t,i,o){return new(i||(i=Promise))(function(n,s){function r(e){try{l(o.next(e))}catch(e){s(e)}}function a(e){try{l(o.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(r,a)}l((o=o.apply(e,t||[])).next())})}\"function\"==typeof SuppressedError&&SuppressedError;const o=[\"user\",\"dial_plan\",\"voice_app\",\"ring_group\",\"queue\",\"shared_voicemail\"];function n(e){return\"deskphone\"===e.type}function s(e){return\"dect_base\"===e.type}class r extends Error{constructor(e,t,i,o){super(e),this.status=t,this.code=i,this.details=o,this.name=\"ApiError\"}}function a(e){return\"object\"==typeof e&&null!==e&&\"ApiError\"===e.name&&\"number\"==typeof e.status}function l(e,t){return i(this,void 0,void 0,function*(){const i=yield e.text();if(!i)return{message:t};try{const e=JSON.parse(i),o=\"string\"==typeof(null==e?void 0:e.error)&&e.error?e.error:`${t} ${i}`,n=\"string\"==typeof(null==e?void 0:e.code)&&e.code?e.code:void 0;return{message:o,code:n,details:\"object\"!=typeof(null==e?void 0:e.details)||null===e.details||Array.isArray(e.details)?void 0:e.details}}catch(e){return{message:`${t} ${i}`}}})}const d=36e5,c={user:{path:\"/v1/users\",type:\"user\"},dp:{path:\"/v1/dialplans\",type:\"dial_plan\"},va:{path:\"/v1/voice-apps\",type:\"voice_app\"},rg:{path:\"/v1/ring_groups\",type:\"ring_group\"},qu:{path:\"/v1/queues\",type:\"queue\"},svm:{path:\"/v1/shared_voicemail_boxes\",type:\"shared_voicemail\"}};class u{constructor(e){if(this.sessionData=null,this.sessionPromise=null,this.cachedAccountId=null,this.refreshTimeoutId=null,this.components=new Set,this.eventListeners=new Map,this.eventStreamController=null,this.reconnectTimeoutId=null,this.routingTargetCache=new Map,this.reconnectAttempts=0,this.authStreamFailures=0,this.calls={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/calls\",{method:\"POST\",body:JSON.stringify({user_id:e.userId,dial_string:e.dialString})});if(!t.ok){const e=yield t.text();throw new Error(`Failed to initiate call: ${t.status} ${e}`)}}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/calls/${e}`);if(!t.ok){const e=yield t.text();throw new r(`Failed to get call log: ${t.status} ${e}`,t.status)}return t.json()}),transcripts:{retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/calls/${e}/transcript`);if(!t.ok){const e=yield t.text();throw new r(`Failed to get transcript: ${t.status} ${e}`,t.status)}return t.json()})}},this.voicemails={retrieveTranscript:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/voicemails/${e}/transcript`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get voicemail transcript: ${t.status} ${e}`)}return t.json()}),markAsRead:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/voicemails/${e}`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({is_read:!0})});if(!t.ok){const e=yield t.text();throw new Error(`Failed to mark voicemail as read: ${t.status} ${e}`)}}),delete:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/voicemails/${e}`,{method:\"DELETE\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to delete voicemail: ${t.status} ${e}`)}})},this.phoneNumbers={retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/phone-numbers/${e}`);if(!t.ok){const e=yield t.text();throw new r(`Failed to get phone number: ${t.status} ${e}`,t.status)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){const t=new URLSearchParams;(null==e?void 0:e.limit)&&t.set(\"limit\",String(e.limit)),(null==e?void 0:e.status)&&t.set(\"status\",e.status);const i=t.toString(),o=i?`/v1/phone-numbers?${i}`:\"/v1/phone-numbers\",n=yield this.fetchApi(o);if(!n.ok){const e=yield n.text();throw new Error(`Failed to list phone numbers: ${n.status} ${e}`)}return n.json()}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/phone-numbers/${e}`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new r(`Failed to update phone number: ${i.status} ${e}`,i.status)}return i.json()}),updateRoute:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/phone-numbers/${e}/route`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({routing_target:t})});if(!i.ok){const e=yield i.text();throw new r(`Failed to update routing target: ${i.status} ${e}`,i.status)}return i.json()}),retrieveSmsPortOut:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/phone-numbers/${e}/sms-port-out`);if(!t.ok){const e=yield t.text();throw new r(`Failed to get SMS port-out window: ${t.status} ${e}`,t.status)}return t.json()}),updateSmsPortOut:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/phone-numbers/${e}/sms-port-out`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new r(`Failed to update SMS port-out window: ${i.status} ${e}`,i.status)}return i.json()})},this.availablePhoneNumbers={search:e=>i(this,void 0,void 0,function*(){const t=new URLSearchParams;e.areaCode&&t.set(\"area_code\",e.areaCode),e.zip&&t.set(\"zip\",e.zip),e.quantity&&t.set(\"quantity\",String(e.quantity));const i=yield this.fetchApi(`/v1/available-phone-numbers?${t}`);if(!i.ok){const e=yield i.text();let t=`Failed to search available numbers: ${i.status} ${e}`;try{const i=JSON.parse(e);\"string\"==typeof(null==i?void 0:i.error)&&i.error&&(t=i.error)}catch(e){}throw new Error(t)}return(yield i.json()).data})},this.phoneNumberOrders={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/phone-number-orders\",{method:\"POST\",body:JSON.stringify({phone_numbers:e})});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create phone number order: ${t.status} ${e}`)}return t.json()}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/phone-number-orders/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get phone number order: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){const t=new URLSearchParams;(null==e?void 0:e.limit)&&t.set(\"limit\",String(e.limit)),(null==e?void 0:e.status)&&t.set(\"status\",e.status),(null==e?void 0:e.order_type)&&t.set(\"order_type\",e.order_type);const i=t.toString(),o=i?`/v1/phone-number-orders?${i}`:\"/v1/phone-number-orders\",n=yield this.fetchApi(o);if(!n.ok){const e=yield n.text();throw new Error(`Failed to list number orders: ${n.status} ${e}`)}return n.json()})},this.portOrders={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/port-orders\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const{message:e,code:i,details:o}=yield l(t,`Failed to create port order: ${t.status}`);throw new r(e,t.status,i,o)}return t.json()}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/port-orders/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get port order: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){const t=new URLSearchParams;(null==e?void 0:e.limit)&&t.set(\"limit\",String(e.limit)),(null==e?void 0:e.status)&&t.set(\"status\",e.status);const i=t.toString(),o=i?`/v1/port-orders?${i}`:\"/v1/port-orders\",n=yield this.fetchApi(o);if(!n.ok){const e=yield n.text();throw new Error(`Failed to list port orders: ${n.status} ${e}`)}return n.json()}),approve:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/port-orders/${e}/approve`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to approve port order: ${i.status} ${e}`)}return i.json()}),submit:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/port-orders/${e}/submit`,{method:\"POST\"});if(!t.ok){const{message:e,code:i,details:o}=yield l(t,`Failed to submit port order: ${t.status}`);throw new r(e,t.status,i,o)}return t.json()}),cancel:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/port-orders/${e}/cancel`,{method:\"POST\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to cancel port order: ${t.status} ${e}`)}return t.json()}),checkEligibility:e=>i(this,void 0,void 0,function*(){var t,i;const o=yield this.fetchApi(\"/v1/port-in-eligibility\",{method:\"POST\",body:JSON.stringify({phone_numbers:e})});if(!o.ok){const e=yield o.text();throw new Error(`Failed to check port eligibility: ${o.status} ${e}`)}const n=yield o.json();return Object.assign(Object.assign({},n),{portable_numbers:null!==(t=n.portable_numbers)&&void 0!==t?t:[],non_portable_numbers:null!==(i=n.non_portable_numbers)&&void 0!==i?i:[]})}),uploadCSR:(e,t)=>i(this,void 0,void 0,function*(){const i=new FormData;i.append(\"file\",t);const o=yield this.fetchApi(`/v1/port-orders/${e}/csr`,{method:\"POST\",body:i});if(!o.ok){const e=yield o.text();throw new Error(`Failed to upload CSR: ${o.status} ${e}`)}}),uploadBillCopy:(e,t)=>i(this,void 0,void 0,function*(){const i=new FormData;i.append(\"file\",t);const o=yield this.fetchApi(`/v1/port-orders/${e}/bill-copy`,{method:\"POST\",body:i});if(!o.ok){const e=yield o.text();throw new Error(`Failed to upload bill copy: ${o.status} ${e}`)}}),downloadCSR:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/port-orders/${e}/csr`,{method:\"GET\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to download CSR: ${t.status} ${e}`)}return t.blob()}),downloadBillCopy:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/port-orders/${e}/bill-copy`,{method:\"GET\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to download bill copy: ${t.status} ${e}`)}return t.blob()})},this.audioClips={list:()=>i(this,void 0,void 0,function*(){var e;const t=yield this.fetchApi(\"/v1/audio_clips\");if(!t.ok){const e=yield t.text();throw new Error(`Failed to list audio clips: ${t.status} ${e}`)}return(null!==(e=(yield t.json()).data)&&void 0!==e?e:[]).map(e=>({id:e.id,name:e.name}))})},this.dialPlans={retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/dialplans/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get dial plan: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;(null==e?void 0:e.limit)&&o.set(\"limit\",String(e.limit));for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=n?`/v1/dialplans?${n}`:\"/v1/dialplans\",r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list dial plans: ${r.status} ${e}`)}return(null!==(i=(yield r.json()).data)&&void 0!==i?i:[]).map(e=>{var t,i,o;return{id:e.id,name:e.name,extension_number:null===(o=null===(i=null===(t=e.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number}})}),create:e=>i(this,void 0,void 0,function*(){var t;const i=yield this.fetchApi(\"/v1/dialplans\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e)});if(!i.ok){const e=yield i.json().catch(()=>({}));throw new Error(null!==(t=e.error)&&void 0!==t?t:`Failed to create dial plan: ${i.status}`)}return i.json()}),update:(e,t)=>i(this,void 0,void 0,function*(){var i;const o=yield this.fetchApi(`/v1/dialplans/${e}`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!o.ok){const e=yield o.json().catch(()=>({}));throw new Error(null!==(i=e.error)&&void 0!==i?i:`Failed to update dial plan: ${o.status}`)}return o.json()})},this.schedules={retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/schedules/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get schedule: ${t.status} ${e}`)}const i=yield t.json();return{id:i.id,name:i.name}}),list:e=>i(this,void 0,void 0,function*(){var t;const i=new URLSearchParams;(null==e?void 0:e.limit)&&i.set(\"limit\",String(e.limit));const o=i.toString(),n=o?`/v1/schedules?${o}`:\"/v1/schedules\",s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list schedules: ${s.status} ${e}`)}return(null!==(t=(yield s.json()).data)&&void 0!==t?t:[]).map(e=>({id:e.id,name:e.name}))})},this.ringGroups={list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;(null==e?void 0:e.limit)&&o.set(\"limit\",String(e.limit));for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=n?`/v1/ring_groups?${n}`:\"/v1/ring_groups\",r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list ring groups: ${r.status} ${e}`)}return(null!==(i=(yield r.json()).data)&&void 0!==i?i:[]).map(e=>{var t,i,o;return{id:e.id,name:e.name,extension_number:null===(o=null===(i=null===(t=e.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number}})})},this.queues={list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;(null==e?void 0:e.limit)&&o.set(\"limit\",String(e.limit));for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=n?`/v1/queues?${n}`:\"/v1/queues\",r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list queues: ${r.status} ${e}`)}return(null!==(i=(yield r.json()).data)&&void 0!==i?i:[]).map(e=>{var t,i,o;return{id:e.id,name:e.name,extension_number:null===(o=null===(i=null===(t=e.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number}})})},this.voiceApps={list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;(null==e?void 0:e.limit)&&o.set(\"limit\",String(e.limit));for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=n?`/v1/voice-apps?${n}`:\"/v1/voice-apps\",r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list voice apps: ${r.status} ${e}`)}return(null!==(i=(yield r.json()).data)&&void 0!==i?i:[]).map(e=>{var t,i,o;return{id:e.id,name:e.name,extension_number:null===(o=null===(i=null===(t=e.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number}})})},this.aiAgents={list:e=>i(this,void 0,void 0,function*(){var t;const i=new URLSearchParams;(null==e?void 0:e.limit)&&i.set(\"limit\",String(e.limit));const o=i.toString(),n=o?`/v1/ai-agents?${o}`:\"/v1/ai-agents\",s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new r(`Failed to list AI agents: ${s.status} ${e}`,s.status)}return null!==(t=(yield s.json()).data)&&void 0!==t?t:[]}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/ai-agents/${e}`);if(!t.ok){const e=yield t.text();throw new r(`Failed to get AI agent: ${t.status} ${e}`,t.status)}return t.json()}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/ai-agents/${e}`,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new r(`Failed to update AI agent: ${i.status} ${e}`,i.status)}return i.json()})},this.sharedVoicemailBoxes={list:e=>i(this,void 0,void 0,function*(){var t;const i=new URLSearchParams;(null==e?void 0:e.limit)&&i.set(\"limit\",String(e.limit));const o=i.toString(),n=o?`/v1/shared_voicemail_boxes?${o}`:\"/v1/shared_voicemail_boxes\",s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list shared voicemail boxes: ${s.status} ${e}`)}return(null!==(t=(yield s.json()).data)&&void 0!==t?t:[]).map(e=>({id:e.id,name:e.name}))})},this.extensions={list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;o.set(\"limit\",String(null!==(t=null==e?void 0:e.limit)&&void 0!==t?t:100)),(null==e?void 0:e.target)&&o.set(\"target\",e.target);const n=`/v1/extensions?${o.toString()}`,s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list extensions: ${s.status} ${e}`)}return null!==(i=(yield s.json()).data)&&void 0!==i?i:[]}),create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/extensions\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create extension: ${t.status} ${e}`)}return t.json()})},this.deskphones={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/deskphones\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create deskphone: ${t.status} ${e}`)}return t.json()}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/deskphones/${e}`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update deskphone: ${i.status} ${e}`)}return i.json()}),del:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/deskphones/${e}`,{method:\"DELETE\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to delete deskphone: ${t.status} ${e}`)}}),lines:{create:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/deskphones/${e}/lines`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to create deskphone line: ${i.status} ${e}`)}return i.json()}),list:e=>i(this,void 0,void 0,function*(){var t;const i=yield this.fetchApi(`/v1/deskphones/${e}/lines`);if(!i.ok){const e=yield i.text();throw new Error(`Failed to list deskphone lines: ${i.status} ${e}`)}return null!==(t=(yield i.json()).data)&&void 0!==t?t:[]}),update:(e,t,o)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/deskphones/${e}/lines/${t}`,{method:\"POST\",body:JSON.stringify(o)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update deskphone line: ${i.status} ${e}`)}return i.json()}),del:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/deskphones/${e}/lines/${t}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to delete deskphone line: ${i.status} ${e}`)}})},provisioningEvents:{list:(e,t)=>i(this,void 0,void 0,function*(){var i;const o=new URLSearchParams;(null==t?void 0:t.limit)&&o.set(\"limit\",t.limit.toString()),(null==t?void 0:t.from)&&o.set(\"from\",t.from),(null==t?void 0:t.to)&&o.set(\"to\",t.to);const n=o.toString(),s=n?`/v1/deskphones/${e}/events?${n}`:`/v1/deskphones/${e}/events`,r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list provisioning events: ${r.status} ${e}`)}return null!==(i=(yield r.json()).data)&&void 0!==i?i:[]})}},this.devices={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/devices\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create device: ${t.status} ${e}`)}return t.json()}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/devices/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get device: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){var t,i;const o=new URLSearchParams;(null==e?void 0:e.limit)&&o.set(\"limit\",e.limit.toString()),(null==e?void 0:e.type)&&o.set(\"type\",e.type);for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=n?`/v1/devices?${n}`:\"/v1/devices\",r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list devices: ${r.status} ${e}`)}return null!==(i=(yield r.json()).data)&&void 0!==i?i:[]}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/devices/${e}`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update device: ${i.status} ${e}`)}return i.json()}),listButtons:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/devices/${e}/buttons`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to list device buttons: ${t.status} ${e}`)}return t.json()}),listCompatibleButtonTemplates:(e,t)=>i(this,void 0,void 0,function*(){const i=new URLSearchParams;(null==t?void 0:t.limit)&&i.set(\"limit\",t.limit.toString()),(null==t?void 0:t.starting_after)&&i.set(\"starting_after\",t.starting_after),(null==t?void 0:t.ending_before)&&i.set(\"ending_before\",t.ending_before);const o=i.toString(),n=o?`/v1/devices/${e}/compatible_button_templates?${o}`:`/v1/devices/${e}/compatible_button_templates`,s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list compatible button templates: ${s.status} ${e}`)}return s.json()}),listButtonOverrides:(e,t)=>i(this,void 0,void 0,function*(){const i=new URLSearchParams;(null==t?void 0:t.limit)&&i.set(\"limit\",t.limit.toString()),(null==t?void 0:t.starting_after)&&i.set(\"starting_after\",t.starting_after),(null==t?void 0:t.ending_before)&&i.set(\"ending_before\",t.ending_before);const o=i.toString(),n=o?`/v1/devices/${e}/button_overrides?${o}`:`/v1/devices/${e}/button_overrides`,s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list device button overrides: ${s.status} ${e}`)}return s.json()}),createButtonOverride:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/devices/${e}/button_overrides`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to create device button override: ${i.status} ${e}`)}return i.json()}),deleteButtonOverride:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/devices/${e}/button_overrides/${t}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to delete device button override: ${i.status} ${e}`)}}),users:{create:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/devices/${e}/users`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to assign user to device: ${i.status} ${e}`)}return i.json()}),list:e=>i(this,void 0,void 0,function*(){var t;const i=yield this.fetchApi(`/v1/devices/${e}/users`);if(!i.ok){const e=yield i.text();throw new Error(`Failed to list device users: ${i.status} ${e}`)}return null!==(t=(yield i.json()).data)&&void 0!==t?t:[]}),del:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/devices/${e}/users/${t}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to remove user from device: ${i.status} ${e}`)}})}},this.buttonTemplates={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/button_templates\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create button template: ${t.status} ${e}`)}return t.json()}),retrieve:(e,t)=>i(this,void 0,void 0,function*(){var i;const o=new URLSearchParams;(null==t?void 0:t.for_device)&&o.set(\"for_device\",t.for_device);for(const e of null!==(i=null==t?void 0:t.expand)&&void 0!==i?i:[])o.append(\"expand[]\",e);const n=o.toString(),s=n?`/v1/button_templates/${e}?${n}`:`/v1/button_templates/${e}`,r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to get button template: ${r.status} ${e}`)}return r.json()}),list:e=>i(this,void 0,void 0,function*(){const t=new URLSearchParams;(null==e?void 0:e.limit)&&t.set(\"limit\",e.limit.toString()),(null==e?void 0:e.starting_after)&&t.set(\"starting_after\",e.starting_after),(null==e?void 0:e.ending_before)&&t.set(\"ending_before\",e.ending_before);const i=t.toString(),o=i?`/v1/button_templates?${i}`:\"/v1/button_templates\",n=yield this.fetchApi(o);if(!n.ok){const e=yield n.text();throw new Error(`Failed to list button templates: ${n.status} ${e}`)}return n.json()}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/button_templates/${e}`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update button template: ${i.status} ${e}`)}return i.json()}),del:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/button_templates/${e}`,{method:\"DELETE\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to delete button template: ${t.status} ${e}`)}}),buttons:{list:(e,t)=>i(this,void 0,void 0,function*(){const i=new URLSearchParams;(null==t?void 0:t.limit)&&i.set(\"limit\",t.limit.toString()),(null==t?void 0:t.starting_after)&&i.set(\"starting_after\",t.starting_after),(null==t?void 0:t.ending_before)&&i.set(\"ending_before\",t.ending_before);const o=i.toString(),n=o?`/v1/button_templates/${e}/buttons?${o}`:`/v1/button_templates/${e}/buttons`,s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list template buttons: ${s.status} ${e}`)}return s.json()}),create:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/button_templates/${e}/buttons`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to create template button: ${i.status} ${e}`)}return i.json()}),update:(e,t,o)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/button_templates/${e}/buttons/${t}`,{method:\"POST\",body:JSON.stringify(o)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update template button: ${i.status} ${e}`)}return i.json()}),del:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/button_templates/${e}/buttons/${t}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to delete template button: ${i.status} ${e}`)}})}},this.dectBases={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/dect-bases\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create DECT base: ${t.status} ${e}`)}return t.json()}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/dect-bases/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get DECT base: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){var t;const i=new URLSearchParams;(null==e?void 0:e.limit)&&i.set(\"limit\",e.limit.toString());const o=i.toString(),n=o?`/v1/dect-bases?${o}`:\"/v1/dect-bases\",s=yield this.fetchApi(n);if(!s.ok){const e=yield s.text();throw new Error(`Failed to list DECT bases: ${s.status} ${e}`)}return null!==(t=(yield s.json()).data)&&void 0!==t?t:[]}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update DECT base: ${i.status} ${e}`)}return i.json()}),del:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/dect-bases/${e}`,{method:\"DELETE\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to delete DECT base: ${t.status} ${e}`)}}),handsets:{create:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to create DECT handset: ${i.status} ${e}`)}return i.json()}),retrieve:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}`);if(!i.ok){const e=yield i.text();throw new Error(`Failed to get DECT handset: ${i.status} ${e}`)}return i.json()}),list:e=>i(this,void 0,void 0,function*(){var t;const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets`);if(!i.ok){const e=yield i.text();throw new Error(`Failed to list DECT handsets: ${i.status} ${e}`)}return null!==(t=(yield i.json()).data)&&void 0!==t?t:[]}),update:(e,t,o)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}`,{method:\"POST\",body:JSON.stringify(o)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update DECT handset: ${i.status} ${e}`)}return i.json()}),del:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to delete DECT handset: ${i.status} ${e}`)}})},extensions:{create:(e,t,o)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}/extensions`,{method:\"POST\",body:JSON.stringify(o)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to create DECT extension: ${i.status} ${e}`)}return i.json()}),list:(e,t)=>i(this,void 0,void 0,function*(){var i;const o=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}/extensions`);if(!o.ok){const e=yield o.text();throw new Error(`Failed to list DECT extensions: ${o.status} ${e}`)}return null!==(i=(yield o.json()).data)&&void 0!==i?i:[]}),del:(e,t,o)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/dect-bases/${e}/handsets/${t}/extensions/${o}`,{method:\"DELETE\"});if(!i.ok){const e=yield i.text();throw new Error(`Failed to delete DECT extension: ${i.status} ${e}`)}})}},this.account={retrieve:()=>i(this,void 0,void 0,function*(){const e=yield this.getAccountId(),t=yield this.fetchApi(`/v1/accounts/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get account: ${t.status} ${e}`)}return t.json()}),update:e=>i(this,void 0,void 0,function*(){const t=yield this.getAccountId(),i=yield this.fetchApi(`/v1/accounts/${t}`,{method:\"POST\",body:JSON.stringify(e)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update account: ${i.status} ${e}`)}return i.json()}),effectivePricing:{retrieve:()=>i(this,void 0,void 0,function*(){const e=yield this.getAccountId(),t=yield this.fetchApi(`/v1/accounts/${e}/effective-pricing`);if(!t.ok){const{message:e,code:i,details:o}=yield l(t,\"Failed to get effective pricing:\");throw new r(e,t.status,i,o)}return t.json()})},tos:{retrieve:e=>i(this,void 0,void 0,function*(){var t;const i=yield this.getAccountId(),o=new URLSearchParams;for(const i of null!==(t=null==e?void 0:e.expand)&&void 0!==t?t:[])o.append(\"expand[]\",i);const n=o.toString(),s=`/v1/accounts/${i}/tos${n?`?${n}`:\"\"}`,a=yield this.fetchApi(s);if(!a.ok){const{message:e,code:t,details:i}=yield l(a,\"Failed to get subscription agreement:\");throw new r(e,a.status,t,i)}return a.json()}),accept:e=>i(this,void 0,void 0,function*(){const t=yield this.getAccountId(),i=yield this.fetchApi(`/v1/accounts/${t}/tos`,{method:\"POST\",body:JSON.stringify({version:e})});if(!i.ok){const{message:e,code:t,details:o}=yield l(i,\"Failed to accept subscription agreement:\");throw new r(e,i.status,t,o)}return i.json()})}},this.users={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/users\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){if(409===t.status)throw new Error(\"A user with this email already exists\");const e=yield t.text();throw new Error(`Failed to create user: ${t.status} ${e}`)}return t.json()}),list:e=>i(this,void 0,void 0,function*(){var t,i,o;const n=new URLSearchParams;n.set(\"limit\",String(null!==(t=null==e?void 0:e.limit)&&void 0!==t?t:100));for(const t of null!==(i=null==e?void 0:e.expand)&&void 0!==i?i:[])n.append(\"expand[]\",t);const s=`/v1/users?${n.toString()}`,r=yield this.fetchApi(s);if(!r.ok){const e=yield r.text();throw new Error(`Failed to list users: ${r.status} ${e}`)}return null!==(o=(yield r.json()).data)&&void 0!==o?o:[]}),del:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/users/${e}`,{method:\"DELETE\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to delete user: ${t.status} ${e}`)}})},this.locations={create:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(\"/v1/locations\",{method:\"POST\",body:JSON.stringify(e)});if(!t.ok){const e=yield t.text();throw new Error(`Failed to create location: ${t.status} ${e}`)}return t.json()}),retrieve:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/locations/${e}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get location: ${t.status} ${e}`)}return t.json()}),list:()=>i(this,void 0,void 0,function*(){var e;const t=yield this.fetchApi(\"/v1/locations?limit=100\");if(!t.ok){const e=yield t.text();throw new Error(`Failed to list locations: ${t.status} ${e}`)}return null!==(e=(yield t.json()).data)&&void 0!==e?e:[]}),update:(e,t)=>i(this,void 0,void 0,function*(){const i=yield this.fetchApi(`/v1/locations/${e}`,{method:\"POST\",body:JSON.stringify(t)});if(!i.ok){const e=yield i.text();throw new Error(`Failed to update location: ${i.status} ${e}`)}return i.json()}),validateE911:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/locations/${e}/validate-e911`,{method:\"POST\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to validate E911 address: ${t.status} ${e}`)}return t.json()}),provisionE911:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchApi(`/v1/locations/${e}/provision-e911`,{method:\"POST\"});if(!t.ok){const e=yield t.text();throw new Error(`Failed to provision E911: ${t.status} ${e}`)}return t.json()})},this.addresses={suggest:(e,t)=>i(this,void 0,void 0,function*(){const i=new URLSearchParams({query:e});t&&i.set(\"country\",t);const o=yield this.fetchBffApi(`/bff/v1/address-suggestions?${i}`);if(!o.ok){const e=yield o.text();throw new Error(`Failed to suggest addresses: ${o.status} ${e}`)}return(yield o.json()).suggestions}),getPlaceDetails:e=>i(this,void 0,void 0,function*(){const t=yield this.fetchBffApi(`/bff/v1/address-suggestions/${encodeURIComponent(e)}`);if(!t.ok){const e=yield t.text();throw new Error(`Failed to get place details: ${t.status} ${e}`)}return t.json()})},this.publishableKey=e.publishableKey,this.livemode=e.publishableKey.startsWith(\"pk_live_\"),this.apiUrl=e.apiUrl||\"https://api.dialstack.ai\",this.fetchClientSecretFn=e.fetchClientSecret,this.appearance=e.appearance,!this.publishableKey)throw new Error(\"DialStack: publishableKey is required\");if(!this.publishableKey.startsWith(\"pk_live_\")&&!this.publishableKey.startsWith(\"pk_test_\"))throw new Error(\"DialStack: publishableKey must start with pk_live_ or pk_test_\")}startSession(){return i(this,void 0,void 0,function*(){yield this.refreshSession()})}parseClientSecretResponse(e){var t;if(\"string\"==typeof e)return{clientSecret:e,expiresAt:new Date(Date.now()+d),accountId:null};const i=e,o=null!==(t=i.clientSecret)&&void 0!==t?t:i.client_secret,n=\"string\"==typeof i.expiresAt?i.expiresAt:\"string\"==typeof i.expires_at?i.expires_at:void 0,s=\"string\"==typeof i.accountId?i.accountId:\"string\"==typeof i.account_id?i.account_id:void 0;if(!o||\"string\"!=typeof o)throw new Error(\"DialStack: clientSecret must be a valid string\");let r;if(n?(r=new Date(n),isNaN(r.getTime())&&(console.warn(\"DialStack: Invalid expiresAt format, using default duration\"),r=new Date(Date.now()+d))):r=new Date(Date.now()+d),!(null==i.accountId&&null==i.account_id||s&&0!==s.trim().length))throw new Error(\"DialStack: accountId must be a non-empty string when provided\");return{clientSecret:o,expiresAt:r,accountId:s?s.trim():null}}calculateRefreshInterval(e){const t=Date.now(),i=e.getTime()-t-3e5;return Math.max(i,3e4)}refreshSession(){return i(this,void 0,void 0,function*(){try{const e=yield this.fetchClientSecretFn();if(!e)throw new Error(\"DialStack: fetchClientSecret must return a valid response\");const{clientSecret:t,expiresAt:i,accountId:o}=this.parseClientSecretResponse(e);this.sessionData={clientSecret:t,expiresAt:i,accountId:o},this.cachedAccountId=o;const n=this.calculateRefreshInterval(i);this.scheduleRefresh(n)}catch(e){console.error(\"DialStack: Failed to refresh session, retrying in 1 minute:\",e),this.scheduleRefresh(6e4)}})}scheduleRefresh(e){this.refreshTimeoutId&&clearTimeout(this.refreshTimeoutId),this.refreshTimeoutId=setTimeout(()=>{this.refreshSession()},e)}getClientSecret(){return i(this,void 0,void 0,function*(){if(this.sessionData)return this.sessionData.clientSecret;this.sessionPromise||(this.sessionPromise=this.startSession().then(()=>{if(!this.sessionData)throw new Error(\"DialStack: Failed to establish session\");return this.sessionData}));return(yield this.sessionPromise).clientSecret})}getAppearance(){return this.appearance}getAccountId(){return i(this,void 0,void 0,function*(){var e;if(this.cachedAccountId)return this.cachedAccountId;this.sessionData||(yield this.getClientSecret());const t=null===(e=this.sessionData)||void 0===e?void 0:e.accountId;if(!t)throw new Error(\"DialStack: accountId is required for account-scoped methods. Return { clientSecret, accountId } from fetchClientSecret.\");return this.cachedAccountId=t,t})}invalidateSession(){this.sessionData=null,this.sessionPromise=null}fetchApi(e){return i(this,arguments,void 0,function*(e,t={}){let i=yield this.sendApiRequest(e,t);return 401!==i.status&&403!==i.status||(this.invalidateSession(),i=yield this.sendApiRequest(e,t)),i})}sendApiRequest(e,t){return i(this,void 0,void 0,function*(){const i=yield this.getClientSecret(),o=new Headers(t.headers);return o.set(\"Authorization\",`Bearer ${i}`),t.body instanceof FormData||o.set(\"Content-Type\",\"application/json\"),fetch(`${this.apiUrl}${e}`,Object.assign(Object.assign({},t),{headers:o}))})}resolveRoutingTarget(e){return i(this,void 0,void 0,function*(){const t=this.routingTargetCache.get(e);if(t)return t;const i=this._fetchRoutingTarget(e);return this.routingTargetCache.set(e,i),i})}_fetchRoutingTarget(e){return i(this,void 0,void 0,function*(){var t,i,o,n,s;const r=c,a=e.lastIndexOf(\"_\");if(a<1)return null;const l=r[e.substring(0,a)];if(!l)return null;try{const r=yield this.fetchApi(`${l.path}/${e}?expand[]=extensions`);if(!r.ok)return null;const a=yield r.json(),d=null!==(n=null===(o=null===(i=null===(t=a.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number)&&void 0!==n?n:null;return{id:e,name:null!==(s=a.name)&&void 0!==s?s:null,type:l.type,extension_number:d}}catch(e){return null}})}routingTargets(){return i(this,void 0,void 0,function*(){const e=[{type:\"user\",list:()=>this.users.list({limit:100,expand:[\"extensions\"]}).then(e=>e.map(e=>{var t,i,o,n;return{id:e.id,name:e.name,extension_number:null!==(n=null===(o=null===(i=null===(t=e.extensions)||void 0===t?void 0:t.data)||void 0===i?void 0:i[0])||void 0===o?void 0:o.number)&&void 0!==n?n:null}}))},{type:\"dial_plan\",list:()=>this.dialPlans.list({limit:100,expand:[\"extensions\"]})},{type:\"voice_app\",list:()=>this.voiceApps.list({limit:100,expand:[\"extensions\"]})},{type:\"ring_group\",list:()=>this.ringGroups.list({limit:100,expand:[\"extensions\"]})},{type:\"queue\",list:()=>this.queues.list({limit:100,expand:[\"extensions\"]})},{type:\"shared_voicemail\",list:()=>this.sharedVoicemailBoxes.list({limit:100})}];return(yield Promise.all(e.map(e=>i(this,[e],void 0,function*({type:e,list:t}){try{return(yield t()).map(t=>{var i,o;return{id:t.id,name:null!==(i=t.name)&&void 0!==i?i:\"\",type:e,extension_number:null!==(o=t.extension_number)&&void 0!==o?o:null}})}catch(e){return[]}})))).flat()})}fetchAllPages(e){return i(this,void 0,void 0,function*(){const t=[];let i=0,o=yield e({limit:100});for(t.push(...o.data);o.next_page_url&&++i<100;){const e=yield this.fetchApi(o.next_page_url);if(!e.ok)break;o=yield e.json(),t.push(...o.data)}return t})}create(e){const t=`dialstack-${e}`,i=document.createElement(t);return\"setInstance\"in i&&\"function\"==typeof i.setInstance&&this.getClientSecret().then(()=>{i.setInstance(this)}),this.components.add(i),i}addAppearanceTarget(e){this.components.add(e)}removeAppearanceTarget(e){this.components.delete(e)}update(e){this.appearance=e.appearance,this.components.forEach(e=>{e.dispatchEvent(new CustomEvent(\"dialstack-appearance-update\",{detail:{appearance:this.appearance}}))})}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e).add(t),this.eventStreamController||this.connectEventStream()}off(e,t){const i=this.eventListeners.get(e);i&&(t?i.delete(t):i.clear(),this.hasNoListeners()&&this.disconnectEventStream())}hasNoListeners(){for(const e of this.eventListeners.values())if(e.size>0)return!1;return!0}emit(e,t){const i=this.eventListeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(t){console.error(`DialStack: Error in ${e} handler:`,t)}})}connectEventStream(){return i(this,void 0,void 0,function*(){var e;this.reconnectTimeoutId&&(clearTimeout(this.reconnectTimeoutId),this.reconnectTimeoutId=null);try{const t=yield this.getClientSecret(),i=`${this.apiUrl}/v1/events`;this.eventStreamController=new AbortController;const o=yield fetch(i,{headers:{Authorization:`Bearer ${t}`,Accept:\"text/event-stream\"},signal:this.eventStreamController.signal});if(!o.ok){if(401===o.status||403===o.status)return void this.handleStreamAuthFailure(o.status);throw new Error(`SSE connection failed: ${o.status}`)}this.reconnectAttempts=0,this.authStreamFailures=0;const n=null===(e=o.body)||void 0===e?void 0:e.getReader();if(!n)throw new Error(\"No response body\");const s=new TextDecoder;let r=\"\",a=!1;for(;!a;){const e=yield n.read();a=e.done;const t=e.value;if(a){this.scheduleReconnect();continue}r+=s.decode(t,{stream:!0});const i=r.split(\"\\n\\n\");r=i.pop()||\"\";for(const e of i)this.parseAndEmitEvent(e)}}catch(e){if(e instanceof Error&&\"AbortError\"===e.name)return;console.error(\"DialStack: SSE connection error:\",e),this.scheduleReconnect()}})}parseAndEmitEvent(e){var t;const i=e.split(\"\\n\");let o=\"\",n=\"\";for(const e of i)e.startsWith(\"event: \")?o=e.slice(7):e.startsWith(\"data: \")&&(n=e.slice(6));if(\"call.incoming\"===o&&n)try{const e=JSON.parse(n),i={from_number:e.from_number,from_name:null!==(t=e.from_name)&&void 0!==t?t:null,to_number:e.to_number,timestamp:new Date(e.timestamp)};e.user_id&&(i.user_id=e.user_id),this.emit(\"call.incoming\",i)}catch(e){console.error(\"DialStack: Failed to parse call.incoming event:\",e)}}handleStreamAuthFailure(e){if(this.authStreamFailures++,this.authStreamFailures>3)return console.error(`DialStack: event stream authentication failed (${e}) ${this.authStreamFailures} times; giving up. Verify that fetchClientSecret returns a currently-valid client secret.`),this.refreshTimeoutId&&(clearTimeout(this.refreshTimeoutId),this.refreshTimeoutId=null),this.invalidateSession(),void this.disconnectEventStream();this.invalidateSession(),this.scheduleReconnect()}scheduleReconnect(){if(this.hasNoListeners())return;const e=Math.min(1e3*Math.pow(2,this.reconnectAttempts),3e4);this.reconnectAttempts++,console.log(`DialStack: Reconnecting in ${e}ms (attempt ${this.reconnectAttempts})`),this.reconnectTimeoutId=setTimeout(()=>{this.connectEventStream()},e)}disconnectEventStream(){this.reconnectTimeoutId&&(clearTimeout(this.reconnectTimeoutId),this.reconnectTimeoutId=null),this.eventStreamController&&(this.eventStreamController.abort(),this.eventStreamController=null),this.reconnectAttempts=0,this.authStreamFailures=0}logout(){return i(this,void 0,void 0,function*(){this.sessionData=null,this.sessionPromise=null,this.refreshTimeoutId&&(clearTimeout(this.refreshTimeoutId),this.refreshTimeoutId=null),this.disconnectEventStream(),this.eventListeners.clear(),this.components.forEach(e=>{e.dispatchEvent(new CustomEvent(\"dialstack-logout\"))}),this.components.clear()})}fetchBffApi(e){return i(this,arguments,void 0,function*(e,t={}){const i=new Headers(t.headers);return i.set(\"Authorization\",`Bearer ${this.publishableKey}`),i.set(\"Content-Type\",\"application/json\"),fetch(`${this.apiUrl}${e}`,Object.assign(Object.assign({},t),{headers:i}))})}}function h(e){return i(this,void 0,void 0,function*(){if(!e.publishableKey)throw new Error(\"DialStack: publishableKey is required\");if(!e.fetchClientSecret)throw new Error(\"DialStack: fetchClientSecret is required\");if(\"function\"!=typeof e.fetchClientSecret)throw new Error(\"DialStack: fetchClientSecret must be a function\");const t=new u(e);t.startSession().catch(e=>{console.error(\"DialStack: Initial session fetch failed:\",e)});return{livemode:t.livemode,create:e=>t.create(e),addAppearanceTarget:e=>{t.addAppearanceTarget(e)},removeAppearanceTarget:e=>{t.removeAppearanceTarget(e)},update:e=>{t.update(e)},logout:()=>i(this,void 0,void 0,function*(){yield t.logout()}),fetchApi:(e,i)=>t.fetchApi(e,i),on:(e,i)=>{t.on(e,i)},off:(e,i)=>{t.off(e,i)},resolveRoutingTarget:e=>t.resolveRoutingTarget(e),routingTargets:()=>t.routingTargets(),fetchAllPages:e=>t.fetchAllPages(e),getAppearance:()=>t.getAppearance(),calls:t.calls,voicemails:t.voicemails,phoneNumbers:t.phoneNumbers,availablePhoneNumbers:t.availablePhoneNumbers,phoneNumberOrders:t.phoneNumberOrders,portOrders:t.portOrders,audioClips:t.audioClips,dialPlans:t.dialPlans,schedules:t.schedules,ringGroups:t.ringGroups,queues:t.queues,voiceApps:t.voiceApps,aiAgents:t.aiAgents,sharedVoicemailBoxes:t.sharedVoicemailBoxes,extensions:t.extensions,deskphones:t.deskphones,devices:t.devices,buttonTemplates:t.buttonTemplates,dectBases:t.dectBases,account:t.account,users:t.users,locations:t.locations,addresses:t.addresses}})}function p(){return i(this,void 0,void 0,function*(){\"undefined\"!=typeof window?yield Promise.all([import(\"./pure-call-logs-Bpkb_kC4.mjs\"),import(\"./pure-voicemails-t1XpRWFt.mjs\"),import(\"./pure-call-history-CBLuC2MH.mjs\"),import(\"./pure-phone-number-ordering-D3mwFW9U.mjs\"),import(\"./pure-phone-numbers-BwOSWbRA.mjs\"),import(\"./pure-ai-agent-CGPfthI5.mjs\")]):console.warn(\"DialStack: registerComponents() called in non-browser environment\")})}const m={common:{loading:\"Loading...\",error:\"Error\",noResults:\"No results\",delete:\"Delete\",call:\"Call\",cancel:\"Cancel\",confirm:\"Confirm\",previous:\"Previous\",next:\"Next\",perPage:\"Per page\",showing:\"Showing {start}-{end} of {total}\",play:\"Play\",pause:\"Pause\"},softphone:{title:\"Softphone\",destinationPlaceholder:\"Enter a number\",call:\"Call\",backspace:\"Delete\",connecting:\"Connecting…\",reconnecting:\"Reconnecting…\",disconnected:\"Disconnected\",connectionError:\"Connection error\",callError:\"Call failed\",micPermissionError:\"Microphone access is required — allow it and try again\",dismiss:\"Dismiss\",unknownCaller:\"Unknown\",incomingCall:\"Incoming call\",answer:\"Answer\",decline:\"Decline\",hangUp:\"Hang up\",mute:\"Mute\",unmute:\"Unmute\",hold:\"Hold\",resume:\"Resume\",keypad:\"Keypad\",transfer:\"Transfer\",transferPlaceholder:\"Transfer to…\",transferSend:\"Transfer\",transferNow:\"Transfer now\",transferConsult:\"Consult first\",transferComplete:\"Complete transfer\",transferConsulting:\"Consulting…\",transferOriginalOnHold:\"On hold\",addCall:\"Add call\",addCallPlaceholder:\"Number to dial\",addCallSend:\"Call\",cancel:\"Cancel\",stateTrying:\"Calling…\",stateRinging:\"Ringing…\",stateActive:\"In call\",stateHeld:\"On hold\",stateEnded:\"Call ended\",done:\"Done\",audioDevices:\"Audio\",audioMicrophone:\"Microphone\",audioSpeaker:\"Speaker\",audioSystemDefault:\"System default\",audioUnnamedDevice:\"Unnamed device\",audioLabelsHidden:\"Allow microphone access to see device names\",audioDevicesUnsupported:\"This browser cannot list audio devices\",audioSpeakerUnsupported:\"Choose your speaker in your device settings\",audioMicrophoneLost:\"Your microphone was disconnected — choose another\",switchToCall:\"Switch to this call\",heldCallsLabel:\"On hold\",callWaiting:\"Call waiting\",emergencyPrompt:\"Set your emergency location to be able to place external calls\",emergencyHint:\"Confirm your location before placing calls — required by 911 regulations for internet calling.\",emergencyConfirm:\"Yes, I'm here\",emergencyNewLocation:\"Set a new location\",emergencyUseLocation:\"Use my current location\",emergencyLocating:\"Getting your location…\",emergencyNumber:\"Number\",emergencyStreet:\"Street\",emergencyUnit:\"Unit (optional)\",emergencyCity:\"City\",emergencyState:\"State\",emergencyPostalCode:\"Postal code\",emergencySave:\"Confirm location\",emergencySaving:\"Saving…\",emergencyBack:\"Back\"},aiAgent:{loading:\"Loading AI agent…\",loadFailed:\"Failed to load AI agent: {message}\",fields:{name:\"Name\",namePlaceholder:\"Front Desk Agent\",nameHint:\"Internal label shown in lists and call logs. Not heard by callers.\",extensionNumber:\"Extension\",extensionNumberPlaceholder:\"700\",extensionNumberHint:\"Dial this extension from any phone on the account to reach the agent.\",extensionChecking:\"Checking extension...\",personaName:\"Persona name\",personaNamePlaceholder:\"e.g. Receptionist\",personaNameHint:\"How the agent introduces itself on calls.\",greetingName:\"Greeting name\",greetingNamePlaceholder:\"Your business name\",greetingNameHintWithName:'Used in the call greeting (e.g. \"Thanks for calling {name}\").',greetingNameHintGeneric:'Used in the call greeting (e.g. \"Thanks for calling [your business]\").',instructions:\"Instructions\",instructionsPlaceholder:\"Provide additional instructions for how the AI agent should behave during calls...\",instructionsHint:\"Plain-English guidance for the agent: tone, what to do, what to escalate.\",faq:\"FAQ\",faqEmpty:\"No FAQ entries yet. Add one to teach the agent a recurring question.\",faqEntry:\"Entry {index}\",faqQuestion:\"Question\",faqAnswer:\"Answer\",faqQuestionLabel:\"FAQ entry {index} question\",faqAnswerLabel:\"FAQ entry {index} answer\",faqRemove:\"Remove\",faqRemoveLabel:\"Remove FAQ entry {index}\",faqAdd:\"Add FAQ entry\",scheduling:\"Scheduling\",schedulingHint:\"Connect your AI agent to an external scheduling system. Clear the URL to disable scheduling.\",webhookUrl:\"Webhook URL\",webhookUrlHint:\"Base URL for scheduling webhooks. DialStack appends tool-call paths automatically.\",webhookUrlPlaceholder:\"https://example.com/api/dialstack/webhooks\",secret:\"Webhook secret\",secretHint:\"Used to verify tool-call webhooks sent from this AI agent to your integration.\",copySecret:\"Copy webhook secret\",rotateSecret:\"Rotate secret\"},save:\"Save\",saving:\"Saving…\",saved:\"Saved.\",errors:{nameRequired:\"Name is required.\",nameMaxLength:\"Name must be {max} characters or fewer.\",personaNameMaxLength:\"Persona name must be {max} characters or fewer.\",greetingNameMaxLength:\"Greeting name must be {max} characters or fewer.\",instructionsMaxLength:\"Instructions must be {max} characters or fewer.\",faqMaxItems:\"FAQ supports up to {max} entries.\",faqIncompleteEntry:\"Every FAQ entry needs both a question and an answer.\",faqFieldMaxLength:\"FAQ fields must be {max} characters or fewer.\",extensionNumeric:\"Extension must contain only digits.\",extensionUnavailable:\"Extension number is already in use.\",schedulingUrlMaxLength:\"Webhook URL must be {max} characters or fewer.\",schedulingUrlHttpsRequired:\"Webhook URL must start with https://.\",hostCreateRequired:\"This form is waiting for the host app to create the AI agent.\",hostSaveRequired:\"This form is waiting for the host app to save the AI agent.\"}},voicemails:{title:\"Voicemails\",loading:\"Loading voicemails...\",empty:\"No voicemails\",noUserId:\"Please set a user ID to load voicemails\",transcription:\"Transcription\",summary:\"Summary\",sentiment:\"Sentiment\",sentimentPositive:\"Positive\",sentimentNeutral:\"Neutral\",sentimentNegative:\"Negative\",sentimentMixed:\"Mixed\",transcript:\"Full Transcript\",transcriptLoading:\"Loading transcript...\",transcriptNotAvailable:\"Transcript not available\",deleteConfirm:\"Delete this voicemail?\",deleteTitle:\"Delete Voicemail\",progress:\"Playback progress\"},callLogs:{title:\"Call Logs\",loading:\"Loading call logs...\",empty:\"No call logs found\",columns:{date:\"Date\",direction:\"Direction\",from:\"From\",to:\"To\",duration:\"Duration\",status:\"Status\",quality:\"MOS\"},directions:{inbound:\"Inbound\",outbound:\"Outbound\",internal:\"Internal\"},routedTo:\"Routed to:\",calledBy:\"Called by:\",statuses:{completed:\"Completed\",noAnswer:\"No Answer\",busy:\"Busy\",failed:\"Failed\",voicemail:\"Voicemail\"},quality:{good:\"Good\",fair:\"Fair\",poor:\"Poor\",unavailable:\"N/A\",unavailableTooltip:\"No quality data available\"}},callHistory:{title:\"Call History\",loading:\"Loading call history...\",empty:\"No call history\",noPhoneNumber:\"Please set a phone number to load call history\",error:\"Unable to load call history\",clickToCall:\"Click to call\",summaryNotAvailable:\"Summary not available\",relativeTime:{justNow:\"Just now\",minuteAgo:\"1 min ago\",minutesAgo:\"{count} min ago\",hourAgo:\"1 hour ago\",hoursAgo:\"{count} hours ago\",yesterday:\"Yesterday\"}},phoneNumberOrdering:{title:\"Order Phone Numbers\",steps:{search:\"Search\",select:\"Select\",confirm:\"Confirm\",route:\"Route\",done:\"Done\",stepOf:\"Step {current} of {total}\"},search:{title:\"Search Available Numbers\",subtitle:\"Find available phone numbers by entering an area code or ZIP code.\",searchType:\"Search by\",areaCode:\"Area Code\",zip:\"ZIP Code\",areaCodeLabel:\"Area Code\",areaCodePlaceholder:\"e.g. 212\",zipLabel:\"ZIP Code\",zipPlaceholder:\"e.g. 10001\",numberOfResults:\"Quantity to display\",search:\"Search\"},results:{title:\"Available Numbers\",phoneNumber:\"Phone Number\",state:\"State\",selectAll:\"Select all\",selected:\"{count} selected\",noResults:\"No numbers available for this search\",continue:\"Continue\",backToSearch:\"Back to Search\"},confirm:{title:\"Confirm Order\",subtitleOne:\"You are about to order 1 phone number\",subtitleOther:\"You are about to order {count} phone numbers\",description:\"Your order will be submitted to the carrier for fulfillment. This usually completes within seconds but may take longer.\",placeOrder:\"Place Order\",continue:\"Continue\",back:\"Back\",billing:{label:\"Billing impact\",headline:\"Adds {amount}/month to this account's bill\",detail:\"{count} phone numbers at {rate} each per month.\",detail_one:\"{count} phone number at {rate} per month.\",detail_other:\"{count} phone numbers at {rate} each per month.\",timing:\"Billing starts when each number activates.\",taxesAndFees:\"Taxes and fees are additional.\",noPrice:\"These numbers are billable on this account.\",noPrice_one:\"This number is billable on this account.\",noPrice_other:\"These numbers are billable on this account.\",notBilled:\"This account is not billed, so ordering these numbers costs nothing.\"}},route:{title:\"Choose call routing\",subtitle:\"Pick where these numbers should send calls once they activate. You can change this any time, or set it up later.\",later:\"Set up routing later\",laterHint:\"Configure each number from its detail page after it activates.\",noTargets:\"No routing destinations exist yet. You can set up routing after the numbers are added.\",unnamed:\"Untitled\",extension:\"ext. {ext}\",back:\"Back\",type:{user:\"User\",dial_plan:\"Dial plan\",voice_app:\"Voice app\",queue:\"Queue\",ring_group:\"Ring group\",shared_voicemail:\"Shared voicemail\"}},ordering:{title:\"Placing Order...\"},complete:{titlePendingOne:\"Order Submitted\",titlePendingOther:\"Order Submitted\",titleCompleteOne:\"Number Ready\",titleCompleteOther:\"Numbers Ready\",titlePartialOne:\"Partially Fulfilled\",titlePartialOther:\"Partially Fulfilled\",descriptionPendingOne:\"Your order has been submitted to the carrier. Fulfillment usually completes within seconds but may take longer.\",descriptionPendingOther:\"Your order has been submitted to the carrier. Fulfillment usually completes within seconds but may take longer.\",descriptionCompleteOne:\"Your phone number is now in your inventory and ready to be configured.\",descriptionCompleteOther:\"Your phone numbers are now in your inventory and ready to be configured.\",descriptionPartialOne:\"Some numbers could not be fulfilled by the carrier.\",descriptionPartialOther:\"Some numbers could not be fulfilled by the carrier.\",checking:\"Checking order status...\",assignmentHint:\"Numbers added to your inventory still need to be assigned to an extension or dial plan before they can receive calls.\",orderMore:\"Order More Numbers\"},error:{title:\"Order Failed\",description:\"The carrier was unable to fulfill your order.\",tryAgain:\"Try Again\"},statuses:{pending:\"Pending\",complete:\"Complete\",partial:\"Partial\",failed:\"Failed\"}},phoneNumbers:{title:\"Phone Numbers\",loading:\"Loading phone numbers...\",empty:\"No phone numbers\",filterLabel:\"Filter by status\",search:{placeholder:\"Search phone numbers...\",noResults:\"No phone numbers match your search\"},filters:{active:\"Active\",in_progress:\"In Progress\",cancelled:\"Cancelled\"},columns:{phoneNumber:\"Phone Number\",status:\"Status\",callerID:\"Outbound Caller ID\",callerIDPrefix:\"Inbound Caller ID Prefix\",outbound:\"Usage\",carrier:\"Carrier\",transferDate:\"Transfer Date\",routingTarget:\"Call Routing\",cancelledDate:\"Date Cancelled\"},statuses:{active:\"Active\",inactive:\"Inactive\",released:\"Released\",ordering:\"Ordering\",orderFailed:\"Order Failed\",portingDraft:\"Port Draft\",portingApproved:\"Ready to Submit\",portingSubmitted:\"Port Submitted\",portingException:\"Port Issue\",portingFoc:\"Port Scheduled\"},badges:{temporary:\"Temporary\"},outbound:{enabled:\"Two-way\",disabled:\"Inbound only\",fax:\"Fax\"},routingTarget:{notSet:\"Not set\",setAction:\"Set routing\",faxNotApplicable:\"Not applicable\"},routingTargetTypes:{user:\"User\",dialPlan:\"Dial Plan\",voiceApp:\"Voice App\",ringGroup:\"Ring Group\"}},accountOnboarding:{billing:{label:\"Billing impact\",headline:\"Adds {amount}/month to this account's bill\",detail:{userSeat:{one:\"{count} user seat at {rate} per month.\",other:\"{count} user seats at {rate} each per month.\"},phoneNumber:{one:\"{count} phone number at {rate} per month.\",other:\"{count} phone numbers at {rate} each per month.\"}},noPrice:{userSeat:{one:\"Adds {count} billable user seat to this account.\",other:\"Adds {count} billable user seats to this account.\"},phoneNumber:{one:\"Adds {count} billable phone number to this account.\",other:\"Adds {count} billable phone numbers to this account.\"}},rateHeadline:{userSeat:\"{rate}/month per user seat\",phoneNumber:\"{rate}/month per phone number\"},rateDetail:{userSeat:\"Each team member you add is billed at this rate.\",phoneNumber:\"Each number you add is billed at this rate.\"},noPriceRate:{userSeat:\"Each team member you add is billable on this account.\",phoneNumber:\"Each number you add is billable on this account.\"},startsOnActivation:\"Billing starts when each number activates.\",taxesAndFees:\"Taxes and fees are additional.\",notBilled:\"This account is not billed, so this costs nothing.\"},title:\"Account Onboarding\",breadcrumbAriaLabel:\"Onboarding progress\",loading:\"Loading...\",error:{title:\"Unable to Load\",description:\"Something went wrong loading the onboarding wizard.\",retry:\"Try Again\"},steps:{account:\"Account Setup\",numbers:\"Phone Numbers\",hardware:\"Hardware Setup\",complete:\"Complete\"},sidebar:{businessDetails:\"Business Details\",businessDetailsDesc:\"Enter your company information\",teamMembers:\"Team Members\",teamMembersDesc:\"Add users and assign extensions\",numberOptions:\"Number Options\",numberOptionsDesc:\"Choose to port existing or get new numbers\",callerId:\"Caller ID\",callerIdDesc:\"Set caller ID for your numbers\",directoryListing:\"Directory Listing\",directoryListingDesc:\"Configure 411 directory listing\",numberSetup:\"Number Setup\",numberSetupDesc:\"Configure your phone numbers\",verification:\"Verification\",verificationDesc:\"Verify number status\",deviceAssignment:\"Device Assignment\",deviceAssignmentDesc:\"Assign devices to users\"},account:{title:\"Business Details\",subtitle:\"Enter your company information\",details:{heading:\"Account Details\",companyNameLabel:\"Company Name\",companyNamePlaceholder:\"Acme Corp\",companyNameRequired:\"Company name is required\",emailLabel:\"Primary Contact Email\",emailPlaceholder:\"admin@company.com\",emailRequired:\"Primary contact email is required\",emailInvalid:\"Enter a valid email address\",phoneLabel:\"Primary Contact Phone Number\",phonePlaceholder:\"(555) 123-4567\",phoneRequired:\"Primary contact phone number is required\",phoneInvalid:\"Enter a valid US phone number\",primaryContactLabel:\"Primary Contact\",primaryContactPlaceholder:\"Jane Doe\",primaryContactRequired:\"Primary contact is required\",regionLabel:\"Region\",regionPlaceholder:\"Select a region\",timezoneLabel:\"Timezone\",timezonePlaceholder:\"Select a timezone\",timezoneRequired:\"Timezone is required\"},users:{heading:\"Team Members\",description:\"Add users who will have phone extensions\",nameLabel:\"Full name\",namePlaceholder:\"John Doe\",nameRequired:\"Name is required\",emailLabel:\"Email\",emailPlaceholder:\"john@company.com\",extensionLabel:\"Extension\",extensionPlaceholder:\"ex. 103\",addUser:\"Add User\",removeUser:\"Remove\",noUsers:\"No team members added yet.\",atLeastOne:\"Add at least one team member to continue.\",duplicateEmail:\"A user with this email already exists.\"},location:{heading:\"Business Location\",description:\"Add your business address for E911 and caller ID.\",nameLabel:\"Location Name\",namePlaceholder:\"Main Office\",nameRequired:\"Location name is required\",addressLabel:\"Address\",searchPlaceholder:\"Start typing an address...\",searching:\"Searching...\",noResults:\"No addresses found\",enterManually:\"Enter manually\",searchInstead:\"Search instead\",edit:\"Edit\",addressRequired:\"Address is required\",houseNumberLabel:\"#\",houseNumberPlaceholder:\"123\",streetLabel:\"Street\",streetPlaceholder:\"Main St\",cityLabel:\"City\",cityPlaceholder:\"New York\",stateLabel:\"State\",statePlaceholder:\"Select\",postalCodeLabel:\"ZIP\",postalCodePlaceholder:\"10001\"},saving:\"Saving...\",saveError:\"Failed to save. Please try again.\"},numbers:{title:\"Phone Numbers\",subtitle:\"Choose how you'd like to set up your business numbers\",defaultDialPlanName:\"Onboarding Dial Plan\",callerId:{title:\"Caller ID Setup\",subtitle:\"Configure the name displayed when making outbound calls\",inputLabel:\"Caller ID Name\",inputPlaceholder:\"e.g. ACME Corp\",inputHelp:\"Max 15 characters. Letters, numbers, spaces, and hyphens only.\",charCount:\"{count}/15\",submit:\"Set Caller ID\",submitting:\"Submitting...\",submittingAll:\"Submitting caller IDs...\",submitted:\"Submitted\",alreadySet:\"Already configured\",submitAll:\"Set All Caller IDs\",skipCallerId:\"Skip\",partialError:\"Some caller IDs could not be set. Fix errors and retry, or skip.\",validation:{required:\"Caller ID name is required\",tooLong:\"Must be 15 characters or fewer\",invalidChars:\"Only letters, numbers, spaces, and hyphens allowed\"},error:{submitFailed:\"Failed to set caller ID. Please try again.\",conflict:\"A caller ID update is already in progress for this number.\"},directoryListing:{title:\"Directory Listing (DA/DL)\",info:\"To update your directory listing, contact {platformName} support.\"},noDIDs:\"No active phone numbers to configure.\"},directoryListing:{title:\"Directory Listing\",subtitle:\"A directory listing feeds your business information into online directories and data aggregators, helping customers find you. It also reduces the chance of your outbound calls being flagged as spam by call-screening apps.\",selectPrompt:\"Select which number should be listed:\",noneOption:\"None — skip directory listing\",noDIDs:\"No eligible phone numbers to configure.\",businessName:\"Business Name\",businessNamePlaceholder:\"Enter business name for listing\",businessNameHelp:\"The name shown in directory listings and used for caller verification. Max 200 characters.\",validation:{nameRequired:\"Business name is required for the directory listing.\"}},overview:{heading:\"Your Numbers\",empty:\"No telephone numbers yet. Request new numbers or port your existing ones.\",requestNew:\"Request New Numbers\",requestNewDesc:\"Get new business phone numbers instantly. Choose from available numbers in your area.\",portExisting:\"Port Existing Number\",portExistingDesc:\"Transfer your current business number to {platformName}. This typically takes 5–10 business days.\",phoneNumber:\"Phone Number\",type:\"Type\",status:\"Status\",source:\"Source\",temporaryBanner:\"A temporary number has been assigned to your account while you set up your permanent numbers.\",loadError:\"Failed to load telephone numbers. Please try again.\",retry:\"Retry\"},status:{active:\"Active\",inactive:\"Inactive\",released:\"Released\",ordering:\"Ordering\",order_failed:\"Order Failed\",porting_draft:\"Port Draft\",porting_submitted:\"Port Submitted\",porting_exception:\"Port Exception\",porting_foc:\"Port Scheduled\",porting_approved:\"Ready to Submit\"},source:{did:\"Account\",didTemporary:\"Temporary\",number_order:\"New Order\",port_order:\"Port\"},order:{searchTitle:\"Search Available Numbers\",searchSubtitle:\"Find available numbers by entering an area code or ZIP code\",searchByAreaCode:\"Area Code\",searchByZip:\"ZIP Code\",areaCodeLabel:\"Area Code\",areaCodePlaceholder:\"212\",zipLabel:\"ZIP Code\",zipPlaceholder:\"10001\",quantityLabel:\"Quantity\",search:\"Search\",searching:\"Searching...\",resultsTitle:\"Available Numbers\",resultsSubtitle:\"Select the numbers you would like to order.\",noResults:\"No numbers found. Try a different search.\",selectAll:\"Select All\",deselectAll:\"Deselect All\",selected:\"selected\",state:\"State\",confirmTitle:\"Confirm Your Order\",confirmSubtitle:\"You are about to order {count} phone numbers\",confirmSubtitle_one:\"You are about to order {count} phone number\",confirmSubtitle_other:\"You are about to order {count} phone numbers\",carrierNote:\"Your order will be submitted to the carrier for fulfillment. This usually completes within seconds but may take longer.\",placeOrder:\"Place Order\",placing:\"Placing Order...\",ordering:\"Ordering...\",statusTitle:\"Order Submitted\",statusPending:\"Your order has been submitted to the carrier. Fulfillment usually completes within seconds but may take longer.\",statusStalled:\"Your order has been submitted to the carrier. Fulfillment usually completes within seconds but may take longer.\",statusComplete:\"Your numbers have been activated.\",statusFailed:\"The order could not be completed.\",statusPartial:\"Some numbers were activated, but others failed.\",done:\"Done\",orderMore:\"Order More Numbers\",continue:\"Continue\",error:\"An error occurred while placing the order.\"},port:{numbersTitle:\"Numbers to Port\",numbersSubtitle:\"Enter the numbers you want to transfer to {platformName}, or paste a whole list into any row.\",phoneLabel:\"Phone Number\",phonePlaceholder:\"(555) 123-4567\",addAnother:\"Add another number\",numberLabel:\"Phone number {row}\",removeNumber:\"Remove phone number {row}\",duplicateOfRow:\"Duplicate of row {row}\",pasteHint:\"Press Enter for another row. Pasting a list — one per line, commas, or a spreadsheet column — fills a row for each number.\",readyCountZero:\"No numbers yet\",readyCountOne:\"{count} number ready\",readyCountOther:\"{count} numbers ready\",needsAttentionOne:\"{count} row needs attention before you can continue\",needsAttentionOther:\"{count} rows need attention before you can continue\",reasonInvalid:\"Not a valid US phone number\",reasonNotUs:\"Only US numbers can be ported\",reasonTollFree:\"Toll-free numbers cannot be ported\",reasonAmbiguous:\"Too many digits for one number — if this is several, put one per row\",reasonHasExtension:\"Remove the extension\",maxPerOrder:\"{count} numbers — the maximum is {max} per order. Move {excess} into a second port order.\",notPortableWithDetail:\"{label} ({detail})\",accountLimit:\"You've reached the number of phone numbers this account can hold. Contact support to raise the limit, then try again.\",numbersUnavailable:\"Some of these numbers are already in use and can't be ported. The ones affected are marked above.\",conflictAlreadyOnAccount:\"You already have this number\",conflictInServiceElsewhere:\"Already in service — contact support to transfer it\",checkEligibility:\"Check Eligibility\",checking:\"Checking...\",eligibilityTitle:\"Port Eligibility\",eligibilitySubtitle:\"Review which numbers can be ported.\",portable:\"Portable\",notPortable:\"Not Portable\",carrier:\"Current Carrier\",wireless:\"Wireless\",wirelessYes:\"Yes\",wirelessNo:\"No\",accountRequired:\"Account # Required\",continueWithPortable:\"Continue with Portable Numbers\",noPortable:\"None of the entered numbers are eligible for porting.\",subscriberTitle:\"Subscriber Information\",subscriberSubtitle:\"Enter the details exactly as they appear on your current phone bill.\",btnLabel:\"Billing Telephone Number (BTN)\",btnPlaceholder:\"(555) 123-4567\",businessNameLabel:\"Business Name\",businessNamePlaceholder:\"Acme Corp\",approverNameLabel:\"Authorized Contact\",approverNamePlaceholder:\"John Doe\",accountNumberLabel:\"Account Number\",accountNumberPlaceholder:\"From your current carrier\",pinLabel:\"Account PIN\",pinPlaceholder:\"1234\",addressHeading:\"Service Address\",houseNumberLabel:\"Street Number\",houseNumberPlaceholder:\"123\",streetNameLabel:\"Street Name\",streetNamePlaceholder:\"Main St\",line2Label:\"Suite / Unit\",line2Placeholder:\"Suite 100\",cityLabel:\"City\",cityPlaceholder:\"New York\",stateLabel:\"State\",statePlaceholder:\"Select state\",zipLabel:\"ZIP Code\",zipPlaceholder:\"10001\",focTitle:\"Requested Port Date\",focSubtitle:\"Choose when you want the numbers transferred. Must be at least 5 business days out.\",focDateLabel:\"Port Date\",focTimeLabel:\"Port Time (Eastern)\",focTimePlaceholder:\"Select time\",documentsTitle:\"Supporting Documents\",documentsSubtitle:\"Upload your latest phone bill and optionally a Customer Service Record (CSR).\",billCopyLabel:\"Phone Bill Copy\",billCopyDesc:\"A recent bill from your current carrier showing the numbers to be ported.\",billCopyRequired:\"Required\",csrLabel:\"Customer Service Record (CSR)\",csrDesc:\"Optional but recommended — speeds up the porting process.\",csrOptional:\"Optional\",uploadFile:\"Choose File\",fileSelected:\"Selected:\",noFileSelected:\"No file selected\",uploading:\"Uploading...\",reviewTitle:\"Review & Approve\",reviewSubtitle:\"Verify all details before submitting your port request.\",numbersSection:\"Numbers\",subscriberSection:\"Subscriber\",focSection:\"Port Date\",documentsSection:\"Documents\",signatureLabel:\"Electronic Signature\",signaturePlaceholder:\"Type your full legal name\",signatureHelp:\"By signing, you authorize the transfer of the listed numbers to {platformName}.\",approve:\"Approve & Submit\",submitting:\"Submitting...\",submittedTitle:\"Port Request Submitted\",submittedSubtitle:\"Your port request has been submitted and is being processed.\",submittedStatus:\"Status\",backToOverview:\"Back to Numbers\",carrierGroupsTitle:\"Carrier Groups\",carrierGroupsSubtitle:\"Your numbers are with different carriers. Each carrier requires a separate port request.\",carrierStart:\"Start\",carrierContinue:\"Continue\",carrierSubmitted:\"Submitted\",numberSingular:\"number\",numberPlural:\"numbers\"},validation:{areaCodeRequired:\"Area code is required.\",areaCodeFormat:\"Enter a 3-digit area code.\",cityRequired:\"City is required.\",stateRequired:\"State is required.\",zipRequired:\"ZIP code is required.\",zipFormat:\"Enter a 5-digit ZIP code.\",selectAtLeastOne:\"Select at least one number.\",phoneRequired:\"At least one phone number is required.\",phoneInvalid:\"Enter a valid US phone number.\",phoneDuplicate:\"This number has already been entered.\",btnRequired:\"BTN is required.\",btnInvalid:\"Enter a valid US phone number.\",businessNameRequired:\"Business name is required.\",approverNameRequired:\"Authorized contact name is required.\",houseNumberRequired:\"Street number is required.\",streetNameRequired:\"Street name is required.\",focDateRequired:\"Port date is required.\",focDateTooSoon:\"Port date must be at least 5 business days from today.\",focDateTooFar:\"Port date must be within 30 days.\",focTimeRequired:\"Port time is required.\",billCopyRequired:\"A phone bill copy is required.\",signatureRequired:\"Signature is required.\",eligibilityError:\"Failed to check eligibility. Please try again.\",submitError:\"Failed to submit port request. Please try again.\"},nav:{back:\"Back\",next:\"Next\",cancel:\"Cancel\",backToSearch:\"Back to Search\",confirm:\"Confirm\"},gate:{noDIDsAvailable:\"You need at least one phone number before selecting a primary number. Order or port a number first.\",primaryRequired:\"Please select a primary number to continue.\"}},hardware:{title:\"Assign Devices\",shippingAddress:\"Shipping Address\",subtitle:\"Drag and drop devices to assign them to team members\",noUsers:\"No team members found. Add team members in the Account step first.\",noDevices:\"No devices are available for your account at the moment.\",isDectBase:\"This is a cordless handset base station\",userLabel:\"Team Member\",selectUser:\"Select a team member\",selectUserRequired:\"Please select a team member.\",macLabel:\"MAC Address\",macPlaceholder:\"00:04:13:AA:BB:CC\",invalidMac:\"Enter a valid 12-digit MAC address.\",ipeiLabel:\"Handset IPEI\",ipeiPlaceholder:\"03AABB1234567890CCDD\",invalidIpei:\"Enter a valid IPEI (hex digits only).\",ipeiNotMac:\"This looks like a MAC address, not an IPEI. An IPEI looks like 03AABB1234567890CCDD.\",removeDevice:\"Remove\",unsupportedVendor:\"This device is not currently supported. Our support team has been notified and will follow up.\",duplicateMac:\"This MAC address is already registered.\",deviceNotFound:\"Device was created but could not be found. Please try again.\",handset:\"handset\",handsets:\"handsets\",addDeviceButton:\"+ Add Device\",addHandsetButton:\"+ Handset\",save:\"Save\",saving:\"Saving...\",cancel:\"Cancel\",dectBase:\"Cordless Base\",removeBaseFailed:\"Failed to remove cordless base.\",tableHeaderName:\"Full name\",tableHeaderExtension:\"Extension\",tableHeaderDevice:\"Assigned Device\",availableDevices:\"Available Devices\",allAssigned:\"All devices have been assigned\",dragDropHint:\"Drag and drop device here\",clickToAssign:\"Click to assign\",submitOrder:\"Submit Order\",assignAndComplete:\"Save & Continue\",unassign:\"Unassign\",deskPhone:\"Desk phone\",cordless:\"Cordless\",submitting:\"Submitting...\",gate:{noDevices:\"No devices are available for your account. Please contact support to add devices before completing this step.\"}},complete:{title:\"Wahoo!\",subtitle:\"It's time to start using your embedded voice system\",e911:{loading:\"Configuring emergency services...\",pollingStatus:\"Verifying emergency services registration...\",verified:\"E911 emergency address is verified.\",processing:\"E911 registration is being processed. This may take a few minutes.\",pendingAfterPolling:\"E911 registration submitted. Your phone service is active — emergency address verification will complete shortly.\",addressStandardized:\"Your address was standardized for emergency services accuracy.\",primaryAssigned:\"assigned as primary number for\",errorTitle:\"E911 configuration failed\",errorDescription:\"There was an error configuring emergency services. You can retry or configure manually later.\",retryButton:\"Retry\",deferred:\"E911 emergency services have not been fully configured. Each location with a phone number needs a verified emergency address before your phone service can be activated.\"}},stepComplete:{title:\"{stepName} Complete\",subtitle:\"This step has been completed successfully.\",done:\"Done\"},nav:{next:\"Next\",skip:\"Skip\",back:\"Back\",exit:\"Finish\"},legal:{prefix:\"By continuing, you agree to the\",and:\"and\",termsOfService:\"Terms of Service\",recipientTerms:\"Recipient Terms of Service\",privacyPolicy:\"Privacy Policy\"},ssa:{title:\"Review and accept your subscription agreement\",intro:\"Before you can use your phone service, please review the Service Subscription Agreement below — including its emergency calling (911/E911) terms — and confirm your acceptance.\",pricingTitle:\"Your plan pricing\",perUser:\"Per user\",perNumber:\"Per phone number\",perAiLocation:\"Per AI location\",perMonthSuffix:\"/mo\",agreementLabel:\"Service Subscription Agreement\",openInNewTab:\"Open the full agreement in a new tab\",accept:\"Accept & Continue\",submitting:\"Recording your acceptance…\",notPermitted:\"Only the account owner can accept this agreement. Please ask them to sign in and accept it — phone service stays blocked until they do.\",errors:{stale:\"The agreement was updated. Please review the latest version and accept again.\",pricingMissing:\"Your plan pricing has not been finalized yet. Please contact your provider to continue.\",generic:\"We could not record your acceptance. Please try again.\",retry:\"Try again\"},loadError:{title:\"Unable to load your agreement\",description:\"We could not load your subscription agreement, which is required before you can continue. Please try again.\",retry:\"Try again\",retrying:\"Loading…\"}}},onboardingPortal:{onboardingFlows:\"ONBOARDING FLOWS\",saveAndExit:\"Save & Exit to Overview\",back:\"Back\",helpSupport:\"Help & Support\",onboardingComplete:\"Onboarding complete\",rates:{title:\"Your monthly rates\",subtitle:\"What you're billed at today.\",perUser:\"Per user\",perPhoneNumber:\"Per phone number\",perVoiceAiLocation:\"Per VoiceAI location\",perMonth:\"{rate}/month\",rateNotSet:\"Not set\",pendingRate:\"{rate}/month from {date}\",pendingNote:\"Rate changes take effect at the start of the next billing period.\",taxesAndFees:\"Taxes and fees are additional.\",notBilled:\"This account is not billed.\",noRates:\"No rates are set for this account yet.\",unavailable:\"Rates are unavailable right now.\"},overview:{label:\"Overview\",title:\"Your Business Onboarding\",subtitle:\"Complete the steps below to set up your business phone system\",progressTitle:\"Onboarding Progress\",flowsComplete:\"{completed} of {total} flows complete\",stepsTitle:\"Onboarding Steps\",complete:\"Complete\",progress:\"Progress\",completeSetup:\"Complete Setup\",continueSetup:\"Continue Setup\",review:\"Review\",needHelp:\"Need help?\",needHelpSubtitle:\"Our team is here to help you get set up quickly\",scheduleCall:\"Schedule a Call\",viewDocs:\"View Documentation\",accountDesc:\"Set up your business profile, add team members, and configure your dial plan\",numbersDesc:\"Port existing numbers or request new business lines\",hardwareDesc:\"Assign phones to team members and track delivery\",phoneStatusTitle:\"Phone number status\",phoneStatusSubtitle:\"Track the status of your phone numbers\",phoneStatusNumber:\"Phone Number\",phoneStatusType:\"Type\",phoneStatusStatus:\"Status\",phoneStatusTypeNew:\"New\",phoneStatusTypePort:\"Port\",phoneStatusProcessing:\"Processing\",phoneStatusComplete:\"Complete\",phoneStatusTemporary:\"Temporary\"},splash:{title:\"Welcome\\nto {platformName}\",subtitle:\"Let's get your business set up in 3 easy steps\",start:\"Start Onboarding\",step1:\"Account Details\",step2:\"Setup Phone Numbers\",step3:\"Assign Hardware\"}},dialPlan:{title:\"Dial Plan\",loading:\"Loading dial plan...\",error:\"Failed to load dial plan\",empty:\"No dial plan found\",nodeTypes:{start:\"Start\",schedule:\"Schedule\",internalDial:\"Internal Extension\",voicemail:\"Voicemail\",externalDial:\"External Number\",voiceApp:\"Voice App\",menu:\"IVR Menu\",audioClip:\"Audio Clip\",hangUp:\"Hang Up\"},nodeDescriptions:{menu:\"Play prompt and route by keypress\",audioClip:\"Play an audio clip\",hangUp:\"End the call\"},exits:{open:\"Open\",closed:\"Closed\",holiday:\"Holiday\",next:\"Next\",timeout:\"Timeout\",invalid:\"Invalid\"},configLabels:{promptClip:\"Prompt\",audioClip:\"Audio Clip\",digit:\"Digit\",options:\"Options\",addOption:\"Add Option\",removeOption:\"Remove\",optionLabel:\"Label\",optionLabelPlaceholder:\"e.g. Sales\",routeHolidaySeparately:\"Route holidays separately\",routeHolidaySeparatelyHint:\"When on, holidays route to a dedicated branch you wire below. Otherwise holidays follow the Closed exit.\"},resourceGroups:{audioClips:\"Audio Clips\"}}},v=m;function f(e){var t,i;const o=\"provisioned\"===e.status,n=\"registered\"===e.registration_status,s=\"dect_base\"===e.type||(null!==(i=null===(t=e.assignments)||void 0===t?void 0:t.length)&&void 0!==i?i:0)>0,r=s&&n,a=null!==e.last_call_at&&void 0!==e.last_call_at,l=[];\"dect_base\"===e.type||s||l.push(\"user\"),\"dect_handset\"===e.type||e.location_id||l.push(\"location\"),\"dect_handset\"!==e.type||e.base_id||l.push(\"base\");const d=[[\"provisioned\",o],[\"online\",n],[\"ready_to_call\",r],[\"first_call\",a]],c=d.find(([,e])=>!e);return{provisioned:o,online:n,assigned:s,readyToCall:r,firstCall:a,graduated:a,currentStep:c?c[0]:null,completedCount:d.filter(([,e])=>e).length,missing:l}}const b=/^[\\d\\s().+-]*$/,g=t=>t?new e(\"US\").input(t):\"\";function y(t,i){if(!b.test(t))return t;const o=t.replace(/\\D/g,\"\");return o.length>11||t.length<i.length||\"\"===o?t:t.trimStart().startsWith(\"+\")?(new e).input(t.trimStart()):g(o)}function S(t){if(!b.test(t))return t;const i=t.replace(/\\D/g,\"\");return i.length>11||\"\"===i?t:t.trimStart().startsWith(\"+\")?(new e).input(t.trimStart()):g(i)}const w=/[,;|\\t]+/,$=/\\b(?:x|ext\\.?|extension)\\s*\\d+/i;function A(e){const i=t(e,\"US\");return i&&i.isValid()?i.ext?{ok:!1,reason:\"has_extension\"}:\"US\"!==i.country?{ok:!1,reason:\"not_us\"}:\"TOLL_FREE\"===i.getType()?{ok:!1,reason:\"toll_free\"}:{ok:!0,e164:i.number}:null}const x=/(?=\\p{Nd})[^0-9]/u;function P(e){const i=e.normalize(\"NFKC\");if($.test(i))return{reason:\"has_extension\"};if(x.test(i))return{reason:\"invalid\"};const o=A(i);if(o)return o.ok?{numbers:[o.e164]}:{reason:o.reason};const n=i.replace(/\\D/g,\"\");if(n.length<12||(e=>10===e.length||11===e.length&&e.startsWith(\"1\"))(n))return{reason:\"invalid\"};const s=function(e,i){const{boundaries:o,groupEndingAt:n}=i,s=[];let r=0;for(;r<e.length;){let i=!1;for(const a of[11,10]){if(r+a>e.length)continue;if(!o.has(r+a))continue;if(r+a<e.length&&\"1\"===n.get(r+a))continue;const l=e.slice(r,r+a);if(11===a&&!l.startsWith(\"1\"))continue;const d=t(11===a?`+${l}`:l,\"US\");if(d&&d.isValid()){s.push(l),r+=a,i=!0;break}}if(!i)return null}return s.length>=2?s:null}(n,function(e){const t=new Set,i=new Map;let o=0,n=\"\",s=!1;for(const r of e)r>=\"0\"&&r<=\"9\"?(s&&(t.add(o),i.set(o,n),n=\"\",s=!1),o+=1,n+=r):/\\s/.test(r)&&(s=!0);return t.add(o),i.set(o,n),{boundaries:t,groupEndingAt:i}}(i));if(!s)return{reason:\"ambiguous\"};const r=[];for(const e of s){const t=A(11===e.length?`+${e}`:e);if(!t)return{reason:\"ambiguous\"};if(!t.ok)return{reason:t.reason};r.push(t.e164)}return{numbers:r}}function C(e){const t=[];for(const i of e.replace(/\\r\\n?/g,\"\\n\").split(\"\\n\"))for(const e of i.split(w)){const i=e.trim();if(\"\"===i)continue;const o=P(i);if(\"reason\"in o)t.push({value:i,reason:o.reason});else for(const e of o.numbers)t.push({value:k(e)})}return t}function k(e){const i=t(e,\"US\");return i?i.formatNational():e}const E=new Map;function T(e,i=[]){const o=new Map(i.map(e=>[e.e164,e.message])),n=new Map;return e.map((e,i)=>{var s;if(\"\"===e.trim())return{status:\"empty\"};const r=function(e){const t=E.get(e);if(t)return t;const i=C(e);return E.size>500&&E.clear(),E.set(e,i),i}(e);if(1!==r.length)return{status:\"problem\",reason:\"ambiguous\"};const a=r[0];if(!a||a.reason)return{status:\"problem\",reason:null!==(s=null==a?void 0:a.reason)&&void 0!==s?s:\"invalid\"};const l=t(a.value,\"US\");if(!l)return{status:\"problem\",reason:\"invalid\"};const d=l.number,c=o.get(d);if(c)return{status:\"server\",e164:d,message:c};const u=n.get(d);return void 0!==u?{status:\"duplicate\",e164:d,firstSeenIndex:u}:(n.set(d,i),{status:\"ok\",e164:d})})}function N(e,t=[]){return T(e,t).map(e=>\"ok\"===e.status?e.e164:null).filter(e=>null!==e)}function D(e,t,i){const o=T(e,t);if(o.some(e=>\"problem\"===e.status||\"server\"===e.status||\"duplicate\"===e.status))return!1;const n=o.filter(e=>\"ok\"===e.status).length;return n>0&&n<=i}const O=\"\\n * {\\n box-sizing: border-box;\\n font-family: var(--ds-font-family);\\n }\\n\\n :focus-visible {\\n outline: none;\\n box-shadow: var(--ds-focus-ring);\\n }\\n\",_={play:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M8 5v14l11-7z\"/></svg>',pause:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"/></svg>',phone:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z\"/></svg>',trash:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"/></svg>',chevronRight:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>',chevronLeft:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>',chevronDown:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/></svg>',spinner:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\" opacity=\"0.25\"/><path d=\"M12 2a10 10 0 0 1 10 10\" stroke-linecap=\"round\"/></svg>',inbound:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M20 5.41L18.59 4 7 15.59V9H5v10h10v-2H8.41z\"/></svg>',outbound:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5z\"/></svg>',voicemail:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.5 6C15.46 6 13 8.46 13 11.5c0 1.33.47 2.55 1.26 3.5H9.74c.79-.95 1.26-2.17 1.26-3.5C11 8.46 8.54 6 5.5 6S0 8.46 0 11.5 2.46 17 5.5 17h13c3.04 0 5.5-2.46 5.5-5.5S21.54 6 18.5 6zm-13 9C3.57 15 2 13.43 2 11.5S3.57 8 5.5 8 9 9.57 9 11.5 7.43 15 5.5 15zm13 0c-1.93 0-3.5-1.57-3.5-3.5S16.57 8 18.5 8 22 9.57 22 11.5 20.43 15 18.5 15z\"/></svg>',sparkle:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M9.5 2l2.25 4.5L16 9.5l-4.25 3L9.5 17l-2.25-4.5L3 9.5l4.25-3L9.5 2zm9 10l1.125 2.25L22 15.5l-2.375 1.25L18.5 19l-1.125-2.25L15 15.5l2.375-1.25L18.5 12z\"/></svg>',document:'<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\"/></svg>'};class L extends((()=>\"undefined\"!=typeof HTMLElement?HTMLElement:class{})()){constructor(){super(),this.instance=null,this.isInitialized=!1,this.locale=v,this.formatting={},this.icons=Object.assign({},_),this.layoutVariant=\"default\",this.classes={},this._cachedCssVariables=\"\",this._lastAppearanceHash=\"\",this._isMounted=!1,this._isDestroyed=!1,this.attachShadow({mode:\"open\"}),this.addEventListener(\"dialstack-appearance-update\",e=>{this.appearance=e.detail.appearance,this.onAppearanceUpdate(e.detail.appearance)}),this.addEventListener(\"dialstack-logout\",()=>{this.onLogout()})}connectedCallback(){this.instance&&!this.isInitialized&&this.initialize()}disconnectedCallback(){this.cleanup()}setInstance(e){this.instance=e,this.appearance=e.getAppearance(),this.isConnected&&!this.isInitialized&&this.initialize()}cleanup(){}mount(e){if(this._isDestroyed)throw new Error(\"DialStack: Cannot mount a destroyed component\");return this._isMounted?(console.warn(\"DialStack: Component is already mounted\"),this):(e.appendChild(this),this._isMounted=!0,this)}unmount(){if(this._isDestroyed)throw new Error(\"DialStack: Cannot unmount a destroyed component\");return this._isMounted?(this.parentElement&&this.parentElement.removeChild(this),this._isMounted=!1,this):(console.warn(\"DialStack: Component is not mounted\"),this)}destroy(){this._isDestroyed||(this._isMounted&&this.unmount(),this.cleanup(),this.shadowRoot&&(this.shadowRoot.innerHTML=\"\"),this.instance=null,this._cachedCssVariables=\"\",this._onLoaderStart=void 0,this._onLoadError=void 0,this.isInitialized=!1,this._isDestroyed=!0)}isMounted(){return this._isMounted}isDestroyed(){return this._isDestroyed}setLocale(e){this.locale=e,this.isInitialized&&this.render()}setFormatting(e){this.formatting=Object.assign(Object.assign({},this.formatting),e),this.isInitialized&&this.render()}setIcons(e){this.icons=Object.assign(Object.assign({},this.icons),e),this.isInitialized&&this.render()}setLayoutVariant(e){this.layoutVariant=e,this.isInitialized&&this.render()}setClasses(e){this.classes=Object.assign(Object.assign({},this.classes),e),this.isInitialized&&this.render()}escapeHtml(e){return e.replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")}getClassNames(...e){const t=[];this.classes.base&&t.push(this.classes.base);for(const i of e){const e=this.classes[i];e&&t.push(e)}return t.join(\" \")}setOnLoaderStart(e){this._onLoaderStart=e}setOnLoadError(e){this._onLoadError=e}t(e,t){const i=e.split(\".\");let o=this.locale;for(const t of i){if(!o||\"object\"!=typeof o||!(t in o))return e;o=o[t]}if(\"string\"!=typeof o)return e;if(t&&\"count\"in t){const i=`${e}${1===t.count?\"_one\":\"_other\"}`,o=this.t(i);if(o!==i)return o.replace(/\\{(\\w+)\\}/g,(e,i)=>{var o;return String(null!==(o=t[i])&&void 0!==o?o:\"\")})}return t?o.replace(/\\{(\\w+)\\}/g,(e,i)=>{var o;return String(null!==(o=t[i])&&void 0!==o?o:\"\")}):o}onAppearanceUpdate(e){this.isInitialized&&this.render()}onLogout(){this.shadowRoot&&(this.shadowRoot.innerHTML=\"\"),this.isInitialized=!1}fetchComponentData(e){return i(this,void 0,void 0,function*(){if(!this.instance)throw new Error(\"DialStack: Component not initialized with instance\");const t=yield this.instance.fetchApi(e);if(!t.ok){const e=yield t.text();throw new Error(`DialStack API error: ${t.status} ${e}`)}return t.json()})}applyAppearanceStyles(){const e=this.computeAppearanceHash();return e===this._lastAppearanceHash&&this._cachedCssVariables||(this._cachedCssVariables=this.generateCssVariables(),this._lastAppearanceHash=e),this._cachedCssVariables+O}computeAppearanceHash(){var e,t;const i=(null===(e=this.appearance)||void 0===e?void 0:e.variables)||{};return`${(null===(t=this.appearance)||void 0===t?void 0:t.theme)||\"light\"}:${this.layoutVariant}:${JSON.stringify(i)}`}generateCssVariables(){var e,t;const i=(null===(e=this.appearance)||void 0===e?void 0:e.variables)||{},o=\"dark\"===((null===(t=this.appearance)||void 0===t?void 0:t.theme)||\"light\"),n=i.colorPrimary||\"#6772E5\",s=i.colorPrimaryHover||\"#5469d4\",r=i.colorBackground||(o?\"#1a1a1a\":\"#ffffff\"),a=i.colorText||(o?\"#ffffff\":\"#1a1a1a\"),l=i.colorTextSecondary||(o?\"rgba(255,255,255,0.6)\":\"rgba(0,0,0,0.6)\"),d=i.colorPlaceholder||\"color-mix(in srgb, var(--ds-color-text-secondary) 50%, transparent)\",c=i.colorDanger||\"#e5484d\",u=i.colorSuccess||\"#30a46c\",h=i.colorWarning||\"#f5a623\",p=i.colorSurfaceSubtle||(o?\"rgba(255,255,255,0.02)\":\"rgba(0,0,0,0.02)\"),m=i.colorBorder||(o?\"rgba(255,255,255,0.1)\":\"rgba(0,0,0,0.1)\"),v=i.colorBorderSubtle||(o?\"rgba(255,255,255,0.05)\":\"rgba(0,0,0,0.05)\"),f=i.colorInputBackground||r,b=i.fontFamily||'-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',g=i.fontSizeBase||\"14px\",y=i.fontSizeSmall||\"12px\",S=i.fontSizeLarge||\"16px\",w=i.fontSizeXLarge||\"18px\",$=i.fontWeightNormal||\"400\",A=i.fontWeightMedium||\"500\",x=i.fontWeightBold||\"600\",P=i.lineHeight||\"1.5\",C=i.spacingUnit||\"8px\",k=i.spacingXs||\"4px\",E=i.spacingSm||\"8px\",T=i.spacingMd||\"12px\",N=i.spacingLg||\"16px\",D=i.spacingXl||\"24px\",O=i.borderRadius||\"4px\",_=i.borderRadiusSmall||\"2px\",L=i.borderRadiusLarge||\"8px\",F=i.transitionDuration||\"0.15s\",R=i.focusRingColor||n,I=i.focusRingWidth||\"2px\",j=i.focusRingOffset||\"0\",q=i.controlHeight||\"auto\",B=i.iconSize||\"24px\",U=i.iconSizeSmall||\"20px\",M=i.playerButtonSize||\"44px\",z=i.playerProgressHeight||\"4px\",H=i.playerProgressHandleSize||\"14px\",V=i.unreadIndicatorSize||\"10px\",J=i.spinnerSize||\"24px\",Y=i.timeDisplayWidth||\"36px\",W=\"compact\"===this.layoutVariant?.75:\"comfortable\"===this.layoutVariant?1.25:1,G=`${Math.round(4*W)}px`,Q=`${Math.round(8*W)}px`,K=`${Math.round(12*W)}px`,Z=`${Math.round(16*W)}px`,X=`${Math.round(24*W)}px`;return`\\n :host {\\n /* Layout variant */\\n --ds-layout-variant: ${this.layoutVariant};\\n --ds-layout-spacing-xs: ${G};\\n --ds-layout-spacing-sm: ${Q};\\n --ds-layout-spacing-md: ${K};\\n --ds-layout-spacing-lg: ${Z};\\n --ds-layout-spacing-xl: ${X};\\n\\n /* Colors - Primary */\\n --ds-color-primary: ${n};\\n --ds-color-primary-hover: ${s};\\n\\n /* Colors - Semantic */\\n --ds-color-background: ${r};\\n --ds-color-text: ${a};\\n --ds-color-text-secondary: ${l};\\n --ds-color-placeholder: ${d};\\n --ds-color-danger: ${c};\\n --ds-color-success: ${u};\\n --ds-color-warning: ${h};\\n\\n /* Colors - Surface */\\n --ds-color-surface-subtle: ${p};\\n --ds-color-border: ${m};\\n --ds-color-border-subtle: ${v};\\n --ds-color-input-background: ${f};\\n\\n /* Typography */\\n --ds-font-family: ${b};\\n --ds-font-size-base: ${g};\\n --ds-font-size-small: ${y};\\n --ds-font-size-large: ${S};\\n --ds-font-size-xlarge: ${w};\\n --ds-font-weight-normal: ${$};\\n --ds-font-weight-medium: ${A};\\n --ds-font-weight-bold: ${x};\\n --ds-line-height: ${P};\\n\\n /* Spacing */\\n --ds-spacing-unit: ${C};\\n --ds-spacing-xs: ${k};\\n --ds-spacing-sm: ${E};\\n --ds-spacing-md: ${T};\\n --ds-spacing-lg: ${N};\\n --ds-spacing-xl: ${D};\\n\\n /* Border */\\n --ds-border-radius: ${O};\\n --ds-border-radius-small: ${_};\\n --ds-border-radius-large: ${L};\\n --ds-border-radius-round: 50%;\\n\\n /* Effects */\\n --ds-transition-duration: ${F};\\n --ds-focus-ring: 0 0 0 ${I} ${R};\\n --ds-focus-ring-color: ${R};\\n --ds-focus-ring-width: ${I};\\n --ds-focus-ring-offset: ${j};\\n\\n /* Controls */\\n --ds-control-height: ${q};\\n\\n /* Icon sizes */\\n --ds-icon-size: ${B};\\n --ds-icon-size-small: ${U};\\n\\n /* Player/media controls */\\n --ds-player-button-size: ${M};\\n --ds-player-progress-height: ${z};\\n --ds-player-progress-handle-size: ${H};\\n\\n /* Indicators */\\n --ds-unread-indicator-size: ${V};\\n\\n /* Spinner */\\n --ds-spinner-size: ${J};\\n\\n /* Time display */\\n --ds-time-display-width: ${Y};\\n }\\n `}}export{r as A,L as B,u as D,o as R,i as _,v as a,f as b,T as c,_ as d,m as e,k as f,S as g,y as h,a as i,s as j,n as k,D as l,h as m,p as n,C as p,N as r};\n//# sourceMappingURL=pure-pure-D8bEzX6U.mjs.map\n",null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultStorage","defaultLocale","_jsx","_jsxs","D","_Fragment"],"mappings":"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"}
|