@ceramicnetwork/ipfs-topology 2.0.5 → 2.1.0-rc.0

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
  import type { DiagnosticsLogger, IpfsApi } from '@ceramicnetwork/common';
2
- export declare const DEFAULT_PEER_DISCOVERY_PERIOD: number;
2
+ export declare const DEFAULT_BOOTSTRAP_CONNECTION_PERIOD: number;
3
3
  export declare class IpfsTopology {
4
4
  readonly ipfs: IpfsApi;
5
5
  readonly ceramicNetwork: string;
@@ -7,11 +7,9 @@ export declare class IpfsTopology {
7
7
  readonly period: number;
8
8
  intervalId: any;
9
9
  constructor(ipfs: IpfsApi, ceramicNetwork: string, logger: DiagnosticsLogger, period?: number);
10
- connect(peerList: Array<string>): Promise<void>;
11
10
  forceConnection(): Promise<void>;
12
11
  start(): Promise<void>;
13
12
  stop(): void;
14
- private _dynamicBoostrapList;
15
13
  private _forceBootstrapConnection;
16
14
  }
17
15
  //# sourceMappingURL=ipfs-topology.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs-topology.d.ts","sourceRoot":"","sources":["../src/ipfs-topology.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AA6ExE,eAAO,MAAM,6BAA6B,QAAiB,CAAA;AAE3D,qBAAa,YAAY;IAIrB,QAAQ,CAAC,IAAI,EAAE,OAAO;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM;IANzB,UAAU,EAAE,GAAG,CAAA;gBAGJ,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,iBAAiB,EACzB,MAAM,GAAE,MAAsC;IAOnD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;IAK/B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAOhC,KAAK;IAOX,IAAI;YAMU,oBAAoB;YAUpB,yBAAyB;CA2BxC"}
1
+ {"version":3,"file":"ipfs-topology.d.ts","sourceRoot":"","sources":["../src/ipfs-topology.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAgDxE,eAAO,MAAM,mCAAmC,QAAiB,CAAA;AAKjE,qBAAa,YAAY;IAIrB,QAAQ,CAAC,IAAI,EAAE,OAAO;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC/B,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM;IANzB,UAAU,EAAE,GAAG,CAAA;gBAGJ,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,iBAAiB,EACzB,MAAM,GAAE,MAA4C;IAGzD,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,KAAK;IAOX,IAAI;YAMU,yBAAyB;CA4BxC"}
@@ -1,25 +1,6 @@
1
- import fetch from 'cross-fetch';
2
1
  import { Networks } from '@ceramicnetwork/common';
3
2
  import { Multiaddr } from 'multiaddr';
4
- const PEER_FILE_URLS = (ceramicNetwork) => {
5
- switch (ceramicNetwork) {
6
- case Networks.MAINNET:
7
- case Networks.ELP:
8
- return 'https://raw.githubusercontent.com/ceramicnetwork/peerlist/main/mainnet.json';
9
- case Networks.TESTNET_CLAY:
10
- return 'https://raw.githubusercontent.com/ceramicnetwork/peerlist/main/testnet-clay.json';
11
- case Networks.DEV_UNSTABLE:
12
- return 'https://raw.githubusercontent.com/ceramicnetwork/peerlist/main/dev-unstable.json';
13
- case Networks.LOCAL:
14
- case Networks.INMEMORY:
15
- return null;
16
- default: {
17
- const preventCompilingUnhandledCase = ceramicNetwork;
18
- return null;
19
- }
20
- }
21
- };
22
- const BASE_BOOTSTRAP_LIST = (ceramicNetwork) => {
3
+ const BOOTSTRAP_LIST = (ceramicNetwork) => {
23
4
  switch (ceramicNetwork) {
24
5
  case Networks.MAINNET:
25
6
  case Networks.ELP:
@@ -45,34 +26,17 @@ const BASE_BOOTSTRAP_LIST = (ceramicNetwork) => {
45
26
  }
46
27
  }
47
28
  };
48
- async function fetchJson(url) {
49
- try {
50
- const res = await fetch(url).then((response) => response.json());
51
- if (res.error) {
52
- throw new Error(res.error);
53
- }
54
- return res;
55
- }
56
- catch (error) {
57
- return [];
58
- }
59
- }
60
- export const DEFAULT_PEER_DISCOVERY_PERIOD = 1000 * 60 * 60;
29
+ export const DEFAULT_BOOTSTRAP_CONNECTION_PERIOD = 1000 * 60 * 60;
61
30
  export class IpfsTopology {
62
- constructor(ipfs, ceramicNetwork, logger, period = DEFAULT_PEER_DISCOVERY_PERIOD) {
31
+ constructor(ipfs, ceramicNetwork, logger, period = DEFAULT_BOOTSTRAP_CONNECTION_PERIOD) {
63
32
  this.ipfs = ipfs;
64
33
  this.ceramicNetwork = ceramicNetwork;
65
34
  this.logger = logger;
66
35
  this.period = period;
67
36
  }
68
- async connect(peerList) {
69
- const addressList = peerList.map((peer) => new Multiaddr(peer));
70
- await this._forceBootstrapConnection(this.ipfs, addressList);
71
- }
72
37
  async forceConnection() {
73
- const base = BASE_BOOTSTRAP_LIST(this.ceramicNetwork) || [];
74
- const dynamic = await this._dynamicBoostrapList(this.ceramicNetwork);
75
- const bootstrapList = base.concat(dynamic);
38
+ this.logger.debug(`Performing periodic reconnection to bootstrap peers`);
39
+ const bootstrapList = BOOTSTRAP_LIST(this.ceramicNetwork) || [];
76
40
  await this._forceBootstrapConnection(this.ipfs, bootstrapList);
77
41
  }
78
42
  async start() {
@@ -86,21 +50,19 @@ export class IpfsTopology {
86
50
  clearInterval(this.intervalId);
87
51
  }
88
52
  }
89
- async _dynamicBoostrapList(network) {
90
- const url = PEER_FILE_URLS(network);
91
- if (!url) {
92
- return [];
93
- }
94
- this.logger.imp(`Connecting to peers found in '${url}'`);
95
- const list = await fetchJson(url);
96
- return list?.map((peer) => new Multiaddr(peer)) || [];
97
- }
98
53
  async _forceBootstrapConnection(ipfs, bootstrapList) {
99
- const myPeerId = (await ipfs.id()).id;
54
+ let myPeerId;
55
+ try {
56
+ myPeerId = (await ipfs.id()).id;
57
+ }
58
+ catch (error) {
59
+ this.logger.warn(`Error loading our PeerID from IPFS: ${error}. Skipping connection to bootstrap peers`);
60
+ return;
61
+ }
100
62
  const filteredBootstrapList = bootstrapList.filter((addr) => {
101
63
  return !addr.getPeerId()?.endsWith(myPeerId);
102
64
  });
103
- await Promise.all(filteredBootstrapList.map(async (node) => {
65
+ for (const node of filteredBootstrapList) {
104
66
  try {
105
67
  await ipfs.swarm.connect(node);
106
68
  }
@@ -108,11 +70,6 @@ export class IpfsTopology {
108
70
  this.logger.warn(`Can not connect to ${node}`);
109
71
  this.logger.warn(error);
110
72
  }
111
- }));
112
- const connectedPeers = await ipfs.swarm.peers();
113
- if (connectedPeers.length > 0) {
114
- const peerAddresses = connectedPeers.map((obj) => obj.addr);
115
- this.logger.imp(`Connected to peers: ${peerAddresses.join(', ')}`);
116
73
  }
117
74
  }
118
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs-topology.js","sourceRoot":"","sources":["../src/ipfs-topology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipfs-topology.js","sourceRoot":"","sources":["../src/ipfs-topology.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ceramicnetwork/ipfs-topology",
3
- "version": "2.0.5",
3
+ "version": "2.1.0-rc.0",
4
4
  "description": "Setup IPFS topology right",
5
5
  "keywords": [
6
6
  "ipfs",
@@ -30,11 +30,11 @@
30
30
  "test": "exit 0"
31
31
  },
32
32
  "dependencies": {
33
- "@ceramicnetwork/common": "^2.0.4",
33
+ "@ceramicnetwork/common": "^2.2.0-rc.3",
34
34
  "cross-fetch": "^3.1.4"
35
35
  },
36
36
  "devDependencies": {
37
37
  "multiaddr": "^10.0.1"
38
38
  },
39
- "gitHead": "8a91cfd363d1d71de453724da9101a9f86bb075a"
39
+ "gitHead": "42787231ecf14fa8bcf1c80f15e50dfe8de4fb32"
40
40
  }