@takosjp/yurucommu-api 3.4.0 → 3.4.4
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/dist/index.js +172 -40
- package/dist/lib/api/communities.d.ts +2 -0
- package/dist/lib/api/communities.d.ts.map +1 -1
- package/dist/lib/api/fetch.d.ts +6 -1
- package/dist/lib/api/fetch.d.ts.map +1 -1
- package/dist/lib/api/normalize.d.ts +6 -2
- package/dist/lib/api/normalize.d.ts.map +1 -1
- package/dist/lib/api/notifications.d.ts.map +1 -1
- package/dist/lib/api/posts.d.ts.map +1 -1
- package/dist/lib/rtc-client.d.ts +7 -2
- package/dist/lib/rtc-client.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -56,26 +56,56 @@ function getYurucommuApiTransport() {
|
|
|
56
56
|
// src/lib/api/fetch.ts
|
|
57
57
|
class ApiError extends Error {
|
|
58
58
|
status;
|
|
59
|
-
|
|
59
|
+
code;
|
|
60
|
+
retryAfterSeconds;
|
|
61
|
+
constructor(status, message, details = {}) {
|
|
60
62
|
super(message);
|
|
61
63
|
this.status = status;
|
|
62
64
|
this.name = "ApiError";
|
|
65
|
+
this.code = details.code ?? null;
|
|
66
|
+
this.retryAfterSeconds = details.retryAfterSeconds ?? null;
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
|
-
|
|
69
|
+
function parseRetryAfterSeconds(bodyValue, headerValue) {
|
|
70
|
+
const bodySeconds = typeof bodyValue === "number" && Number.isFinite(bodyValue) && bodyValue > 0 ? Math.ceil(bodyValue) : null;
|
|
71
|
+
if (bodySeconds !== null)
|
|
72
|
+
return bodySeconds;
|
|
73
|
+
if (!headerValue)
|
|
74
|
+
return null;
|
|
75
|
+
const numeric = Number(headerValue);
|
|
76
|
+
if (Number.isFinite(numeric) && numeric > 0)
|
|
77
|
+
return Math.ceil(numeric);
|
|
78
|
+
const dateMs = Date.parse(headerValue);
|
|
79
|
+
if (!Number.isFinite(dateMs) || dateMs <= Date.now())
|
|
80
|
+
return null;
|
|
81
|
+
return Math.ceil((dateMs - Date.now()) / 1000);
|
|
82
|
+
}
|
|
83
|
+
async function extractApiErrorDetails(res, fallback) {
|
|
66
84
|
try {
|
|
67
85
|
const data = await res.json();
|
|
68
86
|
const err = data.error;
|
|
69
87
|
const message = typeof err === "string" ? err : err?.message;
|
|
70
|
-
|
|
88
|
+
const code = typeof data.code === "string" && data.code.trim().length > 0 ? data.code.trim().slice(0, 100) : null;
|
|
89
|
+
return {
|
|
90
|
+
message: message || fallback,
|
|
91
|
+
code,
|
|
92
|
+
retryAfterSeconds: parseRetryAfterSeconds(data.retry_after, res.headers.get("retry-after"))
|
|
93
|
+
};
|
|
71
94
|
} catch {
|
|
72
|
-
return
|
|
95
|
+
return {
|
|
96
|
+
message: res.statusText || fallback,
|
|
97
|
+
code: null,
|
|
98
|
+
retryAfterSeconds: parseRetryAfterSeconds(null, res.headers.get("retry-after"))
|
|
99
|
+
};
|
|
73
100
|
}
|
|
74
101
|
}
|
|
102
|
+
async function extractErrorMessage(res, fallback) {
|
|
103
|
+
return (await extractApiErrorDetails(res, fallback)).message;
|
|
104
|
+
}
|
|
75
105
|
async function assertOk(res, fallback) {
|
|
76
106
|
if (!res.ok) {
|
|
77
|
-
const
|
|
78
|
-
throw new ApiError(res.status, message);
|
|
107
|
+
const details = await extractApiErrorDetails(res, fallback);
|
|
108
|
+
throw new ApiError(res.status, details.message, details);
|
|
79
109
|
}
|
|
80
110
|
}
|
|
81
111
|
function apiFetch(url, options = {}) {
|
|
@@ -215,20 +245,21 @@ function resolveNotificationTarget(notification) {
|
|
|
215
245
|
function formatUsernameFromApId(apId, preferred) {
|
|
216
246
|
try {
|
|
217
247
|
const url = new URL(apId);
|
|
218
|
-
const match = apId.match(/\/(users|groups)\/([^/]+)$/);
|
|
219
|
-
if (match)
|
|
220
|
-
return `${match[2]}@${url.host}`;
|
|
221
248
|
if (preferred)
|
|
222
249
|
return `${preferred}@${url.host}`;
|
|
250
|
+
const match = url.pathname.match(/\/(users|groups)\/([^/]+)\/?$/u);
|
|
251
|
+
if (match)
|
|
252
|
+
return `${match[2]}@${url.host}`;
|
|
223
253
|
} catch {}
|
|
224
254
|
return null;
|
|
225
255
|
}
|
|
226
256
|
function normalizeActor(actor) {
|
|
227
|
-
if (!actor || !actor.ap_id)
|
|
228
|
-
return actor;
|
|
229
257
|
const rawUsername = actor.username?.trim();
|
|
230
|
-
const
|
|
231
|
-
const
|
|
258
|
+
const declaredPreferred = actor.preferred_username?.trim() || null;
|
|
259
|
+
const rawSeparator = rawUsername?.lastIndexOf("@") ?? -1;
|
|
260
|
+
const rebasedRawUsername = declaredPreferred && rawUsername && !rawUsername.includes("://") && rawSeparator > 0 && rawSeparator < rawUsername.length - 1 ? `${declaredPreferred}@${rawUsername.slice(rawSeparator + 1)}` : null;
|
|
261
|
+
const formatted = rebasedRawUsername || (declaredPreferred ? formatUsernameFromApId(actor.ap_id, declaredPreferred) : rawUsername) || formatUsernameFromApId(actor.ap_id) || declaredPreferred || actor.username || actor.ap_id;
|
|
262
|
+
const preferred = declaredPreferred || (formatted.includes("@") ? formatted.split("@")[0] : formatted);
|
|
232
263
|
return {
|
|
233
264
|
...actor,
|
|
234
265
|
username: formatted,
|
|
@@ -460,6 +491,7 @@ async function fetchBookmarks(options) {
|
|
|
460
491
|
params.set("before", options.before);
|
|
461
492
|
const query = params.toString() ? `?${params}` : "";
|
|
462
493
|
const res = await apiFetch(`/api/bookmarks${query}`);
|
|
494
|
+
await assertOk(res, "Failed to load bookmarks");
|
|
463
495
|
const data = await res.json();
|
|
464
496
|
return {
|
|
465
497
|
posts: (data.posts ?? []).map(normalizePost),
|
|
@@ -728,11 +760,12 @@ async function fetchNotifications(options) {
|
|
|
728
760
|
}
|
|
729
761
|
async function fetchUnreadCount() {
|
|
730
762
|
const res = await apiFetch("/api/notifications/unread/count");
|
|
763
|
+
await assertOk(res, "Failed to load unread notification count");
|
|
731
764
|
const data = await res.json();
|
|
732
765
|
return data.count || 0;
|
|
733
766
|
}
|
|
734
767
|
async function markNotificationsRead(ids) {
|
|
735
|
-
const res = await apiPost("/api/notifications/read", { ids });
|
|
768
|
+
const res = await apiPost("/api/notifications/read", ids === undefined ? { read_all: true } : { ids });
|
|
736
769
|
await assertOk(res, "Failed to mark as read");
|
|
737
770
|
}
|
|
738
771
|
async function archiveNotifications(ids) {
|
|
@@ -1357,6 +1390,7 @@ async function reportContent(input) {
|
|
|
1357
1390
|
}
|
|
1358
1391
|
// src/lib/rtc-client.ts
|
|
1359
1392
|
var CANDIDATE_FLUSH_MS = 200;
|
|
1393
|
+
var MAX_PENDING_SOCKET_FRAMES = 64;
|
|
1360
1394
|
|
|
1361
1395
|
class CallClient {
|
|
1362
1396
|
options;
|
|
@@ -1364,6 +1398,8 @@ class CallClient {
|
|
|
1364
1398
|
wantConnected = false;
|
|
1365
1399
|
backoff = 500;
|
|
1366
1400
|
reconnectTimer = null;
|
|
1401
|
+
openingSocket = false;
|
|
1402
|
+
pendingFrames = [];
|
|
1367
1403
|
listeners = new Map;
|
|
1368
1404
|
call = null;
|
|
1369
1405
|
localStream = null;
|
|
@@ -1394,12 +1430,24 @@ class CallClient {
|
|
|
1394
1430
|
getState() {
|
|
1395
1431
|
return this.state;
|
|
1396
1432
|
}
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1433
|
+
apiUrl(path) {
|
|
1434
|
+
const origin = this.options.origin;
|
|
1435
|
+
return origin ? new URL(path, `${origin}/`).toString() : path;
|
|
1436
|
+
}
|
|
1437
|
+
socketUrl(actorApId, ticket) {
|
|
1438
|
+
const transport = getYurucommuApiTransport();
|
|
1439
|
+
const resolved = transport.resolveUrl(this.apiUrl("/api/rtc/socket"));
|
|
1440
|
+
const base = this.options.origin ?? (typeof location !== "undefined" ? location.origin : "http://localhost");
|
|
1441
|
+
const url = new URL(resolved, base);
|
|
1442
|
+
if (url.protocol === "http:")
|
|
1443
|
+
url.protocol = "ws:";
|
|
1444
|
+
else if (url.protocol === "https:")
|
|
1445
|
+
url.protocol = "wss:";
|
|
1446
|
+
else
|
|
1447
|
+
throw new Error("call socket URL must use HTTP(S)");
|
|
1448
|
+
url.searchParams.set("actor", actorApId);
|
|
1449
|
+
url.searchParams.set("ticket", ticket);
|
|
1450
|
+
return url.toString();
|
|
1403
1451
|
}
|
|
1404
1452
|
connect() {
|
|
1405
1453
|
this.wantConnected = true;
|
|
@@ -1412,13 +1460,41 @@ class CallClient {
|
|
|
1412
1460
|
this.reconnectTimer = null;
|
|
1413
1461
|
this.ws?.close();
|
|
1414
1462
|
this.ws = null;
|
|
1463
|
+
this.pendingFrames.length = 0;
|
|
1415
1464
|
}
|
|
1416
1465
|
openSocket() {
|
|
1417
1466
|
if (this.ws && this.ws.readyState <= WebSocket.OPEN)
|
|
1418
1467
|
return;
|
|
1468
|
+
if (this.openingSocket)
|
|
1469
|
+
return;
|
|
1470
|
+
this.openingSocket = true;
|
|
1471
|
+
this.openSocketWithTicket().finally(() => {
|
|
1472
|
+
this.openingSocket = false;
|
|
1473
|
+
});
|
|
1474
|
+
}
|
|
1475
|
+
async openSocketWithTicket() {
|
|
1476
|
+
let actorApId;
|
|
1477
|
+
let ticket;
|
|
1478
|
+
try {
|
|
1479
|
+
const response = await apiPost(this.apiUrl("/api/rtc/ticket"));
|
|
1480
|
+
if (!response.ok)
|
|
1481
|
+
throw new Error(`ticket ${response.status}`);
|
|
1482
|
+
const body = await response.json();
|
|
1483
|
+
if (typeof body.actor_ap_id !== "string" || typeof body.ticket !== "string") {
|
|
1484
|
+
throw new Error("bad ticket response");
|
|
1485
|
+
}
|
|
1486
|
+
actorApId = body.actor_ap_id;
|
|
1487
|
+
ticket = body.ticket;
|
|
1488
|
+
} catch (err) {
|
|
1489
|
+
this.emit("error", "socket_ticket_failed", String(err));
|
|
1490
|
+
this.scheduleReconnect();
|
|
1491
|
+
return;
|
|
1492
|
+
}
|
|
1493
|
+
if (!this.wantConnected)
|
|
1494
|
+
return;
|
|
1419
1495
|
let socket;
|
|
1420
1496
|
try {
|
|
1421
|
-
socket = new WebSocket(this.socketUrl());
|
|
1497
|
+
socket = new WebSocket(this.socketUrl(actorApId, ticket));
|
|
1422
1498
|
} catch (err) {
|
|
1423
1499
|
this.emit("error", "socket_open_failed", String(err));
|
|
1424
1500
|
this.scheduleReconnect();
|
|
@@ -1427,9 +1503,17 @@ class CallClient {
|
|
|
1427
1503
|
this.ws = socket;
|
|
1428
1504
|
socket.onopen = () => {
|
|
1429
1505
|
this.backoff = 500;
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1506
|
+
socket.send(JSON.stringify({ t: "hello" }));
|
|
1507
|
+
const pending = this.pendingFrames.splice(0);
|
|
1508
|
+
const hasInitialInvite = this.call !== null && pending.some((frame) => frame.t === "invite" && frame.callId === this.call?.callId);
|
|
1509
|
+
if (this.call && !hasInitialInvite) {
|
|
1510
|
+
socket.send(JSON.stringify({
|
|
1511
|
+
t: "resume",
|
|
1512
|
+
callId: this.call.callId
|
|
1513
|
+
}));
|
|
1514
|
+
}
|
|
1515
|
+
for (const frame of pending)
|
|
1516
|
+
socket.send(JSON.stringify(frame));
|
|
1433
1517
|
};
|
|
1434
1518
|
socket.onmessage = (ev) => {
|
|
1435
1519
|
this.onFrame(ev.data);
|
|
@@ -1458,16 +1542,22 @@ class CallClient {
|
|
|
1458
1542
|
send(frame) {
|
|
1459
1543
|
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
|
|
1460
1544
|
this.ws.send(JSON.stringify(frame));
|
|
1545
|
+
return;
|
|
1461
1546
|
}
|
|
1547
|
+
if (!this.wantConnected)
|
|
1548
|
+
return;
|
|
1549
|
+
if (this.pendingFrames.length >= MAX_PENDING_SOCKET_FRAMES) {
|
|
1550
|
+
this.emit("error", "socket_queue_full");
|
|
1551
|
+
return;
|
|
1552
|
+
}
|
|
1553
|
+
this.pendingFrames.push(frame);
|
|
1462
1554
|
}
|
|
1463
1555
|
async startCall(peer, media) {
|
|
1464
1556
|
if (this.call)
|
|
1465
1557
|
throw new Error("already in a call");
|
|
1466
|
-
const res = await
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
headers: { "Content-Type": "application/json" },
|
|
1470
|
-
body: JSON.stringify({ to: peer, media })
|
|
1558
|
+
const res = await apiPost(this.apiUrl("/api/rtc/calls"), {
|
|
1559
|
+
to: peer,
|
|
1560
|
+
media
|
|
1471
1561
|
});
|
|
1472
1562
|
if (!res.ok) {
|
|
1473
1563
|
const code = res.status === 403 ? "blocked" : "start_failed";
|
|
@@ -1475,12 +1565,14 @@ class CallClient {
|
|
|
1475
1565
|
throw new Error(code);
|
|
1476
1566
|
}
|
|
1477
1567
|
const data = await res.json();
|
|
1478
|
-
|
|
1568
|
+
const call = this.newCall(data.callId, peer, media, "caller", data.iceServers);
|
|
1569
|
+
this.call = call;
|
|
1479
1570
|
this.setState("calling");
|
|
1480
1571
|
this.connect();
|
|
1481
1572
|
this.send({ t: "invite", callId: data.callId, to: peer, media });
|
|
1482
|
-
await this.setupMedia(
|
|
1483
|
-
|
|
1573
|
+
if (!await this.setupMedia(call))
|
|
1574
|
+
return;
|
|
1575
|
+
await this.makeOffer(call);
|
|
1484
1576
|
}
|
|
1485
1577
|
async accept() {
|
|
1486
1578
|
const call = this.call;
|
|
@@ -1488,10 +1580,16 @@ class CallClient {
|
|
|
1488
1580
|
return;
|
|
1489
1581
|
this.setState("connecting");
|
|
1490
1582
|
this.send({ t: "accept", callId: call.callId });
|
|
1491
|
-
await this.setupMedia(call)
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1583
|
+
if (!await this.setupMedia(call))
|
|
1584
|
+
return;
|
|
1585
|
+
const pc = call.pc;
|
|
1586
|
+
if (pc && call.remoteDescriptionSet && this.isActiveCall(call)) {
|
|
1587
|
+
const answer = await pc.createAnswer();
|
|
1588
|
+
if (!this.isActivePeer(call, pc))
|
|
1589
|
+
return;
|
|
1590
|
+
await pc.setLocalDescription(answer);
|
|
1591
|
+
if (!this.isActivePeer(call, pc))
|
|
1592
|
+
return;
|
|
1495
1593
|
this.send({ t: "answer", callId: call.callId, sdp: answer.sdp ?? "" });
|
|
1496
1594
|
}
|
|
1497
1595
|
}
|
|
@@ -1637,25 +1735,44 @@ class CallClient {
|
|
|
1637
1735
|
} catch {}
|
|
1638
1736
|
}
|
|
1639
1737
|
}
|
|
1738
|
+
isActiveCall(call) {
|
|
1739
|
+
return this.call === call;
|
|
1740
|
+
}
|
|
1741
|
+
isActivePeer(call, pc) {
|
|
1742
|
+
return this.isActiveCall(call) && call.pc === pc;
|
|
1743
|
+
}
|
|
1640
1744
|
async setupMedia(call) {
|
|
1745
|
+
if (!this.isActiveCall(call))
|
|
1746
|
+
return false;
|
|
1641
1747
|
if (!this.localStream) {
|
|
1748
|
+
let stream;
|
|
1642
1749
|
try {
|
|
1643
|
-
|
|
1750
|
+
stream = await navigator.mediaDevices.getUserMedia({
|
|
1644
1751
|
audio: call.media.audio,
|
|
1645
1752
|
video: call.media.video
|
|
1646
1753
|
});
|
|
1647
1754
|
} catch (err) {
|
|
1755
|
+
if (!this.isActiveCall(call))
|
|
1756
|
+
return false;
|
|
1648
1757
|
this.emit("error", "media_denied", String(err));
|
|
1649
1758
|
this.hangup("media_denied");
|
|
1650
|
-
return;
|
|
1759
|
+
return false;
|
|
1651
1760
|
}
|
|
1761
|
+
if (!this.isActiveCall(call)) {
|
|
1762
|
+
stream.getTracks().forEach((track) => track.stop());
|
|
1763
|
+
return false;
|
|
1764
|
+
}
|
|
1765
|
+
this.localStream = stream;
|
|
1652
1766
|
this.emit("localstream", this.localStream);
|
|
1653
1767
|
}
|
|
1768
|
+
if (!this.isActiveCall(call))
|
|
1769
|
+
return false;
|
|
1654
1770
|
if (!call.pc)
|
|
1655
1771
|
this.buildPeerConnection(call);
|
|
1656
1772
|
for (const track of this.localStream.getTracks()) {
|
|
1657
1773
|
call.pc?.addTrack(track, this.localStream);
|
|
1658
1774
|
}
|
|
1775
|
+
return this.isActiveCall(call);
|
|
1659
1776
|
}
|
|
1660
1777
|
buildPeerConnection(call) {
|
|
1661
1778
|
const pc = new RTCPeerConnection({
|
|
@@ -1666,15 +1783,21 @@ class CallClient {
|
|
|
1666
1783
|
}))
|
|
1667
1784
|
});
|
|
1668
1785
|
pc.onicecandidate = (ev) => {
|
|
1786
|
+
if (!this.isActivePeer(call, pc))
|
|
1787
|
+
return;
|
|
1669
1788
|
if (ev.candidate)
|
|
1670
1789
|
this.bufferCandidate(call, ev.candidate.toJSON());
|
|
1671
1790
|
else
|
|
1672
1791
|
this.flushCandidates(call);
|
|
1673
1792
|
};
|
|
1674
1793
|
pc.ontrack = (ev) => {
|
|
1794
|
+
if (!this.isActivePeer(call, pc))
|
|
1795
|
+
return;
|
|
1675
1796
|
this.emit("remotestream", ev.streams[0] ?? null);
|
|
1676
1797
|
};
|
|
1677
1798
|
pc.onconnectionstatechange = () => {
|
|
1799
|
+
if (!this.isActivePeer(call, pc))
|
|
1800
|
+
return;
|
|
1678
1801
|
if (pc.connectionState === "connected")
|
|
1679
1802
|
this.setState("connected");
|
|
1680
1803
|
else if (pc.connectionState === "failed" || pc.connectionState === "closed") {
|
|
@@ -1684,10 +1807,19 @@ class CallClient {
|
|
|
1684
1807
|
call.pc = pc;
|
|
1685
1808
|
}
|
|
1686
1809
|
async makeOffer(call) {
|
|
1810
|
+
if (!this.isActiveCall(call))
|
|
1811
|
+
return;
|
|
1687
1812
|
if (!call.pc)
|
|
1688
1813
|
this.buildPeerConnection(call);
|
|
1689
|
-
const
|
|
1690
|
-
|
|
1814
|
+
const pc = call.pc;
|
|
1815
|
+
if (!pc)
|
|
1816
|
+
return;
|
|
1817
|
+
const offer = await pc.createOffer();
|
|
1818
|
+
if (!this.isActivePeer(call, pc))
|
|
1819
|
+
return;
|
|
1820
|
+
await pc.setLocalDescription(offer);
|
|
1821
|
+
if (!this.isActivePeer(call, pc))
|
|
1822
|
+
return;
|
|
1691
1823
|
this.send({ t: "offer", callId: call.callId, sdp: offer.sdp ?? "" });
|
|
1692
1824
|
}
|
|
1693
1825
|
bufferCandidate(call, cand) {
|
|
@@ -25,6 +25,8 @@ export interface CommunityMember {
|
|
|
25
25
|
icon_url: string | null;
|
|
26
26
|
role: "owner" | "moderator" | "member";
|
|
27
27
|
joined_at: string;
|
|
28
|
+
/** False for Follow-backed federated membership, which has no local role row. */
|
|
29
|
+
can_change_role?: boolean;
|
|
28
30
|
}
|
|
29
31
|
export interface CommunityMessage {
|
|
30
32
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../../src/lib/api/communities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAW5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"communities.d.ts","sourceRoot":"","sources":["../../../src/lib/api/communities.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api/fetch.d.ts
CHANGED
|
@@ -9,7 +9,12 @@ import { type FetchWithTimeoutInit } from "../fetch-with-timeout.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class ApiError extends Error {
|
|
11
11
|
readonly status: number;
|
|
12
|
-
|
|
12
|
+
readonly code: string | null;
|
|
13
|
+
readonly retryAfterSeconds: number | null;
|
|
14
|
+
constructor(status: number, message: string, details?: {
|
|
15
|
+
readonly code?: string | null;
|
|
16
|
+
readonly retryAfterSeconds?: number | null;
|
|
17
|
+
});
|
|
13
18
|
}
|
|
14
19
|
/**
|
|
15
20
|
* Read an error message from a failed API response. Attempts to parse JSON
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAGlC;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/lib/api/fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAGlC;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAKf,MAAM,EAAE,MAAM;IAJhC,SAAgB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAgB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;gBAG/B,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvC;CAWT;AA6DD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E;AAED,MAAM,WAAW,cAAe,SAAQ,oBAAoB;CAAG;AAE/D,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAiBnB;AAsBD,eAAO,MAAM,OAAO,QAlBX,MAAM,SACJ,OAAO,YACL,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,KAC/C,OAAO,CAAC,QAAQ,CAeyB,CAAC;AAC/C,eAAO,MAAM,MAAM,QAnBV,MAAM,SACJ,OAAO,YACL,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,KAC/C,OAAO,CAAC,QAAQ,CAgBuB,CAAC;AAC7C,eAAO,MAAM,QAAQ,QApBZ,MAAM,SACJ,OAAO,YACL,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,KAC/C,OAAO,CAAC,QAAQ,CAiB2B,CAAC;AACjD,eAAO,MAAM,SAAS,QArBb,MAAM,SACJ,OAAO,YACL,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC,KAC/C,OAAO,CAAC,QAAQ,CAkB6B,CAAC"}
|
|
@@ -2,9 +2,13 @@ import { ActorStories, ActorNote, Notification, Post, Story } from "../../types/
|
|
|
2
2
|
type ActorLike = {
|
|
3
3
|
ap_id: string;
|
|
4
4
|
username?: string;
|
|
5
|
-
preferred_username?: string;
|
|
5
|
+
preferred_username?: string | null;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
type NormalizedActor<T extends ActorLike> = Omit<T, "username" | "preferred_username"> & {
|
|
8
|
+
username: string;
|
|
9
|
+
preferred_username: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function normalizeActor<T extends ActorLike>(actor: T): NormalizedActor<T>;
|
|
8
12
|
export declare const normalizePost: (post: Post) => Post;
|
|
9
13
|
export declare const normalizeStory: (story: Story) => Story;
|
|
10
14
|
export declare const normalizeActorStories: (stories: ActorStories) => ActorStories;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/lib/api/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,KAAK,EACN,MAAM,sBAAsB,CAAC;AAG9B,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/lib/api/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,KAAK,EACN,MAAM,sBAAsB,CAAC;AAG9B,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,SAAS,IAAI,IAAI,CAC9C,CAAC,EACD,UAAU,GAAG,oBAAoB,CAClC,GAAG;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAiBF,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAChD,KAAK,EAAE,CAAC,GACP,eAAe,CAAC,CAAC,CAAC,CA8BpB;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,IAGzC,CAAC;AAEH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,KAG5C,CAAC;AAEH,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY,KAAG,YAI5D,CAAC;AAEH,eAAO,MAAM,kBAAkB,GAAI,MAAM,SAAS,KAAG,SAGnD,CAAC;AAEH,eAAO,MAAM,qBAAqB,GAChC,cAAc,YAAY,KACzB,YAaF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/lib/api/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAI9B,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAmBD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/lib/api/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAI9B,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC;IACV,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,CAmBD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKxD;AAED,wBAAsB,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAK/D;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,OAAO,EAAE,yBAAyB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,uBAAuB,CAAC;CACjC,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAO1C;AAED,wBAAsB,4BAA4B,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,yBAAyB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhB;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,oEAAoE;AACpE,wBAAsB,mCAAmC,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAenG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../../src/lib/api/posts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAYjD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IAMd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBxB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB;AAKD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAOtD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhE;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"posts.d.ts","sourceRoot":"","sources":["../../../src/lib/api/posts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAYjD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IAMd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBxB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB;AAKD,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAOtD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhE;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgBzB"}
|
package/dist/lib/rtc-client.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface CallClientEvents {
|
|
|
29
29
|
error: (code: string, message?: string) => void;
|
|
30
30
|
}
|
|
31
31
|
export interface CallClientOptions {
|
|
32
|
-
/**
|
|
32
|
+
/** Explicit server-origin override; otherwise the configured API transport owns it. */
|
|
33
33
|
origin?: string;
|
|
34
34
|
/** WebSocket reconnect backoff ceiling (ms). */
|
|
35
35
|
maxBackoffMs?: number;
|
|
@@ -40,6 +40,8 @@ export declare class CallClient {
|
|
|
40
40
|
private wantConnected;
|
|
41
41
|
private backoff;
|
|
42
42
|
private reconnectTimer;
|
|
43
|
+
private openingSocket;
|
|
44
|
+
private readonly pendingFrames;
|
|
43
45
|
private readonly listeners;
|
|
44
46
|
private call;
|
|
45
47
|
private localStream;
|
|
@@ -49,11 +51,12 @@ export declare class CallClient {
|
|
|
49
51
|
private emit;
|
|
50
52
|
private setState;
|
|
51
53
|
getState(): CallUiState;
|
|
52
|
-
private
|
|
54
|
+
private apiUrl;
|
|
53
55
|
private socketUrl;
|
|
54
56
|
connect(): void;
|
|
55
57
|
disconnect(): void;
|
|
56
58
|
private openSocket;
|
|
59
|
+
private openSocketWithTicket;
|
|
57
60
|
private scheduleReconnect;
|
|
58
61
|
private send;
|
|
59
62
|
/** Place an outgoing call. Fetches a callId + ICE, then rings the peer. */
|
|
@@ -73,6 +76,8 @@ export declare class CallClient {
|
|
|
73
76
|
private onRemoteAnswer;
|
|
74
77
|
private onRemoteCandidates;
|
|
75
78
|
private drainRemoteCandidates;
|
|
79
|
+
private isActiveCall;
|
|
80
|
+
private isActivePeer;
|
|
76
81
|
private setupMedia;
|
|
77
82
|
private buildPeerConnection;
|
|
78
83
|
private makeOffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-client.d.ts","sourceRoot":"","sources":["../../src/lib/rtc-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,aAAa,EAId,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"rtc-client.d.ts","sourceRoot":"","sources":["../../src/lib/rtc-client.ts"],"names":[],"mappings":"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"}
|