spa: naddr/habla-link-helper (tdd)
This commit is contained in:
parent
36dd76a88f
commit
c539c4fee3
|
|
@ -0,0 +1,22 @@
|
||||||
|
import { nip19 } from 'nostr-tools';
|
||||||
|
import { HABLA_BASE } from './config';
|
||||||
|
|
||||||
|
export interface NaddrArgs {
|
||||||
|
pubkey: string;
|
||||||
|
kind: number;
|
||||||
|
identifier: string;
|
||||||
|
relays?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function buildNaddr(args: NaddrArgs): string {
|
||||||
|
return nip19.naddrEncode({
|
||||||
|
pubkey: args.pubkey,
|
||||||
|
kind: args.kind,
|
||||||
|
identifier: args.identifier,
|
||||||
|
relays: args.relays ?? [],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function buildHablaLink(args: NaddrArgs): string {
|
||||||
|
return `${HABLA_BASE}${buildNaddr(args)}`;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { buildHablaLink } from '$lib/nostr/naddr';
|
||||||
|
|
||||||
|
describe('buildHablaLink', () => {
|
||||||
|
it('erzeugt einen habla.news/a/-Link mit naddr1-Bech32', () => {
|
||||||
|
const link = buildHablaLink({
|
||||||
|
pubkey: '4fa5d1c413e2b45e10d40bf3562ab701a5331206e359c90baae0e99bfd6c6e41',
|
||||||
|
kind: 30023,
|
||||||
|
identifier: 'dezentrale-oep-oer',
|
||||||
|
relays: ['wss://relay.damus.io'],
|
||||||
|
});
|
||||||
|
expect(link).toMatch(/^https:\/\/habla\.news\/a\/naddr1[a-z0-9]+$/);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('ist deterministisch für gleiche Inputs', () => {
|
||||||
|
const args = {
|
||||||
|
pubkey: '4fa5d1c413e2b45e10d40bf3562ab701a5331206e359c90baae0e99bfd6c6e41',
|
||||||
|
kind: 30023,
|
||||||
|
identifier: 'foo',
|
||||||
|
relays: ['wss://relay.damus.io'],
|
||||||
|
};
|
||||||
|
expect(buildHablaLink(args)).toBe(buildHablaLink(args));
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue