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
|
-
|
|
112
|
-
if
|
|
113
|
-
return true;
|
|
112
|
+
const id = getAddressPointerId(pointer);
|
|
113
|
+
// skip if forced
|
|
114
114
|
if (pointer.force)
|
|
115
115
|
return true;
|
|
116
|
-
|
|
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-
|
|
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-
|
|
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",
|