feat: use @snort/system-wasm pkg
This commit is contained in:
@ -13,10 +13,10 @@
|
|||||||
"@radix-ui/react-toggle": "^1.0.3",
|
"@radix-ui/react-toggle": "^1.0.3",
|
||||||
"@react-hook/resize-observer": "^1.2.6",
|
"@react-hook/resize-observer": "^1.2.6",
|
||||||
"@scure/base": "^1.1.3",
|
"@scure/base": "^1.1.3",
|
||||||
"@snort/shared": "^1.0.11",
|
"@snort/shared": "^1.0.12",
|
||||||
"@snort/system": "^1.2.0",
|
"@snort/system": "^1.2.1",
|
||||||
"@snort/system-react": "^1.2.0",
|
"@snort/system-react": "^1.2.1",
|
||||||
"@snort/system-wasm": "^1.0.1",
|
"@snort/system-wasm": "^1.0.2",
|
||||||
"@snort/system-web": "^1.0.4",
|
"@snort/system-web": "^1.0.4",
|
||||||
"@szhsin/react-menu": "^4.0.2",
|
"@szhsin/react-menu": "^4.0.2",
|
||||||
"@types/webscopeio__react-textarea-autocomplete": "^4.7.2",
|
"@types/webscopeio__react-textarea-autocomplete": "^4.7.2",
|
||||||
|
@ -29,6 +29,7 @@ import { StreamSummaryPage } from "@/pages/summary";
|
|||||||
import { EmbededPage } from "./pages/embed";
|
import { EmbededPage } from "./pages/embed";
|
||||||
import Markdown from "./element/markdown";
|
import Markdown from "./element/markdown";
|
||||||
import { Async } from "./element/async-loader";
|
import { Async } from "./element/async-loader";
|
||||||
|
import { WasmOptimizer, WasmPath, wasmInit } from "./wasm";
|
||||||
const DashboardPage = lazy(() => import("./pages/dashboard"));
|
const DashboardPage = lazy(() => import("./pages/dashboard"));
|
||||||
|
|
||||||
import Faq from "@/faq.md";
|
import Faq from "@/faq.md";
|
||||||
@ -36,7 +37,7 @@ import Faq from "@/faq.md";
|
|||||||
const db = new SnortSystemDb();
|
const db = new SnortSystemDb();
|
||||||
const System = new NostrSystem({
|
const System = new NostrSystem({
|
||||||
db,
|
db,
|
||||||
checkSigs: false,
|
optimizer: WasmOptimizer
|
||||||
});
|
});
|
||||||
export const Login = new LoginStore();
|
export const Login = new LoginStore();
|
||||||
|
|
||||||
@ -48,22 +49,26 @@ Object.entries(defaultRelays).forEach(params => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export let TimeSync = 0;
|
export let TimeSync = 0;
|
||||||
|
async function doInit() {
|
||||||
|
await wasmInit(WasmPath)
|
||||||
|
db.ready = await db.isAvailable();
|
||||||
|
await System.Init();
|
||||||
|
try {
|
||||||
|
const req = await fetch("https://api.zap.stream/api/time");
|
||||||
|
const nowAtServer = (await req.json()).time as number;
|
||||||
|
const now = unixNowMs();
|
||||||
|
TimeSync = now - nowAtServer;
|
||||||
|
console.debug("Time clock sync", TimeSync);
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
element: <LayoutPage />,
|
element: <LayoutPage />,
|
||||||
loader: async () => {
|
loader: async () => {
|
||||||
db.ready = await db.isAvailable();
|
await doInit();
|
||||||
await System.Init();
|
|
||||||
try {
|
|
||||||
const req = await fetch("https://api.zap.stream/api/time");
|
|
||||||
const nowAtServer = (await req.json()).time as number;
|
|
||||||
const now = unixNowMs();
|
|
||||||
TimeSync = now - nowAtServer;
|
|
||||||
console.debug("Time clock sync", TimeSync);
|
|
||||||
} catch {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
@ -129,8 +134,7 @@ const router = createBrowserRouter([
|
|||||||
path: "/chat/:id",
|
path: "/chat/:id",
|
||||||
element: <ChatPopout />,
|
element: <ChatPopout />,
|
||||||
loader: async () => {
|
loader: async () => {
|
||||||
db.ready = await db.isAvailable();
|
await doInit();
|
||||||
await System.Init();
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -138,8 +142,7 @@ const router = createBrowserRouter([
|
|||||||
path: "/alert/:id/:type",
|
path: "/alert/:id/:type",
|
||||||
element: <AlertsPage />,
|
element: <AlertsPage />,
|
||||||
loader: async () => {
|
loader: async () => {
|
||||||
db.ready = await db.isAvailable();
|
await doInit();
|
||||||
await System.Init();
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -147,8 +150,7 @@ const router = createBrowserRouter([
|
|||||||
path: "/embed/:id",
|
path: "/embed/:id",
|
||||||
element: <EmbededPage />,
|
element: <EmbededPage />,
|
||||||
loader: async () => {
|
loader: async () => {
|
||||||
db.ready = await db.isAvailable();
|
await doInit();
|
||||||
await System.Init();
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
30
src/wasm.ts
Normal file
30
src/wasm.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import {
|
||||||
|
compress,
|
||||||
|
default as wasmInit,
|
||||||
|
expand_filter,
|
||||||
|
flat_merge,
|
||||||
|
get_diff,
|
||||||
|
schnorr_verify_event,
|
||||||
|
} from "@snort/system-wasm";
|
||||||
|
import WasmPath from "@snort/system-wasm/pkg/system_wasm_bg.wasm";
|
||||||
|
import { ReqFilter, FlatReqFilter, Optimizer } from "@snort/system";
|
||||||
|
|
||||||
|
export const WasmOptimizer = {
|
||||||
|
expandFilter: (f: ReqFilter) => {
|
||||||
|
return expand_filter(f) as Array<FlatReqFilter>;
|
||||||
|
},
|
||||||
|
getDiff: (prev: Array<ReqFilter>, next: Array<ReqFilter>) => {
|
||||||
|
return get_diff(prev, next) as Array<FlatReqFilter>;
|
||||||
|
},
|
||||||
|
flatMerge: (all: Array<FlatReqFilter>) => {
|
||||||
|
return flat_merge(all) as Array<ReqFilter>;
|
||||||
|
},
|
||||||
|
compress: (all: Array<ReqFilter>) => {
|
||||||
|
return compress(all) as Array<ReqFilter>;
|
||||||
|
},
|
||||||
|
schnorrVerify: ev => {
|
||||||
|
return schnorr_verify_event(ev);
|
||||||
|
},
|
||||||
|
} as Optimizer;
|
||||||
|
|
||||||
|
export { wasmInit, WasmPath };
|
@ -28,7 +28,7 @@ export default defineConfig({
|
|||||||
filename: "build/stats.html",
|
filename: "build/stats.html",
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
assetsInclude: ["**/*.md"],
|
assetsInclude: ["**/*.md", "**/*.wasm"],
|
||||||
build: {
|
build: {
|
||||||
outDir: "build",
|
outDir: "build",
|
||||||
sourcemap: true,
|
sourcemap: true,
|
||||||
|
71
yarn.lock
71
yarn.lock
@ -2891,21 +2891,35 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@snort/system-react@npm:^1.2.0":
|
"@snort/shared@npm:^1.0.12":
|
||||||
version: 1.2.0
|
version: 1.0.12
|
||||||
resolution: "@snort/system-react@npm:1.2.0"
|
resolution: "@snort/shared@npm:1.0.12"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@snort/shared": ^1.0.11
|
"@noble/curves": ^1.2.0
|
||||||
"@snort/system": ^1.2.0
|
"@noble/hashes": ^1.3.2
|
||||||
react: ^18.2.0
|
"@scure/base": ^1.1.2
|
||||||
checksum: 4a4444cfe6f91e92b814c11ebc26061e46bb771c2458919ec2c886671d7a3c9e920bc98b43831c40411869950d4e5d4633f7b5d51291347220ca12dd4f98fe6b
|
debug: ^4.3.4
|
||||||
|
eventemitter3: ^5.0.1
|
||||||
|
light-bolt11-decoder: ^3.0.0
|
||||||
|
checksum: b31ee1a1977db5c7fa2e5d29f364a956e6de38fab3d8b0e8f2b233a362e7a1095ee615b839c0c2a7d8d48b1c3445ec7cecc0f8470cf45863d0ddeb673053fcbb
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@snort/system-wasm@npm:^1.0.1":
|
"@snort/system-react@npm:^1.2.1":
|
||||||
version: 1.0.1
|
version: 1.2.1
|
||||||
resolution: "@snort/system-wasm@npm:1.0.1"
|
resolution: "@snort/system-react@npm:1.2.1"
|
||||||
checksum: 90de15d5473c6cd3846aeb7df8cfe927a538b6be1e964c1ecea597144fcdafd135bf47fa6a7a4d08747fc01066d595504951421f9d72adee8459b9705a7f88cc
|
dependencies:
|
||||||
|
"@snort/shared": ^1.0.12
|
||||||
|
"@snort/system": ^1.2.1
|
||||||
|
react: ^18.2.0
|
||||||
|
checksum: 7f354f2251fdd4ed8e2dace0dd54c8d0b06de2d5c5eac5468850ac6416bf24d97a16fb0d6fff211a34b2fb22899f4b01c1ecc7de210066709d5b85fb436dc906
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@snort/system-wasm@npm:^1.0.2":
|
||||||
|
version: 1.0.2
|
||||||
|
resolution: "@snort/system-wasm@npm:1.0.2"
|
||||||
|
checksum: 2d2ccc28484ea2340d4c073fd6680dc33a645899a177b619e8258af3cc5c71d6484f9ea0978e7aa87fd67cfc68e1d6fa759e60b3a361df3f99da5f5707a7b52a
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -2939,6 +2953,26 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@snort/system@npm:^1.2.1":
|
||||||
|
version: 1.2.1
|
||||||
|
resolution: "@snort/system@npm:1.2.1"
|
||||||
|
dependencies:
|
||||||
|
"@noble/curves": ^1.2.0
|
||||||
|
"@noble/hashes": ^1.3.2
|
||||||
|
"@scure/base": ^1.1.2
|
||||||
|
"@snort/shared": ^1.0.12
|
||||||
|
"@stablelib/xchacha20": ^1.0.1
|
||||||
|
debug: ^4.3.4
|
||||||
|
eventemitter3: ^5.0.1
|
||||||
|
isomorphic-ws: ^5.0.0
|
||||||
|
lokijs: ^1.5.12
|
||||||
|
lru-cache: ^10.2.0
|
||||||
|
uuid: ^9.0.0
|
||||||
|
ws: ^8.14.0
|
||||||
|
checksum: 78557fddba7f8ebba4ee1df0b0896f475c16d622f833aa71a849e40e9a1a2fc693bcfdcddf0ea9ec413f37297854881597eb3ae9cdebb8bd4e18b251eff1ee1c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@stablelib/binary@npm:^1.0.1":
|
"@stablelib/binary@npm:^1.0.1":
|
||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
resolution: "@stablelib/binary@npm:1.0.1"
|
resolution: "@stablelib/binary@npm:1.0.1"
|
||||||
@ -6146,6 +6180,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"lru-cache@npm:^10.2.0":
|
||||||
|
version: 10.2.0
|
||||||
|
resolution: "lru-cache@npm:10.2.0"
|
||||||
|
checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"lru-cache@npm:^5.1.1":
|
"lru-cache@npm:^5.1.1":
|
||||||
version: 5.1.1
|
version: 5.1.1
|
||||||
resolution: "lru-cache@npm:5.1.1"
|
resolution: "lru-cache@npm:5.1.1"
|
||||||
@ -7791,10 +7832,10 @@ __metadata:
|
|||||||
"@radix-ui/react-toggle": ^1.0.3
|
"@radix-ui/react-toggle": ^1.0.3
|
||||||
"@react-hook/resize-observer": ^1.2.6
|
"@react-hook/resize-observer": ^1.2.6
|
||||||
"@scure/base": ^1.1.3
|
"@scure/base": ^1.1.3
|
||||||
"@snort/shared": ^1.0.11
|
"@snort/shared": ^1.0.12
|
||||||
"@snort/system": ^1.2.0
|
"@snort/system": ^1.2.1
|
||||||
"@snort/system-react": ^1.2.0
|
"@snort/system-react": ^1.2.1
|
||||||
"@snort/system-wasm": ^1.0.1
|
"@snort/system-wasm": ^1.0.2
|
||||||
"@snort/system-web": ^1.0.4
|
"@snort/system-web": ^1.0.4
|
||||||
"@szhsin/react-menu": ^4.0.2
|
"@szhsin/react-menu": ^4.0.2
|
||||||
"@testing-library/dom": ^9.3.1
|
"@testing-library/dom": ^9.3.1
|
||||||
|
Reference in New Issue
Block a user