@helia/ipns 10.1.1 → 10.2.0

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 (63) hide show
  1. package/README.md +40 -0
  2. package/dist/index.min.js +5 -5
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/errors.d.ts +11 -0
  5. package/dist/src/errors.d.ts.map +1 -1
  6. package/dist/src/errors.js +13 -0
  7. package/dist/src/errors.js.map +1 -1
  8. package/dist/src/index.d.ts +136 -7
  9. package/dist/src/index.d.ts.map +1 -1
  10. package/dist/src/index.js +41 -0
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/ipns/publisher.d.ts +3 -3
  13. package/dist/src/ipns/publisher.d.ts.map +1 -1
  14. package/dist/src/ipns/publisher.js +17 -18
  15. package/dist/src/ipns/publisher.js.map +1 -1
  16. package/dist/src/ipns/republisher.d.ts +6 -1
  17. package/dist/src/ipns/republisher.d.ts.map +1 -1
  18. package/dist/src/ipns/republisher.js +157 -24
  19. package/dist/src/ipns/republisher.js.map +1 -1
  20. package/dist/src/ipns/resolver.d.ts +13 -1
  21. package/dist/src/ipns/resolver.d.ts.map +1 -1
  22. package/dist/src/ipns/resolver.js +40 -31
  23. package/dist/src/ipns/resolver.js.map +1 -1
  24. package/dist/src/ipns.d.ts +6 -3
  25. package/dist/src/ipns.d.ts.map +1 -1
  26. package/dist/src/ipns.js +12 -3
  27. package/dist/src/ipns.js.map +1 -1
  28. package/dist/src/local-store.d.ts +5 -0
  29. package/dist/src/local-store.d.ts.map +1 -1
  30. package/dist/src/local-store.js +68 -23
  31. package/dist/src/local-store.js.map +1 -1
  32. package/dist/src/pb/ipns.js +1 -1
  33. package/dist/src/pb/metadata.d.ts +14 -1
  34. package/dist/src/pb/metadata.d.ts.map +1 -1
  35. package/dist/src/pb/metadata.js +36 -3
  36. package/dist/src/pb/metadata.js.map +1 -1
  37. package/dist/src/routing/index.d.ts +13 -1
  38. package/dist/src/routing/index.d.ts.map +1 -1
  39. package/dist/src/routing/index.js +17 -0
  40. package/dist/src/routing/index.js.map +1 -1
  41. package/dist/src/utils.d.ts +5 -0
  42. package/dist/src/utils.d.ts.map +1 -1
  43. package/dist/src/utils.js +18 -0
  44. package/dist/src/utils.js.map +1 -1
  45. package/dist/src/validator.d.ts +6 -0
  46. package/dist/src/validator.d.ts.map +1 -1
  47. package/dist/src/validator.js +24 -14
  48. package/dist/src/validator.js.map +1 -1
  49. package/dist/typedoc-urls.json +23 -1
  50. package/package.json +3 -3
  51. package/src/errors.ts +18 -0
  52. package/src/index.ts +145 -7
  53. package/src/ipns/publisher.ts +22 -20
  54. package/src/ipns/republisher.ts +182 -26
  55. package/src/ipns/resolver.ts +54 -36
  56. package/src/ipns.ts +20 -6
  57. package/src/local-store.ts +77 -22
  58. package/src/pb/ipns.ts +1 -1
  59. package/src/pb/metadata.proto +10 -0
  60. package/src/pb/metadata.ts +45 -4
  61. package/src/routing/index.ts +30 -1
  62. package/src/utils.ts +19 -0
  63. package/src/validator.ts +30 -18
@@ -1,9 +1,17 @@
1
+ import { NotFoundError } from '@libp2p/interface';
1
2
  import { Queue, repeatingTask } from '@libp2p/utils';
3
+ import NanoDate from 'timestamp-nano';
2
4
  import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
3
5
  import { DEFAULT_REPUBLISH_CONCURRENCY, DEFAULT_REPUBLISH_INTERVAL_MS, DEFAULT_TTL_NS } from "../constants.js";
6
+ import { RecordObsoleteError } from "../errors.js";
4
7
  import { IPNSEntry } from "../pb/ipns.js";
8
+ import { Upkeep } from "../pb/metadata.js";
5
9
  import { createIPNSRecord } from "../records.js";
6
- import { decodeExtensibleData, shouldRepublish } from "../utils.js";
10
+ import { isLocalStoreRouting, routerName } from "../routing/index.js";
11
+ import { ipnsSelector } from "../selector.js";
12
+ import { decodeExtensibleData, multihashToIPNSRoutingKey, shouldRepublish } from "../utils.js";
13
+ import { extractPublicKey, ipnsValidator } from "../validator.js";
14
+ import { findRoutingRecords } from "./resolver.js";
7
15
  export class IPNSRepublisher {
8
16
  routers;
9
17
  localStore;
@@ -49,42 +57,70 @@ export class IPNSRepublisher {
49
57
  concurrency: this.republishConcurrency
50
58
  });
51
59
  try {
52
- const recordsToRepublish = [];
60
+ const recordsToReissue = [];
61
+ const recordsToRebroadcast = [];
53
62
  let listed = 0;
54
63
  // Find all records using the localStore.list method
55
64
  for await (const { routingKey, record, metadata, created } of this.localStore.list(options)) {
56
65
  listed++;
57
66
  if (metadata == null) {
58
- // Skip if no metadata is found from before we started
59
- // storing metadata or for records republished without a key
67
+ // no metadata: an imported record not yet given an upkeep policy, or a
68
+ // record stored before we tracked metadata
60
69
  this.log('no metadata found for record %b, skipping', routingKey);
61
70
  continue;
62
71
  }
72
+ if (metadata.upkeep === Upkeep.none) {
73
+ // Skip republishing, disabled for this record
74
+ this.log('republishing is disabled for record %b, skipping', routingKey);
75
+ continue;
76
+ }
63
77
  let ipnsRecord;
64
78
  try {
65
79
  ipnsRecord = IPNSEntry.decode(record);
66
80
  }
67
81
  catch (err) {
68
- this.log.trace('skipping invalid record %b because could not decode', routingKey);
82
+ // the record was valid when stored, so a decode failure now means
83
+ // on-disk corruption or a format change worth surfacing
84
+ this.log.error('skipping stored record %b, could not decode it - %e', routingKey, err);
69
85
  continue;
70
86
  }
71
87
  if (ipnsRecord.data == null) {
72
- this.log.trace('skipping record %b because data was missing', routingKey);
88
+ this.log.error('skipping stored record %b, its data is missing', routingKey);
73
89
  continue;
74
90
  }
75
91
  let data;
76
92
  try {
77
93
  data = decodeExtensibleData(ipnsRecord.data);
78
94
  }
79
- catch {
80
- this.log.trace('skipping record %b because could not decode data', routingKey);
95
+ catch (err) {
96
+ this.log.error('skipping stored record %b, could not decode its data - %e', routingKey, err);
97
+ continue;
98
+ }
99
+ let recordExpiry;
100
+ try {
101
+ recordExpiry = NanoDate.fromString(uint8ArrayToString(data.Validity)).toDate();
102
+ }
103
+ catch (err) {
104
+ this.log.error('skipping stored record %b, could not parse its validity - %e', routingKey, err);
81
105
  continue;
82
106
  }
83
107
  // Only republish records that are within the DHT or record expiry threshold
84
- if (!shouldRepublish(created, new Date(uint8ArrayToString(data.Validity)))) {
108
+ if (!shouldRepublish(created, recordExpiry)) {
85
109
  this.log.trace('skipping record %b within republish threshold', routingKey);
86
110
  continue;
87
111
  }
112
+ if (metadata.upkeep === Upkeep.rebroadcast) {
113
+ // only re-broadcast records that are still valid: an expired record
114
+ // cannot be revived without re-signing, which the rebroadcast policy
115
+ // has no key for
116
+ if (recordExpiry.getTime() <= Date.now()) {
117
+ this.log.trace('skipping expired record %b for rebroadcast', routingKey);
118
+ continue;
119
+ }
120
+ recordsToRebroadcast.push({ routingKey, record: ipnsRecord });
121
+ continue;
122
+ }
123
+ // Upkeep.reissue: re-sign the record with a new validity
88
124
  const sequenceNumber = data.Sequence + 1n;
89
125
  const ttlNs = data.TTL ?? DEFAULT_TTL_NS;
90
126
  let privKey;
@@ -100,35 +136,132 @@ export class IPNSRepublisher {
100
136
  ...options,
101
137
  ttlNs
102
138
  });
103
- recordsToRepublish.push({
139
+ recordsToReissue.push({
104
140
  routingKey,
105
141
  record: updatedRecord
106
142
  });
107
143
  }
108
144
  catch (err) {
109
- this.log.error('error creating updated IPNS record for %s - %e', routingKey, err);
145
+ this.log.error('error creating updated IPNS record for %b - %e', routingKey, err);
110
146
  continue;
111
147
  }
112
148
  }
113
- this.log(`found ${recordsToRepublish.length}/${listed} records to republish`);
114
- // Republish each record
115
- for (const { routingKey, record } of recordsToRepublish) {
116
- // Add job to queue to republish the record to all routers
149
+ this.log(`reissuing ${recordsToReissue.length} and rebroadcasting ${recordsToRebroadcast.length} of ${listed} records`);
150
+ // reissue: re-publish the re-signed record as-is. the jobs run
151
+ // fire-and-forget, so catch any failure (including a local-store write
152
+ // that #publishToRouters surfaces) rather than leaving an unhandled rejection
153
+ for (const { routingKey, record } of recordsToReissue) {
154
+ queue.add(async () => this.#publishToRouters(routingKey, IPNSEntry.encode(record), options), options)
155
+ .catch((err) => { this.log.error('failed to reissue record %b - %e', routingKey, err); });
156
+ }
157
+ // rebroadcast: resolve the latest record from the network and re-broadcast
158
+ // whichever of the local and network records is most suitable, so we adopt
159
+ // a newer record rather than pushing a stale local copy
160
+ for (const { routingKey, record } of recordsToRebroadcast) {
117
161
  queue.add(async () => {
118
- try {
119
- const marshaledRecord = IPNSEntry.encode(record);
120
- await Promise.all(this.routers.map(r => r.put(routingKey, marshaledRecord, options)));
121
- }
122
- catch (err) {
123
- this.log.error('error republishing record - %e', err);
124
- }
125
- }, options);
162
+ const { records } = await findRoutingRecords(this.routers, routingKey, this.keychain, this.log, options);
163
+ const candidates = [record, ...records];
164
+ const best = candidates[ipnsSelector(routingKey, candidates)];
165
+ await this.#publishToRouters(routingKey, IPNSEntry.encode(best), { ...options, overwrite: true });
166
+ }, options)
167
+ .catch((err) => { this.log.error('failed to rebroadcast record %b - %e', routingKey, err); });
126
168
  }
127
169
  }
128
170
  catch (err) {
129
171
  this.log.error('error during republish - %e', err);
130
172
  }
131
- await queue.onIdle(options); // Wait for all jobs to complete
173
+ }
174
+ /**
175
+ * Persist the record to the local store first, throwing if that fails: it
176
+ * holds the record and its upkeep policy, so that failure must surface rather
177
+ * than be swallowed. Then broadcast to the network routers best-effort,
178
+ * logging any that fail.
179
+ */
180
+ async #publishToRouters(routingKey, marshaledRecord, putOptions) {
181
+ const localStoreRouter = this.routers.find(isLocalStoreRouting);
182
+ if (localStoreRouter != null) {
183
+ await localStoreRouter.put(routingKey, marshaledRecord, putOptions);
184
+ this.log('published record %b to %s', routingKey, routerName(localStoreRouter));
185
+ }
186
+ await Promise.all(this.routers
187
+ .filter(router => router !== localStoreRouter)
188
+ .map(async (router) => {
189
+ try {
190
+ await router.put(routingKey, marshaledRecord, putOptions);
191
+ this.log('published record %b to %s', routingKey, routerName(router));
192
+ }
193
+ catch (err) {
194
+ this.log.error('failed to publish record %b to %s - %e', routingKey, routerName(router), err);
195
+ }
196
+ }));
197
+ }
198
+ async republish(key, options = {}) {
199
+ const routingKey = multihashToIPNSRoutingKey(key);
200
+ // read the record we hold for this key directly, it was validated when it
201
+ // was imported or published, and reading it through resolve() would recurse
202
+ // and rewrite the local store
203
+ let record;
204
+ try {
205
+ ({ record } = await this.localStore.get(routingKey, options));
206
+ }
207
+ catch (err) {
208
+ if (err.name !== 'NotFoundError') {
209
+ throw err;
210
+ }
211
+ throw new NotFoundError('No local record found to republish - import it first');
212
+ }
213
+ // re-validate: a record that was valid when stored can have expired since
214
+ const localRecord = await ipnsValidator(routingKey, record, this.keychain, options);
215
+ // unless we are told not to look, check whether the routing already has a
216
+ // more suitable record; if so, back off
217
+ if (options.skipResolution !== true) {
218
+ const { records } = await findRoutingRecords(this.routers, routingKey, this.keychain, this.log, options);
219
+ const candidates = [localRecord, ...records];
220
+ const best = ipnsSelector(routingKey, candidates);
221
+ if (best !== 0) {
222
+ throw new RecordObsoleteError('A newer record is already published for this key', candidates[best]);
223
+ }
224
+ }
225
+ const metadata = {
226
+ upkeep: Upkeep[options.upkeep ?? 'rebroadcast']
227
+ };
228
+ // a publish that fails on every router does not throw; use onProgress to see
229
+ // which routers worked and watch the logs
230
+ await this.#publishToRouters(routingKey, record, {
231
+ ...options,
232
+ overwrite: true,
233
+ metadata
234
+ });
235
+ return {
236
+ record: localRecord,
237
+ publicKey: await extractPublicKey(routingKey, localRecord, this.keychain, options)
238
+ };
239
+ }
240
+ async import(key, record, options) {
241
+ const routingKey = multihashToIPNSRoutingKey(key);
242
+ const entry = record instanceof Uint8Array ? IPNSEntry.decode(record) : record;
243
+ const marshaledRecord = IPNSEntry.encode(entry);
244
+ // validate the record, throws if it is invalid (bad signature, expired, etc)
245
+ await ipnsValidator(routingKey, marshaledRecord, this.keychain, options);
246
+ // do not downgrade a record we already hold
247
+ try {
248
+ const { record: existingBytes } = await this.localStore.get(routingKey, options);
249
+ const existing = IPNSEntry.decode(existingBytes);
250
+ // if the record we already have wins the selector, the incoming one is obsolete
251
+ if (ipnsSelector(routingKey, [entry, existing]) !== 0) {
252
+ throw new RecordObsoleteError('A newer record is already stored for this key', existing);
253
+ }
254
+ }
255
+ catch (err) {
256
+ // holding no record for this key is the normal case, everything else
257
+ // (the RecordObsoleteError above included) is a real failure
258
+ if (err.name !== 'NotFoundError') {
259
+ throw err;
260
+ }
261
+ }
262
+ // store the record locally only, without metadata, so it is served but not
263
+ // automatically republished until republish() gives it an upkeep policy
264
+ await this.localStore.put(routingKey, marshaledRecord, options);
132
265
  }
