Compare commits
5 Commits
v0.1.0-dev
...
v0.1.0-dev
Author | SHA1 | Date |
---|---|---|
semantic-release-bot | 2dcfcdfc4b | |
Derrick Hammer | cf4774f8df | |
Derrick Hammer | 711b1341b8 | |
Derrick Hammer | 19167acec2 | |
Derrick Hammer | b55782db8f |
|
@ -1,3 +1,11 @@
|
||||||
|
# [0.1.0-develop.25](https://git.lumeweb.com/LumeWeb/libkernel/compare/v0.1.0-develop.24...v0.1.0-develop.25) (2023-07-23)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add getNetworkModuleStatus to fetch a network module status, either one time or continuous ([19167ac](https://git.lumeweb.com/LumeWeb/libkernel/commit/19167acec25fd1e9caa6023e539f10b8c0e0fb02))
|
||||||
|
* create abstract NetworkClient with register, status, and ready methods. status calls getNetworkModuleStatus ([711b134](https://git.lumeweb.com/LumeWeb/libkernel/commit/711b1341b80da16cc500ca1e6ba856a145f50037))
|
||||||
|
|
||||||
# [0.1.0-develop.24](https://git.lumeweb.com/LumeWeb/libkernel/compare/v0.1.0-develop.23...v0.1.0-develop.24) (2023-07-21)
|
# [0.1.0-develop.24](https://git.lumeweb.com/LumeWeb/libkernel/compare/v0.1.0-develop.23...v0.1.0-develop.24) (2023-07-21)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
{
|
{
|
||||||
"name": "@lumeweb/libkernel",
|
"name": "@lumeweb/libkernel",
|
||||||
"version": "0.1.0-develop.24",
|
"version": "0.1.0-develop.25",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@lumeweb/libkernel",
|
"name": "@lumeweb/libkernel",
|
||||||
"version": "0.1.0-develop.24",
|
"version": "0.1.0-develop.25",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lumeweb/libweb": "0.2.0-develop.27",
|
"@lumeweb/libweb": "0.2.0-develop.27",
|
||||||
"emittery": "^1.0.1"
|
"emittery": "^1.0.1",
|
||||||
|
"p-defer": "^4.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@lumeweb/node-library-preset": "^0.2.7",
|
"@lumeweb/node-library-preset": "^0.2.7",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lumeweb/libkernel",
|
"name": "@lumeweb/libkernel",
|
||||||
"version": "0.1.0-develop.24",
|
"version": "0.1.0-develop.25",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"types": "lib/index.d.ts",
|
"types": "lib/index.d.ts",
|
||||||
|
@ -35,7 +35,8 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lumeweb/libweb": "0.2.0-develop.27",
|
"@lumeweb/libweb": "0.2.0-develop.27",
|
||||||
"emittery": "^1.0.1"
|
"emittery": "^1.0.1",
|
||||||
|
"p-defer": "^4.0.0"
|
||||||
},
|
},
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
|
|
41
src/api.ts
41
src/api.ts
|
@ -10,6 +10,8 @@ import {
|
||||||
log as logModule,
|
log as logModule,
|
||||||
logErr as logErrModule,
|
logErr as logErrModule,
|
||||||
} from "#module/index.js";
|
} from "#module/index.js";
|
||||||
|
import defer, { DeferredPromise } from "p-defer";
|
||||||
|
import { connectModuleBound } from "#module/client.js";
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const kernelEnv = typeof window !== "undefined" && window?.document;
|
const kernelEnv = typeof window !== "undefined" && window?.document;
|
||||||
|
@ -20,3 +22,42 @@ export const connectModule = kernelEnv
|
||||||
: connectModuleModule;
|
: connectModuleModule;
|
||||||
export const log = kernelEnv ? logKernel : logModule;
|
export const log = kernelEnv ? logKernel : logModule;
|
||||||
export const logErr = kernelEnv ? logErrKernel : logErrModule;
|
export const logErr = kernelEnv ? logErrKernel : logErrModule;
|
||||||
|
|
||||||
|
export async function getNetworkModuleStatus(
|
||||||
|
callback?: any,
|
||||||
|
module?: string,
|
||||||
|
// @ts-ignore
|
||||||
|
CM: connectModuleBound = connectModule.bind(null, module),
|
||||||
|
): Promise<void | (() => Promise<void>)> {
|
||||||
|
let recvUpdate = (data) => {
|
||||||
|
callback?.(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
const [close, resp] = CM("status", null, (data) => {
|
||||||
|
recvUpdate(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(async (resolve) => {
|
||||||
|
const d = defer();
|
||||||
|
recvUpdate = (data) => {
|
||||||
|
resolve(data);
|
||||||
|
d.resolve();
|
||||||
|
};
|
||||||
|
|
||||||
|
await d.promise;
|
||||||
|
close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let closed = false;
|
||||||
|
|
||||||
|
return async () => {
|
||||||
|
if (closed) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
closed = true;
|
||||||
|
close();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@ import Emittery from "emittery";
|
||||||
import { callModule, connectModule, log, logErr } from "../api.js";
|
import { callModule, connectModule, log, logErr } from "../api.js";
|
||||||
import { DataFn, ErrTuple } from "@lumeweb/libweb";
|
import { DataFn, ErrTuple } from "@lumeweb/libweb";
|
||||||
|
|
||||||
type callModuleBound = (method: string, data?: any) => Promise<ErrTuple>;
|
export type callModuleBound = (method: string, data?: any) => Promise<ErrTuple>;
|
||||||
type connectModuleBound = (
|
export type connectModuleBound = (
|
||||||
method: string,
|
method: string,
|
||||||
data: any,
|
data: any,
|
||||||
receiveUpdate: DataFn,
|
receiveUpdate: DataFn,
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { Client } from "../client.js";
|
||||||
|
import { getNetworkModuleStatus } from "#api.js";
|
||||||
|
|
||||||
|
export default abstract class NetworkClient extends Client {
|
||||||
|
public async register() {
|
||||||
|
return this.callModuleReturn("register");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async status(callback?: any): Promise<void | (() => Promise<void>)> {
|
||||||
|
return getNetworkModuleStatus(callback, undefined, this.connectModule);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ready() {
|
||||||
|
return this.callModuleReturn("ready");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue