diff --git a/docker-compose.yaml b/docker-compose.yaml index c4c8f15..9864e57 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -7,7 +7,7 @@ services: context: . dockerfile: Dockerfile ports: - - 3335:3334 + - 3334:3334 volumes: - ./whitelist.json:/app/whitelist.json - ./khatru-badgern-db:/app/khatru-badgern-db diff --git a/ui/index.html b/ui/index.html index 9466e5c..c3cfd70 100644 --- a/ui/index.html +++ b/ui/index.html @@ -5,7 +5,7 @@ - + {{.Relayname}} | {{.Pagetitle}} diff --git a/ui/package.json b/ui/package.json index 631841c..b1378f1 100644 --- a/ui/package.json +++ b/ui/package.json @@ -9,12 +9,10 @@ "preview": "vite preview" }, "devDependencies": { - "@nostr-dev-kit/ndk": "^1.3.1", - "nostr-tools": "^1.16.0", "typescript": "^5.0.2", "vite": "^4.4.5" }, "dependencies": { - "@nostr-dev-kit/ndk-cache-dexie": "^1.3.2" + "nostr-tools": "^1.16.0" } } diff --git a/ui/src/actions.ts b/ui/src/actions.ts new file mode 100644 index 0000000..9572418 --- /dev/null +++ b/ui/src/actions.ts @@ -0,0 +1,65 @@ +import { nip19 } from 'nostr-tools'; +import { relay } from './main'; + +export function loadActions() { + + // Handle removefromrelay buttons + document.querySelectorAll(".removefromrelay").forEach((btn) => { + btn.addEventListener('click', () => { + const arg = btn.getAttribute('data-actionarg'); + if (arg) { + const jsonArg = JSON.parse(arg); + if (jsonArg) removeFromRelay(jsonArg); + }; + }); + }); + + //handle inviteuser buttons + document.querySelectorAll(".inviteuser").forEach((btn) => { + btn.addEventListener('click', () => { + inviteUser(); + }); + }); + + async function inviteUser() { + + var input = (document.getElementById('inviteuser-input')).value; + let p = input; + if (input.startsWith("npub")) { + let h = nip19.decode(input).data; + if (typeof h == 'string') { + p = h; + }; + }; + + let event = { + kind: 20201, + created_at: Math.floor(Date.now() / 1000), + content: '', + tags: [['p', p]], + }; + + // @ts-ignore for window.nostr + const signedEvent = await window.nostr.signEvent(event); + + await relay.publish(signedEvent).then(() => { + setTimeout(() => window.location.href = "", 300); + }); + }; + + async function removeFromRelay(tags: string[][]) { + let event = { + kind: 20202, + created_at: Math.floor(Date.now() / 1000), + content: '', + tags, + }; + + // @ts-ignore for window.nostr + const signedEvent = await window.nostr.signEvent(event); + + await relay.publish(signedEvent).then(() => { + setTimeout(() => window.location.href = "", 300); + }); + }; +}; \ No newline at end of file diff --git a/ui/src/lib/actions.ts b/ui/src/lib/actions.ts deleted file mode 100644 index 78a8b17..0000000 --- a/ui/src/lib/actions.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { NDKEvent, NDKRelay, NDKRelaySet } from '@nostr-dev-kit/ndk'; -import { nip19 } from 'nostr-tools'; -import { ndk, relayUrl } from './main'; - -// Handle Buttons -export function loadActions() { - document.querySelectorAll(".removefromrelay").forEach((btn) => { - btn.addEventListener('click', () => { - const arg = btn.getAttribute('data-actionarg'); - if (arg) { - const jsonArg = JSON.parse(arg); - if (jsonArg) { - removeFromRelay(jsonArg) - } - }; - }) - }) - document.querySelectorAll(".inviteuser").forEach((btn) => { - btn.addEventListener('click', () => { - inviteUser(); - }) - }) - - async function inviteUser() { - // only publish to the relay in question, dont know why this needs so much code - let specificRelay = new Set - specificRelay.add(new NDKRelay(relayUrl)) - const relaySet = new NDKRelaySet(specificRelay, ndk); - relaySet.relays.forEach(async (relay) => { - await relay.connect().catch((err) => { - console.log("RELAY CONNECT ERROR"); - console.error(err); - }); - relay.on("connect", () => { - console.log(relay.url, "connected"); - }); - }); - - var input = (document.getElementById('inviteuser-input')).value; - let p = input; - if (input.startsWith("npub")) { - let h = nip19.decode(input).data; - if (typeof h == 'string') { - p = h; - } - } - const event = new NDKEvent(ndk) - event.kind = 20201; - event.tags = [['p', p]]; - event.content = ""; - const relays = await event.publish(relaySet); - relays.forEach(() => { - setTimeout(() => { - window.location.href = "" - }, 128) - }); - } - - async function removeFromRelay(tags: string[][]) { - // only publish to the relay in question, dont know why this needs so much code - let specificRelay = new Set - specificRelay.add(new NDKRelay(relayUrl)) - const relaySet = new NDKRelaySet(specificRelay, ndk); - relaySet.relays.forEach(async (relay) => { - await relay.connect().catch((err) => { - console.log("RELAY CONNECT ERROR"); - console.error(err); - }); - relay.on("connect", () => { - console.log(relay.url, "connected"); - }); - }); - - const event = new NDKEvent(ndk) - event.kind = 20202; - event.tags = tags; - event.content = ""; - const relays = await event.publish(); - relays.forEach(() => { - setTimeout(() => { - window.location.href = "" - }, 128) - }); - } -} \ No newline at end of file diff --git a/ui/src/lib/main.ts b/ui/src/lib/main.ts deleted file mode 100644 index bfc777e..0000000 --- a/ui/src/lib/main.ts +++ /dev/null @@ -1,41 +0,0 @@ -import NDK, { NDKNip07Signer } from '@nostr-dev-kit/ndk'; -import '../style.css'; -import { loadUsernames } from './user.js'; -import { loadActions } from './actions.js'; -// import NDKCacheAdapterDexie from "@nostr-dev-kit/ndk-cache-dexie"; - -export let ndk: NDK; -export let relayUrl: string; - -async function load() { - // get relay websocket url - var loc = window.location; - if (loc.protocol === "https:") { - relayUrl = "wss:"; - } else { - relayUrl = "ws:"; - } - relayUrl += "//" + loc.host; - - // init NDK - // const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'khatru-invite-ndk-cache' }) - const nip07signer = new NDKNip07Signer() - ndk = new NDK({ - explicitRelayUrls: [ - relayUrl, - "wss://nos.lol", - "wss://nostr-pub.wellorder.net", - ], signer: nip07signer - }); - await ndk.connect(); - - loadActions(); - loadUsernames(); -} - -// load -load(); - - - - diff --git a/ui/src/lib/user.ts b/ui/src/lib/user.ts deleted file mode 100644 index d634913..0000000 --- a/ui/src/lib/user.ts +++ /dev/null @@ -1,19 +0,0 @@ -// import { ndk } from "./main.js"; - -export async function loadUsernames() { - /* - try to get username from other realy for each user - that isn't loaded by the server - */ - - // let b = document.querySelectorAll(".user"); - // b.forEach(async (e) => { - // if (e.innerHTML.startsWith("npub1")) { - // let npub1 = e.innerHTML; - // let u = ndk.getUser({ npub: npub1 }); - // let p = await u.fetchProfile(); - // if (p?.name) e.innerHTML = p.name; - // if (p?.displayName) e.innerHTML = p.displayName; - // } - // }); -} \ No newline at end of file diff --git a/ui/src/main.ts b/ui/src/main.ts new file mode 100644 index 0000000..c8cf400 --- /dev/null +++ b/ui/src/main.ts @@ -0,0 +1,34 @@ +import './style.css'; +import { Relay, relayInit } from 'nostr-tools'; +import { loadActions } from './actions'; + +export let relayUrl = ''; +export let relay: Relay; + +window.onload = function () { + setTimeout(() => { + // get relay websocket url + relayUrl = ''; + var loc = window.location; + if (loc.protocol === "https:") { + relayUrl = "wss:"; + } else { + relayUrl = "ws:"; + } + relayUrl += "//" + loc.host; + + // init relay connection + relay = relayInit(relayUrl); + relay.on('connect', () => { + console.log(`connected to ${relay.url}`); + }); + relay.on('error', () => { + console.log(`failed to connect to ${relay.url}`); + }); + relay.connect(); + + // + loadActions(); + }, 5); +}; + diff --git a/ui/tsconfig.json b/ui/tsconfig.json index 827a1d2..75abdef 100644 --- a/ui/tsconfig.json +++ b/ui/tsconfig.json @@ -6,26 +6,15 @@ "lib": ["ES2020", "DOM", "DOM.Iterable"], "skipLibCheck": true, - // added - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "moduleResolution": "node", + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, - - /* Bundler mode */ - // "moduleResolution": "Bundler", - // "allowImportingTsExtensions": true, "noEmit": true, - "allowJs": true, - "paths": { - "lib/*": ["./src/lib/*"], - }, - /* Linting */ - "strict": false, + "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true diff --git a/ui/yarn.lock b/ui/yarn.lock index c452891..e6c6538 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -129,67 +129,17 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== -"@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/secp256k1@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-2.0.0.tgz#c214269d45e0233ad6a8ae5104655453636e253d" - integrity sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw== - -"@nostr-dev-kit/ndk-cache-dexie@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk-cache-dexie/-/ndk-cache-dexie-1.3.2.tgz#5a1a6ac00b46d086656568d4db241a9202f79894" - integrity sha512-sC5IGLuKymRxoJHc/BiHOxuRukHgXutHCspQxeuM0YkfijT3raWRNvrClFoGhgWMV/1BTVgQ8aom8d/FzDeglw== - dependencies: - "@nostr-dev-kit/ndk" "1.3.2" - debug "^4.3.4" - dexie "^3.2.4" - nostr-tools "^1.14.0" - typescript-lru-cache "^2.0.0" - -"@nostr-dev-kit/ndk@1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk/-/ndk-1.3.2.tgz#22aab1c3706a142e4f6a7b691ee26419d7af85f2" - integrity sha512-8uXYGQWiYJE4nbd+dSOuFwLR55mRSkhCaxwBLhM7TBakz/bj0AcvhISgD3NxwVzPH/xLns0tyb17K3xoxODURQ== - dependencies: - "@noble/hashes" "^1.3.1" - "@noble/secp256k1" "^2.0.0" - "@scure/base" "^1.1.1" - debug "^4.3.4" - eventemitter3 "^5.0.1" - light-bolt11-decoder "^3.0.0" - node-fetch "^3.3.1" - nostr-tools "^1.15.0" - typescript-lru-cache "^2.0.0" - utf8-buffer "^1.0.0" - websocket-polyfill "^0.0.3" - -"@nostr-dev-kit/ndk@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk/-/ndk-1.3.1.tgz#65869098ba2145ebcbdac8c2a0a1c92808d74715" - integrity sha512-BVqhL2qU0kFL0YHTXLBbzPSvmGbY/ivL9M4k7ZmqYHHCd3Vwd9eMAgxq4kkCsHc4KoSeOB3NCLFKdjLdUB+5Pg== - dependencies: - "@noble/hashes" "^1.3.1" - "@noble/secp256k1" "^2.0.0" - "@scure/base" "^1.1.1" - debug "^4.3.4" - eventemitter3 "^5.0.1" - light-bolt11-decoder "^3.0.0" - node-fetch "^3.3.1" - nostr-tools "^1.15.0" - typescript-lru-cache "^2.0.0" - utf8-buffer "^1.0.0" - websocket-polyfill "^0.0.3" - "@scure/base@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== -"@scure/base@^1.1.1", "@scure/base@~1.1.0": +"@scure/base@~1.1.0": version "1.1.3" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== @@ -211,71 +161,6 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" -bufferutil@^4.0.1: - version "4.0.7" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" - integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== - dependencies: - node-gyp-build "^4.3.0" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== - -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -dexie@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/dexie/-/dexie-3.2.4.tgz#b22a9729be1102acb2eee16102ea6e2bc76454cf" - integrity sha512-VKoTQRSv7+RnffpOJ3Dh6ozknBqzWw/F3iqMdsZg958R0AS8AnY9x9d1lbwENr0gzeGJHXKcGhAMRaqys6SxqA== - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - esbuild@^0.18.10: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" @@ -304,90 +189,17 @@ esbuild@^0.18.10: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -light-bolt11-decoder@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/light-bolt11-decoder/-/light-bolt11-decoder-3.0.0.tgz#f644576120426c9ef65621bde254f11016055044" - integrity sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ== - dependencies: - "@scure/base" "1.1.1" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -node-gyp-build@^4.3.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" - integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== - -nostr-tools@^1.14.0, nostr-tools@^1.15.0, nostr-tools@^1.16.0: +nostr-tools@^1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-1.16.0.tgz#5867f1d8bd055a5a3b27aadb199457dceb244314" integrity sha512-sx/aOl0gmkeHVoIVbyOhEQhzF88NsrBXMC8bsjhPASqA6oZ8uSOAyEGgRLMfC3SKgzQD5Gr6KvDoAahaD6xKcg== @@ -425,87 +237,18 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -tstl@^2.0.7: - version "2.5.13" - resolved "https://registry.yarnpkg.com/tstl/-/tstl-2.5.13.tgz#a5a5d27b79a12767e46a08525b3e045c5cdb1180" - integrity sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g== - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript-lru-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/typescript-lru-cache/-/typescript-lru-cache-2.0.0.tgz#d4ad0f071ab51987b088a57c3c502d7dd62dee07" - integrity sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA== - typescript@^5.0.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -utf8-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utf8-buffer/-/utf8-buffer-1.0.0.tgz#457e7d848d4d9cd873772b710d150565f6e543d9" - integrity sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg== - vite@^4.4.5: - version "4.4.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" - integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== + version "4.4.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.11.tgz#babdb055b08c69cfc4c468072a2e6c9ca62102b0" + integrity sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A== dependencies: esbuild "^0.18.10" postcss "^8.4.27" rollup "^3.27.1" optionalDependencies: fsevents "~2.3.2" - -web-streams-polyfill@^3.0.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - -websocket-polyfill@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz#7321ada0f5f17516290ba1cb587ac111b74ce6a5" - integrity sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg== - dependencies: - tstl "^2.0.7" - websocket "^1.0.28" - -websocket@^1.0.28: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - 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" - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== diff --git a/whitelist.go b/whitelist.go index 29a8cdb..b32c84f 100644 --- a/whitelist.go +++ b/whitelist.go @@ -23,7 +23,10 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg return true, "You are not invited to this relay" } - // 20201 = user invites new user + /* + kind 20201 + invited/whitelisted user invites new user + */ if evt.Kind == 20201 { pTags := evt.Tags.GetAll([]string{"p"}) for _, tag := range pTags { @@ -35,9 +38,11 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg } } - // 20202 - // p tag = user removes user they invited or admin removes user - // e tag = admin removes event + /* + kind 20202 + p tag = user removes user they invited OR admin removes user + e tag = admin removes event + */ if evt.Kind == 20202 { pTags := evt.Tags.GetAll([]string{"p"}) for _, tag := range pTags { @@ -62,7 +67,7 @@ func whitelistRejecter(ctx context.Context, evt *nostr.Event) (reject bool, msg events, _ := db.QueryEvents(ctx, filter) for ev := range events { - log.Println("deleting evemt", ev.ID) + log.Println("deleting event", ev.ID) err := db.DeleteEvent(ctx, ev) if err != nil { log.Println("error while deleting event", err)