*Add dist
This commit is contained in:
parent
fb8abc6ad6
commit
ae9c6eeb60
|
@ -0,0 +1,36 @@
|
||||||
|
type callModule = typeof import("libkmodule").callModule;
|
||||||
|
type connectModule = typeof import("libkmodule").connectModule;
|
||||||
|
type logErr = typeof import("libkmodule").logErr;
|
||||||
|
type log = typeof import("libkmodule").log;
|
||||||
|
import type { ErrTuple, DataFn } from "@siaweb/libweb";
|
||||||
|
type callModuleBound = (method: string, data?: any) => Promise<ErrTuple>;
|
||||||
|
type connectModuleBound = (method: string, data: any, receiveUpdate: DataFn) => [sendUpdate: DataFn, response: Promise<ErrTuple>];
|
||||||
|
declare let callModule: callModule;
|
||||||
|
declare let connectModule: connectModule;
|
||||||
|
declare let log: log;
|
||||||
|
declare let logErr: logErr;
|
||||||
|
export interface ModuleBag {
|
||||||
|
callModule: callModule;
|
||||||
|
connectModule: connectModule;
|
||||||
|
log: log;
|
||||||
|
logErr: logErr;
|
||||||
|
}
|
||||||
|
export interface ModuleBagBound extends ModuleBag {
|
||||||
|
callModule: callModuleBound;
|
||||||
|
connectModule: connectModuleBound;
|
||||||
|
}
|
||||||
|
export declare abstract class Client {
|
||||||
|
private _callModule?;
|
||||||
|
get callModule(): callModuleBound;
|
||||||
|
private _connectModule?;
|
||||||
|
get connectModule(): connectModuleBound;
|
||||||
|
loadLibs(module: string): Promise<void>;
|
||||||
|
loadBound(module: string): Promise<ModuleBagBound>;
|
||||||
|
protected handleError(ret: ErrTuple): void;
|
||||||
|
protected callModuleReturn(method: string, data?: any): Promise<any>;
|
||||||
|
}
|
||||||
|
export declare function load(module?: string): Promise<ModuleBag | ModuleBagBound>;
|
||||||
|
type ClientConstructor<U> = new (...args: any[]) => U;
|
||||||
|
export declare const factory: <T extends Client = Client>(type: ClientConstructor<T>, module: string) => (...args: any) => T;
|
||||||
|
export {};
|
||||||
|
//# sourceMappingURL=index.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,cAAc,YAAY,EAAE,UAAU,CAAC;AACzD,KAAK,aAAa,GAAG,cAAc,YAAY,EAAE,aAAa,CAAC;AAC/D,KAAK,MAAM,GAAG,cAAc,YAAY,EAAE,MAAM,CAAC;AACjD,KAAK,GAAG,GAAG,cAAc,YAAY,EAAE,GAAG,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEvD,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzE,KAAK,kBAAkB,GAAG,CACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EACT,aAAa,EAAE,MAAM,KAClB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvD,QAAA,IAAI,UAAU,EAAE,UAAU,CAAC;AAC3B,QAAA,IAAI,aAAa,EAAE,aAAa,CAAC;AACjC,QAAA,IAAI,GAAG,EAAE,GAAG,CAAC;AACb,QAAA,IAAI,MAAM,EAAE,MAAM,CAAC;AAEnB,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,EAAE,kBAAkB,CAAC;CACnC;AAED,8BAAsB,MAAM;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAkB;IAEtC,IAAI,UAAU,IAAI,eAAe,CAEhC;IAED,OAAO,CAAC,cAAc,CAAC,CAAqB;IAE5C,IAAI,aAAa,IAAI,kBAAkB,CAEtC;IAEY,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/D,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;cAK1B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3E;AAED,wBAAsB,IAAI,CACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,CA8BrC;AAED,KAAK,iBAAiB,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEtD,eAAO,MAAM,OAAO,kEAEV,MAAM,eAEY,GAAG,MAW9B,CAAC"}
|
|
@ -0,0 +1,77 @@
|
||||||
|
let callModule;
|
||||||
|
let connectModule;
|
||||||
|
let log;
|
||||||
|
let logErr;
|
||||||
|
export class Client {
|
||||||
|
_callModule;
|
||||||
|
get callModule() {
|
||||||
|
return this._callModule;
|
||||||
|
}
|
||||||
|
_connectModule;
|
||||||
|
get connectModule() {
|
||||||
|
return this._connectModule;
|
||||||
|
}
|
||||||
|
async loadLibs(module) {
|
||||||
|
if (this._callModule && this._connectModule) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const moduleBag = await this.loadBound(module);
|
||||||
|
this._callModule = async (...args) => {
|
||||||
|
const ret = await moduleBag.callModule(...args);
|
||||||
|
this.handleError(ret);
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
this._connectModule = moduleBag.connectModule;
|
||||||
|
}
|
||||||
|
async loadBound(module) {
|
||||||
|
return (await load(module));
|
||||||
|
}
|
||||||
|
handleError(ret) {
|
||||||
|
if (ret[1]) {
|
||||||
|
throw new Error(ret[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async callModuleReturn(method, data) {
|
||||||
|
const ret = await this.callModule(method, data);
|
||||||
|
return ret[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export async function load(module) {
|
||||||
|
if (callModule !== null && connectModule !== null) {
|
||||||
|
if (module) {
|
||||||
|
return {
|
||||||
|
callModule: callModule.bind(undefined, module),
|
||||||
|
connectModule: connectModule.bind(undefined, module),
|
||||||
|
log,
|
||||||
|
logErr,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
callModule,
|
||||||
|
connectModule,
|
||||||
|
log,
|
||||||
|
logErr,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const pkgName = typeof window !== "undefined" && window?.document
|
||||||
|
? "libkernel"
|
||||||
|
: "libkmodule";
|
||||||
|
const pkg = await import(pkgName);
|
||||||
|
callModule = pkg.callModule;
|
||||||
|
connectModule = pkg.connectModule;
|
||||||
|
log = pkg.log;
|
||||||
|
logErr = pkg.logErr;
|
||||||
|
return load(module);
|
||||||
|
}
|
||||||
|
export const factory = function (type, module) {
|
||||||
|
return function (...args) {
|
||||||
|
return new Proxy(new type(...args), {
|
||||||
|
get(target, property) {
|
||||||
|
return async () => {
|
||||||
|
await target.loadLibs(module);
|
||||||
|
return target[property];
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
Reference in New Issue