133
266
  }
134
267
  //# sourceMappingURL=republisher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"republisher.js","sourceRoot":"","sources":["../../../src/ipns/republisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9G,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAoBnE,MAAM,OAAO,eAAe;IACV,OAAO,CAAe;IACrB,UAAU,CAAY;IACtB,aAAa,CAAe;IAC5B,GAAG,CAAQ;IACX,QAAQ,CAAU;IAC3B,OAAO,GAAY,KAAK,CAAA;IACf,oBAAoB,CAAQ;IAE7C,YAAa,UAAqC,EAAE,IAAyB;QAC3E,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,6BAA6B,CAAA;QACtF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAEjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,IAAI,6BAA6B,EAAE;YACtH,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,UAAwB,EAAE;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QAEhD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,oBAAoB;SACvC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAyD,EAAE,CAAA;YACnF,IAAI,MAAM,GAAG,CAAC,CAAA;YAEd,oDAAoD;YACpD,IAAI,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5F,MAAM,EAAE,CAAA;gBAER,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACrB,sDAAsD;oBACtD,4DAA4D;oBAC5D,IAAI,CAAC,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAA;oBACjE,SAAQ;gBACV,CAAC;gBAED,IAAI,UAAqB,CAAA;gBAEzB,IAAI,CAAC;oBACH,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBACvC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE,UAAU,CAAC,CAAA;oBACjF,SAAQ;gBACV,CAAC;gBAED,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,UAAU,CAAC,CAAA;oBACzE,SAAQ;gBACV,CAAC;gBAED,IAAI,IAAoB,CAAA;gBAExB,IAAI,CAAC;oBACH,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,UAAU,CAAC,CAAA;oBAC9E,SAAQ;gBACV,CAAC;gBAED,4EAA4E;gBAC5E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,UAAU,CAAC,CAAA;oBAC3E,SAAQ;gBACV,CAAC;gBAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;gBACxC,IAAI,OAAmB,CAAA;gBAEvB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBAC3D,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;oBAC1F,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE;wBACvH,GAAG,OAAO;wBACV,KAAK;qBACN,CAAC,CAAA;oBACF,kBAAkB,CAAC,IAAI,CAAC;wBACtB,UAAU;wBACV,MAAM,EAAE,aAAa;qBACtB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;oBACjF,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,IAAI,MAAM,uBAAuB,CAAC,CAAA;YAE7E,wBAAwB;YACxB,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;gBACxD,0DAA0D;gBAC1D,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;oBACnB,IAAI,CAAC;wBACH,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;wBAChD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CACnE,CAAA;oBACH,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;oBACvD,CAAC;gBACH,CAAC,EAAE,OAAO,CAAC,CAAA;YACb,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;QAED,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,gCAAgC;IAC9D,CAAC;CACF"}
