@olane/o-config 0.3.8 → 0.4.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAKpC,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,oBAAoB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB,EAAE,YASjC,CAAC"}
@@ -2,16 +2,16 @@ import { noise } from '@chainsafe/libp2p-noise';
2
2
  import { yamux } from '@chainsafe/libp2p-yamux';
3
3
  import { ping } from '@libp2p/ping';
4
4
  import { identify } from '@libp2p/identify';
5
+ import { webTransport } from '@libp2p/webtransport';
5
6
  import { webSockets } from '@libp2p/websockets';
6
- import { kadDHT } from '@libp2p/kad-dht';
7
+ import { tcp } from '@libp2p/tcp';
7
8
  export const defaultLibp2pConfig = {
8
- listeners: ['/ip4/0.0.0.0/tcp/0/ws'],
9
- transports: [webSockets()],
9
+ listeners: [],
10
+ transports: [webTransport(), webSockets(), tcp()],
10
11
  connectionEncrypters: [noise()],
11
12
  streamMuxers: [yamux()],
12
13
  services: {
13
14
  ping: ping(),
14
15
  identify: identify(),
15
- dht: kadDHT(),
16
16
  },
17
17
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,OAAO,EACP,+BAA+B,EAC/B,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/node/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAuB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,wBAAsB,UAAU,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B3E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAEtD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-node.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node.spec.d.ts","sourceRoot":"","sources":["../../../test/p2p/create-node.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ import { expect } from 'chai';
2
+ import { kadDHT, removePublicAddressesMapper } from '@libp2p/kad-dht';
3
+ import { defaultLibp2pConfig } from '../../src/config/config.js';
4
+ import { createNode } from '../../src/node/node.js';
5
+ import { CID } from 'multiformats';
6
+ import * as json from 'multiformats/codecs/json';
7
+ import { sha256 } from 'multiformats/hashes/sha2';
8
+ describe('createNode @WebTransport', () => {
9
+ it('should create a node', async () => {
10
+ const node = await createNode({
11
+ ...defaultLibp2pConfig,
12
+ });
13
+ expect(node).to.exist;
14
+ await node.start();
15
+ expect(node.status).to.equal('started');
16
+ await node.stop();
17
+ });
18
+ });
19
+ describe('P2P networking', () => {
20
+ let node1;
21
+ let node2;
22
+ it('should start 2 nodes', async () => {
23
+ node1 = await createNode({
24
+ ...defaultLibp2pConfig,
25
+ listeners: ['/ip4/0.0.0.0/tcp/0/ws'],
26
+ services: {
27
+ ...defaultLibp2pConfig.services,
28
+ dht: kadDHT({
29
+ peerInfoMapper: removePublicAddressesMapper,
30
+ clientMode: false, // DO NOT CHANGE THIS, it will break the network
31
+ kBucketSize: 20, // peer size
32
+ }),
33
+ },
34
+ });
35
+ await node1.start();
36
+ node2 = await createNode({
37
+ ...defaultLibp2pConfig,
38
+ listeners: ['/ip4/0.0.0.0/tcp/0/ws'],
39
+ services: {
40
+ ...defaultLibp2pConfig.services,
41
+ dht: kadDHT({
42
+ peerInfoMapper: removePublicAddressesMapper,
43
+ clientMode: false, // DO NOT CHANGE THIS, it will break the network
44
+ kBucketSize: 20, // peer size
45
+ }),
46
+ },
47
+ });
48
+ await node2.start();
49
+ });
50
+ it('should dial a node', async () => {
51
+ const dialer = await node1.dial(node2.getMultiaddrs());
52
+ expect(dialer).to.exist;
53
+ });
54
+ it('should have 1 peer', async () => {
55
+ const peers = await node1.getPeers();
56
+ expect(peers.length).to.equal(1);
57
+ });
58
+ it('should advertise data on the network', async () => {
59
+ const dht = node1.services.dht;
60
+ const data = {
61
+ address: 'o://1234567890',
62
+ };
63
+ const bytes = json.encode(data);
64
+ const hash = await sha256.digest(bytes);
65
+ const cid = CID.create(1, json.code, hash);
66
+ await dht.provide(cid);
67
+ const dht2 = node2.services.dht;
68
+ const providers = dht2.findProviders(cid);
69
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Content routing provide timeout')), 5_000));
70
+ const { value, done } = await Promise.race([
71
+ providers.next(),
72
+ timeoutPromise,
73
+ ]);
74
+ expect(value).to.exist;
75
+ expect(value.peer.toString()).to.equal(node1.peerId.toString());
76
+ });
77
+ it('should stop the nodes', async () => {
78
+ await node1.stop();
79
+ await node2.stop();
80
+ expect(node1.status).to.equal('stopped');
81
+ expect(node2.status).to.equal('stopped');
82
+ });
83
+ });
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@olane/o-config",
3
- "version": "0.3.8",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
5
+ "main": "dist/src/index.js",
6
+ "types": "dist/src/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
- "types": "./dist/index.d.ts",
10
- "default": "./dist/index.js"
9
+ "types": "./dist/src/index.d.ts",
10
+ "default": "./dist/src/index.js"
11
11
  }
12
12
  },
13
13
  "files": [
@@ -16,12 +16,14 @@
16
16
  "LICENSE"
17
17
  ],
18
18
  "scripts": {
19
- "test": "jest",
19
+ "test": "aegir test",
20
+ "test:node": "aegir test -t node",
21
+ "test:browser": "aegir test -t browser",
20
22
  "dev": "npx tsx src/index.ts",
21
23
  "build": "tsc",
22
24
  "start:prod": "node dist/index.js",
23
25
  "prepublishOnly": "npm run build",
24
- "lint": "eslint ./src/**/*.ts"
26
+ "lint": "aegir lint"
25
27
  },
26
28
  "repository": {
27
29
  "type": "git",
@@ -37,6 +39,7 @@
37
39
  "@types/jest": "^30.0.0",
38
40
  "@typescript-eslint/eslint-plugin": "^8.34.1",
39
41
  "@typescript-eslint/parser": "^8.34.1",
42
+ "aegir": "^47.0.21",
40
43
  "buffer": "^6.0.3",
41
44
  "eslint": "^9.29.0",
42
45
  "eslint-config-prettier": "^10.1.6",
@@ -64,6 +67,7 @@
64
67
  "@libp2p/peer-store": "^11.2.5",
65
68
  "@libp2p/ping": "^2.0.35",
66
69
  "@libp2p/pubsub": "^10.1.16",
70
+ "@libp2p/tcp": "^10.1.19",
67
71
  "@libp2p/websockets": "^9.2.18",
68
72
  "@libp2p/webtransport": "^5.0.50",
69
73
  "@multiformats/multiaddr": "^12.5.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,oBAAoB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB,EAAE,YAUjC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,OAAO,EACP,+BAA+B,EAC/B,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,MAAM,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAuB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,wBAAsB,UAAU,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B3E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,kBAEtD"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes