@olane/o-node 0.7.1

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 (92) hide show
  1. package/README.md +1024 -0
  2. package/dist/src/connection/index.d.ts +5 -0
  3. package/dist/src/connection/index.d.ts.map +1 -0
  4. package/dist/src/connection/index.js +4 -0
  5. package/dist/src/connection/interfaces/o-node-connection-manager.config.d.ts +6 -0
  6. package/dist/src/connection/interfaces/o-node-connection-manager.config.d.ts.map +1 -0
  7. package/dist/src/connection/interfaces/o-node-connection-manager.config.js +1 -0
  8. package/dist/src/connection/interfaces/o-node-connection.config.d.ts +6 -0
  9. package/dist/src/connection/interfaces/o-node-connection.config.d.ts.map +1 -0
  10. package/dist/src/connection/interfaces/o-node-connection.config.js +1 -0
  11. package/dist/src/connection/o-node-connection.d.ts +13 -0
  12. package/dist/src/connection/o-node-connection.d.ts.map +1 -0
  13. package/dist/src/connection/o-node-connection.js +51 -0
  14. package/dist/src/connection/o-node-connection.manager.d.ts +17 -0
  15. package/dist/src/connection/o-node-connection.manager.d.ts.map +1 -0
  16. package/dist/src/connection/o-node-connection.manager.js +68 -0
  17. package/dist/src/index.d.ts +10 -0
  18. package/dist/src/index.d.ts.map +1 -0
  19. package/dist/src/index.js +9 -0
  20. package/dist/src/interfaces/o-node.config.d.ts +7 -0
  21. package/dist/src/interfaces/o-node.config.d.ts.map +1 -0
  22. package/dist/src/interfaces/o-node.config.js +1 -0
  23. package/dist/src/interfaces/o-node.tool-config.d.ts +4 -0
  24. package/dist/src/interfaces/o-node.tool-config.d.ts.map +1 -0
  25. package/dist/src/interfaces/o-node.tool-config.js +1 -0
  26. package/dist/src/lib/network-activity.lib.d.ts +1 -0
  27. package/dist/src/lib/network-activity.lib.d.ts.map +1 -0
  28. package/dist/src/lib/network-activity.lib.js +34 -0
  29. package/dist/src/nodes/client.node.d.ts +7 -0
  30. package/dist/src/nodes/client.node.d.ts.map +1 -0
  31. package/dist/src/nodes/client.node.js +16 -0
  32. package/dist/src/nodes/index.d.ts +4 -0
  33. package/dist/src/nodes/index.d.ts.map +1 -0
  34. package/dist/src/nodes/index.js +3 -0
  35. package/dist/src/nodes/server.node.d.ts +7 -0
  36. package/dist/src/nodes/server.node.d.ts.map +1 -0
  37. package/dist/src/nodes/server.node.js +20 -0
  38. package/dist/src/nodes/websocket.node.d.ts +7 -0
  39. package/dist/src/nodes/websocket.node.d.ts.map +1 -0
  40. package/dist/src/nodes/websocket.node.js +18 -0
  41. package/dist/src/o-node.d.ts +42 -0
  42. package/dist/src/o-node.d.ts.map +1 -0
  43. package/dist/src/o-node.hierarchy-manager.d.ts +15 -0
  44. package/dist/src/o-node.hierarchy-manager.d.ts.map +1 -0
  45. package/dist/src/o-node.hierarchy-manager.js +15 -0
  46. package/dist/src/o-node.js +242 -0
  47. package/dist/src/o-node.tool.d.ts +16 -0
  48. package/dist/src/o-node.tool.d.ts.map +1 -0
  49. package/dist/src/o-node.tool.js +48 -0
  50. package/dist/src/router/index.d.ts +6 -0
  51. package/dist/src/router/index.d.ts.map +1 -0
  52. package/dist/src/router/index.js +5 -0
  53. package/dist/src/router/interfaces/o-node-router.config.d.ts +3 -0
  54. package/dist/src/router/interfaces/o-node-router.config.d.ts.map +1 -0
  55. package/dist/src/router/interfaces/o-node-router.config.js +1 -0
  56. package/dist/src/router/interfaces/o-node-router.response.d.ts +8 -0
  57. package/dist/src/router/interfaces/o-node-router.response.d.ts.map +1 -0
  58. package/dist/src/router/interfaces/o-node-router.response.js +1 -0
  59. package/dist/src/router/o-node.address.d.ts +18 -0
  60. package/dist/src/router/o-node.address.d.ts.map +1 -0
  61. package/dist/src/router/o-node.address.js +29 -0
  62. package/dist/src/router/o-node.router.d.ts +12 -0
  63. package/dist/src/router/o-node.router.d.ts.map +1 -0
  64. package/dist/src/router/o-node.router.js +109 -0
  65. package/dist/src/router/o-node.transport.d.ts +11 -0
  66. package/dist/src/router/o-node.transport.d.ts.map +1 -0
  67. package/dist/src/router/o-node.transport.js +18 -0
  68. package/dist/src/router/resolvers/index.d.ts +4 -0
  69. package/dist/src/router/resolvers/index.d.ts.map +1 -0
  70. package/dist/src/router/resolvers/index.js +3 -0
  71. package/dist/src/router/resolvers/o-node.child-resolver.d.ts +11 -0
  72. package/dist/src/router/resolvers/o-node.child-resolver.d.ts.map +1 -0
  73. package/dist/src/router/resolvers/o-node.child-resolver.js +58 -0
  74. package/dist/src/router/resolvers/o-node.leader-resolver-fallback.d.ts +8 -0
  75. package/dist/src/router/resolvers/o-node.leader-resolver-fallback.d.ts.map +1 -0
  76. package/dist/src/router/resolvers/o-node.leader-resolver-fallback.js +35 -0
  77. package/dist/src/router/resolvers/o-node.resolver.d.ts +11 -0
  78. package/dist/src/router/resolvers/o-node.resolver.d.ts.map +1 -0
  79. package/dist/src/router/resolvers/o-node.resolver.js +41 -0
  80. package/dist/src/router/resolvers/o-node.search-resolver.d.ts +8 -0
  81. package/dist/src/router/resolvers/o-node.search-resolver.d.ts.map +1 -0
  82. package/dist/src/router/resolvers/o-node.search-resolver.js +60 -0
  83. package/dist/src/router/route.request.d.ts +14 -0
  84. package/dist/src/router/route.request.d.ts.map +1 -0
  85. package/dist/src/router/route.request.js +1 -0
  86. package/dist/src/utils/network.utils.d.ts +20 -0
  87. package/dist/src/utils/network.utils.d.ts.map +1 -0
  88. package/dist/src/utils/network.utils.js +74 -0
  89. package/dist/test/o-node.spec.d.ts +2 -0
  90. package/dist/test/o-node.spec.d.ts.map +1 -0
  91. package/dist/test/o-node.spec.js +20 -0
  92. package/package.json +68 -0
