fcr-ui-widget-sdk 3.8.0-alpha

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/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { FcrUIWidgetSDKImpl as FcrUIWidgetSDK } from './sdk';
2
+ export type { FcrUIWidgetObserver } from './type';
package/lib/index.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "FcrUIWidgetSDK", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _sdk.FcrUIWidgetSDKImpl;
11
+ }
12
+ });
13
+ var _sdk = require("./sdk");
@@ -0,0 +1,7 @@
1
+ import { getLogger as _getLogger } from 'agora-foundation/lib/logger';
2
+ export declare const getLogger: () => import("agora-foundation/lib/logger").Logger;
3
+ export declare const createLogger: (opts: {
4
+ prefix: string;
5
+ database?: boolean;
6
+ }) => import("agora-foundation/lib/logger").Logger;
7
+ export declare const generateLogObserver: <T>(logger: ReturnType<typeof _getLogger>, callbackMethods: (keyof T)[]) => T;
package/lib/logger.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getLogger = exports.generateLogObserver = exports.createLogger = void 0;
8
+ require("core-js/modules/es.array.concat.js");
9
+ require("core-js/modules/es.array.for-each.js");
10
+ require("core-js/modules/es.object.to-string.js");
11
+ require("core-js/modules/esnext.iterator.constructor.js");
12
+ require("core-js/modules/esnext.iterator.for-each.js");
13
+ require("core-js/modules/web.dom-collections.for-each.js");
14
+ var _logger = require("agora-foundation/lib/logger");
15
+ var _misc = require("agora-foundation/lib/utilities/misc");
16
+ var _logSerializer = require("agora-foundation/lib/decorator/log/log-serializer");
17
+ var getLogger = exports.getLogger = function getLogger() {
18
+ return (0, _logger.getLogger)({
19
+ label: 'fcr-widget-sdk'
20
+ });
21
+ };
22
+ var createLogger = exports.createLogger = function createLogger(opts) {
23
+ return (0, _logger.createLogger)({
24
+ label: 'fcr-widget-sdk',
25
+ prefix: "".concat(opts.prefix, "@").concat((0, _misc.randomString)(5)),
26
+ database: opts.database
27
+ });
28
+ };
29
+ var generateLogObserver = exports.generateLogObserver = function generateLogObserver(logger, callbackMethods) {
30
+ var observer = {};
31
+ callbackMethods.forEach(function (method) {
32
+ observer[method] = function () {
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
35
+ }
36
+ logger.info("[API Callback] ".concat(method, " [parameters: ").concat((0, _logSerializer.serializeArgs)(args), "]"));
37
+ };
38
+ });
39
+ return observer;
40
+ };
package/lib/sdk.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ import type { FcrRoomInfo, FcrRoomSchedule, FcrRoomState, FcrUserInfo } from 'fcr-core/lib/type';
2
+ import { FcrUIWidgetObserver, FcrUIWidgetSDK } from './type';
3
+ export declare class FcrUIWidgetSDKImpl implements FcrUIWidgetSDK {
4
+ protected logger: import("agora-foundation/lib/logger").Logger;
5
+ private _observable;
6
+ private _requestPromises;
7
+ constructor();
8
+ private _addLogObserver;
9
+ private _createCallId;
10
+ private _createRequestParams;
11
+ private _sendRequest;
12
+ getRoomInfo(): Promise<FcrRoomInfo>;
13
+ getRoomSchedule(): Promise<FcrRoomSchedule>;
14
+ getRoomState(): Promise<FcrRoomState>;
15
+ getLocalUser(): Promise<FcrUserInfo>;
16
+ getUserList(): Promise<FcrUserInfo[]>;
17
+ getAllUserCount(): Promise<number>;
18
+ addObserver(observer: FcrUIWidgetObserver): void;
19
+ removeObserver(observer: FcrUIWidgetObserver): void;
20
+ private _handlePostMessage;
21
+ }
package/lib/sdk.js ADDED
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.js");
4
+ require("core-js/modules/es.symbol.description.js");
5
+ require("core-js/modules/es.symbol.to-primitive.js");
6
+ require("core-js/modules/es.error.cause.js");
7
+ require("core-js/modules/es.error.to-string.js");
8
+ require("core-js/modules/es.array.push.js");
9
+ require("core-js/modules/es.date.to-primitive.js");
10
+ require("core-js/modules/es.function.bind.js");
11
+ require("core-js/modules/es.function.name.js");
12
+ require("core-js/modules/es.object.create.js");
13
+ require("core-js/modules/es.object.define-property.js");
14
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
15
+ require("core-js/modules/esnext.function.metadata.js");
16
+ require("core-js/modules/esnext.symbol.metadata.js");
17
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
18
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
19
+ Object.defineProperty(exports, "__esModule", {
20
+ value: true
21
+ });
22
+ exports.FcrUIWidgetSDKImpl = void 0;
23
+ require("core-js/modules/es.array.concat.js");
24
+ require("core-js/modules/es.array.is-array.js");
25
+ require("core-js/modules/es.array.iterator.js");
26
+ require("core-js/modules/es.date.to-string.js");
27
+ require("core-js/modules/es.map.js");
28
+ require("core-js/modules/es.number.constructor.js");
29
+ require("core-js/modules/es.object.to-string.js");
30
+ require("core-js/modules/es.string.iterator.js");
31
+ require("core-js/modules/esnext.map.delete-all.js");
32
+ require("core-js/modules/esnext.map.emplace.js");
33
+ require("core-js/modules/esnext.map.every.js");
34
+ require("core-js/modules/esnext.map.filter.js");
35
+ require("core-js/modules/esnext.map.find.js");
36
+ require("core-js/modules/esnext.map.find-key.js");
37
+ require("core-js/modules/esnext.map.includes.js");
38
+ require("core-js/modules/esnext.map.key-of.js");
39
+ require("core-js/modules/esnext.map.map-keys.js");
40
+ require("core-js/modules/esnext.map.map-values.js");
41
+ require("core-js/modules/esnext.map.merge.js");
42
+ require("core-js/modules/esnext.map.reduce.js");
43
+ require("core-js/modules/esnext.map.some.js");
44
+ require("core-js/modules/esnext.map.update.js");
45
+ require("core-js/modules/web.dom-collections.iterator.js");
46
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
47
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
48
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
49
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
50
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
51
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
52
+ var _bound = require("agora-foundation/lib/decorator/bound");
53
+ var _observable = require("agora-foundation/lib/utilities/observable");
54
+ var _logger = require("./logger");
55
+ var _utils = require("./utils");
56
+ var _FcrUIWidgetSDKImpl;
57
+ var _initProto;
58
+ function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function set(e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) { return e[n]; }, (o < 2 || 4 === o) && (F = function F(e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == _typeof3(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function s(t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
59
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof3(i) ? i : i + ""; }
60
+ function _toPrimitive(t, r) { if ("object" != _typeof3(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof3(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
61
+ function _setFunctionName(e, t, n) { "symbol" == _typeof3(t) && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
62
+ function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof3(e) : "null")); return e; }
63
+ var FcrUIWidgetSDKImpl = exports.FcrUIWidgetSDKImpl = /*#__PURE__*/function () {
64
+ function FcrUIWidgetSDKImpl() {
65
+ (0, _classCallCheck2["default"])(this, FcrUIWidgetSDKImpl);
66
+ (0, _defineProperty2["default"])(this, "logger", (_initProto(this), (0, _logger.createLogger)({
67
+ prefix: 'FcrUIWidgetSDK',
68
+ database: false
69
+ })));
70
+ (0, _defineProperty2["default"])(this, "_observable", new _observable.AgoraObservable());
71
+ (0, _defineProperty2["default"])(this, "_requestPromises", new Map());
72
+ window.addEventListener('message', this._handlePostMessage);
73
+ this._addLogObserver();
74
+ }
75
+ return (0, _createClass2["default"])(FcrUIWidgetSDKImpl, [{
76
+ key: "_addLogObserver",
77
+ value: function _addLogObserver() {
78
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onRoomStateUpdated', 'onRemoteUsersJoined', 'onRemoteUsersLeft', 'onUserInfoUpdated', 'onAllUserCountUpdated']));
79
+ }
80
+ }, {
81
+ key: "_createCallId",
82
+ value: function _createCallId(prefix) {
83
+ return "".concat(prefix, "-").concat(Number(new Date()));
84
+ }
85
+ }, {
86
+ key: "_createRequestParams",
87
+ value: function _createRequestParams(funcName, parameters) {
88
+ var callId = this._createCallId(funcName);
89
+ var finalParameters = parameters !== null && parameters !== void 0 ? parameters : [];
90
+ return {
91
+ action: 'apiRequest',
92
+ callId: callId,
93
+ method: funcName,
94
+ parameters: finalParameters
95
+ };
96
+ }
97
+ }, {
98
+ key: "_sendRequest",
99
+ value: function _sendRequest(funcName, parameters) {
100
+ var params = this._createRequestParams(funcName, parameters);
101
+ var p = (0, _utils.createControlledPromise)();
102
+ this._requestPromises.set(params.callId, p);
103
+ try {
104
+ if ((0, _typeof2["default"])(window.JsBridge) === 'object' && window.JsBridge !== null) {
105
+ var func = window.JsBridge[funcName];
106
+ if (typeof func === 'function') {
107
+ func(params);
108
+ this.logger.debug('sendRequest + JsBridge: ', params);
109
+ }
110
+ } else {
111
+ this.logger.debug('sendRequest + postMessage: ', params);
112
+ window.parent.postMessage(params, '*');
113
+ }
114
+ } catch (error) {
115
+ this.logger.error('Error sending request:', error);
116
+ var reject = p.reject;
117
+ reject && reject(error);
118
+ }
119
+ return p.promise;
120
+ }
121
+ }, {
122
+ key: "getRoomInfo",
123
+ value: function
124
+ // @trace
125
+ getRoomInfo() {
126
+ return this._sendRequest('getRoomInfo');
127
+ }
128
+ }, {
129
+ key: "getRoomSchedule",
130
+ value: function
131
+ // @trace
132
+ getRoomSchedule() {
133
+ return this._sendRequest('getRoomSchedule');
134
+ }
135
+ }, {
136
+ key: "getRoomState",
137
+ value: function
138
+ // @trace
139
+ getRoomState() {
140
+ return this._sendRequest('getRoomState');
141
+ }
142
+ }, {
143
+ key: "getLocalUser",
144
+ value: function
145
+ // @trace
146
+ getLocalUser() {
147
+ return this._sendRequest('getLocalUser');
148
+ }
149
+ }, {
150
+ key: "getUserList",
151
+ value: function
152
+ // @trace
153
+ getUserList() {
154
+ return this._sendRequest('getUserList');
155
+ }
156
+ }, {
157
+ key: "getAllUserCount",
158
+ value: function
159
+ // @trace
160
+ getAllUserCount() {
161
+ return this._sendRequest('getAllUserCount');
162
+ }
163
+ }, {
164
+ key: "addObserver",
165
+ value: function
166
+ // @trace
167
+ addObserver(observer) {
168
+ this._observable.addObserver(observer);
169
+ }
170
+ }, {
171
+ key: "removeObserver",
172
+ value: function
173
+ // @trace
174
+ removeObserver(observer) {
175
+ this._observable.removeObserver(observer);
176
+ }
177
+ }, {
178
+ key: "_handlePostMessage",
179
+ value: function _handlePostMessage(event) {
180
+ if (event.data) {
181
+ var action = event.data.action;
182
+ if (action === 'apiResponse') {
183
+ this.logger.debug('handlePostMessage apiResponse: ', event.data);
184
+ var _event$data = event.data,
185
+ callId = _event$data.callId,
186
+ returnValue = _event$data.returnValue;
187
+ var controllerPromiseGroup = this._requestPromises.get(callId);
188
+ if (controllerPromiseGroup) {
189
+ this.logger.info('resolve callId', callId);
190
+ var resolve = controllerPromiseGroup.resolve;
191
+ resolve && resolve(returnValue);
192
+ this._requestPromises["delete"](callId);
193
+ }
194
+ } else if (action === 'callback') {
195
+ var _this$_observable;
196
+ this.logger.debug('handlePostMessage callback: ', event.data);
197
+ var _event$data2 = event.data,
198
+ payload = _event$data2.payload,
199
+ method = _event$data2.method;
200
+ var args = Array.isArray(payload) ? payload : [payload];
201
+ (_this$_observable = this._observable).notifyObservers.apply(_this$_observable, [method].concat((0, _toConsumableArray2["default"])(args)));
202
+ }
203
+ }
204
+ }
205
+ }]);
206
+ }();
207
+ _FcrUIWidgetSDKImpl = FcrUIWidgetSDKImpl;
208
+ var _applyDecs$e = _applyDecs(_FcrUIWidgetSDKImpl, [[_bound.bound, 2, "getRoomInfo"], [_bound.bound, 2, "getRoomSchedule"], [_bound.bound, 2, "getRoomState"], [_bound.bound, 2, "getLocalUser"], [_bound.bound, 2, "getUserList"], [_bound.bound, 2, "getAllUserCount"], [_bound.bound, 2, "addObserver"], [_bound.bound, 2, "removeObserver"], [_bound.bound, 2, "_handlePostMessage"]], []).e;
209
+ var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
210
+ _initProto = _applyDecs$e2[0];
211
+ _applyDecs$e;
package/lib/type.d.ts ADDED
@@ -0,0 +1,164 @@
1
+ import type { FcrRoomInfo, FcrRoomSchedule, FcrRoomState, FcrUserInfo } from 'fcr-core/lib/type';
2
+ import type { FcrUserJoinedEvent, FcrUserLeftEvent, FcrUserPageParams, FcrUserPageResponse, FcrUserUpdatedEvent } from 'fcr-core/lib/room-control/user-control/type';
3
+ type MethodNames<T> = {
4
+ [K in keyof T]: T[K] extends Function ? K : never;
5
+ }[keyof T];
6
+ export type FcrUIWebWidgetMethodName = MethodNames<FcrUIBaseWidget>;
7
+ export type ID = string;
8
+ export interface FcrPopupSize {
9
+ width: number;
10
+ height: number;
11
+ }
12
+ export interface FcrUIWidgetSDK {
13
+ /**
14
+ * 获取房间信息
15
+ */
16
+ getRoomInfo(): Promise<FcrRoomInfo>;
17
+ /**
18
+ * 获取房间行程信息(如开始时间、持续时长等)
19
+ */
20
+ getRoomSchedule(): Promise<FcrRoomSchedule>;
21
+ /**
22
+ * 获取当前房间状态
23
+ */
24
+ getRoomState(): Promise<FcrRoomState>;
25
+ /**
26
+ * 获取本地用户信息
27
+ */
28
+ getLocalUser(): Promise<FcrUserInfo>;
29
+ /**
30
+ * 获取远端用户列表
31
+ */
32
+ getUserList(): Promise<FcrUserInfo[]>;
33
+ /**
34
+ * 获取房间内用户总数
35
+ */
36
+ getAllUserCount(): Promise<number>;
37
+ /**
38
+ * 添加观察者,用来接收 Widget 事件回调
39
+ * @param observer 实现 FcrUIWidgetObserver 的对象
40
+ */
41
+ addObserver(observer: FcrUIWidgetObserver): void;
42
+ /**
43
+ * 移除之前添加的观察者
44
+ * @param observer 要移除的观察者
45
+ */
46
+ removeObserver(observer: FcrUIWidgetObserver): void;
47
+ }
48
+ export interface FcrUIWidgetObserver {
49
+ /**
50
+ * 房间状态更新回调
51
+ * @param state 最新的房间状态
52
+ * @returns
53
+ */
54
+ onRoomStateUpdated(roomId: string, state: FcrRoomState): void;
55
+ /**
56
+ * 远端用户加入房间回调
57
+ * @param events 事件数组
58
+ */
59
+ onRemoteUsersJoined(roomId: string, events: FcrUserJoinedEvent[]): void;
60
+ /**
61
+ * 远端用户离开房间回调
62
+ * @param events 事件数组
63
+ */
64
+ onRemoteUsersLeft(roomId: string, events: FcrUserLeftEvent[]): void;
65
+ /**
66
+ * Callback to receive the user updated event.
67
+ * @param event
68
+ */
69
+ onUserInfoUpdated(roomId: string, event: FcrUserUpdatedEvent): void;
70
+ /**
71
+ * 房间内所有用户总数更新回调
72
+ * @param count 当前的用户数量
73
+ */
74
+ onAllUserCountUpdated?(roomId: string, count: number): void;
75
+ }
76
+ export interface FcrUIBaseWidget {
77
+ /**
78
+ * 获取房间信息
79
+ */
80
+ getRoomInfo(): FcrRoomInfo | undefined;
81
+ /**
82
+ * 获取房间行程信息(如开始时间、持续时长等)
83
+ */
84
+ getRoomSchedule(): FcrRoomSchedule | undefined;
85
+ /**
86
+ * 获取当前房间状态
87
+ */
88
+ getRoomState(): FcrRoomState;
89
+ /**
90
+ * 获取本地用户信息
91
+ */
92
+ getLocalUser(): FcrUserInfo;
93
+ /**
94
+ * 获取远端用户列表
95
+ */
96
+ getUserList(): Readonly<FcrUserInfo[]>;
97
+ /**
98
+ * 获取房间内用户总数
99
+ */
100
+ getAllUserCount(): number;
101
+ /**
102
+ * Fetches the list of users.
103
+ * @param params
104
+ */
105
+ fetchUserList(params: FcrUserPageParams): Promise<FcrUserPageResponse>;
106
+ /**
107
+ * 添加观察者,用来接收 Widget 事件回调
108
+ * @param observer 实现 FcrUIWidgetObserver 的对象
109
+ */
110
+ addObserver(observer: FcrUIWidgetObserver): void;
111
+ /**
112
+ * 移除之前添加的观察者
113
+ * @param observer 要移除的观察者
114
+ */
115
+ removeObserver(observer: FcrUIWidgetObserver): void;
116
+ }
117
+ export interface FcrUIWebWidget extends FcrUIBaseWidget {
118
+ /**
119
+ * 实例化widget
120
+ * 创建webview并注入FcrUIBaseWidget中的方法或者回调,命名空间FcrJSBridge
121
+ * webview加载FcrUIWebWidgetConfig.url
122
+ * @param webview 承载内嵌iframe的window引用
123
+ * @param dialogWindow 承载widgetDialog的window引用
124
+ */
125
+ init(webview: Window, dialogWindow: Window): void;
126
+ /**
127
+ * 刷新webview
128
+ */
129
+ reload(): void;
130
+ /**
131
+ *销毁widget
132
+ */
133
+ release(): void;
134
+ }
135
+ export type ApiRequest = {
136
+ action: 'apiRequest';
137
+ callId: number;
138
+ method: string;
139
+ parameters: [];
140
+ };
141
+ export type ApiResponse = {
142
+ action: 'apiResponse';
143
+ callId: number;
144
+ method: string;
145
+ returnValue: unknown;
146
+ };
147
+ export type Callback = {
148
+ action: 'callback';
149
+ payload: object;
150
+ };
151
+ export type ControlledPromise<T> = {
152
+ promise: Promise<T>;
153
+ resolve?: (value: T | PromiseLike<T>) => void;
154
+ reject?: (reason?: any) => void;
155
+ };
156
+ export interface JsBridge {
157
+ [funcName: string]: (params: Record<string, any>) => void;
158
+ }
159
+ declare global {
160
+ interface Window {
161
+ JsBridge?: JsBridge;
162
+ }
163
+ }
164
+ export {};
package/lib/type.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
package/lib/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { ControlledPromise } from './type';
2
+ export declare const createControlledPromise: <T>() => ControlledPromise<T>;
package/lib/utils.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.define-property.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createControlledPromise = void 0;
8
+ require("core-js/modules/es.object.to-string.js");
9
+ require("core-js/modules/es.promise.js");
10
+ var createControlledPromise = exports.createControlledPromise = function createControlledPromise() {
11
+ var resolve = function resolve() {};
12
+ var reject = function reject() {};
13
+ var promise = new Promise(function (_resolve, _reject) {
14
+ resolve = _resolve;
15
+ reject = _reject;
16
+ });
17
+ return {
18
+ promise: promise,
19
+ resolve: resolve,
20
+ reject: reject
21
+ };
22
+ };
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "fcr-ui-widget-sdk",
3
+ "version": "3.8.0-alpha",
4
+ "main": "lib/index.js",
5
+ "types": "lib/index.d.ts",
6
+ "repository": "ssh://git@git.agoralab.co/aduc/fcr-ui-scene-desktop.git",
7
+ "author": "agora.io",
8
+ "license": "MIT",
9
+ "files": [
10
+ "lib"
11
+ ],
12
+ "scripts": {
13
+ "build": "agora-tc-transpile",
14
+ "build-widget": "node scripts/build-widget.js",
15
+ "test": "agora-tc-test-karma-browser"
16
+ },
17
+ "dependencies": {
18
+ "agora-foundation": "3.8.0-alpha",
19
+ "fcr-core": "3.8.0-alpha"
20
+ },
21
+ "devDependencies": {
22
+ "@babel/core": "^7.23.5",
23
+ "@babel/preset-env": "^7.23.5",
24
+ "@babel/preset-react": "^7.24.1",
25
+ "@babel/preset-typescript": "^7.23.3",
26
+ "agora-toolchain": "3.8.0-alpha",
27
+ "tslib": "^2.6.2"
28
+ }
29
+ }