Add a few utilities

This commit is contained in:
Jon Staab
2024-09-19 09:13:58 -07:00
parent 9e52d89ba8
commit 8230d7a9f6
11 changed files with 33 additions and 19 deletions
+8 -8
View File
@@ -3287,14 +3287,14 @@
},
"packages/app": {
"name": "@welshman/app",
"version": "0.0.6",
"version": "0.0.7",
"license": "MIT",
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/net": "0.0.22",
"@welshman/signer": "0.0.5",
"@welshman/store": "0.0.7",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"fuse.js": "^7.0.0",
"idb": "^8.0.0",
"svelte": "^4.2.18",
@@ -3343,7 +3343,7 @@
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/net": "0.0.22",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"nostr-tools": "^2.7.2"
},
"devDependencies": {
@@ -3381,7 +3381,7 @@
"license": "MIT",
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31"
"@welshman/util": "0.0.32"
},
"devDependencies": {
"gts": "^5.0.1",
@@ -3419,7 +3419,7 @@
"license": "MIT",
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"isomorphic-ws": "^5.0.0",
"ws": "^8.16.0"
},
@@ -3436,7 +3436,7 @@
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/net": "0.0.22",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"nostr-tools": "^2.7.2"
},
"devDependencies": {
@@ -3451,7 +3451,7 @@
"license": "MIT",
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"svelte": "^4.2.18"
},
"devDependencies": {
@@ -3462,7 +3462,7 @@
},
"packages/util": {
"name": "@welshman/util",
"version": "0.0.31",
"version": "0.0.32",
"license": "MIT",
"dependencies": {
"@welshman/lib": "0.0.17",
+1 -1
View File
@@ -35,7 +35,7 @@
"@welshman/net": "0.0.22",
"@welshman/signer": "0.0.5",
"@welshman/store": "0.0.7",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"fuse.js": "^7.0.0",
"idb": "^8.0.0",
"svelte": "^4.2.18",
+1 -1
View File
@@ -33,7 +33,7 @@
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/net": "0.0.22",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"nostr-tools": "^2.7.2"
}
}
+1 -1
View File
@@ -32,6 +32,6 @@
},
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31"
"@welshman/util": "0.0.32"
}
}
+1 -1
View File
@@ -32,7 +32,7 @@
},
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"isomorphic-ws": "^5.0.0",
"ws": "^8.16.0"
}
+1 -1
View File
@@ -33,7 +33,7 @@
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/net": "0.0.22",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"nostr-tools": "^2.7.2"
}
}
+1 -1
View File
@@ -32,7 +32,7 @@
},
"dependencies": {
"@welshman/lib": "0.0.17",
"@welshman/util": "0.0.31",
"@welshman/util": "0.0.32",
"svelte": "^4.2.18"
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/util",
"version": "0.0.31",
"version": "0.0.32",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of nostr-related utilities.",
+8 -3
View File
@@ -1,4 +1,4 @@
import {parseJson, nth, nthEq} from "@welshman/lib"
import {parseJson, ensurePlural, nth} from "@welshman/lib"
import {Address} from "./Address"
import {isShareableRelayUrl} from "./Relay"
import {Encryptable, DecryptedEvent} from "./Encryptable"
@@ -45,5 +45,10 @@ export const createList = ({kind, publicTags = [], privateTags = []}: List) =>
export const editList = ({kind, publicTags = [], privateTags = []}: PublishedList) =>
new Encryptable({kind, tags: publicTags}, {content: JSON.stringify(privateTags)})
export const getListValues = (tagName: string, list: List | undefined) =>
[...list?.publicTags || [], ...list?.privateTags || []].filter(nthEq(0, tagName)).map(nth(1))
export const getListValues = (tagName: string | string[], list: List | undefined) => {
const tagNames = ensurePlural(tagName)
const allTags = [...list?.publicTags || [], ...list?.privateTags || []]
const filteredTags = allTags.filter(t => tagNames.includes(t[0])).map(nth(1))
return filteredTags
}
+6
View File
@@ -140,6 +140,12 @@ export class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
}
publish = (event: E, {shouldNotify = true} = {}): boolean => {
if (!event?.id) {
console.warn("Attempted to publish invalid event to repository", event)
return false
}
// If we've already seen this event, or it's been deleted, we're done
if (this.eventsById.get(event.id) || this.isDeleted(event)) {
return false
+4 -1
View File
@@ -1,5 +1,5 @@
import type {OmitStatics} from '@welshman/lib'
import {Fluent, nth, nthEq, ensurePlural} from '@welshman/lib'
import {Fluent, mapVals, nth, nthEq, ensurePlural} from '@welshman/lib'
import {isRelayUrl, normalizeRelayUrl} from './Relay'
import {Address, isContextAddress} from './Address'
import {GROUP, COMMUNITY} from './Kinds'
@@ -249,3 +249,6 @@ export const getAncestorTags = (tags: string[][]) => {
return {roots, replies, mentions}
}
export const getAncestorTagValues = (tags: string[][]) =>
mapVals(tags => tags.map(nth(1)), getAncestorTags(tags))