Merge branch 'verify-worker' into 'main'
Add verifySignatureWorker See merge request soapbox-pub/ditto!65
This commit is contained in:
commit
caf671983b
|
@ -12,6 +12,7 @@ import { Sub } from '@/subs.ts';
|
||||||
import { getTagSet } from '@/tags.ts';
|
import { getTagSet } from '@/tags.ts';
|
||||||
import { trends } from '@/trends.ts';
|
import { trends } from '@/trends.ts';
|
||||||
import { eventAge, isRelay, nostrDate, Time } from '@/utils.ts';
|
import { eventAge, isRelay, nostrDate, Time } from '@/utils.ts';
|
||||||
|
import { verifySignatureWorker } from '@/workers/verify.ts';
|
||||||
|
|
||||||
import type { EventData } from '@/types.ts';
|
import type { EventData } from '@/types.ts';
|
||||||
|
|
||||||
|
@ -20,6 +21,7 @@ import type { EventData } from '@/types.ts';
|
||||||
* It is idempotent, so it can be called multiple times for the same event.
|
* It is idempotent, so it can be called multiple times for the same event.
|
||||||
*/
|
*/
|
||||||
async function handleEvent(event: Event): Promise<void> {
|
async function handleEvent(event: Event): Promise<void> {
|
||||||
|
if (!(await verifySignatureWorker(event))) return;
|
||||||
if (encounterEvent(event)) return;
|
if (encounterEvent(event)) return;
|
||||||
const data = await getEventData(event);
|
const data = await getEventData(event);
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { getActiveRelays } from '@/db/relays.ts';
|
||||||
import { type Event, RelayPool } from '@/deps.ts';
|
import { type Event, RelayPool } from '@/deps.ts';
|
||||||
|
|
||||||
const allRelays = await getActiveRelays();
|
const allRelays = await getActiveRelays();
|
||||||
const pool = new RelayPool(allRelays);
|
const pool = new RelayPool(allRelays, { skipVerification: true });
|
||||||
|
|
||||||
/** Publish an event to the given relays, or the entire pool. */
|
/** Publish an event to the given relays, or the entire pool. */
|
||||||
function publish(event: Event, relays: string[] = allRelays) {
|
function publish(event: Event, relays: string[] = allRelays) {
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
import { Comlink, type Event } from '@/deps.ts';
|
||||||
|
|
||||||
|
import type { VerifyWorker } from './verify.worker.ts';
|
||||||
|
|
||||||
|
const worker = Comlink.wrap<typeof VerifyWorker>(
|
||||||
|
new Worker(new URL('./verify.worker.ts', import.meta.url), { type: 'module' }),
|
||||||
|
);
|
||||||
|
|
||||||
|
function verifySignatureWorker<K extends number>(event: Event<K>): Promise<boolean> {
|
||||||
|
return worker.verifySignature(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
export { verifySignatureWorker };
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { Comlink, type Event, type VerifiedEvent, verifySignature } from '@/deps.ts';
|
||||||
|
|
||||||
|
export const VerifyWorker = {
|
||||||
|
verifySignature<K extends number>(event: Event<K>): event is VerifiedEvent<K> {
|
||||||
|
return verifySignature(event);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
Comlink.expose(VerifyWorker);
|
Loading…
Reference in New Issue