@16x/webphone-sdk 3.1.8 → 3.1.9

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.
@@ -1,6 +1,6 @@
1
1
  import { n as e, t } from "./redact-DB3CMbsK.js";
2
2
  //#region src/version.ts
3
- var n = "3.1.8", r = class {
3
+ var n = "3.1.9", r = class {
4
4
  capacity;
5
5
  entries = [];
6
6
  constructor(e) {
@@ -1 +1 @@
1
- const e=require("./redact-Bq26pObO.cjs");var t=`3.1.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}});
1
+ const e=require("./redact-Bq26pObO.cjs");var t=`3.1.9`,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}});
@@ -14,6 +14,17 @@ export interface AgentStatusRequest {
14
14
  status: 'available' | 'offline' | 'break';
15
15
  reason: string;
16
16
  }
17
+ /**
18
+ * 坐席状态调用时可以由 SDK 带上的上下文:当前会话里跟凭据有关的那部分。
19
+ *
20
+ * 老平台把 fs token 直接拼在软电话地址上(`?token=…`),而同一个 token 也用于 HTTP 接口的
21
+ * `Authorization` —— 所以会话来源可以直接拿它去打 `seat/account/get` 与 `seats/set-status`,
22
+ * 不必再单独换一次票。SDK 有会话时(`client.setAgentStatus`)会把当前会话的地址带上来。
23
+ */
24
+ export interface AgentStatusContext {
25
+ /** 当前会话的软电话地址,形如 `wss://…/api/fs/sip-ws?token=…` */
26
+ wssUrl?: string;
27
+ }
17
28
  export interface IceServer {
18
29
  urls: string[];
19
30
  username?: string;
@@ -85,10 +96,4 @@ export interface CallTransportSession {
85
96
  export interface CallTransport {
86
97
  dial(target: string, options?: CallDialOptions): CallTransportSession;
87
98
  }
88
- export interface RefreshSessionRequest {
89
- refresh?: Array<'sip_register_ticket' | 'wss_ticket' | 'turn_credentials'>;
90
- }
91
- export interface CapabilitiesResponse {
92
- capabilities: string[];
93
- }
94
99
  export declare function parseSessionResponse(response: WebPhoneEnvelope<WebPhoneSession>): WebPhoneSession;
@@ -1,14 +1,12 @@
1
- import { AgentStatusRequest, CreateSessionRequest, MediaConstraints, WebPhoneSession } from '../api/contracts.js';
2
- import { TokenProvider } from '../auth/TokenManager.js';
1
+ import { AgentStatusContext, AgentStatusRequest, CreateSessionRequest, MediaConstraints, WebPhoneSession } from '../api/contracts.js';
3
2
  import { CCBarEvents, MediaManager as PublicMedia, SharedWorkerOptions, SharedWorkerState } from '../types.js';
4
3
  import { SharedWorkerConstructor } from '../shared/SharedWorkerFactory.js';
5
4
  import { DialOptions } from './CallManager.js';
6
5
  import { CCBarCall, CallPlatform } from './CCBarCall.js';
7
6
  import { DiagnosticsOptions, DiagnosticsReport } from '../diagnostics/Diagnostics.js';
8
7
  /**
9
- * 自定义会话来源:给「没有新版 WebPhone API」的旧平台/自建网关用。
10
- * 提供后 SDK 不再请求 `POST {baseUrl}/webphone/v1/sessions`,完全由这里给会话;
11
- * 签名、解密等必须在服务端做的事,由接入方自己的接口完成。
8
+ * 会话来源:由接入方在自己的服务端把会话拼好后交给 SDK。
9
+ * 签名、解密等必须在服务端做的事,由接入方自己的接口完成;SDK 不请求平台的会话接口。
12
10
  */
13
11
  export interface SessionProvider {
14
12
  createSession(request: CreateSessionRequest): Promise<WebPhoneSession>;
@@ -16,15 +14,13 @@ export interface SessionProvider {
16
14
  refreshSession?(sessionId: string): Promise<WebPhoneSession>;
17
15
  /** 缺省时不做清理 */
18
16
  deleteSession?(sessionId: string): Promise<void>;
19
- /** 缺省时调用 setAgentStatus 会抛 CAPABILITY_NOT_SUPPORTED */
20
- setAgentStatus?(request: AgentStatusRequest): Promise<void>;
17
+ /** 缺省时调用 setAgentStatus 会抛 CAPABILITY_NOT_SUPPORTED;`context` 里带当前会话的凭据线索 */
18
+ setAgentStatus?(request: AgentStatusRequest, context?: AgentStatusContext): Promise<void>;
21
19
  invalidateToken?(): void;
22
20
  }
23
21
  export interface CCBarClientOptions {
24
22
  readonly baseUrl?: string;
25
- /** 用 sessionProvider 时可以省略(那条路不发 token 请求) */
26
- readonly tokenProvider?: TokenProvider;
27
- /** 自己提供会话(旧平台兼容模式);与 tokenProvider + 新版 API 二选一 */
23
+ /** 自己提供会话(必填);未提供时构造抛 CONFIG_INVALID */
28
24
  readonly sessionProvider?: SessionProvider;
29
25
  readonly locale?: string;
30
26
  readonly platform?: CallPlatform;
@@ -94,14 +90,11 @@ export declare class CCBarClient {
94
90
  private readonly deletedSessions;
95
91
  private readonly ownedSessionIds;
96
92
  private readonly terminalReleaseOperations;
97
- private tokenRequest;
98
93
  private sharedWorkerSelection;
99
94
  constructor(options: CCBarClientOptions);
100
95
  static checkSupport(): Promise<import('../types.js').PlatformSupport>;
101
96
  initialize(): Promise<void>;
102
- connect(options?: {
103
- readonly extension?: string;
104
- }): Promise<void>;
97
+ connect(): Promise<void>;
105
98
  disconnect(): Promise<void>;
106
99
  dispose(): Promise<void>;
107
100
  recover(): Promise<void>;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-LQAtyhLu.cjs"),t=require("../redact-Bq26pObO.cjs");require("../createJsSipFactory-Dr8HbLl-.cjs"),exports.Diagnostics=e.t,exports.RingBuffer=e.n,exports.diagnosticsVersion=e.r,exports.redactText=t.t,exports.redactValue=t.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../Diagnostics-DkKlZQnY.cjs"),t=require("../redact-Bq26pObO.cjs");require("../createJsSipFactory-Dr8HbLl-.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-BaGHYBAX.js";
1
+ import { n as e, r as t, t as n } from "../Diagnostics-CfbmMp-b.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-39dch6xL.cjs"),t=require("./CCBarClient-BqMNSIu-.cjs"),n=require("./Diagnostics-LQAtyhLu.cjs"),r=require("./redact-Bq26pObO.cjs");require("./diagnostics/index.cjs"),require("./createJsSipFactory-Dr8HbLl-.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.a,exports.CCBarClient=t.t,exports.CCBarError=e.i,exports.CallManager=t.i,exports.CallStateError=t.c,exports.Diagnostics=n.t,exports.RingBuffer=n.n,exports.TokenManager=t.s,exports.TypedEventBus=t.p,exports.WebPhoneApi=t.o,exports.assertCallTransition=t.l,exports.canTransition=t.u,exports.createSdk=a,exports.createSharedWorkerSelection=t.n,exports.diagnosticsVersion=n.r,exports.parseSessionResponse=i,exports.redactText=r.t,exports.redactValue=r.n,exports.resolveWorkerUrl=t.r,exports.transition=t.d,exports.transitions=t.f,exports.version=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./SharedWorkerProtocol-39dch6xL.cjs"),t=require("./CCBarClient-B6WqgloY.cjs"),n=require("./Diagnostics-DkKlZQnY.cjs"),r=require("./redact-Bq26pObO.cjs");require("./diagnostics/index.cjs"),require("./createJsSipFactory-Dr8HbLl-.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.a,exports.CCBarClient=t.t,exports.CCBarError=e.i,exports.CallManager=t.i,exports.CallStateError=t.o,exports.Diagnostics=n.t,exports.RingBuffer=n.n,exports.TypedEventBus=t.d,exports.assertCallTransition=t.s,exports.canTransition=t.c,exports.createSdk=a,exports.createSharedWorkerSelection=t.n,exports.diagnosticsVersion=n.r,exports.parseSessionResponse=i,exports.redactText=r.t,exports.redactValue=r.n,exports.resolveWorkerUrl=t.r,exports.transition=t.l,exports.transitions=t.u,exports.version=o;
package/dist/index.d.ts CHANGED
@@ -11,9 +11,7 @@ export * from './types.js';
11
11
  export * from './errors/CCBarError.js';
12
12
  export * from './events/TypedEventBus.js';
13
13
  export * from './state/callStateMachine.js';
14
- export * from './auth/TokenManager.js';
15
14
  export * from './api/contracts.js';
16
- export * from './api/WebPhoneApi.js';
17
15
  export * from './core/CCBarCall.js';
18
16
  export * from './core/CallManager.js';
19
17
  export * from './core/CCBarClient.js';
package/dist/index.js CHANGED
@@ -1,22 +1,22 @@
1
1
  import { i as e } from "./SharedWorkerProtocol-DKVQ5-po.js";
2
- import { a as t, c as n, d as r, f as i, i as a, l as o, n as s, o as c, p as l, r as u, s as d, t as f, u as p } from "./CCBarClient-DdxjJrdT.js";
3
- import { n as m, r as h, t as g } from "./Diagnostics-BaGHYBAX.js";
4
- import { n as _, t as v } from "./redact-DB3CMbsK.js";
2
+ import { a as t, c as n, d as r, i, l as a, n as o, o as s, r as c, s as l, t as u, u as d } from "./CCBarClient-CfHT0tl2.js";
3
+ import { n as f, r as p, t as m } from "./Diagnostics-CfbmMp-b.js";
4
+ import { n as h, t as g } from "./redact-DB3CMbsK.js";
5
5
  import "./diagnostics/index.js";
6
6
  //#region src/api/contracts.ts
7
- function y(e) {
7
+ function _(e) {
8
8
  if (e.code !== "OK") throw TypeError(`Unexpected session response code: ${e.code}`);
9
9
  if (e.data === void 0 || e.data === null) throw TypeError("Unexpected session response: missing data");
10
10
  return e.data;
11
11
  }
12
12
  //#endregion
13
13
  //#region src/index.ts
14
- function b(e = {}) {
14
+ function v(e = {}) {
15
15
  return {
16
16
  version: "0.1.0",
17
17
  options: e
18
18
  };
19
19
  }
20
- var x = "0.1.0";
20
+ var y = "0.1.0";
21
21
  //#endregion
22
- export { t as CCBarCall, f as CCBarClient, e as CCBarError, a as CallManager, n as CallStateError, g as Diagnostics, m as RingBuffer, d as TokenManager, l as TypedEventBus, c as WebPhoneApi, o as assertCallTransition, p as canTransition, b as createSdk, s as createSharedWorkerSelection, h as diagnosticsVersion, y as parseSessionResponse, v as redactText, _ as redactValue, u as resolveWorkerUrl, r as transition, i as transitions, x as version };
22
+ export { t as CCBarCall, u as CCBarClient, e as CCBarError, i as CallManager, s as CallStateError, m as Diagnostics, f as RingBuffer, r as TypedEventBus, l as assertCallTransition, n as canTransition, v as createSdk, o as createSharedWorkerSelection, p as diagnosticsVersion, _ as parseSessionResponse, g as redactText, h as redactValue, c as resolveWorkerUrl, a as transition, d as transitions, y as version };