wireweave 0.3.43 → 0.3.44

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/data.js +30 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wireweave",
3
- "version": "0.3.43",
3
+ "version": "0.3.44",
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/data.js CHANGED
@@ -16,9 +16,37 @@ const DEFAULT_ICE_SERVERS = [
16
16
  { urls: 'turn:openrelay.metered.ca:443?transport=tcp', username: 'openrelayproject', credential: 'openrelayproject' }
17
17
  ];
18
18
  let ICE_SERVERS = DEFAULT_ICE_SERVERS;
19
- export const setIceServers = (list) => { if (Array.isArray(list) && list.length) ICE_SERVERS = list; };
19
+ let iceServersOverridden = false;
20
+ export const setIceServers = (list) => { if (Array.isArray(list) && list.length) { ICE_SERVERS = list; iceServersOverridden = true; } };
20
21
  export const getIceServers = () => ICE_SERVERS.slice();
21
22
 
23
+ // The bundled TURN entries use the openrelayproject public demo credentials
24
+ // (metered.ca's shared, rate-limited, no-SLA relay). Fine for local dev/testing,
25
+ // but a real hosted deployment that never calls setIceServers() is silently
26
+ // depending on a third party's free-tier relay for every NAT-restricted peer —
27
+ // warn once, at first connect, so that's discoverable instead of a mystery
28
+ // "some players can never connect" bug report. Never fires on localhost/loopback
29
+ // dev servers, and never fires once the host has provided its own iceServers.
30
+ let defaultTurnWarned = false;
31
+ const isHostedDeployment = () => {
32
+ try {
33
+ const host = typeof location !== 'undefined' && location.hostname;
34
+ if (!host) return false;
35
+ if (host === 'localhost' || host === '127.0.0.1' || host === '[::1]' || host === '') return false;
36
+ if (host.endsWith('.local')) return false;
37
+ return true;
38
+ } catch { return false; }
39
+ };
40
+ const warnDefaultTurnCredentialsOnce = () => {
41
+ if (defaultTurnWarned || iceServersOverridden) return;
42
+ if (!isHostedDeployment()) return;
43
+ defaultTurnWarned = true;
44
+ console.warn('[wireweave] Using the bundled default TURN servers (openrelayproject shared public credentials) ' +
45
+ 'on a non-localhost deployment. These are a free, rate-limited, no-SLA relay meant for local dev/testing — ' +
46
+ 'NAT-restricted peers on this deployment may fail to connect or get throttled. Call setIceServers() with your ' +
47
+ 'own TURN credentials before connecting.');
48
+ };
49
+
22
50
  const PRESENCE_EXPIRY = 300000;
23
51
  const HEARTBEAT = 30000;
24
52
  const DISCONNECT_GRACE = 8000;
@@ -64,6 +92,7 @@ export class DataSession extends EventTarget {
64
92
  }
65
93
 
66
94
  async connect(room, { displayName = 'Guest' } = {}) {
95
+ warnDefaultTurnCredentialsOnce();
67
96
  if (!this.actor) this._initActor();
68
97
  if (!this.actor.getSnapshot().can({ type: 'connect' })) await this.disconnect();
69
98
  this.actor.send({ type: 'connect' });