Make sorting/limit more resilient in repository

This commit is contained in:
Jon Staab
2025-10-28 13:23:25 -07:00
parent 8b8e3a6a51
commit 3132b8c59a
15 changed files with 16 additions and 24 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@welshman",
"private": true,
"version": "0.6.2",
"version": "0.6.3",
"workspaces": [
"packages/*"
],
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/app",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of svelte stores for use in building nostr client applications.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/content",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of utilities for parsing nostr note content.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/editor",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A batteries-included nostr editor.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/feeds",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "Utilities for building dynamic nostr feeds.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/lib",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of utilities.",
+3 -3
View File
@@ -1517,9 +1517,9 @@ export const prop =
/** Returns a function that adds/updates a property on object */
export const assoc =
<K extends string, T, U>(k: K, v: T) =>
(o: U) =>
({...o, [k as K]: v}) as U & Record<K, T>
<K extends string, T>(k: K, v: T) =>
<U>(o: U): U =>
({...o, [k]: v}) as U
/** Returns a function that removes a property on object */
export const dissoc =
@@ -154,10 +154,6 @@ describe("Repository", () => {
repo = new Repository()
})
it("should throw on invalid queries", () => {
expect(() => repo.query([{limit: 10}], {shouldSort: false})).toThrow()
})
it("should query by ids", () => {
const event = createEvent(1)
repo.publish(event)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/net",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "Utilities for connecting with nostr relays.",
+1 -1
View File
@@ -207,7 +207,7 @@ export const pull = async ({context, ...options}: PullOptions) => {
await Promise.all(
Array.from(idsByRelay.entries()).map(([relay, allIds]) => {
return Promise.all(
chunk(500, allIds).map(
chunk(100, allIds).map(
ids =>
new Promise<void>(resolve =>
requestOne({
+1 -5
View File
@@ -154,15 +154,11 @@ export class Repository extends Emitter {
) => {
const result: TrustedEvent[][] = []
for (const originalFilter of filters) {
if (originalFilter.limit !== undefined && !shouldSort) {
throw new Error("Unable to skip sorting if limit is defined")
}
// Attempt to fulfill the query using one of our indexes. Fall back to all events.
const applied = this._applyAnyFilter(originalFilter)
const filter = applied?.filter || originalFilter
const events = applied ? this._getEvents(applied!.ids) : this.dump()
const sorted = this._sortEvents(shouldSort && Boolean(filter.limit), events)
const sorted = this._sortEvents(shouldSort || Boolean(filter.limit), events)
const chunk: TrustedEvent[] = []
for (const event of sorted) {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/router",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of utilities for nostr relay selection.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/signer",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A nostr signer implemenation supporting several login methods.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/store",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of utilities based on svelte/store for use with welshman",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@welshman/util",
"version": "0.6.2",
"version": "0.6.3",
"author": "hodlbod",
"license": "MIT",
"description": "A collection of nostr-related utilities.",