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 +2 -0
- package/lib/index.js +13 -0
- package/lib/logger.d.ts +7 -0
- package/lib/logger.js +40 -0
- package/lib/sdk.d.ts +21 -0
- package/lib/sdk.js +211 -0
- package/lib/type.d.ts +164 -0
- package/lib/type.js +6 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +22 -0
- package/package.json +29 -0
package/lib/index.d.ts
ADDED
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");
|
package/lib/logger.d.ts
ADDED
|
@@ -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
package/lib/utils.d.ts
ADDED
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
|
+
}
|