mirror of
https://github.com/irislib/iris-messenger.git
synced 2024-09-16 16:23:28 +00:00
snort/system
This commit is contained in:
parent
3ca21fb24f
commit
5104448326
@ -17,6 +17,7 @@
|
||||
"@fontsource/lato": "^5.0.11",
|
||||
"@heroicons/react": "^2.0.18",
|
||||
"@noble/hashes": "1.3.1",
|
||||
"@snort/system": "^1.0.21",
|
||||
"@types/lodash": "^4.14.197",
|
||||
"bech32": "^2.0.0",
|
||||
"classnames": "^2.3.2",
|
||||
|
@ -5,6 +5,7 @@ import EventDB from '@/nostr/EventDB';
|
||||
import getRelayPool from '@/nostr/relayPool';
|
||||
|
||||
import Events from '../nostr/Events';
|
||||
import Snort from '../nostr/SnortSystem';
|
||||
import localState from '../state/LocalState.ts';
|
||||
|
||||
import IndexedDB from './IndexedDB';
|
||||
@ -43,8 +44,6 @@ const PubSub = {
|
||||
subscribe(
|
||||
filter: Filter,
|
||||
callback?: (event: Event) => void,
|
||||
sinceLastOpened = false,
|
||||
mergeSubscriptions = true,
|
||||
): Unsubscribe {
|
||||
let currentSubscriptionId;
|
||||
if (callback) {
|
||||
@ -67,10 +66,12 @@ const PubSub = {
|
||||
});
|
||||
}
|
||||
|
||||
const unsubRelays = this.subscribeRelayPool(filter, sinceLastOpened, mergeSubscriptions);
|
||||
Snort.subscribe(filter, (event) => {
|
||||
console.log('snort returned', event);
|
||||
Events.handle(event);
|
||||
});
|
||||
|
||||
return () => {
|
||||
unsubRelays?.();
|
||||
if (currentSubscriptionId) {
|
||||
this.subscriptions.delete(currentSubscriptionId);
|
||||
}
|
||||
|
52
src/js/nostr/SnortSystem.ts
Normal file
52
src/js/nostr/SnortSystem.ts
Normal file
@ -0,0 +1,52 @@
|
||||
import {
|
||||
EventPublisher,
|
||||
NoopStore,
|
||||
NostrSystem,
|
||||
RequestBuilder,
|
||||
UserRelaysCache,
|
||||
} from '@snort/system';
|
||||
import { Event, Filter } from 'nostr-tools';
|
||||
|
||||
// Provided in-memory / indexedDb cache for relays
|
||||
// You can also implement your own with "RelayCache" interface
|
||||
const RelaysCache = new UserRelaysCache();
|
||||
|
||||
// example auth handler using NIP-07
|
||||
const AuthHandler = async (challenge: string, relay: string) => {
|
||||
const pub = await EventPublisher.nip7();
|
||||
if (pub) {
|
||||
return await pub.nip42Auth(challenge, relay);
|
||||
}
|
||||
};
|
||||
|
||||
// Singleton instance to store all connections and access query fetching system
|
||||
const System = new NostrSystem({
|
||||
relayCache: RelaysCache,
|
||||
authHandler: AuthHandler, // can be left undefined if you dont care about NIP-42 Auth
|
||||
});
|
||||
|
||||
const connect = System.ConnectToRelay('wss://relay.snort.social', { read: true, write: false });
|
||||
|
||||
const publish = async (event: Event) => {
|
||||
await connect;
|
||||
};
|
||||
|
||||
const subscribe = async (filter: Filter, callback: (event: Event) => void) => {
|
||||
await connect;
|
||||
const rb = new RequestBuilder('no id');
|
||||
|
||||
rb.withBareFilter(filter);
|
||||
|
||||
const q = System.Query<NoopStore>(NoopStore, rb);
|
||||
// basic usage using "onEvent", fired for every event added to the store
|
||||
q.feed.onEvent((events) => {
|
||||
events.forEach((event) => {
|
||||
callback(event);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export default {
|
||||
publish,
|
||||
subscribe,
|
||||
};
|
97
yarn.lock
97
yarn.lock
@ -1255,7 +1255,14 @@
|
||||
dependencies:
|
||||
"@noble/hashes" "1.3.1"
|
||||
|
||||
"@noble/hashes@1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
|
||||
"@noble/curves@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
|
||||
integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
|
||||
dependencies:
|
||||
"@noble/hashes" "1.3.2"
|
||||
|
||||
"@noble/hashes@1.3.1", "@noble/hashes@1.3.2", "@noble/hashes@^1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
|
||||
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
|
||||
@ -1378,7 +1385,7 @@
|
||||
estree-walker "^2.0.1"
|
||||
picomatch "^2.2.2"
|
||||
|
||||
"@scure/base@1.1.1", "@scure/base@~1.1.0":
|
||||
"@scure/base@1.1.1", "@scure/base@^1.1.2", "@scure/base@~1.1.0":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
|
||||
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
|
||||
@ -1405,6 +1412,68 @@
|
||||
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
|
||||
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
|
||||
|
||||
"@snort/shared@^1.0.6":
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@snort/shared/-/shared-1.0.6.tgz#52a40b6c25a5bfcd54a1a150a2a836fa6b37250c"
|
||||
integrity sha512-p4BRIALNTV7truHGaF+rKoLF5OB2QY1EZ+NPO5iccDdLhQxPSloIkrFxk5Le+yuX2AYtNd8Z/HTxViU8reYCXA==
|
||||
dependencies:
|
||||
"@noble/curves" "^1.2.0"
|
||||
"@noble/hashes" "^1.3.2"
|
||||
"@scure/base" "^1.1.2"
|
||||
debug "^4.3.4"
|
||||
dexie "^3.2.4"
|
||||
light-bolt11-decoder "^3.0.0"
|
||||
|
||||
"@snort/system@^1.0.21":
|
||||
version "1.0.21"
|
||||
resolved "https://registry.yarnpkg.com/@snort/system/-/system-1.0.21.tgz#b158bf631101f8af18528c6224c1edc58e51709a"
|
||||
integrity sha512-hXv2ZvHded1Ot7s6MQarC7GQ/jHVT4sSQIHrOTq4vsqlGmT56bx+KP33Rdw6//k+YhyljmAUMYSoYtDl17LjLg==
|
||||
dependencies:
|
||||
"@noble/curves" "^1.2.0"
|
||||
"@noble/hashes" "^1.3.2"
|
||||
"@scure/base" "^1.1.2"
|
||||
"@snort/shared" "^1.0.6"
|
||||
"@stablelib/xchacha20" "^1.0.1"
|
||||
debug "^4.3.4"
|
||||
dexie "^3.2.4"
|
||||
isomorphic-ws "^5.0.0"
|
||||
uuid "^9.0.0"
|
||||
ws "^8.14.0"
|
||||
|
||||
"@stablelib/binary@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f"
|
||||
integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==
|
||||
dependencies:
|
||||
"@stablelib/int" "^1.0.1"
|
||||
|
||||
"@stablelib/chacha@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371"
|
||||
integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==
|
||||
dependencies:
|
||||
"@stablelib/binary" "^1.0.1"
|
||||
"@stablelib/wipe" "^1.0.1"
|
||||
|
||||
"@stablelib/int@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008"
|
||||
integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==
|
||||
|
||||
"@stablelib/wipe@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36"
|
||||
integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==
|
||||
|
||||
"@stablelib/xchacha20@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@stablelib/xchacha20/-/xchacha20-1.0.1.tgz#e98808d1f7d8b20e3ff37c71a3062a2a955d9a8c"
|
||||
integrity sha512-1YkiZnFF4veUwBVhDnDYwo6EHeKzQK4FnLiO7ezCl/zu64uG0bCCAUROJaBkaLH+5BEsO3W7BTXTguMbSLlWSw==
|
||||
dependencies:
|
||||
"@stablelib/binary" "^1.0.1"
|
||||
"@stablelib/chacha" "^1.0.1"
|
||||
"@stablelib/wipe" "^1.0.1"
|
||||
|
||||
"@surma/rollup-plugin-off-main-thread@^2.2.3":
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053"
|
||||
@ -3977,7 +4046,19 @@ nostr-relaypool@^0.6.28:
|
||||
nostr-tools "^1.10.0"
|
||||
safe-stable-stringify "^2.4.2"
|
||||
|
||||
nostr-tools@^1.10.0, nostr-tools@^1.14.2:
|
||||
nostr-tools@^1.10.0:
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-1.15.0.tgz#92e487654d1f6994923176aedf3b27fb617f7a78"
|
||||
integrity sha512-Dh7LVAUqaSiSs61QddsWluLVWpMwyMGaVlbhDYEy03ZwnBBzm10pz+mQZSdVV88/B3a5843gHZ4dIBUeS5upoA==
|
||||
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"
|
||||
|
||||
nostr-tools@^1.14.2:
|
||||
version "1.14.2"
|
||||
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-1.14.2.tgz#161c9401467725e87c07fcf1c9924d31b12fd45c"
|
||||
integrity sha512-QEe8+tMDW0632eNDcQ+EG1edmsCXLV4WPiWLDcdT3uoE+GM15pVcy18sKwbN7SmgO4GKFEqQ49k45eANC6++SQ==
|
||||
@ -5229,6 +5310,11 @@ util-deprecate@^1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
uuid@^9.0.0:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
|
||||
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
|
||||
|
||||
v8-to-istanbul@^9.1.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265"
|
||||
@ -5590,6 +5676,11 @@ ws@^8.13.0:
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
|
||||
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
|
||||
|
||||
ws@^8.14.0:
|
||||
version "8.14.1"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0"
|
||||
integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==
|
||||
|
||||
xml-name-validator@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
|
||||
|
Loading…
Reference in New Issue
Block a user