Compare commits

...

83 Commits

Author SHA1 Message Date
semantic-release-bot 1044ef8532 chore(release): 0.0.2-develop.1 [skip ci]
## [0.0.2-develop.1](https://git.lumeweb.com/LumeWeb/kernel-rpc-client/compare/v0.0.1...v0.0.2-develop.1) (2023-07-05)

### Reverts

* Revert "*Process the queue in reverse" ([f38c6f5](f38c6f53cf))
2023-07-05 08:13:08 +00:00
Derrick Hammer 64cef2cbf5
ci: update npm-shrinkwrap.json 2023-07-05 04:09:02 -04:00
Derrick Hammer c29aaf0b3b
ci: setup 2023-07-05 04:05:41 -04:00
Derrick Hammer 1738459cbb
refactor: move to new sdks 2023-07-05 04:05:21 -04:00
Derrick Hammer 5128b98f7b
*update dist 2023-04-16 23:26:48 -04:00
Derrick Hammer 2df4ab9db4
*update module hash 2023-04-16 23:26:36 -04:00
Derrick Hammer e00a3e3430
*Update dist 2023-04-09 13:44:45 -04:00
Derrick Hammer 72ad939adf
*update module hash 2023-04-09 13:44:25 -04:00
Derrick Hammer 7fc87b391c
*update dist 2023-04-09 12:54:51 -04:00
Derrick Hammer 34e05c6839
*update module hash 2023-04-09 12:54:39 -04:00
Derrick Hammer ed738d15ed
*update dist 2023-04-08 21:48:08 -04:00
Derrick Hammer e8e28f7540
*update module hash 2023-04-08 21:47:54 -04:00
Derrick Hammer 8dd7f5ebf7
*update dist 2023-04-05 16:03:33 -04:00
Derrick Hammer f9088b8f6e
*update module hash 2023-04-05 16:02:43 -04:00
Derrick Hammer 8ebc41c839
*update dist 2023-04-04 11:26:58 -04:00
Derrick Hammer 235cef400c
*update module hash 2023-04-04 11:26:41 -04:00
Derrick Hammer c05becb270
*update dist 2023-04-04 08:10:18 -04:00
Derrick Hammer b9a9a7e693
*update module hash 2023-04-04 08:09:55 -04:00
Derrick Hammer f6221c08a8
*update dist 2023-04-04 06:37:28 -04:00
Derrick Hammer 9dc8f69e52
*update module hash 2023-04-04 06:37:09 -04:00
Derrick Hammer 5b1a269093
*Update dist 2023-03-29 17:33:22 -04:00
Derrick Hammer 3b59b03374
*Update module hash 2023-03-29 17:33:07 -04:00
Derrick Hammer 576af28877
*Update dist 2023-03-29 17:05:00 -04:00
Derrick Hammer be24210720
*Update module hash 2023-03-29 17:04:53 -04:00
Derrick Hammer 74ef712e9d
*Add LICENSE 2023-03-27 09:03:16 -04:00
Derrick Hammer 1f8e558d89
*Update dist 2023-03-27 08:13:09 -04:00
Derrick Hammer 3e7d5e53a1
*Update module hash 2023-03-27 08:12:53 -04:00
Derrick Hammer bf68b28680
*Update dist 2023-03-24 15:58:40 -04:00
Derrick Hammer 8684fcde3c
*SimpleRpcQuery needs to be wrapped in a factory 2023-03-24 15:58:32 -04:00
Derrick Hammer e80654de35
*Update dist 2023-03-24 13:39:50 -04:00
Derrick Hammer 80eb7151a9
*Keep data inside query 2023-03-24 13:39:35 -04:00
Derrick Hammer f5c7daabbb
*Update dist 2023-03-24 13:29:17 -04:00
Derrick Hammer c42cf65b8c
*Options needs to be optional 2023-03-24 13:28:54 -04:00
Derrick Hammer ebaa1cac25
*Update dist 2023-03-24 13:20:57 -04:00
Derrick Hammer 0a6d56572b
*Make relay optional.
*Have RpcNetwork.simpleQuery take an options bag
2023-03-24 13:20:37 -04:00
Derrick Hammer 1d61ec5e55
*Update dist 2023-03-23 13:03:01 -04:00
Derrick Hammer 71e41ae003
*Remove unneeded queues 2023-03-23 13:02:46 -04:00
Derrick Hammer 09825ea3c7
*Add createClient 2023-03-23 13:02:29 -04:00
Derrick Hammer b5b7c9e0fe
*Add some dev deps needed due to pnpm/tsc 2023-03-23 13:00:25 -04:00
Derrick Hammer 7dc18eb090
*Update dist 2023-03-23 12:59:48 -04:00
Derrick Hammer 26f1164815
*Add typescript dev dep 2023-03-23 12:46:09 -04:00
Derrick Hammer 15a4ef2eac
*Update module hash 2023-03-23 12:45:19 -04:00
Derrick Hammer 1a844804ec
*Refactor to use new RPC module API and new kernel client API 2023-03-23 12:42:21 -04:00
Derrick Hammer e2f46d5bd2
*Update dist 2022-09-05 06:26:50 -04:00
Derrick Hammer 85447be885
*Bug fix first promise in result which returns just an ErrTuple 2022-09-05 06:26:20 -04:00
Derrick Hammer e759d06faa
*Update dist 2022-08-31 20:14:48 -04:00
Derrick Hammer acc3ea2cf1
*Update deps 2022-08-31 20:10:39 -04:00
Derrick Hammer 951a6f9554
*add cancel support to streaming query
*handle connectModule return properly
2022-08-31 20:10:24 -04:00
Derrick Hammer cfceda9bf1
*Update dist 2022-08-31 19:23:57 -04:00
Derrick Hammer 62849f009b
*Streaming query needs to pass relay 2022-08-31 19:23:38 -04:00
Derrick Hammer bddacc1a7a
*Update dist 2022-08-31 19:15:57 -04:00
Derrick Hammer 1e3e8f35bc
*Update StreamingRpcQuery result to handle connectModule properly 2022-08-31 19:15:40 -04:00
Derrick Hammer b3e6290a73
*Update dist 2022-08-31 19:05:01 -04:00
Derrick Hammer 498cbfbce5
*Override streamHandler since a function cannot be passed between modules 2022-08-31 19:04:44 -04:00
Derrick Hammer d3ee633a5c
*Update dist 2022-08-31 17:33:29 -04:00
Derrick Hammer 7f6bd96b33
*Update and bug fix rpc classes 2022-08-31 17:32:52 -04:00
Derrick Hammer 389e3d1ac4
*Update dist 2022-08-31 15:25:36 -04:00
Derrick Hammer 34c91c15d7
*Default id should be 1 2022-08-31 15:25:18 -04:00
Derrick Hammer f2ed076a47
*Update dist 2022-08-31 14:42:49 -04:00
Derrick Hammer 9d04fa3933
*Add support for a network id 2022-08-31 14:42:26 -04:00
Derrick Hammer ad2830cba6
*Update dist 2022-08-30 22:18:07 -04:00
Derrick Hammer f4cb988053
*If an error, return it as a RPCResponse object instead of throwing an error 2022-08-30 22:17:39 -04:00
Derrick Hammer 7916f6e4d6
*Update dist 2022-08-30 21:49:59 -04:00
Derrick Hammer 7efa878f15
*Properly pass both query and options 2022-08-30 21:49:40 -04:00
Derrick Hammer 1847eaaeac
*Update dist 2022-08-30 21:39:52 -04:00
Derrick Hammer 5345135b02
*Update to use new RPC protocol
*Add support for multiple RPC query types
2022-08-30 21:39:26 -04:00
Derrick Hammer 80fcb215b6
*Update deps 2022-08-30 17:28:31 -04:00
Derrick Hammer 91896daff1
*Fix array override 2022-08-03 11:50:13 -04:00
Derrick Hammer 14f3770bf7 *Update dist 2022-07-21 00:58:47 -04:00
Derrick Hammer 663f565c8d *Refactor action queue
*Dynamically load callModule and connectModule
2022-07-21 00:58:24 -04:00
Derrick Hammer f38c6f53cf Revert "*Process the queue in reverse"
This reverts commit 8986d45e8e.
2022-07-20 18:45:10 -04:00
Derrick Hammer 34d96e94f9 Revert "*Update dist"
This reverts commit 91a37ac935.
2022-07-20 18:45:10 -04:00
Derrick Hammer 91a37ac935 *Update dist 2022-07-20 18:37:14 -04:00
Derrick Hammer 8986d45e8e *Process the queue in reverse 2022-07-20 18:36:47 -04:00
Derrick Hammer ee295839d0 *Update dist 2022-07-20 18:32:09 -04:00
Derrick Hammer 38a599ce55 *Ensure we await on the promise not the wrapper 2022-07-20 18:31:55 -04:00
Derrick Hammer c121879cbd *Update dist 2022-07-20 18:25:47 -04:00
Derrick Hammer 833bb751bc *Use callbacks to ensure promises process serially 2022-07-20 18:25:27 -04:00
Derrick Hammer 07f90441d3 *Update dist 2022-07-20 17:22:25 -04:00
Derrick Hammer b2560e9b25 *Add more safety checks on window 2022-07-20 17:22:10 -04:00
Derrick Hammer 22fc7e73e2 *Process queued promises serially with try catch 2022-07-20 04:45:36 -04:00
Derrick Hammer b4a7e2708f *Add dist 2022-07-20 03:36:21 -04:00
Derrick Hammer 97a4d8d170 *Initial version 2022-07-20 03:35:58 -04:00
7 changed files with 18609 additions and 1 deletions

13
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,13 @@
name: Build/Publish
on:
push:
branches:
- master
- develop
- develop-*
jobs:
main:
uses: lumeweb/github-node-deploy-workflow/.github/workflows/main.yml@master
secrets: inherit

5
.presetterrc.json Normal file
View File

@ -0,0 +1,5 @@
{
"preset": [
"@lumeweb/node-library-preset"
]
}

6
CHANGELOG.md Normal file
View File

@ -0,0 +1,6 @@
## [0.0.2-develop.1](https://git.lumeweb.com/LumeWeb/kernel-rpc-client/compare/v0.0.1...v0.0.2-develop.1) (2023-07-05)
### Reverts
* Revert "*Process the queue in reverse" ([f38c6f5](https://git.lumeweb.com/LumeWeb/kernel-rpc-client/commit/f38c6f53cfa68d3866d0614ea9490aef9f47bca7))

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2022 Lume Web
Copyright (c) 2023 Hammer Technologies LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

18415
npm-shrinkwrap.json generated Normal file

File diff suppressed because it is too large Load Diff

31
package.json Normal file
View File

@ -0,0 +1,31 @@
{
"name": "@lumeweb/kernel-rpc-client",
"version": "0.0.2-develop.1",
"type": "module",
"main": "lib/index.js",
"repository": {
"type": "git",
"url": "gitea@git.lumeweb.com:LumeWeb/kernel-rpc-client.git"
},
"devDependencies": {
"@lumeweb/node-library-preset": "^0.2.7",
"presetter": "*"
},
"readme": "ERROR: No README data found!",
"scripts": {
"prepare": "presetter bootstrap",
"build": "run build",
"semantic-release": "semantic-release"
},
"dependencies": {
"@lumeweb/interface-relay": "^0.0.2-develop.1",
"@lumeweb/libkernel": "^0.1.0-develop.14",
"@lumeweb/rpc-client": "^0.0.2-develop.4"
},
"files": [
"lib"
],
"publishConfig": {
"access": "public"
}
}

138
src/index.ts Normal file
View File

@ -0,0 +1,138 @@
import { ErrTuple } from "@lumeweb/libkernel";
import type {
RPCRequest,
RPCResponse,
ClientRPCRequest,
} from "@lumeweb/interface-relay";
import { RpcQueryOptions } from "@lumeweb/rpc-client";
import { Buffer } from "buffer";
import { Client, factory } from "@lumeweb/libkernel/module";
const RPC_MODULE = "fAAKlPuoD2FgKq27nhNILSmf7nTYmI9mMmOfTujwXma-1g";
export class RpcNetwork extends Client {
private _def: boolean;
constructor(module: string, def: boolean = true) {
super(module);
this._def = def;
}
private _networkId: number = 0;
get networkId(): number {
return this._networkId;
}
get ready(): Promise<ErrTuple> {
if (this._def) {
this._networkId = 1;
} else {
Promise.resolve()
.then(() => this.callModuleReturn(RPC_MODULE, "createNetwork"))
.then((ret: ErrTuple) => (this._networkId = ret[0]));
}
return this.callModuleReturn("ready", {
network: this._networkId,
});
}
public simpleQuery({
relay,
query,
options = {},
}: {
relay?: Buffer | string;
query: ClientRPCRequest;
options?: RpcQueryOptions;
}): SimpleRpcQuery {
return createSimpleRpcQuery({
network: this,
relay,
query,
options,
}).run();
}
}
export abstract class RpcQueryBase extends Client {
protected _promise?: Promise<any>;
protected _network: RpcNetwork;
protected _query: RPCRequest;
protected _options: RpcQueryOptions;
protected _queryType: string;
constructor(
module: string,
network: RpcNetwork,
query: RPCRequest,
options: RpcQueryOptions = {},
queryType: string,
) {
super(module);
this._network = network;
this._query = query;
this._options = options;
this._queryType = queryType;
}
get result(): Promise<RPCResponse> {
return (this._promise as Promise<any>)
.then((result: ErrTuple): RPCResponse => {
return result[0];
})
.catch((error: Error) => {
return { error: error.message };
});
}
public run(): this {
this._promise = this.callModule(this._queryType, {
query: this._query,
options: this._options,
network: this._network.networkId,
});
return this;
}
}
export class SimpleRpcQuery extends RpcQueryBase {
protected _relay?: string | Buffer;
constructor(
module: string,
{
network,
relay,
query,
options,
}: {
network: RpcNetwork;
relay?: string | Buffer;
query: RPCRequest;
options?: RpcQueryOptions;
},
) {
super(module, network, query, options, "simpleQuery");
this._relay = relay;
}
public run(): this {
this._promise = this.callModule(this._queryType, {
relay: this._relay,
query: this._query,
options: this._options,
network: this._network.networkId,
});
return this;
}
}
export const createClient = factory<RpcNetwork>(RpcNetwork, RPC_MODULE);
const createSimpleRpcQuery = factory<SimpleRpcQuery>(
SimpleRpcQuery,
RPC_MODULE,
);