1
0
forked from Kieran/snort

add ndk for idb, send EVENT & REQ over webrtc

This commit is contained in:
Martti Malmi 2023-12-23 11:49:25 +02:00
parent 1b9dc3f480
commit 42c631149a
9 changed files with 442 additions and 27 deletions

View File

@ -6,6 +6,8 @@
"@lightninglabs/lnc-web": "^0.2.3-alpha", "@lightninglabs/lnc-web": "^0.2.3-alpha",
"@noble/curves": "^1.0.0", "@noble/curves": "^1.0.0",
"@noble/hashes": "^1.2.0", "@noble/hashes": "^1.2.0",
"@nostr-dev-kit/ndk": "^2.3.1",
"@nostr-dev-kit/ndk-cache-dexie": "^2.2.1",
"@scure/base": "^1.1.1", "@scure/base": "^1.1.1",
"@scure/bip32": "^1.3.0", "@scure/bip32": "^1.3.0",
"@scure/bip39": "^1.1.1", "@scure/bip39": "^1.1.1",
@ -28,6 +30,7 @@
"marked": "^9.1.0", "marked": "^9.1.0",
"marked-footnote": "^1.0.0", "marked-footnote": "^1.0.0",
"match-sorter": "^6.3.1", "match-sorter": "^6.3.1",
"nostr-tools": "^2.1.0",
"qr-code-styling": "^1.6.0-rc.1", "qr-code-styling": "^1.6.0-rc.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",

View File

