Compare commits

...

2 Commits

Author SHA1 Message Date
Derrick Hammer 411582ef05
*Update dist 2023-02-17 08:04:33 -05:00
Derrick Hammer 439bd9f022
*Add ready property 2023-02-17 08:04:16 -05:00
4 changed files with 195 additions and 167 deletions

20
dist/index.d.ts vendored
View File

@ -3,18 +3,18 @@ import Hyperswarm from "hyperswarm";
import EventEmitter from "eventemitter2";
export default class HyperswarmWeb extends EventEmitter {
private _options;
private _relays;
private _activeRelay;
private _discovery;
private _queuedEmActions;
private _connectionMutex;
constructor(opts?: any);
get activeRelay(): Hyperswarm;
init(): Promise<void>;
private ensureConnection;
private isServerAvailable;
connect(pubkey: string, options?: {}): Promise<DhtNode>;
private _relays;
get relays(): string[];
private _activeRelay;
get activeRelay(): Hyperswarm;
private _ready;
get ready(): boolean;
init(): Promise<void>;
connect(pubkey: string, options?: {}): Promise<DhtNode>;
addRelay(pubkey: string): Promise<void>;
removeRelay(pubkey: string): boolean;
clearRelays(): void;
@ -24,8 +24,6 @@ export default class HyperswarmWeb extends EventEmitter {
removeListener(eventName: string | symbol, listener: (...args: any[]) => void): this;
emit(eventName: string | symbol, ...args: any[]): boolean;
once(eventName: string | symbol, listener: (...args: any[]) => void): this;
private _processOrQueueAction;
private _processQueuedActions;
join(topic: Uint8Array, opts?: {}): void;
joinPeer(publicKey: Uint8Array): void;
leave(topic: Uint8Array): void;
@ -34,5 +32,9 @@ export default class HyperswarmWeb extends EventEmitter {
topics(): string[];
flush(): Promise<any>;
clear(): Promise<any>;
private ensureConnection;
private isServerAvailable;
private _processOrQueueAction;
private _processQueuedActions;
}
//# sourceMappingURL=index.d.ts.map

2
dist/index.d.ts.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAW5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,YAAY,MAAM,eAAe,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,OAAO,CAAC,gBAAgB,CAAsB;gBAClC,IAAI,GAAE,GAAQ;IAO1B,IAAI,WAAW,IAAI,UAAU,CAE5B;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAIP,gBAAgB;YAmEhB,iBAAiB;IAYzB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7D,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAEY,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUpC,WAAW,IAAI,IAAI;IAI1B,EAAE,CACA,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,UAAU;IAGb,WAAW,CACT,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,IAAI;IAIP,GAAG,CACD,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,UAAU;IAIb,cAAc,CACZ,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,IAAI;IAGP,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAIzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI1E,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,qBAAqB;IAQtB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,KAAK,GAAG,IAAI;IAGxC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAGrC,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAG9B,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAGtC,MAAM,CAAC,SAAS,EAAE,UAAU;IAG5B,MAAM,IAAI,MAAM,EAAE;IAGZ,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAGrB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;CAGnC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAW5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,YAAY,MAAM,eAAe,CAAC;AAGzC,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,IAAI,GAAE,GAAQ;IAO1B,OAAO,CAAC,OAAO,CAA0B;IAEzC,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,OAAO,CAAC,YAAY,CAAa;IAEjC,IAAI,WAAW,IAAI,UAAU,CAE5B;IAED,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIf,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUpC,WAAW,IAAI,IAAI;IAI1B,EAAE,CACA,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,UAAU;IAIb,WAAW,CACT,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,IAAI;IAIP,GAAG,CACD,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,UAAU;IAIb,cAAc,CACZ,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,IAAI;IAIP,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO;IAIzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAInE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,KAAK,GAAG,IAAI;IAIxC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAIrC,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI9B,SAAS,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAItC,MAAM,CAAC,SAAS,EAAE,UAAU;IAI5B,MAAM,IAAI,MAAM,EAAE;IAIZ,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;YAIpB,gBAAgB;YAqEhB,iBAAiB;IAa/B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,qBAAqB;CAO9B"}

138
dist/index.js vendored
View File

@ -11,8 +11,6 @@ import EventEmitter from "eventemitter2";
import { Mutex } from "async-mutex";
export default class HyperswarmWeb extends EventEmitter {
_options;
_relays = new Set();
_activeRelay;
_discovery;
_queuedEmActions = [];
_connectionMutex = new Mutex();
@ -22,12 +20,82 @@ export default class HyperswarmWeb extends EventEmitter {
this._options = opts;
this._discovery = createClient();
}
_relays = new Set();
get relays() {
return [...this._relays.values()];
}
_activeRelay;
get activeRelay() {
return this._activeRelay;
}
_ready = false;
get ready() {
return this._ready;
}
init() {
return this.ensureConnection();
}
async connect(pubkey, options = {}) {
if (!this._activeRelay) {
await this.ensureConnection();
}
return this._activeRelay.connect(pubkey, options);
}
async addRelay(pubkey) {
this._relays.add(pubkey);
}
removeRelay(pubkey) {
if (!this._relays.has(pubkey)) {
return false;
}
this._relays.delete(pubkey);
return true;
}
clearRelays() {
this._relays.clear();
}
on(eventName, listener) {
return this._processOrQueueAction("on", ...arguments);
}
addListener(eventName, listener) {
return this.on(eventName, listener);
}
off(eventName, listener) {
return this._processOrQueueAction("off", ...arguments);
}
removeListener(eventName, listener) {
return this.off(eventName, listener);
}
emit(eventName, ...args) {
return this._processOrQueueAction("emit", ...arguments);
}
once(eventName, listener) {
return this._processOrQueueAction("once", ...arguments);
}
join(topic, opts = {}) {
return this._processOrQueueAction("join", ...arguments);
}
joinPeer(publicKey) {
return this._processOrQueueAction("joinPeer", ...arguments);
}
leave(topic) {
return this._processOrQueueAction("leave", ...arguments);
}
leavePeer(publicKey) {
return this._processOrQueueAction("leavePeer", ...arguments);
}
status(publicKey) {
return this._activeRelay?.status(publicKey);
}
topics() {
return this._activeRelay?.topics();
}
async flush() {
return this._activeRelay?.flush();
}
async clear() {
return this._activeRelay?.clear();
}
async ensureConnection() {
const logErr = (await load()).logErr;
await this._connectionMutex.waitForUnlock();
@ -65,6 +133,7 @@ export default class HyperswarmWeb extends EventEmitter {
});
this._activeRelay.on("close", () => {
this._activeRelay = undefined;
this._ready = false;
});
} while (relays.length > 0 && !this._activeRelay);
}
@ -75,6 +144,7 @@ export default class HyperswarmWeb extends EventEmitter {
this._processQueuedActions();
await this._activeRelay.dht.ready();
this._connectionMutex.release();
this._ready = true;
this.emit("ready");
}
async isServerAvailable(connection) {
@ -89,46 +159,6 @@ export default class HyperswarmWeb extends EventEmitter {
});
});
}
async connect(pubkey, options = {}) {
if (!this._activeRelay) {
await this.ensureConnection();
}
return this._activeRelay.connect(pubkey, options);
}
get relays() {
return [...this._relays.values()];
}
async addRelay(pubkey) {
this._relays.add(pubkey);
}
removeRelay(pubkey) {
if (!this._relays.has(pubkey)) {
return false;
}
this._relays.delete(pubkey);
return true;
}
clearRelays() {
this._relays.clear();
}
on(eventName, listener) {
return this._processOrQueueAction("on", ...arguments);
}
addListener(eventName, listener) {
return this.on(eventName, listener);
}
off(eventName, listener) {
return this._processOrQueueAction("off", ...arguments);
}
removeListener(eventName, listener) {
return this.off(eventName, listener);
}
emit(eventName, ...args) {
return this._processOrQueueAction("emit", ...arguments);
}
once(eventName, listener) {
return this._processOrQueueAction("once", ...arguments);
}
_processOrQueueAction(method, ...args) {
if (this._activeRelay) {
return this._activeRelay[method](...args);
@ -142,28 +172,4 @@ export default class HyperswarmWeb extends EventEmitter {
}
this._queuedEmActions = [];
}
join(topic, opts = {}) {
return this._processOrQueueAction("join", ...arguments);
}
joinPeer(publicKey) {
return this._processOrQueueAction("joinPeer", ...arguments);
}
leave(topic) {
return this._processOrQueueAction("leave", ...arguments);
}
leavePeer(publicKey) {
return this._processOrQueueAction("leavePeer", ...arguments);
}
status(publicKey) {
return this._activeRelay?.status(publicKey);
}
topics() {
return this._activeRelay?.topics();
}
async flush() {
return this._activeRelay?.flush();
}
async clear() {
return this._activeRelay?.clear();
}
}

