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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/wireweave.js +13 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wireweave",
3
- "version": "0.3.22",
3
+ "version": "0.3.23",
4
4
  "description": "nostr + webrtc voice + data SDK. networking layer for 247420 projects.",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
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; }