@seedprotocol/arweave 0.6.6 → 0.6.8
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.
- package/dist/ArweaveClient/BaseArweaveClient.d.ts +11 -0
- package/dist/ArweaveClient/BaseArweaveClient.d.ts.map +1 -1
- package/dist/ArweaveClient/selectReadGateway.d.ts +12 -0
- package/dist/ArweaveClient/selectReadGateway.d.ts.map +1 -1
- package/dist/gateway/gatewayCircuitBreaker.d.ts +35 -0
- package/dist/gateway/gatewayCircuitBreaker.d.ts.map +1 -0
- package/dist/gateway/gatewayState.d.ts +12 -0
- package/dist/gateway/gatewayState.d.ts.map +1 -1
- package/dist/gateway/readBaseUrls.d.ts +31 -0
- package/dist/gateway/readBaseUrls.d.ts.map +1 -0
- package/dist/gateway/seedGatewayConfig.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +319 -149
- package/dist/index.js.map +1 -1
- package/dist/node/ArweaveClient.d.ts.map +1 -1
- package/dist/node.js +3 -9
- package/dist/node.js.map +1 -1
- package/dist/{queries-BLXr3teJ.js → queries-BwzzEwk1.js} +18 -1
- package/dist/queries-BwzzEwk1.js.map +1 -0
- package/dist/types/gateway.d.ts +7 -0
- package/dist/types/gateway.d.ts.map +1 -1
- package/dist/types/seedConfig.d.ts +1 -0
- package/dist/types/seedConfig.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/queries-BLXr3teJ.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as ee, p as u, r as d, s as f, t as te, u as
|
|
1
|
+
import { a as e, c as t, d as n, f as r, g as i, h as a, i as o, l as s, m as c, n as l, o as ee, p as u, r as d, s as f, t as te, u as ne } from "./queries-BwzzEwk1.js";
|
|
2
2
|
//#region src/easAttestationUrl.ts
|
|
3
|
-
var
|
|
4
|
-
function
|
|
3
|
+
var re = /(^|\.)easscan\.(org|xyz)$/i;
|
|
4
|
+
function p(e) {
|
|
5
5
|
let t = e.trim();
|
|
6
6
|
if (!t) return !1;
|
|
7
7
|
try {
|
|
8
8
|
let e = new URL(t);
|
|
9
|
-
return
|
|
9
|
+
return re.test(e.hostname) ? /\/attestation\/view\//i.test(e.pathname) : !1;
|
|
10
10
|
} catch {
|
|
11
11
|
return !1;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/relationSeedRef.ts
|
|
16
|
-
function
|
|
16
|
+
function ie(e) {
|
|
17
17
|
let t = {
|
|
18
18
|
localId: void 0,
|
|
19
19
|
uid: void 0
|
|
20
20
|
};
|
|
21
21
|
return e ? (e.length === 10 && (t.localId = e), e.startsWith("0x") && e.length === 66 && (t.uid = e), t) : t;
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function ae(e) {
|
|
24
24
|
if (e != null) {
|
|
25
25
|
if (typeof e == "string") {
|
|
26
26
|
let t = e.trim();
|
|
@@ -33,35 +33,35 @@ function g(e) {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
var
|
|
37
|
-
function
|
|
38
|
-
let t =
|
|
36
|
+
var oe = /^[a-zA-Z0-9_-]{10,21}$/;
|
|
37
|
+
function se(e) {
|
|
38
|
+
let t = ie(e);
|
|
39
39
|
return t.localId || t.uid ? {
|
|
40
40
|
seedLocalId: t.localId,
|
|
41
41
|
seedUid: t.uid
|
|
42
|
-
} :
|
|
42
|
+
} : oe.test(e) && !e.startsWith("0x") ? { seedLocalId: e } : {};
|
|
43
43
|
}
|
|
44
44
|
//#endregion
|
|
45
45
|
//#region src/mediaRef.ts
|
|
46
|
-
var
|
|
47
|
-
function
|
|
46
|
+
var ce = /^[a-zA-Z0-9_-]{43}$/;
|
|
47
|
+
function le(e) {
|
|
48
48
|
return e == null ? "" : typeof e == "string" ? e.trim() : String(e).trim();
|
|
49
49
|
}
|
|
50
|
-
function
|
|
50
|
+
function m(e, t) {
|
|
51
51
|
let n = e[t];
|
|
52
52
|
return n == null ? "" : typeof n == "string" ? n.trim() : typeof n == "number" || typeof n == "boolean" ? String(n) : "";
|
|
53
53
|
}
|
|
54
|
-
function
|
|
54
|
+
function ue(e) {
|
|
55
55
|
let t = e.trim();
|
|
56
56
|
if (!t) return t;
|
|
57
57
|
try {
|
|
58
|
-
let e =
|
|
58
|
+
let e = ae(JSON.parse(t));
|
|
59
59
|
if (e) return e;
|
|
60
60
|
} catch {}
|
|
61
61
|
return t;
|
|
62
62
|
}
|
|
63
|
-
function
|
|
64
|
-
let n =
|
|
63
|
+
function h(e, t) {
|
|
64
|
+
let n = le(e);
|
|
65
65
|
if (!n) return { kind: "empty" };
|
|
66
66
|
let r = t?.treatAs;
|
|
67
67
|
if (r === "url") return {
|
|
@@ -79,14 +79,14 @@ function b(e, t) {
|
|
|
79
79
|
kind: "unknown",
|
|
80
80
|
raw: n
|
|
81
81
|
};
|
|
82
|
-
if (n.startsWith("http://") || n.startsWith("https://") || n.startsWith("blob:") || n.startsWith("data:")) return
|
|
82
|
+
if (n.startsWith("http://") || n.startsWith("https://") || n.startsWith("blob:") || n.startsWith("data:")) return p(n) ? {
|
|
83
83
|
kind: "nonMediaUrl",
|
|
84
84
|
href: n
|
|
85
85
|
} : {
|
|
86
86
|
kind: "url",
|
|
87
87
|
href: n
|
|
88
88
|
};
|
|
89
|
-
let i =
|
|
89
|
+
let i = ue(n), a = se(i);
|
|
90
90
|
return a.seedUid ? {
|
|
91
91
|
kind: "seedUid",
|
|
92
92
|
uid: a.seedUid
|
|
@@ -96,7 +96,7 @@ function b(e, t) {
|
|
|
96
96
|
} : i.startsWith("0x") && i.length === 66 ? {
|
|
97
97
|
kind: "seedUid",
|
|
98
98
|
uid: i
|
|
99
|
-
} :
|
|
99
|
+
} : ce.test(i) && !i.startsWith("0x") ? {
|
|
100
100
|
kind: "arweaveTxId",
|
|
101
101
|
txId: i
|
|
102
102
|
} : {
|
|
@@ -104,25 +104,25 @@ function b(e, t) {
|
|
|
104
104
|
raw: n
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
|
-
function
|
|
108
|
-
let n =
|
|
107
|
+
function g(e, t) {
|
|
108
|
+
let n = m(e, t);
|
|
109
109
|
if (n) return n;
|
|
110
110
|
let r = t.replace(/[A-Z]/g, (e) => `_${e.toLowerCase()}`);
|
|
111
111
|
if (r !== t) {
|
|
112
|
-
let t =
|
|
112
|
+
let t = m(e, r);
|
|
113
113
|
if (t) return t;
|
|
114
114
|
}
|
|
115
115
|
let i = t.split("_");
|
|
116
116
|
if (i.length > 1) {
|
|
117
|
-
let t =
|
|
117
|
+
let t = m(e, i[0] + i.slice(1).map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(""));
|
|
118
118
|
if (t) return t;
|
|
119
119
|
}
|
|
120
120
|
return "";
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function de(e, t) {
|
|
123
123
|
let n = {};
|
|
124
124
|
for (let [r, i] of Object.entries(t)) {
|
|
125
|
-
let t =
|
|
125
|
+
let t = g(e, r);
|
|
126
126
|
if (!t) {
|
|
127
127
|
n[r] = void 0;
|
|
128
128
|
continue;
|
|
@@ -141,7 +141,7 @@ function oe(e, t) {
|
|
|
141
141
|
};
|
|
142
142
|
continue;
|
|
143
143
|
}
|
|
144
|
-
let a =
|
|
144
|
+
let a = h(t, { treatAs: i.treatAs });
|
|
145
145
|
n[r] = {
|
|
146
146
|
role: i.role,
|
|
147
147
|
raw: t,
|
|
@@ -150,12 +150,12 @@ function oe(e, t) {
|
|
|
150
150
|
}
|
|
151
151
|
return n;
|
|
152
152
|
}
|
|
153
|
-
function
|
|
153
|
+
function fe(e) {
|
|
154
154
|
return `${d.getBaseUrl()}/${e}`;
|
|
155
155
|
}
|
|
156
156
|
//#endregion
|
|
157
157
|
//#region src/resolveSeedRssImageRelationRef.ts
|
|
158
|
-
var
|
|
158
|
+
var _ = [
|
|
159
159
|
"featureImage",
|
|
160
160
|
"feature_image",
|
|
161
161
|
"image",
|
|
@@ -166,25 +166,25 @@ var S = [
|
|
|
166
166
|
"thumbnail_image",
|
|
167
167
|
"thumbnailImage"
|
|
168
168
|
];
|
|
169
|
-
function
|
|
169
|
+
function pe(e) {
|
|
170
170
|
return e == null ? "" : typeof e == "string" ? e.trim() : typeof e == "number" || typeof e == "boolean" ? String(e) : "";
|
|
171
171
|
}
|
|
172
|
-
function
|
|
172
|
+
function v(e, ...t) {
|
|
173
173
|
for (let n of t) {
|
|
174
|
-
let t =
|
|
174
|
+
let t = pe(e[n]);
|
|
175
175
|
if (t) return t;
|
|
176
176
|
}
|
|
177
177
|
let n = t.map((e) => e.split(":").pop().toLowerCase());
|
|
178
178
|
for (let [t, r] of Object.entries(e)) {
|
|
179
179
|
let e = (t.includes(":") ? t.split(":").pop() : t).toLowerCase();
|
|
180
180
|
if (n.some((t) => e === t.toLowerCase())) {
|
|
181
|
-
let e =
|
|
181
|
+
let e = pe(r);
|
|
182
182
|
if (e) return e;
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
return "";
|
|
186
186
|
}
|
|
187
|
-
function
|
|
187
|
+
function y(e) {
|
|
188
188
|
let t = e.trim();
|
|
189
189
|
if (t && !t.startsWith("0x")) try {
|
|
190
190
|
return `${d.getBaseUrl()}/${t}`;
|
|
@@ -192,23 +192,23 @@ function T(e) {
|
|
|
192
192
|
return;
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
|
-
function
|
|
195
|
+
function me(e) {
|
|
196
196
|
let t = e.storageTransactionId?.trim();
|
|
197
197
|
if (t) {
|
|
198
|
-
let e =
|
|
198
|
+
let e = y(t);
|
|
199
199
|
if (e) return e;
|
|
200
200
|
}
|
|
201
201
|
let n = e.arweaveUrl?.trim();
|
|
202
|
-
if (n && !
|
|
202
|
+
if (n && !p(n)) return n;
|
|
203
203
|
}
|
|
204
|
-
function
|
|
204
|
+
function he(e) {
|
|
205
205
|
let t = e.trim();
|
|
206
|
-
if (!t ||
|
|
207
|
-
let n =
|
|
206
|
+
if (!t || p(t)) return;
|
|
207
|
+
let n = h(t);
|
|
208
208
|
switch (n.kind) {
|
|
209
209
|
case "url": return { mediaUrl: n.href };
|
|
210
210
|
case "arweaveTxId": {
|
|
211
|
-
let e =
|
|
211
|
+
let e = y(n.txId);
|
|
212
212
|
return {
|
|
213
213
|
storageTransactionId: n.txId,
|
|
214
214
|
...e ? { mediaUrl: e } : {}
|
|
@@ -216,7 +216,7 @@ function ce(e) {
|
|
|
216
216
|
}
|
|
217
217
|
case "seedUid": return { seedUid: n.uid };
|
|
218
218
|
default: {
|
|
219
|
-
let e =
|
|
219
|
+
let e = y(t);
|
|
220
220
|
return e ? {
|
|
221
221
|
storageTransactionId: t,
|
|
222
222
|
mediaUrl: e
|
|
@@ -224,109 +224,201 @@ function ce(e) {
|
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
let t =
|
|
227
|
+
function ge(e) {
|
|
228
|
+
let t = v(e, "storageTransactionId", "storage_transaction_id"), n = v(e, "arweaveUrl", "arweave_url"), r = v(e, "seedUid", "SeedUid", "seed_uid"), i = v(e, "link", "Link"), a = me({
|
|
229
229
|
storageTransactionId: t,
|
|
230
230
|
arweaveUrl: n
|
|
231
|
-
}) ?? (i && !
|
|
231
|
+
}) ?? (i && !p(i) ? i : void 0);
|
|
232
232
|
if (t || n || r || a) return {
|
|
233
233
|
...t ? { storageTransactionId: t } : {},
|
|
234
|
-
...n && !
|
|
234
|
+
...n && !p(n) ? { arweaveUrl: n } : {},
|
|
235
235
|
...r ? { seedUid: r } : {},
|
|
236
236
|
...a ? { mediaUrl: a } : {}
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
|
-
function
|
|
239
|
+
function b(e) {
|
|
240
240
|
if (e != null) {
|
|
241
|
-
if (typeof e == "string") return
|
|
241
|
+
if (typeof e == "string") return he(e);
|
|
242
242
|
if (Array.isArray(e)) {
|
|
243
243
|
for (let t of e) {
|
|
244
|
-
let e =
|
|
244
|
+
let e = b(t);
|
|
245
245
|
if (e?.mediaUrl || e?.storageTransactionId || e?.seedUid) return e;
|
|
246
246
|
}
|
|
247
247
|
return;
|
|
248
248
|
}
|
|
249
|
-
if (typeof e == "object") return
|
|
249
|
+
if (typeof e == "object") return ge(e);
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
-
function
|
|
252
|
+
function _e(e, t = _) {
|
|
253
253
|
for (let n of t) {
|
|
254
254
|
if (!(n in e)) continue;
|
|
255
|
-
let t =
|
|
255
|
+
let t = b(e[n]);
|
|
256
256
|
if (t) return t;
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
//#endregion
|
|
260
|
+
//#region src/gateway/gatewayCircuitBreaker.ts
|
|
261
|
+
var x = 1, S = 6e4, C = x, w = S, T = /* @__PURE__ */ new Map();
|
|
262
|
+
function E(e) {
|
|
263
|
+
let t = e.trim();
|
|
264
|
+
return t ? (t.startsWith("http://") ? t = t.slice(7) : t.startsWith("https://") && (t = t.slice(8)), t.replace(/\/$/, "").toLowerCase()) : "";
|
|
265
|
+
}
|
|
266
|
+
function D(e) {
|
|
267
|
+
let t = T.get(e);
|
|
268
|
+
return t || (t = {
|
|
269
|
+
failures: 0,
|
|
270
|
+
openedAt: null,
|
|
271
|
+
halfOpenProbeInFlight: !1
|
|
272
|
+
}, T.set(e, t)), t;
|
|
273
|
+
}
|
|
274
|
+
function O(e, t) {
|
|
275
|
+
return e.openedAt == null ? "closed" : t - e.openedAt >= w ? "half-open" : "open";
|
|
276
|
+
}
|
|
277
|
+
function ve(e) {
|
|
278
|
+
e.failureThreshold != null && e.failureThreshold >= 1 && (C = e.failureThreshold), e.openDurationMs != null && e.openDurationMs >= 0 && (w = e.openDurationMs);
|
|
279
|
+
}
|
|
280
|
+
function k() {
|
|
281
|
+
T.clear(), C = x, w = S;
|
|
282
|
+
}
|
|
283
|
+
function A(e, t = Date.now()) {
|
|
284
|
+
let n = E(e);
|
|
285
|
+
if (!n) return !1;
|
|
286
|
+
let r = T.get(n);
|
|
287
|
+
if (!r) return !1;
|
|
288
|
+
let i = O(r, t);
|
|
289
|
+
return !!(i === "open" || i === "half-open" && r.halfOpenProbeInFlight);
|
|
290
|
+
}
|
|
291
|
+
function ye(e, t = Date.now()) {
|
|
292
|
+
let n = E(e);
|
|
293
|
+
if (!n) return "closed";
|
|
294
|
+
let r = T.get(n);
|
|
295
|
+
return r ? O(r, t) : "closed";
|
|
296
|
+
}
|
|
297
|
+
function j(e, t = Date.now()) {
|
|
298
|
+
let n = E(e);
|
|
299
|
+
if (!n) return;
|
|
300
|
+
let r = D(n);
|
|
301
|
+
O(r, t) === "half-open" && (r.halfOpenProbeInFlight = !0);
|
|
302
|
+
}
|
|
303
|
+
function M(e) {
|
|
304
|
+
let t = E(e);
|
|
305
|
+
t && T.set(t, {
|
|
306
|
+
failures: 0,
|
|
307
|
+
openedAt: null,
|
|
308
|
+
halfOpenProbeInFlight: !1
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
function N(e, t = Date.now()) {
|
|
312
|
+
let n = E(e);
|
|
313
|
+
if (!n) return;
|
|
314
|
+
let r = D(n);
|
|
315
|
+
r.failures += 1, r.halfOpenProbeInFlight = !1, r.failures >= C && (r.openedAt = t);
|
|
316
|
+
}
|
|
317
|
+
function be(e = Date.now()) {
|
|
318
|
+
let t = [];
|
|
319
|
+
for (let n of T.keys()) A(n, e) && t.push(n);
|
|
320
|
+
return t;
|
|
321
|
+
}
|
|
322
|
+
//#endregion
|
|
260
323
|
//#region src/ArweaveClient/selectReadGateway.ts
|
|
261
|
-
var
|
|
262
|
-
function
|
|
263
|
-
|
|
324
|
+
var P = 18e4, xe = 6e4, Se = 5e3, F = null, I = null, L = null;
|
|
325
|
+
function R() {
|
|
326
|
+
F = null, I = null;
|
|
327
|
+
}
|
|
328
|
+
function Ce() {
|
|
329
|
+
R(), L = null, k(), d.resetReadGatewaySelectionStateForTests(), d.isReadGatewayLocked() || d.setPreferredReadGateway(f);
|
|
264
330
|
}
|
|
265
|
-
function
|
|
266
|
-
|
|
331
|
+
function we() {
|
|
332
|
+
return d.isReadGatewayLocked() ? !0 : F && Date.now() < F.expiresAt ? F.healthy : L != null;
|
|
267
333
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
334
|
+
function Te() {
|
|
335
|
+
return L;
|
|
336
|
+
}
|
|
337
|
+
async function z(e, t) {
|
|
338
|
+
let n = `${e.replace(/\/$/, "")}/info`, r = e;
|
|
339
|
+
try {
|
|
340
|
+
r = new URL(e.includes("://") ? e : `https://${e}`).host;
|
|
341
|
+
} catch {
|
|
342
|
+
r = e.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
343
|
+
}
|
|
344
|
+
if (A(r)) return !1;
|
|
345
|
+
j(r);
|
|
346
|
+
let i, a = new AbortController(), o = t ?? a.signal;
|
|
347
|
+
t || (i = setTimeout(() => a.abort(), Se));
|
|
271
348
|
try {
|
|
272
349
|
let e = await fetch(n, {
|
|
273
350
|
method: "GET",
|
|
274
|
-
signal:
|
|
351
|
+
signal: o,
|
|
275
352
|
headers: { Accept: "application/json" }
|
|
276
353
|
});
|
|
277
|
-
if (!e.ok) return !1;
|
|
354
|
+
if (!e.ok) return N(r), !1;
|
|
278
355
|
let t = await e.text();
|
|
279
|
-
if (!t.trim()) return !1;
|
|
356
|
+
if (!t.trim()) return N(r), !1;
|
|
280
357
|
try {
|
|
281
|
-
let e = JSON.parse(t);
|
|
282
|
-
return
|
|
358
|
+
let e = JSON.parse(t), n = typeof e == "object" && !!e;
|
|
359
|
+
return n ? M(r) : N(r), n;
|
|
283
360
|
} catch {
|
|
284
|
-
return !1;
|
|
361
|
+
return N(r), !1;
|
|
285
362
|
}
|
|
286
363
|
} catch {
|
|
287
|
-
return !1;
|
|
364
|
+
return N(r), !1;
|
|
288
365
|
} finally {
|
|
289
|
-
|
|
366
|
+
i && clearTimeout(i);
|
|
290
367
|
}
|
|
291
368
|
}
|
|
292
|
-
async function
|
|
369
|
+
async function B(e, t = "https", n) {
|
|
293
370
|
for (let r of e) {
|
|
294
371
|
let e = r.trim().replace(/\/$/, "");
|
|
295
|
-
if (e && await
|
|
372
|
+
if (e && !A(e) && await z(`${t}://${e}`, n)) return e;
|
|
296
373
|
}
|
|
297
374
|
return null;
|
|
298
375
|
}
|
|
299
|
-
function
|
|
376
|
+
function Ee() {
|
|
300
377
|
return r(d.getHost());
|
|
301
378
|
}
|
|
302
|
-
async function
|
|
379
|
+
async function V(e) {
|
|
303
380
|
if (d.isReadGatewayLocked()) return d.getHost();
|
|
304
|
-
if (
|
|
305
|
-
if (
|
|
306
|
-
|
|
307
|
-
let t = await
|
|
308
|
-
|
|
381
|
+
if (F && Date.now() < F.expiresAt) return F.host;
|
|
382
|
+
if (I) return I;
|
|
383
|
+
I = (async () => {
|
|
384
|
+
let t = await B(Ee(), d.getProtocol(), e);
|
|
385
|
+
if (d.isReadGatewayLocked()) F = {
|
|
309
386
|
host: d.getHost(),
|
|
310
|
-
|
|
311
|
-
|
|
387
|
+
healthy: !0,
|
|
388
|
+
expiresAt: Date.now() + P
|
|
389
|
+
};
|
|
390
|
+
else if (t) d.applyProbedReadGateway(t), L = t, F = {
|
|
391
|
+
host: t,
|
|
392
|
+
healthy: !0,
|
|
393
|
+
expiresAt: Date.now() + P
|
|
394
|
+
};
|
|
395
|
+
else {
|
|
396
|
+
let e = L ?? d.getHost();
|
|
397
|
+
L && d.getHost() !== L && d.applyProbedReadGateway(L), F = {
|
|
398
|
+
host: e,
|
|
399
|
+
healthy: !1,
|
|
400
|
+
expiresAt: Date.now() + xe
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
return F.host;
|
|
312
404
|
})();
|
|
313
405
|
try {
|
|
314
|
-
return await
|
|
406
|
+
return await I;
|
|
315
407
|
} finally {
|
|
316
|
-
|
|
408
|
+
I = null;
|
|
317
409
|
}
|
|
318
410
|
}
|
|
319
411
|
//#endregion
|
|
320
412
|
//#region src/ArweaveClient/uploadApiVerification.ts
|
|
321
|
-
function
|
|
413
|
+
function H(e) {
|
|
322
414
|
return e.trim().replace(/\/+$/, "");
|
|
323
415
|
}
|
|
324
|
-
function
|
|
325
|
-
return `${
|
|
416
|
+
function U(e, t) {
|
|
417
|
+
return `${H(e)}/api/upload/arweave/data/${encodeURIComponent(t)}`;
|
|
326
418
|
}
|
|
327
|
-
var
|
|
328
|
-
async function
|
|
329
|
-
let r =
|
|
419
|
+
var De = 45e3;
|
|
420
|
+
async function Oe(e, t, n) {
|
|
421
|
+
let r = U(e, t), i = n?.timeoutMs ?? De, a = new AbortController(), o = setTimeout(() => a.abort(), i);
|
|
330
422
|
try {
|
|
331
423
|
let e = await fetch(r, { signal: a.signal });
|
|
332
424
|
return clearTimeout(o), e.status === 404 ? {
|
|
@@ -351,16 +443,16 @@ async function R(e, t, n) {
|
|
|
351
443
|
}
|
|
352
444
|
//#endregion
|
|
353
445
|
//#region src/ArweaveClient/arweaveL1UploadApi.ts
|
|
354
|
-
var
|
|
355
|
-
function
|
|
356
|
-
return `${
|
|
446
|
+
var ke = "\n query ArweaveGatewayTransaction($id: String!) {\n transaction(id: $id) {\n id\n bundledIn {\n id\n }\n block {\n height\n timestamp\n }\n }\n }\n";
|
|
447
|
+
function W(e, t) {
|
|
448
|
+
return `${H(e)}/api/upload/arweave/status/${encodeURIComponent(t)}`;
|
|
357
449
|
}
|
|
358
|
-
function
|
|
450
|
+
function Ae(e) {
|
|
359
451
|
let t = e.l1;
|
|
360
452
|
return t ? t.meetsMinConfirmations === !0 || t.confirmed === !0 : !1;
|
|
361
453
|
}
|
|
362
|
-
async function
|
|
363
|
-
let n =
|
|
454
|
+
async function je(e, t) {
|
|
455
|
+
let n = W(e, t);
|
|
364
456
|
try {
|
|
365
457
|
let e = await fetch(n);
|
|
366
458
|
if (!e.ok) return null;
|
|
@@ -370,7 +462,7 @@ async function he(e, t) {
|
|
|
370
462
|
return null;
|
|
371
463
|
}
|
|
372
464
|
}
|
|
373
|
-
async function
|
|
465
|
+
async function Me(e, t, n) {
|
|
374
466
|
let r = e.trim();
|
|
375
467
|
if (!r) return null;
|
|
376
468
|
try {
|
|
@@ -378,7 +470,7 @@ async function V(e, t, n) {
|
|
|
378
470
|
method: "POST",
|
|
379
471
|
headers: { "Content-Type": "application/json" },
|
|
380
472
|
body: JSON.stringify({
|
|
381
|
-
query:
|
|
473
|
+
query: ke,
|
|
382
474
|
variables: { id: t }
|
|
383
475
|
}),
|
|
384
476
|
signal: n?.signal
|
|
@@ -402,7 +494,7 @@ async function V(e, t, n) {
|
|
|
402
494
|
return null;
|
|
403
495
|
}
|
|
404
496
|
}
|
|
405
|
-
async function
|
|
497
|
+
async function Ne(e, t, n) {
|
|
406
498
|
let i = u(), a = e?.trim(), o = "https", s = null;
|
|
407
499
|
if (a) try {
|
|
408
500
|
let e = new URL(a);
|
|
@@ -412,28 +504,19 @@ async function ge(e, t, n) {
|
|
|
412
504
|
}
|
|
413
505
|
let c = s && s.length > 0 ? r(s) : [...i], l = n?.signal;
|
|
414
506
|
for (let e of c) {
|
|
415
|
-
if (!await
|
|
416
|
-
let r = await
|
|
507
|
+
if (!await z(`${o}://${e}`, l ?? void 0)) continue;
|
|
508
|
+
let r = await Me(`${o}://${e}/graphql`, t, n);
|
|
417
509
|
if (r !== null) return r;
|
|
418
510
|
}
|
|
419
511
|
return null;
|
|
420
512
|
}
|
|
421
513
|
//#endregion
|
|
422
|
-
//#region src/gateway/gatewayState.ts
|
|
423
|
-
var H = null;
|
|
424
|
-
function _e() {
|
|
425
|
-
return H;
|
|
426
|
-
}
|
|
427
|
-
function ve(e) {
|
|
428
|
-
H = e;
|
|
429
|
-
}
|
|
430
|
-
//#endregion
|
|
431
514
|
//#region src/gateway/resolveSeedGatewayEndpoints.ts
|
|
432
|
-
var
|
|
433
|
-
function
|
|
434
|
-
|
|
515
|
+
var Pe = 18e4, G = null, K = /* @__PURE__ */ new Map();
|
|
516
|
+
function Fe() {
|
|
517
|
+
G = null, K.clear();
|
|
435
518
|
}
|
|
436
|
-
function
|
|
519
|
+
function Ie(e) {
|
|
437
520
|
let t = (e ?? "ar.seedprotocol.io").trim();
|
|
438
521
|
return t.startsWith("http://") ? {
|
|
439
522
|
protocol: "http",
|
|
@@ -446,7 +529,7 @@ function ye(e) {
|
|
|
446
529
|
host: t.replace(/\/$/, "")
|
|
447
530
|
};
|
|
448
531
|
}
|
|
449
|
-
function
|
|
532
|
+
function Le(e) {
|
|
450
533
|
let t = e.hyper?.localSidecarHost?.trim() || "127.0.0.1", n = e.hyper?.localSidecarPort ?? 1984;
|
|
451
534
|
return {
|
|
452
535
|
host: n === 80 || n === 443 ? t : `${t}:${n}`,
|
|
@@ -454,7 +537,7 @@ function q(e) {
|
|
|
454
537
|
baseUrl: `http://${t}:${n}`
|
|
455
538
|
};
|
|
456
539
|
}
|
|
457
|
-
function
|
|
540
|
+
function Re() {
|
|
458
541
|
try {
|
|
459
542
|
let e = globalThis.window?.location?.origin;
|
|
460
543
|
return typeof e == "string" && e.length > 0 ? e.replace(/\/$/, "") : void 0;
|
|
@@ -462,37 +545,37 @@ function be() {
|
|
|
462
545
|
return;
|
|
463
546
|
}
|
|
464
547
|
}
|
|
465
|
-
function
|
|
548
|
+
function q(e, t) {
|
|
466
549
|
let n = e.trim();
|
|
467
550
|
if (!n) throw Error("proxyBaseUrl is empty");
|
|
468
551
|
if (n.startsWith("http://") || n.startsWith("https://")) return n.replace(/\/$/, "");
|
|
469
552
|
if (n.startsWith("/")) {
|
|
470
|
-
let r = (t?.origin?.trim() ||
|
|
553
|
+
let r = (t?.origin?.trim() || Re() || "").replace(/\/$/, "");
|
|
471
554
|
if (!r) throw Error(`Relative proxyBaseUrl "${e}" requires a browser origin or resolve options.origin`);
|
|
472
555
|
return `${r}${n.replace(/\/$/, "")}`;
|
|
473
556
|
}
|
|
474
557
|
return `https://${n.replace(/\/$/, "")}`;
|
|
475
558
|
}
|
|
476
|
-
async function
|
|
559
|
+
async function J(e, t, n) {
|
|
477
560
|
let r = Date.now();
|
|
478
561
|
if (t === "sidecar") {
|
|
479
|
-
if (
|
|
480
|
-
let t = await
|
|
481
|
-
return
|
|
562
|
+
if (G && r < G.expiresAt) return G.healthy;
|
|
563
|
+
let t = await z(e, n);
|
|
564
|
+
return G = {
|
|
482
565
|
healthy: t,
|
|
483
|
-
expiresAt: r +
|
|
566
|
+
expiresAt: r + Pe
|
|
484
567
|
}, t;
|
|
485
568
|
}
|
|
486
|
-
let i =
|
|
569
|
+
let i = K.get(t);
|
|
487
570
|
if (i && r < i.expiresAt) return i.healthy;
|
|
488
|
-
let a = await
|
|
489
|
-
return
|
|
571
|
+
let a = await z(e, n);
|
|
572
|
+
return K.set(t, {
|
|
490
573
|
healthy: a,
|
|
491
|
-
expiresAt: r +
|
|
574
|
+
expiresAt: r + Pe
|
|
492
575
|
}), a;
|
|
493
576
|
}
|
|
494
|
-
function
|
|
495
|
-
let { host: t, protocol: n } =
|
|
577
|
+
function ze(e) {
|
|
578
|
+
let { host: t, protocol: n } = Ie(e.arweaveDomain), r = `${n}://${t}`, i = e.uploadApiBaseUrl?.trim() || r;
|
|
496
579
|
return {
|
|
497
580
|
mode: e.transport ?? "http-gateway",
|
|
498
581
|
arweaveHost: t,
|
|
@@ -504,8 +587,8 @@ function X(e) {
|
|
|
504
587
|
gatewayHyperKey: e.hyper?.gatewayHyperKey?.trim() || void 0
|
|
505
588
|
};
|
|
506
589
|
}
|
|
507
|
-
function
|
|
508
|
-
let t =
|
|
590
|
+
function Be(e) {
|
|
591
|
+
let t = Le(e), n = e.hyper?.gatewayHyperKey?.trim();
|
|
509
592
|
return {
|
|
510
593
|
mode: "hyper",
|
|
511
594
|
arweaveHost: t.host,
|
|
@@ -517,7 +600,7 @@ function Z(e) {
|
|
|
517
600
|
gatewayHyperKey: n || void 0
|
|
518
601
|
};
|
|
519
602
|
}
|
|
520
|
-
function
|
|
603
|
+
function Ve(e, t) {
|
|
521
604
|
let n = new URL(t), r = n.protocol === "http:" ? "http" : "https", i = n.pathname.replace(/\/$/, ""), a = i ? `${n.host}${i}` : n.host, o = `${r}://${a}`;
|
|
522
605
|
return {
|
|
523
606
|
mode: e.transport ?? "http-gateway",
|
|
@@ -531,53 +614,53 @@ function Q(e, t) {
|
|
|
531
614
|
proxyBaseUrl: t
|
|
532
615
|
};
|
|
533
616
|
}
|
|
534
|
-
async function
|
|
617
|
+
async function He(e, t) {
|
|
535
618
|
let n = e.proxyBaseUrl?.trim();
|
|
536
619
|
if (!n) return null;
|
|
537
|
-
let r =
|
|
538
|
-
return e.hyper?.probeSidecar !== !1 && !await
|
|
620
|
+
let r = q(n, { origin: t?.origin });
|
|
621
|
+
return e.hyper?.probeSidecar !== !1 && !await J(r, `proxy:${r}`, t?.signal) ? null : Ve(e, r);
|
|
539
622
|
}
|
|
540
|
-
async function
|
|
541
|
-
t?.forceSidecarProbe &&
|
|
623
|
+
async function Ue(e, t) {
|
|
624
|
+
t?.forceSidecarProbe && Fe();
|
|
542
625
|
let n = e.transport ?? "http-gateway", r = e.hyper?.probeSidecar !== !1;
|
|
543
626
|
if (n === "http-gateway") {
|
|
544
627
|
if (e.proxyBaseUrl?.trim()) {
|
|
545
|
-
let i =
|
|
546
|
-
if (r && !await
|
|
547
|
-
return
|
|
628
|
+
let i = q(e.proxyBaseUrl, { origin: t?.origin });
|
|
629
|
+
if (r && !await J(i, `proxy:${i}`, t?.signal)) throw Error(`Gateway HTTP proxy not reachable at ${i}. Ensure your Node route runs createGatewayProxy (or equivalent) and mounts at proxyBaseUrl.`);
|
|
630
|
+
return Ve({
|
|
548
631
|
...e,
|
|
549
632
|
transport: n
|
|
550
633
|
}, i);
|
|
551
634
|
}
|
|
552
|
-
return
|
|
635
|
+
return ze({
|
|
553
636
|
...e,
|
|
554
637
|
transport: n
|
|
555
638
|
});
|
|
556
639
|
}
|
|
557
640
|
if (n === "hyper") {
|
|
558
|
-
let i = await
|
|
641
|
+
let i = await He({
|
|
559
642
|
...e,
|
|
560
643
|
transport: n
|
|
561
644
|
}, t);
|
|
562
645
|
if (i) return i;
|
|
563
|
-
let a =
|
|
646
|
+
let a = Be({
|
|
564
647
|
...e,
|
|
565
648
|
transport: n
|
|
566
649
|
});
|
|
567
|
-
if (r && !await
|
|
650
|
+
if (r && !await J(a.arweaveBaseUrl, "sidecar", t?.signal)) throw Error(`Gateway Hyper sidecar not reachable at ${a.arweaveBaseUrl}. Run: seed gateway tunnel connect <operator-z32-key> — or configure gateway.proxyBaseUrl for an app-server proxy.`);
|
|
568
651
|
return a;
|
|
569
652
|
}
|
|
570
|
-
let i = await
|
|
653
|
+
let i = await He({
|
|
571
654
|
...e,
|
|
572
655
|
transport: n
|
|
573
656
|
}, t);
|
|
574
657
|
if (i) return i;
|
|
575
|
-
let a =
|
|
576
|
-
return r && await
|
|
658
|
+
let a = Le(e);
|
|
659
|
+
return r && await J(a.baseUrl, "sidecar", t?.signal) ? Be({
|
|
577
660
|
...e,
|
|
578
661
|
transport: "hyper"
|
|
579
662
|
}) : {
|
|
580
|
-
...
|
|
663
|
+
...ze({
|
|
581
664
|
...e,
|
|
582
665
|
transport: "http-gateway"
|
|
583
666
|
}),
|
|
@@ -585,18 +668,48 @@ async function xe(e, t) {
|
|
|
585
668
|
activePath: "hybrid-fallback-http"
|
|
586
669
|
};
|
|
587
670
|
}
|
|
588
|
-
function
|
|
671
|
+
function We(e, t) {
|
|
589
672
|
return e.activePath === "hyper-sidecar" || e.activePath === "http-proxy" ? [e.arweaveHost] : r(e.arweaveHost);
|
|
590
673
|
}
|
|
591
674
|
//#endregion
|
|
675
|
+
//#region src/gateway/gatewayState.ts
|
|
676
|
+
var Ge = null;
|
|
677
|
+
function Y() {
|
|
678
|
+
return Ge;
|
|
679
|
+
}
|
|
680
|
+
function Ke(e) {
|
|
681
|
+
Ge = e;
|
|
682
|
+
}
|
|
683
|
+
var qe = [];
|
|
684
|
+
function X() {
|
|
685
|
+
return qe;
|
|
686
|
+
}
|
|
687
|
+
function Je(e) {
|
|
688
|
+
let t = [], n = /* @__PURE__ */ new Set();
|
|
689
|
+
for (let r of e) {
|
|
690
|
+
let e = r?.trim();
|
|
691
|
+
if (!e) continue;
|
|
692
|
+
let i;
|
|
693
|
+
try {
|
|
694
|
+
let t = new URL(/^https?:\/\//i.test(e) ? e : q(e));
|
|
695
|
+
i = `${t.origin}${t.pathname.replace(/\/+$/, "")}`;
|
|
696
|
+
} catch {
|
|
697
|
+
continue;
|
|
698
|
+
}
|
|
699
|
+
n.has(i) || (n.add(i), t.push(i));
|
|
700
|
+
}
|
|
701
|
+
qe = t;
|
|
702
|
+
}
|
|
703
|
+
//#endregion
|
|
592
704
|
//#region src/gateway/seedGatewayConfig.ts
|
|
593
|
-
function
|
|
705
|
+
function Ye(e) {
|
|
594
706
|
let t = e.gateway ?? {};
|
|
595
707
|
return {
|
|
596
708
|
transport: t.transport,
|
|
597
709
|
arweaveDomain: e.arweaveDomain ?? t.arweaveDomain,
|
|
598
710
|
uploadApiBaseUrl: e.uploadApiBaseUrl ?? t.uploadApiBaseUrl,
|
|
599
711
|
proxyBaseUrl: t.proxyBaseUrl?.trim() || void 0,
|
|
712
|
+
preferredReadBaseUrls: t.preferredReadBaseUrls,
|
|
600
713
|
hyper: {
|
|
601
714
|
gatewayHyperKey: t.hyper?.gatewayHyperKey?.trim() || t.gatewayHyperKey?.trim() || void 0,
|
|
602
715
|
localSidecarHost: t.hyper?.localSidecarHost ?? t.localSidecarHost,
|
|
@@ -605,7 +718,7 @@ function Ce(e) {
|
|
|
605
718
|
}
|
|
606
719
|
};
|
|
607
720
|
}
|
|
608
|
-
function
|
|
721
|
+
function Xe(e) {
|
|
609
722
|
return {
|
|
610
723
|
transport: e.gatewayTransport,
|
|
611
724
|
arweaveDomain: e.arweaveDomain,
|
|
@@ -619,6 +732,63 @@ function we(e) {
|
|
|
619
732
|
};
|
|
620
733
|
}
|
|
621
734
|
//#endregion
|
|
622
|
-
|
|
735
|
+
//#region src/gateway/readBaseUrls.ts
|
|
736
|
+
var Ze = 1e4;
|
|
737
|
+
function Z(e, t, n) {
|
|
738
|
+
let r = n.trim().replace(/\/$/, "");
|
|
739
|
+
r && !t.has(r) && (t.add(r), e.push(r));
|
|
740
|
+
}
|
|
741
|
+
function Q(e) {
|
|
742
|
+
let t = Y(), n = d.getProtocol(), i = t ? We(t) : e?.fallbackHosts?.length ? [...e.fallbackHosts] : r(d.getHost()), a = [], o = /* @__PURE__ */ new Set();
|
|
743
|
+
for (let e of i) {
|
|
744
|
+
let t = e.trim();
|
|
745
|
+
t && Z(a, o, /^https?:\/\//i.test(t) ? t : `${n}://${t}`);
|
|
746
|
+
}
|
|
747
|
+
return a;
|
|
748
|
+
}
|
|
749
|
+
function Qe(e) {
|
|
750
|
+
let t = [], n = /* @__PURE__ */ new Set();
|
|
751
|
+
for (let e of X()) Z(t, n, e);
|
|
752
|
+
for (let r of Q(e)) Z(t, n, r);
|
|
753
|
+
return t;
|
|
754
|
+
}
|
|
755
|
+
async function $e() {
|
|
756
|
+
try {
|
|
757
|
+
let e = Y();
|
|
758
|
+
if (e && (e.activePath === "hyper-sidecar" || e.activePath === "http-proxy")) return;
|
|
759
|
+
await V();
|
|
760
|
+
} catch {}
|
|
761
|
+
}
|
|
762
|
+
async function $(e, t, n) {
|
|
763
|
+
let r = new AbortController(), i = setTimeout(() => r.abort(), n?.timeoutMs ?? 1e4);
|
|
764
|
+
try {
|
|
765
|
+
let n = await fetch(`${e.replace(/\/$/, "")}/raw/${encodeURIComponent(t)}`, {
|
|
766
|
+
method: "GET",
|
|
767
|
+
credentials: "omit",
|
|
768
|
+
signal: r.signal
|
|
769
|
+
});
|
|
770
|
+
return n.ok ? n : void 0;
|
|
771
|
+
} catch {
|
|
772
|
+
return;
|
|
773
|
+
} finally {
|
|
774
|
+
clearTimeout(i);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
async function et(e, t) {
|
|
778
|
+
let n = /* @__PURE__ */ new Set(), r = async (r) => {
|
|
779
|
+
for (let i of r) {
|
|
780
|
+
if (n.has(i)) continue;
|
|
781
|
+
n.add(i);
|
|
782
|
+
let r = await $(i, e, t);
|
|
783
|
+
if (r) try {
|
|
784
|
+
let e = await r.text();
|
|
785
|
+
if (e.length > 0) return e;
|
|
786
|
+
} catch {}
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
return await r(X()) || (await $e(), r(Q(t)));
|
|
790
|
+
}
|
|
791
|
+
//#endregion
|
|
792
|
+
export { o as ARWEAVE_HOST_ENV_KEYS, d as ArweaveClient, d as BaseArweaveClient, e as DEFAULT_ARWEAVE_GATEWAYS, ee as DEFAULT_ARWEAVE_GRAPHQL_URL, f as DEFAULT_ARWEAVE_HOST, Ze as DEFAULT_ARWEAVE_RAW_READ_TIMEOUT_MS, t as DEFAULT_GATEWAY_SIDECAR_HOST, s as DEFAULT_GATEWAY_SIDECAR_PORT, ne as DEFAULT_SEED_FEED_HYPER_KEY, n as DEFAULT_SEED_GATEWAY_HYPER_KEY, te as GET_ARWEAVE_TRANSACTIONS, l as GET_TRANSACTION_TAGS, _ as SEED_RSS_IMAGE_RELATION_FIELD_KEYS, j as beginGatewayHostHalfOpenProbe, h as classifyMediaRef, ve as configureGatewayCircuitBreaker, $e as ensureArweaveReadGatewayForFallback, V as ensureReadGatewaySelected, $ as fetchArweaveRawFromBaseUrl, et as fetchArweaveRawTextAcrossGateways, Qe as getArweaveReadBaseUrls, r as getArweaveReadGatewayHostsForPrimary, je as getArweaveUploadStatus, fe as getArweaveUrlForTransaction, u as getDefaultArweaveReadGatewayHostsOrdered, g as getFeedItemStringField, ye as getGatewayHostCircuitState, Te as getLastHealthyReadGatewayHost, X as getPreferredArweaveReadBaseUrls, We as getReadGatewayHostsForConfig, Q as getResolvedArweaveReadBaseUrls, Y as getResolvedSeedGatewayEndpoints, U as getUploadApiArweaveDataUrl, W as getUploadApiArweaveStatusUrl, Oe as getUploadPipelineTransactionStatus, R as invalidateReadGatewayCache, Fe as invalidateSidecarProbeCache, Ae as isArweaveL1AnchoringComplete, p as isEasAttestationExplorerUrl, A as isGatewayHostCircuitOpen, c as isKnownArweaveGatewayHostname, we as isReadGatewayKnownHealthy, be as listOpenGatewayCircuitHosts, a as mergePrimaryHostWithDefaults, de as normalizeFeedItemFields, E as normalizeGatewayHostKey, ae as normalizeRelationPropertyValue, H as normalizeUploadApiBaseUrl, z as probeGateway, Me as queryArweaveGatewayTransaction, Ne as queryArweaveGatewayTransactionWithFallback, N as recordGatewayHostFailure, M as recordGatewayHostSuccess, Ce as resetArweaveReadGatewayForTests, k as resetGatewayCircuitBreakerForTests, i as resolveArweaveHostFromEnv, q as resolveProxyBaseUrl, Ue as resolveSeedGatewayEndpoints, se as resolveSeedIdsFromRefString, _e as resolveSeedRssImageRelationFromItem, b as resolveSeedRssImageRelationRef, Xe as seedGatewayConfigFromClientContext, Ye as seedGatewayConfigFromSeedConfig, B as selectFirstHealthyReadGateway, Je as setPreferredArweaveReadBaseUrls, Ke as setResolvedSeedGatewayEndpoints };
|
|
623
793
|
|
|
624
794
|
//# sourceMappingURL=index.js.map
|