1
+ {"version":3,"file":"republisher.js","sourceRoot":"","sources":["../../../src/ipns/republisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAqBlD,MAAM,OAAO,eAAe;IACV,OAAO,CAAe;IACrB,UAAU,CAAY;IACtB,aAAa,CAAe;IAC5B,GAAG,CAAQ;IACX,QAAQ,CAAU;IAC3B,OAAO,GAAY,KAAK,CAAA;IACf,oBAAoB,CAAQ;IAE7C,YAAa,UAAqC,EAAE,IAAyB;QAC3E,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,6BAA6B,CAAA;QACtF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAEjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,iBAAiB,IAAI,6BAA6B,EAAE;YACtH,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU,CAAE,UAAwB,EAAE;QAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QAEhD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,WAAW,EAAE,IAAI,CAAC,oBAAoB;SACvC,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAyD,EAAE,CAAA;YACjF,MAAM,oBAAoB,GAAyD,EAAE,CAAA;YACrF,IAAI,MAAM,GAAG,CAAC,CAAA;YAEd,oDAAoD;YACpD,IAAI,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5F,MAAM,EAAE,CAAA;gBAER,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACrB,uEAAuE;oBACvE,2CAA2C;oBAC3C,IAAI,CAAC,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAA;oBACjE,SAAQ;gBACV,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpC,8CAA8C;oBAC9C,IAAI,CAAC,GAAG,CAAC,kDAAkD,EAAE,UAAU,CAAC,CAAA;oBACxE,SAAQ;gBACV,CAAC;gBAED,IAAI,UAAqB,CAAA;gBAEzB,IAAI,CAAC;oBACH,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBACvC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,kEAAkE;oBAClE,wDAAwD;oBACxD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;oBACtF,SAAQ;gBACV,CAAC;gBAED,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,UAAU,CAAC,CAAA;oBAC5E,SAAQ;gBACV,CAAC;gBAED,IAAI,IAAoB,CAAA;gBAExB,IAAI,CAAC;oBACH,IAAI,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBAC9C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,2DAA2D,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;oBAC5F,SAAQ;gBACV,CAAC;gBAED,IAAI,YAAkB,CAAA;gBAEtB,IAAI,CAAC;oBACH,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;gBAChF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;oBAC/F,SAAQ;gBACV,CAAC;gBAED,4EAA4E;gBAC5E,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,UAAU,CAAC,CAAA;oBAC3E,SAAQ;gBACV,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC3C,oEAAoE;oBACpE,qEAAqE;oBACrE,iBAAiB;oBACjB,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;wBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAA;wBACxE,SAAQ;oBACV,CAAC;oBAED,oBAAoB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;oBAC7D,SAAQ;gBACV,CAAC;gBAED,yDAAyD;gBACzD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,cAAc,CAAA;gBACxC,IAAI,OAAmB,CAAA;gBAEvB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBAC3D,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mDAAmD,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;oBAC1F,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE;wBACvH,GAAG,OAAO;wBACV,KAAK;qBACN,CAAC,CAAA;oBAEF,gBAAgB,CAAC,IAAI,CAAC;wBACpB,UAAU;wBACV,MAAM,EAAE,aAAa;qBACtB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;oBACjF,SAAQ;gBACV,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,gBAAgB,CAAC,MAAM,uBAAuB,oBAAoB,CAAC,MAAM,OAAO,MAAM,UAAU,CAAC,CAAA;YAEvH,+DAA+D;YAC/D,uEAAuE;YACvE,8EAA8E;YAC9E,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBACtD,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;qBAClG,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YACjG,CAAC;YAED,2EAA2E;YAC3E,2EAA2E;YAC3E,wDAAwD;YACxD,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,oBAAoB,EAAE,CAAC;gBAC1D,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;oBACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBACxG,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAA;oBACvC,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;oBAE7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACnG,CAAC,EAAE,OAAO,CAAC;qBACR,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YACrG,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAE,UAAsB,EAAE,eAA2B,EAAE,UAAiC;QAC7G,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAE/D,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,CAAA;YACnE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,gBAAgB,CAAC;aAC7C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,CAAA;gBACzD,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;YACvE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;YAC/F,CAAC;QACH,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,GAAoB,EAAE,UAA4B,EAAE;QACnE,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAA;QAEjD,0EAA0E;QAC1E,4EAA4E;QAC5E,8BAA8B;QAC9B,IAAI,MAA+B,CAAA;QAEnC,IAAI,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACjC,MAAM,GAAG,CAAA;YACX,CAAC;YAED,MAAM,IAAI,aAAa,CAAC,sDAAsD,CAAC,CAAA;QACjF,CAAC;QAED,0EAA0E;QAC1E,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEnF,0EAA0E;QAC1E,wCAAwC;QACxC,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACxG,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;YAEjD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,mBAAmB,CAAC,kDAAkD,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;YACrG,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;SAChD,CAAA;QAED,6EAA6E;QAC7E,0CAA0C;QAC1C,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE;YAC/C,GAAG,OAAO;YACV,SAAS,EAAE,IAAI;YACf,QAAQ;SACT,CAAC,CAAA;QAEF,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,MAAM,gBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;SACnF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,GAAoB,EAAE,MAA8B,EAAE,OAAsB;QACxF,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,KAAK,GAAG,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAC9E,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAE/C,6EAA6E;QAC7E,MAAM,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAExE,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAChF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAEhD,gFAAgF;YAChF,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,mBAAmB,CAAC,+CAA+C,EAAE,QAAQ,CAAC,CAAA;YAC1F,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACjC,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;CACF"}
@@ -1,8 +1,9 @@
1
+ import { IPNSEntry } from '../pb/ipns.ts';
1
2
  import type { IPNSResolveOptions, IPNSResolveResult } from '../index.ts';
2
3
  import type { LocalStore } from '../local-store.ts';
3
4
  import type { IPNSRouting } from '../routing/index.ts';
4
5
  import type { Routing, Keychain } from '@helia/interface';
5
- import type { ComponentLogger } from '@libp2p/interface';
6
+ import type { AbortOptions, ComponentLogger, Logger } from '@libp2p/interface';
6
7
  import type { Datastore } from 'interface-datastore';
7
8
  import type { MultihashDigest } from 'multiformats/hashes/interface';
8
9
  export interface IPNSResolverComponents {
@@ -24,4 +25,15 @@ export declare class IPNSResolver {
24
25
  constructor(components: IPNSResolverComponents, init: IPNResolverInit);
25
26
  resolve(key: MultihashDigest, options?: IPNSResolveOptions): AsyncGenerator<IPNSResolveResult>;
26
27
  }
28
+ /**
29
+ * Query the network routers for the records stored under a routing key, plus a
30
+ * count of records that were fetched but failed validation/decoding. Does not
31
+ * touch the local store; the caller selects the record it wants with
32
+ * `ipnsSelector`. Records are validated unless `validate` is false, in which
33
+ * case they are returned decoded without validation.
34
+ */
35
+ export declare function findRoutingRecords(routers: IPNSRouting[], routingKey: Uint8Array, keychain: Keychain, log: Logger, options?: AbortOptions, validate?: boolean): Promise<{
36
+ records: IPNSEntry[];
37
+ foundInvalid: number;
38
+ }>;
27
39
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/ipns/resolver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,qBAAa,YAAY;;IACvB,SAAgB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAU;gBAEb,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe;IAO9D,OAAO,CAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAAC,iBAAiB,CAAC;CAoJ5G"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/ipns/resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAKzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,qBAAa,YAAY;;IACvB,SAAgB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAU;gBAEb,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe;IAO9D,OAAO,CAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAAC,iBAAiB,CAAC;CAyH5G;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAE,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAmC/N"}
@@ -2,6 +2,7 @@ import { base36 } from 'multiformats/bases/base36';
2
2
  import { DEFAULT_TTL_NS } from "../constants.js";
3
3
  import { InvalidValueError, RecordNotFoundError, RecordsFailedValidationError } from "../errors.js";
4
4
  import { IPNSEntry } from "../pb/ipns.js";
5
+ import { isLocalStoreRouting, routerName } from "../routing/index.js";
5
6
  import { ipnsSelector } from "../selector.js";
6
7
  import { multihashToIPNSRoutingKey, normalizeKey, IPNS_STRING_PREFIX, ipnsRecordValueToString, decodeExtensibleData } from "../utils.js";
7
8
  import { ipnsValidator } from "../validator.js";
@@ -98,37 +99,8 @@ export class IPNSResolver {
98
99
  throw new RecordNotFoundError('Record was not present in the cache or has expired');
99
100
  }
100
101
  this.log('did not have record locally');
101
- let foundInvalid = 0;
102
- const errors = [];
103
- await Promise.all(this.routers.map(async (router) => {
104
- let marshaledIPNSRecord;
105
- try {
106
- marshaledIPNSRecord = await router.get(routingKey, {
107
- ...options,
108
- validate: false
109
- });
110
- }
111
- catch (err) {
112
- this.log.error('error finding IPNS record using router %s - %e', router.toString(), err);
113
- errors.push(err);
114
- return;
115
- }
116
- try {
117
- let record;
118
- if (options.validate === false) {
119
- record = IPNSEntry.decode(marshaledIPNSRecord);
120
- }
121
- else {
122
- record = await ipnsValidator(routingKey, marshaledIPNSRecord, this.keychain, options);
123
- }
124
- records.push(record);
125
- }
126
- catch (err) {
127
- // we found a record, but the validator rejected it
128
- foundInvalid++;
129
- this.log.error('error validating IPNS record from router %s - %e', router.toString(), err);
130
- }
131
- }));
102
+ const { records: networkRecords, foundInvalid } = await findRoutingRecords(this.routers, routingKey, this.keychain, this.log, options, options.validate !== false);
103
+ records.push(...networkRecords);
132
104
  if (records.length === 0) {
133
105
  if (foundInvalid > 0) {
134
106
  throw new RecordsFailedValidationError(`${foundInvalid > 1 ? `${foundInvalid} records` : 'Record'} found for routing key ${foundInvalid > 1 ? 'were' : 'was'} invalid`);
@@ -140,4 +112,41 @@ export class IPNSResolver {
140
112
  return record;
141
113
  }
142
114
  }
115
+ /**
116
+ * Query the network routers for the records stored under a routing key, plus a
117
+ * count of records that were fetched but failed validation/decoding. Does not
118
+ * touch the local store; the caller selects the record it wants with
119
+ * `ipnsSelector`. Records are validated unless `validate` is false, in which
120
+ * case they are returned decoded without validation.
121
+ */
122
+ export async function findRoutingRecords(routers, routingKey, keychain, log, options = {}, validate = true) {
123
+ const records = [];
124
+ let foundInvalid = 0;
125
+ await Promise.all(routers.map(async (router) => {
126
+ // the local store is not the network
127
+ if (isLocalStoreRouting(router)) {
128
+ return;
129
+ }
130
+ let marshaledRecord;
131
+ try {
132
+ marshaledRecord = await router.get(routingKey, { ...options, validate: false });
133
+ }
134
+ catch (err) {
135
+ log.error('error finding IPNS record using router %s - %e', routerName(router), err);
136
+ return;
137
+ }
138
+ try {
139
+ // when the caller opts out of validation, return the record as decoded
140
+ const record = validate
141
+ ? await ipnsValidator(routingKey, marshaledRecord, keychain, options)
142
+ : IPNSEntry.decode(marshaledRecord);
143
+ records.push(record);
144
+ }
145
+ catch (err) {
146
+ foundInvalid++;
147
+ log.error('error reading IPNS record from router %s - %e', routerName(router), err);
148
+ }
149
+ }));
150
+ return { records, foundInvalid };
151
+ }
143
152
  //# sourceMappingURL=resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/ipns/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/ipns/resolver.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { CID } from 'multiformats/cid';
2
- import type { IPNSComponents, IPNS as IPNSInterface, IPNSOptions, IPNSPublishResult, PublishOptions, IPNSResolveOptions, IPNSResolveResult } from './index.ts';
2
+ import { IPNSEntry } from './index.ts';
3
+ import type { IPNSComponents, IPNS as IPNSInterface, IPNSOptions, IPNSPublishResult, PublishOptions, RepublishOptions, RepublishResult, IPNSResolveOptions, IPNSResolveResult, UnpublishOptions } from './index.ts';
3
4
  import type { IPNSRouting } from './routing/index.ts';
4
5
  import type { PublicKey } from '@helia/interface';
5
6
  import type { AbortOptions, Startable } from '@libp2p/interface';
@@ -16,7 +17,9 @@ export declare class IPNS implements IPNSInterface, Startable {
16
17
  start(): void;
17
18
  stop(): void;
18
19
  publish(keyName: string, value: PublicKey | CID | MultihashDigest | string, options?: PublishOptions): Promise<IPNSPublishResult>;
19
- resolve(key: PublicKey | CID | MultihashDigest | string, options?: IPNSResolveOptions): AsyncGenerator<IPNSResolveResult>;
20
- unpublish(keyName: string, options?: AbortOptions): Promise<void>;
20
+ resolve(key: CID<unknown, 0x72> | PublicKey | MultihashDigest | string, options?: IPNSResolveOptions): AsyncGenerator<IPNSResolveResult>;
21
+ unpublish(keyName: CID<unknown, 0x72> | PublicKey | MultihashDigest | string, options?: UnpublishOptions): Promise<void>;
22
+ republish(keyName: CID<unknown, 0x72> | PublicKey | MultihashDigest | string, options?: RepublishOptions): Promise<RepublishResult>;
23
+ import(key: CID<unknown, 0x72> | PublicKey | MultihashDigest | string, record: IPNSEntry | Uint8Array, options?: AbortOptions): Promise<void>;
21
24
  }
22
25
  //# sourceMappingURL=ipns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipns.d.ts","sourceRoot":"","sources":["../../src/ipns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAWtC,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,IAAI,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9J,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAU,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,qBAAa,IAAK,YAAW,aAAa,EAAE,SAAS;IACnD,SAAgB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,cAAc,EAAE,IAAI,GAAE,WAAgB;IAuD/D,KAAK,IAAK,IAAI;IASd,IAAI,IAAK,IAAI;IASP,OAAO,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpI,OAAO,CAAE,GAAG,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAAC,iBAAiB,CAAC;IAMhI,SAAS,CAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzE"}
1
+ {"version":3,"file":"ipns.d.ts","sourceRoot":"","sources":["../../src/ipns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAUtC,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,IAAI,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnN,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAU,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAExE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,qBAAa,IAAK,YAAW,aAAa,EAAE,SAAS;IACnD,SAAgB,OAAO,EAAE,WAAW,EAAE,CAAA;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,cAAc,EAAE,IAAI,GAAE,WAAgB;IAuD/D,KAAK,IAAK,IAAI;IASd,IAAI,IAAK,IAAI;IASP,OAAO,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpI,OAAO,CAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CAAC,iBAAiB,CAAC;IAM/I,SAAS,CAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzH,SAAS,CAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAMxI,MAAM,CAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAKrJ"}
package/dist/src/ipns.js CHANGED
@@ -7,7 +7,7 @@ import { localStore } from "./local-store.js";
7
7
  import { heliaIPNSRouting } from "./routing/helia.js";
8
8
  import { localStoreIPNSRouting } from "./routing/local-store.js";
9
9
  import { ipnsSelector } from "./selector.js";
10
- import { normalizeKey, normalizeValue } from "./utils.js";
10
+ import { normalizeKey, normalizeKeyName, normalizeValue } from "./utils.js";
11
11
  import { ipnsValidator } from "./validator.js";
12
12
  export class IPNS {
13
13
  routers;
@@ -31,12 +31,12 @@ export class IPNS {
31
31
  routers: this.routers,
32
32
  localStore: this.localStore
33
33
  });
34
- this.republisher = new IPNSRepublisher(components, {
34
+ this.resolver = new IPNSResolver(components, {
35
35
  ...init,
36
36
  routers: this.routers,
37
37
  localStore: this.localStore
38
38
  });
39
- this.resolver = new IPNSResolver(components, {
39
+ this.republisher = new IPNSRepublisher(components, {
40
40
  ...init,
41
41
  routers: this.routers,
42
42
  localStore: this.localStore
@@ -86,8 +86,17 @@ export class IPNS {
86
86
  yield* this.resolver.resolve(digest, options);
87
87
  }
88
88
  async unpublish(keyName, options) {
89
+ keyName = normalizeKeyName(keyName);
89
90
  return this.publisher.unpublish(keyName, options);
90
91
  }
92
+ async republish(keyName, options = {}) {
93
+ const { digest } = normalizeKey(keyName);
94
+ return this.republisher.republish(digest, options);
95
+ }
96
+ async import(key, record, options) {
97
+ const { digest } = normalizeKey(key);
98
+ return this.republisher.import(digest, record, options);
99
+ }
91
100
  }
92
101
  function isLibp2p(obj) {
93
102
  return obj?.services != null;
@@ -1 +1 @@
1
- {"version":3,"file":"ipns.js","sourceRoot":"","sources":["../../src/ipns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipns.js","sourceRoot":"","sources":["../../src/ipns.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,11 @@ export interface LocalStore {
27
27
  get(routingKey: Uint8Array, options?: IPNSRoutingGetOptions): Promise<GetResult>;
28
28
  has(routingKey: Uint8Array, options?: AbortOptions): Promise<boolean>;
29
29
  delete(routingKey: Uint8Array, options?: AbortOptions): Promise<void>;
30
+ /**
31
+ * Delete only the IPNS metadata for a record, leaving the record itself in
32
+ * place so it is still served but no longer automatically republished
33
+ */
34
+ deleteMetadata(routingKey: Uint8Array, options?: AbortOptions): Promise<void>;
30
35
  /**
31
36
  * List all IPNS records in the datastore
32
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/local-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC/B,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,UAAU,CAAC,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxG,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChF,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CA+GzE"}
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/local-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAU,MAAM,kBAAkB,CAAA;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC/B,OAAO,EAAE,IAAI,CAAA;CACd;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,UAAU,CAAA;IAClB,OAAO,EAAE,IAAI,CAAA;IACb,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,UAAU,CAAC,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAAA;CAChD;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxG,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChF,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE;;;OAGG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E;;OAEG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;CACvD;AAoDD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CA+GzE"}