@emeryld/rrroutes-client 2.7.10 → 2.7.11
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.cjs +133 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +143 -19
- package/dist/index.mjs.map +1 -1
- package/dist/sockets/socket.client.context.client.d.ts +1 -1
- package/dist/sockets/socket.client.context.connection.d.ts +28 -0
- package/dist/sockets/socket.client.context.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1578,9 +1578,12 @@ var React3 = __toESM(require("react"), 1);
|
|
|
1578
1578
|
|
|
1579
1579
|
// src/sockets/socket.client.context.client.ts
|
|
1580
1580
|
var React = __toESM(require("react"), 1);
|
|
1581
|
-
var SocketCtx = React.createContext(
|
|
1581
|
+
var SocketCtx = React.createContext(void 0);
|
|
1582
1582
|
function useSocketClient() {
|
|
1583
1583
|
const ctx = React.useContext(SocketCtx);
|
|
1584
|
+
if (typeof ctx === "undefined") {
|
|
1585
|
+
throw new Error("SocketClient not found. Wrap with <SocketProvider>.");
|
|
1586
|
+
}
|
|
1584
1587
|
if (!ctx) {
|
|
1585
1588
|
return null;
|
|
1586
1589
|
}
|
|
@@ -1596,7 +1599,8 @@ function useSocketConnection(args) {
|
|
|
1596
1599
|
onMessage,
|
|
1597
1600
|
onCleanup,
|
|
1598
1601
|
autoJoin = true,
|
|
1599
|
-
autoLeave = true
|
|
1602
|
+
autoLeave = true,
|
|
1603
|
+
debug
|
|
1600
1604
|
} = args;
|
|
1601
1605
|
const client = useSocketClient();
|
|
1602
1606
|
const normalizedRooms = React2.useMemo(
|
|
@@ -1607,6 +1611,36 @@ function useSocketConnection(args) {
|
|
|
1607
1611
|
() => normalizedRooms.join(""),
|
|
1608
1612
|
[normalizedRooms]
|
|
1609
1613
|
);
|
|
1614
|
+
const joinMetaKey = React2.useMemo(
|
|
1615
|
+
() => JSON.stringify(args.joinMeta ?? null),
|
|
1616
|
+
[args.joinMeta]
|
|
1617
|
+
);
|
|
1618
|
+
const leaveMetaKey = React2.useMemo(
|
|
1619
|
+
() => JSON.stringify(args.leaveMeta ?? null),
|
|
1620
|
+
[args.leaveMeta]
|
|
1621
|
+
);
|
|
1622
|
+
const missingClientWarnedRef = React2.useRef(false);
|
|
1623
|
+
const emitDebug = React2.useCallback(
|
|
1624
|
+
(event2) => {
|
|
1625
|
+
if (!debug?.enabled) return;
|
|
1626
|
+
if (debug[event2.type] === false) return;
|
|
1627
|
+
const logger = debug.logger;
|
|
1628
|
+
if (logger) {
|
|
1629
|
+
try {
|
|
1630
|
+
logger(event2);
|
|
1631
|
+
} catch (error) {
|
|
1632
|
+
if (typeof console !== "undefined" && typeof console.warn === "function") {
|
|
1633
|
+
console.warn("[socket] useSocketConnection debug logger threw", error);
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
return;
|
|
1637
|
+
}
|
|
1638
|
+
if (typeof console !== "undefined" && typeof console.log === "function") {
|
|
1639
|
+
console.log("[socket] useSocketConnection", event2);
|
|
1640
|
+
}
|
|
1641
|
+
},
|
|
1642
|
+
[debug]
|
|
1643
|
+
);
|
|
1610
1644
|
const reportAsyncError = React2.useCallback(
|
|
1611
1645
|
(phase, error) => {
|
|
1612
1646
|
if (typeof console !== "undefined" && typeof console.warn === "function") {
|
|
@@ -1616,17 +1650,104 @@ function useSocketConnection(args) {
|
|
|
1616
1650
|
[]
|
|
1617
1651
|
);
|
|
1618
1652
|
React2.useEffect(() => {
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1653
|
+
emitDebug({
|
|
1654
|
+
type: "lifecycle",
|
|
1655
|
+
phase: "effect_start",
|
|
1656
|
+
event,
|
|
1657
|
+
rooms: normalizedRooms,
|
|
1658
|
+
autoJoin,
|
|
1659
|
+
autoLeave
|
|
1660
|
+
});
|
|
1661
|
+
if (!client) {
|
|
1662
|
+
emitDebug({
|
|
1663
|
+
type: "lifecycle",
|
|
1664
|
+
phase: "client_missing",
|
|
1665
|
+
event,
|
|
1666
|
+
rooms: normalizedRooms,
|
|
1667
|
+
autoJoin,
|
|
1668
|
+
autoLeave
|
|
1669
|
+
});
|
|
1670
|
+
if (debug?.throwIfClientMissing) {
|
|
1671
|
+
throw new Error(
|
|
1672
|
+
`useSocketConnection("${event}") missing SocketClient. Wrap with <SocketProvider>.`
|
|
1673
|
+
);
|
|
1674
|
+
}
|
|
1675
|
+
if (debug?.warnIfClientMissing && !missingClientWarnedRef.current && typeof console !== "undefined" && typeof console.warn === "function") {
|
|
1676
|
+
missingClientWarnedRef.current = true;
|
|
1677
|
+
console.warn(
|
|
1678
|
+
`[socket] useSocketConnection("${event}") skipped because SocketClient is null.`
|
|
1679
|
+
);
|
|
1680
|
+
}
|
|
1681
|
+
return;
|
|
1682
|
+
}
|
|
1683
|
+
missingClientWarnedRef.current = false;
|
|
1684
|
+
emitDebug({ type: "subscription", phase: "register", event });
|
|
1685
|
+
if (autoJoin && normalizedRooms.length > 0) {
|
|
1686
|
+
emitDebug({
|
|
1687
|
+
type: "room",
|
|
1688
|
+
phase: "join_attempt",
|
|
1689
|
+
rooms: normalizedRooms
|
|
1690
|
+
});
|
|
1691
|
+
void client.joinRooms(normalizedRooms, args.joinMeta).then(() => {
|
|
1692
|
+
emitDebug({ type: "room", phase: "join_ok", rooms: normalizedRooms });
|
|
1693
|
+
}).catch((error) => {
|
|
1694
|
+
emitDebug({
|
|
1695
|
+
type: "room",
|
|
1696
|
+
phase: "join_error",
|
|
1697
|
+
rooms: normalizedRooms,
|
|
1698
|
+
err: String(error)
|
|
1699
|
+
});
|
|
1700
|
+
reportAsyncError("joinRooms", error);
|
|
1701
|
+
});
|
|
1702
|
+
} else {
|
|
1703
|
+
emitDebug({
|
|
1704
|
+
type: "room",
|
|
1705
|
+
phase: "join_skip",
|
|
1706
|
+
rooms: normalizedRooms,
|
|
1707
|
+
reason: autoJoin ? "no_rooms" : "auto_disabled"
|
|
1708
|
+
});
|
|
1709
|
+
}
|
|
1622
1710
|
const unsubscribe = client.on(event, (payload, meta) => {
|
|
1711
|
+
emitDebug({ type: "subscription", phase: "message", event });
|
|
1623
1712
|
onMessage(payload, meta);
|
|
1624
1713
|
});
|
|
1625
1714
|
return () => {
|
|
1715
|
+
emitDebug({ type: "subscription", phase: "unregister", event });
|
|
1626
1716
|
unsubscribe();
|
|
1627
|
-
if (autoLeave && normalizedRooms.length > 0)
|
|
1628
|
-
|
|
1717
|
+
if (autoLeave && normalizedRooms.length > 0) {
|
|
1718
|
+
emitDebug({
|
|
1719
|
+
type: "room",
|
|
1720
|
+
phase: "leave_attempt",
|
|
1721
|
+
rooms: normalizedRooms
|
|
1722
|
+
});
|
|
1723
|
+
void client.leaveRooms(normalizedRooms, args.leaveMeta).then(() => {
|
|
1724
|
+
emitDebug({ type: "room", phase: "leave_ok", rooms: normalizedRooms });
|
|
1725
|
+
}).catch((error) => {
|
|
1726
|
+
emitDebug({
|
|
1727
|
+
type: "room",
|
|
1728
|
+
phase: "leave_error",
|
|
1729
|
+
rooms: normalizedRooms,
|
|
1730
|
+
err: String(error)
|
|
1731
|
+
});
|
|
1732
|
+
reportAsyncError("leaveRooms", error);
|
|
1733
|
+
});
|
|
1734
|
+
} else {
|
|
1735
|
+
emitDebug({
|
|
1736
|
+
type: "room",
|
|
1737
|
+
phase: "leave_skip",
|
|
1738
|
+
rooms: normalizedRooms,
|
|
1739
|
+
reason: autoLeave ? "no_rooms" : "auto_disabled"
|
|
1740
|
+
});
|
|
1741
|
+
}
|
|
1629
1742
|
if (onCleanup) onCleanup();
|
|
1743
|
+
emitDebug({
|
|
1744
|
+
type: "lifecycle",
|
|
1745
|
+
phase: "effect_cleanup",
|
|
1746
|
+
event,
|
|
1747
|
+
rooms: normalizedRooms,
|
|
1748
|
+
autoJoin,
|
|
1749
|
+
autoLeave
|
|
1750
|
+
});
|
|
1630
1751
|
};
|
|
1631
1752
|
}, [
|
|
1632
1753
|
client,
|
|
@@ -1635,9 +1756,12 @@ function useSocketConnection(args) {
|
|
|
1635
1756
|
onCleanup,
|
|
1636
1757
|
autoJoin,
|
|
1637
1758
|
autoLeave,
|
|
1759
|
+
debug,
|
|
1760
|
+
emitDebug,
|
|
1638
1761
|
reportAsyncError,
|
|
1639
|
-
|
|
1640
|
-
|
|
1762
|
+
normalizedRoomsKey,
|
|
1763
|
+
joinMetaKey,
|
|
1764
|
+
leaveMetaKey
|
|
1641
1765
|
]);
|
|
1642
1766
|
}
|
|
1643
1767
|
|