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)