@@ -0,0 +1,5 @@
1
+ export * from './o-node-connection.js';
2
+ export * from './o-node-connection.manager.js';
3
+ export * from './interfaces/o-node-connection.config.js';
4
+ export * from './interfaces/o-node-connection-manager.config.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,kDAAkD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './o-node-connection.js';
2
+ export * from './o-node-connection.manager.js';
3
+ export * from './interfaces/o-node-connection.config.js';
4
+ export * from './interfaces/o-node-connection-manager.config.js';
@@ -0,0 +1,6 @@
1
+ import { oConnectionManagerConfig } from '@olane/o-core';
2
+ import { Libp2p } from '@olane/o-config';
3
+ export interface oNodeConnectionManagerConfig extends oConnectionManagerConfig {
4
+ p2pNode: Libp2p;
5
+ }
6
+ //# sourceMappingURL=o-node-connection-manager.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node-connection-manager.config.d.ts","sourceRoot":"","sources":["../../../../src/connection/interfaces/o-node-connection-manager.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,WAAW,4BAA6B,SAAQ,wBAAwB;IAC5E,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ import { Connection } from '@olane/o-config';
2
+ import { oConnectionConfig } from '@olane/o-core';
3
+ export interface oNodeConnectionConfig extends oConnectionConfig {
4
+ p2pConnection: Connection;
5
+ }
6
+ //# sourceMappingURL=o-node-connection.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node-connection.config.d.ts","sourceRoot":"","sources":["../../../../src/connection/interfaces/o-node-connection.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,aAAa,EAAE,UAAU,CAAC;CAC3B"}
@@ -0,0 +1,13 @@
1
+ import { Connection } from '@olane/o-config';
2
+ import { oConnection, oRequest, oResponse } from '@olane/o-core';
3
+ import { oNodeConnectionConfig } from './interfaces/o-node-connection.config.js';
4
+ export declare class oNodeConnection extends oConnection {
5
+ protected readonly config: oNodeConnectionConfig;
6
+ protected p2pConnection: Connection;
7
+ constructor(config: oNodeConnectionConfig);
8
+ read(source: any): Promise<any>;
9
+ validate(): void;
10
+ transmit(request: oRequest): Promise<oResponse>;
11
+ close(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=o-node-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node-connection.d.ts","sourceRoot":"","sources":["../../../src/connection/o-node-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiC,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EACL,WAAW,EAGX,QAAQ,EACR,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,qBAAa,eAAgB,SAAQ,WAAW;IAGlC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB;IAF5D,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC;gBAEL,MAAM,EAAE,qBAAqB;IAKtD,IAAI,CAAC,MAAM,EAAE,GAAG;IAUtB,QAAQ;IAOF,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IA4B/C,KAAK;CAKZ"}
@@ -0,0 +1,51 @@
1
+ import { Uint8ArrayList, pushable, all } from '@olane/o-config';
2
+ import { oConnection, oError, oErrorCodes, oResponse, } from '@olane/o-core';
3
+ export class oNodeConnection extends oConnection {
4
+ constructor(config) {
5
+ super(config);
6
+ this.config = config;
7
+ this.p2pConnection = config.p2pConnection;
8
+ }
9
+ async read(source) {
10
+ const chunks = await all(source);
11
+ const data = new Uint8ArrayList(...chunks).slice();
12
+ if (!data || data.length === 0) {
13
+ throw new Error('No data received');
14
+ }
15
+ return JSON.parse(new TextDecoder().decode(data));
16
+ }
17
+ validate() {
18
+ if (this.config.p2pConnection.status !== 'open') {
19
+ throw new Error('Connection is not valid');
20
+ }
21
+ // do nothing
22
+ }
23
+ async transmit(request) {
24
+ try {
25
+ const stream = await this.p2pConnection.newStream(this.nextHopAddress.protocol);
26
+ // Create a pushable stream
27
+ const pushableStream = pushable();
28
+ pushableStream.push(new TextEncoder().encode(request.toString()));
29
+ pushableStream.end();
30
+ // Send the data
31
+ await stream.sink(pushableStream);
32
+ const res = await this.read(stream.source);
33
+ // process the response
34
+ const response = new oResponse({
35
+ ...res.result,
36
+ });
37
+ return response;
38
+ }
39
+ catch (error) {
40
+ if (error?.name === 'UnsupportedProtocolError') {
41
+ throw new oError(oErrorCodes.NOT_FOUND, 'Address not found');
42
+ }
43
+ throw error;
44
+ }
45
+ }
46
+ async close() {
47
+ this.logger.debug('Closing connection');
48
+ await this.p2pConnection.close();
49
+ this.logger.debug('Connection closed');
50
+ }
51
+ }
@@ -0,0 +1,17 @@
1
+ import { oAddress, oConnectionConfig, oConnectionManager } from '@olane/o-core';
2
+ import { oConnection } from '@olane/o-core';
3
+ import { oNodeConnectionManagerConfig } from './interfaces/o-node-connection-manager.config.js';
4
+ import { oNodeConnection } from './o-node-connection.js';
5
+ export declare class oNodeConnectionManager extends oConnectionManager {
6
+ private p2pNode;
7
+ constructor(config: oNodeConnectionManagerConfig);
8
+ /**
9
+ * Connect to a given address
10
+ * @param address - The address to connect to
11
+ * @returns The connection object
12
+ */
13
+ connect(config: oConnectionConfig): Promise<oNodeConnection>;
14
+ isCached(address: oAddress): boolean;
15
+ getCachedConnection(address: oAddress): oConnection | null;
16
+ }
17
+ //# sourceMappingURL=o-node-connection.manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node-connection.manager.d.ts","sourceRoot":"","sources":["../../../src/connection/o-node-connection.manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAEhG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,4BAA4B;IAKhD;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6ClE,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO;IAIpC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI;CAe3D"}
@@ -0,0 +1,68 @@
1
+ import { oConnectionManager } from '@olane/o-core';
2
+ import { oNodeConnection } from './o-node-connection.js';
3
+ export class oNodeConnectionManager extends oConnectionManager {
4
+ constructor(config) {
5
+ super(config);
6
+ this.p2pNode = config.p2pNode;
7
+ }
8
+ /**
9
+ * Connect to a given address
10
+ * @param address - The address to connect to
11
+ * @returns The connection object
12
+ */
13
+ async connect(config) {
14
+ const { address, nextHopAddress, callerAddress } = config;
15
+ // check if we already have a connection to this address
16
+ // TODO: how can we enable caching of connections & connection lifecycles
17
+ // if (this.isCached(nextHopAddress)) {
18
+ // const cachedConnection = this.getCachedConnection(nextHopAddress);
19
+ // if (cachedConnection) {
20
+ // this.logger.debug(
21
+ // 'Using cached connection for address: ' + address.toString(),
22
+ // );
23
+ // return cachedConnection;
24
+ // } else {
25
+ // // cached item is not valid, remove it
26
+ // this.cache.delete(nextHopAddress.toString());
27
+ // }
28
+ // }
29
+ // first time setup connection
30
+ try {
31
+ const p2pConnection = await this.p2pNode.dial(nextHopAddress.libp2pTransports.map((ma) => ma.toMultiaddr()));
32
+ const connection = new oNodeConnection({
33
+ nextHopAddress: nextHopAddress,
34
+ address: address,
35
+ p2pConnection: p2pConnection,
36
+ callerAddress: callerAddress,
37
+ });
38
+ // this.cache.set(address.toString(), connection);
39
+ return connection;
40
+ }
41
+ catch (error) {
42
+ this.logger.error(`[${callerAddress?.toString() || 'unknown'}] Error connecting to address! Next hop:` +
43
+ nextHopAddress +
44
+ ' With Address:' +
45
+ address.toString(), error);
46
+ throw error;
47
+ }
48
+ }
49
+ isCached(address) {
50
+ return this.cache.has(address.toString());
51
+ }
52
+ getCachedConnection(address) {
53
+ const key = address.toString();
54
+ try {
55
+ const connection = this.cache.get(key);
56
+ if (!connection) {
57
+ throw new Error('Connection not found in cache');
58
+ }
59
+ connection.validate();
60
+ return connection;
61
+ }
62
+ catch (error) {
63
+ this.cache.delete(key);
64
+ this.logger.error('Error getting cached connection:', error);
65
+ }
66
+ return null;
67
+ }
68
+ }
@@ -0,0 +1,10 @@
1
+ export * from './o-node.js';
2
+ export * from './utils/network.utils.js';
3
+ export * from './o-node.hierarchy-manager.js';
4
+ export * from './interfaces/o-node.config.js';
5
+ export * from './connection/index.js';
6
+ export * from './o-node.tool.js';
7
+ export * from './nodes/index.js';
8
+ export * from './interfaces/o-node.tool-config.js';
9
+ export * from './router/index.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './o-node.js';
2
+ export * from './utils/network.utils.js';
3
+ export * from './o-node.hierarchy-manager.js';
4
+ export * from './interfaces/o-node.config.js';
5
+ export * from './connection/index.js';
6
+ export * from './o-node.tool.js';
7
+ export * from './nodes/index.js';
8
+ export * from './interfaces/o-node.tool-config.js';
9
+ export * from './router/index.js';
@@ -0,0 +1,7 @@
1
+ import { oCoreConfig } from '@olane/o-core';
2
+ import { oNodeAddress } from '../router/o-node.address.js';
3
+ export interface oNodeConfig extends oCoreConfig {
4
+ leader: oNodeAddress | null;
5
+ parent: oNodeAddress | null;
6
+ }
7
+ //# sourceMappingURL=o-node.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node.config.d.ts","sourceRoot":"","sources":["../../../src/interfaces/o-node.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { oNodeConfig } from './o-node.config';
2
+ export interface oNodeToolConfig extends Omit<oNodeConfig, 'address'> {
3
+ }
4
+ //# sourceMappingURL=o-node.tool-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node.tool-config.d.ts","sourceRoot":"","sources":["../../../src/interfaces/o-node.tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;CAAG"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=network-activity.lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-activity.lib.d.ts","sourceRoot":"","sources":["../../../src/lib/network-activity.lib.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // import { Libp2p, Libp2pEvents, ServiceFactoryMap } from '@olane/o-config';
3
+ // import { Logger } from '../../core/utils/logger.js';
4
+ // export const NETWORK_ACTIVITY_EVENTS: NetworkActivityEvent[] = [
5
+ // 'peer:connect',
6
+ // 'peer:disconnect',
7
+ // 'peer:update',
8
+ // 'peer:discovery',
9
+ // 'peer:reconnect-failure',
10
+ // 'peer:identify',
11
+ // 'transport:listening',
12
+ // 'transport:close',
13
+ // 'connection:prune',
14
+ // 'connection:open',
15
+ // 'connection:close',
16
+ // 'certificate:provision',
17
+ // 'certificate:renew',
18
+ // ];
19
+ // type NetworkActivityEvent = keyof Libp2pEvents<ServiceFactoryMap>;
20
+ // export class NetworkActivity {
21
+ // constructor(
22
+ // private readonly logger: Logger,
23
+ // private readonly p2pNode: Libp2p,
24
+ // ) {
25
+ // this.setup();
26
+ // }
27
+ // setup() {
28
+ // for (const event of NETWORK_ACTIVITY_EVENTS) {
29
+ // this.p2pNode.addEventListener(event, (evt: any) => {
30
+ // this.logger.debug('Network activity: ', event, evt.detail);
31
+ // });
32
+ // }
33
+ // }
34
+ // }
@@ -0,0 +1,7 @@
1
+ import { oNode } from '../o-node.js';
2
+ import { oNodeConfig } from '../interfaces/o-node.config.js';
3
+ export declare class oClientNode extends oNode {
4
+ constructor(config: oNodeConfig);
5
+ configureTransports(): any[];
6
+ }
7
+ //# sourceMappingURL=client.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.node.d.ts","sourceRoot":"","sources":["../../../src/nodes/client.node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,qBAAa,WAAY,SAAQ,KAAK;gBACxB,MAAM,EAAE,WAAW;IAU/B,mBAAmB,IAAI,GAAG,EAAE;CAG7B"}
@@ -0,0 +1,16 @@
1
+ import { defaultLibp2pConfig } from '@olane/o-config';
2
+ import { oNode } from '../o-node.js';
3
+ export class oClientNode extends oNode {
4
+ constructor(config) {
5
+ super({
6
+ ...config,
7
+ network: {
8
+ // clients cannot be dialed
9
+ listeners: [],
10
+ },
11
+ });
12
+ }
13
+ configureTransports() {
14
+ return [...(defaultLibp2pConfig.transports || [])];
15
+ }
16
+ }
@@ -0,0 +1,4 @@
1
+ export * from './client.node.js';
2
+ export * from './server.node.js';
3
+ export * from './websocket.node.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './client.node.js';
2
+ export * from './server.node.js';
3
+ export * from './websocket.node.js';
@@ -0,0 +1,7 @@
1
+ import { oNode } from '../o-node.js';
2
+ import { oNodeConfig } from '../interfaces/o-node.config.js';
3
+ export declare class oServerNode extends oNode {
4
+ constructor(config: oNodeConfig);
5
+ configureTransports(): any[];
6
+ }
7
+ //# sourceMappingURL=server.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.node.d.ts","sourceRoot":"","sources":["../../../src/nodes/server.node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,qBAAa,WAAY,SAAQ,KAAK;gBACxB,MAAM,EAAE,WAAW;IAc/B,mBAAmB,IAAI,GAAG,EAAE;CAG7B"}
@@ -0,0 +1,20 @@
1
+ import { defaultLibp2pConfig } from '@olane/o-config';
2
+ import { oNode } from '../o-node.js';
3
+ export class oServerNode extends oNode {
4
+ constructor(config) {
5
+ super({
6
+ ...config,
7
+ network: {
8
+ listeners: config.network?.listeners || [
9
+ '/ip4/0.0.0.0/tcp/0', // Plain TCP
10
+ '/ip4/0.0.0.0/tcp/0/ws', // WebSockets over TCP
11
+ '/ip6/::/tcp/0', // IPv6 TCP
12
+ '/ip6/::/tcp/0/ws', // IPv6 WebSockets
13
+ ],
14
+ },
15
+ });
16
+ }
17
+ configureTransports() {
18
+ return [...(defaultLibp2pConfig.transports || [])];
19
+ }
20
+ }
@@ -0,0 +1,7 @@
1
+ import { oNode } from '../o-node.js';
2
+ import { oNodeConfig } from '../interfaces/o-node.config.js';
3
+ export declare class oWebsocketNode extends oNode {
4
+ constructor(config: oNodeConfig);
5
+ configureTransports(): any[];
6
+ }
7
+ //# sourceMappingURL=websocket.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.node.d.ts","sourceRoot":"","sources":["../../../src/nodes/websocket.node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,MAAM,EAAE,WAAW;IAY/B,mBAAmB,IAAI,GAAG,EAAE;CAG7B"}
@@ -0,0 +1,18 @@
1
+ import { defaultLibp2pConfig } from '@olane/o-config';
2
+ import { oNode } from '../o-node.js';
3
+ export class oWebsocketNode extends oNode {
4
+ constructor(config) {
5
+ super({
6
+ ...config,
7
+ network: {
8
+ listeners: config.network?.listeners || [
9
+ '/ip4/0.0.0.0/tcp/0/ws', // WebSockets over TCP
10
+ '/ip6/::/tcp/0/ws', // IPv6 WebSockets
11
+ ],
12
+ },
13
+ });
14
+ }
15
+ configureTransports() {
16
+ return [...(defaultLibp2pConfig.transports || [])];
17
+ }
18
+ }
@@ -0,0 +1,42 @@
1
+ import { Libp2p, Libp2pConfig } from '@olane/o-config';
2
+ import { PeerId } from '@olane/o-config';
3
+ import { oNodeHierarchyManager } from './o-node.hierarchy-manager.js';
4
+ import { oNodeConfig } from './interfaces/o-node.config.js';
5
+ import { oNodeTransport } from './router/o-node.transport.js';
6
+ import { oRequest } from '@olane/o-core';
7
+ import { oNodeAddress } from './router/o-node.address.js';
8
+ import { oNodeConnection } from './connection/o-node-connection.js';
9
+ import { oNodeConnectionManager } from './connection/o-node-connection.manager.js';
10
+ import { oToolBase } from '@olane/o-tool';
11
+ export declare class oNode extends oToolBase {
12
+ peerId: PeerId;
13
+ p2pNode: Libp2p;
14
+ address: oNodeAddress;
15
+ config: oNodeConfig;
16
+ connectionManager: oNodeConnectionManager;
17
+ hierarchyManager: oNodeHierarchyManager;
18
+ protected didRegister: boolean;
19
+ constructor(config: oNodeConfig);
20
+ get leader(): oNodeAddress | null;
21
+ get networkConfig(): Libp2pConfig;
22
+ get parentPeerId(): string | null;
23
+ configureTransports(): any[];
24
+ initializeRouter(): Promise<void>;
25
+ get staticAddress(): oNodeAddress;
26
+ get parentTransports(): oNodeTransport[];
27
+ get transports(): oNodeTransport[];
28
+ unregister(): Promise<void>;
29
+ register(): Promise<void>;
30
+ extractMethod(address: oNodeAddress): string;
31
+ start(): Promise<void>;
32
+ validateJoinRequest(request: oRequest): Promise<any>;
33
+ /**
34
+ * Configure the libp2p node
35
+ * @returns The libp2p config
36
+ */
37
+ configure(): Promise<Libp2pConfig>;
38
+ connect(nextHopAddress: oNodeAddress, targetAddress: oNodeAddress): Promise<oNodeConnection>;
39
+ initialize(): Promise<void>;
40
+ teardown(): Promise<void>;
41
+ }
42
+ //# sourceMappingURL=o-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node.d.ts","sourceRoot":"","sources":["../../src/o-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,MAAM,EACN,YAAY,EACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAKL,QAAQ,EAET,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAGnF,OAAO,EAAmB,SAAS,EAAE,MAAM,eAAe,CAAC;AAI3D,qBAAa,KAAM,SAAQ,SAAS;IAC3B,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAG,MAAM,CAAC;IACjB,OAAO,EAAG,YAAY,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,iBAAiB,EAAG,sBAAsB,CAAC;IAC3C,gBAAgB,EAAG,qBAAqB,CAAC;IAChD,SAAS,CAAC,WAAW,EAAE,OAAO,CAAS;gBAE3B,MAAM,EAAE,WAAW;IAK/B,IAAI,MAAM,IAAI,YAAY,GAAG,IAAI,CAEhC;IAED,IAAI,aAAa,IAAI,YAAY,CAEhC;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAOhC;IAED,mBAAmB,IAAI,GAAG,EAAE;IAItB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,IAAI,aAAa,IAAI,YAAY,CAEhC;IAED,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAEvC;IAED,IAAI,UAAU,IAAI,cAAc,EAAE,CAIjC;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC/B,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,mBAAmB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAG1D;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IA2FlC,OAAO,CACX,cAAc,EAAE,YAAY,EAC5B,aAAa,EAAE,YAAY,GAC1B,OAAO,CAAC,eAAe,CAAC;IA0BrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
@@ -0,0 +1,15 @@
1
+ import { oHierarchyManager, oHierarchyManagerConfig } from '@olane/o-core';
2
+ import { oNodeAddress } from './router/o-node.address.js';
3
+ export interface oNodeHierarchyManagerConfig extends oHierarchyManagerConfig {
4
+ leaders: oNodeAddress[];
5
+ children: oNodeAddress[];
6
+ parents: oNodeAddress[];
7
+ }
8
+ export declare class oNodeHierarchyManager extends oHierarchyManager {
9
+ leaders: oNodeAddress[];
10
+ children: oNodeAddress[];
11
+ parents: oNodeAddress[];
12
+ constructor(config: oNodeHierarchyManagerConfig);
13
+ get leader(): oNodeAddress | null;
14
+ }
15
+ //# sourceMappingURL=o-node.hierarchy-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o-node.hierarchy-manager.d.ts","sourceRoot":"","sources":["../../src/o-node.hierarchy-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IAC1E,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,qBAAa,qBAAsB,SAAQ,iBAAiB;IACnD,OAAO,EAAE,YAAY,EAAE,CAAM;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAM;gBAExB,MAAM,EAAE,2BAA2B;IAO/C,IAAI,MAAM,IAAI,YAAY,GAAG,IAAI,CAEhC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { oHierarchyManager } from '@olane/o-core';
2
+ export class oNodeHierarchyManager extends oHierarchyManager {
3
+ constructor(config) {
4
+ super(config);
5
+ this.leaders = [];
6
+ this.children = [];
7
+ this.parents = [];
8
+ this.leaders = config.leaders || [];
9
+ this.children = config.children || [];
10
+ this.parents = config.parents || [];
11
+ }
12
+ get leader() {
13
+ return this.leaders.length > 0 ? this.leaders[0] : null;
14
+ }
15
+ }