Browse Source

更新版本到 2.0.0-alpha.4

ChangeLog
1. 新增 ClientPlugin 机制,允许加载 Client 插件
kevin.song 5 years ago
parent
commit
0563600b06
6 changed files with 234 additions and 15 deletions
  1. 38 0
      docs/classes/client.html
  2. 4 0
      docs/index.html
  3. 154 0
      docs/interfaces/clientplugin.html
  4. 32 9
      lib/index.d.ts
  5. 5 5
      lib/index.js
  6. 1 1
      package.json

+ 38 - 0
docs/classes/client.html

@@ -98,6 +98,7 @@
 								<li class="tsd-kind-method tsd-parent-kind-class tsd-is-external"><a href="client.html#subscribe" class="tsd-kind-icon">subscribe</a></li>
 								<li class="tsd-kind-method tsd-parent-kind-class tsd-is-external"><a href="client.html#unpublish" class="tsd-kind-icon">unpublish</a></li>
 								<li class="tsd-kind-method tsd-parent-kind-class tsd-is-external"><a href="client.html#unsubscribe" class="tsd-kind-icon">unsubscribe</a></li>
+								<li class="tsd-kind-method tsd-parent-kind-class tsd-is-static tsd-is-external"><a href="client.html#use" class="tsd-kind-icon">use</a></li>
 							</ul>
 						</section>
 					</div>
@@ -578,6 +579,40 @@ client.on(<span class="hljs-string">&#x27;stream-added&#x27;</span>, handleStrea
 						</li>
 					</ul>
 				</section>
+				<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-static tsd-is-external">
+					<a name="use" class="tsd-anchor"></a>
+					<h3><span class="tsd-flag ts-flagStatic">Static</span> use</h3>
+					<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-static tsd-is-external">
+						<li class="tsd-signature tsd-kind-icon">use<span class="tsd-signature-symbol">(</span>plugin<span class="tsd-signature-symbol">: </span><a href="../interfaces/clientplugin.html" class="tsd-signature-type">ClientPlugin</a>, options<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
+					</ul>
+					<ul class="tsd-descriptions">
+						<li class="tsd-description">
+							<aside class="tsd-sources">
+							</aside>
+							<div class="tsd-comment tsd-typography">
+								<div class="lead">
+									<p>加载 Client 插件,使用插件功能</p>
+								</div>
+							</div>
+							<h4 class="tsd-parameters-title">Parameters</h4>
+							<ul class="tsd-parameters">
+								<li>
+									<h5>plugin: <a href="../interfaces/clientplugin.html" class="tsd-signature-type">ClientPlugin</a></h5>
+									<div class="tsd-comment tsd-typography">
+										<p>插件</p>
+									</div>
+								</li>
+								<li>
+									<h5><span class="tsd-flag ts-flagOptional">Optional</span> options: <span class="tsd-signature-type">any</span></h5>
+									<div class="tsd-comment tsd-typography">
+										<p>插件初始化参数</p>
+									</div>
+								</li>
+							</ul>
+							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
+						</li>
+					</ul>
+				</section>
 			</section>
 		</div>
 		<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
@@ -631,6 +666,9 @@ client.on(<span class="hljs-string">&#x27;stream-added&#x27;</span>, handleStrea
 							<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-external">
 								<a href="client.html#unsubscribe" class="tsd-kind-icon">unsubscribe</a>
 							</li>
+							<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-static tsd-is-external">
+								<a href="client.html#use" class="tsd-kind-icon">use</a>
+							</li>
 						</ul>
 					</li>
 				</ul>

+ 4 - 0
docs/index.html

@@ -81,6 +81,7 @@
 							<ul class="tsd-index-list">
 								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/audiostats.html" class="tsd-kind-icon">Audio<wbr>Stats</a></li>
 								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/clientoptions.html" class="tsd-kind-icon">Client<wbr>Options</a></li>
+								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/clientplugin.html" class="tsd-kind-icon">Client<wbr>Plugin</a></li>
 								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/connectionstates.html" class="tsd-kind-icon">Connection<wbr>States</a></li>
 								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/customvideoprofile.html" class="tsd-kind-icon">Custom<wbr>Video<wbr>Profile</a></li>
 								<li class="tsd-kind-interface tsd-is-external"><a href="interfaces/devicedetectionoptions.html" class="tsd-kind-icon">Device<wbr>Detection<wbr>Options</a></li>
@@ -1189,6 +1190,9 @@ client.join(<span class="hljs-string">&#x27;roomId&#x27;</span>, <span class="hl
 						<a href="interfaces/clientoptions.html" class="tsd-kind-icon">Client<wbr>Options</a>
 					</li>
 					<li class=" tsd-kind-interface tsd-is-external">
+						<a href="interfaces/clientplugin.html" class="tsd-kind-icon">Client<wbr>Plugin</a>
+					</li>
+					<li class=" tsd-kind-interface tsd-is-external">
 						<a href="interfaces/connectionstates.html" class="tsd-kind-icon">Connection<wbr>States</a>
 					</li>
 					<li class=" tsd-kind-interface tsd-is-external">

+ 154 - 0
docs/interfaces/clientplugin.html

@@ -0,0 +1,154 @@
+<!doctype html>
+<html class="default no-js">
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<title>ClientPlugin | @urtc/sdk-web</title>
+	<meta name="description" content="Documentation for @urtc/sdk-web">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<link rel="stylesheet" href="../assets/css/main.css">
+</head>
+<body>
+<header>
+	<div class="tsd-page-toolbar">
+		<div class="container">
+			<div class="table-wrap">
+				<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
+					<div class="field">
+						<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
+						<input id="tsd-search-field" type="text" />
+					</div>
+					<ul class="results">
+						<li class="state loading">Preparing search index...</li>
+						<li class="state failure">The search index is not available</li>
+					</ul>
+					<a href="../index.html" class="title">@urtc/sdk-web</a>
+				</div>
+				<div class="table-cell" id="tsd-widgets">
+					<div id="tsd-filter">
+						<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
+						<div class="tsd-filter-group">
+							<div class="tsd-select" id="tsd-filter-visibility">
+								<span class="tsd-select-label">All</span>
+								<ul class="tsd-select-list">
+									<li data-value="public">Public</li>
+									<li data-value="protected">Public/Protected</li>
+									<li data-value="private" class="selected">All</li>
+								</ul>
+							</div>
+							<input type="checkbox" id="tsd-filter-inherited" checked />
+							<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
+							<input type="checkbox" id="tsd-filter-externals" checked />
+							<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
+						</div>
+					</div>
+					<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
+				</div>
+			</div>
+		</div>
+	</div>
+	<div class="tsd-page-title">
+		<div class="container">
+			<ul class="tsd-breadcrumb">
+				<li>
+					<a href="../index.html">Globals</a>
+				</li>
+				<li>
+					<a href="clientplugin.html">ClientPlugin</a>
+				</li>
+			</ul>
+			<h1>Interface ClientPlugin</h1>
+		</div>
+	</div>
+</header>
+<div class="container container-main">
+	<div class="row">
+		<div class="col-8 col-content">
+			<section class="tsd-panel tsd-comment">
+				<div class="tsd-comment tsd-typography">
+				</div>
+			</section>
+			<section class="tsd-panel tsd-hierarchy">
+				<h3>Hierarchy</h3>
+				<ul class="tsd-hierarchy">
+					<li>
+						<span class="target">ClientPlugin</span>
+					</li>
+				</ul>
+			</section>
+			<section class="tsd-panel-group tsd-index-group">
+				<h2>Index</h2>
+				<section class="tsd-panel tsd-index-panel">
+					<div class="tsd-index-content">
+						<section class="tsd-index-section tsd-is-external">
+							<h3>Properties</h3>
+							<ul class="tsd-index-list">
+								<li class="tsd-kind-property tsd-parent-kind-interface tsd-is-external"><a href="clientplugin.html#install" class="tsd-kind-icon">install</a></li>
+								<li class="tsd-kind-property tsd-parent-kind-interface tsd-is-external"><a href="clientplugin.html#name" class="tsd-kind-icon">name</a></li>
+							</ul>
+						</section>
+					</div>
+				</section>
+			</section>
+			<section class="tsd-panel-group tsd-member-group tsd-is-external">
+				<h2>Properties</h2>
+				<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-external">
+					<a name="install" class="tsd-anchor"></a>
+					<h3>install</h3>
+					<div class="tsd-signature tsd-kind-icon">install<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Function</span></div>
+					<aside class="tsd-sources">
+					</aside>
+				</section>
+				<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-external">
+					<a name="name" class="tsd-anchor"></a>
+					<h3>name</h3>
+					<div class="tsd-signature tsd-kind-icon">name<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
+					<aside class="tsd-sources">
+					</aside>
+				</section>
+			</section>
+		</div>
+		<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
+			<nav class="tsd-navigation primary">
+				<ul>
+					<li class="globals  ">
+						<a href="../index.html"><em>Globals</em></a>
+					</li>
+				</ul>
+			</nav>
+			<nav class="tsd-navigation secondary menu-sticky">
+				<ul class="before-current">
+				</ul>
+				<ul class="current">
+					<li class="current tsd-kind-interface tsd-is-external">
+						<a href="clientplugin.html" class="tsd-kind-icon">Client<wbr>Plugin</a>
+						<ul>
+							<li class=" tsd-kind-property tsd-parent-kind-interface tsd-is-external">
+								<a href="clientplugin.html#install" class="tsd-kind-icon">install</a>
+							</li>
+							<li class=" tsd-kind-property tsd-parent-kind-interface tsd-is-external">
+								<a href="clientplugin.html#name" class="tsd-kind-icon">name</a>
+							</li>
+						</ul>
+					</li>
+				</ul>
+				<ul class="after-current">
+				</ul>
+			</nav>
+		</div>
+	</div>
+</div>
+<footer class="with-border-bottom">
+	<div class="container">
+		<h2>Legend</h2>
+		<div class="tsd-legend-group">
+		</div>
+	</div>
+</footer>
+<div class="container tsd-generator">
+	<p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
+</div>
+<div class="overlay"></div>
+<script src="../assets/js/main.js"></script>
+</body>
+</html>

+ 32 - 9
lib/index.d.ts

@@ -81,8 +81,10 @@ declare module '@urtc/sdk-web' {
   export * from '__@urtc/sdk-web/stream/local-stream';
   export * from '__@urtc/sdk-web/stream/remote-stream';
   export * from '__@urtc/sdk-web/server';
+  export * from '__@urtc/sdk-web/plugin';
   export * from '__@urtc/sdk-web/version';
   /************** 4 plugin ****************/
+  export { Client };
   export { LocalStream };
   export { RemoteStream } from '__@urtc/sdk-web/stream/remote-stream';
 }
@@ -94,11 +96,18 @@ declare module '__@urtc/sdk-web/client' {
   import { RemoteStream } from '__@urtc/sdk-web/stream/remote-stream';
   import { User } from '__@urtc/sdk-web/user/user';
   import { JoinOptions, RoleType } from '__@urtc/sdk-web/types';
+  import { ClientPlugin } from '__@urtc/sdk-web/plugin';
   /**
     * URTC 客户端,可进行加入、离开房间,发布、订阅流等操作。
     */
   export class Client {
       /**
+        * 加载 Client 插件,使用插件功能
+        * @param plugin - 插件
+        * @param options - 插件初始化参数
+        */
+      static use(plugin: ClientPlugin, options?: any): void;
+      /**
         * 获取远端用户信息
         * @example
         * ```js
@@ -268,10 +277,11 @@ declare module '__@urtc/sdk-web/client' {
 }
 
 declare module '__@urtc/sdk-web/stream/local-stream' {
-  import { Stream, StreamPlugin } from '__@urtc/sdk-web/stream/stream';
+  import { Stream } from '__@urtc/sdk-web/stream/stream';
   import { PlayOptions } from '__@urtc/sdk-web/types';
   import { SwitchDeviceType } from '__@urtc/sdk-web/stream/types';
   import { VideoProfile, ScreenProfile, CustomVideoProfile } from '__@urtc/sdk-web/stream/profile';
+  import { StreamPlugin } from '__@urtc/sdk-web/plugin';
   /**
     * 创建本地流的参数
     */
@@ -1063,13 +1073,6 @@ declare module '__@urtc/sdk-web/stream/stream' {
   import { PlayOptions } from '__@urtc/sdk-web/types';
   import { MediaType, StreamStats } from '__@urtc/sdk-web/stream/types';
   /**
-    * @public
-    */
-  export interface StreamPlugin {
-      name: string;
-      install: Function;
-  }
-  /**
     * LocalStream 和 RemoteStream 的基类
     */
   export class Stream extends EventEmitter {
@@ -1235,7 +1238,8 @@ declare module '__@urtc/sdk-web/stream/stream' {
 }
 
 declare module '__@urtc/sdk-web/stream/remote-stream' {
-  import { Stream, StreamPlugin } from '__@urtc/sdk-web/stream/stream';
+  import { Stream } from '__@urtc/sdk-web/stream/stream';
+  import { StreamPlugin } from '__@urtc/sdk-web/plugin';
   /**
     * 远端流,房间内其他用户发布的流,可通过 client 进行订阅
     */
@@ -1315,6 +1319,23 @@ declare module '__@urtc/sdk-web/server' {
   export function setServers(conf: ServerConfig): void;
 }
 
+declare module '__@urtc/sdk-web/plugin' {
+  /**
+    * @public
+    */
+  export interface StreamPlugin {
+      name: string;
+      install: Function;
+  }
+  /**
+    * @public
+    */
+  export interface ClientPlugin {
+      name: string;
+      install: Function;
+  }
+}
+
 declare module '__@urtc/sdk-web/version' {
   /**
     * 当前 sdk 的版本号
@@ -1517,8 +1538,10 @@ declare module '__@urtc/sdk-web/' {
   export * from '__@urtc/sdk-web/stream/local-stream';
   export * from '__@urtc/sdk-web/stream/remote-stream';
   export * from '__@urtc/sdk-web/server';
+  export * from '__@urtc/sdk-web/plugin';
   export * from '__@urtc/sdk-web/version';
   /************** 4 plugin ****************/
+  export { Client };
   export { LocalStream };
   export { RemoteStream } from '__@urtc/sdk-web/stream/remote-stream';
 }

File diff suppressed because it is too large
+ 5 - 5
lib/index.js


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "@urtc/sdk-web",
-  "version": "2.0.0-alpha.3",
+  "version": "2.0.0-alpha.4",
   "description": "UCloud RTC javascript SDK",
   "main": "lib/index.js",
   "types": "lib/index.d.ts",