peerbit 5.3.9 → 5.3.10

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.
@@ -1,5 +1,5 @@
1
1
  export * from "./peer.js";
2
2
  export * from "./bootstrap.js";
3
3
  export type { BootstrapRecoveryOptions } from "./bootstrap-recovery.js";
4
- export { createLibp2pExtended, type Libp2pExtendServices, type Libp2pExtended, type Libp2pCreateOptions, type Libp2pCreateOptionsWithServices, } from "./libp2p.js";
4
+ export { createLibp2pExtended, createPeerbitStreamMuxers, PEERBIT_YAMUX_PROTOCOL, PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE, PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE, type Libp2pExtendServices, type Libp2pExtended, type Libp2pCreateOptions, type Libp2pCreateOptionsWithServices, } from "./libp2p.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACN,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,GACpC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACN,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,wCAAwC,EACxC,oCAAoC,EACpC,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,GACpC,MAAM,aAAa,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from "./peer.js";
2
2
  export * from "./bootstrap.js";
3
- export { createLibp2pExtended, } from "./libp2p.js";
3
+ export { createLibp2pExtended, createPeerbitStreamMuxers, PEERBIT_YAMUX_PROTOCOL, PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE, PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE, } from "./libp2p.js";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EACN,oBAAoB,GAKpB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EACN,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,wCAAwC,EACxC,oCAAoC,GAKpC,MAAM,aAAa,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { CircuitRelayService } from "@libp2p/circuit-relay-v2";
2
+ import type { StreamMuxerFactory } from "@libp2p/interface";
2
3
  import { DirectBlock } from "@peerbit/blocks";
3
4
  import { type IPeerbitKeychain } from "@peerbit/keychain";
4
5
  import { FanoutTree, TopicControlPlane } from "@peerbit/pubsub";
@@ -24,5 +25,20 @@ export type PartialLibp2pCreateOptions = Libp2pOptions<Partial<Libp2pExtendServi
24
25
  export type Libp2pCreateOptionsWithServices = Libp2pCreateOptions & {
25
26
  services: ServiceFactoryMap<Libp2pExtendServices>;
26
27
  };
28
+ /**
29
+ * Yamux profile negotiated between Peerbit peers that starts each logical
30
+ * stream with enough credit for the default eight concurrent 512 KiB block
31
+ * responses.
32
+ *
33
+ * This must use a distinct protocol id. `@chainsafe/libp2p-yamux` applies a
34
+ * configured initial window to both send and receive credit without
35
+ * advertising it on `/yamux/1.0.0`, so using a larger value under the standard
36
+ * id can overrun an older peer's 256 KiB receive window. Keeping standard
37
+ * Yamux as the second choice preserves mixed-version interoperability.
38
+ */
39
+ export declare const PEERBIT_YAMUX_PROTOCOL = "/peerbit/yamux/1.0.0";
40
+ export declare const PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE: number;
41
+ export declare const PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE: number;
42
+ export declare const createPeerbitStreamMuxers: () => Array<() => StreamMuxerFactory>;
27
43
  export declare const createLibp2pExtended: (opts?: PartialLibp2pCreateOptions) => Promise<Libp2pExtended>;
28
44
  //# sourceMappingURL=libp2p.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,KAAK,gBAAgB,EAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAyB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEtB,MAAM,QAAQ,CAAC;AAGhB,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAClC;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GAAG,oBAAoB,CACpE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC9C,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACrD,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,GAAG;IACnE,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,OAAM,0BAA+B,KACnC,OAAO,CAAC,cAAc,CAmExB,CAAC"}
1
+ {"version":3,"file":"libp2p.d.ts","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAY,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACN,UAAU,EACV,iBAAiB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEtB,MAAM,QAAQ,CAAC;AAGhB,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAClC;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,GAAG,oBAAoB,CACpE,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAC9C,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACrD,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAC7E,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,GAAG;IACnE,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAC7D,eAAO,MAAM,wCAAwC,QAAkB,CAAC;AACxE,eAAO,MAAM,oCAAoC,QAAmB,CAAC;AAErE,eAAO,MAAM,yBAAyB,QAAO,KAAK,CACjD,MAAM,kBAAkB,CAmBxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,OAAM,0BAA+B,KACnC,OAAO,CAAC,cAAc,CAoExB,CAAC"}
@@ -2,10 +2,43 @@ import { noise } from "@chainsafe/libp2p-noise";
2
2
  import { yamux } from "@chainsafe/libp2p-yamux";
