diff --git a/nip27.test.js b/nip27.test.js index 2946722..24c63ac 100644 --- a/nip27.test.js +++ b/nip27.test.js @@ -6,7 +6,7 @@ test('matchAll', () => { 'Hello nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6!\n\nnostr:note1gmtnz6q2m55epmlpe3semjdcq987av3jvx4emmjsa8g3s9x7tg4sclreky' ) - expect(result).toEqual([ + expect([...result]).toEqual([ { uri: 'nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6', value: 'npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6', diff --git a/nip27.ts b/nip27.ts index 00bcad4..7fa5be8 100644 --- a/nip27.ts +++ b/nip27.ts @@ -14,20 +14,20 @@ export interface NostrURIMatch extends nip21.NostrURI { } /** Find and decode all NIP-21 URIs. */ -export function matchAll(content: string): NostrURIMatch[] { +export function * matchAll(content: string): Iterable { const matches = content.matchAll(regex()) - return [...matches].map(match => { + for (const match of matches) { const [uri, value] = match - return { + yield { uri: uri as `nostr:${string}`, value, decoded: nip19.decode(value), start: match.index!, end: match.index! + uri.length } - }) + } } /**