@seedprotocol/query 0.7.1 → 0.7.2

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.
Files changed (43) hide show
  1. package/README.md +14 -5
  2. package/dist/{FileCache-BZ2cHsU3.js → FileCache-CQuj0MeF.js} +21 -16
  3. package/dist/FileCache-CQuj0MeF.js.map +1 -0
  4. package/dist/api.d.ts +5 -0
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/assembleSeeds.d.ts +21 -0
  7. package/dist/assembleSeeds.d.ts.map +1 -1
  8. package/dist/cache/CacheManager.d.ts +12 -14
  9. package/dist/cache/CacheManager.d.ts.map +1 -1
  10. package/dist/cache/FileCache.d.ts +4 -2
  11. package/dist/cache/FileCache.d.ts.map +1 -1
  12. package/dist/cache/MemoryCache.d.ts +12 -6
  13. package/dist/cache/MemoryCache.d.ts.map +1 -1
  14. package/dist/cache/changes.d.ts +28 -0
  15. package/dist/cache/changes.d.ts.map +1 -0
  16. package/dist/cache/config.d.ts +9 -0
  17. package/dist/cache/config.d.ts.map +1 -1
  18. package/dist/cache/etag.d.ts +7 -4
  19. package/dist/cache/etag.d.ts.map +1 -1
  20. package/dist/cache/freeze.d.ts +7 -0
  21. package/dist/cache/freeze.d.ts.map +1 -0
  22. package/dist/cache/types.d.ts +34 -7
  23. package/dist/cache/types.d.ts.map +1 -1
  24. package/dist/hydrateArweaveRichText.d.ts +3 -0
  25. package/dist/hydrateArweaveRichText.d.ts.map +1 -1
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -2
  29. package/dist/index.node.js +4 -4
  30. package/dist/index.node.js.map +1 -1
  31. package/dist/node.js +1 -1
  32. package/dist/source/remote.d.ts.map +1 -1
  33. package/dist/source/types.d.ts +19 -1
  34. package/dist/source/types.d.ts.map +1 -1
  35. package/dist/src-CBgjwvGT.js +1207 -0
  36. package/dist/src-CBgjwvGT.js.map +1 -0
  37. package/dist/types-DHRoT30t.js.map +1 -1
  38. package/dist/types.d.ts +30 -7
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +8 -3
  41. package/dist/FileCache-BZ2cHsU3.js.map +0 -1
  42. package/dist/src-BV0eFNvW.js +0 -993
  43. package/dist/src-BV0eFNvW.js.map +0 -1
@@ -0,0 +1,1207 @@
1
+ import { i as e, t } from "./types-DHRoT30t.js";
2
+ import { BaseArweaveClient as n, isKnownArweaveGatewayHostname as r } from "@seedprotocol/arweave";
3
+ import { EasClient as i, GET_SEEDS_LEAN as a, getAttestationChangesSince as o, getItemPropertiesFromEas as s, getItemVersionsFromEas as c, getSeedsBySchemaName as l, getSeedsByUidsFromEas as u, pickLatestPropertyAttestationsByRefAndSchema as d, setSchemaUidForSchemaDefinition as f, withExcludeRevokedFilter as p } from "@seedprotocol/eas";
4
+ import m from "pluralize";
5
+ import { sha256 as h } from "@noble/hashes/sha256";
6
+ import { bytesToHex as g, utf8ToBytes as _ } from "@noble/hashes/utils";
7
+ //#region src/arweaveUrl.ts
8
+ function v(e) {
9
+ return `https://${n.getHost()}/${e}`;
10
+ }
11
+ //#endregion
12
+ //#region src/listRelationKey.ts
13
+ var ee = /^(.+?)([A-Z][a-zA-Z]+)Ids$/;
14
+ function y(e) {
15
+ let t = ee.exec(e);
16
+ if (t) {
17
+ let e = t[1];
18
+ if (e) return m(e);
19
+ }
20
+ if (e.endsWith("_ids")) {
21
+ let t = e.slice(0, -4), n = t.split("_").filter(Boolean);
22
+ if (n.length >= 2) {
23
+ let e = n[0];
24
+ return e.endsWith("s") ? e : m(e);
25
+ }
26
+ return m(t);
27
+ }
28
+ return e;
29
+ }
30
+ function b(e, t) {
31
+ for (let n of Object.keys(e)) n !== t && y(n) === t && delete e[n];
32
+ }
33
+ function x(e) {
34
+ if (Array.isArray(e) || typeof e != "string") return e;
35
+ let t = e.trim();
36
+ if (!t.startsWith("[")) return e;
37
+ try {
38
+ let e = JSON.parse(t);
39
+ if (Array.isArray(e)) return e;
40
+ } catch {}
41
+ return e;
42
+ }
43
+ //#endregion
44
+ //#region src/imageRelationEnrichment.ts
45
+ function te(e) {
46
+ let t = e.storageTransactionId ?? e.storage_transaction_id;
47
+ if (t && typeof t == "string" && t.trim()) try {
48
+ e.arweaveUrl = v(t.trim());
49
+ } catch {}
50
+ }
51
+ var ne = te, S = /* @__PURE__ */ new Set([
52
+ "html",
53
+ "file",
54
+ "json"
55
+ ]), re = S, ie = "_feedFieldStorageModels", ae = "_feedListElementStorageModels";
56
+ function C(e) {
57
+ return e.trim().toLowerCase();
58
+ }
59
+ function w(e) {
60
+ return S.has(C(e));
61
+ }
62
+ var oe = w;
63
+ function se(e) {
64
+ let t = C(e);
65
+ return t === "html" ? 0 : t === "file" ? 1 : t === "json" ? 2 : 99;
66
+ }
67
+ var ce = se;
68
+ function T(e) {
69
+ let t = e[ie];
70
+ if (typeof t == "object" && t && !Array.isArray(t)) return t;
71
+ }
72
+ var le = T;
73
+ function E(e) {
74
+ let t = e[ae];
75
+ if (typeof t == "object" && t && !Array.isArray(t)) return t;
76
+ }
77
+ var ue = E;
78
+ function D(e, t, n) {
79
+ let r = C(n), i = T(e);
80
+ i || (i = {}, e[ie] = i), i[t] = r;
81
+ }
82
+ var de = D;
83
+ function fe(e, t, n) {
84
+ let r = E(e);
85
+ r || (r = {}, e[ae] = r), r[t] = n.map(C);
86
+ }
87
+ var pe = fe, me = [
88
+ "html",
89
+ "Html",
90
+ "body",
91
+ "Body",
92
+ "content",
93
+ "Content"
94
+ ], he = 8e6;
95
+ function ge(e) {
96
+ let t = e.trim();
97
+ if (!t.startsWith("http://") && !t.startsWith("https://")) return !1;
98
+ try {
99
+ let e = new URL(t), i = e.hostname.toLowerCase();
100
+ if (i !== n.getHost().toLowerCase() && !r(i)) return !1;
101
+ let a = e.pathname.replace(/^\//, "").split("/").filter(Boolean);
102
+ if (a.length !== 1) return !1;
103
+ let o = a[0];
104
+ return /^[A-Za-z0-9_-]{43}$/.test(o);
105
+ } catch {
106
+ return !1;
107
+ }
108
+ }
109
+ async function _e(e) {
110
+ try {
111
+ let t = await fetch(e, {
112
+ headers: { Accept: "text/html, text/plain, text/markdown, application/json, */*" },
113
+ signal: AbortSignal.timeout(15e3)
114
+ });
115
+ if (!t.ok) return null;
116
+ let n = t.headers.get("content-type") ?? "";
117
+ if (/^(image|video|audio)\//i.test(n)) return null;
118
+ let r = await t.arrayBuffer();
119
+ if (r.byteLength > he) return null;
120
+ let i = new TextDecoder("utf-8", { fatal: !1 }).decode(r);
121
+ return i.length === 0 || i.includes("\0") ? null : i;
122
+ } catch {
123
+ return null;
124
+ }
125
+ }
126
+ var ve = 32e6, O = /* @__PURE__ */ new Map(), k = 0, A = /* @__PURE__ */ new Map();
127
+ function ye() {
128
+ O.clear(), k = 0, A.clear();
129
+ }
130
+ function be(e, t) {
131
+ if (!(t.length > ve)) {
132
+ O.set(e, t), k += t.length;
133
+ for (let [e, t] of O) {
134
+ if (k <= ve) break;
135
+ O.delete(e), k -= t.length;
136
+ }
137
+ }
138
+ }
139
+ async function xe(e) {
140
+ let t = new URL(e.trim()).pathname.replace(/^\//, ""), n = O.get(t);
141
+ if (n !== void 0) return O.delete(t), O.set(t, n), n;
142
+ let r = A.get(t);
143
+ if (r) return r;
144
+ let i = _e(e).then((e) => (e !== null && A.get(t) === i && be(t, e), e)).finally(() => {
145
+ A.get(t) === i && A.delete(t);
146
+ });
147
+ return A.set(t, i), i;
148
+ }
149
+ async function Se(e, t, n) {
150
+ if (n) try {
151
+ let r = await n({
152
+ propertyName: e,
153
+ value: t
154
+ });
155
+ if (r != null && r.length > 0) return r;
156
+ } catch {}
157
+ return ge(t) ? xe(t) : null;
158
+ }
159
+ var Ce = 8;
160
+ async function we(e, t) {
161
+ let n = 0;
162
+ await Promise.all(Array.from({ length: Math.min(t, e.length) }, async () => {
163
+ for (; n < e.length;) await e[n++]();
164
+ }));
165
+ }
166
+ async function j(e, t) {
167
+ let n = t?.readStorageBody, r = [];
168
+ for (let t of e) {
169
+ let e = /* @__PURE__ */ new Set([...me]), i = T(t);
170
+ if (i) for (let [t, n] of Object.entries(i)) w(n) && e.add(t);
171
+ for (let i of e) {
172
+ let e = t[i];
173
+ typeof e == "string" && e.trim() !== "" && r.push(async () => {
174
+ let r = await Se(i, e, n);
175
+ r !== null && (t[i] = r);
176
+ });
177
+ }
178
+ let a = E(t);
179
+ if (a) for (let [e, i] of Object.entries(a)) {
180
+ let a = t[e];
181
+ if (!Array.isArray(a)) continue;
182
+ let o = Math.min(i.length, a.length);
183
+ for (let t = 0; t < o; t++) {
184
+ if (!w(i[t])) continue;
185
+ let o = a[t];
186
+ typeof o == "string" && r.push(async () => {
187
+ let r = await Se(e, o, n);
188
+ r !== null && (a[t] = r);
189
+ });
190
+ }
191
+ }
192
+ }
193
+ await we(r, Ce);
194
+ }
195
+ var Te = j;
196
+ //#endregion
197
+ //#region src/parseEasPropertyMetadata.ts
198
+ function M(e) {
199
+ let t = typeof e == "string" ? e.trim() : "";
200
+ if (!t) return {
201
+ ok: !1,
202
+ reason: "empty"
203
+ };
204
+ let n;
205
+ try {
206
+ n = JSON.parse(t);
207
+ } catch (e) {
208
+ return {
209
+ ok: !1,
210
+ reason: "parse",
211
+ error: e
212
+ };
213
+ }
214
+ return !Array.isArray(n) || n.length === 0 || !n[0]?.value ? {
215
+ ok: !1,
216
+ reason: "shape"
217
+ } : {
218
+ ok: !0,
219
+ metadata: n[0].value
220
+ };
221
+ }
222
+ var Ee = M;
223
+ //#endregion
224
+ //#region src/parseEasRelationPropertyName.ts
225
+ function N(e) {
226
+ let [t, n, r] = e.split("_");
227
+ if (!t || !n) return null;
228
+ let i = r === "ids";
229
+ return {
230
+ propertyName: i ? t.endsWith("s") ? t : m(t) : t,
231
+ modelName: n,
232
+ isList: i
233
+ };
234
+ }
235
+ //#endregion
236
+ //#region src/source/remote.ts
237
+ function De(e, t) {
238
+ let n = new Date(e, t - 1, 1), r = new Date(e, t, 0, 23, 59, 59);
239
+ return {
240
+ startTs: Math.floor(n.getTime() / 1e3),
241
+ endTs: Math.floor(r.getTime() / 1e3) + 1
242
+ };
243
+ }
244
+ function Oe() {
245
+ return {
246
+ kind: "remote",
247
+ async getSeedByUid(e) {
248
+ let [t] = await u({ uids: [e] });
249
+ return t ?? null;
250
+ },
251
+ async listSeedsBySchemaName(e, t) {
252
+ return await l(e, t.limit, t.skip);
253
+ },
254
+ async listSeedsByUidPrefix(e, t, n) {
255
+ return await l(e, n.limit, n.skip, { uidPrefix: t });
256
+ },
257
+ async listSeedsBySchemaNameForMonth(e, t, n) {
258
+ let { startTs: r, endTs: o } = De(t, n), s = p({ AND: [{ schema: { is: { schemaNames: { some: { name: { equals: e } } } } } }, { timeCreated: {
259
+ gte: r,
260
+ lt: o
261
+ } }] }), { itemSeeds: c } = await i.getEasClient().request(a, {
262
+ where: s,
263
+ take: 1e3,
264
+ skip: 0
265
+ });
266
+ return (c ?? []).map((t) => ({
267
+ ...t,
268
+ schema: { schemaNames: [{ name: e }] }
269
+ }));
270
+ },
271
+ async getVersionsForSeed(e) {
272
+ return await c({ seedUids: [e] });
273
+ },
274
+ async getVersionsForSeeds(e, t) {
275
+ return e.length === 0 ? [] : await c({
276
+ seedUids: e,
277
+ excludeRevoked: !t?.includeRevoked
278
+ });
279
+ },
280
+ async getPropertiesForVersionUids(e) {
281
+ return e.length === 0 ? [] : await s({ versionUids: e });
282
+ },
283
+ async getSeedsByUids(e) {
284
+ return e.length === 0 ? [] : await u({ uids: e });
285
+ },
286
+ async listChangesSince(e) {
287
+ return o(e);
288
+ }
289
+ };
290
+ }
291
+ var ke = null;
292
+ function P() {
293
+ return ke ||= Oe(), ke;
294
+ }
295
+ //#endregion
296
+ //#region src/assembleSeeds.ts
297
+ var F = "image", I = ["0x0000000000000000000000000000000000000000000000000000000000000020"], Ae = /* @__PURE__ */ new Set([
298
+ "seedUid",
299
+ "SeedUid",
300
+ "timeCreated",
301
+ "attester",
302
+ "Attester",
303
+ "storage_transaction_id",
304
+ "storage_provider_transaction_id",
305
+ "storageTransactionId",
306
+ "storageProviderTransactionId",
307
+ "versionUid"
308
+ ]), L = (e) => e.replace(/_([a-z])/g, (e, t) => t.toUpperCase());
309
+ function je() {
310
+ return {
311
+ seedUidToModelType: /* @__PURE__ */ new Map(),
312
+ relatedSeedUids: /* @__PURE__ */ new Set(),
313
+ relatedSeedUidsBySeedUid: /* @__PURE__ */ new Map(),
314
+ versionUidToSeedUid: /* @__PURE__ */ new Map(),
315
+ assembledItems: /* @__PURE__ */ new Map(),
316
+ versionsBySeedUid: /* @__PURE__ */ new Map(),
317
+ latestVersionUidsBySeedUid: /* @__PURE__ */ new Map(),
318
+ droppedSeedUids: /* @__PURE__ */ new Set()
319
+ };
320
+ }
321
+ function R(e, t) {
322
+ !e.seedUid && !e.SeedUid ? (e.seedUid = t, e.SeedUid = t) : e.seedUid && !e.SeedUid ? e.SeedUid = e.seedUid : e.SeedUid && !e.seedUid && (e.seedUid = e.SeedUid), e.attester && !e.Attester ? e.Attester = e.attester : e.Attester && !e.attester && (e.attester = e.Attester);
323
+ }
324
+ function Me(e, t, n) {
325
+ e.relatedSeedUids.add(n);
326
+ let r = e.versionUidToSeedUid.get(t.refUID);
327
+ if (!r) return;
328
+ let i = e.relatedSeedUidsBySeedUid.get(r) ?? /* @__PURE__ */ new Set();
329
+ i.add(n), e.relatedSeedUidsBySeedUid.set(r, i);
330
+ }
331
+ async function Ne(e, t) {
332
+ let n = M(t.decodedDataJson);
333
+ if (!n.ok) {
334
+ let { id: e, refUID: r, schemaId: i } = t;
335
+ n.reason === "empty" ? console.warn("[query] [processItemProperty] empty decodedDataJson for property:", e, r, i) : n.reason === "parse" ? console.warn("[query] [processItemProperty] failed to parse decodedDataJson for property:", e, r, i, n.error) : console.warn("[query] [processItemProperty] invalid decodedDataJson structure for property:", e, r, i);
336
+ return;
337
+ }
338
+ let r = n.metadata, i = r.name;
339
+ if (!i) return;
340
+ let a = t.schemaId;
341
+ f({
342
+ text: i,
343
+ schemaUid: a
344
+ });
345
+ let o = !1, s = !1, c = r.type, l = (c === "bytes32" || c === "bytes32[]") && i !== "storage_transaction_id" && i !== "storage_provider_transaction_id", u = !l && (i.endsWith("_id") || i.endsWith("_ids")) && i !== "storage_transaction_id" && i !== "storage_provider_transaction_id";
346
+ if (l || u) {
347
+ if (o = !0, Array.isArray(r.value)) {
348
+ if (s = !0, u) {
349
+ let e = N(i);
350
+ e && (i = e.propertyName);
351
+ }
352
+ r.value.forEach((n) => {
353
+ I.includes(n) || Me(e, t, n);
354
+ });
355
+ } else I.includes(r.value) || Me(e, t, r.value);
356
+ }
357
+ let d = r.value;
358
+ o && s && Array.isArray(d) ? d = d.map((e) => String(e)) : typeof d != "string" && (d = JSON.stringify(d));
359
+ let p = e.versionUidToSeedUid.get(t.refUID);
360
+ if (!p) return;
361
+ let m = e.assembledItems.get(p) || {};
362
+ m[i] = d;
363
+ let h = L(i);
364
+ h !== i && (m[h] = d), e.assembledItems.set(p, m);
365
+ }
366
+ async function Pe(e, t, n, r = {}) {
367
+ let i = [];
368
+ for (let n = 0; n < t.length; n++) {
369
+ let r = t[n];
370
+ if (!r) continue;
371
+ i.push(r.id);
372
+ let a = r.schema?.schemaNames?.[0]?.name ?? "unknown";
373
+ e.seedUidToModelType.set(r.id, a), e.assembledItems.has(r.id) || e.assembledItems.set(r.id, {
374
+ seedUid: r.id,
375
+ timeCreated: r.timeCreated,
376
+ attester: r.attester
377
+ });
378
+ }
379
+ if (i.length === 0) return;
380
+ let a = new Set(i), o = r.versions ? r.versions.filter((e) => a.has(e.refUID)) : await n.getVersionsForSeeds(i, { includeRevoked: !0 }), s = o.filter((e) => e.revoked !== !0);
381
+ if (r.dropSeedsWithOnlyRevokedVersions) {
382
+ let t = new Set(s.map((e) => e.refUID));
383
+ for (let n of o) {
384
+ let r = n.refUID;
385
+ !t.has(r) && a.has(r) && (e.assembledItems.delete(r), e.seedUidToModelType.delete(r), e.droppedSeedUids.add(r));
386
+ }
387
+ }
388
+ for (let t = 0; t < s.length; t++) {
389
+ let n = s[t], r = n.refUID;
390
+ e.versionUidToSeedUid.set(n.id, r);
391
+ let i = e.versionsBySeedUid.get(r) || [];
392
+ e.versionsBySeedUid.set(r, [...i, n]);
393
+ }
394
+ let c = [];
395
+ for (let [t, n] of e.versionsBySeedUid.entries()) {
396
+ if (e.latestVersionUidsBySeedUid.has(t)) continue;
397
+ let r = [...n].sort((e, t) => t.timeCreated - e.timeCreated)[0];
398
+ r && (c.push(r.id), e.latestVersionUidsBySeedUid.set(t, r.id));
399
+ }
400
+ if (c.length === 0) return;
401
+ let l = await n.getPropertiesForVersionUids(c), u = d(l);
402
+ for (let t = 0; t < u.length; t++) await Ne(e, u[t]);
403
+ }
404
+ function Fe(e, t) {
405
+ let n = Array.from(e.assembledItems.entries()).filter(([n]) => e.seedUidToModelType.get(n) === t);
406
+ for (let [, t] of n) {
407
+ let n = Object.keys(t).filter((e) => !e.startsWith("_") && !Ae.has(e));
408
+ for (let r of n) {
409
+ let n = t[r], i = x(n);
410
+ if (i !== n && Array.isArray(i) && (t[r] = i, n = i), Array.isArray(n)) {
411
+ let i = n;
412
+ if (!i.some((t) => typeof t == "string" && !I.includes(t) && e.assembledItems.has(t))) continue;
413
+ let a = [], o = [], s = !1;
414
+ for (let t of i) {
415
+ if (typeof t != "string" || I.includes(t)) {
416
+ a.push(String(t)), o.push("unknown");
417
+ continue;
418
+ }
419
+ let n = e.seedUidToModelType.get(t) ?? "unknown";
420
+ if (n === F) {
421
+ a.push(t), o.push(F);
422
+ continue;
423
+ }
424
+ let r = e.assembledItems.get(t), i = r?.storageTransactionId ?? r?.storage_transaction_id;
425
+ if (i && typeof i == "string" && i.trim()) try {
426
+ a.push(v(i)), o.push(n), s = !0;
427
+ } catch {
428
+ a.push(t), o.push(n);
429
+ }
430
+ else a.push(t), o.push(n);
431
+ }
432
+ if (s) {
433
+ let e = y(r);
434
+ if (t[e] = a, fe(t, e, o), b(t, e), e !== r) {
435
+ delete t[r];
436
+ let e = L(r);
437
+ e !== r && delete t[e];
438
+ }
439
+ }
440
+ } else if (typeof n == "string") {
441
+ if (I.includes(n) || !e.assembledItems.has(n)) continue;
442
+ let i = e.assembledItems.get(n);
443
+ if (e.seedUidToModelType.get(n) === F) continue;
444
+ let a = i?.storageTransactionId ?? i?.storage_transaction_id;
445
+ if (a && typeof a == "string" && a.trim()) try {
446
+ let i = r.endsWith("_id") ? r.replace(/_id$/, "") : r;
447
+ t[i] = v(a);
448
+ let o = e.seedUidToModelType.get(n) ?? "unknown";
449
+ D(t, i, o);
450
+ let s = L(i);
451
+ if (s !== i && D(t, s, o), i !== r) {
452
+ delete t[r];
453
+ let e = L(r);
454
+ e !== r && delete t[e];
455
+ }
456
+ } catch {}
457
+ }
458
+ }
459
+ }
460
+ }
461
+ function Ie(e, t, n) {
462
+ if (!n) return;
463
+ let r = Array.from(e.assembledItems.entries()).filter(([n]) => e.seedUidToModelType.get(n) === t);
464
+ for (let [, t] of r) {
465
+ let n = Object.keys(t).filter((e) => !e.startsWith("_") && !Ae.has(e));
466
+ for (let r of n) {
467
+ let n = t[r], i = x(n);
468
+ i !== n && Array.isArray(i) && (t[r] = i, n = i);
469
+ let a = Array.isArray(n), o = a ? n : [n], s = [], c = !1;
470
+ for (let t of o) {
471
+ if (typeof t != "string" || I.includes(t)) {
472
+ s.push(t);
473
+ continue;
474
+ }
475
+ let n = e.assembledItems.get(t);
476
+ if (!n) {
477
+ s.push(t);
478
+ continue;
479
+ }
480
+ let r = n?.storageTransactionId ?? n?.storage_transaction_id;
481
+ if (e.seedUidToModelType.get(t) === F) {
482
+ let e = { ...n };
483
+ R(e, t), e.schemaName = F, te(e), s.push(e), c = !0;
484
+ continue;
485
+ }
486
+ if (r && typeof r == "string" && r.trim()) {
487
+ s.push(t);
488
+ continue;
489
+ }
490
+ let i = { ...n };
491
+ R(i, t), s.push(i), c = !0;
492
+ }
493
+ if (c) {
494
+ let e = a ? y(r) : r.endsWith("_id") ? r.replace(/_id$/, "") : r;
495
+ if (t[e] = a ? s : s[0], b(t, e), e !== r) {
496
+ delete t[r];
497
+ let e = L(r);
498
+ e !== r && delete t[e];
499
+ }
500
+ }
501
+ }
502
+ }
503
+ }
504
+ function Le(e, t) {
505
+ return Array.from(e.assembledItems.entries()).filter(([n]) => e.seedUidToModelType.get(n) === t).map(([n, r]) => {
506
+ let i = e.latestVersionUidsBySeedUid.get(n) ?? "";
507
+ i && (r.versionUid = i), R(r, n);
508
+ let a = typeof r.timeCreated == "number" ? r.timeCreated : 0;
509
+ return {
510
+ seedUid: n,
511
+ schemaName: t,
512
+ attester: typeof r.attester == "string" ? r.attester : typeof r.Attester == "string" ? r.Attester : void 0,
513
+ timeCreated: a,
514
+ versionUid: i,
515
+ data: r
516
+ };
517
+ });
518
+ }
519
+ function Re(e, t) {
520
+ let n = [t, ...e.relatedSeedUidsBySeedUid.get(t) ?? []], r = n.map((t) => e.latestVersionUidsBySeedUid.get(t)).filter((e) => !!e);
521
+ return {
522
+ refUIDs: [...n, ...r],
523
+ ids: n
524
+ };
525
+ }
526
+ async function z(e, t, n, r = P(), i) {
527
+ let a = n?.expandRelations !== !1, o = n?.hydrateStorage !== !1, s = je();
528
+ await Pe(s, t, r, {
529
+ dropSeedsWithOnlyRevokedVersions: !0,
530
+ versions: i?.versions
531
+ });
532
+ let c = Array.from(s.relatedSeedUids).filter((e) => !s.assembledItems.has(e) && !s.droppedSeedUids.has(e));
533
+ if (c.length > 0) {
534
+ let [e, t] = await Promise.all([r.getSeedsByUids(c), r.getVersionsForSeeds(c, { includeRevoked: !0 })]);
535
+ await Pe(s, e, r, { versions: t });
536
+ }
537
+ Fe(s, e), Ie(s, e, a);
538
+ let l = Le(s, e);
539
+ return o && await j(l.map((e) => e.data), r.readStorageBody ? { readStorageBody: r.readStorageBody.bind(r) } : void 0), {
540
+ records: l,
541
+ dependencies: new Map(l.map((e) => [e.seedUid, Re(s, e.seedUid)]))
542
+ };
543
+ }
544
+ async function ze(e, t, n, r = P()) {
545
+ return (await z(e, t, n, r)).records;
546
+ }
547
+ //#endregion
548
+ //#region src/changelog.ts
549
+ var Be = (e) => e.replace(/_([a-z])/g, (e, t) => t.toUpperCase());
550
+ function B(e, t) {
551
+ if (Object.is(e, t)) return !0;
552
+ if (e === void 0 || t === void 0) return !1;
553
+ if (e === null || t === null) return e === t;
554
+ if (typeof e != typeof t || typeof e != "object") return !1;
555
+ try {
556
+ return JSON.stringify(e) === JSON.stringify(t);
557
+ } catch {
558
+ return !1;
559
+ }
560
+ }
561
+ function V(e) {
562
+ let t = M(e.decodedDataJson);
563
+ if (!t.ok) return null;
564
+ let n = t.metadata, r = n.name;
565
+ if (!r) return null;
566
+ let i = n.type, a = (i === "bytes32" || i === "bytes32[]") && r !== "storage_transaction_id" && r !== "storage_provider_transaction_id", o = !a && (r.endsWith("_id") || r.endsWith("_ids")) && r !== "storage_transaction_id" && r !== "storage_provider_transaction_id", s = !1, c = !1;
567
+ if ((a || o) && (s = !0, Array.isArray(n.value) && (c = !0, o))) {
568
+ let e = N(r);
569
+ e?.isList && (r = e.propertyName);
570
+ }
571
+ let l = n.value;
572
+ s && c && Array.isArray(l) ? l = l.map((e) => String(e)) : typeof l != "string" && (l = JSON.stringify(l));
573
+ let u = Be(r);
574
+ return {
575
+ propertyName: r,
576
+ value: l,
577
+ camelName: u === r ? void 0 : u
578
+ };
579
+ }
580
+ function Ve(e) {
581
+ let t = {};
582
+ for (let n of e) {
583
+ let e = V(n);
584
+ e && (t[e.propertyName] = e.value, e.camelName && (t[e.camelName] = e.value));
585
+ }
586
+ return t;
587
+ }
588
+ function He(e) {
589
+ let t = [], n = {};
590
+ for (let r of e) {
591
+ let e = r.data, i = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(e)]), a = [];
592
+ for (let t of i) B(n[t], e[t]) || a.push(t);
593
+ a.sort(), t.push({
594
+ type: "version",
595
+ at: r.at,
596
+ versionUid: r.versionUid,
597
+ before: { ...n },
598
+ after: { ...e },
599
+ changedKeys: a
600
+ }), n = e;
601
+ }
602
+ return t;
603
+ }
604
+ function Ue(e) {
605
+ let t = [...e].sort((e, t) => e.timeCreated === t.timeCreated ? e.id.localeCompare(t.id) : e.timeCreated - t.timeCreated), n = /* @__PURE__ */ new Map(), r = [];
606
+ for (let e of t) {
607
+ let t = V(e);
608
+ if (!t) continue;
609
+ let i = [t.propertyName];
610
+ t.camelName && i.push(t.camelName);
611
+ let a = n.has(t.propertyName) ? n.get(t.propertyName) : void 0, o = t.value;
612
+ B(a, o) || r.push({
613
+ type: "property",
614
+ at: e.timeCreated,
615
+ versionUid: e.refUID,
616
+ property: t.propertyName,
617
+ attestationUid: e.id,
618
+ previousValue: a,
619
+ nextValue: o
620
+ }), n.set(t.propertyName, o), t.camelName && n.set(t.camelName, o);
621
+ }
622
+ return r;
623
+ }
624
+ function We(e, t) {
625
+ let n = e;
626
+ if (typeof t?.since == "number") {
627
+ let e = t.since;
628
+ n = n.filter((t) => t.at >= e);
629
+ }
630
+ return typeof t?.limit == "number" && t.limit >= 0 && (n = [...n].sort((e, t) => t.at === e.at ? 0 : t.at - e.at).slice(0, t.limit).reverse()), n;
631
+ }
632
+ //#endregion
633
+ //#region src/assembleChangelog.ts
634
+ async function Ge(e, t, n = P()) {
635
+ let r = t?.changelog ?? {}, i = r.granularity ?? "version", a = [...await n.getVersionsForSeed(e)].sort((e, t) => e.timeCreated - t.timeCreated);
636
+ if (a.length === 0) return {
637
+ latestVersionUid: "",
638
+ changelog: []
639
+ };
640
+ let o = a[a.length - 1].id, s = a.map((e) => e.id), c = await n.getPropertiesForVersionUids(s), l;
641
+ if (i === "property") l = Ue(c);
642
+ else {
643
+ let e = /* @__PURE__ */ new Map();
644
+ for (let t of c) {
645
+ let n = e.get(t.refUID) ?? [];
646
+ n.push(t), e.set(t.refUID, n);
647
+ }
648
+ let t = [];
649
+ for (let n of a) {
650
+ let r = e.get(n.id) ?? [], i = d(r);
651
+ t.push({
652
+ versionUid: n.id,
653
+ at: n.timeCreated,
654
+ data: Ve(i)
655
+ });
656
+ }
657
+ l = He(t);
658
+ }
659
+ return {
660
+ latestVersionUid: o,
661
+ changelog: We(l, r)
662
+ };
663
+ }
664
+ //#endregion
665
+ //#region src/cache/etag.ts
666
+ function Ke(e) {
667
+ return `"${g(h(_(e))).substring(0, 16)}"`;
668
+ }
669
+ function qe(e, t, n) {
670
+ return Ke(`${e}-${t}-${n.join(",")}`);
671
+ }
672
+ function Je(e, t) {
673
+ return Ke(`${t}-${Ye(e)}`);
674
+ }
675
+ function Ye(e) {
676
+ return JSON.stringify(e, (e, t) => t && typeof t == "object" && !Array.isArray(t) ? Object.fromEntries(Object.keys(t).sort().map((e) => [e, t[e]])) : t);
677
+ }
678
+ //#endregion
679
+ //#region src/cache/config.ts
680
+ function Xe() {
681
+ return globalThis.process?.env ?? {};
682
+ }
683
+ function Ze() {
684
+ return Xe().NODE_ENV !== "production";
685
+ }
686
+ function H() {
687
+ let e = Xe(), t = parseInt(e.CACHE_TTL || "3600", 10), n = e.CACHE_DIR || "./cache", r = e.CACHE_ENABLED === "false" || e.CACHE_ENABLED === "0" || e.CACHE_ENABLED === "no" || e.CACHE_ENABLED === "off", i = e.CACHE_ENABLED === "true" || e.CACHE_ENABLED === "1" || e.CACHE_ENABLED === "yes", a = e.NODE_ENV === "development", o;
688
+ o = r ? !1 : i ? !0 : !a;
689
+ let s = e.CACHE_BACKGROUND_REFRESH === "true", c = parseInt(e.CACHE_REFRESH_INTERVAL || "300", 10);
690
+ return {
691
+ ttl: t,
692
+ cacheDir: n,
693
+ enabled: o,
694
+ backgroundRefresh: s,
695
+ refreshInterval: c,
696
+ freezeRecords: Ze()
697
+ };
698
+ }
699
+ //#endregion
700
+ //#region src/cache/freeze.ts
701
+ function U(e) {
702
+ if (typeof e != "object" || !e || Object.isFrozen(e) || ArrayBuffer.isView(e)) return e;
703
+ for (let t of Object.values(e)) U(t);
704
+ return Object.freeze(e);
705
+ }
706
+ //#endregion
707
+ //#region src/cache/MemoryCache.ts
708
+ var Qe = class {
709
+ collectionCache = /* @__PURE__ */ new Map();
710
+ itemCache = /* @__PURE__ */ new Map();
711
+ config;
712
+ refreshLocks = /* @__PURE__ */ new Map();
713
+ constructor(e) {
714
+ this.config = e;
715
+ }
716
+ collectionKey(e, t) {
717
+ return `${e}\n${t}`;
718
+ }
719
+ itemKey(e, t) {
720
+ return `${e}:${t}`;
721
+ }
722
+ get freezeRecords() {
723
+ return this.config.freezeRecords ?? Ze();
724
+ }
725
+ expired(e) {
726
+ return Math.floor(Date.now() / 1e3) - e > this.config.ttl;
727
+ }
728
+ getCollection(e, t) {
729
+ let n = this.collectionKey(e, t), r = this.collectionCache.get(n);
730
+ return r ? this.expired(r.lastUpdated) ? (this.collectionCache.delete(n), null) : r : null;
731
+ }
732
+ setCollection(e, t, n) {
733
+ if (this.freezeRecords) for (let e of n.items) U(e);
734
+ this.collectionCache.set(this.collectionKey(e, t), n);
735
+ }
736
+ getItem(e, t) {
737
+ let n = this.itemKey(e, t), r = this.itemCache.get(n);
738
+ return r ? this.expired(r.lastUpdated) ? (this.itemCache.delete(n), null) : r : null;
739
+ }
740
+ setItem(e) {
741
+ this.freezeRecords && U(e.record), this.itemCache.set(this.itemKey(e.record.seedUid, e.optionsKey), e);
742
+ }
743
+ clearCollection(e) {
744
+ for (let t of this.collectionCache.keys()) t.startsWith(`${e}\n`) && this.collectionCache.delete(t);
745
+ }
746
+ clearItem(e, t) {
747
+ if (t) this.itemCache.delete(this.itemKey(e, t));
748
+ else for (let t of this.itemCache.keys()) t.startsWith(`${e}:`) && this.itemCache.delete(t);
749
+ }
750
+ clearAll() {
751
+ this.collectionCache.clear(), this.itemCache.clear();
752
+ }
753
+ async withRefreshLock(e, t) {
754
+ let n = this.refreshLocks.get(e);
755
+ if (n) return n;
756
+ let r = (async () => {
757
+ try {
758
+ return await t();
759
+ } finally {
760
+ this.refreshLocks.delete(e);
761
+ }
762
+ })();
763
+ return this.refreshLocks.set(e, r), r;
764
+ }
765
+ updateConfig(e) {
766
+ this.config = {
767
+ ...this.config,
768
+ ...e
769
+ };
770
+ }
771
+ getStats() {
772
+ return {
773
+ collectionCount: this.collectionCache.size,
774
+ itemCount: this.itemCache.size,
775
+ activeLocks: this.refreshLocks.size
776
+ };
777
+ }
778
+ }, $e = () => null;
779
+ function et(e) {
780
+ $e = e;
781
+ }
782
+ function tt(e) {
783
+ let t = e;
784
+ return !!t && Array.isArray(t.items) && typeof t.meta == "object" && t.meta !== null && typeof t.checkedAt == "number" && Array.isArray(t.seenChangeKeys);
785
+ }
786
+ function nt(e) {
787
+ let t = e;
788
+ return !!t && !!t.record && !!t.dependencies && typeof t.checkedAt == "number" && Array.isArray(t.seenChangeKeys);
789
+ }
790
+ var W = class {
791
+ memoryCache;
792
+ persistent;
793
+ config;
794
+ stats = {
795
+ hits: 0,
796
+ misses: 0,
797
+ refreshes: 0,
798
+ errors: 0
799
+ };
800
+ constructor(e, t) {
801
+ this.config = e, this.memoryCache = new Qe(e), this.persistent = t === void 0 ? $e(e) : t;
802
+ }
803
+ get enabled() {
804
+ return this.config.enabled;
805
+ }
806
+ getConfig() {
807
+ return { ...this.config };
808
+ }
809
+ async getCollection(e, t) {
810
+ if (!this.config.enabled) return null;
811
+ try {
812
+ let n = this.memoryCache.getCollection(e, t);
813
+ if (n) return this.stats.hits++, n;
814
+ let r = await this.persistent?.getCollection(e, t) ?? null;
815
+ return tt(r) ? (this.memoryCache.setCollection(e, t, r), this.stats.hits++, r) : (this.stats.misses++, null);
816
+ } catch (t) {
817
+ return console.error(`Error getting query collection cache for ${e}:`, t), this.stats.errors++, null;
818
+ }
819
+ }
820
+ async setCollection(e, t, n) {
821
+ if (!this.config.enabled) return null;
822
+ try {
823
+ let r = n.items.map((e) => ({
824
+ ...e,
825
+ data: { ...e.data }
826
+ })), i = qe(e, t, r.map((e) => Je(e, t))), a = {
827
+ ...n,
828
+ items: r,
829
+ etag: i
830
+ };
831
+ return this.memoryCache.setCollection(e, t, a), await this.persistent?.setCollection(e, t, a), a;
832
+ } catch (t) {
833
+ return console.error(`Error setting query collection cache for ${e}:`, t), this.stats.errors++, null;
834
+ }
835
+ }
836
+ async getItem(e, t) {
837
+ if (!this.config.enabled) return null;
838
+ try {
839
+ let n = this.memoryCache.getItem(e, t);
840
+ if (n) return this.stats.hits++, n;
841
+ let r = await this.persistent?.getItem(e, t) ?? null;
842
+ return nt(r) ? (this.memoryCache.setItem(r), this.stats.hits++, r) : (this.stats.misses++, null);
843
+ } catch (t) {
844
+ return console.error(`Error getting query item cache for ${e}:`, t), this.stats.errors++, null;
845
+ }
846
+ }
847
+ async setItem(e) {
848
+ if (!this.config.enabled) return null;
849
+ try {
850
+ let t = {
851
+ ...e.record,
852
+ data: { ...e.record.data },
853
+ ...e.record.changelog && { changelog: [...e.record.changelog] }
854
+ }, n = {
855
+ ...e,
856
+ record: t,
857
+ etag: Je(t, e.optionsKey)
858
+ };
859
+ return this.memoryCache.setItem(n), await this.persistent?.setItem(n), n;
860
+ } catch (t) {
861
+ return console.error(`Error setting query item cache for ${e.record.seedUid}:`, t), this.stats.errors++, null;
862
+ }
863
+ }
864
+ async writeThroughItems(e) {
865
+ if (this.config.enabled) for (let t of e) await this.setItem(t);
866
+ }
867
+ async clearItem(e, t) {
868
+ this.memoryCache.clearItem(e, t), await this.persistent?.clearItem(e, t);
869
+ }
870
+ async clearCollection(e) {
871
+ this.memoryCache.clearCollection(e), await this.persistent?.clearCollection(e);
872
+ }
873
+ async clearAll() {
874
+ this.memoryCache.clearAll(), await this.persistent?.clearAll();
875
+ }
876
+ async withRefreshLock(e, t) {
877
+ return this.memoryCache.withRefreshLock(e, t);
878
+ }
879
+ recordRefresh() {
880
+ this.stats.refreshes++;
881
+ }
882
+ updateConfig(e) {
883
+ this.config = {
884
+ ...this.config,
885
+ ...e
886
+ }, this.memoryCache.updateConfig(this.config);
887
+ }
888
+ getStats() {
889
+ return {
890
+ ...this.stats,
891
+ memoryStats: this.memoryCache.getStats()
892
+ };
893
+ }
894
+ resetStats() {
895
+ this.stats = {
896
+ hits: 0,
897
+ misses: 0,
898
+ refreshes: 0,
899
+ errors: 0
900
+ };
901
+ }
902
+ }, G = null;
903
+ function K() {
904
+ return G ||= new W(H()), G;
905
+ }
906
+ function rt() {
907
+ G = null;
908
+ }
909
+ function it(e, t) {
910
+ return new W({
911
+ ...H(),
912
+ ...e
913
+ }, t);
914
+ }
915
+ function q() {
916
+ return Math.floor(Date.now() / 1e3);
917
+ }
918
+ function J(e) {
919
+ return e - 600;
920
+ }
921
+ function at(e, t) {
922
+ return J(t) - e.checkedAt > 600;
923
+ }
924
+ var ot = (e) => `${e.id}:${e.revocationTime}`;
925
+ async function st(e, t, n) {
926
+ if (!e.listChangesSince) return null;
927
+ if (t.size === 0) return {
928
+ changed: /* @__PURE__ */ new Set(),
929
+ seenChangeKeys: n.seenChangeKeys
930
+ };
931
+ let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = (e, t, n) => {
932
+ let r = e.get(t);
933
+ r ? r.push(n) : e.set(t, [n]);
934
+ };
935
+ for (let [e, n] of t) {
936
+ for (let t of n.refUIDs) a(r, t, e);
937
+ for (let t of n.ids) a(i, t, e);
938
+ }
939
+ let o = await e.listChangesSince({
940
+ refUIDs: [...r.keys()],
941
+ ids: [...i.keys()],
942
+ since: n.checkedAt
943
+ }), s = new Set(n.seenChangeKeys), c = /* @__PURE__ */ new Set();
944
+ for (let e of o) if (!s.has(ot(e))) {
945
+ for (let t of r.get(e.refUID) ?? []) c.add(t);
946
+ for (let t of i.get(e.id) ?? []) c.add(t);
947
+ }
948
+ return {
949
+ changed: c,
950
+ seenChangeKeys: o.map(ot)
951
+ };
952
+ }
953
+ //#endregion
954
+ //#region src/source/registry.ts
955
+ var Y = null;
956
+ function ct(e) {
957
+ if (e.kind !== "local") throw Error("[query] registerLocalQuerySource expects a source with kind: \"local\"");
958
+ Y = e;
959
+ }
960
+ function lt() {
961
+ Y = null;
962
+ }
963
+ function ut() {
964
+ return Y;
965
+ }
966
+ function dt() {
967
+ return Y != null;
968
+ }
969
+ //#endregion
970
+ //#region src/source/resolve.ts
971
+ function X(e = "remote") {
972
+ if (e === "remote") return {
973
+ mode: "remote",
974
+ dataSource: P(),
975
+ useQueryCache: !0
976
+ };
977
+ let t = ut();
978
+ if (e === "local") {
979
+ if (!t) throw Error("[query] source: \"local\" requires registerLocalQuerySource(...) (e.g. SDK DB ready)");
980
+ return {
981
+ mode: "local",
982
+ dataSource: t,
983
+ useQueryCache: !1
984
+ };
985
+ }
986
+ return t ? {
987
+ mode: "auto",
988
+ dataSource: t,
989
+ useQueryCache: !1
990
+ } : {
991
+ mode: "auto",
992
+ dataSource: P(),
993
+ useQueryCache: !0
994
+ };
995
+ }
996
+ function Z(e) {
997
+ return e ?? "remote";
998
+ }
999
+ //#endregion
1000
+ //#region src/api.ts
1001
+ var Q = {
1002
+ refUIDs: [],
1003
+ ids: []
1004
+ };
1005
+ function $(e, t) {
1006
+ return !t || e?.cache === !1 ? !1 : K().enabled;
1007
+ }
1008
+ function ft(e) {
1009
+ return e === "data+changelog" || e === "changelog";
1010
+ }
1011
+ function pt(e) {
1012
+ return e !== "changelog";
1013
+ }
1014
+ async function mt(e, t, n, r, i) {
1015
+ return z(e, await i.listSeedsBySchemaName(e, {
1016
+ limit: t,
1017
+ skip: n
1018
+ }), r, i);
1019
+ }
1020
+ async function ht(e, t, n) {
1021
+ let r = await n(t);
1022
+ if (e !== "auto" || t.kind !== "local") return {
1023
+ assembled: r,
1024
+ dataSource: t,
1025
+ useQueryCache: t.kind === "remote"
1026
+ };
1027
+ if (r.records.length > 0) return {
1028
+ assembled: r,
1029
+ dataSource: t,
1030
+ useQueryCache: !1
1031
+ };
1032
+ let i = P();
1033
+ return {
1034
+ assembled: await n(i),
1035
+ dataSource: i,
1036
+ useQueryCache: !0
1037
+ };
1038
+ }
1039
+ async function gt(e, t, n, r = []) {
1040
+ await K().writeThroughItems(e.records.map((i) => ({
1041
+ record: i,
1042
+ optionsKey: t,
1043
+ dependencies: e.dependencies.get(i.seedUid) ?? Q,
1044
+ checkedAt: J(n),
1045
+ seenChangeKeys: r,
1046
+ lastUpdated: n
1047
+ })));
1048
+ }
1049
+ async function _t(e, t, n, r, i) {
1050
+ let a = K(), o = q(), s = await a.getCollection(e, r), c = await i.listSeedsBySchemaName(e, {
1051
+ limit: t,
1052
+ skip: 0
1053
+ }), l = new Map(s?.items.map((e) => [e.seedUid, e]) ?? []), u = /* @__PURE__ */ new Set(), d = [];
1054
+ if (s) {
1055
+ let e = /* @__PURE__ */ new Map();
1056
+ for (let t of c) {
1057
+ let n = s.meta[t.id];
1058
+ l.has(t.id) && e.set(t.id, n?.dependencies ?? Q);
1059
+ }
1060
+ let t = await st(i, e, s);
1061
+ t ? (u = t.changed, d = t.seenChangeKeys) : u = new Set(e.keys());
1062
+ }
1063
+ let f = c.filter((e) => !l.has(e.id) || u.has(e.id)), p = f.length > 0 ? await z(e, f, n, i) : {
1064
+ records: [],
1065
+ dependencies: /* @__PURE__ */ new Map()
1066
+ }, m = new Map(p.records.map((e) => [e.seedUid, e])), h = [], g = {};
1067
+ for (let e of c) {
1068
+ let t = m.get(e.id);
1069
+ t ? (h.push(t), g[e.id] = {
1070
+ dependencies: p.dependencies.get(e.id) ?? Q,
1071
+ builtAt: o
1072
+ }) : s && !u.has(e.id) && l.has(e.id) && (h.push(l.get(e.id)), g[e.id] = s.meta[e.id] ?? {
1073
+ dependencies: Q,
1074
+ builtAt: o
1075
+ });
1076
+ }
1077
+ let _ = !!s && p.records.length === 0 && h.length === s.items.length && h.every((e, t) => e === s.items[t]);
1078
+ if (s && _ && !at(s, o)) return {
1079
+ items: h,
1080
+ limit: t,
1081
+ skip: 0,
1082
+ etag: s.etag
1083
+ };
1084
+ s && a.recordRefresh();
1085
+ let v = await a.setCollection(e, r, {
1086
+ items: h,
1087
+ meta: g,
1088
+ checkedAt: J(o),
1089
+ seenChangeKeys: d,
1090
+ lastUpdated: s?.lastUpdated ?? o
1091
+ });
1092
+ return await gt(p, r, o, d), {
1093
+ items: v ? [...v.items] : h,
1094
+ limit: t,
1095
+ skip: 0,
1096
+ etag: v?.etag
1097
+ };
1098
+ }
1099
+ var vt = 4;
1100
+ function yt(e) {
1101
+ let t = e.trim().toLowerCase().replace(/^0x/, "");
1102
+ return t.length < vt || t.length > 64 || !/^[0-9a-f]+$/.test(t) ? null : `0x${t}`;
1103
+ }
1104
+ async function bt(n, r) {
1105
+ await e();
1106
+ let i = r?.limit ?? 100, a = r?.skip ?? 0, o = Z(r?.source), s = X(o), c = t(r), l = null;
1107
+ if (r?.uidPrefix !== void 0 && (l = yt(r.uidPrefix), !l)) return {
1108
+ items: [],
1109
+ limit: i,
1110
+ skip: a
1111
+ };
1112
+ let u = async (e) => l ? z(n, await e.listSeedsByUidPrefix(n, l, {
1113
+ limit: i,
1114
+ skip: a
1115
+ }), r, e) : mt(n, i, a, r, e);
1116
+ if (!l && $(r, s.useQueryCache) && a === 0 && s.dataSource.kind === "remote") {
1117
+ let e = `${n}\n${c}\n${i}`;
1118
+ return K().withRefreshLock(e, () => _t(n, i, r, c, s.dataSource));
1119
+ }
1120
+ let d = q(), { assembled: f, dataSource: p, useQueryCache: m } = await ht(o, s.dataSource, (e) => u(e));
1121
+ return $(r, m) && p.kind === "remote" && await gt(f, c, d), {
1122
+ items: f.records,
1123
+ limit: i,
1124
+ skip: a
1125
+ };
1126
+ }
1127
+ async function xt(e, t, n) {
1128
+ let r = K(), i = await r.getItem(e, t);
1129
+ if (!i) return null;
1130
+ let a = q(), o = await st(n, /* @__PURE__ */ new Map([[e, i.dependencies]]), i);
1131
+ return !o || o.changed.has(e) ? (await r.clearItem(e, t), null) : (at(i, a) && await r.setItem({
1132
+ ...i,
1133
+ checkedAt: J(a),
1134
+ seenChangeKeys: o.seenChangeKeys
1135
+ }), i.record);
1136
+ }
1137
+ async function St(n, r) {
1138
+ if (await e(), !n || typeof n != "string" || n.trim() === "") return null;
1139
+ let i = n.trim(), a = r?.include ?? "data", o = Z(r?.source), s = X(o), c = t(r), l = s.dataSource, u = s.useQueryCache;
1140
+ if ($(r, u) && l.kind === "remote") {
1141
+ let e = await xt(i, c, l);
1142
+ if (e) return e;
1143
+ }
1144
+ let d = (e) => Promise.all([e.getSeedByUid(i), e.getVersionsForSeeds([i], { includeRevoked: !0 })]), f = q(), [p, m] = await d(l);
1145
+ if (!p && o === "auto" && l.kind === "local") {
1146
+ if (l = P(), u = !0, $(r, u)) {
1147
+ let e = await xt(i, c, l);
1148
+ if (e) return e;
1149
+ }
1150
+ [p, m] = await d(l);
1151
+ }
1152
+ if (!p) return null;
1153
+ let h = p.schema?.schemaNames?.[0]?.name;
1154
+ if (!h) return null;
1155
+ let g = null, _ = {
1156
+ refUIDs: [i],
1157
+ ids: [i]
1158
+ }, v = async () => {
1159
+ let e = await z(h, [p], r, l, { versions: m }), t = e.records[0];
1160
+ return t && (_ = e.dependencies.get(t.seedUid) ?? _), t ?? null;
1161
+ };
1162
+ if (!ft(a)) g = await v();
1163
+ else {
1164
+ let { latestVersionUid: e, changelog: t } = await Ge(i, r, l);
1165
+ if (pt(a)) {
1166
+ let e = await v();
1167
+ g = e ? {
1168
+ ...e,
1169
+ changelog: t
1170
+ } : null;
1171
+ } else g = {
1172
+ seedUid: i,
1173
+ schemaName: h,
1174
+ attester: p.attester,
1175
+ timeCreated: p.timeCreated,
1176
+ versionUid: e,
1177
+ data: {},
1178
+ changelog: t
1179
+ }, e && _.refUIDs.push(e);
1180
+ for (let e of t) _.refUIDs.push(e.versionUid);
1181
+ _ = {
1182
+ refUIDs: [...new Set(_.refUIDs)],
1183
+ ids: _.ids
1184
+ };
1185
+ }
1186
+ if (g && $(r, u) && l.kind === "remote") {
1187
+ let e = await K().setItem({
1188
+ record: g,
1189
+ optionsKey: c,
1190
+ dependencies: _,
1191
+ checkedAt: J(f),
1192
+ seenChangeKeys: [],
1193
+ lastUpdated: f
1194
+ });
1195
+ e && (g = e.record);
1196
+ }
1197
+ return g;
1198
+ }
1199
+ async function Ct(n, r, i, a) {
1200
+ await e();
1201
+ let o = Z(a?.source), s = X(o), c = async (e) => z(n, await e.listSeedsBySchemaNameForMonth(n, r, i), a, e), l = q(), { assembled: u, dataSource: d, useQueryCache: f } = await ht(o, s.dataSource, c);
1202
+ return $(a, f) && d.kind === "remote" && await gt(u, t(a), l), u.records;
1203
+ }
1204
+ //#endregion
1205
+ export { v as $, Te as A, E as B, He as C, N as D, P as E, S as F, pe as G, w as H, ce as I, te as J, D as K, le as L, ge as M, ye as N, M as O, re as P, x as Q, ue as R, Ue as S, Oe as T, se as U, oe as V, de as W, y as X, ne as Y, b as Z, Ge as _, Z as a, B as b, ut as c, it as d, K as f, H as g, et as h, Ct as i, j, Ee as k, dt as l, W as m, yt as n, X as o, rt as p, fe as q, bt as r, lt as s, St as t, ct as u, We as v, ze as w, V as x, Ve as y, T as z };
1206
+
1207
+ //# sourceMappingURL=src-CBgjwvGT.js.map