3
3
  import { identify } from "@libp2p/identify";
4
4
  import { DirectBlock } from "@peerbit/blocks";
5
- import { keychain, } from "@peerbit/keychain";
6
- import { FanoutTree, TopicControlPlane, TopicRootControlPlane } from "@peerbit/pubsub";
5
+ import { keychain } from "@peerbit/keychain";
6
+ import { FanoutTree, TopicControlPlane, TopicRootControlPlane, } from "@peerbit/pubsub";
7
7
  import { createLibp2p, } from "libp2p";
8
8
  import { listen, relay, transports } from "./transports.js";
9
+ /**
10
+ * Yamux profile negotiated between Peerbit peers that starts each logical
11
+ * stream with enough credit for the default eight concurrent 512 KiB block
12
+ * responses.
13
+ *
14
+ * This must use a distinct protocol id. `@chainsafe/libp2p-yamux` applies a
15
+ * configured initial window to both send and receive credit without
16
+ * advertising it on `/yamux/1.0.0`, so using a larger value under the standard
17
+ * id can overrun an older peer's 256 KiB receive window. Keeping standard
18
+ * Yamux as the second choice preserves mixed-version interoperability.
19
+ */
20
+ export const PEERBIT_YAMUX_PROTOCOL = "/peerbit/yamux/1.0.0";
21
+ export const PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE = 4 * 1024 * 1024;
22
+ export const PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE = 16 * 1024 * 1024;
23
+ export const createPeerbitStreamMuxers = () => [
24
+ () => {
25
+ const factory = yamux({
26
+ streamOptions: {
27
+ initialStreamWindowSize: PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE,
28
+ maxStreamWindowSize: PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE,
29
+ },
30
+ })();
31
+ const createStreamMuxer = factory.createStreamMuxer.bind(factory);
32
+ factory.protocol = PEERBIT_YAMUX_PROTOCOL;
33
+ factory.createStreamMuxer = (connection) => {
34
+ const muxer = createStreamMuxer(connection);
35
+ muxer.protocol = PEERBIT_YAMUX_PROTOCOL;
36
+ return muxer;
37
+ };
38
+ return factory;
39
+ },
40
+ yamux(),
41
+ ];
9
42
  export const createLibp2pExtended = (opts = {}) => {
10
43
  const topicRootControlPlane = new TopicRootControlPlane();
11
44
  let extraServices = {};
@@ -50,7 +83,7 @@ export const createLibp2pExtended = (opts = {}) => {
50
83
  },
51
84
  transports: opts.transports || transports(),
52
85
  connectionEncrypters: opts.connectionEncrypters || [noise()],
53
- streamMuxers: opts.streamMuxers || [yamux()],
86
+ streamMuxers: opts.streamMuxers || createPeerbitStreamMuxers(),
54
87
  services: {
55
88
  ...opts.services,
56
89
  pubsub: opts.services?.pubsub ||
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p.ts"],"names":[],"mappings":"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"}
@@ -69,9 +69,10 @@ export type NativeWireSyncSessionLike = {
69
69
  };
70
70
  };
71
71
  /**
72
- * Native shared-log defaults advertised to programs opened on this client
73
- * (the `SharedLogNativeDefaults` hook of `@peerbit/shared-log`). Structural
74
- * copy so the client does not depend on the shared-log package.
72
+ * Shared-log runtime defaults advertised to programs opened on this client
73
+ * (the historically named `SharedLogNativeDefaults` hook of
74
+ * `@peerbit/shared-log`). Structural copy so the client does not depend on the
75
+ * shared-log package.
75
76
  */
76
77
  export type SharedLogNativeDefaultsLike = {
77
78
  nativeBackbone?: false | {
@@ -89,6 +90,13 @@ export type SharedLogNativeDefaultsLike = {
89
90
  rawExchangeHeads?: boolean;
90
91
  nativeWireSync?: NativeWireSyncSessionLike;
91
92
  };
93
+ /**
94
+ * Per-channel defaults for SharedLog fanout data planes that a program opts
95
+ * into. Explicit `fanout.channel` open options take precedence.
96
+ */
97
+ fanout?: {
98
+ channel?: Partial<Omit<FanoutTreeChannelOptions, "role">>;
99
+ };
92
100
  };
93
101
  /**
94
102
  * Native network plane for a client-built libp2p stack (services must be
@@ -124,6 +132,16 @@ export type CreateInstanceOptions = (SimpleLibp2pOptions | Libp2pOptions) & {
124
132
  directory?: string;
125
133
  indexer?: (directory?: string) => Promise<Indices> | Indices;
126
134
  storage?: StorageCreateOptions;
135
+ /**
136
+ * Local upload budget, in bytes per second, for each pubsub fanout channel
137
+ * opened in either the root or node role. The same default also applies to
138
+ * SharedLog fanout channels unless an explicit per-open
139
+ * `fanout.channel.uploadLimitBps` is provided.
140
+ *
141
+ * This is local runtime policy and does not change any wire protocol.
142
+ * Default: 5_000_000 B/s.
143
+ */
144
+ pubsubUploadLimitBps?: number;
127
145
  network?: NativeNetworkCreateOptions;
128
146
  /**
129
147
  * Opt-in automatic bootstrap recovery. `true` uses bounded defaults; an
@@ -164,9 +182,11 @@ export declare class Peerbit implements ProgramClient {
164
182
  private _bootstrapRecoveryTransition;
165
183
  private _bootstrapRecoveryPaused;
166
184
  /**
167
- * Native shared-log defaults advertised to programs opened on this
168
- * client; read by `@peerbit/shared-log` (`SharedLogNativeDefaults`).
169
- * Set by `CreateInstanceOptions.network` (the `peerbit/rust` preset).
185
+ * Shared-log runtime defaults advertised to programs opened on this client;
186
+ * read by `@peerbit/shared-log` (`SharedLogNativeDefaults`, whose historical
187
+ * name is retained for compatibility). Native defaults come from
188
+ * `CreateInstanceOptions.network`; explicit pubsub upload policy contributes
189
+ * the fanout channel default.
170
190
  */
171
191
  readonly sharedLogNativeDefaults?: SharedLogNativeDefaultsLike;
172
192
  private _identity;
@@ -1 +1 @@
1
- {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
package/dist/src/peer.js CHANGED
@@ -15,6 +15,16 @@ import { getBootstrapPeerId, resolveBootstrapAddresses } from "./bootstrap.js";
15
15
  import { BootstrapRecoveryController, validateBootstrapRecoveryOptions, } from "./bootstrap-recovery.js";
16
16
  import { createLibp2pExtended, } from "./libp2p.js";
17
17
  export const logger = loggerFn("peerbit:client");
18
+ const DEFAULT_PUBSUB_UPLOAD_LIMIT_BPS = 5_000_000;
19
+ const resolvePubsubUploadLimitBps = (value) => {
20
+ const resolved = value === undefined ? DEFAULT_PUBSUB_UPLOAD_LIMIT_BPS : value;
21
+ if (typeof resolved !== "number" ||
22
+ !Number.isSafeInteger(resolved) ||
23
+ resolved <= 0) {
24
+ throw new RangeError("pubsubUploadLimitBps must be a positive safe integer in bytes per second");
25
+ }
26
+ return resolved;
27
+ };
18
28
  const isLibp2pInstance = (libp2p) => !!libp2p.getMultiaddrs;
19
29
  const createCache = async (directory, options) => {
20
30
  const cache = (options?.storeFactory ?? createStore)(directory);
@@ -50,9 +60,11 @@ export class Peerbit {
50
60
  _bootstrapRecoveryTransition = Promise.resolve();
51
61
  _bootstrapRecoveryPaused = false;
52
62
  /**
53
- * Native shared-log defaults advertised to programs opened on this
54
- * client; read by `@peerbit/shared-log` (`SharedLogNativeDefaults`).
55
- * Set by `CreateInstanceOptions.network` (the `peerbit/rust` preset).
63
+ * Shared-log runtime defaults advertised to programs opened on this client;
64
+ * read by `@peerbit/shared-log` (`SharedLogNativeDefaults`, whose historical
65
+ * name is retained for compatibility). Native defaults come from
66
+ * `CreateInstanceOptions.network`; explicit pubsub upload policy contributes
67
+ * the fanout channel default.
56
68
  */
57
69
  sharedLogNativeDefaults;
58
70
  // Libp2p peerid in Identity form
@@ -83,6 +95,25 @@ export class Peerbit {
83
95
  return this._nativeNetwork;
84
96
  }
85
97
  static async create(options = {}) {
98
+ const configuredPubsubUploadLimitBps = options.pubsubUploadLimitBps;
99
+ const pubsubUploadLimitBps = resolvePubsubUploadLimitBps(configuredPubsubUploadLimitBps);
100
+ let libp2pExtended = options
101
+ .libp2p;
102
+ const suppliedExternalLibp2p = libp2pExtended && isLibp2pInstance(libp2pExtended);
103
+ if (configuredPubsubUploadLimitBps !== undefined) {
104
+ if (suppliedExternalLibp2p) {
105
+ throw new Error("The 'pubsubUploadLimitBps' option requires Peerbit.create to build the pubsub service; it cannot be combined with an external libp2p instance.");
106
+ }
107
+ const configuredServices = libp2pExtended?.services;
108
+ const hasOwnPubsubService = configuredServices !== undefined &&
109
+ Object.prototype.hasOwnProperty.call(configuredServices, "pubsub");
110
+ const configuredPubsubService = hasOwnPubsubService
111
+ ? configuredServices.pubsub
112
+ : undefined;
113
+ if (configuredPubsubService !== undefined) {
114
+ throw new Error("The 'pubsubUploadLimitBps' option requires 'libp2p.services.pubsub' to be omitted or undefined; custom, null, and false values are not supported.");
115
+ }
116
+ }
86
117
  const bootstrapRecoveryOptions = options.bootstrapRecovery;
87
118
  if (bootstrapRecoveryOptions &&
88
119
  bootstrapRecoveryOptions !== true &&
@@ -90,8 +121,6 @@ export class Peerbit {
90
121
  validateBootstrapRecoveryOptions(bootstrapRecoveryOptions);
91
122
  }
92
123
  await sodium.ready; // Some of the modules depends on sodium to be readyy
93
- let libp2pExtended = options
94
- .libp2p;
95
124
  const asRelay = options.relay ?? true;
96
125
  // Validate incompatible options BEFORE acquiring any resources
97
126
  // (cache store, indexer, datastore). Both inputs are known up front,
@@ -194,6 +223,18 @@ export class Peerbit {
194
223
  };
195
224
  }
196
225
  }
226
+ if (configuredPubsubUploadLimitBps !== undefined) {
227
+ sharedLogNativeDefaults = {
228
+ ...sharedLogNativeDefaults,
229
+ fanout: {
230
+ ...sharedLogNativeDefaults?.fanout,
231
+ channel: {
232
+ ...sharedLogNativeDefaults?.fanout?.channel,
233
+ uploadLimitBps: pubsubUploadLimitBps,
234
+ },
235
+ },
236
+ };
237
+ }
197
238
  const topicRootControlPlane = new TopicRootControlPlane();
198
239
  // Keep a single FanoutTree instance per peer so pubsub sharding + provider
199
240
  // discovery share the same overlay.
@@ -211,6 +252,22 @@ export class Peerbit {
211
252
  return fanoutInstance;
212
253
  };
213
254
  const blockProviderNamespace = (cid) => `cid:${cid}`;
255
+ const createDefaultPubsubService = (c) => new TopicControlPlane(c, {
256
+ canRelayMessage: asRelay,
257
+ topicRootControlPlane,
258
+ fanout: getOrCreateFanout(c),
259
+ fanoutRootChannel: {
260
+ uploadLimitBps: pubsubUploadLimitBps,
261
+ },
262
+ fanoutNodeChannel: {
263
+ uploadLimitBps: pubsubUploadLimitBps,
264
+ },
265
+ rustCore: nativeNetwork?.rustCore,
266
+ // The wire-sync session decodes+verifies inbound
267
+ // frames natively and stashes shared-log raw
268
+ // exchange-head payloads for the fused receive.
269
+ nativeWire: nativeNetwork?.wireSync,
270
+ });
214
271
  const services = {
215
272
  keychain: (components) => keychain({ libp2p: {}, crypto: cryptoKeychain })(components),
216
273
  fanout: (c) => getOrCreateFanout(c),
@@ -295,17 +352,14 @@ export class Peerbit {
295
352
  });
296
353
  return blocksService;
297
354
  },
298
- pubsub: (c) => new TopicControlPlane(c, {
299
- canRelayMessage: asRelay,
300
- topicRootControlPlane,
301
- fanout: getOrCreateFanout(c),
302
- rustCore: nativeNetwork?.rustCore,
303
- // The wire-sync session decodes+verifies inbound
304
- // frames natively and stashes shared-log raw
305
- // exchange-head payloads for the fused receive.
306
- nativeWire: nativeNetwork?.wireSync,
307
- }),
355
+ pubsub: createDefaultPubsubService,
308
356
  ...extendedOptions?.services,
357
+ // With an explicit upload policy, an own `pubsub: undefined`
358
+ // is treated as absent. Re-apply our factory after the spread
359
+ // so the configured limit cannot be silently bypassed.
360
+ ...(configuredPubsubUploadLimitBps !== undefined
361
+ ? { pubsub: createDefaultPubsubService }
362
+ : {}),
309
363
  };
310
364
  if (!asRelay) {
311
365
  services.relay = null;
@@ -1 +1 @@
1
- {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/peer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peerbit",
3
- "version": "5.3.9",
3
+ "version": "5.3.10",
4
4
  "description": "Peerbit client",
5
5
  "author": "Peerbit contributors",
6
6
  "license": "MIT",
@@ -90,27 +90,27 @@
90
90
  "path-browserify": "^1.0.1",
91
91
  "uint8arrays": "^5.1.0",
92
92
  "@peerbit/any-store": "2.2.12",
93
- "@peerbit/any-store-opfs": "1.1.10",
94
93
  "@peerbit/crypto": "3.1.4",
95
- "@peerbit/blocks": "4.2.5",
96
- "@peerbit/indexer-interface": "3.0.8",
94
+ "@peerbit/blocks": "4.2.6",
97
95
  "@peerbit/build-assets": "1.1.0",
98
- "@peerbit/indexer-simple": "1.2.12",
96
+ "@peerbit/any-store-opfs": "1.1.10",
97
+ "@peerbit/indexer-interface": "3.0.8",
99
98
  "@peerbit/indexer-sqlite3": "3.0.11",
100
- "@peerbit/logger": "2.0.1",
101
- "@peerbit/pubsub": "5.3.3",
102
- "@peerbit/program": "6.0.38",
103
- "@peerbit/stream": "5.1.3",
99
+ "@peerbit/indexer-simple": "1.2.12",
104
100
  "@peerbit/keychain": "1.2.12",
105
- "@peerbit/time": "3.0.1",
106
- "@peerbit/stream-interface": "6.0.13"
101
+ "@peerbit/logger": "2.0.1",
102
+ "@peerbit/program": "6.0.39",
103
+ "@peerbit/pubsub": "5.3.4",
104
+ "@peerbit/stream": "5.1.4",
105
+ "@peerbit/stream-interface": "6.0.13",
106
+ "@peerbit/time": "3.0.1"
107
107
  },
108
108
  "optionalDependencies": {
109
- "@peerbit/any-store-rust": "0.1.2",
110
109
  "@peerbit/indexer-rust": "1.0.6",
111
- "@peerbit/network-rust": "0.1.2",
112
110
  "@peerbit/log-rust": "1.1.2",
113
- "@peerbit/native-backbone": "0.2.1"
111
+ "@peerbit/native-backbone": "0.2.2",
112
+ "@peerbit/network-rust": "0.1.3",
113
+ "@peerbit/any-store-rust": "0.1.2"
114
114
  },
115
115
  "devDependencies": {
116
116
  "@types/libsodium-wrappers": "^0.7.14",
package/src/index.ts CHANGED
@@ -3,6 +3,10 @@ export * from "./bootstrap.js";
3
3
  export type { BootstrapRecoveryOptions } from "./bootstrap-recovery.js";
4
4
  export {
5
5
  createLibp2pExtended,
6
+ createPeerbitStreamMuxers,
7
+ PEERBIT_YAMUX_PROTOCOL,
8
+ PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE,
9
+ PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE,
6
10
  type Libp2pExtendServices,
7
11
  type Libp2pExtended,
8
12
  type Libp2pCreateOptions,
package/src/libp2p.ts CHANGED
@@ -2,12 +2,14 @@ import { noise } from "@chainsafe/libp2p-noise";
2
2
  import { yamux } from "@chainsafe/libp2p-yamux";
3
3
  import type { CircuitRelayService } from "@libp2p/circuit-relay-v2";
4
4
  import { identify } from "@libp2p/identify";
5
+ import type { StreamMuxerFactory } from "@libp2p/interface";
5
6
  import { DirectBlock } from "@peerbit/blocks";
7
+ import { type IPeerbitKeychain, keychain } from "@peerbit/keychain";
6
8
  import {
7
- type IPeerbitKeychain,
8
- keychain,
9
- } from "@peerbit/keychain";
10
- import { FanoutTree, TopicControlPlane, TopicRootControlPlane } from "@peerbit/pubsub";
9
+ FanoutTree,
10
+ TopicControlPlane,
11
+ TopicRootControlPlane,
12
+ } from "@peerbit/pubsub";
11
13
  import {
12
14
  type Libp2p,
13
15
  type Libp2pOptions,
@@ -38,6 +40,43 @@ export type Libp2pCreateOptionsWithServices = Libp2pCreateOptions & {
38
40
  services: ServiceFactoryMap<Libp2pExtendServices>;
39
41
  };
40
42
 
43
+ /**
44
+ * Yamux profile negotiated between Peerbit peers that starts each logical
45
+ * stream with enough credit for the default eight concurrent 512 KiB block
46
+ * responses.
47
+ *
48
+ * This must use a distinct protocol id. `@chainsafe/libp2p-yamux` applies a
49
+ * configured initial window to both send and receive credit without
50
+ * advertising it on `/yamux/1.0.0`, so using a larger value under the standard
51
+ * id can overrun an older peer's 256 KiB receive window. Keeping standard
52
+ * Yamux as the second choice preserves mixed-version interoperability.
53
+ */
54
+ export const PEERBIT_YAMUX_PROTOCOL = "/peerbit/yamux/1.0.0";
55
+ export const PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE = 4 * 1024 * 1024;
56
+ export const PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE = 16 * 1024 * 1024;
57
+
58
+ export const createPeerbitStreamMuxers = (): Array<
59
+ () => StreamMuxerFactory
60
+ > => [
61
+ () => {
62
+ const factory = yamux({
63
+ streamOptions: {
64
+ initialStreamWindowSize: PEERBIT_YAMUX_INITIAL_STREAM_WINDOW_SIZE,
65
+ maxStreamWindowSize: PEERBIT_YAMUX_MAX_STREAM_WINDOW_SIZE,
66
+ },
67
+ })();
68
+ const createStreamMuxer = factory.createStreamMuxer.bind(factory);
69
+ factory.protocol = PEERBIT_YAMUX_PROTOCOL;
70
+ factory.createStreamMuxer = (connection) => {
71
+ const muxer = createStreamMuxer(connection);
72
+ muxer.protocol = PEERBIT_YAMUX_PROTOCOL;
73
+ return muxer;
74
+ };
75
+ return factory;
76
+ },
77
+ yamux(),
78
+ ];
79
+
41
80
  export const createLibp2pExtended = (
42
81
  opts: PartialLibp2pCreateOptions = {},
43
82
  ): Promise<Libp2pExtended> => {
@@ -46,7 +85,8 @@ export const createLibp2pExtended = (
46
85
  let fanoutInstance: FanoutTree | undefined;
47
86
  const configuredFanoutFactory =
48
87
  opts.services?.fanout ||
49
- ((c) => new FanoutTree(c, { connectionManager: false, topicRootControlPlane }));
88
+ ((c) =>
89
+ new FanoutTree(c, { connectionManager: false, topicRootControlPlane }));
50
90
  const getOrCreateFanout = (c: any) => {
51
91
  if (!fanoutInstance) {
52
92
  fanoutInstance = configuredFanoutFactory(c) as FanoutTree;
@@ -88,7 +128,7 @@ export const createLibp2pExtended = (
88
128
 
89
129
  transports: opts.transports || transports(),
90
130
  connectionEncrypters: opts.connectionEncrypters || [noise()],
91
- streamMuxers: opts.streamMuxers || [yamux()],
131
+ streamMuxers: opts.streamMuxers || createPeerbitStreamMuxers(),
92
132
  services: {
93
133
  ...opts.services,
94
134
  pubsub:
package/src/peer.ts CHANGED
@@ -119,9 +119,10 @@ export type NativeWireSyncSessionLike = {
119
119
  };
120
120
 
121
121
  /**
122
- * Native shared-log defaults advertised to programs opened on this client
123
- * (the `SharedLogNativeDefaults` hook of `@peerbit/shared-log`). Structural
124
- * copy so the client does not depend on the shared-log package.
122
+ * Shared-log runtime defaults advertised to programs opened on this client
123
+ * (the historically named `SharedLogNativeDefaults` hook of
124
+ * `@peerbit/shared-log`). Structural copy so the client does not depend on the
125
+ * shared-log package.
125
126
  */
126
127
  export type SharedLogNativeDefaultsLike = {
127
128
  nativeBackbone?:
@@ -137,6 +138,13 @@ export type SharedLogNativeDefaultsLike = {
137
138
  rawExchangeHeads?: boolean;
138
139
  nativeWireSync?: NativeWireSyncSessionLike;
139
140
  };
141
+ /**
142
+ * Per-channel defaults for SharedLog fanout data planes that a program opts
143
+ * into. Explicit `fanout.channel` open options take precedence.
144
+ */
145
+ fanout?: {
146
+ channel?: Partial<Omit<FanoutTreeChannelOptions, "role">>;
147
+ };
140
148
  };
141
149
 
142
150
  /**
@@ -174,6 +182,16 @@ export type CreateInstanceOptions = (SimpleLibp2pOptions | Libp2pOptions) & {
174
182
  directory?: string;
175
183
  indexer?: (directory?: string) => Promise<Indices> | Indices;
176
184
  storage?: StorageCreateOptions;
185
+ /**
186
+ * Local upload budget, in bytes per second, for each pubsub fanout channel
187
+ * opened in either the root or node role. The same default also applies to
188
+ * SharedLog fanout channels unless an explicit per-open
189
+ * `fanout.channel.uploadLimitBps` is provided.
190
+ *
191
+ * This is local runtime policy and does not change any wire protocol.
192
+ * Default: 5_000_000 B/s.
193
+ */
194
+ pubsubUploadLimitBps?: number;
177
195
  network?: NativeNetworkCreateOptions;
178
196
  /**
179
197
  * Opt-in automatic bootstrap recovery. `true` uses bounded defaults; an
@@ -183,6 +201,23 @@ export type CreateInstanceOptions = (SimpleLibp2pOptions | Libp2pOptions) & {
183
201
  bootstrapRecovery?: boolean | BootstrapRecoveryOptions;
184
202
  } & OptionalCreateOptions;
185
203
 
204
+ const DEFAULT_PUBSUB_UPLOAD_LIMIT_BPS = 5_000_000;
205
+
206
+ const resolvePubsubUploadLimitBps = (value: unknown): number => {
207
+ const resolved =
208
+ value === undefined ? DEFAULT_PUBSUB_UPLOAD_LIMIT_BPS : value;
209
+ if (
210
+ typeof resolved !== "number" ||
211
+ !Number.isSafeInteger(resolved) ||
212
+ resolved <= 0
213
+ ) {
214
+ throw new RangeError(
215
+ "pubsubUploadLimitBps must be a positive safe integer in bytes per second",
216
+ );
217
+ }
218
+ return resolved;
219
+ };
220
+
186
221
  export type DialReadiness =
187
222
  | "connection"
188
223
  | "services"
@@ -258,9 +293,11 @@ export class Peerbit implements ProgramClient {
258
293
  private _bootstrapRecoveryPaused = false;
259
294
 
260
295
  /**
261
- * Native shared-log defaults advertised to programs opened on this
262
- * client; read by `@peerbit/shared-log` (`SharedLogNativeDefaults`).
263
- * Set by `CreateInstanceOptions.network` (the `peerbit/rust` preset).
296
+ * Shared-log runtime defaults advertised to programs opened on this client;
297
+ * read by `@peerbit/shared-log` (`SharedLogNativeDefaults`, whose historical
298
+ * name is retained for compatibility). Native defaults come from
299
+ * `CreateInstanceOptions.network`; explicit pubsub upload policy contributes
300
+ * the fanout channel default.
264
301
  */
265
302
  public readonly sharedLogNativeDefaults?: SharedLogNativeDefaultsLike;
266
303
 
@@ -299,6 +336,37 @@ export class Peerbit implements ProgramClient {
299
336
  }
300
337
 
301
338
  static async create(options: CreateInstanceOptions = {}): Promise<Peerbit> {
339
+ const configuredPubsubUploadLimitBps = options.pubsubUploadLimitBps;
340
+ const pubsubUploadLimitBps = resolvePubsubUploadLimitBps(
341
+ configuredPubsubUploadLimitBps,
342
+ );
343
+
344
+ let libp2pExtended: Libp2pExtended | undefined = (options as Libp2pOptions)
345
+ .libp2p as Libp2pExtended;
346
+ const suppliedExternalLibp2p =
347
+ libp2pExtended && isLibp2pInstance(libp2pExtended);
348
+ if (configuredPubsubUploadLimitBps !== undefined) {
349
+ if (suppliedExternalLibp2p) {
350
+ throw new Error(
351
+ "The 'pubsubUploadLimitBps' option requires Peerbit.create to build the pubsub service; it cannot be combined with an external libp2p instance.",
352
+ );
353
+ }
354
+ const configuredServices = (
355
+ libp2pExtended as unknown as ClientCreateOptions | undefined
356
+ )?.services;
357
+ const hasOwnPubsubService =
358
+ configuredServices !== undefined &&
359
+ Object.prototype.hasOwnProperty.call(configuredServices, "pubsub");
360
+ const configuredPubsubService = hasOwnPubsubService
361
+ ? (configuredServices as { pubsub?: unknown }).pubsub
362
+ : undefined;
363
+ if (configuredPubsubService !== undefined) {
364
+ throw new Error(
365
+ "The 'pubsubUploadLimitBps' option requires 'libp2p.services.pubsub' to be omitted or undefined; custom, null, and false values are not supported.",
366
+ );
367
+ }
368
+ }
369
+
302
370
  const bootstrapRecoveryOptions = options.bootstrapRecovery;
303
371
  if (
304
372
  bootstrapRecoveryOptions &&
@@ -309,9 +377,6 @@ export class Peerbit implements ProgramClient {
309
377
  }
310
378
  await sodium.ready; // Some of the modules depends on sodium to be readyy
311
379
 
312
- let libp2pExtended: Libp2pExtended | undefined = (options as Libp2pOptions)
313
- .libp2p as Libp2pExtended;
314
-
315
380
  const asRelay = (options as SimpleLibp2pOptions).relay ?? true;
316
381
 
317
382
  // Validate incompatible options BEFORE acquiring any resources
@@ -445,6 +510,19 @@ export class Peerbit implements ProgramClient {
445
510
  }
446
511
  }
447
512
 
513
+ if (configuredPubsubUploadLimitBps !== undefined) {
514
+ sharedLogNativeDefaults = {
515
+ ...sharedLogNativeDefaults,
516
+ fanout: {
517
+ ...sharedLogNativeDefaults?.fanout,
518
+ channel: {
519
+ ...sharedLogNativeDefaults?.fanout?.channel,
520
+ uploadLimitBps: pubsubUploadLimitBps,
521
+ },
522
+ },
523
+ };
524
+ }
525
+
448
526
  const topicRootControlPlane = new TopicRootControlPlane();
449
527
 
450
528
  // Keep a single FanoutTree instance per peer so pubsub sharding + provider
@@ -467,6 +545,24 @@ export class Peerbit implements ProgramClient {
467
545
 
468
546
  const blockProviderNamespace = (cid: string) => `cid:${cid}`;
469
547
 
548
+ const createDefaultPubsubService = (c: any) =>
549
+ new TopicControlPlane(c, {
550
+ canRelayMessage: asRelay,
551
+ topicRootControlPlane,
552
+ fanout: getOrCreateFanout(c),
553
+ fanoutRootChannel: {
554
+ uploadLimitBps: pubsubUploadLimitBps,
555
+ },
556
+ fanoutNodeChannel: {
557
+ uploadLimitBps: pubsubUploadLimitBps,
558
+ },
559
+ rustCore: nativeNetwork?.rustCore,
560
+ // The wire-sync session decodes+verifies inbound
561
+ // frames natively and stashes shared-log raw
562
+ // exchange-head payloads for the fused receive.
563
+ nativeWire: nativeNetwork?.wireSync,
564
+ });
565
+
470
566
  const services: any = {
471
567
  keychain: (components: KeychainComponents) =>
472
568
  keychain({ libp2p: {}, crypto: cryptoKeychain })(components),
@@ -555,18 +651,14 @@ export class Peerbit implements ProgramClient {
555
651
  });
556
652
  return blocksService;
557
653
  },
558
- pubsub: (c: any) =>
559
- new TopicControlPlane(c, {
560
- canRelayMessage: asRelay,
561
- topicRootControlPlane,
562
- fanout: getOrCreateFanout(c),
563
- rustCore: nativeNetwork?.rustCore,
564
- // The wire-sync session decodes+verifies inbound
565
- // frames natively and stashes shared-log raw
566
- // exchange-head payloads for the fused receive.
567
- nativeWire: nativeNetwork?.wireSync,
568
- }),
654
+ pubsub: createDefaultPubsubService,
569
655
  ...extendedOptions?.services,
656
+ // With an explicit upload policy, an own `pubsub: undefined`
657
+ // is treated as absent. Re-apply our factory after the spread
658
+ // so the configured limit cannot be silently bypassed.
659
+ ...(configuredPubsubUploadLimitBps !== undefined
660
+ ? { pubsub: createDefaultPubsubService }
661
+ : {}),
570
662
  };
571
663
 
572
664
  if (!asRelay) {