refactor: switch to @lumeweb/libs5-transport-hyper
This commit is contained in:
parent
9fcfc686cf
commit
e7935729f3
|
@ -9,7 +9,8 @@
|
||||||
"version": "0.1.0-develop.2",
|
"version": "0.1.0-develop.2",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lumeweb/interface-relay": "^0.0.2-develop.3",
|
"@lumeweb/interface-relay": "^0.0.2-develop.3",
|
||||||
"@lumeweb/libs5": "^0.1.0-develop.9",
|
"@lumeweb/libs5": "^0.1.0-develop.14",
|
||||||
|
"@lumeweb/libs5-transport-hyper": "^0.1.0-develop.5",
|
||||||
"@types/streamx": "^2.9.1",
|
"@types/streamx": "^2.9.1",
|
||||||
"streamx": "^2.15.1"
|
"streamx": "^2.15.1"
|
||||||
},
|
},
|
||||||
|
@ -1817,9 +1818,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@lumeweb/libs5": {
|
"node_modules/@lumeweb/libs5": {
|
||||||
"version": "0.1.0-develop.9",
|
"version": "0.1.0-develop.14",
|
||||||
"resolved": "https://registry.npmjs.org/@lumeweb/libs5/-/libs5-0.1.0-develop.9.tgz",
|
"resolved": "https://registry.npmjs.org/@lumeweb/libs5/-/libs5-0.1.0-develop.14.tgz",
|
||||||
"integrity": "sha512-t4Lo9g6xmzCTCaxtva6R4klk3z4TEh+TDVUCkt7MrP0WLqRamEqckQkPn99xDgio1epgOQGnXz/rHrfGmqSsiQ==",
|
"integrity": "sha512-nLRaDl3c355iDIUU40ES9P5FZvgPtpRJNnAymaJeOxQVjI9TlO+4aGiACB8Wv0uywjSfy6CHvYMS32UZNLhIHA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@noble/curves": "^1.1.0",
|
"@noble/curves": "^1.1.0",
|
||||||
"@noble/hashes": "^1.3.1",
|
"@noble/hashes": "^1.3.1",
|
||||||
|
@ -1830,6 +1831,15 @@
|
||||||
"ws": "^8.13.0"
|
"ws": "^8.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@lumeweb/libs5-transport-hyper": {
|
||||||
|
"version": "0.1.0-develop.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@lumeweb/libs5-transport-hyper/-/libs5-transport-hyper-0.1.0-develop.5.tgz",
|
||||||
|
"integrity": "sha512-xLc7MhL9dIR7WkaLntkpU56XLNeko3FElB29Rm9q/IEG7xBiwD807ikjxPrBb8R/a/H7c7w1aUAlZVu4U26xxQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@lumeweb/libs5": "^0.1.0-develop.13",
|
||||||
|
"streamx": "^2.15.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@lumeweb/node-library-preset": {
|
"node_modules/@lumeweb/node-library-preset": {
|
||||||
"version": "0.2.7",
|
"version": "0.2.7",
|
||||||
"resolved": "https://registry.npmjs.org/@lumeweb/node-library-preset/-/node-library-preset-0.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/@lumeweb/node-library-preset/-/node-library-preset-0.2.7.tgz",
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lumeweb/interface-relay": "^0.0.2-develop.3",
|
"@lumeweb/interface-relay": "^0.0.2-develop.3",
|
||||||
"@lumeweb/libs5": "^0.1.0-develop.9",
|
"@lumeweb/libs5": "^0.1.0-develop.14",
|
||||||
|
"@lumeweb/libs5-transport-hyper": "^0.1.0-develop.5",
|
||||||
"@types/streamx": "^2.9.1",
|
"@types/streamx": "^2.9.1",
|
||||||
"streamx": "^2.15.1"
|
"streamx": "^2.15.1"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
import { Logger, Peer, PeerStatic } from "@lumeweb/libs5";
|
|
||||||
import { URL } from "url";
|
|
||||||
import NodeId from "@lumeweb/libs5/lib/nodeId.js";
|
|
||||||
import { Buffer } from "buffer";
|
|
||||||
import { PROTOCOL } from "./constants.js";
|
|
||||||
import { Readable } from "streamx";
|
|
||||||
|
|
||||||
export default class HyperTransportPeer implements Peer {
|
|
||||||
challenge: Uint8Array;
|
|
||||||
connectionUris: Array<URL>;
|
|
||||||
isConnected: boolean = false;
|
|
||||||
private _peer: any;
|
|
||||||
private _muxer: any;
|
|
||||||
private _socket = new Readable();
|
|
||||||
private _pipe?: any;
|
|
||||||
|
|
||||||
constructor(peer: any, connectionUris: URL[], muxer: any) {
|
|
||||||
this.connectionUris = connectionUris.map((uri) => new URL(uri.toString()));
|
|
||||||
this.challenge = new Uint8Array();
|
|
||||||
this._peer = peer;
|
|
||||||
this._muxer = muxer;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _id?: NodeId;
|
|
||||||
|
|
||||||
get id(): NodeId {
|
|
||||||
return this._id as NodeId;
|
|
||||||
}
|
|
||||||
|
|
||||||
set id(value: NodeId) {
|
|
||||||
this._id = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async init() {
|
|
||||||
const channel = await this._muxer.createChannel({
|
|
||||||
protocol: PROTOCOL,
|
|
||||||
});
|
|
||||||
|
|
||||||
const self = this;
|
|
||||||
|
|
||||||
this._pipe = await channel.addMessage({
|
|
||||||
async onmessage(m) {
|
|
||||||
if (m instanceof Uint8Array) {
|
|
||||||
m = Buffer.from(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
self._socket.push(m);
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
await channel.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async connect(uri: URL): Promise<any> {
|
|
||||||
return Promise.reject("not supported");
|
|
||||||
}
|
|
||||||
|
|
||||||
listenForMessages(
|
|
||||||
callback: (event: any) => Promise<void>,
|
|
||||||
{
|
|
||||||
onDone,
|
|
||||||
onError,
|
|
||||||
logger,
|
|
||||||
}: {
|
|
||||||
onDone?: any;
|
|
||||||
onError?: (...args: any[]) => void;
|
|
||||||
logger: Logger;
|
|
||||||
},
|
|
||||||
): void {
|
|
||||||
this._socket.on("data", async (data: Buffer) => {
|
|
||||||
await callback(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (onDone) {
|
|
||||||
this._socket.on("end", onDone);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (onError) {
|
|
||||||
this._socket.on("error", onError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
renderLocationUri(): string {
|
|
||||||
return "Hypercore client";
|
|
||||||
}
|
|
||||||
|
|
||||||
sendMessage(message: Uint8Array): void {
|
|
||||||
this._pipe.write(message);
|
|
||||||
}
|
|
||||||
}
|
|
17
src/index.ts
17
src/index.ts
|
@ -1,9 +1,14 @@
|
||||||
import type { PluginAPI } from "@lumeweb/interface-relay";
|
import type { PluginAPI } from "@lumeweb/interface-relay";
|
||||||
import { createKeyPair, createNode, S5NodeConfig } from "@lumeweb/libs5";
|
import {
|
||||||
|
S5NodeConfig,
|
||||||
|
createKeyPair,
|
||||||
|
createNode,
|
||||||
|
NodeId,
|
||||||
|
} from "@lumeweb/libs5";
|
||||||
|
import HyperTransportPeer from "@lumeweb/libs5-transport-hyper";
|
||||||
import { Level } from "level";
|
import { Level } from "level";
|
||||||
|
|
||||||
import { PROTOCOL } from "./constants.js";
|
import { PROTOCOL } from "./constants.js";
|
||||||
import HyperTransportPeer from "./hyperTransport.js";
|
|
||||||
import { NodeId } from "@lumeweb/libs5";
|
|
||||||
import * as fs from "fs/promises";
|
import * as fs from "fs/promises";
|
||||||
|
|
||||||
const plugin = {
|
const plugin = {
|
||||||
|
@ -35,7 +40,11 @@ const plugin = {
|
||||||
|
|
||||||
api.swarm.join(api.util.crypto.createHash(PROTOCOL));
|
api.swarm.join(api.util.crypto.createHash(PROTOCOL));
|
||||||
api.protocols.register(PROTOCOL, async (peer: any, muxer: any) => {
|
api.protocols.register(PROTOCOL, async (peer: any, muxer: any) => {
|
||||||
const s5peer = new HyperTransportPeer(peer, [], muxer);
|
const s5peer = new HyperTransportPeer({
|
||||||
|
muxer,
|
||||||
|
peer,
|
||||||
|
protocol: PROTOCOL,
|
||||||
|
});
|
||||||
|
|
||||||
s5peer.id = new NodeId(peer.remotePublicKey);
|
s5peer.id = new NodeId(peer.remotePublicKey);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue