@16x/webphone-sdk 3.2.7 → 3.2.8
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/CHANGELOG.md +9 -0
- package/dist/{Diagnostics-2u57yWWY.cjs → Diagnostics-B0kPq1DA.cjs} +1 -1
- package/dist/{Diagnostics-Cf_5N1Sy.js → Diagnostics-C2iTL_c-.js} +1 -1
- package/dist/core/CCBarClient.d.ts +3 -0
- package/dist/core/CallManager.d.ts +5 -0
- package/dist/diagnostics/index.cjs +1 -1
- package/dist/diagnostics/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/index.umd.js +1 -1
- package/dist/legacy/index.cjs +1 -1
- package/dist/legacy/index.js +1 -1
- package/dist/legacySessionProvider-B4uTsst_.cjs +1 -0
- package/dist/{legacySessionProvider-DiE43FBy.js → legacySessionProvider-CiyiokZ_.js} +93 -43
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/legacySessionProvider-CVdDA4kI.cjs +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.2.8
|
|
4
|
+
|
|
5
|
+
修复平台抖动后 dial 永久不可自愈(CALL_NOT_CONNECTED):
|
|
6
|
+
|
|
7
|
+
- `ReconnectManager` 新增 `isRecovered` 校验:recover() 成功返回不再被当作连接已恢复,未恢复按失败继续退避。
|
|
8
|
+
- `recoverInvalidSession` 重建失败不再 `reconnect.cancel()` 永久取消重连循环(3.2.7 事故主根因),保持封顶退避重试。
|
|
9
|
+
- `recoverConnection` 在会话被清空后改走 `performConnect` 全新建会话;在途通话超过 120s 宽限后强制终态(终态事件不可达时)。
|
|
10
|
+
- 媒体释放屏障增加 5s 超时,防止永不 settle 的释放操作锁死重连。
|
|
11
|
+
|
|
3
12
|
## 3.2.7 - 2026-10-08
|
|
4
13
|
|
|
5
14
|
- Treat ICE probe timeouts as unknown instead of permanently marking servers unavailable; preserve
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./redact-Bq26pObO.cjs");var t=`3.2.
|
|
1
|
+
const e=require("./redact-Bq26pObO.cjs");var t=`3.2.8`,n=class{capacity;entries=[];constructor(e){if(this.capacity=e,!Number.isInteger(e)||e<=0)throw RangeError(`RingBuffer capacity must be a positive integer`)}push(e){this.entries.length===this.capacity&&this.entries.shift(),this.entries.push(e)}toArray(){return[...this.entries]}},r=`@16x/webphone-sdk`,i=200,a=class{dependencies;logs=new n(i);now;constructor(e){this.dependencies=e,this.now=e.now??(()=>new Date)}log(t,n,r){this.logs.push({timestamp:this.now().toISOString(),level:t,message:e.t(n),...r===void 0?{}:{context:e.n(r)}})}async getReport(n={}){let i=n.includeRecentLogs!==!1,a=n.includeDeviceNames===!0,u=n.maskPhoneNumbers!==!1,d=this.dependencies.getSnapshot(),f=this.dependencies.getPermission===void 0?d.permission:await o(this.dependencies.getPermission,d.permission),p=a?await s(this.dependencies.getDeviceNames):void 0,m=l(c(this.dependencies.getUserAgent)),h={generatedAt:this.now().toISOString(),sdk:{name:r,version:t},browser:m.browser,os:m.os,...d,permission:f,recentLogs:i?this.logs.toArray():[],...p===void 0?{}:{deviceNames:p}};return e.n(h,{maskPhoneNumbers:u})}};async function o(e,t){try{return await e()}catch{return t}}async function s(e){if(e===void 0)return[];try{return[...await e()]}catch{return[]}}function c(e){if(e!==void 0)try{return e()}catch{return``}return typeof navigator>`u`?``:navigator.userAgent}function l(e){return{browser:u(e),os:d(e)}}function u(e){for(let[t,n]of[[`Edge`,/Edg\/([\d.]+)/],[`Chrome`,/(?:Chrome|CriOS)\/([\d.]+)/],[`Firefox`,/(?:Firefox|FxiOS)\/([\d.]+)/],[`Safari`,/Version\/([\d.]+).*Safari/]]){let r=e.match(n);if(r?.[1]!==void 0)return{name:t,version:r[1]}}return{name:`unknown`,version:``}}function d(e){let t=e.match(/(?:iPhone|iPad).*OS ([\d_]+)/);if(t?.[1]!==void 0)return{name:`iOS`,version:t[1].replaceAll(`_`,`.`)};let n=e.match(/Android ([\d.]+)/);if(n?.[1]!==void 0)return{name:`Android`,version:n[1]};let r=e.match(/Windows NT ([\d.]+)/);if(r?.[1]!==void 0)return{name:`Windows`,version:r[1]};let i=e.match(/Mac OS X ([\d_]+)/);return i?.[1]===void 0?/Linux/.test(e)?{name:`Linux`,version:``}:{name:`unknown`,version:``}:{name:`macOS`,version:i[1].replaceAll(`_`,`.`)}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
|
|
@@ -91,6 +91,7 @@ export declare class CCBarClient {
|
|
|
91
91
|
private sipUnsubscribe?;
|
|
92
92
|
private networkUnsubscribers;
|
|
93
93
|
private networkProbeTimer?;
|
|
94
|
+
private stuckCallsSince;
|
|
94
95
|
private readonly sessionDeleteOperations;
|
|
95
96
|
private readonly deletedSessions;
|
|
96
97
|
private readonly ownedSessionIds;
|
|
@@ -120,6 +121,8 @@ export declare class CCBarClient {
|
|
|
120
121
|
private rollbackConnect;
|
|
121
122
|
private performDispose;
|
|
122
123
|
private awaitMediaReleaseBarriers;
|
|
124
|
+
/** 屏障等待限时:释放操作永不 settle 时不能挂起恢复流程(会锁死 ReconnectManager.running)。 */
|
|
125
|
+
private withBarrierTimeout;
|
|
123
126
|
private detachSipListener;
|
|
124
127
|
private detachManagerListeners;
|
|
125
128
|
private bindManagerEvents;
|
|
@@ -72,6 +72,11 @@ export declare class CallManager {
|
|
|
72
72
|
dispose(options?: {
|
|
73
73
|
readonly terminateCalls?: boolean;
|
|
74
74
|
}): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* 恢复路径专用:传输已断、终态事件不可达时强制清空在途通话(不置 disposed)。
|
|
77
|
+
* 每通 hangup 限时,超时/异常则 dispose 兜底;事件未触达时手动摘除记录并补发终态通知。
|
|
78
|
+
*/
|
|
79
|
+
forceTerminateCalls(hangupTimeoutMs?: number): Promise<void>;
|
|
75
80
|
updateSession(session: WebPhoneSession): void;
|
|
76
81
|
private switchActiveCall;
|
|
77
82
|
private handleStateChanged;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-B0kPq1DA.cjs"),t=require("../redact-Bq26pObO.cjs");require("../createJsSipFactory-B1ORbJiP.cjs"),exports.Diagnostics=e.t,exports.RingBuffer=e.n,exports.diagnosticsVersion=e.r,exports.redactText=t.t,exports.redactValue=t.n;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as e, r as t, t as n } from "../Diagnostics-
|
|
1
|
+
import { n as e, r as t, t as n } from "../Diagnostics-C2iTL_c-.js";
|
|
2
2
|
import { n as r, t as i } from "../redact-DB3CMbsK.js";
|
|
3
3
|
export { n as Diagnostics, e as RingBuffer, t as diagnosticsVersion, i as redactText, r as redactValue };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./SharedWorkerProtocol-C-4KpECM.cjs"),t=require("./legacySessionProvider-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./SharedWorkerProtocol-C-4KpECM.cjs"),t=require("./legacySessionProvider-B4uTsst_.cjs"),n=require("./Diagnostics-B0kPq1DA.cjs"),r=require("./redact-Bq26pObO.cjs");require("./diagnostics/index.cjs"),require("./createJsSipFactory-B1ORbJiP.cjs");function i(e){if(e.code!==`OK`)throw TypeError(`Unexpected session response code: ${e.code}`);if(e.data===void 0||e.data===null)throw TypeError(`Unexpected session response: missing data`);return e.data}function a(e={}){return{version:`0.1.0`,options:e}}var o=`0.1.0`;exports.CCBarCall=t.c,exports.CCBarClient=t.r,exports.CCBarError=e.i,exports.CallManager=t.s,exports.CallStateError=t.l,exports.Diagnostics=n.t,exports.RingBuffer=n.n,exports.TypedEventBus=t.m,exports.assertCallTransition=t.u,exports.canTransition=t.d,exports.createSdk=a,exports.createSharedWorkerSelection=t.i,exports.createTokenSessionProvider=t.n,exports.diagnosticsVersion=n.r,exports.parseSessionResponse=i,exports.redactText=r.t,exports.redactValue=r.n,exports.resolveWorkerUrl=t.a,exports.transition=t.f,exports.transitions=t.p,exports.version=o;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as e } from "./SharedWorkerProtocol-CffZrUXg.js";
|
|
2
|
-
import { a as t, c as n, d as r, f as i, i as a, l as o, m as s, n as c, p as l, r as u, s as d, u as f } from "./legacySessionProvider-
|
|
3
|
-
import { n as p, r as m, t as h } from "./Diagnostics-
|
|
2
|
+
import { a as t, c as n, d as r, f as i, i as a, l as o, m as s, n as c, p as l, r as u, s as d, u as f } from "./legacySessionProvider-CiyiokZ_.js";
|
|
3
|
+
import { n as p, r as m, t as h } from "./Diagnostics-C2iTL_c-.js";
|
|
4
4
|
import { n as g, t as _ } from "./redact-DB3CMbsK.js";
|
|
5
5
|
import "./diagnostics/index.js";
|
|
6
6
|
//#region src/api/contracts.ts
|