@ -1,6 +1,5 @@
import { NostrEvent, OkResponse, SystemInterface } from "@snort/system"; import { NostrEvent, OkResponse, SystemInterface } from "@snort/system";
import { removeUndefined } from "@snort/shared"; import { removeUndefined } from "@snort/shared";
import { getWebRtcPool } from "@/webrtc";
export async function sendEventToRelays( export async function sendEventToRelays(
system: SystemInterface, system: SystemInterface,
@ -8,7 +7,6 @@ export async function sendEventToRelays(
customRelays?: Array<string>, customRelays?: Array<string>,
setResults?: (x: Array<OkResponse>) => void, setResults?: (x: Array<OkResponse>) => void,
) { ) {
getWebRtcPool()?.send(ev);
if (customRelays) { if (customRelays) {
system.HandleEvent({ ...ev, relays: [] }); system.HandleEvent({ ...ev, relays: [] });
return removeUndefined( return removeUndefined(

View File

@ -65,6 +65,8 @@ import { setupWebLNWalletConfig } from "@/Wallet/WebLN";
import { Wallets } from "@/Wallet"; import { Wallets } from "@/Wallet";
import Fuse from "fuse.js"; import Fuse from "fuse.js";
import NetworkGraph from "@/Pages/NetworkGraph"; import NetworkGraph from "@/Pages/NetworkGraph";
import { NDKEvent } from "@nostr-dev-kit/ndk";
import ndk, { dexieAdapter } from "@/ndk";
declare global { declare global {
interface Window { interface Window {
@ -159,6 +161,15 @@ System.on("event", ev => {
if (ev.kind === 3) { if (ev.kind === 3) {
socialGraphInstance.handleFollowEvent(ev); socialGraphInstance.handleFollowEvent(ev);
} }
const ndkEvent = new NDKEvent(ndk, ev);
dexieAdapter.setEvent(ndkEvent, []);
});
System.on("subscribe", (filters: Array<ReqFilter>) => {
const sub = ndk.subscribe(filters);
sub.on("event", event => {
System.HandleEvent(event.rawEvent());
});
}); });
async function fetchProfile(key: string) { async function fetchProfile(key: string) {

8
packages/app/src/ndk.ts Normal file
View File

@ -0,0 +1,8 @@
import NDKCacheAdapterDexie from "@nostr-dev-kit/ndk-cache-dexie";
import NDK from "@nostr-dev-kit/ndk";
const dexieAdapter = new NDKCacheAdapterDexie();
const ndk = new NDK({ cacheAdapter: dexieAdapter });
export { dexieAdapter };
export default ndk;

View File

@ -1,9 +1,13 @@
import { Socket } from "socket.io-client"; import { Socket } from "socket.io-client";
import EventEmitter from "eventemitter3"; import EventEmitter from "eventemitter3";
import ndk, { dexieAdapter } from "@/ndk";
import { NDKEvent } from "@nostr-dev-kit/ndk";
import { System } from "@/index";
export class WebRTCConnection extends EventEmitter { export class WebRTCConnection extends EventEmitter {
private peerConnection: RTCPeerConnection; private peerConnection: RTCPeerConnection;
private dataChannel: RTCDataChannel; private dataChannel: RTCDataChannel;
private seenEvents = new Set<string>();
constructor( constructor(
private socket: Socket, private socket: Socket,
@ -15,6 +19,15 @@ export class WebRTCConnection extends EventEmitter {
this.dataChannel = this.peerConnection.createDataChannel("data"); this.dataChannel = this.peerConnection.createDataChannel("data");
this.registerPeerConnectionEvents(); this.registerPeerConnectionEvents();
this.setupDataChannel(); this.setupDataChannel();
System.on("subscribe", filters => {
this.send(JSON.stringify(["REQ", "", filters]));
});
System.on("event", event => {
if (event.relays.length) return; // only send our own new events
if (this.seenEvents.has(event.id)) return;
this.seenEvents.add(event.id);
this.send(JSON.stringify(["EVENT", "", event]));
});
} }
private log<T extends unknown[]>(...args: T): void { private log<T extends unknown[]>(...args: T): void {
@ -56,22 +69,37 @@ export class WebRTCConnection extends EventEmitter {
} }
private handleDataChannelMessage(event: MessageEvent): void { private handleDataChannelMessage(event: MessageEvent): void {
this.log(`-> "${event.data}"`); try {
if (event.data === "ping") { const data = JSON.parse(event.data);
this.send("pong"); const requestType = data[0];
} else { switch (requestType) {
try { case "EVENT":
const data = JSON.parse(event.data); const event = data[2];
this.emit("event", { ...data, relays: [`webrtc:${this.peerId}`] }); // this.log("-> EVENT", event);
} catch (e) { if (this.seenEvents.has(event.id)) return;
// Ignore this.seenEvents.add(event.id);
this.emit("event", { ...event, relays: [`webrtc:${this.peerId}`] });
const ndkEvent = new NDKEvent(ndk, event);
dexieAdapter.setEvent(ndkEvent, []);
break;
case "REQ": // nostr subscription
// this.log("-> REQ", JSON.stringify(data));
const filters = data[2];
const sub = ndk.subscribe(filters);
sub.on("event", event => {
console.log("have event requested by peer", event.rawEvent());
this.send(JSON.stringify(["EVENT", "", event.rawEvent()]));
});
break;
} }
} catch (e) {
this.log("Error parsing data channel message", e);
} }
} }
public send(data: string): void { public send(data: string): void {
if (this.dataChannel.readyState === "open") { if (this.dataChannel.readyState === "open") {
this.log(`<- "${data}"`); // this.log(`<- "${data}"`);
this.dataChannel.send(data); this.dataChannel.send(data);
} }
} }

View File

@ -27,7 +27,12 @@ class WebRTCPool extends EventEmitter {
this.peers.forEach(conn => { this.peers.forEach(conn => {
if (!recipients || recipients.includes(conn.peerId)) { if (!recipients || recipients.includes(conn.peerId)) {
try { try {
conn.send(typeof data === "string" ? data : JSON.stringify(data)); if (typeof data === "string") {
conn.send(data);
} else {
const msg = JSON.stringify(["EVENT", "", data]);
conn.send(msg);
}
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }

View File

@ -25,7 +25,6 @@ LoginStore.hook(() => {
console.log("event from webrtc", event); console.log("event from webrtc", event);
System.HandleEvent(event); System.HandleEvent(event);
}); });
interval = setInterval(() => pool?.send("ping"), 10000);
} }
}); });

View File

@ -2,7 +2,7 @@ import debug from "debug";
import EventEmitter from "eventemitter3"; import EventEmitter from "eventemitter3";
import { unwrap, sanitizeRelayUrl, FeedCache, removeUndefined } from "@snort/shared"; import { unwrap, sanitizeRelayUrl, FeedCache, removeUndefined } from "@snort/shared";
import { NostrEvent, TaggedNostrEvent } from "./nostr"; import { NostrEvent, ReqFilter, TaggedNostrEvent } from "./nostr";
import { Connection, RelaySettings, ConnectionStateSnapshot, OkResponse } from "./connection"; import { Connection, RelaySettings, ConnectionStateSnapshot, OkResponse } from "./connection";
import { Query } from "./query"; import { Query } from "./query";
import { NoteCollection, NoteStore } from "./note-collection"; import { NoteCollection, NoteStore } from "./note-collection";
@ -30,6 +30,7 @@ interface NostrSystemEvents {
change: (state: SystemSnapshot) => void; change: (state: SystemSnapshot) => void;
auth: (challenge: string, relay: string, cb: (ev: NostrEvent) => void) => void; auth: (challenge: string, relay: string, cb: (ev: NostrEvent) => void) => void;
event: (ev: TaggedNostrEvent) => void; event: (ev: TaggedNostrEvent) => void;
subscribe: (filters: ReqFilter[]) => void;
} }
/** /**
@ -206,11 +207,11 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
} }
} }
this.emit("event", ev);
for (const [, v] of this.Queries) { for (const [, v] of this.Queries) {
v.handleEvent(sub, ev); v.handleEvent(sub, ev);
} }
this.emit("event", ev);
} }
/** /**
@ -352,6 +353,8 @@ export class NostrSystem extends EventEmitter<NostrSystemEvents> implements Syst
} }
qSend.filters = fNew; qSend.filters = fNew;
this.emit("subscribe", fNew);
if (qSend.relay) { if (qSend.relay) {
this.#log("Sending query to %s %O", qSend.relay, qSend); this.#log("Sending query to %s %O", qSend.relay, qSend);
const s = this.#sockets.get(qSend.relay); const s = this.#sockets.get(qSend.relay);

380
yarn.lock
View File

@ -2564,6 +2564,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0":
version: 1.1.0
resolution: "@noble/curves@npm:1.1.0"
dependencies:
"@noble/hashes": 1.3.1
checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5
languageName: node
linkType: hard
"@noble/curves@npm:1.2.0, @noble/curves@npm:^1.0.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:~1.2.0": "@noble/curves@npm:1.2.0, @noble/curves@npm:^1.0.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:~1.2.0":
version: 1.2.0 version: 1.2.0
resolution: "@noble/curves@npm:1.2.0" resolution: "@noble/curves@npm:1.2.0"
@ -2573,15 +2582,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/curves@npm:~1.1.0":
version: 1.1.0
resolution: "@noble/curves@npm:1.1.0"
dependencies:
"@noble/hashes": 1.3.1
checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5
languageName: node
linkType: hard
"@noble/hashes@npm:1.3.1": "@noble/hashes@npm:1.3.1":
version: 1.3.1 version: 1.3.1
resolution: "@noble/hashes@npm:1.3.1" resolution: "@noble/hashes@npm:1.3.1"
@ -2596,7 +2596,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/hashes@npm:~1.3.1": "@noble/hashes@npm:^1.3.1, @noble/hashes@npm:~1.3.1":
version: 1.3.3 version: 1.3.3
resolution: "@noble/hashes@npm:1.3.3" resolution: "@noble/hashes@npm:1.3.3"
checksum: 8a6496d1c0c64797339bc694ad06cdfaa0f9e56cd0c3f68ae3666cfb153a791a55deb0af9c653c7ed2db64d537aa3e3054629740d2f2338bb1dcb7ab60cd205b checksum: 8a6496d1c0c64797339bc694ad06cdfaa0f9e56cd0c3f68ae3666cfb153a791a55deb0af9c653c7ed2db64d537aa3e3054629740d2f2338bb1dcb7ab60cd205b
@ -2610,6 +2610,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@noble/secp256k1@npm:^2.0.0":
version: 2.0.0
resolution: "@noble/secp256k1@npm:2.0.0"
checksum: 945d48a1142751658e89142c33a53c3d7cf8f0ce7cf43bd36b4dcfc1819bc7dc9c227737aca2c55a5699ff548122e21ca19395eb7682a1cea9d5e5e9cda22812
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5": "@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5 version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5" resolution: "@nodelib/fs.scandir@npm:2.1.5"
@ -2637,6 +2644,57 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@nostr-dev-kit/ndk-cache-dexie@npm:^2.2.1":
version: 2.2.1
resolution: "@nostr-dev-kit/ndk-cache-dexie@npm:2.2.1"
dependencies:
"@nostr-dev-kit/ndk": 2.3.0
debug: ^4.3.4
dexie: ^3.2.4
nostr-tools: ^1.14.0
typescript-lru-cache: ^2.0.0
checksum: 58a992f86dc1b2b03302041fc0a2a4fb30c296613fef1b1d084e223b3658e10dc3f8130b7315b506e0ba67510957267994d98117f4c59c27b313189ce6a5a239
languageName: node
linkType: hard
"@nostr-dev-kit/ndk@npm:2.3.0":
version: 2.3.0
resolution: "@nostr-dev-kit/ndk@npm:2.3.0"
dependencies:
"@noble/hashes": ^1.3.1
"@noble/secp256k1": ^2.0.0
"@scure/base": ^1.1.1
debug: ^4.3.4
light-bolt11-decoder: ^3.0.0
node-fetch: ^3.3.1
nostr-tools: ^1.15.0
tseep: ^1.1.1
typescript-lru-cache: ^2.0.0
utf8-buffer: ^1.0.0
websocket-polyfill: ^0.0.3
checksum: 7c04880a6a5ac3cb2826869ac4a81eeb0465041a7ee4769d8edd8b146ffbdd747ea76892ceff30fc0b050ac89256702c4c1af91c31003807c8bcda03aa89c340
languageName: node
linkType: hard
"@nostr-dev-kit/ndk@npm:^2.3.1":
version: 2.3.1
resolution: "@nostr-dev-kit/ndk@npm:2.3.1"
dependencies:
"@noble/hashes": ^1.3.1
"@noble/secp256k1": ^2.0.0
"@scure/base": ^1.1.1
debug: ^4.3.4
light-bolt11-decoder: ^3.0.0
node-fetch: ^3.3.1
nostr-tools: ^1.15.0
tseep: ^1.1.1
typescript-lru-cache: ^2.0.0
utf8-buffer: ^1.0.0
websocket-polyfill: ^0.0.3
checksum: ce3fa09da2286aa99ba92be2a503d11163d18f3d91aec8e8135fb5b388e49308a32f41946686be816d36e5144ce181b021986999ad9386689a5d2c721c1869a9
languageName: node
linkType: hard
"@npmcli/agent@npm:^2.0.0": "@npmcli/agent@npm:^2.0.0":
version: 2.2.0 version: 2.2.0
resolution: "@npmcli/agent@npm:2.2.0" resolution: "@npmcli/agent@npm:2.2.0"
@ -2928,6 +2986,8 @@ __metadata:
"@lightninglabs/lnc-web": ^0.2.3-alpha "@lightninglabs/lnc-web": ^0.2.3-alpha
"@noble/curves": ^1.0.0 "@noble/curves": ^1.0.0
"@noble/hashes": ^1.2.0 "@noble/hashes": ^1.2.0
"@nostr-dev-kit/ndk": ^2.3.1
"@nostr-dev-kit/ndk-cache-dexie": ^2.2.1
"@scure/base": ^1.1.1 "@scure/base": ^1.1.1
"@scure/bip32": ^1.3.0 "@scure/bip32": ^1.3.0
"@scure/bip39": ^1.1.1 "@scure/bip39": ^1.1.1
@ -2969,6 +3029,7 @@ __metadata:
marked: ^9.1.0 marked: ^9.1.0
marked-footnote: ^1.0.0 marked-footnote: ^1.0.0
match-sorter: ^6.3.1 match-sorter: ^6.3.1
nostr-tools: ^2.1.0
postcss: ^8.4.31 postcss: ^8.4.31
postcss-preset-env: ^9.2.0 postcss-preset-env: ^9.2.0
prettier: 2.8.3 prettier: 2.8.3
@ -4633,6 +4694,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"bufferutil@npm:^4.0.1":
version: 4.0.8
resolution: "bufferutil@npm:4.0.8"
dependencies:
node-gyp: latest
node-gyp-build: ^4.3.0
checksum: 7e9a46f1867dca72fda350966eb468eca77f4d623407b0650913fadf73d5750d883147d6e5e21c56f9d3b0bdc35d5474e80a600b9f31ec781315b4d2469ef087
languageName: node
linkType: hard
"builtin-modules@npm:^3.1.0": "builtin-modules@npm:^3.1.0":
version: 3.3.0 version: 3.3.0
resolution: "builtin-modules@npm:3.3.0" resolution: "builtin-modules@npm:3.3.0"
@ -5257,6 +5328,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"d@npm:1, d@npm:^1.0.1":
version: 1.0.1
resolution: "d@npm:1.0.1"
dependencies:
es5-ext: ^0.10.50
type: ^1.0.1
checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d19
languageName: node
linkType: hard
"data-joint@npm:1": "data-joint@npm:1":
version: 1.3.1 version: 1.3.1
resolution: "data-joint@npm:1.3.1" resolution: "data-joint@npm:1.3.1"
@ -5266,6 +5347,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"data-uri-to-buffer@npm:^4.0.0":
version: 4.0.1
resolution: "data-uri-to-buffer@npm:4.0.1"
checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c
languageName: node
linkType: hard
"data-urls@npm:^3.0.2": "data-urls@npm:^3.0.2":
version: 3.0.2 version: 3.0.2
resolution: "data-urls@npm:3.0.2" resolution: "data-urls@npm:3.0.2"
@ -5289,6 +5377,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"debug@npm:^2.2.0":
version: 2.6.9
resolution: "debug@npm:2.6.9"
dependencies:
ms: 2.0.0
checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6
languageName: node
linkType: hard
"decimal.js-light@npm:^2.4.1": "decimal.js-light@npm:^2.4.1":
version: 2.5.1 version: 2.5.1
resolution: "decimal.js-light@npm:2.5.1" resolution: "decimal.js-light@npm:2.5.1"
@ -5665,6 +5762,38 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.50":
version: 0.10.62
resolution: "es5-ext@npm:0.10.62"
dependencies:
es6-iterator: ^2.0.3
es6-symbol: ^3.1.3
next-tick: ^1.1.0
checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba7983
languageName: node
linkType: hard
"es6-iterator@npm:^2.0.3":
version: 2.0.3
resolution: "es6-iterator@npm:2.0.3"
dependencies:
d: 1
es5-ext: ^0.10.35
es6-symbol: ^3.1.1
checksum: 6e48b1c2d962c21dee604b3d9f0bc3889f11ed5a8b33689155a2065d20e3107e2a69cc63a71bd125aeee3a589182f8bbcb5c8a05b6a8f38fa4205671b6d09697
languageName: node
linkType: hard
"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3":
version: 3.1.3
resolution: "es6-symbol@npm:3.1.3"
dependencies:
d: ^1.0.1
ext: ^1.1.2
checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa70
languageName: node
linkType: hard
"esbuild@npm:^0.19.3": "esbuild@npm:^0.19.3":
version: 0.19.5 version: 0.19.5
resolution: "esbuild@npm:0.19.5" resolution: "esbuild@npm:0.19.5"
@ -6001,6 +6130,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ext@npm:^1.1.2":
version: 1.7.0
resolution: "ext@npm:1.7.0"
dependencies:
type: ^2.7.2
checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c31
languageName: node
linkType: hard
"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3 version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3" resolution: "fast-deep-equal@npm:3.1.3"
@ -6060,6 +6198,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":
version: 3.2.0
resolution: "fetch-blob@npm:3.2.0"
dependencies:
node-domexception: ^1.0.0
web-streams-polyfill: ^3.0.3
checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf
languageName: node
linkType: hard
"fflate@npm:~0.6.10": "fflate@npm:~0.6.10":
version: 0.6.10 version: 0.6.10
resolution: "fflate@npm:0.6.10" resolution: "fflate@npm:0.6.10"
@ -6172,6 +6320,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"formdata-polyfill@npm:^4.0.10":
version: 4.0.10
resolution: "formdata-polyfill@npm:4.0.10"
dependencies:
fetch-blob: ^3.1.2
checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db
languageName: node
linkType: hard
"fraction.js@npm:^4.3.6": "fraction.js@npm:^4.3.6":
version: 4.3.7 version: 4.3.7
resolution: "fraction.js@npm:4.3.7" resolution: "fraction.js@npm:4.3.7"
@ -6975,6 +7132,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"is-typedarray@npm:^1.0.0":
version: 1.0.0
resolution: "is-typedarray@npm:1.0.0"
checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7
languageName: node
linkType: hard
"is-weakref@npm:^1.0.2": "is-weakref@npm:^1.0.2":
version: 1.0.2 version: 1.0.2
resolution: "is-weakref@npm:1.0.2" resolution: "is-weakref@npm:1.0.2"
@ -8271,6 +8435,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"mitata@npm:^0.1.6":
version: 0.1.6
resolution: "mitata@npm:0.1.6"
checksum: fe64e22ae17bfb748a0d71b2ecf1f64da09c633520c819ac409018a49843adfd9817612a152651e5f1fa080f227fc382e0cdbb92a11e2f69f3cc9f843ba7d603
languageName: node
linkType: hard
"mkdirp@npm:^1.0.3": "mkdirp@npm:^1.0.3":
version: 1.0.4 version: 1.0.4
resolution: "mkdirp@npm:1.0.4" resolution: "mkdirp@npm:1.0.4"
@ -8292,6 +8463,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ms@npm:2.0.0":
version: 2.0.0
resolution: "ms@npm:2.0.0"
checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4
languageName: node
linkType: hard
"ms@npm:2.1.2": "ms@npm:2.1.2":
version: 2.1.2 version: 2.1.2
resolution: "ms@npm:2.1.2" resolution: "ms@npm:2.1.2"
@ -8333,6 +8511,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"next-tick@npm:^1.1.0":
version: 1.1.0
resolution: "next-tick@npm:1.1.0"
checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b
languageName: node
linkType: hard
"ngraph.events@npm:^1.0.0, ngraph.events@npm:^1.2.1": "ngraph.events@npm:^1.0.0, ngraph.events@npm:^1.2.1":
version: 1.2.2 version: 1.2.2
resolution: "ngraph.events@npm:1.2.2" resolution: "ngraph.events@npm:1.2.2"
@ -8374,6 +8559,35 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-domexception@npm:^1.0.0":
version: 1.0.0
resolution: "node-domexception@npm:1.0.0"
checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f
languageName: node
linkType: hard
"node-fetch@npm:^3.3.1":
version: 3.3.2
resolution: "node-fetch@npm:3.3.2"
dependencies:
data-uri-to-buffer: ^4.0.0
fetch-blob: ^3.1.4
formdata-polyfill: ^4.0.10
checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92
languageName: node
linkType: hard
"node-gyp-build@npm:^4.3.0":
version: 4.7.1
resolution: "node-gyp-build@npm:4.7.1"
bin:
node-gyp-build: bin.js
node-gyp-build-optional: optional.js
node-gyp-build-test: build-test.js
checksum: 2ef8248021489db03be3e8098977cdc797b80a9b12b77c6dcb89b0dc89b8c62e6a482672ee298f61021740ae7f080fb33154cfec8fb158cec620f57b0fae87c0
languageName: node
linkType: hard
"node-gyp@npm:latest": "node-gyp@npm:latest":
version: 10.0.1 version: 10.0.1
resolution: "node-gyp@npm:10.0.1" resolution: "node-gyp@npm:10.0.1"
@ -8433,6 +8647,25 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nostr-tools@npm:^1.14.0, nostr-tools@npm:^1.15.0":
version: 1.17.0
resolution: "nostr-tools@npm:1.17.0"
dependencies:
"@noble/ciphers": 0.2.0
"@noble/curves": 1.1.0
"@noble/hashes": 1.3.1
"@scure/base": 1.1.1
"@scure/bip32": 1.3.1
"@scure/bip39": 1.2.1
peerDependencies:
typescript: ">=5.0.0"
peerDependenciesMeta:
typescript:
optional: true
checksum: 55cb4f7fd447a653fcc4f073f2cc6bea458e75ff5c40ab31baa2a8aae1e0ef2fabb840c08fa53a8fd5037dba7673c7361bb41fef60be5411525ceaa5ea46a1ca
languageName: node
linkType: hard
"nostr-tools@npm:^2.0.2": "nostr-tools@npm:^2.0.2":
version: 2.0.2 version: 2.0.2
resolution: "nostr-tools@npm:2.0.2" resolution: "nostr-tools@npm:2.0.2"
@ -8453,6 +8686,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nostr-tools@npm:^2.1.0":
version: 2.1.0
resolution: "nostr-tools@npm:2.1.0"
dependencies:
"@noble/ciphers": 0.2.0
"@noble/curves": 1.2.0
"@noble/hashes": 1.3.1
"@scure/base": 1.1.1
"@scure/bip32": 1.3.1
"@scure/bip39": 1.2.1
mitata: ^0.1.6
nostr-wasm: v0.1.0
peerDependencies:
typescript: ">=5.0.0"
peerDependenciesMeta:
typescript:
optional: true
checksum: 04e4bef90944fe83ef320422694fb59e9a3e40ba24af4cf0964a3b7957b6cd653f5524acc06f6f49f4f21168d812af1859aa52ef4ec19184022b2308dd2079bf
languageName: node
linkType: hard
"nostr-wasm@npm:v0.0.3": "nostr-wasm@npm:v0.0.3":
version: 0.0.3 version: 0.0.3
resolution: "nostr-wasm@npm:0.0.3" resolution: "nostr-wasm@npm:0.0.3"
@ -8460,6 +8714,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"nostr-wasm@npm:v0.1.0":
version: 0.1.0
resolution: "nostr-wasm@npm:0.1.0"
checksum: c0b404912d47c98efa69b4838a5bb7b2094c869b1aa2a96359c978c911878e9b37228296ef6432254815c9d15cdeebaa16b6d45106db4f3673bb5a6a00cc669c
languageName: node
linkType: hard
"nostr-webrtc-server@workspace:packages/webrtc-server": "nostr-webrtc-server@workspace:packages/webrtc-server":
version: 0.0.0-use.local version: 0.0.0-use.local
resolution: "nostr-webrtc-server@workspace:packages/webrtc-server" resolution: "nostr-webrtc-server@workspace:packages/webrtc-server"
@ -10866,6 +11127,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tseep@npm:^1.1.1":
version: 1.1.3
resolution: "tseep@npm:1.1.3"
checksum: 648bb443b46043edacfdac700237dcd98d635db3f4188662e9a50fd1e60afee0e9a625c618470acfe905b1785b6c4c46eb73f16a44d47a46807760c0606853f8
languageName: node
linkType: hard
"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": "tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2":
version: 2.6.2 version: 2.6.2
resolution: "tslib@npm:2.6.2" resolution: "tslib@npm:2.6.2"
@ -10873,6 +11141,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"tstl@npm:^2.0.7":
version: 2.5.13
resolution: "tstl@npm:2.5.13"
checksum: 6442cf024066c10be8bd21f8578c3edbcba75b6d27a8965bc7f5dcb745a309753dffedbe28019b2cf5b159dd5f10cd9f64a1102fef4ab82917e0cca88a7e0ce2
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0": "type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0 version: 0.4.0
resolution: "type-check@npm:0.4.0" resolution: "type-check@npm:0.4.0"
@ -10910,6 +11185,20 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"type@npm:^1.0.1":
version: 1.2.0
resolution: "type@npm:1.2.0"
checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee
languageName: node
linkType: hard
"type@npm:^2.7.2":
version: 2.7.2
resolution: "type@npm:2.7.2"
checksum: 0f42379a8adb67fe529add238a3e3d16699d95b42d01adfe7b9a7c5da297f5c1ba93de39265ba30ffeb37dfd0afb3fb66ae09f58d6515da442219c086219f6f4
languageName: node
linkType: hard
"typed-array-buffer@npm:^1.0.0": "typed-array-buffer@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "typed-array-buffer@npm:1.0.0" resolution: "typed-array-buffer@npm:1.0.0"
@ -10957,6 +11246,22 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"typedarray-to-buffer@npm:^3.1.5":
version: 3.1.5
resolution: "typedarray-to-buffer@npm:3.1.5"
dependencies:
is-typedarray: ^1.0.0
checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60
languageName: node
linkType: hard
"typescript-lru-cache@npm:^2.0.0":
version: 2.0.0
resolution: "typescript-lru-cache@npm:2.0.0"
checksum: 50948bb62cfe928f0baf4dcc09634cc2456520c0abf2ad726483039371eb523ee6b9c4f45210704f3c1fb30dc6ae5e5ffb27127a34d626848db9d80bcb3057d1
languageName: node
linkType: hard
"typescript@npm:5, typescript@npm:^5.2.2": "typescript@npm:5, typescript@npm:^5.2.2":
version: 5.2.2 version: 5.2.2
resolution: "typescript@npm:5.2.2" resolution: "typescript@npm:5.2.2"
@ -11177,6 +11482,23 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"utf-8-validate@npm:^5.0.2":
version: 5.0.10
resolution: "utf-8-validate@npm:5.0.10"
dependencies:
node-gyp: latest
node-gyp-build: ^4.3.0
checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba6
languageName: node
linkType: hard
"utf8-buffer@npm:^1.0.0":
version: 1.0.0
resolution: "utf8-buffer@npm:1.0.0"
checksum: 3107f643d03fef041f8b92b9f20714a1c7f3305ef2e0bf79d6b92bcc0660e8c10eaac113a561b40bf7f8b154ccdf835fabf41743ffd34911fcf8338e3378cb9b
languageName: node
linkType: hard
"util-deprecate@npm:^1.0.2": "util-deprecate@npm:^1.0.2":
version: 1.0.2 version: 1.0.2
resolution: "util-deprecate@npm:1.0.2" resolution: "util-deprecate@npm:1.0.2"
@ -11398,6 +11720,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"web-streams-polyfill@npm:^3.0.3":
version: 3.2.1
resolution: "web-streams-polyfill@npm:3.2.1"
checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02
languageName: node
linkType: hard
"webcrypto-core@npm:^1.7.7": "webcrypto-core@npm:^1.7.7":
version: 1.7.7 version: 1.7.7
resolution: "webcrypto-core@npm:1.7.7" resolution: "webcrypto-core@npm:1.7.7"
@ -11425,6 +11754,30 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"websocket-polyfill@npm:^0.0.3":
version: 0.0.3
resolution: "websocket-polyfill@npm:0.0.3"
dependencies:
tstl: ^2.0.7
websocket: ^1.0.28
checksum: e4f2d532717f007eb69c424d9fa0e7296b56d19d6b7a753722523b9f3be3f7d0d70d12840392b70ad711c8f1eb508e40beb62abf64e8fc48992a27157ba2c45e
languageName: node
linkType: hard
"websocket@npm:^1.0.28":
version: 1.0.34
resolution: "websocket@npm:1.0.34"
dependencies:
bufferutil: ^4.0.1
debug: ^2.2.0
es5-ext: ^0.10.50
typedarray-to-buffer: ^3.1.5
utf-8-validate: ^5.0.2
yaeti: ^0.0.6
checksum: 8a0ce6d79cc1334bb6ea0d607f0092f3d32700b4dd19e4d5540f2a85f3b50e1f8110da0e4716737056584dde70bbebcb40bbd94bbb437d7468c71abfbfa077d8
languageName: node
linkType: hard
"whatwg-encoding@npm:^2.0.0": "whatwg-encoding@npm:^2.0.0":
version: 2.0.0 version: 2.0.0
resolution: "whatwg-encoding@npm:2.0.0" resolution: "whatwg-encoding@npm:2.0.0"
@ -11834,6 +12187,13 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"yaeti@npm:^0.0.6":
version: 0.0.6
resolution: "yaeti@npm:0.0.6"
checksum: 6db12c152f7c363b80071086a3ebf5032e03332604eeda988872be50d6c8469e1f13316175544fa320f72edad696c2d83843ad0ff370659045c1a68bcecfcfea
languageName: node
linkType: hard
"yallist@npm:^3.0.2": "yallist@npm:^3.0.2":
version: 3.1.1 version: 3.1.1
resolution: "yallist@npm:3.1.1" resolution: "yallist@npm:3.1.1"