View File

@ -17,12 +17,10 @@ import { Mutex } from "async-mutex";
export default class HyperswarmWeb extends EventEmitter {
private _options: any;
private _relays: Set<string> = new Set();
private _activeRelay: Hyperswarm;
private _discovery: PeerDiscoveryClient;
private _queuedEmActions: [string, any][] = [];
private _connectionMutex: Mutex = new Mutex();
constructor(opts: any = {}) {
super();
opts.custodial = false;
@ -30,14 +28,122 @@ export default class HyperswarmWeb extends EventEmitter {
this._discovery = createClient();
}
private _relays: Set<string> = new Set();
get relays(): string[] {
return [...this._relays.values()];
}
private _activeRelay: Hyperswarm;
get activeRelay(): Hyperswarm {
return this._activeRelay;
}
private _ready = false;
get ready(): boolean {
return this._ready;
}
init(): Promise<void> {
return this.ensureConnection();
}
async connect(pubkey: string, options = {}): Promise<DhtNode> {
if (!this._activeRelay) {
await this.ensureConnection();
}
return this._activeRelay.connect(pubkey, options);
}
public async addRelay(pubkey: string): Promise<void> {
this._relays.add(pubkey);
}
public removeRelay(pubkey: string): boolean {
if (!this._relays.has(pubkey)) {
return false;
}
this._relays.delete(pubkey);
return true;
}
public clearRelays(): void {
this._relays.clear();
}
on(
eventName: string | symbol,
listener: (...args: any[]) => void
): Hyperswarm {
return this._processOrQueueAction("on", ...arguments);
}
addListener(
eventName: string | symbol,
listener: (...args: any[]) => void
): this {
return this.on(eventName, listener);
}
off(
eventName: string | symbol,
listener: (...args: any[]) => void
): Hyperswarm {
return this._processOrQueueAction("off", ...arguments);
}
removeListener(
eventName: string | symbol,
listener: (...args: any[]) => void
): this {
return this.off(eventName, listener);
}
emit(eventName: string | symbol, ...args: any[]): boolean {
return this._processOrQueueAction("emit", ...arguments);
}
once(eventName: string | symbol, listener: (...args: any[]) => void): this {
return this._processOrQueueAction("once", ...arguments);
}
public join(topic: Uint8Array, opts = {}): void {
return this._processOrQueueAction("join", ...arguments);
}
public joinPeer(publicKey: Uint8Array): void {
return this._processOrQueueAction("joinPeer", ...arguments);
}
public leave(topic: Uint8Array): void {
return this._processOrQueueAction("leave", ...arguments);
}
public leavePeer(publicKey: Uint8Array): void {
return this._processOrQueueAction("leavePeer", ...arguments);
}
public status(publicKey: Uint8Array) {
return this._activeRelay?.status(publicKey);
}
public topics(): string[] {
return this._activeRelay?.topics();
}
public async flush(): Promise<any> {
return this._activeRelay?.flush();
}
public async clear(): Promise<any> {
return this._activeRelay?.clear();
}
private async ensureConnection(): Promise<any> {
const logErr = (await load()).logErr;
@ -89,6 +195,7 @@ export default class HyperswarmWeb extends EventEmitter {
this._activeRelay.on("close", () => {
this._activeRelay = undefined;
this._ready = false;
});
} while (relays.length > 0 && !this._activeRelay);
}
@ -102,6 +209,7 @@ export default class HyperswarmWeb extends EventEmitter {
await this._activeRelay.dht.ready();
this._connectionMutex.release();
this._ready = true;
this.emit("ready");
}
@ -117,69 +225,6 @@ export default class HyperswarmWeb extends EventEmitter {
});
});
}
async connect(pubkey: string, options = {}): Promise<DhtNode> {
if (!this._activeRelay) {
await this.ensureConnection();
}
return this._activeRelay.connect(pubkey, options);
}
get relays(): string[] {
return [...this._relays.values()];
}
public async addRelay(pubkey: string): Promise<void> {
this._relays.add(pubkey);
}
public removeRelay(pubkey: string): boolean {
if (!this._relays.has(pubkey)) {
return false;
}
this._relays.delete(pubkey);
return true;
}
public clearRelays(): void {
this._relays.clear();
}
on(
eventName: string | symbol,
listener: (...args: any[]) => void
): Hyperswarm {
return this._processOrQueueAction("on", ...arguments);
}
addListener(
eventName: string | symbol,
listener: (...args: any[]) => void
): this {
return this.on(eventName, listener);
}
off(
eventName: string | symbol,
listener: (...args: any[]) => void
): Hyperswarm {
return this._processOrQueueAction("off", ...arguments);
}
removeListener(
eventName: string | symbol,
listener: (...args: any[]) => void
): this {
return this.off(eventName, listener);
}
emit(eventName: string | symbol, ...args: any[]): boolean {
return this._processOrQueueAction("emit", ...arguments);
}
once(eventName: string | symbol, listener: (...args: any[]) => void): this {
return this._processOrQueueAction("once", ...arguments);
}
private _processOrQueueAction(method: string, ...args: any[]) {
if (this._activeRelay) {
@ -197,29 +242,4 @@ export default class HyperswarmWeb extends EventEmitter {
this._queuedEmActions = [];
}
public join(topic: Uint8Array, opts = {}): void {
return this._processOrQueueAction("join", ...arguments);
}
public joinPeer(publicKey: Uint8Array): void {
return this._processOrQueueAction("joinPeer", ...arguments);
}
public leave(topic: Uint8Array): void {
return this._processOrQueueAction("leave", ...arguments);
}
public leavePeer(publicKey: Uint8Array): void {
return this._processOrQueueAction("leavePeer", ...arguments);
}
public status(publicKey: Uint8Array) {
return this._activeRelay?.status(publicKey);
}
public topics(): string[] {
return this._activeRelay?.topics();
}
public async flush(): Promise<any> {
return this._activeRelay?.flush();
}
public async clear(): Promise<any> {
return this._activeRelay?.clear();
}
}