Compare commits
17 Commits
v0.0.2-dev
...
v0.1.0-dev
Author | SHA1 | Date |
---|---|---|
semantic-release-bot | 6c5bf40bd1 | |
Derrick Hammer | 024c810edf | |
Derrick Hammer | cfeb769924 | |
Derrick Hammer | ad4eaa4c0a | |
Derrick Hammer | 61050a5a05 | |
Derrick Hammer | f98b0c59f3 | |
Derrick Hammer | 139cd814d4 | |
Derrick Hammer | 95bcdeebb5 | |
Derrick Hammer | c0b91f502a | |
Derrick Hammer | 7e919a39a8 | |
Derrick Hammer | 4fbd78943a | |
Derrick Hammer | f5ce8518bb | |
Derrick Hammer | 0a7ceecd9c | |
Derrick Hammer | 0b8718cf9a | |
Derrick Hammer | ccf70212f1 | |
Derrick Hammer | acb87c1531 | |
Derrick Hammer | f08c87c184 |
|
@ -3,7 +3,16 @@
|
|||
"@lumeweb/presetter-kernel-module-preset"
|
||||
],
|
||||
"config": {
|
||||
"official": true,
|
||||
"browser": true
|
||||
"vite": {
|
||||
"resolve": {
|
||||
"alias": {
|
||||
"timers": "timers-browserify",
|
||||
"protomux": "@lumeweb/kernel-protomux-client"
|
||||
}
|
||||
},
|
||||
"optimize": {
|
||||
"node-fetch": "export default undefined;"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -1 +1,15 @@
|
|||
# [0.1.0-develop.1](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/compare/v0.0.2-develop.1...v0.1.0-develop.1) (2023-07-23)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* await swarm.join ([f08c87c](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/commit/f08c87c1845b7561c9aea1f7c21cf1f5528f92b7))
|
||||
* need to override protomux with our kernel-protomux-client ([61050a5](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/commit/61050a5a054686c65a4e1e58035e39b6e37c25d6))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add registry api for use with network registry ([f5ce851](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/commit/f5ce8518bb5261fbf25d5281c9f31ead99d735fd))
|
||||
* add status api ([024c810](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/commit/024c810edf8a9f57693d89d44c785306d3edee89))
|
||||
|
||||
## [0.0.2-develop.1](https://git.lumeweb.com/LumeWeb/kernel-handshake-node/compare/v0.0.1...v0.0.2-develop.1) (2023-07-06)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
25
package.json
25
package.json
|
@ -10,27 +10,30 @@
|
|||
"email": "contact@lumeweb.com"
|
||||
},
|
||||
"type": "module",
|
||||
"version": "0.0.2-develop.1",
|
||||
"version": "0.1.0-develop.1",
|
||||
"readme": "ERROR: No README data found!",
|
||||
"scripts": {
|
||||
"prepare": "presetter bootstrap",
|
||||
"build": "shx echo 'export default undefined;' > nop.js; run build",
|
||||
"semantic-release": "semantic-release"
|
||||
"build": "run build",
|
||||
"semantic-release": "semantic-release",
|
||||
"postinstall": "patch-package"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lumeweb/presetter-kernel-module-preset": "^0.1.0-develop.30",
|
||||
"@rollup/plugin-alias": "^5.0.0",
|
||||
"@lumeweb/presetter-kernel-module-preset": "^0.1.0-develop.43",
|
||||
"patch-package": "^7.0.0",
|
||||
"presetter": "*",
|
||||
"rollup-plugin-ignore-import": "^1.3.2"
|
||||
"timers-browserify": "^2.0.12",
|
||||
"vite": "^4.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@i2labs/dns": "^1.0.1",
|
||||
"@lumeweb/kernel-swarm-client": "^0.0.2-develop.6",
|
||||
"@lumeweb/libhyperproxy": "^0.0.2-develop.1",
|
||||
"@lumeweb/libkernel": "^0.1.0-develop.14",
|
||||
"@lumeweb/kernel-network-registry-client": "^0.1.0-develop.5",
|
||||
"@lumeweb/kernel-protomux-client": "^0.0.2-develop.12",
|
||||
"@lumeweb/kernel-swarm-client": "^0.1.0-develop.2",
|
||||
"@lumeweb/libhyperproxy": "^0.0.2-develop.2",
|
||||
"@lumeweb/libkernel": "^0.1.0-develop.20",
|
||||
"assert": "^2.0.0",
|
||||
"hsd": "^5.0.1",
|
||||
"p-defer": "^4.0.0",
|
||||
"timers-browserify": "^2.0.12"
|
||||
"p-defer": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
// @ts-nocheck
|
||||
import * as import0 from "@rollup/plugin-json";
|
||||
import * as import1 from "@rollup/plugin-node-resolve";
|
||||
import * as import2 from "@rollup/plugin-commonjs";
|
||||
import * as import3 from "@rollup/plugin-graphql";
|
||||
import * as import4 from "@rollup/plugin-image";
|
||||
import * as import5 from "@rollup/plugin-yaml";
|
||||
import * as import6 from "rollup-plugin-postcss";
|
||||
import * as import7 from "rollup-plugin-visualizer";
|
||||
import * as import8 from "@rollup/plugin-wasm";
|
||||
import * as import9 from "@rollup/plugin-alias";
|
||||
import * as import10 from "rollup-plugin-ignore-import";
|
||||
export default {
|
||||
input: "build/index.js",
|
||||
output: [
|
||||
{
|
||||
file: "lib/index.js",
|
||||
format: "cjs",
|
||||
sourcemap: true,
|
||||
inlineDynamicImports: true,
|
||||
},
|
||||
],
|
||||
plugins: [
|
||||
import0.default(...([] as const)),
|
||||
import10.default({
|
||||
include: [
|
||||
"**/multiSocket/tcpSocket.js",
|
||||
"**/node-fetch/**",
|
||||
"**/urkel/lib/file.js",
|
||||
],
|
||||
exclude: [],
|
||||
}),
|
||||
import9.default({
|
||||
entries: {
|
||||
timers: "timers-browserify",
|
||||
stream: "./nop.js",
|
||||
blgr: "blgr/lib/fs-browser.js",
|
||||
},
|
||||
}),
|
||||
import1.default(
|
||||
...([
|
||||
{
|
||||
browser: true,
|
||||
preferBuiltins: false,
|
||||
dedupe: [
|
||||
"@lumeweb/libkernel",
|
||||
"@lumeweb/libweb",
|
||||
"@lumeweb/libportal",
|
||||
],
|
||||
},
|
||||
] as const),
|
||||
),
|
||||
import2.default(
|
||||
...([{ extensions: [".js", ".jsx", ".ts", ".tsx"] }] as const),
|
||||
),
|
||||
import10.default({
|
||||
include: [/.*commonjs-external/],
|
||||
exclude: [],
|
||||
}),
|
||||
import3.default(...([] as const)),
|
||||
import4.default(...([] as const)),
|
||||
import5.default(...([] as const)),
|
||||
import6.default(...([{ inject: { insertAt: "top" } }] as const)),
|
||||
import7.visualizer(...([] as const)),
|
||||
import8.default(...([{ targetEnv: "auto-inline" }] as const)),
|
||||
],
|
||||
};
|
53
src/index.ts
53
src/index.ts
|
@ -1,6 +1,7 @@
|
|||
import type { ActiveQuery } from "@lumeweb/libkernel/module";
|
||||
import { addHandler, handleMessage } from "@lumeweb/libkernel/module";
|
||||
import { createClient } from "@lumeweb/kernel-swarm-client";
|
||||
import { createClient as createSwarmClient } from "@lumeweb/kernel-swarm-client";
|
||||
import { createClient as createNetworkRegistryClient } from "@lumeweb/kernel-network-registry-client";
|
||||
import {
|
||||
createServer,
|
||||
DummySocket,
|
||||
|
@ -13,6 +14,7 @@ import dns from "@i2labs/dns";
|
|||
import assert from "assert";
|
||||
|
||||
const PROTOCOL = "lumeweb.proxy.handshake";
|
||||
const TYPES = ["blockchain"];
|
||||
|
||||
onmessage = handleMessage;
|
||||
|
||||
|
@ -22,6 +24,8 @@ let moduleLoaded: Promise<void> = new Promise((resolve) => {
|
|||
});
|
||||
|
||||
addHandler("presentKey", handlePresentKey);
|
||||
addHandler("register", handleRegister);
|
||||
addHandler("status", handleStatus, { receiveUpdates: true });
|
||||
addHandler("ready", handleReady);
|
||||
addHandler("query", handleQuery);
|
||||
|
||||
|
@ -29,6 +33,8 @@ let swarm;
|
|||
let proxy: MultiSocketProxy;
|
||||
let node: SPVNode;
|
||||
|
||||
const networkRegistry = createNetworkRegistryClient();
|
||||
|
||||
function resolveWithPeers(resolve: Function) {
|
||||
if (!node.pool.peers.head()) {
|
||||
node.pool.on("peer", () => {
|
||||
|
@ -61,7 +67,7 @@ function resolveWithPeers(resolve: Function) {
|
|||
}
|
||||
|
||||
async function handlePresentKey(aq: ActiveQuery) {
|
||||
swarm = createClient();
|
||||
swarm = createSwarmClient();
|
||||
|
||||
const peerConnected = defer();
|
||||
node = new SPVNode({
|
||||
|
@ -148,7 +154,7 @@ async function handlePresentKey(aq: ActiveQuery) {
|
|||
peerConnected.resolve();
|
||||
});
|
||||
|
||||
swarm.join(PROTOCOL);
|
||||
await swarm.join(PROTOCOL);
|
||||
await swarm.start();
|
||||
|
||||
await peerConnected.promise;
|
||||
|
@ -188,3 +194,44 @@ async function handleQuery(aq: ActiveQuery) {
|
|||
aq.reject((e as Error).message);
|
||||
}
|
||||
}
|
||||
|
||||
async function handleRegister(aq: ActiveQuery) {
|
||||
await networkRegistry.registerNetwork(TYPES);
|
||||
|
||||
aq.respond();
|
||||
}
|
||||
|
||||
async function handleStatus(aq: ActiveQuery) {
|
||||
let chainProgress = node.chain.getProgress();
|
||||
let chainPeers = node.pool.peers.size();
|
||||
|
||||
const chainProgressListener = node.chain.on("tip", () => {
|
||||
chainProgress = node.chain.getProgress();
|
||||
sendUpdate();
|
||||
});
|
||||
|
||||
function peersListener() {
|
||||
chainPeers = node.pool.peers.size();
|
||||
sendUpdate();
|
||||
}
|
||||
|
||||
node.pool.on("peer", peersListener);
|
||||
node.pool.on("peer close", peersListener);
|
||||
|
||||
function sendUpdate() {
|
||||
aq.sendUpdate({
|
||||
sync: chainProgress * 100,
|
||||
peers: chainPeers,
|
||||
ready: node.chain.synced,
|
||||
});
|
||||
}
|
||||
|
||||
aq.setReceiveUpdate?.(() => {
|
||||
node.chain.off("tip", chainProgressListener);
|
||||
node.pool.off("peer", peersListener);
|
||||
node.pool.off("peer close", peersListener);
|
||||
aq.respond();
|
||||
});
|
||||
|
||||
sendUpdate();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue