Compare commits

...

5 Commits

Author SHA1 Message Date
semantic-release-bot 2dcfcdfc4b chore(release): 0.1.0-develop.25 [skip ci]
# [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](19167acec2))
* create abstract NetworkClient with register, status, and ready methods. status calls getNetworkModuleStatus ([711b134](711b1341b8))
2023-07-23 17:29:09 +00:00
Derrick Hammer cf4774f8df
Merge remote-tracking branch 'origin/develop' into develop 2023-07-23 13:28:02 -04:00
Derrick Hammer 711b1341b8
feat: create abstract NetworkClient with register, status, and ready methods. status calls getNetworkModuleStatus 2023-07-23 13:27:56 -04:00
Derrick Hammer 19167acec2
feat: add getNetworkModuleStatus to fetch a network module status, either one time or continuous 2023-07-23 13:27:05 -04:00
Derrick Hammer b55782db8f
dep: add p-defer 2023-07-23 13:15:19 -04:00
6 changed files with 74 additions and 7 deletions

View File

@ -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)

7
npm-shrinkwrap.json generated
View File

@ -1,15 +1,16 @@
{
"name": "@lumeweb/libkernel",
"version": "0.1.0-develop.24",
"version": "0.1.0-develop.25",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@lumeweb/libkernel",
"version": "0.1.0-develop.24",
"version": "0.1.0-develop.25",
"dependencies": {
"@lumeweb/libweb": "0.2.0-develop.27",
"emittery": "^1.0.1"
"emittery": "^1.0.1",
"p-defer": "^4.0.0"
},
"devDependencies": {
"@lumeweb/node-library-preset": "^0.2.7",

View File

@ -1,6 +1,6 @@
{
"name": "@lumeweb/libkernel",
"version": "0.1.0-develop.24",
"version": "0.1.0-develop.25",
"main": "lib/index.js",
"type": "module",
"types": "lib/index.d.ts",
@ -35,7 +35,8 @@
},
"dependencies": {
"@lumeweb/libweb": "0.2.0-develop.27",
"emittery": "^1.0.1"
"emittery": "^1.0.1",
"p-defer": "^4.0.0"
},
"publishConfig": {
"access": "public"

View File

@ -10,6 +10,8 @@ import {
log as logModule,
logErr as logErrModule,
} from "#module/index.js";
import defer, { DeferredPromise } from "p-defer";
import { connectModuleBound } from "#module/client.js";
// @ts-ignore
const kernelEnv = typeof window !== "undefined" && window?.document;
@ -20,3 +22,42 @@ export const connectModule = kernelEnv
: connectModuleModule;
export const log = kernelEnv ? logKernel : logModule;
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();
};
}

View File

@ -2,8 +2,8 @@ import Emittery from "emittery";
import { callModule, connectModule, log, logErr } from "../api.js";
import { DataFn, ErrTuple } from "@lumeweb/libweb";
type callModuleBound = (method: string, data?: any) => Promise<ErrTuple>;
type connectModuleBound = (
export type callModuleBound = (method: string, data?: any) => Promise<ErrTuple>;
export type connectModuleBound = (
method: string,
data: any,
receiveUpdate: DataFn,

View File

@ -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");
}
}