applesauce-loaders 0.0.0-next-20241207164640 → 0.0.0-next-20241210184957

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,6 +71,8 @@ function* cacheFirstSequence(rxNostr, pointers, log, opts) {
71
71
  }
72
72
  /** Batches address pointers and consolidates them */
73
73
  function multiRelayBatcher(buffer) {
74
+ const requestedFrom = new Map();
75
+ const requestedDefault = new Set();
74
76
  return (source) => source.pipe(
75
77
  // buffer on time
76
78
  bufferTime(buffer),
@@ -106,14 +108,20 @@ function multiRelayBatcher(buffer) {
106
108
  filter((buffer) => buffer.length > 0),
107
109
  // ensure pointers are only requested from each relay once
108
110
  map((pointers) => {
109
- const requestedFrom = new Map();
110
111
  return pointers.filter((pointer) => {
111
- // if this pointer does not have any relays or is forced, skip
112
- if (!pointer.relays)
113
- return true;
112
+ const id = getAddressPointerId(pointer);
113
+ // skip if forced
114
114
  if (pointer.force)
115
115
  return true;
116
- const id = getAddressPointerId(pointer);
116
+ // skip if already requested from default relays
117
+ if (!pointer.relays) {
118
+ if (requestedDefault.has(id))
119
+ return false;
120
+ else {
121
+ requestedDefault.add(id);
122
+ return true;
123
+ }
124
+ }
117
125
  let set = requestedFrom.get(id);
118
126
  if (!set) {
119
127
  set = new Set();
@@ -138,7 +146,6 @@ export class ReplaceableLoader extends Loader {
138
146
  return source.pipe(
139
147
  // filter out invalid pointers
140
148
  filter(isLoadableAddressPointer),
141
- // TODO: needs a new batching method that takes the multiple relays (and force) into account
142
149
  // batch and filter
143
150
  multiRelayBatcher(opts?.bufferTime ?? 1000),
144
151
  // check cache, relays, lookup relays in that order
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "applesauce-loaders",
3
- "version": "0.0.0-next-20241207164640",
3
+ "version": "0.0.0-next-20241210184957",
4
4
  "description": "A collection of observable based loaders built on rx-nostr",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -36,7 +36,7 @@
36
36
  }
37
37
  },
38
38
  "dependencies": {
39
- "applesauce-core": "0.0.0-next-20241207164640",
39
+ "applesauce-core": "0.0.0-next-20241210184957",
40
40
  "nanoid": "^5.0.9",
41
41
  "nostr-tools": "^2.10.3",
42
42
  "rx-nostr": "^3.4.1",