wireweave 0.3.22 → 0.3.23
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/package.json +1 -1
- package/src/wireweave.js +13 -0
package/package.json
CHANGED
package/src/wireweave.js
CHANGED
|
@@ -12,6 +12,7 @@ import { createSettings } from './settings.js';
|
|
|
12
12
|
import { createMedia } from './media.js';
|
|
13
13
|
import { createPages } from './pages.js';
|
|
14
14
|
import { createDM } from './dm.js';
|
|
15
|
+
import { createDataSession } from './data.js';
|
|
15
16
|
import { register } from './debug.js';
|
|
16
17
|
|
|
17
18
|
export const createWireweave = ({
|
|
@@ -86,12 +87,24 @@ export const createWireweave = ({
|
|
|
86
87
|
return dm;
|
|
87
88
|
};
|
|
88
89
|
|
|
90
|
+
// DataSession is lazy for the same reason as DM: requires xstate and FSM.
|
|
91
|
+
// onSwitch accumulates subscriptions across all visited servers (idempotent
|
|
92
|
+
// Map pattern) — no unsubscribe on server switch by design so offline data
|
|
93
|
+
// from prior servers remains cached.
|
|
94
|
+
let data = null;
|
|
95
|
+
const ensureData = ({ room = '', displayName = 'Guest', namespace = '' } = {}) => {
|
|
96
|
+
if (!data) data = createDataSession({ fsm, xstate, relayPool: pool, auth, namespace });
|
|
97
|
+
return data;
|
|
98
|
+
};
|
|
99
|
+
|
|
89
100
|
const api = {
|
|
90
101
|
pool, auth, fsm, message, bans, roles, settings, pages, media, channels, servers, chat,
|
|
91
102
|
get voice() { return voice; },
|
|
92
103
|
ensureVoice,
|
|
93
104
|
get dm() { return dm; },
|
|
94
105
|
ensureDM,
|
|
106
|
+
get data() { return data; },
|
|
107
|
+
ensureData,
|
|
95
108
|
setCurrentChannel,
|
|
96
109
|
get currentChannelId() { return currentChannelId; },
|
|
97
110
|
get currentServerId() { return servers.currentServerId; }
|