* Refactor event emitter library to eventemitter2 and remove unnecessary import of protomux. Rewrite on and off methods to accept options object and change event listener parameter name for consistency. Replace call to protomux with emitting a setup event.
This commit is contained in:
parent
20e9a6e0e5
commit
bb657e5af0
|
@ -2,7 +2,7 @@
|
||||||
import { Buffer } from "buffer";
|
import { Buffer } from "buffer";
|
||||||
import { Client } from "@lumeweb/libkernel-universal";
|
import { Client } from "@lumeweb/libkernel-universal";
|
||||||
import { ErrTuple } from "@siaweb/libweb";
|
import { ErrTuple } from "@siaweb/libweb";
|
||||||
import type { EventEmitter } from "eventemitter3";
|
import type { eventNS, event, ListenerFn, OnOptions, Listener } from "eventemitter2";
|
||||||
export declare class SwarmClient extends Client {
|
export declare class SwarmClient extends Client {
|
||||||
private useDefaultSwarm;
|
private useDefaultSwarm;
|
||||||
private id;
|
private id;
|
||||||
|
@ -40,13 +40,12 @@ export declare class Socket extends Client {
|
||||||
private _rawStream?;
|
private _rawStream?;
|
||||||
get rawStream(): Uint8Array;
|
get rawStream(): Uint8Array;
|
||||||
setup(): Promise<void>;
|
setup(): Promise<void>;
|
||||||
on<T extends EventEmitter.EventNames<string | symbol>>(event: T, fn: EventEmitter.EventListener<string | symbol, T>, context?: any): this;
|
on(event: event | eventNS, listener: ListenerFn, options?: boolean | OnOptions): this | Listener;
|
||||||
off<T extends EventEmitter.EventNames<string | symbol>>(event: T, fn?: EventEmitter.EventListener<string | symbol, T>, context?: any, once?: boolean): this;
|
off(event: event | eventNS, listener: ListenerFn): this;
|
||||||
write(message: string | Buffer): void;
|
write(message: string | Buffer): void;
|
||||||
end(): void;
|
end(): void;
|
||||||
private ensureEvent;
|
private ensureEvent;
|
||||||
private trackEvent;
|
private trackEvent;
|
||||||
syncProtomux(action: string, id: number): Promise<any>;
|
|
||||||
}
|
}
|
||||||
export declare const MODULE = "_AVKgzVYC8Sb_qiTA6kw5BDzQ4Ch-8D4sldQJl8dXF9oTw";
|
export declare const MODULE = "_AVKgzVYC8Sb_qiTA6kw5BDzQ4Ch-8D4sldQJl8dXF9oTw";
|
||||||
export declare const createClient: (...args: any) => SwarmClient;
|
export declare const createClient: (...args: any) => SwarmClient;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAW,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAU,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAI5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,qBAAa,WAAY,SAAQ,MAAM;IACrC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAM;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,mBAAmB,CAAC,CAG1B;IAEF,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,QAAQ,CAAkD;IAElE,IAAI,GAAG;;MAON;gBAEW,aAAa,UAAO,EAAE,aAAa,UAAQ;IAcvD,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEY,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB5D,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,OAAO;IA2BR,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtE;AAQD,qBAAa,MAAO,SAAQ,MAAM;IAChC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAqC;IAEzD,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM1C,OAAO,CAAC,gBAAgB,CAAC,CAAa;IAEtC,IAAI,eAAe,IAAI,UAAU,CAEhC;IAED,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,IAAI,SAAS,IAAI,UAAU,CAE1B;IAEK,KAAK;IAQX,EAAE,CAAC,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EACnD,KAAK,EAAE,CAAC,EACR,EAAE,EAAE,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI;IAiBP,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,EACpD,KAAK,EAAE,CAAC,EACR,EAAE,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EACnD,OAAO,CAAC,EAAE,GAAG,EACb,IAAI,CAAC,EAAE,OAAO,GACb,IAAI;IASP,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAUX,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;IAKL,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAOrD;AAED,eAAO,MAAM,MAAM,mDAAmD,CAAC;AAEvE,eAAO,MAAM,YAAY,+BAA4C,CAAC"}
|
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAW,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAU,QAAQ,EAAY,MAAM,gBAAgB,CAAC;AAU5D,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,EACT,MAAM,eAAe,CAAC;AAEvB,qBAAa,WAAY,SAAQ,MAAM;IACrC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAM;IAE7B,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,mBAAmB,CAAC,CAG1B;IAEF,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,QAAQ,CAAkD;IAElE,IAAI,GAAG;;MAON;gBAEW,aAAa,UAAO,EAAE,aAAa,UAAQ;IAcvD,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAEY,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB5D,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAMd,OAAO;IA2BR,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtE;AAQD,qBAAa,MAAO,SAAQ,MAAM;IAChC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAqC;IAEzD,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAM1C,OAAO,CAAC,gBAAgB,CAAC,CAAa;IAEtC,IAAI,eAAe,IAAI,UAAU,CAEhC;IAED,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,IAAI,SAAS,IAAI,UAAU,CAE1B;IAEK,KAAK;IAQX,EAAE,CACA,KAAK,EAAE,KAAK,GAAG,OAAO,EACtB,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAC5B,IAAI,GAAG,QAAQ;IAiBlB,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IASvD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC,GAAG,IAAI,IAAI;IAUX,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,UAAU;CAInB;AAED,eAAO,MAAM,MAAM,mDAAmD,CAAC;AAEvE,eAAO,MAAM,YAAY,+BAA4C,CAAC"}
|
|
@ -5,8 +5,6 @@ import b4a from "b4a";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import Backoff from "backoff.js";
|
import Backoff from "backoff.js";
|
||||||
import { Mutex } from "async-mutex";
|
import { Mutex } from "async-mutex";
|
||||||
// @ts-ignore
|
|
||||||
import Protomux from "protomux";
|
|
||||||
export class SwarmClient extends Client {
|
export class SwarmClient extends Client {
|
||||||
useDefaultSwarm;
|
useDefaultSwarm;
|
||||||
id = 0;
|
id = 0;
|
||||||
|
@ -131,25 +129,25 @@ export class Socket extends Client {
|
||||||
let info = await this.callModuleReturn("socketGetInfo", { id: this.id });
|
let info = await this.callModuleReturn("socketGetInfo", { id: this.id });
|
||||||
this._remotePublicKey = info.remotePublicKey;
|
this._remotePublicKey = info.remotePublicKey;
|
||||||
this._rawStream = info.rawStream;
|
this._rawStream = info.rawStream;
|
||||||
Protomux.from(this, { slave: true });
|
await this.swarm.emitAsync("setup", this);
|
||||||
}
|
}
|
||||||
on(event, fn, context) {
|
on(event, listener, options) {
|
||||||
const [update, promise] = this.connectModule("socketListenEvent", { id: this.id, event: event }, (data) => {
|
const [update, promise] = this.connectModule("socketListenEvent", { id: this.id, event: event }, (data) => {
|
||||||
this.emit(event, data);
|
this.emit(event, data);
|
||||||
});
|
});
|
||||||
this.trackEvent(event, update);
|
this.trackEvent(event, update);
|
||||||
promise.then(() => {
|
promise.then(() => {
|
||||||
this.off(event, fn);
|
this.off(event, listener);
|
||||||
});
|
});
|
||||||
return super.on(event, fn, context);
|
return super.on(event, listener, options);
|
||||||
}
|
}
|
||||||
off(event, fn, context, once) {
|
off(event, listener) {
|
||||||
const updates = [...this.eventUpdates[event]];
|
const updates = [...this.eventUpdates[event]];
|
||||||
this.eventUpdates[event] = [];
|
this.eventUpdates[event] = [];
|
||||||
for (const func of updates) {
|
for (const func of updates) {
|
||||||
func();
|
func();
|
||||||
}
|
}
|
||||||
return super.off(event, fn, context, once);
|
return super.off(event, listener);
|
||||||
}
|
}
|
||||||
write(message) {
|
write(message) {
|
||||||
this.callModule("socketWrite", { id: this.id, message });
|
this.callModule("socketWrite", { id: this.id, message });
|
||||||
|
@ -170,13 +168,6 @@ export class Socket extends Client {
|
||||||
this.ensureEvent(event);
|
this.ensureEvent(event);
|
||||||
this.eventUpdates[event].push(update);
|
this.eventUpdates[event].push(update);
|
||||||
}
|
}
|
||||||
async syncProtomux(action, id) {
|
|
||||||
return this.callModuleReturn("syncProtomux", {
|
|
||||||
id: this.id,
|
|
||||||
action,
|
|
||||||
data: id,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
export const MODULE = "_AVKgzVYC8Sb_qiTA6kw5BDzQ4Ch-8D4sldQJl8dXF9oTw";
|
export const MODULE = "_AVKgzVYC8Sb_qiTA6kw5BDzQ4Ch-8D4sldQJl8dXF9oTw";
|
||||||
export const createClient = factory(SwarmClient, MODULE);
|
export const createClient = factory(SwarmClient, MODULE);
|
||||||
|
|
Loading…
Reference in New Issue